L9110S com ESP32: Controle de Dois Motores DC e Comparação com L298N, DRV8833 e TB6612FNG
![]() |
| L9110S com ESP32 controlando dois motores DC e comparação com outros módulos de Ponte H. |
Módulo Ponte H L9110S: controlando dois motores com ESP32
No projeto anterior, utilizamos o CI L9110H diretamente no protoboard para controlar um motor DC.
Foi uma oportunidade para sair do conceito e colocar o circuito em funcionamento.
Agora vamos dar o próximo passo: utilizar o módulo Ponte H L9110S para controlar dois motores DC.
A diferença é importante.
No primeiro projeto trabalhamos diretamente com o CI. Agora vamos utilizar uma placa pronta, com os componentes necessários para facilitar a montagem e a utilização do circuito.
E, como continuação desse aprendizado, vamos comparar o L9110S com outros drivers muito conhecidos no mundo Maker:
L298N
DRV8833
TB6612FNG
A ideia não é simplesmente descobrir "qual é o melhor", mas entender por que existem diferentes drivers de motores e em quais situações cada um pode fazer sentido.
Do L9110H para o L9110S
No projeto anterior, o L9110H foi montado diretamente no protoboard.
Isso permitiu observar o CI e fazer as conexões manualmente.
Agora temos um módulo baseado no L9110.
O conceito é semelhante, mas a montagem fica muito mais simples.
Em vez de montar o circuito ao redor do CI, podemos trabalhar diretamente com a placa:
ESP32 → L9110S → motores
E aqui aparece uma diferença importante em relação ao primeiro projeto:
agora vamos controlar dois motores.
O L9110 possui dois canais de acionamento. De acordo com o datasheet, cada canal possui capacidade de corrente contínua de aproximadamente 750 a 800 mA, com capacidade de pico especificada na faixa de 1,5 a 2,0 A, dependendo das condições de operação.
Isso permite utilizar os dois canais para dois motores DC independentes.
![]() |
| Esquema de ligação do ESP32 ao módulo L9110S para controlar dois motores DC. Os botões nos GPIO 18 e 19 controlam o sentido de rotação dos motores. |
L9110: o que diz o datasheet?
Antes de olhar para o módulo, vale observar algumas características do próprio CI L9110.
O datasheet especifica:
| Característica | L9110 |
|---|---|
| Alimentação | 2,5 V a 12 V |
| Corrente contínua por canal | 750–800 mA |
| Corrente de pico | 1,5–2,0 A |
| Número de canais | 2 |
| Entradas | TTL/CMOS |
| Diodos de clamp | Integrados |
| Encapsulamento | DIP-8 / SOP-8 |
| Temperatura de operação | 0 °C a 80 °C |
O L9110 também possui os circuitos de controle e acionamento integrados em um único CI.
Isso reduz a quantidade de componentes externos e torna o circuito bastante compacto.
Código.
/*
============================================================
ESP32 + L9110S + 2 MOTORES DC + 2 BOTÕES
============================================================
OBJETIVO:
Controlar dois motores DC utilizando o módulo Ponte H
L9110S e um ESP32.
FUNCIONAMENTO:
Botão GPIO 18 pressionado:
→ Os dois motores giram para frente.
Botão GPIO 19 pressionado:
→ Os dois motores giram para trás.
Nenhum botão pressionado:
→ Os dois motores ficam parados.
NÃO UTILIZA SERIAL MONITOR.
============================================================
*/
// ------------------------ BOTÕES ----------------------------
#define BOTAO_FRENTE 18 // Botão para frente
#define BOTAO_TRAS 19 // Botão para trás
// -------------------- MOTOR A - L9110S -----------------------
#define MOTOR_A_IN1 25 // Entrada 1 do Motor A
#define MOTOR_A_IN2 26 // Entrada 2 do Motor A
// -------------------- MOTOR B - L9110S -----------------------
#define MOTOR_B_IN1 27 // Entrada 1 do Motor B
#define MOTOR_B_IN2 14 // Entrada 2 do Motor B
// ============================================================
// CONFIGURAÇÃO
// ============================================================
void setup() {
pinMode(BOTAO_FRENTE, INPUT_PULLUP); // Botão com resistor interno
pinMode(BOTAO_TRAS, INPUT_PULLUP); // Botão com resistor interno
pinMode(MOTOR_A_IN1, OUTPUT); // Motor A entrada 1
pinMode(MOTOR_A_IN2, OUTPUT); // Motor A entrada 2
pinMode(MOTOR_B_IN1, OUTPUT); // Motor B entrada 1
pinMode(MOTOR_B_IN2, OUTPUT); // Motor B entrada 2
pararMotores(); // Começa com os motores parados
}
// ============================================================
// PROGRAMA PRINCIPAL
// ============================================================
void loop() {
if (digitalRead(BOTAO_FRENTE) == LOW) { // Botão 18 pressionado
motoresFrente(); // Dois motores para frente
}
else if (digitalRead(BOTAO_TRAS) == LOW) { // Botão 19 pressionado
motoresTras(); // Dois motores para trás
}
else {
pararMotores(); // Nenhum botão = parar
}
}
// ============================================================
// DOIS MOTORES PARA FRENTE
// ============================================================
void motoresFrente() {
digitalWrite(MOTOR_A_IN1, HIGH); // Motor A sentido 1
digitalWrite(MOTOR_A_IN2, LOW);
digitalWrite(MOTOR_B_IN1, HIGH); // Motor B sentido 1
digitalWrite(MOTOR_B_IN2, LOW);
}
// ============================================================
// DOIS MOTORES PARA TRÁS
// ============================================================
void motoresTras() {
digitalWrite(MOTOR_A_IN1, LOW); // Motor A sentido 2
digitalWrite(MOTOR_A_IN2, HIGH);
digitalWrite(MOTOR_B_IN1, LOW); // Motor B sentido 2
digitalWrite(MOTOR_B_IN2, HIGH);
}
// ============================================================
// PARAR OS DOIS MOTORES
// ============================================================
void pararMotores() {
digitalWrite(MOTOR_A_IN1, LOW); // Motor A parado
digitalWrite(MOTOR_A_IN2, LOW);
digitalWrite(MOTOR_B_IN1, LOW); // Motor B parado
digitalWrite(MOTOR_B_IN2, LOW);
}
O L9110S é apenas um módulo pequeno?
Não.
Essa é uma questão interessante para quem está começando.
O tamanho físico da placa não determina sozinho a capacidade do circuito.
Dentro do módulo existe um CI responsável pelo acionamento dos motores.
No nosso caso, estamos trabalhando com um circuito da família L9110.
Por isso, quando utilizamos o módulo L9110S, podemos continuar o aprendizado iniciado com o L9110H.
No primeiro projeto:
L9110H → um motor
Agora:
L9110S → dois motores
A eletrônica passa a ficar mais próxima de uma aplicação real.
Mas existem vários outros drivers
Quando começamos a pesquisar módulos para motores, rapidamente encontramos vários modelos.
Entre os mais conhecidos estão:
L9110S
L298N
DRV8833
TB6612FNG
Todos podem ser utilizados para controlar motores DC, mas isso não significa que sejam equivalentes.
Eles possuem diferenças importantes em:
tensão de alimentação;
corrente;
tecnologia dos transistores de saída;
dissipação;
eficiência;
proteção;
tamanho;
controle;
aplicação.
É justamente aí que começa uma parte interessante do aprendizado.
L9110S
O L9110S é uma solução simples e compacta para aplicações de baixa potência.
O próprio L9110 possui faixa de alimentação de 2,5 V a 12 V e aproximadamente 800 mA de corrente contínua por canal, de acordo com o datasheet.
Isso faz com que ele seja interessante para:
pequenos motores DC;
carrinhos;
robôs pequenos;
projetos educacionais;
experiências com Arduino;
projetos com ESP32;
brinquedos e mecanismos simples.
Outro ponto interessante é que suas entradas são compatíveis com níveis TTL/CMOS, permitindo a conexão com circuitos digitais.
Para um projeto didático, isso é bastante conveniente.
L298N
O L298N é provavelmente um dos drivers de motores mais conhecidos entre makers.
Ele possui dois canais e pode controlar dois motores DC.
Uma diferença importante está na faixa de tensão.
O L298 é um driver de alta tensão e a STMicroelectronics especifica alimentação de até 46 V para o circuito. O componente também possui proteção contra sobretemperatura.
Isso explica por que o L298N aparece em projetos que trabalham com tensões muito maiores que aquelas normalmente utilizadas com L9110.
Mas existe uma característica que merece atenção.
O L298 utiliza uma arquitetura bipolar e apresenta uma queda de tensão significativa no estágio de saída.
No datasheet, a queda total especificada é de até 3,2 V a 1 A e pode chegar a 4,9 V a 2 A, nas condições indicadas.
Isso significa que uma parte considerável da energia pode ser dissipada no próprio driver.
Por isso, em projetos de baixa tensão, essa característica pode ser bastante relevante.
DRV8833
O DRV8833, da Texas Instruments, representa uma abordagem mais moderna.
Ele possui dois canais de Ponte H e utiliza MOSFETs de potência na saída.
O fabricante especifica uma faixa de alimentação do motor de 2,7 V a 10,8 V, com corrente de até 1,5 A RMS e 2 A de pico por Ponte H, dependendo do encapsulamento e das condições especificadas.
Além disso, o DRV8833 possui recursos como:
limitação de corrente;
proteção contra sobrecorrente;
proteção contra curto-circuito;
proteção contra subtensão;
proteção térmica;
modo de baixo consumo.
Isso torna o DRV8833 bastante interessante para projetos compactos e alimentados por bateria.
Um detalhe importante:
não devemos dizer simplesmente que o DRV8833 é um driver "de 12 V".
A faixa recomendada especificada pelo fabricante chega a 10,8 V, portanto uma alimentação nominal de 12 V não deve ser tratada como adequada simplesmente porque "está perto".
TB6612FNG
O TB6612FNG, da Toshiba, também utiliza uma arquitetura baseada em MOSFETs e possui dois canais para motores DC.
O fabricante especifica:
alimentação do motor de até 15 V como máximo absoluto;
corrente média de saída de 1,2 A;
corrente de pico de 3,2 A;
proteção térmica;
detecção de baixa tensão;
modo standby;
controle de dois motores DC.
Na prática, é importante diferenciar limite absoluto de condição recomendada de operação.
O fato de o datasheet indicar 15 V como máximo absoluto não significa que devemos projetar o sistema simplesmente em 15 V.
O projeto deve permanecer dentro das condições recomendadas pelo fabricante.
Comparando os quatro
* Os valores de corrente e tensão devem ser interpretados conforme as condições específicas do datasheet, encapsulamento, temperatura e aplicação. Não são valores para serem utilizados automaticamente como corrente contínua disponível em qualquer módulo comercial.
Fontes: datasheets do L9110, STMicroelectronics, Texas Instruments e Toshiba.
Qual deles devo escolher?
Em vez de criar uma regra do tipo "este é melhor", é mais interessante fazer algumas perguntas.
Preciso controlar motores pequenos e quero simplicidade?
O L9110S pode ser uma solução interessante.
Ele possui dois canais, trabalha em baixa tensão e apresenta uma implementação simples.
É exatamente o que vamos explorar neste projeto.
Meu projeto trabalha com bateria e quero eficiência?
Nesse caso, vale olhar para drivers como o DRV8833 e o TB6612FNG.
Eles utilizam MOSFETs no estágio de saída e foram projetados para aplicações de acionamento de motores com baixa resistência de condução.
O DRV8833, por exemplo, especifica resistência total de condução dos MOSFETs de aproximadamente 360 mΩ em determinadas condições.
Preciso trabalhar com tensão mais elevada?
Aqui o L298N possui uma característica que os outros drivers desta comparação não possuem na mesma faixa.
O L298 foi projetado para trabalhar com tensão de alimentação muito mais elevada, chegando a 46 V em sua especificação de operação.
Porém, isso não significa que ele seja automaticamente a melhor escolha.
É necessário considerar também a corrente, a queda de tensão e a dissipação.
Por que o L298N pode esquentar?
Esse é um dos pontos mais interessantes para demonstrar na prática.
Imagine que o motor esteja recebendo uma corrente de 1 A.
Se o driver apresentar uma queda de tensão de aproximadamente 3 V no caminho da corrente, temos:
P = V × I
P = 3 × 1
P = 3 W
Esses 3 W não estão indo para o motor.
Estão sendo dissipados no driver, principalmente na forma de calor.
O próprio datasheet do L298 mostra que a queda total pode ser elevada, especialmente com correntes maiores.
É justamente por isso que comparar apenas a "corrente máxima" de cada driver pode levar a uma conclusão errada.
Corrente do motor não é apenas a corrente em funcionamento
Outro ponto importante para quem está começando com motores:
um motor DC pode consumir uma corrente relativamente baixa quando está girando livremente, mas consumir muito mais corrente durante a partida ou quando o eixo é bloqueado.
Por isso, não devemos escolher um driver olhando apenas para o valor de corrente medido com o motor girando sem carga.
É necessário considerar também a corrente de partida e de bloqueio do motor.
Essa análise é particularmente importante para robôs, porque rodas podem travar, o motor pode encontrar resistência ou o robô pode precisar arrancar parado.
E o nosso L9110S?
Para o projeto deste artigo, o objetivo não é colocar o L9110S para competir diretamente com todos os outros drivers.
Queremos aprender utilizando um circuito simples.
O projeto será:
ESP32
↓
L9110S
↓
Motor A + Motor B
Vamos controlar os dois motores individualmente e observar como o módulo se comporta.
Depois disso, podemos utilizar o mesmo conhecimento para entender outros drivers.
A evolução do projeto
Essa sequência de projetos cria uma evolução interessante para quem está acompanhando a série.
Primeiro projeto
Transistores BC337
Aprendemos os fundamentos do acionamento e da inversão do motor.
Segundo projeto
L9110H
Montamos o CI diretamente no protoboard e utilizamos um motor.
Terceiro projeto
L9110S
Utilizamos um módulo pronto e passamos a controlar dois motores.
Conclusão
O módulo L9110S é uma continuação natural do projeto que fizemos anteriormente com o L9110H.
No primeiro experimento, trabalhamos diretamente com o CI e um motor.
Agora utilizamos os dois canais do L9110 para controlar dois motores DC.
A partir daí, podemos comparar o L9110S com outros drivers bastante conhecidos.
O L298N se destaca pela capacidade de trabalhar com tensões muito mais elevadas, mas apresenta uma queda de tensão significativa no estágio de saída.
O DRV8833 é direcionado para uma faixa de tensão mais baixa e possui MOSFETs e diversos recursos de proteção e controle de corrente.
O TB6612FNG também utiliza MOSFETs, possui dois canais e recursos como proteção térmica e modo standby.
Já o L9110 apresenta uma solução simples, com dois canais, alimentação de 2,5 V a 12 V e aproximadamente 800 mA de corrente contínua por canal segundo seu datasheet.
Portanto, a pergunta mais importante não é:
"Qual módulo é o melhor?"
A pergunta correta é:
"Qual driver possui características adequadas para o meu motor e para a alimentação do meu projeto?"
É essa mudança de pensamento que transforma um simples projeto Maker em aprendizado de eletrônica.
E agora, com o L9110S, vamos colocar esse conhecimento em prática controlando dois motores com o ESP32.
🔧 Acompanhe o RodRobot
Projetos maker com ESP32, Arduino, eletrônica e programação.
RodRobot – Projetos maker, eletrônica e programação na prática.



Comentários
Postar um comentário