L298N Doppelte H-Bruecke Motorsteuerungsmodul
zoom_out_map
chevron_left chevron_right

Produktbilder dienen ausschließlich zu Informationszwecken und können je nach Charge und Lieferant geringfügige Unterschiede aufweisen. Produktspezifikationen und Preise können ohne vorherige Ankündigung geändert werden. Wir tun unser Bestes, um der Produktseite möglichst genaue und richtige Spezifikationen hinzuzufügen, es ist jedoch möglich, dass diese nicht ganz korrekt sind. Sollten Sie einen solchen Fall feststellen, melden Sie ihn uns bitte.

Das Produkt ist für Fachleute bestimmt und erfordert qualifiziertes und autorisiertes Personal. Dem Produkt liegt keine Montage-/Gebrauchsanleitung bei . Die Inbetriebnahme des Produktes durch nicht qualifizierte Personen führt zum Verlust der Garantie gemäß den AGB auf der Seite.

Die angegebenen technischen Spezifikationen (Strom, Leistung usw.) stellen maximale zulässige Werte unter idealen Betriebsbedingungen dar. Für einen sicheren Betrieb und eine optimale Lebensdauer wird empfohlen, das Produkt im Dauerbetrieb mit höchstens 50 % der angegebenen Maximalwerte zu verwenden.

Doppel-H-Brücke L298N, 2 DC-Motoren, 5-35V, 2A pro Kanal

Doppel-H-Brücken-Modul mit dem Schaltkreis L298N zur Steuerung von Richtung und Geschwindigkeit zweier DC-Motoren oder eines bipolaren Schrittmotors. Motorversorgung 5 - 35 VDC, bis zu 2 A pro Kanal, PWM-Eingänge bis 40 kHz, integrierter 5-V-Regler und Kühlkörper auf dem Schaltkreis. Kompatibel mit Arduino und anderen Entwicklungsboards.

14,12 RON Bruttopreis

11,67 RON zzgl. MwSt.

(5/5) aus 11 Gesamtbewertungen
Lies die Bewertungen

Mit dem Kauf dieses Produkts erhalten Sie 0,71 RON an Treuepunkten.

Garantie: 24 Monate für Privatpersonen
INTERNATIONAL DELIVERY
International fast shipping within EU. Free Shipping for orders above 100 EUR in most EU countries.
FAST DISPATCH 24H
We ship from our stock within 24H
TREUEPUNKTE
Sie erhalten bei jeder Bestellung Punkte im Wert von 5 %.

Die Doppel-H-Brücke L298N ist ein Motortreibermodul, das die Richtungs- und Geschwindigkeitssteuerung von zwei Gleichstrommotoren oder eines bipolaren Schrittmotors ermöglicht. Das Modul empfängt logische Signale von einem Mikrocontroller und wandelt sie in Strom für die Motoren um, weshalb es für mobile Roboter, ferngesteuerte Fahrzeuge, Stellmechanismen, einfache 3D-Drucker und andere Mechatronikprojekte geeignet ist.

Der Hauptschaltkreis ist der L298N, eine Doppel-H-Brücke mit zwei unabhängigen Kanälen, von denen jeder bis zu 2 A an den Motor liefern kann. Die Motoren werden mit 5 - 35 VDC versorgt, während der Logikteil mit 5 V arbeitet. Die Richtung jedes Motors wird über zwei Eingänge festgelegt (IN1 und IN2 für Motor A, IN3 und IN4 für Motor B), die Geschwindigkeit wird über ein PWM-Signal an den Freigabeeingängen ENA und ENB eingestellt, mit einer Frequenz von bis zu 40 kHz.

Zu den wichtigsten Merkmalen gehören der auf dem L298N-Schaltkreis montierte Kühlkörper, der 5-V-Regler 78M05 mit Aktivierungsjumper 5V-EN, die Jumper ENA und ENB zur dauerhaften Aktivierung der Kanäle, Schraubklemmen für Motoren und Versorgung, acht Schutzdioden für induktive Lasten, zwei Elektrolytkondensatoren zur Filterung, eine LED-Anzeige und vier Befestigungslöcher. Die Motoren werden an den Klemmen +12V und GND versorgt, und der 5-V-Regler kann auch die Logik der Platine bzw. des Mikrocontrollers speisen, wenn die Versorgungsspannung unter 12 V liegt.

