Composant · Pilote

L298N Motor Driver

Le L298N est le double pont en H qui permet de piloter deux moteurs CC en avant et en arrière. Fonctionnement, câblage et ses vraies limites.

Présentation

Le L298N est un contrôleur de moteurs à double pont en H — le muscle entre les délicates broches logiques d’un microcontrôleur et un moteur qui veut bien plus de courant que ces broches ne peuvent fournir. Une broche de microcontrôleur ne peut fournir que quelques dizaines de milliampères ; même un petit motoréducteur à courant continu tire des centaines. Le L298N prend des signaux de sens et de vitesse faible puissance depuis la carte et commute une alimentation moteur séparée à plus fort courant pour suivre. Il pilote deux moteurs indépendamment, soit exactement ce qu’il faut à un robot à deux roues.

Il est daté — un contrôleur MOSFET efficace comme un TB6612FNG ou un DRV8833 chauffe moins et gaspille moins de tension — mais le L298N est partout, économique, robuste, et c’est le module livré avec la plupart des kits de robotique ; il vaut donc la peine d’être bien compris.

Schéma de pont en H : quatre interrupteurs autour d'un moteur à courant continu entre un rail d'alimentation positif et la masse. Fermer les interrupteurs haut-gauche et bas-droit envoie le courant dans un sens dans le moteur pour l'avant ; la paire opposée l'inverse.
Un pont en H, ce sont quatre interrupteurs autour du moteur. Fermez S1 et S4 pour l'avant, S2 et S3 pour l'arrière — le L298N fait cela pour deux moteurs à la fois. Télécharger le SVG

Comment marche un pont en H

Un pont en H, ce sont quatre interrupteurs disposés autour du moteur en « H ». Fermez les interrupteurs haut-gauche et bas-droit et le courant passe dans un sens — le moteur tourne en avant. Fermez la paire opposée et le courant s’inverse — le moteur tourne en arrière. C’est toute l’astuce : un pont en H permet d’inverser un moteur sans le recâbler.

Vous commandez chaque moteur avec trois signaux :

  • Deux broches de sens (IN1/IN2) choisissent avant, arrière ou frein.
  • Une broche de validation (ENA), alimentée par un signal PWM, fixe la vitesse en commutant le pont rapidement. Un PWM à fond est la pleine vitesse ; un rapport de 50 % vaut à peu près la moitié.

Envoyez à la broche de validation la sortie d’une boucle de commande et vous pouvez tenir une vitesse cible ou braquer un robot doucement au lieu de cahoter entre arrêt et plein régime.

Quand l’utiliser

Prenez un L298N — ou tout pont en H — chaque fois qu’un microcontrôleur doit piloter un moteur à courant continu à balais, soit presque tout robot à roues. Ses 2 A par canal gèrent confortablement les petits motoréducteurs jaunes des suiveurs de ligne et rovers.

Choisissez plutôt un contrôleur à MOSFET quand le rendement et l’autonomie comptent, quand vos moteurs sont petits (la chute de tension du L298N gaspille beaucoup sur un moteur 6 V), ou quand vous voulez que le contrôleur reste froid sans dissipateur.

Câblage et pièges

  • Deux alimentations, une masse. La batterie des moteurs alimente la broche d’alimentation moteur ; du 5 V logique alimente le côté logique. Leurs masses doivent être reliées ou les signaux de commande n’ont pas de référence — un échec silencieux classique.
  • Il vole ~2 V. L’étage de sortie bipolaire, plus ancien, chute d’environ 2 V avant que le moteur ne voie quoi que ce soit. Donnez environ 8 V d’alimentation à un moteur 6 V pour tourner à pleine vitesse.
  • Il chauffe. À courant soutenu, la puce a besoin de son dissipateur. Si les moteurs faiblissent pendant un parcours, vérifiez la température.
  • Attention au cavalier du régulateur 5 V embarqué. Beaucoup de modules peuvent alimenter le côté logique depuis l’alimentation moteur — pratique, mais seulement jusqu’à ~12 V en entrée. Au-delà, retirez le cavalier et fournissez du 5 V séparément ou vous grillerez le régulateur.

Brochage

Le module L298N rouge que tout le monde connaît a trois borniers et deux barrettes de broches.

Groupe Marquage Rôle
Alimentation +12V Alimentation moteur, 5–35 V. Le nom est trompeur — c’est ce que veulent vos moteurs
Alimentation GND Masse. Doit être commune avec le microcontrôleur
Alimentation +5V Sortie quand le cavalier du régulateur est en place ; entrée quand il est retiré
Moteur A OUT1, OUT2 Les deux bornes moteur du canal A
Moteur B OUT3, OUT4 Les deux bornes moteur du canal B
Commande ENA Validation du canal A. Cavalier au haut par défaut — retirez-le pour le moduler en PWM
Commande IN1, IN2 Sens du canal A
Commande IN3, IN4 Sens du canal B
Commande ENB Validation du canal B. Même cavalier

