Controle de motor DC com o L293D Ponte H
Para quem tem um circuito integrado L293D Ponte H e gostaria de entender um pouco mais sobre esse componente, hoje vou mostrar como usar o CI para controle de motor DC.
O L293D é um CI fácil de encontrar, barato e que possibilita o controle de 2 motores ao mesmo tempo, pois contém, internamente, dois circuitos denominados PONTE H.
O CI L293D Ponte H
Ponte H é um conceito bem simples, em que um motor é controlado por 4 chaves e uma fonte de alimentação:
Observando a figura abaixo, vemos que, acionando as chaves S1 e S4, o sentido da corrente será da esquerda para a direita, e o motor será acionado. Desligando S1 e S4 e ligando S2 e S3, o sentido da corrente é invertido, e consequentemente o motor passa a girar no sentido contrário.
Internamente, o L293D utiliza transistores e diodos para realizar este chaveamento. Podemos construir nossa própria ponte H utilizando esses componentes, mas sem dúvida o tamanho compacto do CI representa uma grande vantagem na montagem de circuitos de controle de motor.
Segundo o datasheet do L293D, o componente suporta correntes de saída de 600mA por canal, isso é, você pode ligar até 2 motores de 600mA cada. A voltagem suportada é de 4.5 à 36 volts. Isso nos permite controlar diversos tipos de motores respeitando-se, é claro, a corrente máxima suportada pelo chip. Por questões de segurança, recomenda-se utilizar motores com menos de 600 mA, apesar do CI suportar picos de 1.2A. Também é recomendado utilizar um dissipador de calor caso o CI comece a esquentar.
Para controle do CI, aplicamos uma tensão variável ao pino 1, que irá determinar a velocidade do motor, e aos pinos 2 e 7 (INPUT 1 e INPUT 2), alternamos os estados LOW (baixo) e HIGH (alto) para utilizar os conceitos de ponte H e determinar o sentido de rotação.
Na imagem acima temos a pinagem do L293D, e destacado em vermelho os pinos que utilizaremos para montagem do circuito deste post:
Conexão motor DC e L293D com Arduino
Como estou utilizando um motor de 5v, os pinos 8 (Vs) e 16 (Vss) estão ligados aos 5v do Arduino. Se você for utilizar uma fonte externa, conecte o positivo ao pino 8 (Vs), tomando o cuidado de verificar se o CI não está esquentando. Nesse caso, utilize algum tipo de dissipador de calor.
Optei por uma versão resumida do programa de controle, sem o uso de botões, chaves ou potenciômetros, para mostrar a utilização da porta 3 do Arduino para controle de velocidade (ligado ao pino 1 – ENABLE 1do CI), e das portas 2 (INPUT 1 – pino 2 do CI), e 7 (INPUT 2 – pino 7 do CI) para controlar o sentido de rotação simplesmente alterando o nível ALTO e BAIXO (1 ou 0) das portas.
//Programa: Controle de motor CC com o L293D Ponte H //Autor: Arduino e Cia int PinoVelocidade = 3; //Ligado ao pino 1 do L293D int Entrada1 = 2; //Ligado ao pino 2 do L293D int Entrada2 = 7; //Ligado ao pino 7 do L293D void setup() { //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); //Aciona o motor digitalWrite(Entrada1, LOW); digitalWrite(Entrada2, HIGH); delay(3000); //Chama a rotina de parada do motor para_motor(); //Aciona o motor no sentido inverso digitalWrite(Entrada1, HIGH); digitalWrite(Entrada2, LOW); delay(3000); para_motor(); } void para_motor() { digitalWrite(Entrada1, LOW); digitalWrite(Entrada2, LOW); delay(3000); }
Pequenas alterações no circuito e no programa permitem que você utilize os mais variados tipos de chaves, sensores e dispositivos para controlar o seu motor CC.
Abaixo, vídeo mostrando o funcionamento do circuito e programa apresentados neste post:
Gostou? Confira outros posts sobre motores aqui mesmo no Arduino e Cia!
Gostaria de Saber quem foi o escritor desta page sobre L293D para acionar motores?
Boa noite Jociane,
Produção própria do administrador do Arduino e Cia. Não só essa, como todas as páginas deste site. 🙂
Se desejar entrar em contato diretamente com o administrador, relatar algum problema ou tirar alguma dúvida, utilize o formulário de contato no lado direito da página.
Abraço !
vc sabe como usar o motor pego de um carinho de brinquedo e usar no arduino sem diodo e sem o L293D Ponte-H
Boa noite, se for um motor muito, mas muito fraco, dá pra ligar direto no Arduino, mas eu não recomendo. Uma outra alternativa é você comprar um módulo com o L293D.
Abraço !
Boa tarde, no caso de um motor de 12v, teria como estar programando para qualquer RPM?
Boa tarde Renato,
Tudo vai depender do motor que você vai utilizar. Eu testei alguns motores que não aceitavam velocidade muito baixa.
Abraço.
Olá, boa tarde.
Parabéns pela postagem. Bem didática.
,
Só gostaria de acrescenta um ponto que não foi abordado, e que pode gerar certos acidentes.
Recomenda-se a utilização de motores com menos do que 600 mA por questões de segurança (o CI pode esquentar muito, e também ocorrem picos de corrente). Os picos são de 1.2A (com pequena duração, é claro).
E também devem ser levados em conta a corrente com e sem carga do motor.
No mais é isso, parabens pelo blog e sucesso!
Té + o
Boa noite Marcus,
Obrigado e agradeço a colaboração. Realmente faltou essa observação e vou incluir isso não só nesse post, como também no post do Motor Shield L293D.
Grande abraço e obrigado mais uma vez !
Boa tarde, gostaria de saber se alimentando ci com uma fonte externa, o pino 16 VSS e 8VS ambos são alimentados com o terminal positivo da fonte??
E também de saber qual o limite de velocidade no código, no caso ,quando vc declarou 500; o motor estaria com os 5volts?
Boa noite,
Se utilizar fonte externa, conecte somente o pino 8 VS. Segundo o datasheet,a tensão máxima suportada é de 36 volts.
Quanto à velocidade, foi por tentativa e erro mesmo. O valor de 500 foi o máximo que o meu motor aceitou.
Abraço !
Olá amigo, queria utilizar uma fonte externa de 12V para ligar um cooler no lugar do motor, mas me confundi quanto ao Terra, devo interligar o terra do arduino junto com o terra da fonte externa? Obrigado
Oi Michel,
Isso mesmo interligue um pino GND do Arduino com o GND da fonte.
Abraço !
Os pinos ENABLE 1 E ENABLE 2 do L293 servem para que? Controlar a velocidade dos motores? Se não for controlar a velocidade pode ligar energia nesses pinos igual aos Vss ? ou não?
Boa noite,
Eles habilitam a ponte H numero 1 e a ponte H numero 2 do CI. Se vc ligar mais um motor nesse circuito, por exemplo, vai utilizar também o pino Enable 2.
Abraço !
Ponte H L293NE funciona da mesma forma que a L293D?
Boa noite,
Pelo que eu pesquisei, o L293D tem diodos na saída para evitar danos aos transistores de saída do CI, já o L293NE não possui esses diodos, e você terá que colocá-los no circuito por conta própria.
Abraço!
Olá, boa explicação.
Agora, como faço para inverter a rotação do motor usando um APP Android ( AMR_Voice), comandado por voz e também o esquema de ligação?
quer uma cerveja também ?kkkk
ola estou fazendo o tcc da faculdade e gostaria de saber se tem algum post de como usar a l293d para controlar um motor de passo,desde ja obrigado
Oi Glauco,
Não tenho nenhum post (ainda) aqui no Arduino e Cia sobre isso, mas eu recomendo este artigo aqui: http://www.instructables.com/id/Bi-Polar-Stepper-Motor-with-L293D-and-Arduino/
Abraço!
Adilson
tenho uma duvida, se eu quiser colocar pilhas em quais pinos teria q colocar?
e isso mudaria a força do motor?
Qual o código pra ligar dois motores alguém pode ajudar
Obrigado!
A função analogWrite trabalha com 8 bits, os valores variam de 0 a 255, se você colocar mais que 255 a função vai interpretar o que passou de 255 apenas,
analogWrite(pino, 0-255)
Excelente post.
Parabéns.
Me ajudou muito.
ola quando faço o circuito no proteus cm a ponte h l293d ela so funciona quando ligo 0v nos pinos de entrada, e quando levo para a proto board ele n funciona em conjunto com o Arduíno.