Über die logischen Steuereingänge ist das Modul kompatibel mit Arduino, ESP32, STM32, Raspberry Pi und anderen Entwicklungsboards, die digitale Ausgänge und PWM-Ausgänge besitzen.

 

Spezifikationen:

Versorgungsspannung Motoren: 5 - 35 VDC

Motorstrom: max. 2 A pro Kanal

Treiberschaltkreis: L298N, Doppel-H-Brücke

Anzahl Kanäle: 2

Angesteuerte Motoren: 2 DC-Motoren oder 1 bipolarer Schrittmotor

Logikspannung: 5 V

5-V-Regler: 78M05, aktiviert über den Jumper 5V-EN, für Motorversorgung unter 12 V

Logikpegel Eingänge: LOW maximal 1.5 V, HIGH ab 2.3 V

Maximale PWM-Frequenz: 40 kHz

Schutz: 8 Dioden für induktive Lasten

Anschluss: Schraubklemmen für Motoren und Versorgung, Stiftleisten für Steuersignale

Abmessungen: 43 x 43 x 27 mm

 

Layout:

Element Funktion
Schaltkreis L298N mit Kühlkörper Die Doppel-H-Brücke, die den Strom zu den beiden Motoren schaltet. Der Kühlkörper nimmt die bei hohen Strömen entstehende Wärme auf.
Klemme OUT1 / OUT2 Ausgang für Motor A oder für Spule A eines bipolaren Schrittmotors.
Klemme OUT3 / OUT4 Ausgang für Motor B oder für Spule B eines bipolaren Schrittmotors.
Versorgungsklemme mit 3 Positionen (+12V, GND, +5V) Der Eingang +12V nimmt die Versorgung der Motoren mit 5 - 35 VDC auf, GND ist die gemeinsame Masse, und +5V ist ein 5-V-Ausgang, wenn der Jumper 5V-EN gesteckt ist, und ein 5-V-Eingang für die Logik, wenn der Jumper entfernt ist.
Jumper 5V-EN Gesteckt aktiviert der Regler 78M05, der aus der Motorversorgungsspannung 5 V für die Logik erzeugt, verwendet, wenn diese unter 12 V liegt. Entfernt ist der Regler deaktiviert, und die Logik muss extern mit 5 V über die Klemme +5V versorgt werden.
Regler 78M05 Erzeugt die Spannung von 5 V für den Logikteil des Moduls.
Pins ENA, IN1, IN2, IN3, IN4, ENB Steuereingänge. IN1 und IN2 legen die Richtung von Motor A fest, IN3 und IN4 die Richtung von Motor B, und ENA und ENB aktivieren den jeweiligen Kanal und erhalten das PWM-Signal für die Geschwindigkeit.
Jumper ENA Gesteckt hält Kanal A dauerhaft aktiviert, und Motor A läuft mit maximaler Geschwindigkeit, wenn die Eingänge IN1 und IN2 unterschiedliche Pegel haben. Entfernt werden Aktivierung und Geschwindigkeit von Motor A über den Pin ENA gesteuert.
Jumper ENB Gesteckt hält Kanal B dauerhaft aktiviert, und Motor B läuft mit maximaler Geschwindigkeit, wenn die Eingänge IN3 und IN4 unterschiedliche Pegel haben. Entfernt werden Aktivierung und Geschwindigkeit von Motor B über den Pin ENB gesteuert.
Schutzdioden (8 Stk.) Nehmen die Rückspannung auf, die beim Stoppen oder Umschalten der Drehrichtung von den Motorspulen erzeugt wird, und schützen den Schaltkreis L298N.
Elektrolytkondensatoren 220 uF / 35 V Filtern die Versorgungsspannung der Motoren und die 5-V-Spannung.
LED-Anzeige Leuchtet, wenn die 5-V-Leitung des Moduls versorgt wird.
Befestigungslöcher Befestigung des Moduls am Chassis.

 

