Ein L298N Motor Treiber oder auch dual H-Bridge / H-Brücke genannt wird verwendet um die Steuerung der Drehrichtung und Geschwindigkeiten von Motoren zu regeln. Diese Aufgabe kann die Logik des Raspberry Pi Computer nicht direkt übernehmen und daher wird ein Motor Treiber benötigt. Ein Single Board Computer (SBC) wie der Raspberyy Pi hat nicht die Leistung DC Motoren oder Schrittmotoren ausreichend mit Energie zu versorgen. Normaler weise arbeitet ein SBC mit Spannungen von 3,3V oder 5,0V und einem sehr schwachen Strom von ca. 30 mA. Ein klassischer DC Motor hingegen arbeitet mit Spannungen von 3V bis 24V und einer Stromstärke von 600mA bis 4A. Ein Schrittmotor arbeitet mit einer Stromstärke von 400mA bis 1,2A bei einer Spannung von 12V.
Es gibt verschiedene Typen von L298N Motor Treibern die auch wieder abhängig sind von den eingesetzten Motoren (DC Motoren, Schrittmotoren, brushless Motoren etc.). Für kleine Roboter werden DC Motoren mit einer Spannung von 3V bis 24V und einer Stromstärke von 0,3A bis 2A verwendet und für diese ist eine H-Brücke wie hier gezeigt ausreichend. Für starke high performance brushless Motoren aus dem RC Modellbau werden spezielle Fahrtenregler benötigt.
L298N Dual H-Brücke DC Motor Treiber Module für Arduino und Raspberry Pi
Der folgende Motor Treiber ist ein günstiges Modell welches über keine LEDs verfügt umd den Status der einzelnen Kanäle anzeigen zu können. Diesen Typ von Motor Treiber setze ich häufig in meinen Roboter Autos ein. Dieser Motortreiber ist ausreichend für die kleinen DC Motoren in den hier gebauten Roboter Autos. Mit der Pulsweiten Modulation PWM ist es möglich die Geschwindigkeit der Motoren pro Kanal zu steuern.
Python Programm – L298N H-Brücke
Für die Ansteuerung des L298N Motortreibers habe ich ein Python Programm entwickelt. Mit diesem Programm welches Ihr als Modul in euer Hauptprogramm einbindet, ist es möglich zwei Motoren des Roboters anzusteuern. Das Python Modul verfügt über die folgenden Funktionen für die Steuerung der Motoren:
- setMotorMode(motor, mode)
- setMotorLeft(power)
- setMotorRight(power)
- exit()
Innerhalb des Programmes sind die einzelnen Funktionen im Quellcode weiter erklärt.
setMotorMode(motor, mode)
Der erste Eingabeparameter „motor“ legt fest ob der linke oder rechte Motor angesprochen werden soll. Der zweite Eingabeparameter „mode“ legt die Laufrichtung des ausgewählten Motors fest.
setMotorLeft(power) / setMotorRight(power)
Mit dem Eingabeparameter „power“ wird die Drehrichtung (+/-) und die Geschwindigkeit (0 – 1) übergeben.
exit()
Die Funktion „exit()“ besitzt keinen Eingabeparameter und beendet das Programm sauber in dem die GPIO Ausgänge auf False gesetzt werden und diese wieder freigegeben werden.
Das Modul für die Steuerung der H-Brücke sowie ein Beispielprogramm für die Ansteuerung des Moduls stehen auf meiner Seite zum download zur Verfügung. Hier könnt Ihr die Python Programme herunter laden: L298N software download
Technische Beschreibung – L298N H-Brücke
Die Motortreiber ausgeprägt als L298N H-Brücke für kleine Motoren mit nicht mehr als 2 A Stromstärke haben z. B. die folgendy für sie typische Spezifikation. Generell gibt es aber H-Brücke in ganz unterschiedlicher Größe und Baufrom. Ich habe mich für meine Modelle für die günstige Variante entschieden die ich hier vorstelle. Sie verfügt über LEDs und zeigt mit diesen ann welcher logischer Anschluss gerade aktiv ist also auf HIGH geschalten wurde. Das vereinfacht sehr die Fehelrsuche im eingenen Programm oder in der Verkabelung.
Die typischen Komponenten für ein Roboter-Auto habe ich auf folgender Seite zusammen gefasst: Roboter-Auto Komponenten
[DE_BOOK_DETAIL DE_BOOK_DETAIL=“DE_BOOK_DETAIL“]
Spezifikation L298N Motor Treiber:
Driver chip: | L298N Dual H Bridge DC Motor Driver IC |
Driven part of the terminal supply voltage: | VMS 5V ~ 24V |
Driven part of the peak current IO: | 2A per bridge |
The logical part of the terminal supply voltage: | VSS 4.5V ~ 5.5V |
The logical part of the operating current range: | 0mA ~ 36mA |
Control signal input voltage range: | 4.5V ~ 5.5V (high) / 0V (low) |
Max power consumption: | 20W |
Operating temperature: | -25°C ~ +130°C |
Size: | 55 x 60 x 30mm |
Das folgende Bild zeigt eine L298N H-Brücke und gut zu erkennen sind die vier LEDs unterhalb des Kühllkörpers die die Schaltzustände der logischen Eingänge anzeigen.
5V Spannungversorgung
Der 5V Ausgang des Motortreiber der über eine der Anschlussklemmen verfügbar ist, ist nicht ausreichend stabil genug den Raspberry Pi ausreichend mit Strom zu versorgen. Wenn eine höhere Versorgungsspannung als 12V an dem VMS Eingang angelegt wird dann das z.B. den Raspberry Pi beschädigen wenn dieser über den 5V Ausgang des Motor Treibers angeschlossen ist. Der verbaute Spannungswander ist nicht gut genug um einen Arduino oder Rasbperry Pi daran anzuschließen.
Schrittmotor Treiber
Mit den beiden hier vorgestellten Motor Treibern können nicht nur DC Motoren betrieben werden. Es ist auch möglich mit ihnen einen vier Phasen Schrittmotor zu betreiben. Die Spannung und Stromstärke reicht aus gängige NEMA17 Schrittmotoren an dem Motor Treiber anschließen zu können.
Hallo,
erstmal Danke für die tolle Webseite! Ich bin recht neu und möchte ein wenig experimentieren 🙂 Dazu hab ich jetzt aber ein paar Fragen.
Ich möchte vorerst nur mal mit einem Motor experimentieren und in Gang bringen. Wenn ich alles angeschlossen habe wie im Buch beschrieben – aber OHNE Spannungswandler – muss ich dann den Raspberry Pi weiter mit normalen Netzteil mit Strom versorgen? Und muss dann vom vom Motor-Treibermodul eine GND verbindung zum GND vom Raspberry gelegt werden und warum?
Ich hoffe ich konnte einigermaßen erklären was ich meine 🙂 und hoffe auf baldige Antwort, vielen Dank!
Hallo Daniel,
ja genau, den Raspberry Pi betreibst Du dann mit einer eigenen 5V Stromquelle und den Motor Treiber mit seiner eigenen Stromquelle wie z. B. einen 7,2V Akku.
Du musst dann einen gemeinsamen GND zwischen Raspberry Pi und Motor Treiber herstellen. Andernfalls ist der Logigk des Motor Treibers nicht bekannt was ein LOW und ein HIGH Signal ist.
Viele Grüße,
Maker
Wir bauen gerade das Auto wie im Buch „Roboter-Autos mit dem Raspberry Pi: Planen, bauen, programmieren“ beschrieben. Allerdings wollen wir als Spannungsquelle einen 8-fach Mignon-AA-Batteriehalter verwenden, haben also mit Akkus theoretisch 9.6 V (mit frisch geladenen Akkus gemessen etwas über 10V, bei Verwendung von Batterien theoretisch 12 V), was sowohl für für den Step Down Spannungswandler (XL4015 DC Step Down 36V/5A Spannungsregler) als auch das L298N Dual H Bridge DC Stepper Motor Driver Module kein Problem sein dürfte.
Der Raspi wird durch den oben erwähnten Step Down Converter mit 5V versorgt, also auch kein Thema. Was aber ist mit den vier Getriebemotoren (Motor-Rate Spannung: DC 3-6V)? Vertragen die eine Spannung über die 6V hinaus? Leider haben wir kein richtiges Datenblatt mit einer entsprechenden maximal erlaubten Spannungsangabe gefunden. Selbst wenn wir von einem Spannungsabfall von etwa 2V am L298N Dual H-Bridge Motor Treiber ausgehen, wären es ja immer noch zwischen 8 bis 10V.
Bei dem im Buch dokumentierten Fall verwenden Sie einen 6-fach Mignon-AA-Batteriehalter, das würde bei Verwendung von Akkus bedeuten (6 * 1.2V) – 2V = 5.2V, womit die volle Geschwindigkeit wohl nicht ausgeschöpft wird, Sie aber auch unter den angegebenen 6V bleiben.
Herzlichen Dank für jegliche Tipps!
Hallo Ihr beiden,
ich denke das ist eine zu hohe Spannung für die kleinen Motoren. Ich gehe von diesen kleinen gelben Getriebemotoren aus.
Da würde ich einen Motor wie diesen hier nehmen: Gleichstrom Getriebemotor PGM
Warum muss denn die Spannung so hoch sein?
Viele Grüße,
Maker
Hallo Maker,
herzlichen Dank für die schnelle Antwort!
Ja, wir sprechen von diesen kleinen gelben Getriebemotoren, wie in Ihrem Buch abgebildet. Gibt es überall zu kaufen, nur leider nirgends kein richtiges Datenblatt nicht 😉
„Warum muss denn die Spannung so hoch sein?“ Muss sie an sich nicht, wir haben nur die im Buch veröffentlichte Bauteilliste https://custom-build-robots.com/roboter-auto-komponenten verwendet und da findet sich dann für die „Mignon AA Batterie Lösung“ ein „Batteriehalter, 8xmignon ‚AA'“, also für acht AA-Akkus(/Batterien) und zudem darunter der Link zu einem Angebot für acht „Ni-MH AA-Akkus – Akkubatterien“.
Wäre vielleicht nicht verkehrt, beim „Batteriehalter, 8xmignon ‚AA‘, mit Druckknopfanschluß“ einen Warnhinweis anzubringen (bevor ein Bastler sich die Motoren zerschießt oder schädigt) und einen 6-fach Batteriehalter in die Liste aufzunehmen.
Viele Grüße und viel Erfolg!
Servus,
vielen Dank für die Erklärung und den Hinweis. Ich habe jetzt einen 6x Batteriehalter in die Komponentenliste aufgenommen und den 8x entfernt.
Viele Grüße,
Maker
Ich versuche gerade, die Teile für das Roboterauto zusammenzustellen. Anfängerfrage dazu: Im Buch (s. 37) heisst es, dass man einen Motortreiber braucht, der mit den 3,3V der Raspberry Pi Pins klarkommt. In der Komponentenliste und hier sind Modelle mit 5V logischer Spannung verlinkt. Passt das trotzdem zusammen?
Hallo Orangina,
ja die hier verlinkten Motortreiber kommen auch mit einer logischen Spannung von 3,3V zurecht.
Viele Grüße,
Maker