Bauteil · Treiber
L298N Motortreiber
Der L298N ist die Doppel-H-Brücke, mit der ein Mikrocontroller zwei DC-Motoren vorwärts und rückwärts antreibt. Funktionsweise, Verdrahtung, echte Grenzen.
Was es ist
Der L298N ist ein Doppel-H-Brücken-Motortreiber – die Kraft zwischen den empfindlichen Logikpins eines Mikrocontrollers und einem Motor, der weit mehr Strom will, als diese Pins liefern können. Ein Mikrocontrollerpin treibt nur wenige Dutzend Milliampere; selbst ein kleiner DC-Getriebemotor zieht Hunderte. Der L298N nimmt leistungsschwache Richtungs- und Drehzahlsignale vom Board und schaltet eine separate, stärkere Motorversorgung passend dazu. Er treibt zwei Motoren unabhängig an – genau das, was ein zweirädriger Roboter braucht.
Er ist betagt – ein effizienter MOSFET-Treiber wie TB6612FNG oder DRV8833 läuft kühler und verschwendet weniger Spannung –, aber der L298N ist überall, billig, robust, und das Modul, das den meisten Robotiksets beiliegt – also lohnt es sich, ihn gut zu verstehen.
Wie eine H-Brücke funktioniert
Eine H-Brücke sind vier Schalter, angeordnet um den Motor in einem „H“. Die Schalter oben links und unten rechts schließen, und Strom fließt in eine Richtung – der Motor dreht vorwärts. Das gegenläufige Paar schließen, und Strom kehrt um – der Motor dreht rückwärts. Das ist der ganze Trick: Eine H-Brücke lässt einen Motor umkehren, ohne ihn umzuverdrahten.
Jeder Motor wird mit drei Signalen gesteuert:
- Zwei Richtungspins (IN1/IN2) wählen vorwärts, rückwärts oder Bremse.
- Ein Enable-Pin (ENA) mit PWM-Signal setzt die Drehzahl, indem er die Brücke schnell ein- und ausschaltet. Voll-ein-PWM ist volle Drehzahl; 50 % Tastverhältnis grob die Hälfte.
Den Enable-Pin mit dem Ausgang einer Regelschleife speisen, und man kann eine Solldrehzahl halten oder einen Roboter weich lenken statt zwischen Stopp und Vollgas zu rucken.
Wann man ihn verwendet
Zum L298N – oder irgendeiner H-Brücke – greifen, wann immer ein Mikrocontroller einen bürstenbehafteten DC-Motor antreiben muss, was fast jeder Radroboter ist. Seine 2 A pro Kanal handhaben die kleinen gelben Getriebemotoren in Linienfolgern und Rovern bequem.
Einen MOSFET-basierten Treiber wählen, wenn Wirkungsgrad und Akkulaufzeit zählen, wenn die Motoren klein sind (der Spannungsabfall des L298N verschwendet viel an einem 6-V-Motor), oder wenn der Treiber ohne Kühlkörper kühl laufen soll.
Verdrahtung und Fallstricke
- Zwei Versorgungen, eine Masse. Die Motorbatterie speist den Motorversorgungspin; 5-V-Logik speist die Logikseite. Ihre Massen müssen verbunden sein, sonst haben die Steuersignale keine Referenz – ein klassischer lautloser Fehler.
- Er stiehlt ~2 V. Die ältere BJT-Ausgangsstufe verliert grob 2 V, bevor der Motor etwas sieht. Einem 6-V-Motor etwa 8 V Versorgung geben, damit er voll läuft.
- Er wird heiß. Bei Dauerstrom braucht der Chip seinen Kühlkörper. Werden Motoren während einer Fahrt schwächer, die Temperatur prüfen.
- Auf den 5-V-Regler-Jumper achten. Viele Module können die Logikseite aus der Motorversorgung speisen – praktisch, aber nur bis ~12 V Eingang. Darüber den Jumper abziehen und 5 V separat einspeisen, sonst grillt man den Regler.
Pinbelegung
Das rote L298N-Modul, das alle meinen, hat drei Klemmblöcke und zwei Stiftleisten.
| Gruppe | Kennzeichnung | Was sie tut |
|---|---|---|
| Versorgung | +12V |
Motorversorgung, 5–35 V. Der Name täuscht – es ist, was deine Motoren wollen |
| Versorgung | GND |
Masse. Muss mit dem Mikrocontroller geteilt werden |
| Versorgung | +5V |
Ausgang bei gestecktem Reglerjumper; Eingang bei abgezogenem |
| Motor A | OUT1, OUT2 |
Die beiden Motorklemmen für Kanal A |
| Motor B | OUT3, OUT4 |
Die beiden Motorklemmen für Kanal B |
| Steuerung | ENA |
Kanal-A-Enable. Standardmäßig per Jumper high – Jumper abziehen, um PWM zu geben |
| Steuerung | IN1, IN2 |
Kanal-A-Richtung |
| Steuerung | IN3, IN4 |
Kanal-B-Richtung |
| Steuerung | ENB |
Kanal-B-Enable. Derselbe Jumper |
Die zwei kleinen Jumper auf ENA und ENB sind der Grund, warum so viele erste Versuche Richtungssteuerung, aber keine Drehzahlsteuerung haben: Solange sie stecken, ist der Kanal dauerhaft freigegeben und PWM bewirkt nichts. Abziehen und diese Pins an PWM-fähige Ausgänge verdrahten.
Der dritte Jumper neben dem Versorgungsblock schaltet den 5-V-Bordregler ein.
Die Wahrheitstabelle
Drei Signale pro Motor und sechs sinnvolle Kombinationen. Diese Tabelle ist die gesamte Steuerschnittstelle.
| ENA | IN1 | IN2 | Motor A tut | Hinweise |
|---|---|---|---|---|
| LOW | × | × | Rollt aus | Ausgänge hochohmig; der Motor läuft frei |
| PWM | HIGH | LOW | Vorwärts mit Tastverhältnis | Der normale Fahrzustand |
| PWM | LOW | HIGH | Rückwärts mit Tastverhältnis | |
| HIGH | HIGH | HIGH | Bremst | Beide Klemmen high gelegt – der Motor schließt sich über sich selbst kurz |
| HIGH | LOW | LOW | Bremst | Beide low gelegt – derselbe Effekt |
| HIGH | HIGH | LOW | Volle Drehzahl vorwärts | Was der gesteckte ENA-Jumper liefert |
Bremse und Ausrollen sind wirklich verschieden, und der Unterschied zählt mehr als Leute erwarten. Ausrollen lässt den Roboter weiterrollen; Bremsen schließt die Gegen-EMK des Motors über die Brücke kurz, was die Rotationsenergie als Wärme abführt und ihn weit schärfer stoppt. Ein Linienfolger, der jede Kreuzung überschießt, rollt oft aus, wo er bremsen sollte.
An einen Arduino verdrahten
| L298N | Arduino Uno | Hinweis |
|---|---|---|
ENA |
Pin 9 | Muss PWM-fähig sein (3, 5, 6, 9, 10, 11 am Uno) |
IN1 |
Pin 8 | Beliebiger Digitalpin |
IN2 |
Pin 7 | Beliebiger Digitalpin |
IN3 |
Pin 5 | Beliebiger Digitalpin |
IN4 |
Pin 4 | Beliebiger Digitalpin |
ENB |
Pin 3 | Muss PWM-fähig sein |
GND |
GND | Die Verbindung, von der alles abhängt |
+12V |
Motorbatterie + | Nicht das Vin des Arduino |
+5V |
— | Nur wenn man den Arduino vom L298N versorgt |
Den 5-V-Regler-Jumper sauber entscheiden
| Jumper | +5V-Pin ist |
Verwenden wenn |
|---|---|---|
| Gesteckt | Ein Ausgang – der Bordregler erzeugt 5 V aus der Motorversorgung | Motorversorgung 7–12 V und eine Batterie für alles gewünscht ist |
| Abgezogen | Ein Eingang – 5 V müssen eingespeist werden | Motorversorgung über 12 V oder unter etwa 7 V |
Über grob 12 V muss der Linearregler die Differenz als Wärme verbrennen und grillt. Unter etwa 7 V kann er 5 V nicht halten, und die Logik setzt bei Motorlast auf dem Pack aus. Beide Fehler sehen aus wie zufällige Resets.
Minimal funktionierender Code
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
}
Beachte: driveA(0) rollt aus statt zu bremsen – Tastverhältnis null schaltet die Brücke ab. Für harten Stopp muss man einen verlangen.
Das 2-V-Problem in Zahlen
Die Ausgangsstufe des L298N baut auf Bipolartransistoren, und jedes leitende Paar verliert Spannung. Das Datenblatt nennt eine Sättigungsgesamtspannung von grob 1,8 V bei 1 A bis etwa 2,7 V bei 2 A. Diese Spannung erreicht den Motor nie; sie wird Wärme im Chip.
Die Folgen lohnen sich als Zahlen:
| Motorversorgung | Motor sieht tatsächlich | Anteil verloren |
|---|---|---|
| 6 V | ~4 V | 33 % |
| 7,4 V (2S-Li-Ion) | ~5,4 V | 27 % |
| 9 V | ~7 V | 22 % |
| 12 V | ~10 V | 17 % |
Bei einem 6-V-Motor an 6 V heizt ein Drittel der Batterie einen Chip. Das ist der ganze Grund, warum sich der L298N an kleinen Robotern schwach anfühlt – und warum ein 6-V-Motor hinter diesem Treiber grob 8 V Versorgung will.
Es ist auch ein thermisches Problem. Bei 1 A pro Kanal mit beiden laufenden Motoren verheizt der Chip rund 4 W. Der kleine Kühlkörper schafft das nur mit Luftstrom, und ein strombegrenzter Blockierzustand treibt ihn in thermische Abschaltung – was sich als Motoren zeigt, die mitten in der Fahrt verblassen und nach einer Pause zurückkommen.
Fehlersuche
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Nichts bewegt sich, Verdrahtung sieht gut aus | Keine gemeinsame Masse | L298N-GND mit Arduino-GND verbinden – der klassische lautlose Fehler |
| Richtung geht, Drehzahl nicht | ENA/ENB-Jumper noch gesteckt |
Abziehen und Pins an PWM-Ausgänge verdrahten |
| Drehzahlsteuerung nur an/aus | Enable-Pin an keinem PWM-fähigen Pin | 3, 5, 6, 9, 10 oder 11 am Uno verwenden |
| Motoren schwach, Treiber heiß | ~2-V-Abfall plus thermische Last | Versorgung erhöhen oder zu MOSFET-Treiber wechseln |
| Motoren verblassen während einer Fahrt | Thermische Abschaltung | Kühlkörper und Luftstrom; Dauerstrom senken |
| Arduino setzt bei Motoranlauf zurück | Gemeinsame Versorgung bricht ein | Separate Motorbatterie; nur Masse gemeinsam |
| Regler wird sehr heiß | Motorversorgung über ~12 V bei gestecktem Jumper | Jumper abziehen und 5 V separat einspeisen |
| Ein Motor läuft rückwärts | Motorleitungen vertauscht | OUT1/OUT2 tauschen – oder per Software richten, was sauberer ist |
| Beide Motoren stottern gemeinsam | Motorversorgung schafft Blockierstrom nicht | Größerer Pack; seinen Innenwiderstand prüfen |
L298N oder TB6612FNG?
| L298N | TB6612FNG | |
|---|---|---|
| Ausgangsstufe | Bipolar | MOSFET |
| Spannungsabfall | ~1,8–2,7 V | ~0,5 V gesamt |
| Dauerstrom | 2 A pro Kanal (mit Kühlung) | 1,2 A pro Kanal |
| Spitzenstrom | 3 A | 3,2 A |
| Motorversorgung | 5–35 V | 2,5–13,5 V |
| Wärme | Braucht den Kühlkörper | Läuft kühl |
| Größe und Gewicht | Großes Modul | Briefmarke |
| Steuerpins | 2 Richtung + 1 PWM pro Motor | Gleich, plus ein gemeinsamer Standby-Pin |
Den TB6612FNG wählen für im Wesentlichen jeden kleinen Roboter: zwei gelbe Getriebemotoren, einen Linienfolger, einen Labyrinthlöser. Der Wirkungsgradunterschied ist nicht marginal – in einem 6-V-System ist er ein Drittel deiner Batterie.
Den L298N wählen, wenn die Motorversorgung 13,5 V übersteigt, wenn dauerhaft mehr als etwa 1,2 A pro Kanal nötig sind, oder wenn er schlicht im Set lag. Er ist robust, missbrauchstolerant, und ihn zu verstehen lehrt die H-Brücke richtig.
Für neuere Entwürfe ebenfalls wissenswert: der DRV8833 (ähnlich TB6612FNG, mit Strombegrenzung) und der BTS7960 (43 A, für wirklich große Motoren).
Den Graphen erkunden
Verwendet in diesen Bauprojekten
Projekte, Lernpfade und Simulatoren, die L298N Motortreiber verwenden.
Vergleich
Alternativen
Fragen
FAQ zu L298N Motortreiber
Was ist der L298N-Motortreiber?
Der L298N ist ein Doppel-H-Brücken-Motortreibermodul. Er sitzt zwischen Mikrocontroller und Motoren, nimmt leistungsschwache Richtungs- und Drehzahlsignale entgegen und schaltet eine separate, stärkere Versorgung, um zwei DC-Motoren (oder einen Schrittmotor) unabhängig anzutreiben.
Wofür wird der L298N verwendet?
Er lässt einen Mikrocontroller wie einen Arduino Motoren antreiben, die er direkt nie versorgen könnte. Ein Mikrocontrollerpin liefert nur Dutzende Milliampere, während selbst ein kleiner Getriebemotor Hunderte braucht – der L298N liefert also die Kraft – vorwärts, rückwärts und Drehzahlregelung – für Radroboter.
Wie schließt man einen L298N an einen Arduino an?
Die Motorbatterie an die Motorversorgung des L298N anschließen, die L298N-Masse mit der Arduino-Masse verbinden (diese gemeinsame Masse ist wesentlich), jeden Motor an die OUT-Klemmen anschließen und die Richtungspins IN1/IN2 plus die Enable-Pins ENA/ENB zu digitalen und PWM-Pins des Arduino führen.
Wie steuert man mit dem L298N die Motordrehzahl?
Ein PWM-Signal auf den Enable-Pin (ENA oder ENB) geben, statt ihn HIGH zu halten. Das PWM-Tastverhältnis schaltet die H-Brücke schnell ein und aus, und der Motor antwortet auf den Mittelwert – 50 % Tastverhältnis ist also grob halbe Drehzahl. Die Richtungspins setzen vorwärts oder rückwärts.
Warum läuft mein Motor am L298N langsam?
Die ältere Transistorausgangsstufe des L298N verliert grob 2 V, bevor der Motor etwas sieht. Ein 6-V-Motor an 6-V-Versorgung wirkt schwach; etwa 8 V Versorgung geben oder für kleine Motoren zu einem effizienten MOSFET-Treiber wie dem TB6612FNG wechseln.
Weiterführende Literatur