Pinout:

Anschluss Pin Funktion
Versorgungsklemme +12V Motorversorgung 5 - 35 VDC
Versorgungsklemme GND Gemeinsame Masse für Motoren und Logik
Versorgungsklemme +5V 5-V-Ausgang bei gestecktem Jumper 5V-EN, 5-V-Eingang für die Logik ohne Jumper
Klemme Motor A OUT1 Ausgang Motor A
Klemme Motor A OUT2 Ausgang Motor A
Klemme Motor B OUT3 Ausgang Motor B
Klemme Motor B OUT4 Ausgang Motor B
Steuerpins ENA Aktivierung Motor A und PWM-Eingang für die Geschwindigkeit
Steuerpins IN1 Richtungseingang Motor A
Steuerpins IN2 Richtungseingang Motor A
Steuerpins IN3 Richtungseingang Motor B
Steuerpins IN4 Richtungseingang Motor B
Steuerpins ENB Aktivierung Motor B und PWM-Eingang für die Geschwindigkeit

 

ENA IN1 IN2 Zustand Motor A
0 X X Aus, freier Lauf
1 1 0 Drehung in eine Richtung
1 0 1 Drehung in die Gegenrichtung

Motor B funktioniert identisch, mit den Pins ENB, IN3 und IN4.

 

Verwendung:

Schließen Sie Motor A an die Klemmen OUT1 und OUT2 an und Motor B an die Klemmen OUT3 und OUT4. Für einen bipolaren Schrittmotor schließen Sie eine Spule an OUT1 und OUT2 an und die andere Spule an OUT3 und OUT4.

Versorgen Sie die Motoren mit 5 - 35 VDC über die Klemmen +12V und GND, unter Beachtung der Polarität. Die am Motor ankommende Spannung ist etwa 2 V niedriger als die Versorgungsspannung, da ein Teil an der H-Brücke abfällt.

Zur Versorgung der Logik des Moduls lassen Sie den Jumper 5V-EN gesteckt, solange die Motorversorgungsspannung unter 12 V liegt. In diesem Fall wird die Klemme +5V zum 5-V-Ausgang, der die Steuerplatine versorgen kann, und die LED-Anzeige leuchtet.

Bei Versorgungsspannungen von 12 V oder mehr entfernen Sie den Jumper 5V-EN und versorgen die Logik mit 5 V über die Klemme +5V.

Legen Sie keine Spannung an die Klemme +5V, solange der Jumper 5V-EN gesteckt ist und der Regler die Logik bereits versorgt.

Verbinden Sie die Masse der Steuerplatine (GND) mit der Klemme GND des Moduls, damit die Steuersignale einen gemeinsamen Bezug haben.

Verbinden Sie die Eingänge IN1, IN2, IN3 und IN4 mit vier digitalen Ausgängen der Steuerplatine und ENA und ENB mit zwei PWM-Ausgängen. Zum Beispiel verwenden Sie beim Arduino Uno ENA an D9, IN1 an D8, IN2 an D7, IN3 an D5, IN4 an D4 und ENB an D3.

Für eine einstellbare Geschwindigkeit entfernen Sie die Jumper ENA und ENB und senden ein PWM-Signal auf diese Eingänge. Mit gesteckten Jumpern laufen die Motoren nur mit maximaler Geschwindigkeit, und die Steuerung beschränkt sich auf Richtung und Stopp.

Legen Sie die Richtung eines Motors fest, indem Sie an einem seiner Eingänge einen HIGH-Pegel und am anderen einen LOW-Pegel anlegen. Durch Umkehren der Pegel ändert sich der Drehsinn.

Setzen Sie nicht beide Eingänge desselben Motors gleichzeitig auf HIGH, zum Beispiel IN1 und IN2 oder IN3 und IN4, da das Modul dabei beschädigt werden kann. Bringen Sie in Programmen zuerst den Eingang, der deaktiviert wird, auf LOW und erst danach den anderen Eingang auf HIGH.

