Controle de motores DC com o Shield Ponte H L293D e Arduino
Em nossos tutoriais anteriores nós mostramos como você pode controlar motores DC utilizando um CI Ponte H L293D e um módulo driver motor com ponte H L298N. Neste tutorial iremos fazer basicamente a mesma coisa, no entanto, vamos utilizar uma ferramenta diferente para controlar motores DC: o Shield Ponte H L293D.
Você pode conferir os nossos artigos anteriores sobre esse tema aqui:
O que é uma ponte H
De uma maneira bem básica, as pontes H são circuitos que normalmente são utilizados quando queremos inverter a corrente elétrica em uma determinada carga. Muitas vezes esta inversão do sentido da corrente, caracterizada também pela inversão dos potenciais nos terminais da carga, é chamada de inversão de polaridade.
Conforme veremos neste tutorial, este tipo de recurso é muito utilizado no controle do sentido de giro em motores DC. Em linhas gerais, o que uma ponte H precisa fazer é fornecer o caminho para que a corrente possa passar pela carga nos dois sentidos e também, caso necessário, cessar o fornecimento de corrente proveniente da fonte para a carga.
![Diagrama esquemático de uma ponte H](https://portal.vidadesilicio.com.br/wp-content/uploads/2018/08/Ponte-H-300x174.jpg)
Podemos ver na figura que a ponte H possui quatro espécies de interruptores ou chaves que podem ser controlados de maneira independente. Note que as diversas combinações possíveis entre os estados aberto e fechado de cada uma das chaves fazem com que os caminhos percorridos pela corrente elétrica sejam diferentes.
As configurações disponíveis para o funcionamento adequado de um motor, de acordo com o nosso esquemático, são:
- S1 e S4 fechadas, S2 e S3 abertas: neste caso, a corrente passa pelo motor em um determinado sentido, fazendo-o girar em uma direção;
- S1 e S4 abertas, S2 e S3 fechadas: nesta situação, a corrente passará pelo motor no sentido inverso do anterior, fazendo-o girar na direção contrária;
- S1 e S3 abertas ou S2 e S4 abertas: o motor não irá girar, porque não há corrente elétrica passando por ele.
O Shield L293D
As placas Arduino possuem uma limitação de corrente que pode ser fornecida através das suas portas de saída digital, de modo que componentes que precisam de grande quantidade de corrente não devem ser acionados diretamente, como é o caso de um motor DC. Por este motivo, torna-se necessária a utilização de drivers para motores.
Para realizar o controle de motores você pode utilizar o CI L293D, no entanto, uma outra alternativa é utilizar o Shield Ponte H L293D, que consiste em uma estrutura já pronta, também composta por chips L293D. Com esse shield você consegue controlar até 4 motores DC de maneira independente, e também motores de passo e servomotores.
Podemos citar algumas vantagens de utilizar o Shield L293D no desenvolvimento dos seus projetos:
- Você não precisa realizar a grande maioria das conexões, pois ao encaixar em cima do seu Arduino, ele estará pronto para ser utilizado;
- Por se tratar de um componente feito especialmente para o controle de motores, foi adequadamente projetado para desempenhar esta funcionalidade, com os dispositivos eletrônicos de segurança já embutidos na sua estrutura.
Veja os componentes presentes na placa do Shield Ponte H L293D:
![Componentes do Shield L293D](https://portal.vidadesilicio.com.br/wp-content/uploads/2018/08/SHIELD-MOTOR-DC-L293D-1024x628.jpg)
Diferenças entre os CI L293D e L298N
Você deve ter percebido na introdução deste tutorial que os elementos que nós mais utilizamos para realizar o acionamento de motores DC com as placas Arduino são os CIs L293D e L298N. Nós abordamos a utilização destes dois componentes nos tutoriais apresentados anteriormente, mas talvez uma pergunta fique no ar: quais são as principais diferenças entre eles?
Bom, a principal diferença entre eles é que o CI L298 possui uma capacidade de condução de corrente de até 2A por canal, suportando uma tensão de até 45V. No caso do CI L293D, esta capacidade de condução de corrente é reduzida para 600mA com uma tensão máxima de operação de 36V.
Mãos à obra – Controlando motores com o Shield Ponte H L293D
Componentes necessários
Para realizar este tutorial, você vai precisar dos seguintes componentes:
Montando o projeto
Para implementar este projeto, primeiramente, você precisa encaixar o Shield Ponte H L293D sobre o Arduino e em seguida ligar os terminais positivo e negativo do seu motor em uma das quatro entradas para motores DC existentes em sua estrutura.
Este shield permite que você utilize uma alimentação externa exclusiva para os motores. Como nós iremos recorrer a esta alimentação, devemos retirar o jumper especificado na figura abaixo para fazer com que o shield controle o motor fazendo o uso da fonte externa citada.
Programando
Para desenvolver esta aplicação, nós utilizamos uma biblioteca chamada AFMotor.h, sendo assim, caso você não tenha esta biblioteca baixada no seu computador, basta clicar aqui para realizar o download dela.
#include <AFMotor.h> AF_DCMotor motor(1); void setup() { motorDC.setSpeed(255); motorDC.run(FORWARD); delay(2000); motorDC.setSpeed(0); motorDC.run(RELEASE); } void loop() { }
Colocando para funcionar
Após carregar este código para sua placa Arduino, ele fará com que o motor comece a girar, e após dois segundos, pare.
Entendendo a fundo
Software
Neste ponto, serão demonstrados todos os passos para o desenvolvimento do código que deve ser inserido no Arduino UNO para que seja possível controlarmos um motor DC utilizando o Shield Ponte H L293D.
– Incluindo a biblioteca que será utilizada
O primeiro passo que devemos realizar consiste na inclusão da biblioteca adequada para permitir a interação do Shield Ponte H L293D com o Arduino UNO. Neste tutorial, nós utilizamos uma biblioteca chamada AFMotor.h, que pode ser obtida aqui.
#include <AFMotor.h>
– Criando o objeto da classe AF_DCMotor
Após incluir a biblioteca do shield, devemos criar um objeto chamado motorDC, que está conectado aos terminais referentes ao motor 1 do nosso shield. Caso você queira utilizar mais de um motor, basta criar mais um objeto e utilizar um outro algarismo como argumento do objeto (entre 1 e 4, referente a cada par de terminais de conexão para motores DC).
AF_DCMotor motorDC(1);
– Manipulando o motor
Em seguida, nós vamos utilizar a função setSpeed() para especificar com qual velocidade nós queremos que o motor gire (o valor máximo é 255) e em seguida vamos utilizar a função run() em conjunto com o argumento FORWARD para fazer com que o motor gire no sentido horário. Após dois segundos, definimos a velocidade do próximo comando (neste caso, 0 – zero) e utilizamos o parâmetro RELEASE na função run(), para parar o motor.
Como este trecho de código está na função setup(), o motor será ligado e desligado apenas uma vez.
void setup() { motorDC.setSpeed(255); motorDC.run(FORWARD); delay(2000); motorDC.setSpeed(0); motorDC.run(RELEASE); }
Considerações finais
Neste tutorial, demonstramos como você deve proceder para realizar acionamentos de motores DC com o Shield Ponte H L293D.
Apenas como uma informação complementar, além dos nossos tutoriais sobre o acionamento dos motores, também temos um conteúdo muito legal sobre o controle de velocidade em motores DC utilizando um Driver Motor com ponte H L298N. Clique aqui embaixo e confira:
Esperamos que você continue nos acompanhando e sinta-se à vontade para nos dar sugestões. Lembre-se de deixar suas dúvidas nos comentários abaixo.
Daniel, bom dia. muito boa a matéria. Como eu poderia fornecer a informação da velocidade desse motor para um display LCD 16×2 e aparecer na rela desse display a velocidade em tempo real? é possível fazer isso? desde já obrigado.