In diesem Beitrag zeige ich dir wie du die H-Brücke vom Typ L298N am Arduino UNO betreibst und zwei DC Motoren unabhängig voneinander in beide Laufrichtungen beitreiben kannst.
Natürlich kannst du dieses Bauteil auch am Raspberry Pi betreiben, jedoch soll es in diesem Beitrag zunächst darum gehen wie du dieses am Arduino UNO machst.
Inhaltsverzeichnis
Wozu dient eine H-Brücke?
Mit einer H-Brücke kann man einen Motor vorwärts & rückwärts drehen lassen. Durch die Anordnung von MOSFETs kann ein DC Motor umgepolt werden und somit dreht der Motor vorwärts oder rückwärts.
Bezug der H-Brücke
Auf den gängigen Plattformen wie ebay.de, amazon.de, aliexpress.com usw. findest du diese H-Brücke zu recht günstigen Preisen, hier nun eine kleine Auflistung von einigen Shops (stand 04.11.2021):
Shop | Preis |
---|---|
ebay.de | 1 € – 7 € |
amazon.de | 5,49 € |
reichelt.de | 5,70 € |
aliexpress.com | 0,97 € |
bastelshop24.de | 3,10 € |
Technische Daten des L298N Moduls
Hier nun die technischen Daten des Moduls:
- Chip – L298N
- Logische Spannung – 5V
- Spannung für DC – Motoren 5V – 35V
- Stromaufnahme des Modules 0mA bis 36mA
- max. Stromaufnahme der DC Motoren 2A
- max. Leistung – 25W
- Abmaße (LxBxH) – 43 mm x43 mm x 26 mm
- Gewicht – 26g
Aufbau der H-Brücke vom Typ L298N
Auf der H-Brücke vom Typ L298N sind verbaut:
- zwei 2polige Schraubklemmen für DC-Motoren,
- eine 3polige Schraubklemme für die Spannungsversorgung,
- eine Pinleiste zum Steuern der Motoren,
- an den Ecken sind jeweils Löcher im Durchmesser von 4 mm zur Montage vorhaben

Spannungsversorgung des Moduls
Das Modul selber kann mit einer Spannung von 5V bis maximal 35V versorgt werden. Wenn der Jumper gesetzt ist, wird auf der rechten Schraubklemme +5V ausgegeben und wir könnten theoretisch zusätzlich einen Mikrocontroller versorgen.
Stiftleisten zur Steuerung der Motoren
Die 8polige Stiftleiste ist wie folgt belegt:
ENA – Pin für den DC Motor 1, kann entweder mit einem Jumper gebrückt werden oder aber angeklemmt an einem PWM Pin des Mikrocontrollers kann eine genaue Geschwindigkeit gesetzt werden.
IN1 – zur Steuerung des DC Motors 1
IN2 – zur Steuerung des DC Motors 1
IN3 – zur Steuerung des DC Motors 2
IN4 – zur Steuerung des DC Motors 2
ENB – Pin für den DC Motor 2, kann entweder mit einem Jumper gebrückt werden oder aber angeklemmt an einem PWM Pin des Mikrocontrollers kann eine genaue Geschwindigkeit gesetzt werden.
steuern der Drehrichtung der Motoren
Motor 1
Vorwärts drehen
IN1 | HIGH |
IN2 | LOW |
Rückwärts drehen
IN1 | LOW |
IN2 | HIGH |
Motor 2
Vorwärts drehen
IN3 | HIGH |
IN4 | LOW |
Rückwärts drehen
IN3 | LOW |
IN4 | HIGH |
Spannungsversorgung der DC-Motoren
An der H-Brücke können DC-Motoren mit einer Spannungsversorgung von 5V bis max. 35V angeschlossen und betrieben werden. Man muss aber beachten das, dass Modul selber knapp 2V verbraucht und somit muss die Versorgungsspannung immer etwas über die eigentliche Spannung liegen.
D.h. möchte man einen 5V DC Motor mit seiner maximalen Drehzahl betreiben, somit muss eine Spannung von knapp 7V angelegt werden.