Verwenden Sie beim ersten Einschalten einen kleinen PWM-Wert und erhöhen Sie ihn schrittweise. Wenn sich der Motor nicht dreht, prüfen Sie die Versorgung, die gemeinsame Masse und die Montage der Jumper ENA und ENB. Falls die Drehrichtung der gewünschten entgegengesetzt ist, tauschen Sie die Motorleitungen oder die Pegel an IN1 und IN2 aus.

Bei Strömen nahe 2 A pro Kanal sorgen Sie für Belüftung rund um den Kühlkörper und vermeiden ein Blockieren des Motors, da sich der Schaltkreis erwärmt.

Bei Platinen mit 3.3-V-Logik werden die Steuersignale ab 2.3 V als HIGH-Pegel erkannt, und die Logik wird weiterhin mit 5 V versorgt.

22009
Versorgungsspannung
5-35 V DC
Abmessungen
43 x 43 x 27 mm
Typ
Doppelte H-Brücke
Ausgangsstrom
max. 2 A pro Kanal
Logikspannung
5 V
Schutzfunktionen
8 Dioden für induktive Lasten
Anzahl der Kanäle
2
Integrierter Schaltkreis
L298N

Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.

Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.

Avertismente generale de siguranta:

Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.

Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.

Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.

Nu lasati produsul alimentat nesupravegheat in timpul testelor.

Produsul nu este jucarie si nu este destinat copiilor.

Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.

Identificare produs:

Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.

Producator / Importator / Distribuitor:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Website: www.sigmanortec.ro

Persoana responsabila in UE:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Documentatie si siguranta:

Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [email protected].

/*
  L298N dual H-bridge motor driver test
  Board: Arduino Uno (Tools > Board > Arduino AVR Boards > Arduino Uno)
  Libraries: none needed

  Wiring:
    L298N ENA -> D9 (PWM)    L298N IN1 -> D8    L298N IN2 -> D7
    L298N ENB -> D3 (PWM)    L298N IN3 -> D5    L298N IN4 -> D4
    L298N GND -> Arduino GND and the power supply minus
    L298N +12V -> motor power supply plus (5 - 35 VDC)
    Motor A on OUT1 / OUT2, motor B on OUT3 / OUT4
    Remove the ENA and ENB jumpers so PWM can control the speed
*/

const int ENA = 9;
const int IN1 = 8;
const int IN2 = 7;
const int ENB = 3;
const int IN3 = 5;
const int IN4 = 4;

// Run both motors in the same direction at a given PWM value
void driveBoth(int speed, bool forward) {
  // Set the inactive input LOW first, so both inputs are never HIGH together
  digitalWrite(forward ? IN2 : IN1, LOW);
  digitalWrite(forward ? IN1 : IN2, HIGH);
  digitalWrite(forward ? IN4 : IN3, LOW);
  digitalWrite(forward ? IN3 : IN4, HIGH);
  analogWrite(ENA, speed);
  analogWrite(ENB, speed);
}

// Stop both motors
void stopBoth() {
  analogWrite(ENA, 0);
  analogWrite(ENB, 0);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}

void setup() {
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  Serial.begin(9600);
  Serial.println("L298N test started");
  stopBoth();
}

void loop() {
  Serial.println("Both motors forward, PWM 180");
  driveBoth(180, true);
  delay(2000);

  Serial.println("Both motors stopped");
  stopBoth();
  delay(1000);

  Serial.println("Both motors backward, PWM 180");
  driveBoth(180, false);
  delay(2000);

  Serial.println("Both motors stopped");
  stopBoth();
  delay(2000);
}

Das Doppel-H-Brückenmodul L298N ist ein Treiber für Gleichstrommotoren, aufgebaut um den Schaltkreis L298N. Es kann zwei DC-Motoren unabhängig voneinander in Drehrichtung und Geschwindigkeit steuern oder einen bipolaren Schrittmotor. Man findet es in Rad-Robotern, ferngesteuerten Autos, kleinen Förderbändern und überall dort, wo ein Mikrocontroller einen Motor bewegen muss, der mehr Strom verbraucht, als ein Pin der Platine liefern kann.

