Tutorial sobre como utilizar motor DC com L293D (ponte-H) e Arduino

Adquira estes componentes na Loja do Lab de Garagem

Neste tutorial vamos mostrar como utilizar o L293D para controlar motores de corrente contínua (DC) com Arduino.

O L293D é basicamente uma ponte-H em um circuito integrado. Pode-se controlar motores de até 36V de alimentação como mostra no datasheet. Cuidado, que o L293D aguenta corrente constante de 600mA e corrente pico em torno de 1.2A. Portanto não coloque motores DC que exijam mais do que 600mA.

Primeiramente, vamos olhar no datasheet para saber a pinagem do L293D:

Vendo a pinagem do L293D, é possível ligar até 2 motores em um único L293D, porém é necessário que a fonte de alimentação suporte o consumo de corrente. Neste tutorial iremos demonstrar apenas um motor DC.

Agora, vamos ver como fazer o motor DC girar de um lado e para outro:

Se os pinos 1 e 7 estiverem em alto(HIGH) e o pino 2 estiver em baixo(LOW), o motor girará para um lado. Se os pinos 1 e 2 estiverem em alto(HIGH) e o pino 7 estiver em baixo(LOW), o motor girará para o outro lado. E assim por diante.

Utilizando um botão, um resistor de 10K ohm, um motor DC de 9V, uma bateria de 9V, L293D e um Arduino, vamos para a montagem:

Na montagem estou utilizando um motor DC de 9V e alimentando o L293D com uma bateria de 9V. Antes de ligar a alimentação do motor, veja qual é a sua alimentação, caso contrário irá queimá-lo.

Depois de feito a montagem, abra a IDE do Arduino e passe a programação exemplo:

int switchPin = 2; // switch input
int motor1Pin1 = 3; // pin 2 on L293D
int motor1Pin2 = 4; // pin 7 on L293D
int enablePin = 9; // pin 1 on L293D

void setup() {
// set the switch as an input:
pinMode(switchPin, INPUT);

// set all the other pins you're using as outputs:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);

// set enablePin high so that motor can turn on:
digitalWrite(enablePin, HIGH);
}

void loop() {
// if the switch is high, motor will turn on one direction:
if (digitalRead(switchPin) == HIGH) {
digitalWrite(motor1Pin1, LOW); // set pin 2 on L293D low
digitalWrite(motor1Pin2, HIGH); // set pin 7 on L293D high
}
// if the switch is low, motor will turn in the opposite direction:
else {
digitalWrite(motor1Pin1, HIGH); // set pin 2 on L293D high
digitalWrite(motor1Pin2, LOW); // set pin 7 on L293D low
}
}

Agora, selecione a versão da placa Arduino (UNO, Duemilanove, etc), depois em selecione a porta a qual a placa Arduino está conectada (COMx, ttyUSBx, ttyACMx, etc) e clique em "UPLOAD".

O motor DC irá girar para um lado. Se apertar o botão, o motor DC girará para o outro lado.

Pronto!! Caso tenham dúvidas sobre o post, poste aqui mesmo neste post! Se tiverem sugestões, postem aqui! Vocês podem ver outros tutoriais, clicando aqui, e projetos abertos desenvolvidos pela equipe LdG ou pelos garagistas da rede, clicando aqui! Até a próxima!

Referências:

http://luckylarry.co.uk/arduino-projects/control-a-dc-motor-with-ar...

http://arduino.cc/playground/Main/InterfacingWithHardware

http://www.datasheetcatalog.org/datasheet/stmicroelectronics/1330.pdf

Exibições: 72557

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 luiz carlos barreto em 29 julho 2015 às 0:18

Pessoal,

caso a bateria seja desconectada, o motor será alimentado de forma reversa pelo controlador através do INPUT 1? Nesse caso, o que poderia ser feito para evitar isso? Obrigado!

Comentário de Euclides Franco de Rezende em 23 julho 2015 às 19:13

A falta do GND entre o Arduino e a proto?

Manda outra pegadinha.

; )

Comentário de Samuel em 23 julho 2015 às 16:49

olá fiz um projeto semelhante porém o motor não tem potência suficiente o que poderia ser ?

Comentário de Euclides Franco de Rezende em 20 novembro 2014 às 12:29

Julio Belarmino.

Leia minha mensagem com o "CUIDADO COM O PINO 8!!!!!"

Comentário de Julio Belarmino em 20 novembro 2014 às 12:03

Boa tarde! preciso fazer um circuito igual a este só que estou com duvida,neste circuito mostrado vc alimenta o c.i l293D com 9v dc sendo que o data shet mostra a tabela 5v dc 

Comentário de Euclides Franco de Rezende em 2 agosto 2014 às 21:58

Maurício. Já mediu o consumo do motor? É variável, tanto assim?

Comentário de Maurício garcia de souza em 2 agosto 2014 às 14:22

Aí galera, Faço minha a dúvida do Gabriel Fillipi."Boa noite, tem algum CI com essa mesma finalidade que suporte um motor de 7~15A?" Pretendo usar aqueles motores de vidro elétrico mabuchi em um robo. Se alguém puder me ajudar, eu fico realmente grato.

Comentário de Felipe Casseb em 27 maio 2014 às 22:35

Alguém sabe o esquema de montar uma ponte h para motor dc usando modulo rele?

Comentário de Euclides Franco de Rezende em 17 dezembro 2013 às 7:04

Cuidado com o pino 8!!!!!!

Minha experiência com quem está montando este componente em protoboard e aos descuidados que só sabem fazer as coisas usando shield:

CUIDADO COM O PINO 8!!!!!!!

Quando se trata de alimentar cargas e se fizer os primeiros testes com este CI fiquem espertos em se fazer os teste com 5 volts primeiro e depois se "engraçarem" com tensões maiores, pois aqui é que "mora o perigo". O pessoal esquece de desfazer a ligação do pino 8 com os 5 Volts do Arduino e quando "somam" mais um "fiozinho" a este pino (sem tirar o que vai até os 5 Volts do Arduino) na verdade estão "matando" a placa do Arduino quando fazem a ligação da fonte que alimentará os motores conectados ao L293D. 

O pino 16 (de Vss) só pode ser alimentado até os 5 Volts.

O pino 8 (de Vs) não deve estar ligado a mais nada a não ser a fonte que alimentará os motores.

Alguns datasheets encontrados na net, tem confusões em relação ao nome e conexões destes pinos, fiquem atentos.

Boas sortes!!!

Comentário de Gabriel Fillipi em 20 maio 2013 às 21:40

Boa noite, tem algum CI com essa mesma finalidade que suporte um motor de 7~15A?

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço