Ob es sich um einen Mikromaus-Roboter oder einen winzigen IoT-Elektrolüfter handelt, das Wissen, wie man Dinge mit Gleichstrommotoren mit dem Raspberry Pi zum Laufen bringt, kann eine breite Palette kreativer DIY-Projekte freischalten, um Sie zu beschäftigen. Für diese Anleitung verwenden wir einen L298N-Motorcontroller in Raspberry Pi, um Strom an ein Paar Gleichstrommotoren zu senden und sie zum Drehen zu bringen!
Warum das Motorsteuerungsmodul L298N?
Das Motorsteuerungsmodul L298N ist eine Platine, die Mikrocontrollern und Mikroprozessoren wie dem Raspberry Pi Gleichstrommotoren mit Strom versorgt, die mehr als die 3,3 V oder 5 V benötigen, die sie liefern können.
Es verwendet die integrierte L298N-Schaltung, versorgt die gesamte Logik und das Energiemanagement, die zum Betreiben von Motoren erforderlich sind, und isoliert den Raspberry Pi von der höheren Spannung, die an die Gleichstrommotoren angelegt wird.
Das L298N-Modul ist aufgrund seiner Benutzerfreundlichkeit eine Grundmotorsteuerung in Heimwerker-Robotik-Kits für Anfänger. Es verfügt über Kopfstifte, in die Sie Überbrückungsdrähte einführen können, um es problemlos mit dem Raspberry Pi zu verbinden. Sie können die Motoren auch beschleunigen oder verlangsamen, indem Sie Pulsweitenmodulationssignale (PWM) an die „Enable“-Pins anlegen.
Auf der Schaltungsseite ist der L298N eine Form einer doppelten H-Brückenschaltung. Es ist eigentlich ein Paar H-Brückenschaltungen, die aus einem Motor mit vier elektronischen Schaltern bestehen. Dadurch können Sie die Stromrichtung einstellen, ohne den Motor physisch neu verdrahten zu müssen. Das Umkehren des Stroms an einer H-Brücke kehrt auch die Drehrichtung des Motors um. Der L298N hat zwei davon, sodass Sie zwei Motoren unabhängig voneinander steuern können.

In diesem Sinne ist es an der Zeit, an einigen Motoren zu arbeiten.
Verwandt: Sie könnten auch daran interessiert sein, einen Servomotor mit dem Raspberry Pi zu verwenden.
Was du brauchen wirst

