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.

H-Brücken-Schaltbild: vier Schalter um einen DC-Motor zwischen positiver Versorgungsschiene und Masse. Schließen der Schalter oben links und unten rechts schickt Strom in eine Richtung durch den Motor für vorwärts; das gegenläufige Paar kehrt ihn um.
Eine H-Brücke sind vier Schalter um den Motor. S1 und S4 schließen für vorwärts, S2 und S3 für rückwärts – der L298N tut das für zwei Motoren zugleich. SVG herunterladen

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

Quellen