Neste post veremos como controlar motores de passo de uma maneira muito simples com o Módulo Motor de Passo Easydriver com Arduino.
O Easydriver é um módulo feito para controlar motores de passo bipolares de 4, 6 ou 8 fios. Funcionou perfeitamente para controlar um motor de 12 v que eu havia retirado de uma impressora antiga e estava esquecido na gaveta. 🙂
Controlado pelo CI A3967, o módulo não funciona apenas com 12 volts: a tensão de entrada pode ser de 7 à 30 volts. A comunicação com o microcontrolador é feita por meio de apenas 3 pinos: um para o controle de passo, outro para a direção e o terceiro vai ligado ao GND.
A tensão do nível de sinal também é ajustável, podendo ser tanto 3.3v como 5v, bastando para isso fechar o contato SJ2 no lado esquerdo da placa. Isso permite que o módulo seja usado tanto em projetos que utilizem o Arduino Uno ou Mega (nível de sinal de 5v), como o Arduino Due (nível de sinal de 3.3v).
Veja na imagem abaixo com o detalhe da pinagem que essa placa permite ainda o controle dos micropassos do motor (utilizando os pinos MS1 e MS2), possui uma saída de 5v para alimentar algum outro circuito/sensor, além do potenciômetro no lado esquerdo para controle da corrente fornecida ao motor.
No site oficial do desenvolvedor (http://www.schmalzhaus.com/EasyDriver/), você encontra informações completas sobre todas as funcionalidades dessa placa.
Conexão módulo Easydriver com Arduino
Para testar o motor de impressora esquecido na gaveta, eu fiz a seguinte ligação com um Arduino Uno:
Antes de ligar o motor, eu precisava descobrir quais eram os pares das bobinas. No meu caso, o motor tinha 4 fios e simplesmente utilizei o multímetro e segui as instruções desse site. Ali é explicado o procedimento para motores bipolares, unipolares e híbridos.
O programa abaixo gira o motor por uma volta completa, e depois faz a mesma coisa no sentido inverso. Ajuste o programa para o número de passos do seu motor alterando a variável passos_motor no início do programa.
Como utilizamos apenas dois pinos do Arduino para enviar ao módulo os valores dos passos e da direção, não precisamos carregar nenhuma biblioteca especial.
// Programa : Controle de motor de passo com Easydriver
// Autor : Arduino e Cia
// Pinos conectados ao Step e Dir do Easydriver
int pino_passo = 5;
int pino_direcao = 4;
int direcao = 1;
// Quantidade de passos para uma volta completa
// Ajuste de acordo com o seu motor
int passos_motor = 360;
void setup()
{
// Define os pinos como saida
pinMode(pino_passo, OUTPUT);
pinMode(pino_direcao, OUTPUT);
}
void loop()
{
// Define a direcao de rotacao
direcao = 1;
digitalWrite(pino_direcao, direcao);
for (int p=0 ; p < passos_motor; p++)
{
digitalWrite(pino_passo, 1);
delay(1);
digitalWrite(pino_passo, 0);
delay(1);
}
delay(1000);
// Inverte a direcao de rotacao
direcao = 0;
digitalWrite(pino_direcao, direcao);
for (int p=0 ; p < passos_motor; p++)
{
digitalWrite(pino_passo, 1);
delay(1);
digitalWrite(pino_passo, 0);
delay(1);
}
delay(1000);
}
Gostou? Confira outros posts sobre motores aqui mesmo no Arduino e Cia!