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

Exibições: 37491

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Euclides Franco de Rezende em 18 junho 2015 às 9:13

???? 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.

Comentário de Edgar Dias em 18 junho 2015 às 8:22

mas eu estou a utilizar a esy driver 

Comentário de Euclides Franco de Rezende em 17 junho 2015 às 20:13

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.

Comentário de Edgar Dias em 17 junho 2015 às 17:21

Por exemplo clicar num botao de pressao e o motor andar pra a direita e assim sucessivamente 
eu sei , mas eu preciso de a controlar assim....

Comentário de Euclides Franco de Rezende em 17 junho 2015 às 12:16

Como assim? CNC não é manual, é Controlado por Computador (por isso os dois "Cs).

Comentário de Edgar Dias em 17 junho 2015 às 7:35

 Euclides Franco de Rezende 
sera que me pode ajudar a controlar uma cnc manual?
agradecido 

Comentário de Euclides Franco de Rezende em 16 junho 2015 às 20:21

"Bons tempos" aqueles em que em vez de se mostrar o lixo que sai do Fritzing era ensinado ao povo como "ler" um esquema e assim, usando a massa cinzenta, não se montava um circuito e sim se construia um circuito.

A chance de erros eram muito menores, pois se lia, entendia e fazia algo que se baseava em um padrão.

Hoje é essa confusão de pinos, mudou o transistor ninguem consegue entender o que se liga a nada. Devido a baixa qualidade ninguem consegue saber qual o valor de um resistor, não se tem lista de componentes. Etc...etc...etc...

Cada vez mais se "dá medo" no tipo de profissional que sai por aí achando tudo isso "moderno" e "normal".

Cada vez mais, fica parecendo que está havendo uma "invasão de sobrinhos" ou que os "picaretas" mudaram de ramo (da informática para a macatrônica).

Esquemas e datasheets já!

Comentário de Edgar Dias em 16 junho 2015 às 18:07

Se usarmos a easy driver é igual o codigo?

Comentário de José Antonio do Nascimento em 1 fevereiro 2015 às 10:54

NÃO SEI SE ESTOU ERRADO MAIS PERCEBI QUE O COLETOR ESTÁ LIGADO COM UM RESISTOR DE 10K NO POSITIVO E O EMISSOR LIGADO NO NEGATIVO. CONCLUSÃO, QUANDO HOUVER A POLARIZAÇÃO DA BASE O TRANSISTOR ENTRA EM CURTO ? ESTÁ CERTO ISTO ?

Comentário de José Antonio do Nascimento em 1 fevereiro 2015 às 10:35

Acredito que ninguém percebeu as ligações, mais tanto a Saber Eletrônica quanto este post (não sei quem copiou de quem ?) e copiou ERRADO, viram que o positivo do protoboard está ligado no GND do Arduino.

http://www.sabereletronica.com.br/artigos-2/3453-trabalhos-praticos...

Vamos corrigir esta gafe, não podemos postar esquemas errados, os iniciantes piram.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço