Controlando motor DC com o CI Ponte H L293D

Neste tutorial, você aprenderá a controlar motores DC utilizando o Circuito Integrado (CI) ponte H L293D. Aqui nós abordaremos a função dos CI’s, o uso de uma ponte H e finalizaremos com a utilização do CI ponte H L293D em conjunto com um Arduino UNO.

O que é um CI?

CI é uma abreviação para Circuito Integrado. Hoje em dia, podemos encontrar Os circuitos integrados em quase todos os equipamentos eletrônicos e é inegável que eles revolucionaram o mundo da eletrônica. Os circuitos integrados foram inventados Em meados do século XX, com o avanço da área da computação.Os CI’s vieram para reduzir o espaço que os componentes eletrônicos dos computadores ocupavam, incorporando miniaturas de diversos componentes: transistores, diodos, resistores e capacitores, em uma pequena lâmina de silício.

O que é uma ponte H?

Na robótica, para locomoção de robôs, os motores de corrente contínua ou motores DC (direct current), são muito utilizados. Esses motores demandam de uma corrente superior à que as portas do Arduino conseguem fornecer, portanto, se estes forem utilizados usado de forma incorreta, podem acabar danificando a porta em questão e até mesmo a placa como um todo.

As portas do Arduino podem fornecer uma corrente máxima de 40mA nas portas digitais.

Motor DC

O problema da alta corrente poderia facilmente ser resolvido com uso de transistores, porém, no momento em que quiséssemos realizar a inversão do motor teríamos um problema em função da quantidade de transistores requerida. Basicamente, a movimentação de um motor DC ocorre quando este é  submetido a uma corrente contínua, no entanto, caso a polaridade da alimentação do mesmo seja alterada, este passará a se movimentar no sentido contrário. Dessa forma para cumprir este objetivo, nós utilizamos o circuito ponte H, que por sua vez, consiste em quatro transistores necessários para a realização da inversão da polaridade.

Usando uma Ponte H para controlar motores

A ponte H é uma configuração eletrônica que permite controlar a direção e a velocidade de motores DC. É chamada de “ponte” porque, visualmente, se assemelha a uma ponte em esquemas elétricos, e “H” devido à sua forma.

O que pode ser feito com uma Ponte H

Com uma ponte H, podemos controlar a direção de rotação de um motor DC simplesmente invertendo a polaridade de sua alimentação. Além disso, usando modulação por largura de pulso (PWM), podemos controlar a velocidade do motor.

Modelos mais conhecidos de Ponte H

Existem diversos CI’s populares que contêm uma ponte H, como o L298 e o L293. O L298 é capaz de controlar motores mais potentes em comparação ao L293D, mas ambos são amplamente usados em projetos de robótica e automação.

Como funciona a ponte H?

Legenda

As pontes H consistem em um conjunto de quatro chaves que são acionadas de forma alternada. De acordo com a configuração entre as chaves, temos o motor se movimentando em um sentido, no sentido contrário, ou desligado.

Quando as quatro chaves estão abertas, o motor está desligado, como mostra o exemplo da esquerda. Quando o par S1-S3 estiver acionado, isto é, quando as chaves em questão estiverem fechadas, o motor girará em um sentido, como mostra o exemplo do centro. Em contrapartida, quando o par S2-S4 estiver acionado, o motor girará em sentido contrário, como mostra o exemplo da direita.

Circuito integrado Ponte H L293D

O CI L293D é utilizado com o propósito de possibilitar o controle de motores e a velocidade dos mesmos. As vantagens do uso desse CI são a baixa complexidade e a presença de dois circuitos ponte H, isto é, pode-se utilizá-lo no controle de dois motores simultaneamente. Na figura abaixo podemos ver a pinagem do CI.

Legenda

Os pinos Enable são utilizados para habilitar as portas de saída e também podem ser utilizados para controle da velocidade do motor. O CI L293D pode suportar dois motores para controle simultâneo, neste caso, liga-se cada porta do motor em uma porta de saída do mesmo lado.

Diferenças entre o L293D e o L298

O L293D e o L298 são dois drivers de motor muito populares. O L293D é mais compacto e possui dois circuitos ponte H, enquanto o L298 é mais robusto e pode lidar com correntes mais altas. Uma vantagem do L293D é que ele possui diodos de proteção internos, enquanto no L298, eles precisam ser adicionados externamente.

Aplicações do L293D

O L293D é versátil e pode ser usado para controlar motores DC e motores de passo. Além disso, ele pode ser encontrado em shields e módulos, tornando sua implementação mais fácil e rápida. Usar um shield ou módulo facilita a conexão com plataformas como o Arduino e também oferece proteções adicionais ao circuito.

Shields e Módulos

Existem shields e módulos disponíveis no mercado que integram o L293D, facilitando a conexão com microcontroladores. Usar esses módulos simplifica o processo de montagem e oferece proteções adicionais, como diodos e capacitores. No entanto, em aplicações específicas, pode ser mais vantajoso criar seu próprio circuito.


