Raspberry Pi - DC Motor
Diese Anleitung zeigt Ihnen, wie Sie mit dem Raspberry Pi einen DC Motor steuern. Im Detail lernen wir:
- Wie ein DC Motor funktioniert
- Wie Sie Raspberry Pi und L298N Driver verwenden, um einen DC Motor zu steuern
- Wie Sie den Raspberry Pi programmieren, um Geschwindigkeit und Richtung eines DC Motors zu kontrollieren
- Wie Sie den Raspberry Pi programmieren, um zwei DC Motoren gleichzeitig zu steuern
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über DC Motor
DC Motor Pinout
Ein DC Motor hat zwei Drähte, wobei der positive normalerweise rot und der negative normalerweise schwarz ist.

Funktionsweise
Beim Kauf eines DC Motors ist es wichtig, die Betriebsspannung zu verstehen. Betrachten wir zum Beispiel einen 12V DC Motor.
Wenn Sie den 12V DC Motor mit einer 12V Stromquelle versorgen:
- Verbinden Sie 12V und GND mit dem positiven bzw. negativen Draht: der DC Motor dreht sich mit maximaler Geschwindigkeit im Uhrzeigersinn
- Verbinden Sie 12V und GND mit dem negativen bzw. positiven Draht: der DC Motor dreht sich mit maximaler Geschwindigkeit gegen den Uhrzeigersinn
Wie bereits erwähnt, kehrt das Vertauschen der Strompolung zwischen den beiden Drähten des DC Motors dessen Drehrichtung um. Dies ist eine Möglichkeit, die Richtung des DC Motors zu steuern, aber nicht durch manuelle Änderung, sondern durch Programmierung.
Wenn die Spannung der Stromversorgung für einen DC Motor weniger als 12V beträgt, wird er sich immer noch drehen, aber nicht mit maximaler Geschwindigkeit. Das bedeutet, dass wir durch Änderung der Spannung die Geschwindigkeit des DC Motors verändern können. Dieser Ansatz wird jedoch normalerweise nicht verwendet, da es schwierig ist, die Spannung der Stromquelle zu kontrollieren. Daher wird die Spannung der Stromquelle konstant gehalten und die Geschwindigkeit des DC Motors durch ein PWM-Signal reguliert. Je größer das Tastverhältnis des PWM, desto schneller dreht sich der DC Motor.

DC Motor mit Raspberry Pi steuern
Die Steuerung eines DC Motors umfasst zwei Faktoren: Geschwindigkeit und Richtung. Der Raspberry Pi kann ein PWM-Signal erzeugen, aber dieses Signal hat niedrige Spannung und Strom, sodass es nicht direkt zur Motorsteuerung verwendet werden kann. Wir benötigen einen Hardware-Driver zwischen Raspberry Pi und dem DC Motor. Der Driver erfüllt zwei Aufgaben:
- Verstärkung des PWM-Signals vom Raspberry Pi (in Bezug auf Strom und Spannung) für die Geschwindigkeitssteuerung
- Empfang des Steuersignals vom Raspberry Pi zum Umschalten der Polarität der Stromversorgung für die Richtungssteuerung.

※ Notiz:
- Diese Anleitung kann für jeden DC Motor verwendet werden. Wir verwenden einen 12V DC Motor als Beispiel.
- Bei der Steuerung eines 5V DC Motors ist ein Driver zwischen Raspberry Pi und DC Motor erforderlich, obwohl der Raspberry Pi Pin 5V ausgibt (was der DC Motor Spannung entspricht), da der Raspberry Pi Pin nicht genug Strom für den DC Motor liefern kann.
Es gibt viele Arten von Chips und Modulen, die als Driver zur Steuerung von DC Motoren verwendet werden können. In dieser Anleitung verwenden wir ein Modul namens L298N.
Über L298N Driver
Der L298N Driver kann zur Steuerung von DC Motoren und Schrittmotoren verwendet werden. Diese Anleitung zeigt Ihnen, wie Sie ihn zur Steuerung des DC Motors verwenden.
L298N Driver Pinout