Les deux petits cavaliers sur ENA et ENB sont la raison de tant de premiers essais avec commande de sens mais sans commande de vitesse : tant qu’ils sont en place, le canal est validé en permanence et le PWM ne fait rien. Retirez-les et câblez ces broches vers des sorties capables de PWM.

Le troisième cavalier, près du bornier d’alimentation, active le régulateur 5 V embarqué.

La table de vérité

Trois signaux par moteur, et six combinaisons utiles. Ce tableau est toute l’interface de commande.

ENA IN1 IN2 Le moteur A fait Notes
BAS × × Roue libre Sorties à haute impédance ; le moteur tourne librement
PWM HAUT BAS Avant au rapport L’état de pilotage normal
PWM BAS HAUT Arrière au rapport
HAUT HAUT HAUT Freine Les deux bornes au haut — le moteur se court-circuite sur lui-même
HAUT BAS BAS Freine Les deux au bas — même effet
HAUT HAUT BAS Avant à pleine vitesse Ce que donne le cavalier ENA en place

Frein et roue libre sont vraiment différents, et la différence compte plus qu’on ne croit. En roue libre, le robot continue à rouler ; au frein, la force contre-électromotrice du moteur se court-circuite dans le pont, ce qui dissipe l’énergie de rotation en chaleur et l’arrête bien plus sèchement. Un suiveur de ligne qui dépasse chaque jonction est souvent un robot en roue libre quand il devrait freiner.

Le câbler à un Arduino

L298N Arduino Uno Note
ENA Broche 9 Doit accepter le PWM (3, 5, 6, 9, 10, 11 sur un Uno)
IN1 Broche 8 Toute broche numérique
IN2 Broche 7 Toute broche numérique
IN3 Broche 5 Toute broche numérique
IN4 Broche 4 Toute broche numérique
ENB Broche 3 Doit accepter le PWM
GND GND La connexion dont tout dépend
+12V Batterie moteurs + Pas le Vin de l’Arduino
+5V — Seulement si vous alimentez l’Arduino depuis le L298N

Le cavalier du régulateur 5 V, tranché proprement

Cavalier La broche +5V est À utiliser quand
En place Une sortie — le régulateur embarqué fabrique du 5 V depuis l’alimentation moteur L’alimentation moteur fait 7–12 V et vous voulez une batterie pour tout
Retiré Une entrée — vous devez y amener du 5 V L’alimentation moteur dépasse 12 V, ou est sous environ 7 V

Au-delà d’environ 12 V, le régulateur linéaire doit brûler la différence en chaleur et il grillera. Sous environ 7 V, il ne peut pas tenir le 5 V, et la logique décroche quand les moteurs chargent le pack. Les deux pannes ressemblent à des réinitialisations aléatoires.

Code minimal fonctionnel

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
}

Notez que driveA(0) met en roue libre plutôt que freiner — mettre le rapport à zéro désactive le pont. Si vous voulez un arrêt franc, il faut le demander.

Le problème des 2 V, chiffré

L’étage de sortie du L298N est fait de transistors bipolaires, et chaque paire conductrice chute en tension. La fiche technique donne une chute de saturation totale d’environ 1,8 V à 1 A et jusqu’à environ 2,7 V à 2 A. Cette tension n’atteint jamais le moteur ; elle devient de la chaleur dans la puce.

Les conséquences valent d’être vues en chiffres :

Alimentation moteur Le moteur voit réellement Part perdue
6 V ~4 V 33 %
7,4 V (Li-ion 2S) ~5,4 V 27 %
9 V ~7 V 22 %
12 V ~10 V 17 %

Sur un moteur 6 V alimenté en 6 V, un tiers de votre batterie chauffe une puce. C’est toute la raison pour laquelle le L298N semble faible sur les petits robots — et pourquoi un moteur 6 V veut environ 8 V d’alimentation derrière ce contrôleur.

C’est aussi un problème thermique. À 1 A par canal avec les deux moteurs en route, la puce dissipe environ 4 W. Le petit dissipateur ne gère cela qu’avec de l’air, et un blocage limité en courant la poussera en arrêt thermique — ce qui se présente comme des moteurs qui s’éteignent en cours de parcours et repartent après une pause.

Dépannage

