Componente · Driver
Driver de motor L298N
O L298N é uma ponte H dupla que aciona dois motores CC para frente e para trás. Entenda seu funcionamento, a conexão e os limites reais do driver.
O que é
O L298N é um driver de motor com ponte H dupla—a força muscular entre os pinos lógicos delicados de um microcontrolador e um motor que exige muito mais corrente do que esses pinos podem fornecer. Um pino do microcontrolador pode fornecer apenas algumas dezenas de miliamperes; até um pequeno motorredutor CC consome centenas. O L298N recebe da placa sinais de direção e velocidade de baixa potência e comuta uma alimentação separada dos motores, com capacidade de corrente maior, de acordo com eles. Ele aciona dois motores de forma independente, exatamente o que um robô de duas rodas precisa.
Ele é antigo—um driver MOSFET eficiente, como o TB6612FNG ou o DRV8833, dissipa menos calor e desperdiça menos tensão—mas o L298N está em todo lugar, é barato, robusto e é o módulo que acompanha a maioria dos kits de robótica; portanto, vale conhecê-lo bem.
Como funciona uma ponte H
Uma ponte H é formada por quatro chaves dispostas ao redor do motor em forma de “H”. Feche as chaves superior esquerda e inferior direita e a corrente percorre o motor em um sentido—ele avança. Feche o par oposto e a corrente inverte—o motor dá ré. Esse é todo o truque: uma ponte H permite inverter um motor sem reconectá-lo.
Você controla cada motor com três sinais:
- Dois pinos de direção (IN1/IN2) selecionam avanço, ré ou frenagem.
- Um pino de habilitação (ENA), alimentado por um sinal de PWM, define a velocidade ligando e desligando a ponte rapidamente. PWM totalmente ligado corresponde à velocidade máxima; 50% de ciclo de trabalho corresponde a aproximadamente metade.
Alimente o pino de habilitação com a saída de uma malha de controle e poderá manter uma velocidade-alvo ou conduzir o robô suavemente, em vez de alternar entre parada e velocidade máxima.
Quando usar
Use um L298N—ou qualquer ponte H—sempre que um microcontrolador precisar acionar um motor CC com escovas, o que ocorre em praticamente todo robô com rodas. Seus 2 A por canal atendem confortavelmente aos pequenos motorredutores amarelos usados em seguidores de linha e rovers.
Escolha um driver baseado em MOSFET quando a eficiência e a autonomia da bateria forem importantes, quando os motores forem pequenos (a queda de tensão do L298N desperdiça muita tensão em um motor de 6 V) ou quando quiser que o driver funcione sem dissipador.
Conexões e armadilhas
- Duas alimentações, uma massa. A bateria dos motores alimenta o pino de alimentação dos motores; 5 V alimentam o lado lógico. As massas devem ser conectadas juntas, ou os sinais de controle ficarão sem referência—uma falha silenciosa clássica.
- Ele perde cerca de 2 V. O estágio de saída BJT mais antigo perde cerca de 2 V antes de o motor receber tensão. Forneça cerca de 8 V a um motor de 6 V para que ele funcione na velocidade máxima.
- Ele aquece. Sob corrente contínua, o chip precisa do dissipador. Se os motores enfraquecerem durante uma execução, verifique a temperatura.
- Cuidado com o jumper do regulador de 5 V integrado. Muitos módulos podem alimentar o lado lógico pela alimentação dos motores—uma solução prática, mas apenas até cerca de 12 V. Acima disso, remova o jumper e forneça 5 V separadamente, ou o regulador queimará.
Pinagem
O módulo L298N vermelho que todos conhecem tem três blocos de terminais e dois conectores de pinos.
| Grupo | Marcação | O que faz |
|---|---|---|
| Alimentação | +12V |
Alimentação dos motores, 5–35 V. O nome engana—é a tensão que seus motores quiserem |
| Alimentação | GND |
Massa. Deve ser compartilhada com o microcontrolador |
| Alimentação | +5V |
Saída quando o jumper do regulador está instalado; entrada quando o jumper está removido |
| Motor A | OUT1, OUT2 |
Os dois terminais do motor do canal A |
| Motor B | OUT3, OUT4 |
Os dois terminais do motor do canal B |
| Controle | ENA |
Habilitação do canal A. Preso em HIGH por padrão—remova o jumper para usar PWM |
| Controle | IN1, IN2 |
Direção do canal A |
| Controle | IN3, IN4 |
Direção do canal B |
| Controle | ENB |
Habilitação do canal B. Mesmo jumper |
Os dois pequenos jumpers em ENA e ENB são a razão pela qual tantas primeiras tentativas têm controle de direção, mas não de velocidade: enquanto estiverem instalados, o canal fica permanentemente habilitado e o PWM não faz nada. Remova-os e conecte esses pinos a saídas com capacidade PWM.
O terceiro jumper, ao lado do bloco de alimentação, habilita o regulador de 5 V integrado.
A tabela-verdade
Três sinais por motor e seis combinações significativas. Esta tabela constitui toda a interface de controle.
| ENA | IN1 | IN2 | O que o motor A faz | Observações |
|---|---|---|---|---|
| LOW | × | × | Roda livre | As saídas têm alta impedância; o motor gira livremente |
| PWM | HIGH | LOW | Avanço conforme o ciclo | O estado normal de acionamento |
| PWM | LOW | HIGH | Ré conforme o ciclo | |
| HIGH | HIGH | HIGH | Freia | Os dois terminais ligados em HIGH—o motor fica em curto |
| HIGH | LOW | LOW | Freia | Ambos em LOW—o mesmo efeito |
| HIGH | HIGH | LOW | Avanço à velocidade máxima | O que o jumper ENA instalado fornece |
Frenar e rodar livre são realmente diferentes, e essa diferença importa mais do que as pessoas esperam. Rodar livre deixa o robô avançar por inércia; frear provoca o curto-circuito da própria contra-EMF do motor na ponte, converte a energia rotacional em calor e para o motor de forma muito mais abrupta. Um seguidor de linha que ultrapassa todos os cruzamentos costuma estar rodando livre quando deveria frear.
Conexão com um Arduino
| L298N | Arduino Uno | Observação |
|---|---|---|
ENA |
Pino 9 | Precisa ter capacidade PWM (3, 5, 6, 9, 10, 11 em um Uno) |
IN1 |
Pino 8 | Qualquer pino digital |
IN2 |
Pino 7 | Qualquer pino digital |
IN3 |
Pino 5 | Qualquer pino digital |
IN4 |
Pino 4 | Qualquer pino digital |
ENB |
Pino 3 | Precisa ter capacidade PWM |
GND |
GND | A conexão da qual tudo depende |
+12V |
+ da bateria dos motores | Não use o Vin do Arduino |
+5V |
— | Somente se você estiver alimentando o Arduino a partir do L298N |
O jumper do regulador de 5 V, decidido corretamente
| Jumper | O pino +5V é |
Use quando |
|---|---|---|
| Instalado | Uma saída—o regulador integrado produz 5 V a partir da alimentação dos motores | A alimentação dos motores é de 7–12 V e você quer usar uma única bateria para tudo |
| Removido | Uma entrada—você deve fornecer 5 V | A alimentação dos motores está acima de 12 V ou abaixo de cerca de 7 V |
Acima de aproximadamente 12 V, o regulador linear precisa dissipar a diferença como calor e queimará. Abaixo de cerca de 7 V, ele não consegue manter 5 V, e a lógica sofre queda de tensão à medida que os motores carregam o conjunto. As duas falhas se manifestam como reinícios aleatórios.
Código mínimo funcional
const int ENA = 9, IN1 = 8, IN2 = 7;
const int ENB = 3, IN3 = 5, IN4 = 4;
void setup() {
for (int p : {ENA, IN1, IN2, ENB, IN3, IN4}) pinMode(p, OUTPUT);
}
// speed: -255..255. Negative is reverse, 0 coasts.
void driveA(int speed) {
digitalWrite(IN1, speed > 0);
digitalWrite(IN2, speed < 0);
analogWrite(ENA, abs(constrain(speed, -255, 255)));
}
void brakeA() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
analogWrite(ENA, 255);
}
void loop() {
driveA(180); delay(1500); // forward
brakeA(); delay(500); // stop hard
driveA(-180); delay(1500); // reverse
driveA(0); delay(500); // coast
}
Observe que driveA(0) faz o motor rodar livre, em vez de frear—definir o ciclo de trabalho em zero desabilita a ponte. Se quiser uma parada abrupta, é preciso solicitar uma frenagem.
O problema dos 2 V, quantificado
O estágio de saída do L298N é formado por transistores bipolares, e cada par em condução provoca uma queda de tensão. A folha de dados informa uma queda total de saturação de aproximadamente 1,8 V a 1 A e de até cerca de 2,7 V a 2 A. Essa tensão nunca chega ao motor; transforma-se em calor no chip.
As consequências ficam mais claras quando expressas em números:
| Alimentação dos motores | O que o motor realmente recebe | Fração perdida |
|---|---|---|
| 6 V | ~4 V | 33% |
| 7,4 V (2S íon-lítio) | ~5,4 V | 27% |
| 9 V | ~7 V | 22% |
| 12 V | ~10 V | 17% |
Em um motor de 6 V alimentado com 6 V, um terço da bateria está aquecendo o chip. Essa é toda a razão pela qual o L298N parece fraco em robôs pequenos—e por que um motor de 6 V precisa de cerca de 8 V de alimentação após este driver.
Também é um problema térmico. A 1 A por canal, com os dois motores funcionando, o chip dissipa cerca de 4 W. O pequeno dissipador só dá conta disso com ventilação, e um travamento com limite de corrente o levará ao desligamento térmico—o que aparece como motores que enfraquecem no meio da execução e se recuperam após uma pausa.
Solução de problemas
| Sintoma | Causa provável | Solução |
|---|---|---|
| Nada se move, mas a ligação parece correta | Não há massa comum | Conecte o GND do L298N ao GND do Arduino—esta é a falha silenciosa clássica |
| A direção funciona, mas a velocidade não | Os jumperes ENA/ENB ainda estão instalados |
Remova-os e conecte os pinos a saídas PWM |
| O controle de velocidade funciona apenas como ligado/desligado | O pino de habilitação não está conectado a um pino compatível com PWM | Use 3, 5, 6, 9, 10 ou 11 em um Uno |
| Os motores ficam fracos e o driver aquece | A queda de ~2 V somada à carga térmica | Aumente a tensão de alimentação ou mude para um driver MOSFET |
| Os motores enfraquecem durante uma execução | Desligamento térmico | Use dissipador e ventilação; reduza a corrente contínua |
| O Arduino reinicia quando os motores começam | A alimentação compartilhada sofre queda de tensão | Use uma bateria separada para os motores; somente a massa é comum |
| O regulador fica muito quente | A alimentação dos motores está acima de ~12 V com o jumper instalado | Remova o jumper e forneça 5 V separadamente |
| Um motor gira ao contrário | Os fios do motor estão invertidos | Troque OUT1/OUT2—ou corrija em software, o que é maisorganizado |
| Os dois motores falham juntos | A alimentação dos motores não fornece a corrente de travamento | Use um conjunto maior; verifique a resistência interna |
L298N ou TB6612FNG?
| L298N | TB6612FNG | |
|---|---|---|
| Estágio de saída | Bipolar | MOSFET |
| Queda de tensão | ~1,8–2,7 V | ~0,5 V no total |
| Corrente contínua | 2 A por canal (com dissipador) | 1,2 A por canal |
| Corrente de pico | 3 A | 3,2 A |
| Alimentação dos motores | 5–35 V | 2,5–13,5 V |
| Dissipação de calor | Precisa de dissipador | Dissipa pouco calor |
| Tamanho e peso | Módulo grande | Do tamanho de um selo postal |
| Pinos de controle | 2 pinos de direção + 1 PWM por motor | Os mesmos, mais um pino compartilhado de repouso |
Escolha o TB6612FNG para praticamente qualquer robô pequeno: dois motorredutores amarelos, um seguidor de linha, um solucionador de labirinto. A diferença de eficiência não é marginal—em um sistema de 6 V, ela representa um terço da potência da bateria.
Escolha o L298N quando a tensão de alimentação dos motores exceder 13,5 V, quando precisar de mais de cerca de 1,2 A continuamente por canal ou quando ele simplesmente veio no kit. É robusto, tolera abuso e compreendê-lo ensina a ponte H de verdade.
Para projetos mais novos, também vale conhecer o DRV8833 (semelhante ao TB6612FNG, com limitação de corrente) e o BTS7960 (43 A, para motores realmente grandes).
Explore o grafo
Usado nestas montagens
Projetos, caminhos de aprendizagem e simuladores que incluem Driver de motor L298N.
- ProjetoConstrua um carro-robô para celular via Bluetooth ou Wi-Fi
- ProjetoConstrua um robô com desvio de obstáculos
- ProjetoConstrua um robô seguidor de linha com um microcontrolador 8051
- ProjetoConstrua um robô seguidor de linha: do simulador à pista real
- Caminho de aprendizagemControle de motores para robôs: roteiro de aprendizagem
Comparar
Alternativas
Perguntas
Perguntas frequentes sobre Driver de motor L298N
O que é o driver de motor L298N?
O L298N é um módulo de driver de motor com ponte H dupla. Ele fica entre um microcontrolador e os motores, recebe sinais de direção e velocidade de baixa potência e comuta uma alimentação separada, com capacidade de corrente maior, para acionar dois motores CC (ou um motor de passo) de forma independente.
Para que serve o L298N?
Ele permite que um microcontrolador como o Arduino acione motores dos quais jamais poderia fornecer potência diretamente. Um pino do microcontrolador fornece apenas dezenas de miliamperes, enquanto até um pequeno motorredutor precisa de centenas; portanto, o L298N fornece a força—avanço, ré e controle de velocidade—para robôs com rodas.
Como conecto um L298N a um Arduino?
Conecte a bateria dos motores à alimentação de motores do L298N, una a massa do L298N à massa do Arduino (essa massa compartilhada é essencial), conecte cada motor aos terminais OUT e leve os pinos de direção IN1/IN2 e os pinos de habilitação ENA/ENB aos pinos digitais e PWM do Arduino.
Como controle a velocidade dos motores com o L298N?
Aplique um sinal PWM ao pino de habilitação (ENA ou ENB), em vez de mantê-lo em HIGH. O ciclo de trabalho do PWM liga e desliga a ponte H rapidamente, e o motor responde à média—portanto, 50% de ciclo de trabalho significa aproximadamente metade da velocidade. Os pinos de direção definem avanço ou ré.
Por que meu motor funciona devagar no L298N?
O estágio de saída de transistores mais antigos do L298N perde cerca de 2 V antes de o motor receber tensão. Um motor de 6 V em uma fonte de 6 V parecerá fraco; forneça cerca de 8 V ou mude para um driver MOSFET eficiente, como o TB6612FNG, para motores pequenos.
Leitura complementar