O uso de Ponte H é interessante para diversas implementações com motores, porque estes componentes permitem uma série de facilidades. Então, o primeiro ponto a citar é que a ponte H nos permite girar o motor para ambos os lados, com um circuito que funciona da seguinte forma:
Crédito: Gustavo Murta
Se o diagrama esquemático acima ficou complicado, recomendamos que clique aqui e leia um pouco mais sobre o assunto.
Explicando o funcionamento do circuito: se queremos que o motor funcione em um sentido, fechamos somente as chaves CH AD e CH BE. Se caso queremos que gire no outro sentido, abrimos as anteriores e fechamos CH AE e CH BD.
Então, por meio de comutação de chaves, a ponte H consegue fazer o motor ficar em vários estados diferentes de rotação. Como no módulo Ponte H L298N essa comutação não é feita de forma física. existe um chip embarcado na placa que faz essa comutação de chaves de forma eletrônica, que é mais eficiente do que uma comutação mecânica.
Uma das principais vantagens de se ter um circuito assim está associado a ele permitir uma maior dissipação de potência em relação ao acionamento direto por portas de circuitos microprocessados, que só conseguem fornecer alguns mA de corrente, contra 2A por canal da ponte H L298N.
As especificações do chip L298, que faz todo o controle da ponte H, pode ser conferido clicando neste link: https://www.st.com/resource/en/datasheet/l298.pdf. Mas um curto resumo das especificações é:
O uso dessa ponte H pode ser bastante confuso, pois, há muita informação na web que não é muito clara e que pode resultar em um mau funcionamento. Abaixo será explicado com maior detalhes como funciona a placa e como usar.
Este borne é responsável pela alimentação dos motores, com isso a tensão colocada neste borne de Vcc será copiada para os motores. Por isso, muita atenção: Se você possui um motor que opera somente até 12V, por exemplo, não alimente Vcc com mais de 12V, pois danificará o motor.
É o GND da placa, que deverá ser o mesmo GND do Arduino ou de outro microcontrolador. Por isso, é importante interligar os GNDs sempre com fios. Serão demonstrados na seção de exemplos.
Este borne é responsável pela alimentação lógica da ponte H. O chip L298N presente na placa recebe comandos do Arduino, e para ele conseguir operar os comandos e atuar na saída ele precisa de operar como um componente lógico (como o Arduino), e para isso precisa atuar em uma faixa bem restrita de tensão, que no caso é 4.5V a 7V. Como foi dito a placa possui um regulador de tensão de 5V, que a função dele é justamente fazer a regulação de Vcc para a alimentação lógica do chip em 5V. Por isso, se o regulador estiver ativo, este pino Vlogic terá a tensão de 5V, pois, é a tensão presente na saída do regulador.
É possível desativar o regulador de tensão e fazer a alimentação lógica do chip por conta própria, através do borne Vlogic. Em algumas situações é necessário desativar o regulador de tensão e fazer a alimentação lógica através de Vlogic, essas situações serão abordadas e explicadas na seção de exemplos de uso da placa.
Este jumper é responsável por ativar ou desativar o regulador de tensão da alimentação de Vlogic. Quando o jumper está encaixado entre os terminais, o regulador de tensão está ativado e a Vlogic como a ser regulado em 5V a partir da tensão de Vcc. Por isso, é muito importante saber manusear esse jumper do regulador. Caso ficou dúvidas sobre o funcionamento do regulador, releia a parte Vlogic ou clique aqui para ler o datasheet do regulador de tensão presente na placa.
Este jumper é responsável por desativar ou ativar o motor A para ser controlado pelo Arduino ou outra placa.
Este jumper funciona da seguinte forma: um dos terminais possui 5V (ou a tensão de alimentação VLogic), e o outro terminal é o que vai para o chip L298N. A placa possui um resistor de pull-down no outro resistor, o que significa que quando o jumper é solto, o terminal ficará com nível lógico baixo, e o chip entenderá que é necessário desabilitar o motor A. Mas quando o jumper é colocado entre os terminais, o 5V é ligado ao terminal de sinal pelo jumper. Com isso, o sinal de nível alto é enviado ao chip L298n e ele entende que os motores devem estar habilitados para os acionamentos.
Este jumper é responsável por desativar ou ativar o motor B para ser controlado.
O funcionamento é exatamente idêntico ao jumper Atv_A.
As entradas de controle da placa possuem os pinos IN1, IN2, IN3 e IN4, sendo que a entrada IN1 e IN2 são as entradas que controlam os bornes do motor A, e as entradas IN3 e IN4 controlam os bornes do Motor B. Para controlar os motores, acione os pinos da seguinte forma:
E no motor B, acione da mesma forma:
Estes bornes são de fato onde os motores DC são conectados. A posição dos fios do motor na conexão com o borne altera o sentido de rotação do motor. Se for invertido os fios no borne, o sentido de rotação também é invertido no acionamento. Essa é uma boa dica para alterar a rotação dos motores, caso estejam girando em um sentido não desejado.
Perceba também, que como juntando o borne de Motor A e Motor B possuímos 4 conexões, podemos usar essa ponte para controlar 1 motor de passo. Se o motor for de 4 fios, podemos utilizar conectando direto. Se for de 5, ou 6, podemos conectar o tap central ao VLogic.
Aqui serão mostrados alguns exemplos comuns de uso na plataforma Arduino Uno ou Arduino Mega. As conexões não alterarão o funcionamento do programa.
Vale ressaltar que é preciso ter bastante atenção na tensão de operação do motor, pois, se a alimentação Vcc exceder o limite do motor, poderá ocorrer danos ao motor e até um acidente.
Esta conexão é destinada para ser feita usando a própria alimentação do cabo USB, para fins de testes ou alguma aplicação onde é importante testar o sistema constantemente e precisa fazer mudanças no código. É importante que a conexão seja feita com o motor sem carga e consumindo baixa corrente. Para isso, deve remover o jumper do regulador de tensão e conectar os 5V do Arduino tanto em Vcc quanto em Vlogic. Fazendo a conexão abaixo:
Nessa segunda montagem, é quando a alimentação disponível do circuito irá ser feita utilizando 4 pilhas AAA (palito), totalizando 4.8V.
Portanto, ao optar por essa montagem abaixo, opte por pilhas alcalinas, e esteja ciente que dependendo da especificação do motor e da carga nele, ele pode apresentar falhas. Nesta montagem também é necessário retirar o jumper do regulador de tensão.
Uma forma de otimizar a montagem abaixo é separando a alimentação do Arduino da alimentação dos motores, se caso faltar corrente suficiente para os motores.
Com um suporte de 4 pilhas AA, como este, e usando pilhas alcalinas na montagem, temos um total de 6V na alimentação da ponte H. A montagem é similar a anterior, mas com um detalhe: O fio do suporte de pilhas não pode ser ligado diretamente ao pino 5V do Arduino, porque o microcontrolador Atmega 328P só suporta até 5,5V, então, para contornar isso, usaremos um diodo na montagem. Este diodo tem a função de provocar uma queda de tensão de aproximadamente 0,7V em cima dele, e com isso, a tensão no microcontrolador do Arduino seria de 5,3V, estando no intervalo de operação.
Para uma margem ainda maior de segurança, insira dois diodos em série.
É importante fazer a observação que se caso for inserido na montagem componentes adicionais. Pode ser que seja necessário fazer uma alimentação separada para o Arduino para conseguir suprir a demanda de corrente do sistema.
Para uma tensão externa entre 7V e 20V, é recomendado fazer uma alimentação separada entre a ponte H e o Arduino, sendo que até 12V, você pode usar o borne VLogic para alimentar alguns circuitos que necessitam de 5V e demandam baixa corrente. Nesta montagem é necessário manter o jumper do regulador de tensão, já que o circuito Vlogic será alimentado pela saída do regulador de tensão interno.
É possível, em até 12V, fazer uma alimentação única entre o Arduino e a ponte H, colocando a mesma tensão de 12V no pino de Vin do Arduino e no borne Vcc da ponte H.
Para uma alimentação de 20V até 46V -que é o limite máximo- é extremamente necessário remover o jumper do regulador de tensão. Este procedimento é necessário porque este regulador só opera em uma margem segura abaixo de 20V, e acima disso ele poderá sobreaquecer e danificar (principalmente acima de 35V). Logo, é necessário remover o jumper e fazer a alimentação de Vlogic com o 5V do Arduino.
Lembrando que nesse caso a alimentação do Arduino e da ponte H é feita de maneira independente. O circuito é este:
O programa feito abaixo servirá para fazer um teste com sua Ponte H. O programa abaixo foi criado usando teoria de orientação a objetos, para aproveitar das vantagens de manipular funções de cada motor de maneira mais fácil e poder construir lógicas maiores de forma mais fácil. No loop do programa, podemos usar os métodos trocar a velocidade dos motores, direção e estado de maneira simples, como no exemplo.
/* * Programa: Exemplo de uso do driver Ponte H L298N * Autor: Gustavo Nery, Eletrogate. * Arduino 1.8.12 */ // Iremos fazer uma classe para facilitar o uso da ponte H L298N na manipulação dos motores na função Setup e Loop. class DCMotor { int spd = 255, pin1, pin2; public: void Pinout(int in1, int in2){ // Pinout é o método para a declaração dos pinos que vão controlar o objeto motor pin1 = in1; pin2 = in2; pinMode(pin1, OUTPUT); pinMode(pin2, OUTPUT); } void Speed(int in1){ // Speed é o método que irá ser responsável por salvar a velocidade de atuação do motor spd = in1; } void Forward(){ // Forward é o método para fazer o motor girar para frente analogWrite(pin1, spd); digitalWrite(pin2, LOW); } void Backward(){ // Backward é o método para fazer o motor girar para trás digitalWrite(pin1, LOW); analogWrite(pin2, spd); } void Stop(){ // Stop é o metodo para fazer o motor ficar parado. digitalWrite(pin1, LOW); digitalWrite(pin2, LOW); } }; DCMotor Motor1, Motor2; // Criação de dois objetos motores, já que usaremos dois motores, e eles já estão prontos para receber os comandos já configurados acima. void setup() { Motor1.Pinout(5,6); // Seleção dos pinos que cada motor usará, como descrito na classe. Motor2.Pinout(9,10); } void loop() { Motor1.Speed(200); // A velocidade do motor pode variar de 0 a 255, onde 255 é a velocidade máxima. Motor2.Speed(200); Motor1.Forward(); // Comando para o motor ir para frente Motor2.Forward(); delay(1000); Motor1.Backward(); // Comando para o motor ir para trás Motor2.Backward(); delay(1000); Motor1.Stop(); // Comando para o motor parar Motor2.Stop(); delay(500); }
Gostou? Avalie o nosso post!
Se ficou alguma dúvida, deixe no comentário.
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!