Der L298N Driver kann zwei DC Motoren unabhängig und gleichzeitig steuern, bezeichnet als Motor A und Motor B. Dieser Driver hat insgesamt 13 Pins.
Die gemeinsamen Pins für beide Motoren:
- VCC Pin: Dieser Pin versorgt den Motor mit Strom und kann von 5V bis 35V reichen.
- GND Pin: Dieser Pin ist mit der Masse (0V) verbunden und dient als gemeinsame Masse.
- 5V Pin: Dieser Pin versorgt das L298N Modul mit Strom und kann vom 5V Ausgang eines Raspberry Pi stammen.
Motor A Pins (Kanal A):
- ENA Pins: Diese Pins werden zur Regelung der Geschwindigkeit von Motor A verwendet. Durch Entfernen des Jumpers und Verbinden dieses Pins mit einem PWM-Eingang können wir die Geschwindigkeit von Motor A steuern.
- IN1 & IN2 Pins: Diese Pins sind für die Steuerung der Drehrichtung von Motor A zuständig. Wenn einer davon auf HIGH und der andere auf LOW gesetzt ist, dreht sich Motor A. Wenn beide Eingänge entweder HIGH oder LOW sind, stoppt Motor A.
- OUT1 & OUT2 Pins: Diese Pins sind mit Motor A verbunden.
Motor B Pins (Kanal B):
- Wenn die Eingänge IN3 & IN4 HIGH oder LOW sind, dreht sich Motor B und die OUT3 & OUT4 Pins liefern den Strom zum Motor.
- ENB Pins: können zur Steuerung der Geschwindigkeit von Motor B verwendet werden. Durch Entfernen des Jumpers und Verbinden dieses Pins mit einem PWM-Eingang können wir die Geschwindigkeit von Motor B steuern.
- IN3 & IN4 Pins: sind für die Steuerung der Drehrichtung von Motor B zuständig. Wenn einer davon HIGH und der andere LOW ist, dreht sich Motor B. Wenn beide Eingänge entweder HIGH oder LOW sind, stoppt Motor B.
- OUT3 & OUT4 Pins: sind mit Motor B verbunden. Wenn die Eingänge IN3 & IN4 HIGH oder LOW sind, dreht sich Motor B und die OUT3 & OUT4 Pins liefern den Strom zum Motor.
Der L298N Driver hat zwei Eingangsstromquellen:
- Eine für den DC Motor (VCC und GND Pins) von 5 bis 35V.
- Eine für den internen Betrieb des L298N Moduls (5V und GND Pins) mit einem Spannungsbereich von 5 bis 7V.
Entfernen Sie alle Jumper vom L298N Driver zur Vereinfachung. Dies ist notwendig, da die Jumper für erweiterte Anwendungen oder andere Zwecke verwendet werden.
Wir können zwei DC Motoren unabhängig und gleichzeitig mit einem Raspberry Pi und einem L298N Driver steuern. Um jeden Motor zu steuern, benötigen wir nur drei Pins vom Raspberry Pi.
※ Notiz:
Der Rest dieser Anleitung konzentriert sich auf die Steuerung eines DC Motors mit Kanal A. Ähnliche Schritte können zur Steuerung des anderen DC Motors unternommen werden.
Geschwindigkeitssteuerung des DC Motors über L298N Driver
Es ist einfach, die Geschwindigkeit eines DC Motors anzupassen, indem ein PWM-Signal zum ENA Pin des L298N erzeugt wird. Dies kann folgendermaßen erreicht werden:
- Verbinden Sie einen Raspberry Pi Pin mit dem ENA des L298N
- Erzeugen Sie ein PWM-Signal zum ENA Pin mit der pwm.ChangeDutyCycle() Funktion. Der L298N Driver verstärkt das PWM-Signal zum DC Motor.
Die Geschwindigkeit liegt im Bereich von 0 bis 100. Wenn die Geschwindigkeit 0 ist, bewegt sich der Motor nicht. Wenn die Geschwindigkeit 100 ist, dreht sich der Motor mit höchster Geschwindigkeit.
Richtungssteuerung des DC Motors über L298N Driver
Die Drehung eines Motors kann durch Anlegen von logisch HIGH/LOW an die IN1 und IN2 Pins gesteuert werden. Die folgende Tabelle zeigt, wie die Richtung in beiden Kanälen gesteuert wird.
| IN1 Pin | IN2 Pin | Richtung |
|---|---|---|
| LOW | LOW | Motor A stoppt |
| HIGH | HIGH | Motor A stoppt |
| HIGH | LOW | Motor A dreht sich im Uhrzeigersinn |
| LOW | HIGH | Motor A dreht sich gegen den Uhrzeigersinn |
Entsprechend:
- Raspberry Pi zur Steuerung von Motor A in Uhrzeigerrichtung.
- Raspberry Pi zur Steuerung von Motor A in Gegen-Uhrzeigerrichtung.
※ Notiz:
Die Drehrichtung des Motors kann umgekehrt werden, indem die OUT1 und OUT2 Pins in umgekehrter Weise mit den zwei Pins des DC Motors verbunden werden. Dazu ist es notwendig, entweder die OUT1 und OUT2 Pins zu vertauschen oder das Steuersignal an den IN1 und IN2 Pins im Code zu ändern.
DC Motor zum Stillstand bringen
Zwei Methoden zum Anhalten eines DC Motors sind:
- Die Geschwindigkeit auf null reduzieren
- Beide IN1 und IN2 Pins auf denselben Wert setzen, entweder LOW oder HIGH.
- Oder
DC Motor mit L298N Driver steuern.
Schaltdiagramm
Entfernen Sie alle drei Jumper vom L298N Modul vor dem Anschließen.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Um Ihren Verdrahtungsaufbau zu vereinfachen und zu organisieren, empfehlen wir die Verwendung eines Schraubklemmenblock-Shields für Raspberry Pi. Dieses Shield gewährleistet sicherere und besser verwaltbare Verbindungen, wie unten gezeigt:

