Aprenda a utilizar a ponte H L293D com Arduino
Olá makers, como andam os projetos?
Hoje iremos mostrar a introdução de uma parte fascinante e muito ampla da eletrônica, a robótica. Um dos principais itens para a robótica são os motores, vamos lá então aprender a utiliza-los.
Nesse post ensinaremos como controlar motores, sentido e velocidade, utilizando o circuito integrado L293D.
Antes de tudo, vale comentar que muitas pessoas acreditam que ligar um motor de corrente contínua ou motor DC é como liga um LED, basta ligar em alguma porta digital do arduino e inserir o outro fio no GND. Porém, essa atitude pode ser extremamente fatal para o arduino, pois diferentemente de um LED, um motor DC consome uma corrente bastante elevada, que os pinos do arduino não são capazes de suportar, conectar o motor diretamente em uma das portas pode acabar ocasionando a queima da mesma, por isso vamos evitar isso, ok?
Para controlar motores com o arduino são é utilizado um sistema similar ao de várias chaves ligadas nos terminais do motor, através dessas que passam a corrente alta e o arduino só atua abrindo e fechando essas chaves, esse sistema se chama Ponte H, olhe como ele funciona na imagem abaixo:
Agora que já sabemos o que é uma Ponte H vamos lá ao projeto.
- 1 x circuito integrado L293D
- 1 x arduino uno
- 1 x protoboard / matriz de contato
- 1 x fios jumper
- 1 x motor DC
- 1 x suporte para 4 baterias AA
Esquema de Montagem do Circuito:
Figura 03: Esquema de ligação
Fonte: Saulo Alexandre
Código Comentado:
//Programa: Controle de motor DC com L293D //Autor: Saulo Alexandre int PinoVelocidade = 3; //Pino que define a velocidade do motor e está ligado ao pino 1 do L293D e a Digital 3 do Arduino int Entrada1 = 2; //Entrada do terminal do motor ligado ao pino 2 do L293D e a Digital 2 do Arduino int Entrada2 = 7; //Entrada do terminal do motor ligado ao pino 7 do L293D e a Digital 7 do Arduino void setup( ) { //Iniciando o Serial do arduino Serial.begin(9600); Serial.println("Vamos la controlar o motor:"); Serial.println("Digite 1 para ir para frente"); Serial.println("Digite 2 para ir para tras"); Serial.println("Digite 0 para parar"); //Define os pinos como saida pinMode(PinoVelocidade, OUTPUT); pinMode(Entrada1, OUTPUT); pinMode(Entrada2, OUTPUT); } void loop( ) { //Define a velocidade de rotacao int velocidade = 500; analogWrite(PinoVelocidade, velocidade); //Verificando se algum valor foi inserido no Serial if(Serial.available() > 0) { //Convertendo esse valor para Inteiro e atribuindo a variável val val = Serial.parseInt(); //definindo o movimento do motor de acordo com o valor digitado if (val == 1) { digitalWrite(Entrada1, HIGH); digitalWrite(Entrada2, LOW); Serial.println("Girando para Frente"); } else if (val == 2) { digitalWrite(Entrada1, LOW); digitalWrite(Entrada2, HIGH); Serial.println("Girando para Tras"); } else if (val == 0) { digitalWrite(Entrada1, LOW); digitalWrite(Entrada2, LOW); Serial.println("Parado"); } else { Serial.println("Opcao Invalida"); Serial.println("Digite 0, 1 ou 2"); } //dando um intervalo para evitar mudança de estado brusca delay (100); } }
Resultado :
Observações: Não utilizei o motor que descrevi no projeto, utilizei um carrinho de controle remoto modificado, isso tudo para vocês verem o que podemos fazer controlando um motor
Se o seu motor girou para trás quando você mandou ele girar para frente, não se preocupe, basta apenas inverter as conexões do motor com o circuito integrado.
Comentários adicionais:
Espero que tenham gostado desse tutorial ;D
Este é só um início para a robótica, então, achou fácil? Se achou, temos um desafio, queremos ver se você consegue fazer o arduino controlar dois motores ao mesmo tempo, isso tudo com a mesma ponte H, e ambos individualmente, ou seja, um pode estar rodando enquanto o outro está parado.
Comentem as suas dúvidas, sugestões e críticas nos comentários, será um prazer para nós falar com você!
Saulo Alexandre
Estudante de Ciência da Computação pela Universidade Federal de Pernambuco, técnico em eletrônica pelo Instituto Federal de Ciência e Tecnologia de Pernambuco e apaixonado desde criança por eletrônica programação e uma boa música. Adoro projetos de cunho social e que da alguma forma possam ajudar alguém, e sou adepto de que “A melhor maneira de prever o futuro é inventá-lo.”