- Gleichstrommotor x2 – entweder gebürstet oder bürstenlos sollte in Ordnung sein; Sie können Motoren mit oder ohne Getriebe verwenden. Suchen Sie nach Gleichstrommotoren mit einer maximalen Nennspannung von 35 V.
- L298N Motorsteuerungsmodul
- DC-Stromversorgungsquelle – entweder eine 9-V-Batterie und Stecker oder ein variables Netzteil (PSU), falls verfügbar.
- Buchse-zu-Buchse-Überbrückungsdrähte x6
- Stecker-zu-Buchse-Überbrückungskabel x1
- Raspberry Pi-Platine – jede Marke oder jedes Modell sollte funktionieren, außer Pico.
Optionales Zubehör:
- Lötkolben – um Drähte an Ihren Motoren hinzuzufügen, wenn sie nicht mit Drähten vorgelötet sind.
- Abisolierzangen
- Kabelschneider
- PVC-Kupferdrähte – 12AWG, vorzugsweise verseilt, zum Löten an die DC-Motoren.
So verwenden Sie einen Gleichstrommotor und ein L298N-Motorsteuerungsmodul mit Ihrem Raspberry Pi
Wenn Sie gerade erst mit der Python-Codierung beginnen, sollten Sie sich diese nützlichen Einzeiler-Codes für Python nicht entgehen lassen.
1. Erstellen des Codes
- Importieren Sie die erforderlichen Module.
import RPi.GPIO as GPIO from time import sleep
- Definieren Sie die Stifte. Der linke Motor wird von den Pins 7, 11 und 13 gesteuert, während der rechte Motor von den Pins 8, 10 und 12 gesteuert wird.
leftForward = 7 leftBackward = 11 leftEnable = 13 rightForward = 8 rightBackward = 10 rightEnable = 12
- Erstellen Sie die Board-bezogenen Einstellungen.
GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD)
- Es ist Zeit, die Pin-Bezeichnungen festzulegen. Da das L298N DC-Controller-Modul nur Eingaben vom Raspberry Pi benötigt, legen Sie die Pins des Raspberry Pi als Ausgangspins fest.
GPIO.setup(leftForward, GPIO.OUT) GPIO.setup(leftBackward, GPIO.OUT) GPIO.setup(leftEnable, GPIO.OUT) GPIO.setup(rightForward, GPIO.OUT) GPIO.setup(rightBackward, GPIO.OUT) GPIO.setup(rightEnable, GPIO.OUT)
- Stellen Sie die linken und rechten Aktivierungsstifte auf PWM ein, so dass es möglich ist, die Geschwindigkeit der Motoren einzustellen, indem Sie den Spannungsausgang jedes Stifts steuern. Wir haben in einem früheren Artikel über die Steuerung von Servos darüber gesprochen, wie PWM funktioniert.
leftEnPWM = GPIO.PWM(leftEnable, 100) leftEnPWM.start(50) GPIO.output(leftEnable, GPIO.HIGH) rightEnPWM = GPIO.PWM(rightEnable, 100) rightEnPWM.start(50) GPIO.output(rightEnable, GPIO.HIGH)
- Machen Sie eine While-Schleife.
while True: GPIO.output(leftForward, GPIO.HIGH) GPIO.output(rightForward, GPIO.HIGH) sleep(1) leftEnPWM.ChangeDutyCycle(100) rightEnPWM.ChangeDutyCycle(100) sleep(1) leftEnPWM.ChangeDutyCycle(50) rightEnPWM.ChangeDutyCycle(50) sleep(1)
Beginnen Sie innerhalb der While-Schleife, indem Sie die Pins leftForward und rightForward für eine Sekunde einschalten. Um die Geschwindigkeit zu steuern, ändern Sie das Tastverhältnis der Aktivierungsstifte. Stellen Sie sie zuerst für eine Sekunde auf 100 % Einschaltdauer und dann für eine weitere Sekunde auf 50 % ein. Bei 100 % Einschaltdauer laufen die Motoren mit maximaler Drehzahl, während sie bei 50 % mit halber Drehzahl laufen.
- Stoppen Sie die Motoren, indem Sie die Pins leftForward und rightForward ausschalten. Hier halten wir sie für eine Sekunde an.
GPIO.output(leftForward, GPIO.LOW) GPIO.output(rightForward, GPIO.LOW) sleep(1)
- Wiederholen Sie denselben Vorgang, aber lassen Sie die Motoren stattdessen rückwärts laufen.
GPIO.output(leftBackward, GPIO.HIGH) GPIO.output(rightBackward, GPIO.HIGH) sleep(1) leftEnPWM.ChangeDutyCycle(100) rightEnPWM.ChangeDutyCycle(100) sleep(1) leftEnPWM.ChangeDutyCycle(50) rightEnPWM.ChangeDutyCycle(50) sleep(1) GPIO.output(leftBackward, GPIO.LOW) GPIO.output(rightBackward, GPIO.LOW) sleep(1)
Hier ist die vollständige Version des Codes:
import RPi.GPIO as GPIO from time import sleep leftForward = 7 leftBackward = 11 leftEnable = 13 rightForward = 8 rightBackward = 10 rightEnable = 12 GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(leftForward, GPIO.OUT) GPIO.setup(leftBackward, GPIO.OUT) GPIO.setup(leftEnable, GPIO.OUT) GPIO.setup(rightForward, GPIO.OUT) GPIO.setup(rightBackward, GPIO.OUT) GPIO.setup(rightEnable, GPIO.OUT) leftEnPWM = GPIO.PWM(leftEnable, 100) leftEnPWM.start(50) GPIO.output(leftEnable, GPIO.HIGH) rightEnPWM = GPIO.PWM(rightEnable, 100) rightEnPWM.start(50) GPIO.output(rightEnable, GPIO.HIGH) while True: GPIO.output(leftForward, GPIO.HIGH) GPIO.output(rightForward, GPIO.HIGH) sleep(1) leftEnPWM.ChangeDutyCycle(100) rightEnPWM.ChangeDutyCycle(100) sleep(1) leftEnPWM.ChangeDutyCycle(50) rightEnPWM.ChangeDutyCycle(50) sleep(1) GPIO.output(leftForward, GPIO.LOW) GPIO.output(rightForward, GPIO.LOW) sleep(1) GPIO.output(leftBackward, GPIO.HIGH) GPIO.output(rightBackward, GPIO.HIGH) sleep(1) leftEnPWM.ChangeDutyCycle(100) rightEnPWM.ChangeDutyCycle(100) sleep(1) leftEnPWM.ChangeDutyCycle(50) rightEnPWM.ChangeDutyCycle(50) sleep(1) GPIO.output(leftBackward, GPIO.LOW) GPIO.output(rightBackward, GPIO.LOW) sleep(1)
Speichern Sie dies als „rpi-dcmotor.py“ oder einen anderen Dateinamen, solange er mit der Dateierweiterung „.py“ endet. Fahren Sie danach Ihren Raspberry Pi herunter.
2. Aufbau der Schaltung
- Gehen Sie weiter zum L298N-Motorsteuerungsmodul. Wenn Sie sich die Header-Pins ansehen, sollten Sie Jumper-Header sehen, die die ENA- und ENB-Pins mit jedem 5-V-Pin verbinden. Entfernen Sie diese Jumper-Header von der Platine.

