Você sabe como controlar motores CC com Arduino? Hoje nós trazemos uma forma diferente para conseguir ligar e desligar estes motores com o Arduino através de um “driver”, também conhecido como ponte H Arduino.
Neste artigo, abordaremos todos os detalhes do que é e como utilizar uma onde H em seu projeto para controlar motores de diversos tamanhos e potências com o Arduino UNO.
Além deste projeto introdutório, traremos também mais 3 projetos que utilizam ponte H e motores CC como exemplo para te motivar e ilustrar o que é possível desenvolver com estes componentes.
👨💻 Comprar Agora – Kit Iniciante Arduino com Tutorial e + 20 Projetos ✅
O que é uma ponte H e qual sua função?
Sabemos que cada pino do arduino consegue fornecer uma tensão de 5V e uma corrente máxima de 20mA, porém no caso de alguns motores CC (Corrente Contínua) a tensão de alimentação é maior do que os 5V e a corrente necessária é bem maior do que a fornecida pelo arduino.
Com isso surge a necessidade de utilizar um elemento que suporte estes níveis solicitados pelo motor, ao mesmo tempo que seja controlado pelos comandos elétricos do arduino. Chegamos então aos “drivers” de corrente e tensão.
Estes “Drivers” são componentes que suportam uma tensão e uma corrente além do que o fornecido pelo Arduino, permitindo se acoplar ao circuito cargas muito maiores e de diferentes tensões.
Transistores, que por sua vez são muito utilizados na refrigeração residencial e industrial, Tiristores e Circuitos Integrados (CIs) especiais como o L298N, são componentes que exercem essa função citada no parágrafo anterior.
No caso de motores CC, existe uma ligação denominada Ponte H, que permite “drivar” os motores e ao mesmo tempo controlar o sentido de rotação deles. Esta ligação é exemplificada na figura a seguir:

Quando os 4 contatos estão abertos o motor está desligado. Para ligar em um sentido é necessário ligar um par de chaves (Conforme imagem do sentido normal), para inverter o sentido deve se utilizar as outras chaves (Conforme imagem do sentido reverso).
Como funciona o módulo L298N?

O módulo L298N possui um CI projetado para exercer a função de driver e permitir a ligação dos motores em ponte H no arduino. Neste projeto iremos utilizar o seguinte módulo da imagem abaixo:
As especificações técnicas desse módulo seguem descritas na tabela abaixo, ela nos permite estimar quais os requisitos dos dispositivos que nós podemos ligar neste módulo.
| Parâmetro | Valor |
| Tensão máxima de alimentação | 50V |
| Tensão máxima de nível lógico | 7V |
| Corrente máxima de Operação | 2A |
| Potência Máxima | 25W |
| Temperatura de trabalho | -25°C à 130°C |
Para realizar as conexões com o arduino é importante entender sobre os pinos do módulo L298N, a imagem abaixo representa os pinos de conexão do módulo.

Para entender melhor cada pino deste módulo, na tabela abaixo está descrito a função que cada um tem para o sistema:
| Pino | Descrição |
| OUT 1 | Saída da ponte H para motor 1 |
| OUT 2 | Saída da ponte H para motor 1 |
| OUT 3 | Saída da ponte H para motor 2 |
| OUT 4 | Saída da ponte H para motor 2 |
| IN 1 | Entrada de sinal da chave da ponte H para motor 1 |
| IN 2 | Entrada de sinal da chave da ponte H para motor 1 |
| IN 3 | Entrada de sinal da chave da ponte H para motor 2 |
| IN 4 | Entrada de sinal da chave da ponte H para motor 2 |
| EN A | Entrada de sinal PWM do motor 1 |
| EN B | Entrada de sinal PWM do motor 2 |
| 12V | Entrada da alimentação para o módulo e para motores |
| 5V | Saída de 5V para alimentação do arduino e sensores |
| GND | Ground do sistema lógico |
É importante ressaltar o funcionamento do PWM no controle dos motores CC, para entender melhor como utilizar este recurso no controle da velocidade, veja o artigo sobre PWM Arduino em nosso site, que descreve detalhadamente como funciona e como utilizar o PWM do arduino.
Projeto
Neste projeto faremos um simples controle de velocidade e direção de 2 motores utilizando o arduino, controlando as velocidades e a direção através 2 botões utilizando LEDs para indicar o funcionamento do sistema.
Lista de Materiais
2 – LEDs
2 – Resistores 330 Ohm
2 – Botões
2 – Resistores 10KOhm
1 – Protoboard
1 – Arduino UNO
1 – Módulo L298N
2 – Motores CC
Cabos para ligação
Montagem do Circuito
Para a realizar a montagem desse circuito podemos seguir o diagrama abaixo. A intenção e demonstrar como controlar os motores de forma efetiva.