Mãos à obra – Controlando motor DC – CI Ponte H L293D

Agora, vamos testar o CI L293D para fazermos a inversão dos motores A e B.

Componentes necessários

Para esse exemplo, utilizaremos:

Montando o projeto

Prossiga com a montagem para os dois motores conforme esquema abaixo. Em seguida, abordaremos a montagem do circuito para uso de um único motor.

Garanta que seu Arduino e a fonte externa estejam desligados durante a montagem.

Esquema de montagem do L293D com Arduino Uno
Esquema de montagem do L293D com Arduino Uno com dois motores

Esquema de montagem do L293D com Arduino Uno com um motor
Esquema de montagem do L293D com Arduino Uno com um motor

Conectando o Arduino ao computador

Conecte seu Arduino ao computador e abra a IDE Arduino.

Primeiramente, selecionaremos qual placa e porta você deseja usar para fazer o upload do programa no Arduino. Dentro do Arduino IDE, clique no menu Ferramentas(tools) e abra o submenu Placa(Board) e selecione a placa que você usará no projeto.

 

Em seguida, no menu Ferramentas(Tools) e abra o submenu Porta(Port). Clique na porta que seu Arduino está conectado. Geralmente aparece o nome da placa Arduino: “COM3 (Arduino/Genuino Uno)”.

Programando

Crie um no programa (sketch) e salve com o nome de “controle_motores”.

Para controlarmos os motores é necessário o uso da biblioteca específica.

-Instalando a biblioteca

Para download da biblioteca, clique aqui >> Biblioteca L293D

Descompacte a pasta “Firmware”. Em seguida, basta mover a pasta para o local:

Windows: “Meus documentos\Arduino\libraries”

Mac: “Documents/Arduino/libraries”

Depois desse processo, a biblioteca estará disponível em “Sketch -> Incluir Biblioteca” na próxima vez que o IDE for aberto.

-Código exemplo

Com a biblioteca instalada e o programa salvo, escreva o seguinte código nela.

//Controlando motores DC com L293D
#include "Arduino.h"
#include "DCMDriverL293D.h"

#define ENABLE_1  13
#define IN_1  12
#define IN_2  11
#define ENABLE_2  10
#define IN_3  9
#define IN_4  8

DCMDriverL293D Motor(ENABLE_1,IN_1,IN_2,ENABLE_2,IN_3,IN_4);

void setup() 
{
   
}
void loop() 
{
    
    Motor.setMotorA(200,1);//gira um lado em um sentido
    delay(2000);
    Motor.setMotorA(200,0);//gira em sentido contrário
    delay(2000);
    Motor.stopMotors(); //para os motores
    delay(2000);
    Motor.setMotorB(200,1);//gira o outro lado em um sentido
    delay(2000);
    Motor.setMotorB(200,0);//gira em sentido contrário
    delay(2000);
    Motor.stopMotors();
    delay(2000);
    }

Colocando pra funcionar

Se seu projeto está com tudo certo, teremos os motores realizando os movimentos:

  • Motor A gira em um sentido por dois segundos,
  • Motor A gira pelo sentido oposto por dois segundos,
  • Motores param por dois segundos,
  • Motor B gira em um sentido por dois segundos,
  • Motor B gira pelo sentido oposto por dois segundos,
  • Motores param por dois segundos.

Entendendo a fundo

Entendendo o Software

No software, começamos com a inclusão das bibliotecas necessárias.

#include "Arduino.h" 
#include "DCMDriverL293D.h"

Depois definimos os pinos que estão conectados ao CI.

#define ENABLE_1 13 
#define IN_1 12 
#define IN_2 11 
#define ENABLE_2 10 
#define IN_3 9
#define IN_4 8

Então definimos ao Arduino o uso dos motores por:

DCMDriverL293D Motor(ENABLE_1,IN_1,IN_2,ENABLE_2,IN_3,IN_4);

Movimentando os motores

Para fazermos os motores se movimentarem precisamos informar sua direção e sua velocidade:

Motor.setMotorA(200,1);//gira um lado em um sentido 
delay(2000);

Nesta movimentação dos motores, se alterarmos o primeiro parâmetro entre 0 e 255, alteraremos sua velocidade, e se alterarmos o segundo parâmetro entre 0 e 1, alteramos sua direção de giro. Para movimentar o outro motor é necessário apenas trocar setMotorA por setMotorB.

 


Considerações finais

Esperamos que se divirtam com seus motores e seus projetos de robótica. Deixe suas dúvidas, sugestões, ou até mesmo a foto do seu projeto nos comentários.

Mais detalhes em instalação de bibliotecas em DHT11 e DHT22 | Sensor de umidade e Temperatura com Arduino.

Entenda mais sobre protoboard’s em Como usar uma Protoboard?

Privacy Preference Center