Notiz: Diese Jumper-Pins verbinden die EN-Pins automatisch mit 5 V, sodass Sie die Schaltung über die IN-Pins steuern können. Während Sie immer noch Strom durch diesen Pin leiten sollen, können die 5 V einige Probleme für den Raspberry Pi verursachen, der 3,3 V anstelle von 5 V verwenden soll. Wenn Sie diese Pins mit dem Raspberry Pi verbinden, können Sie später die Geschwindigkeit der Motoren steuern.
- Verwenden Sie Jumper-Drähte von Buchse zu Buchse, um die Header-Pins mit dem Raspberry Pi zu verbinden. Für diese Anleitung müssen Sie sie mit diesen Raspberry Pi-Pins verbinden:
- IN1 = Stift 7
- IN2 = Stift 11
- ENA = Stift 13
- IN3 = Stift 8
- IN4 = Stift 10
- ENB = Stift 12

Tipp: Um herauszufinden, welche Pin-Nummer welche auf dem Raspberry Pi ist, halten Sie ihn so, dass die GPIO-Pins rechts sitzen. Das sind die winzigen Metallteile, die auf einem schwarzen Tablett stehen. Wenn Sie dann auf den oberen linken Pin von diesem Fach schauen, ist das Pin 1. Rechts davon ist Pin 2. Unter Pin 1 ist Pin 3 und so weiter.

- Schließen Sie eine Drahtbrücke an die GND-Schraubklemme des L298N an. Verbinden Sie auf dem Raspberry Pi die andere Seite dieser Drahtbrücke mit Pin 9.

- Für die Motoren können Sie sie in jeder gewünschten Richtung einsetzen. Stellen Sie nur sicher, dass Motor 1 an OUT1 und OUT2 und Motor 2 an OUT3 und OUT4 angeschlossen ist.

Notiz: Die meisten Gleichstrommotoren haben normalerweise keine gelöteten Drähte. Sie können sie selbst löten. Jede Stärke kann funktionieren, aber verseilte Kupferdrähte funktionieren am besten.

- Stellen Sie bei der Stromversorgung zunächst sicher, dass sie ausgeschaltet oder getrennt ist. Richten Sie den positiven Teil auf die „+12V“-Seite und den negativen Teil auf GND, zusammen mit dem GND-Überbrückungskabel auf den Raspberry Pi.

3. Damit es funktioniert
Sie können den Code starten, indem Sie das Skript auf dem Terminal ausführen. Aber vorher müssen Sie das L298N-Modul mit Strom versorgen.
Das DC-Motorsteuerungsmodul L298N kann jede DC-Stromquelle so lange wie möglich aufnehmen 45V nicht überschreitet. In Bezug auf die Verfügbarkeit wäre es einfacher, eine 9-V-Batterie mit einer DC-Hohlbuchse zu verwenden, die an die Stromanschlüsse des Moduls angeschlossen ist.