In diesem Tutorial verwenden wir einen Arduino Uno R3, denn das Modul braucht einen Mikrocontroller, der ihm die Steuersignale liefert, und die 5-V-Logik der Uno-Platine passt direkt zu den Eingängen des Moduls. Wir steuern zwei TT-Getriebemotoren, die von einem Netzteil mit 9 VDC versorgt werden.

Doppel-H-Brücke L298N

Funktionsweise:

Ein DC-Motor dreht sich je nach Polarität der Spannung an seinen Anschlüssen in die eine oder andere Richtung. Die H-Brücke ist eine Schaltung aus vier Schaltern, mit der sich diese Polarität über ein logisches Signal umkehren lässt. Der Schaltkreis L298N enthält zwei solche Brücken und kann daher zwei Motoren steuern. Für Motor A werden die Eingänge IN1 und IN2 verwendet, für Motor B die Eingänge IN3 und IN4.

Die Drehrichtung ergibt sich aus der Kombination der Pegel an den beiden Eingängen des Motors. Die Kombination HIGH an beiden Eingängen darf niemals verwendet werden, da sie das Modul beschädigen kann.

IN1 (IN3) IN2 (IN4) Ergebnis
HIGH LOW Motor dreht vorwärts
LOW HIGH Motor dreht rückwärts
LOW LOW Motor steht still
HIGH HIGH Verboten bei diesem Aufbau, diese Kombination nicht verwenden

 

Die Geschwindigkeit wird mit einem PWM-Signal an den Pins ENA (Motor A) und ENB (Motor B) eingestellt. Auf dem Arduino Uno akzeptiert die Funktion analogWrite Werte von 0 bis 255. Der Wert 0 bedeutet Motor aus, 255 bedeutet Dauerbetrieb. Die mittlere Spannung, die am Motor ankommt, beträgt ungefähr Vmotor = (VS - Vabfall) x PWM / 255.

Der Schaltkreis L298N verliert intern einen Teil der Spannung, etwa 1,8 - 3,2 V bei einem Strom von 1 A und fast 5 V bei 2 A. In unserem Aufbau ist VS 9 V, also erhält ein Motor, der etwa 1 A verbraucht, bei PWM 255 ungefähr 7 V. Die TT-Motoren sind für 3 - 6 V ausgelegt, deshalb begrenzen wir den PWM-Wert auf 200. Bei 200 beträgt die mittlere Spannung ungefähr 7 x 200 / 255 = 5,5 V, also im sicheren Bereich der Motoren.

Das Modul hat außerdem einen Spannungsregler 78M05, der 5 V für die Logik liefern kann. Mit gestecktem Jumper 5V-EN ist der Regler aktiv und die Klemme +5V wird zum 5-V-Ausgang mit einem Strom von bis zu 0,5 A. Diese Variante wird nur verwendet, wenn VS höchstens 12 V beträgt. Über 12 V wird der Jumper entfernt und die Klemme +5V wird von außen versorgt.

Anschluss:

Versorgen Sie die Motoren über ein Netzteil mit 9 VDC und mindestens 1 A, angeschlossen über den Hohlstecker-Adapter mit Schraubklemmen. Die Arduino Uno bleibt separat über das USB-Kabel versorgt. Die Masse des Netzteils, die Masse des Moduls und die Masse der Uno-Platine müssen verbunden werden, sonst haben die Steuersignale keine gemeinsame Bezugsmasse und die Motoren reagieren nicht korrekt. Die Eingänge des Moduls akzeptieren direkt den logischen Pegel von 5 V der Uno-Platine, daher ist kein Pegelwandler nötig.

Produktpin Anschluss an Funktion
+12V (VS) Plus des 9-VDC-Netzteils Versorgung der Motoren
GND Minus des 9-VDC-Netzteils und GND-Pin der Uno-Platine Gemeinsame Masse
+5V Nicht angeschlossen Bei gestecktem Jumper 5V-EN ist es ein 5-V-Ausgang, die Uno-Platine bleibt über USB versorgt
ENA D9 (PWM) Geschwindigkeit Motor A
IN1 D8 Drehrichtung Motor A
IN2 D7 Drehrichtung Motor A
IN3 D5 Drehrichtung Motor B
IN4 D4 Drehrichtung Motor B
ENB D3 (PWM) Geschwindigkeit Motor B
OUT1 Rotes Kabel von Motor A Ausgang Motor A
OUT2 Schwarzes Kabel von Motor A Ausgang Motor A
OUT3 Rotes Kabel von Motor B Ausgang Motor B
OUT4 Schwarzes Kabel von Motor B Ausgang Motor B

 