In meinem Fall nutze ich ein 4fach Batteriefach für Mignon Batterien für eine Spannung von 4x 1,5V = 6V (~ 6,47V gemessen mit dem Multimeter).
Aufbau einer Schaltung am Arduino UNO mit 2 DC-Motoren
Eine solche H-Brücke findest du Bsp. in einem 2 WD / 4 WD Set welches jeweils 2 oder 4 Räder hat.
Das oben gezeigt Set beinhaltet alles, was du benötigst, um ein kleines „Auto“ mit einem Arduino UNO aufzubauen. Und hier möchte ich dir nun gerne zeigen wie du die H-Brücke programmieren kannst, um die DC Motoren zu betreiben.
Benötigte Ressourcen für den Aufbau der Schaltung
Für den Aufbau benötigst du
- eine H-Brücke vom Typ L298N,
- zwei 5V DC-Motoren,
- eine 7V Spannungsquelle zbsp. ein Batteriefach für 4 Stck. AA Batterien,
- vier Stück AA , Mignon Batterien,
- einen Arduino UNO,
- diverse Breadboardkabel
Oder du nimmst ein wie bereits gezeigtes 2WD Set welches alle benötigten Bauteile enthält. Dieses Set bekommst du Bsp. über aliexpress.com sehr günstig.
Schaltung am Arduino UNO
Für den Aufbau verwende ich den Arduino UNO du kannst aber ebenso auch einen Arduino Nano, Leonardo oder auch den Mega 2560 R3 verwenden.
Programmieren in der Arduino IDE
Kommen wir zur Programmierung der H-Brücke in der Arduino IDE für den Arduino UNO.
// DC Motor 1 int ena = 10; int in1 = 9; int in2 = 8; // DC Motor 2 int enb = 5; int in3 = 7; int in4 = 6; void setup() { pinMode(ena, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(enb, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); } void loop() { //Motor 1 vorwärts drehen - volle Geschwindigkeit analogWrite(ena, 255); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); //eine Pause von 2,5 Sekunden delay(2500); //Motor 1 rückwärts drehen - volle Geschwindigkeit analogWrite(ena, 255); digitalWrite(in1, LOW); digitalWrite(in2, HIGH); //eine Pause von 2,5 Sekunden delay(2500); //Motor 1 STOPP digitalWrite(in1, LOW); digitalWrite(in2, LOW); //Motor 2 vorwärts drehen - volle Geschwindigkeit analogWrite(enb, 255); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); //eine Pause von 2,5 Sekunden delay(2500); //Motor 2 rückwärts drehen - volle Geschwindigkeit analogWrite(enb, 255); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); //eine Pause von 2,5 Sekunden delay(2500); //Motor 2 vorwärts drehen - halbe Geschwindigkeit analogWrite(enb, 128); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); //eine Pause von 2,5 Sekunden delay(2500); }
Hier nun das Video zum Sketch / Programm am Arduino UNO.
Geschwindigkeit des Motors per PWM Signal regeln
Die Geschwindigkeit der angeschlossenen Motoren können mit PWM Signalen von 0 bis 255 gesteuert werden.
Jedoch dreht sich bei mir erst der Motor ab einem Wert von 45.
// DC Motor 1 int ena = 10; int in1 = 9; int in2 = 8; void setup() { Serial.begin(9600); pinMode(ena, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); } void loop() { //Motor zunächst vorwärts drehen lassen analogWrite(ena, 255); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); //von ganz langsam bis max. Geschwindigkeit drehen for (int i = 0; i < 255; i++) { Serial.println(i); analogWrite(ena, i); delay(125); } //von max. Geschwindigkeit bis ganz langsam drehen for (int i = 255; i > 0; i--) { Serial.println(i); analogWrite(ena, i); delay(125); } }
sdfgsdfgsdgf
Erklärung bestens. Möchte Motor mit mehreren definierten Schritten vorwärts und ggf. rückwärts steuern, wie ist hierzu die Programmierung.
Besten Dank und
mfG
Jens MEsstorff
Hallo Jens,
vielen Dank für deinen Kommentar.
Schreibe mir doch einmal per E-Mail, was du genau vorhast, ggf. kann ich dich da unterstützen.
Gruß
Stefan Draeger
Tolle Seite ohne viel Schnickschack…
Hallo Stefan,
super erklärt!
Kann man damit auch 2 kleine Vibrations-Motoren, die in der linken und rechten Hand gehalten werden sollen und dort abwechselnd vibrieren (Wechsel-Impuls-Geschwindigkeit über Poti regelbar!?) steuern?
Und falls ja, wie?
Mit einem netten Gruß von Jack
Hallo Stefan,
als Vibrationsmotoren würde ich gerne DC3Volt mit ca. 4000 RPM nehmen, wie es sie via Ebay gibt
(falls das als Zusatzinfo wichtig ist).
Nette Grüße von Jack