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.
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.
- ProjetConstruire un robot éviteur d'obstacles : capter, balayer
- ProjetConstruire un robot piloté au téléphone en Bluetooth ou Wi-Fi
- ProjetConstruire un robot suiveur de ligne avec un microcontrôleur 8051
- ProjetConstruire un suiveur de ligne : du simulateur à la piste
- Parcours d'apprentissageCommande des moteurs pour robots : un parcours d'apprentissage
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