Anschluss der Doppel-H-Brücke L298N an den Arduino Uno mit zwei DC-Motoren

Entfernen Sie die Jumper von ENA und ENB, bevor Sie das Modul einschalten, damit Sie die Geschwindigkeit per PWM einstellen können. Das Modul hat auf der Platine bereits zwei Kondensatoren mit 220 uF und die Schutzdioden für die Motoren, es müssen also keine zusätzlichen Bauteile ergänzt werden.

Taster, Einstellungen und Anzeigen:

Element Funktion Verwendung
Jumper 5V-EN Aktiviert den 5-V-Regler des Moduls Bleibt gesteckt, wenn VS 12 V oder weniger beträgt, wie in diesem Tutorial. Wird entfernt, wenn VS über 12 V liegt, und die Klemme +5V wird von außen versorgt
Jumper ENA Legt den Eingang ENA auf 5 V fest, sodass Motor A immer mit Höchstgeschwindigkeit läuft Wird entfernt, damit Pin D9 die Geschwindigkeit per PWM steuern kann
Jumper ENB Legt den Eingang ENB auf 5 V fest, sodass Motor B immer mit Höchstgeschwindigkeit läuft Wird entfernt, damit Pin D3 die Geschwindigkeit per PWM steuern kann
LED der Stromversorgung Zeigt an, dass das Modul Spannung hat Leuchtet, wenn das Modul Spannung erhält. Bleibt sie aus, prüfen Sie das Netzteil und die Klemme +12V

 

Jumper 5V-EN: Starten Sie mit gestecktem Jumper. In diesem Aufbau beträgt VS 9 V, daher kann der Regler aktiv bleiben. Die Klemme +5V wird nicht mit dem Arduino verbunden, da die Uno-Platine über USB versorgt wird. Versorgen Sie die Klemme +5V niemals von außen, solange der Jumper gesteckt ist.

Jumper ENA und ENB: Entfernen Sie beide vor dem ersten Start. Mit gestecktem Jumper läuft der jeweilige Motor dauerhaft mit Höchstgeschwindigkeit, und das PWM-Signal hat keine Wirkung. Die Regelung funktioniert, wenn sich die Motorgeschwindigkeit ändert, während das Programm den Wert von analogWrite variiert.

LED der Stromversorgung: Nach dem Anschluss des Netzteils muss sie sofort leuchten. Das ist das Erste, was man prüft, wenn etwas nicht funktioniert.

Platine und Bibliotheken:

Wählen Sie in der Arduino IDE Tools > Board > Arduino AVR Boards > Arduino Uno. Das Paket Arduino AVR Boards ist bereits in der Arduino IDE enthalten und muss daher nicht separat installiert werden. Das Programm verwendet nur die Grundfunktionen von Arduino, deshalb ist keine Bibliothek nötig.

Der Code:

Das Programm lässt jeden Motor vorwärts und rückwärts mit zwei Geschwindigkeiten laufen und danach beide Motoren gemeinsam. Kopieren Sie es in die Arduino IDE und laden Sie es auf die Uno-Platine.