Raspberry Pi Code
Wir schreiben Python-Code, der auf dem Raspberry Pi läuft, um folgendes zu tun:
- Die Geschwindigkeit eines DC Motors erhöhen
- Die Richtung ändern
- Die Geschwindigkeit eines DC Motors verringern
- Den Motor anhalten
Schnelle Schritte
- Entfernen Sie alle drei Jumper vom L298N Modul.
- Stellen Sie sicher, dass Sie Raspbian oder ein anderes Raspberry Pi-kompatibles Betriebssystem auf Ihrem Pi installiert haben.
- Stellen Sie sicher, dass Ihr Raspberry Pi mit demselben lokalen Netzwerk wie Ihr PC verbunden ist.
- Stellen Sie sicher, dass Ihr Raspberry Pi mit dem Internet verbunden ist, falls Sie Bibliotheken installieren müssen.
- Wenn Sie zum ersten Mal einen Raspberry Pi verwenden, siehe Raspberry Pi einrichten
- Verbinden Sie Ihren PC über SSH mit dem Raspberry Pi mit dem integrierten SSH-Client unter Linux und macOS oder PuTTY unter Windows. Siehe PC mit Raspberry Pi über SSH verbinden.
- Stellen Sie sicher, dass Sie die RPi.GPIO Bibliothek installiert haben. Falls nicht, installieren Sie sie mit folgendem Befehl:
- Erstellen Sie eine Python-Script-Datei dc_motor.py und fügen Sie folgenden Code hinzu:
- Speichern Sie die Datei und führen Sie das Python-Script aus, indem Sie folgenden Befehl im Terminal eingeben:
Das Script läuft in einer Endlosschleife kontinuierlich, bis Sie Ctrl + C im Terminal drücken.
Sie werden beobachten:
- Der DC Motor wird beschleunigen, dann 1 Sekunde lang mit maximaler Geschwindigkeit drehen.
- Die Richtung des DC Motors wird geändert.
- Der DC Motor wird 1 Sekunde lang mit maximaler Geschwindigkeit in die entgegengesetzte Richtung drehen.
- Der DC Motor wird abbremsen.
- Der DC Motor wird 1 Sekunde lang stillstehen.
- Dieser Prozess wird kontinuierlich wiederholt.
※ Notiz:
Diese Anleitung zeigt Ihnen, wie Sie die Geschwindigkeit eines DC Motors im Verhältnis zu seiner maximalen Geschwindigkeit anpassen. Um die absolute Geschwindigkeit (Umdrehungen pro Sekunde) zu steuern, benötigen wir einen PID-Controller und einen Encoder. Die Steuerung der absoluten Geschwindigkeit des DC Motors wird in einer anderen Anleitung behandelt.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.