Sie müssen sich auch keine Sorgen machen, dass die 9-V-Batterie Ihren Raspberry Pi ruiniert. Das L298N-Modul verwendet einen speziellen Chip namens MOSFET, der wie ein Relais mit geringer Leistung funktioniert und zu einem elektrischen Schalter wird, der Ihre Pins etwas von der Stromversorgung isoliert hält.
Alles zusammenfügen
Wie bringt das Emittieren von Elektrizität von einem Stift einen Gleichstrommotor zum Drehen? Lassen Sie uns ein wenig tiefer in die Frage eintauchen, wie wir die Motoren zum Drehen bringen.
Motordrehung steuern
Das Motorsteuerungsmodul L298N verwendet mehrere elektrische Schalter, um die Drehung eines Motors zu steuern. Sie können sich diese Schalter wie einen Wandschalter vorstellen, außer dass sie nicht mit den Fingern arbeiten – sie verwenden die 3,3 V vom Raspberry Pi.
Und hier ist die GPIO.output(<insert-pin-here>, GPIO.HIGH) kommt ins Spiel. Setzen Sie diesen Pin auf GPIO.HIGH lässt den besagten Stift 3,3 V emittieren. Dadurch wird der Schalter aktiviert, wodurch Strom in den Motor gelangen kann. Der Stromfluss bringt dann den Motor zum Drehen. Drehen Sie diese Stifte um GPIO.LOW schaltet den Schalter aus und unterbricht die Stromzufuhr zum Motor.
Wir können den Motor rückwärts drehen lassen, indem wir den Stromfluss durch den Motor umkehren. Aus diesem Grund haben wir zwei separate Stifte, die die Drehung eines Motors steuern: den Rückwärtsstift und den Vorwärtsstift. Diese steuern die elektrischen Schalter auf beiden Seiten der Stromversorgung des Motors und senden Strom vorwärts oder rückwärts.
Motordrehzahl einstellen
Es gibt auch den Fall mit der Geschwindigkeit. Im Vergleich zu den Vorwärts- und Rückwärts-Pins steuern die Freigabe-Pins, wie viel Strom zu einem bestimmten Zeitpunkt durch den Motor fließt.
Durch Erhöhen der Spannung an den Aktivierungsstiften öffnen sich ihre Schalter gewissermaßen „weiter“ und lassen mehr Strom durch die Motoren fließen. Durch Hinzufügen von mehr Strom durch die Motoren drehen sie sich schneller. Wenn Sie es reduzieren, werden sie langsamer.
Auf dem Raspberry Pi verwenden wir PWM oder Pulse With Modulation, um den Spannungsausgang eines Pins zu steuern. Eine Erhöhung des Arbeitszyklus bringt die Spannung in die Nähe von maximal 3,3 V, und eine Verringerung bringt sie näher an 0 V.

Tatsächlich können Sie die Motoren irgendwie „ausschalten“, indem Sie ihre Aktivierungsstifte auf 0 V bringen. Stellen Sie sich das ähnlich wie bei einem Auto vor: Die Aktivierungsstifte bringen das Gas, das die Motoren antreibt, während die Vorwärts- und Rückwärtsstifte die Gänge verschieben, die sie geradeaus oder rückwärts laufen lassen.
Tipps: Neben DC-Motoren können Sie mit dem Raspberry Pi auch einen Piezo-Lautsprecher verwenden, um Sound abzuspielen.
Häufig gestellte Fragen
Was ist der Unterschied zwischen einem bürstenbehafteten und einem bürstenlosen Gleichstrommotor?
Diese beiden unterscheiden sich je nachdem, wo sich ihre Elektromagnetspulen befinden. Gebürstete Gleichstrommotoren haben ihre Spulen in der Mitte und drehen sich zwischen einem Kreis von Permanentmagneten. Bürstenlose Gleichstrommotoren haben ihre Spulen auf der gegenüberliegenden Seite – ihre elektromagnetischen Spulen um Permanentmagnete.
Was ist besser: Bürstenmotoren oder bürstenlose Motoren?
Bürstenmotoren sind billig und haben eine gute Leistung bei niedrigen Drehzahlen. Sie erhitzen sich jedoch tendenziell schneller als bürstenlose Motoren und sind weniger energieeffizient. Andererseits können bürstenlose Motoren im Vergleich zu Motoren mit Bürsten höhere Drehzahlen erreichen, weniger überhitzen und weniger Strom verbrauchen, um schneller zu drehen.
Wenn Sie Motoren in Getrieben für Raspberry Pi-Roboterräder verwenden, sollten Bürstenmotoren besser sein. Aber wenn Sie Motoren ohne Getriebe verwenden, wie in einem winzigen elektrischen Lüfter, dann sollten bürstenlose Motoren besser sein.
Was ist die maximale Stromabgabe des L298N-Motortreibermoduls?
Während dies vom Hersteller abhängen kann, können Sie beim L298N-Motortreibermodul mit einem Spitzenstrom von 2 A pro Motor rechnen.
.
Unterstützen Sie unsere Arbeit ❤️
Wenn Ihnen dieser Artikel gefallen hat, können Sie uns mit einem Trinkgeld unterstützen, damit wir weiterhin großartige Inhalte veröffentlichen können.

