/*
  L298N dual H-bridge motor driver demo
  Board: Arduino Uno (Tools > Board > Arduino AVR Boards > Arduino Uno)
  Libraries: none, the sketch uses only the core Arduino functions
  Wiring:
    ENA -> D9 (PWM)    IN1 -> D8    IN2 -> D7
    ENB -> D3 (PWM)    IN3 -> D5    IN4 -> D4
    L298N GND -> Arduino GND and the adapter minus
    L298N +12V -> adapter plus (9 VDC, min. 1 A)
    Remove the ENA and ENB jumpers so PWM can control the speed
*/
// Motor A pins
const int ENA = 9;   // Speed of motor A (PWM)
const int IN1 = 8;   // Direction input 1 of motor A
const int IN2 = 7;   // Direction input 2 of motor A
// Motor B pins
const int ENB = 3;   // Speed of motor B (PWM)
const int IN3 = 5;   // Direction input 1 of motor B
const int IN4 = 4;   // Direction input 2 of motor B
// Maximum PWM value, keeps 3-6 V motors in a safe range when VS is 9 V
const int MAX_PWM = 200;
// Run motor A at a given speed, forward or backward
void setMotorA(int speed, bool forward) {
  speed = constrain(speed, 0, MAX_PWM);   // Limit the speed
  // Write LOW first, so both inputs are never HIGH at the same time
  digitalWrite(forward ? IN2 : IN1, LOW);
  digitalWrite(forward ? IN1 : IN2, HIGH);
  analogWrite(ENA, speed);                // Apply the speed
  Serial.print("Motor A: ");
  Serial.print(forward ? "forward" : "backward");
  Serial.print(", PWM ");
  Serial.println(speed);
}
// Run motor B at a given speed, forward or backward
void setMotorB(int speed, bool forward) {
  speed = constrain(speed, 0, MAX_PWM);   // Limit the speed
  // Write LOW first, so both inputs are never HIGH at the same time
  digitalWrite(forward ? IN4 : IN3, LOW);
  digitalWrite(forward ? IN3 : IN4, HIGH);
  analogWrite(ENB, speed);                // Apply the speed
  Serial.print("Motor B: ");
  Serial.print(forward ? "forward" : "backward");
  Serial.print(", PWM ");
  Serial.println(speed);
}
// Stop motor A
void stopMotorA() {
  analogWrite(ENA, 0);        // No drive
  digitalWrite(IN1, LOW);     // Both inputs LOW
  digitalWrite(IN2, LOW);
  Serial.println("Motor A: stopped");
}
// Stop motor B
void stopMotorB() {
  analogWrite(ENB, 0);        // No drive
  digitalWrite(IN3, LOW);     // Both inputs LOW
  digitalWrite(IN4, LOW);
  Serial.println("Motor B: stopped");
}
void setup() {
  // Configure all control pins as outputs
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  Serial.begin(9600);         // Start the serial monitor
  Serial.println("L298N motor driver test started");
  // Make sure both motors are off at start
  stopMotorA();
  stopMotorB();
  delay(1000);
}
void loop() {
  // Motor A: forward at two speeds, then backward
  setMotorA(120, true);
  delay(2000);
  setMotorA(200, true);
  delay(2000);
  stopMotorA();
  delay(1000);
  setMotorA(200, false);
  delay(2000);
  stopMotorA();
  delay(1000);
  // Motor B: forward, then backward
  setMotorB(200, true);
  delay(2000);
  stopMotorB();
  delay(1000);
  setMotorB(200, false);
  delay(2000);
  stopMotorB();
  delay(1000);
  // Both motors together
  setMotorA(150, true);
  setMotorB(150, true);
  delay(3000);
  stopMotorA();
  stopMotorB();
  delay(3000);            // Pause before the cycle repeats
}

Wie der Code funktioniert:

Zu Beginn werden die Pins mit den Konstanten ENA, IN1, IN2, ENB, IN3 und IN4 definiert, genau wie in der Anschlusstabelle. Die Konstante MAX_PWM hat den Wert 200 und begrenzt die Geschwindigkeit, damit die TT-Motoren nicht mehr als 6 V erhalten.

In der Funktion setup werden alle Pins als Ausgänge konfiguriert, der Serielle Monitor mit 9600 Baud gestartet und beide Motoren angehalten, damit beim Reset nichts Unerwünschtes anläuft.

Die Funktionen setMotorA und setMotorB erhalten Geschwindigkeit und Drehrichtung. Sie begrenzen die Geschwindigkeit mit constrain und setzen zuerst LOW auf dem Eingang, der inaktiv sein muss, und erst danach HIGH auf dem anderen. So sind die beiden Eingänge desselben Motors nie gleichzeitig HIGH. Zum Schluss legt analogWrite die Geschwindigkeit am Enable-Pin an. Die Funktionen stopMotorA und stopMotorB setzen beide Eingänge auf LOW und die Geschwindigkeit auf 0.

