Vídeo: Tutorial Motor Shield L293D e Arduino 9

O sistema embarcado Arduino apresenta como principal componente o microcontrolador Atmega 328P. Segundo o datasheet do fabricante, este pode drenar cargas de saída de até 40mA, o que torna inviável o controle direto da maioria dos motores DC.

Por este motivo, torna-se necessária a utilização de driver para motores. Existem muitos Shields no mercado prontos para utilização com Arduino, um deles é o Motor Shield L293D, que permite o controle de até 4 motores DC de forma independente, além de possibilitar o controle de servo motores e motores de passo:

Hardware Motor Shield L293D

O hardware deste Shield consiste basicamente em dois circuitos integrados L293D (ponte H dupla com diodos de proteção internos) e um registrador de deslocamento da família TTL, o 74HC595. Na figura abaixo está explícito o diagrama esquemático do Shield. Você pode ter mais informações sobre o funcionamento da ponte H no post Controle Motor DC 12V com Arduino Motor Shield L293D.

Esquemático Motor Shield

De acordo com o byte configurado na saída do registrador, controla-se os motores DC. A ligação com Arduino é bastante simples, visto que o mesmo pode ser encaixado em cima do sistema embarcado. Vale salientar que o Shield ainda permite a alimentação externa exclusiva para os motores (aconselhável para evitar erros de lógica). Se utilizar fonte externa, desconecte o jumper PWR. Confira na Figura 3 a ligação utilizada para o projeto de hoje.

Circuito Motor Shield L293D

Programa controle de motor DC com Motor Shield L293D

Apoiando-se a uma biblioteca free source, pode-se facilmente controlar motores DC utilizando este Shield e o Arduino. No exemplo de hoje traremos o controle de um único motor, que pela análise do código pode ser expandido para o controle de mais motores facilmente.

O Box 1 traz o código proposto. O mesmo está ricamente comentado para maior compreensão.

Antes de compilar o Sketch, baixe a biblioteca AF Motor (disponível juntamente com os demais arquivos deste projeto), descompacte a pasta, cole na pasta Librares do Arduino, e reinicie a IDE.

Para baixar todos arquivos utilizados no projeto, acesse este link.

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

9 Comentários

  1. Se pode utilizar juntamente com o shild motor, o display LCD também vendido por vocês ?

    1. Bom dia Eladio,

      Temos vários displays disponíveis em nossa loja. Dê uma olhada nesta categoria, por favor: https://www.filipeflop.com/display-ct-41d86

      Abraço!

      Adilson – Equipe FILIPEFLOP

  2. Boa tarde

    Recentemente adquiri um Motor Drive Shield L293d
    Você poderia me ajudar num questionamento?

    Vi as especificações dele e vi que poderia entrar com uma tensão de até 36v, e que cada CI entrega 0,6A. Coloquei um motor PM55L-048-HHD0 de 24v que tem como pico 0,6A também.
    Em voltagens baixas o motor ficou somente vibrando, mas assim que passou de 20v ele girou e 5 segundos depois os capacitores explodiram. Você poderia me ajudar a entender o que aconteceu?
    Lembrando que me certifiquei da polaridade da minha fonte.

    Você indicaria alguma outra Shield ou uma outra solução? Obrigado

    1. Wagner ou outra pessoa do blog poderia tirar a dúvida do cidadão? A dúvida dele pode ser a de muitos, inclusive a minha. Grato pela atenção

  3. Amigo, na foto do shield, a alimentação está na Sequência “M+ GND”. Seu desenho esquemático não estaria invertido ? O vermelho não deve entrar no M+ da placa?

  4. Oi, queria saber qual seria o código pra um desaceleração gradativa do motor

  5. Bom post, mas tenho umas dúvidas que não foram sanadas nele:
    Posso ligar dois motores com tensões diferentes (1 servo de 6v e 1dc de 12v) para uma mesma alimentação (bateria de 12v) externa com essa ponte h?
    Gostaria de aproveitar os pinos analógicos e os pinos 5v e gnd, no mesmo lado das portas analógicas. é possível?

  6. Boa noite pessoal da FilipeFlop, tudo certo?

    Estou com umas duvidas rápidas com meu Motor Shield L293D. Comprei ele, está novinho. Estou com um projeto para controlar uma miniatura que construí (pra frente, pra trás, pra direita e pra esquerda). Algo simples, controlado por controle remoto (ps2). Fiz todas as ligações corretas, revi, revi de novo (haha) e por ai vai. Surgiu dois problemas:

    1) O motor quando peço para se movimentar (independente se é pra andar pra frente ou virar pra direita) ele dá uns tranquinhos, umas “derrapadas”. Creio eu que seja por causa de um delay que tenho na minha programação (ele é necessário, infelizmente). Não sei se é isso ou problema no shield, mas se for, gostaria de saber um conselho pra não ocorrer mais esses trancos.

    2) Minha porta M2 não dá sinal. O shield é novo, a porta M1 funciona normal. Quando vou testar a segunda porta (apenas ela, sem ter um motor no M1), ele não faz nada no motor, mesmo dando o comando. Será que o shield precisa que as portas anteriores estejam preenchidas para funcionar, por exemplo, se eu quiser utilizar a M3, preciso estar com a M1 e M2 preenchidas? Ou meu shield veio com problema?

    Tenho essas duvidas simples para meu projeto. Não “inventei nada”, apenas fiz o basico, mas infelizmente, ocorreram esses problemas e preciso de uma ajuda.

    Desde já agradeço

    João Melo