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)
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.
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.
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.
*
* Autor: tecdicas
*
* 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.