Die Funktion loop führt die Testsequenz aus: Motor A vorwärts mit zwei Geschwindigkeiten, Stopp, Motor A rückwärts, danach dieselben Schritte für Motor B und zum Schluss beide Motoren gemeinsam. Die Pausen werden mit delay gesetzt, und die Meldungen im Seriellen Monitor zeigen bei jedem Schritt an, welcher Befehl gesendet wurde.

Ergebnis:

Öffnen Sie den Seriellen Monitor mit 9600 Baud. Nach dem Hochladen des Programms sehen Sie die folgenden Meldungen, und die Motoren bewegen sich in derselben Reihenfolge. Wenn sich ein Motor entgegen der Meldung dreht, tauschen Sie die beiden Kabel dieses Motors an der Klemme OUT untereinander.

L298N motor driver test started
Motor A: stopped
Motor B: stopped
Motor A: forward, PWM 120
Motor A: forward, PWM 200
Motor A: stopped
Motor A: backward, PWM 200
Motor A: stopped
Motor B: forward, PWM 200
Motor B: stopped
Motor B: backward, PWM 200
Motor B: stopped

Häufige Probleme:

Die Motoren bewegen sich überhaupt nicht. Die übliche Ursache ist die Versorgung oder die Masse. Prüfen Sie, ob die LED der Stromversorgung leuchtet und ob GND der Uno-Platine mit GND des Moduls verbunden ist. Ohne gemeinsame Masse werden die Steuersignale nicht erkannt.

Ein Motor läuft immer mit Höchstgeschwindigkeit, unabhängig vom PWM-Wert. Der Jumper ENA oder ENB ist noch gesteckt. Entfernen Sie ihn, damit der Pin D9 oder D3 die Geschwindigkeit steuern kann.

Der Motor brummt, startet aber bei kleinen Geschwindigkeiten nicht. Unterhalb eines bestimmten PWM-Wertes ist die mittlere Spannung zu klein, um die Reibung des Getriebes zu überwinden. Erhöhen Sie den Wert von analogWrite oder verwenden Sie bei Bedarf eine höhere Spannung VS.

Der Motor dreht sich entgegengesetzt zur gewünschten Richtung. Tauschen Sie die beiden Kabel des Motors an der Klemme OUT oder vertauschen Sie im Code die Werte HIGH und LOW für diesen Motor.

Die Uno-Platine setzt sich zurück, wenn die Motoren starten. Die Motoren erzeugen Störungen und Spannungseinbrüche auf der Masse. Prüfen Sie die Masseleitungen, verwenden Sie ein Netzteil mit mindestens 1 A und halten Sie die Motorleitungen von den Signalleitungen fern.

Der Kühlkörper des Moduls wird warm. Das ist bei hohen Strömen normal, weil ein Teil der Leistung im Schaltkreis L298N verloren geht. Ist er zu heiß, um ihn längere Zeit zu berühren, verringern Sie die Last oder sorgen Sie für Belüftung.

Einschränkungen und Tipps:

Das Modul akzeptiert für die Motoren Spannungen von 5 - 35 VDC und kann bis zu 2 A pro Kanal liefern. Wegen des internen Spannungsabfalls erhält der Motor weniger als die Versorgungsspannung, wählen Sie VS deshalb 2 - 3 V über der Nennspannung des Motors. Für kleine Motoren mit 3 - 6 V ist ein Netzteil mit 9 V und einer PWM-Begrenzung auf etwa 200 eine sichere Wahl.

Der Schaltkreis L298N ist nicht besonders effizient, daher ist bei batteriebetriebenen Motoren mit hohem Verbrauch ein Treiber mit MOSFET-Transistoren besser geeignet. Dafür ist das Modul sehr gut zum Lernen und für kleine Roboter geeignet. Mit demselben Aufbau können Sie einen Roboter auf zwei Rädern bauen, indem Sie einen Abstandssensor oder eine Fernsteuerung ergänzen. Legen Sie niemals gleichzeitig HIGH an IN1 und IN2 oder an IN3 und IN4.