Rotacionando motor de passo com Arduino e display LCD I2C

Eletrônica Arduino 17 de Novembro de 2019 às 14:36

Os motores de passo são peças essenciais na automação industrial e comercial, presentes em impressoras matriciais ou a laser, ar condicionados, CNC e impressoras 3D. Este tipo de motor oferece uma grande capacidade de entregar precisão em seus movimentos, pois podemos controlar sua velocidade em RPM e o seu ângulo em graus. Que tal apresentar estes valores em um display LCD para o usuário? Para por em prática, este tutorial será utilizado um Arduino Uno com display LCD 16x2 I2C, uma Ponte H dupla L298N e um motor de passo bipolar. Você pode utilizar um motor de passo unipolar de 6 fios, onde os fios do Common são ignorados.

Materiais e montagem

Separe a lista de materiais necessários abaixo para a montagem e siga atentamente os detalhes fornecidos sobre o motor de passo, módulo I2C e Ponte H.

  • 1 Arduino Uno R3 com cabo USB
  • 1 Display LCD 16x2 com módulo I2C
  • 1 Módulo Ponte H Dupla L298N
  • 1 Motor de passo bipolar ou unipolar de 6 fios
  • Fios jumper
  • Fonte de bancada para alimentação externa
  • Protoboard (Opcional)
Esquema motor de passo com Arduino Uno e display LCD I2C.

Os pinos de SDA e SCL do display LCD 16x2 com módulo I2C são conectados nos pinos analógicos A4 e A5 da placa Arduino, onde sua alimentação de 5V também. Se você tiver dúvidas sobre a montagem do display, leia o tutorial de Como ligar um display LCD 16x2 I2C no Arduino Uno.

Modulo I2C para display LCD 16x2.

A Ponte H Dupla L298D será alimentada via borne (+12V e GND) com fonte de bancada setada em 8V, sendo a tensão recomendada do motor de passo utilizado, porém outros modelos podem apresentar tensões diferentes. A tensão 5V do módulo é fornecida pelo regulador de tensão LM7805 interno, onde o jumper é conectado. Nas inputs digitais foram utilizadas a IN1, IN2, IN3 e IN4 nas portas digitais do Arduino (8, 9, 10 e 11), onde os Enables A e B são conectados no 5V com os jumpers. Os fios do motor são ligados nos bornes OUT1/OUT2 e OUT3/OUT4. Para mais informações de montagem, configurações e especificações leia o artigo de Analisando e projetando drivers Ponte H.

Módulo Pinagem L298n Ponte H Dupla.

Depois da montagem realizada, abra a IDE oficial do Arduino e cole este código no Sketch criado. A biblioteca utilizada para o display LCD I2C é a NewLiquidCrystal, faça o download e adicione ao projeto. A biblioteca para controlar o motor de passo é a Stepper, sendo nativa da IDE.

/*
 * Rotacionar motor de passo com display LCD I2C e L298N.
 * 
 * Autora: Ana Paula Messina - [email protected]
 * 
 * 18/10/2019
 *
 * V1.0
*/

#include <Stepper.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Configuração Motor de Passo Pinagem - Enable A e B = 5V
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11

// Steps per Revolution, 360°/1.8° = 200 passos.
int SpR = 200;
float stepDegree = 1.8;

// Alterar o endereço conforme modulo I2C
LiquidCrystal_I2C lcd(0x3F, 2,1,0,4,5,6,7,3, POSITIVE); 

// Instancia o motor de passo conforme SpR e pinagem do Arduino.
Stepper MotorPasso(SpR, IN1, IN2, IN3, IN4);

void Rotacionar(int angulo, int velocidade)
{ 
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("RPM:"); lcd.setCursor(4,0); lcd.print(velocidade); 
  
  lcd.setCursor(8,0);
  lcd.print("A:"); lcd.setCursor(10,0); lcd.print(angulo); 
  
  MotorPasso.setSpeed(velocidade);
  int passos = angulo / stepDegree;
  
  lcd.setCursor(0,1);
  lcd.print("Passos:"); lcd.setCursor(7,1);  lcd.print(passos); 
  
  MotorPasso.step(passos);
  Serial.println(passos);   
  
  delay(600);
}

void setup()
{
  Serial.begin(9600);
  
  lcd.begin (16,2);
  lcd.setCursor(0,0);
  lcd.print("Rotacionar");
  lcd.setCursor(0,1);
  lcd.print("Motor de Passo!");
  delay(1000);
}

void loop()
{
  // Velocidade de 1 a 150
  // Rotacionar(angulo, velocidade)
  Rotacionar(180, 50);
  Rotacionar(-180, 140);
  Rotacionar(45, 20);
  Rotacionar(-360, 100);
  Rotacionar(180, 30);
  Rotacionar(-90, 140);
  Rotacionar(360, 30);
  Rotacionar(-90, 4);
}

Este simples código pré configura as especificações do motor de passo, onde seu StepDegree é de 1.8° e Steps per Revolution (SPR) são 200 passos, se o seu motor de passo possui outros valores, altere para funcionar corretamente.

A função Rotacionar(int angulo, int velocidade) controla a rotação do motor de passo, onde o ângulo e velocidade são adquiridos para realizar o cálculo de SPR para cada movimento, e as informações de velocidade em RPM, ângulo e passos são exibidos no display LCD oferecendo uma maior interação com o projeto. Você pode modificar os valores no loop para realizar diferentes ângulos e velocidades. Se você preferir, pode utilizar o código sem display LCD.

Sugestão: Se o módulo de Ponte H Dupla L298D esquentar muito, você pode implementar um controle de fan com o termômetro LM35.

Projeto de controle de fan com temperatura em placa ilhada.

Gostou? Então comente o que achou deste tutorial, ou tire suas dúvidas!

Se inscreva no canal do YouTube para mais conteúdo de eletrônica digital e embarcados!

Ana Paula Messina

Analista de sistemas e membro do tecdicas.