Tutorial: Controlando motor de passo com L293D e Arduino

Adquira estes componentes na Loja do Lab de Garagem

Neste tutorial, vamos mostrar como controlar um motor de passo utilizando o circuito integrado L293D e Arduino.

O L293D é um circuito integrado de ponte-H. Com ele é possível controlar motores DC e motores de passo. Para ver o datasheet, clique aqui! Em relação ao easydriver, você pode configurar a velocidade e o número de passos para dar mais velocidade e/ou mais torque. No L293D você pode utilizar um motor de passo de no máximo 600mA e 36V de alimentação para o motor de passo. No easydriver, porém, é mais fácil sua utilização e mais simples. E não tem necessidade de colocar outros componentes como no L293D. E você pode utilizar um motor de passo de até 750mA e 30V de alimentação do motor de passo.

Para este tutorial, vamos utilizar:

Primeiramente, faça a seguinte ligação:

A bateria de 9V é apenas a demonstração da fonte externa para alimentar o motor de passo. Veja no datasheet do seu motor de passo qual a tensão utilizada.

Agora abra a IDE do Arduino e passe a seguinte programação:

#include <Stepper.h>  //Biblioteca já disponível na IDE do Arduino

const int steps=200;  //Número de passos para o motor
int buttonState=0;
int buttonState1=0;
Stepper motor(steps,8,9); //Pinos 8 e 9 do Arduino

void setup()
{
motor.setSpeed(100);    //Velocidade da rotação do motor (RPM)
Serial.begin(9600);
pinMode(4,INPUT);   //Botão 1
pinMode(5,INPUT);   //Botão 2
pinMode(2,OUTPUT);   //Enable do L293D
digitalWrite(2,LOW);
}

void loop()
{
buttonState=digitalRead(4);
buttonState1=digitalRead(5);
if(buttonState==HIGH)   //Gira para um lado
{
digitalWrite(2,HIGH);
Serial.println("botao");
motor.step(steps);
}
else if(buttonState1==HIGH)  //Gira para o outro lado
{
digitalWrite(2,HIGH);
Serial.println("botao 1");
motor.step(-steps);
}
else   //Fica parado
{
digitalWrite(2,LOW);
Serial.println("Parado");
motor.step(0);

}
}

Conecte seu Arduino na porta USB do seu computador, selecione a versão do seu Arduino (UNO, Duemilanove, etc) em "Tools/Boards" e a porta (COMx, ttyUSBx, ttyACMx, etc) em "Tools/Serial Port". E clique em "UPLOAD".

Apertando um botão o motor de passo girará para um lado. Se apertar o outro botão o motor de passo girará para o outro lado. Caso seu motor de passo não gire, experimente inverter os fios das bobinas. Ou experimente diminuir ou aumentar o número de passos do motor e a velocidade.

E é isso! Esperamos que tenha gostado! Em caso de dúvidas, poste aqui neste blog! Para sugestões de tutoriais, clique aqui! Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outros garagistas, clique aqui e aqui, respectivamente! Até a próxima!

Referências:

http://www.tigoe.net/pcomp/code/circuits/motors/stepper-motors/

http://arduino.cc/en/Tutorial/Button

http://arduino.cc/en/Reference/StepperBipolarCircuit

Load Previous Comments
  • Euclides Franco de Rezende

    Se vc. colocar um diodo no pino que sai do microprocessador para o driver e depois dele colocar um resistor (10KOhm) ligando até o GND e no mesmo ponto colocar um botão normalmente aberto ligando ao Vcc, vc. consegue a cada pulso no botão fazer o motor dar um passo. Se fizer o mesmo esquema para o pino que sai do microprocessador e vai para o pino de direção, apertando os dois botões vc. consegue fazer o motor girar na outra direção. Mas atenção: Após toda a movimentação que vc. deseja, precisa zerar os eixos e começar a partir daquele ponto. Mais elaborado que isso requer mais estudo e muita modificação no software e na parte eletrônica. Boa sorte.

  • Edgar Dias

    mas eu estou a utilizar a esy driver 

  • Euclides Franco de Rezende

    ???? Ué???? O ED tem pinos para direção e pulso, conforme o que disse antes é possível fazer isso nele.

    Agora....é possível dedicar pinos restantes do Arduino para especializa-los a "sentir" os dois sentidos (um botão gira a direita e o outro a esquerda, quando pressionar eles invertem o pino de direção e dão um sinal no pino de pulso. Aliás é possível fazer isso com um único pino, usando recurso de entrada analógica; assim, se um pino está em GND não está pressionado. Se está entre 1 e 2 V apertado para dar um pulso a direita, se entre 2 e 3 V apertado para dar um pulso a esquerda. Assim com um único pino é possível com dois botões fazer o motor girar nos dois sentidos. Precisa somente descobrir os valores dos resistores a serem usados em um divisor de tensão.

    Pesquise mais um pouquinho.