Symptôme Cause probable Solution
Rien ne bouge, le câblage semble bon Pas de masse commune Reliez le GND du L298N au GND de l’Arduino — c’est l’échec silencieux classique
Le sens marche, la vitesse non Cavaliers ENA/ENB encore en place Retirez-les et câblez les broches vers des sorties PWM
La vitesse est tout ou rien La broche de validation n’accepte pas le PWM Utilisez 3, 5, 6, 9, 10 ou 11 sur un Uno
Moteurs faibles, contrôleur chaud La chute ~2 V plus la charge thermique Augmentez l’alimentation, ou passez à un contrôleur MOSFET
Les moteurs s’éteignent en cours de parcours Arrêt thermique Dissipateur et air ; réduisez le courant continu
L’Arduino redémarre au démarrage des moteurs Alimentation commune qui s’affaisse Batterie moteurs séparée ; seule la masse est commune
Le régulateur devient très chaud Alimentation moteur au-delà de ~12 V avec cavalier en place Retirez le cavalier et amenez du 5 V séparément
Un moteur tourne à l’envers Fils moteur inversés Inversez OUT1/OUT2 — ou corrigez en logiciel, plus propre
Les deux moteurs broutent ensemble L’alimentation moteur ne fournit pas le courant de blocage Pack plus gros ; vérifiez sa résistance interne

L298N ou TB6612FNG ?

L298N TB6612FNG
Étage de sortie Bipolaire MOSFET
Chute de tension ~1,8–2,7 V ~0,5 V au total
Courant continu 2 A par canal (avec dissipateur) 1,2 A par canal
Courant de crête 3 A 3,2 A
Alimentation moteur 5–35 V 2,5–13,5 V
Chaleur A besoin du dissipateur Reste froid
Taille et masse Gros module Timbre-poste
Broches de commande 2 sens + 1 PWM par moteur Idem, plus une broche de veille commune

Choisissez le TB6612FNG pour essentiellement tout petit robot : deux motoréducteurs jaunes, un suiveur de ligne, un solveur de labyrinthe. La différence de rendement n’est pas marginale — sur un système 6 V, c’est un tiers de votre batterie.

Choisissez le L298N quand l’alimentation moteur dépasse 13,5 V, quand il faut plus d’environ 1,2 A continus par canal, ou quand c’est simplement ce qui venait dans le kit. Il est robuste, tolérant aux mauvais traitements, et le comprendre enseigne bien le pont en H.

Pour les conceptions récentes, à connaître aussi : le DRV8833 (proche du TB6612FNG, avec limitation de courant) et le BTS7960 (43 A, pour les moteurs vraiment gros).

Explorer le graphe

Utilisé dans ces réalisations

Projets, parcours d'apprentissage et simulateurs qui intègrent le composant L298N Motor Driver.

Comparer

Alternatives

Questions

FAQ : L298N Motor Driver

Qu'est-ce que le contrôleur de moteurs L298N ?

Le L298N est un module contrôleur à double pont en H. Il se place entre un microcontrôleur et vos moteurs, prenant des signaux de sens et de vitesse faible puissance et commutant une alimentation séparée à plus fort courant pour piloter deux moteurs à courant continu (ou un moteur pas à pas) indépendamment.

À quoi sert le L298N ?

Il permet à un microcontrôleur comme un Arduino de piloter des moteurs qu'il ne pourrait jamais alimenter directement. Une broche de microcontrôleur fournit seulement des dizaines de milliampères, alors que même un petit motoréducteur en demande des centaines ; le L298N fournit donc la force — avant, arrière et contrôle de vitesse — pour les robots à roues.

Comment connecter un L298N à un Arduino ?

Câblez la batterie des moteurs à l'alimentation moteur du L298N, reliez la masse du L298N à la masse de l'Arduino (cette masse commune est essentielle), connectez chaque moteur aux bornes OUT, et amenez les broches de sens IN1/IN2 plus les broches de validation ENA/ENB vers des broches numériques et PWM de l'Arduino.

Comment commander la vitesse d'un moteur avec le L298N ?

Envoyez un signal PWM à la broche de validation (ENA ou ENB) au lieu de la maintenir au HAUT. Le rapport cyclique du PWM commute le pont en H rapidement, et le moteur répond à la moyenne — un rapport de 50 % vaut donc à peu près la demi-vitesse. Les broches de sens fixent avant ou arrière.

Pourquoi mon moteur tourne lentement sur le L298N ?

L'étage de sortie à transistors, plus ancien, du L298N chute d'environ 2 V avant que le moteur ne voie quoi que ce soit. Un moteur 6 V sur une alimentation 6 V semblera faible ; donnez-lui environ 8 V d'alimentation, ou passez à un contrôleur MOSFET efficace comme le TB6612FNG pour les petits moteurs.

Pour aller plus loin

Références