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.

Esquema de uma ponte H: quatro chaves ao redor de um motor CC, entre um trilho positivo de alimentação e a massa. Fechar as chaves superior esquerda e inferior direita faz a corrente percorrer o motor em um sentido, produzindo avanço; o par oposto inverte esse sentido.
Uma ponte H é formada por quatro chaves ao redor do motor. Feche S1 e S4 para avançar e S2 e S3 para dar ré—o L298N faz isso em dois motores ao mesmo tempo. Baixar SVG

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.

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

Referências