Com o circuito montado podemos passar para a parte do código. Observamos que caso você não disponha de uma bateria, pode ser utilizado uma fonte externa para alimentar o circuito, sem sofrer nenhuma alteração neste diagrama.
Código
Insira este código em um novo projeto no Arduino IDE, compile e grave no dispositivo.
// Inclui biblioteca de funções matematicas
#include <math.h>
//Definindo os pinos para o motor A
#define IN1 7
#define IN2 5
#define VEL_A 6
//Definindo os pinos para o motor B
#define IN3 4
#define IN4 2
#define VEL_B 3
//Definindo os pinos para os botões
#define BUTTON_1 11
#define BUTTON_2 10
//variavel auxiliar
int velocidade = 0;;
void setup(){
// Inicializa a serial do arduino
Serial.begin(9600);
// Inicializa os pinos do motor
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(VEL_A,OUTPUT);
pinMode(VEL_B,OUTPUT);
// Inicializa os pinos dos botões
pinMode(BUTTON_1,INPUT);
pinMode(BUTTON_2,INPUT);
}
void loop(){
// Verifica se o botão 1 foi pressionado
if(digitalRead(BUTTON_1) == HIGH && velocidade < 250){
// Incrementa a velocidade do motor
velocidade += 10;
// Espera 80 ms
delay(80);
}
// Verifica se o botão 2 foi pressionado
if(digitalRead(BUTTON_2) == HIGH && velocidade > -250){
// Decrementa a velocidade do motor
velocidade -= 10;
// Espera 80 ms
delay(80);
}
// Se a velocidade for positiva, o motor gira em um sentido
if(velocidade > 0){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
// Se a velocidade for zero, o motor para
else if (velocidade == 0){
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
// Se a velocidade for negativa, o motor gira em outro sentido
else if (velocidade < 0){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
// Gera saida no pino de controle de velocidade com PWM
analogWrite(VEL_A,abs(velocidade));
analogWrite(VEL_B,abs(velocidade));
// Espera 80 ms
delay(50);
}
Projetos exemplo utilizando a ponte h Arduino:
Agora que você testou os conceitos básicos de funcionamento deste módulo com os motores CC, é hora de passar para um projeto mais desafiador. Confira abaixo alguns projetos que incrementam o nível de desafio deste projeto.
Robô com reconhecimento de obstáculo de 2 motores

Para construir este robô que detecta obstáculos é necessário utilizar além dos componentes que vimos neste artigo o sensor de distância ultrassônico. Em nosso site temos um artigo ensinando a utilizar este sensor, clique no link acima para ver.
Robô seguidor de linha de 4 motores

Outro projeto que envolve os motores CC e também o módulo L298N, é o robô seguidor de linha de 4 motores. O principio de funcionamento dos motores é o mesmo que vimos neste artigo, porém neste caso o robô utiliza 2 sensores de sinal infravermelho para detectar as bordas das linhas e seguir seu caminho. É um projeto de dificuldade maior que o anterior.
Robô Equilibrista de 2 motores

Para fecha esta lista de projetos, o robô equilibrista entra como o mais complexo, tanto por que exige o uso de acelerômetro e giroscópio para verificar seu posicionamento, quanto por exigir teorias de controle avançado para permitir que o sistema controle em tempo real os motores para equilibrar o robô na vertical, é um projeto muito desafiador que facilmente contempla temas de iniciação científica e TCCs.
Considerações Finais
Como vimos neste artigo, a aplicação do módulo L298N pode ser empregada nas mais diversas ideias de projetos envolvendo controle de motor CC. Conhecer o funcionamento deste item lhe permite alcançar um novo patamar na projeção e no desenvolvimento de suas ideias na eletrônica.
A partir de agora você tem o conhecimento para utilizar este modelo de ponte H Arduino para controlar diversos tipos de motores que tenham a construção semelhante ao que vimos neste artigo.
Espero ter ajudado você a entender melhor sobre motores CC e ponte H. Obrigado e até o próximo artigo!