Heim Der Blog Blog Details

Was sind die Methoden zur Steuerung von Motoren mit einem Raspberry Pi?

October 11 2025
Ampheo

Anfrage

Globaler Lieferant elektronischer Komponenten AMPHEO PTY LTD: Umfangreiches Inventar für One-Stop-Shopping. Einfache Anfragen, schnelle, individuelle Lösungen und Angebote.

SCHNELLE ANFRAGE
ZUR RFQ-LISTE HINZUFÜGEN
Die Steuerung von Motoren mit einem Raspberry Pi ist ein grundlegendes Projekt für Robotik, Automatisierung und viele andere Anwendungen. Die Methode, die Sie wählen, hängt ausschließlich von der Art des Motors ab, den Sie steuern müssen.

Die Steuerung von Motoren mit einem Raspberry Pi ist ein grundlegendes Projekt für Robotik, Automatisierung und viele andere Anwendungen. Die Methode, die Sie wählen, hängt ausschließlich von der Art des Motors ab, den Sie steuern müssen.

Was sind die Methoden zur Steuerung von Motoren mit einem Raspberry Pi?

Hier ist ein praktischer, Pi-freundlicher Überblick. Such dir deinen Motortyp aus und kombiniere ihn mit dem passenden Treiber + Verfahren.

Stromversorgung & Sicherheit (zuerst lesen)

  • Motoren niemals vom 5-V-Pin des Pi speisen. Separate Versorgung, auf Blockierstrom dimensioniert; Massen verbinden.

  • Die GPIO-Pins des Pi sind nur 3,3 V (max. ~16 mA pro Pin). GPIO steuert einen Treiber, nicht den Motor.

  • Freilaufdioden über Spulen schalten (sofern der Treiber sie nicht bereits integriert hat). Motorleitungen kurz halten, möglichst verdrillen.


1) Bürsten-Gleichstrommotoren (Brushed DC)

Einsatz, wenn: einfache Drehzahl + Drehrichtung.

Hardware-Optionen

  • Nur eine Richtung: Logik-Level-N-MOSFET (niedriger Rds_on bei 3–4 V Gate), + Diode (z. B. 1N5819) parallel zum Motor.

  • Beide Richtungen: H-Brücke (modern: TB6612FNG, DRV8833; älter/ineffizient: L298N). Oder ein DC-Motor-HAT.

Steuerung

  • Drehzahl: PWM (idealerweise 10–20 kHz, um Pfeifen zu vermeiden).

  • Richtung: H-Brücke über IN1/IN2.

Mini-Beispiel (TB6612/DRV8833-Stil)

 

# pip install gpiozero
from gpiozero import PWMOutputDevice, DigitalOutputDevice
ena = PWMOutputDevice(18)     # PWM
in1 = DigitalOutputDevice(23) # Richtung A
in2 = DigitalOutputDevice(24) # Richtung B

def spin(speed):              # speed in [-1.0..1.0]
    if speed >= 0:
        in1.on(); in2.off()
        ena.value = speed
    else:
        in1.off(); in2.on()
        ena.value = -speed

spin(0.7)   # vorwärts mit 70 %


2) Hobby-Servos (SG90, MG996R, etc.)

Einsatz, wenn: Positionsregelung (0–180°) oder (bei Dauerdrehern) Geschwindigkeitsregelung.

Hardware-Optionen

  • Direkt per GPIO mit Hardware-PWM (am besten via pigpio), oder I²C-PWM-Expander wie PCA9685 für viele Servos.

Steuerung

  • 50 Hz, Pulsbreite ~1–2 ms.

Beispiel (ein Servo mit pigpio)

 
# sudo pigpiod ; pip install pigpio
import pigpio, time
pi = pigpio.pi()
servo_pin = 18
for us in (1000, 1500, 2000):
    pi.set_servo_pulsewidth(servo_pin, us)  # 1000..2000 µs
    time.sleep(1)
pi.set_servo_pulsewidth(servo_pin, 0)       # aus

3) Schrittmotoren

Einsatz, wenn: präzise Schritte (ohne interne Rückmeldung).
Übliche Treiber: A4988, DRV8825, TMC2208/2209 (Step/Dir). Für 28BYJ-48 (unipolar): ULN2003-Board.

Steuerung

  • STEP-Impulse senden; DIR legt Richtung fest. Für weichen Lauf Beschleunigungsrampen nutzen.

Beispiel (A4988/DRV8825)

 
import RPi.GPIO as GPIO, time
STEP, DIR = 18, 23
GPIO.setmode(GPIO.BCM)
GPIO.setup([STEP, DIR], GPIO.OUT)
GPIO.output(DIR, GPIO.HIGH)   # Richtung
for _ in range(200):          # 200 Schritte = 1 Umdrehung (1,8°), ohne Microstepping
    GPIO.output(STEP, GPIO.HIGH); time.sleep(0.001)
    GPIO.output(STEP, GPIO.LOW);  time.sleep(0.001)
GPIO.cleanup()

4) BLDC (bürstenlos) über ESC

Einsatz, wenn: hohe Leistung, Lüfter, Räder, Propeller.
Hardware: BLDC + ESC (Electronic Speed Controller). ESC akzeptiert Servo-ähnliches PWM.

Steuerung

  • Wie beim Servo (50 Hz). Viele ESCs benötigen eine Armierung/Kalibrierung (min → max → min).

Beispiel

 
import pigpio, time
pi = pigpio.pi()
esc_pin = 18
pi.set_servo_pulsewidth(esc_pin, 1000)  # minimaler Schub (armen)
time.sleep(2)
pi.set_servo_pulsewidth(esc_pin, 1500)  # Mittel
time.sleep(2)
pi.set_servo_pulsewidth(esc_pin, 0)     # aus

5) Smarte Motorcontroller / HATs (Multi-Motor, Closed-Loop)

  • I²C/SPI-HATs: z. B. DC & Stepper HATs (PCA9685 + Treiberbrücken) — einfache Mehrmotor-Steuerung.

  • UART/USB-Controller: Roboclaw, VESC, ODrive (BLDC-FOC, Encoder-Feedback), Pololu Jrk. Ansteuerung per Serial, CAN oder USB; Strombegrenzung, PID-Regelung und Telemetrie laufen auf dem Controller, nicht auf dem Pi.


6) Rückmeldung & Regelung (Closed-Loop)

  • Encoder (Quadratur, Magnet, Hall-Index) für Drehzahl/Position.

    • Interrupt-fähige Bibliotheken nutzen (pigpio.callback) für zuverlässiges Zählen.

  • PID in Python umsetzen (simple-pid) oder vom smarten Controller erledigen lassen.

  • Für Stepper: externe Encoder nachrüsten oder Closed-Loop-Stepper-Treiber verwenden.


Schnellwahl (Spickzettel)

Motortyp Typischer Treiber Ansteuerung vom Pi Hinweise
Bürsten-DC MOSFET (1-Richtung), H-Brücke (TB6612/DRV8833) GPIO + PWM Einfach, günstig; Diode; 10–20 kHz PWM
Servo GPIO-PWM oder PCA9685 50 Hz, 1–2 ms Separate 5–6 V-Schiene; hoher Blockierstrom
Stepper (bipolar) A4988/DRV8825/TMC STEP/DIR-Impulse Rampen nutzen; gutes Drehmoment bei niedriger Drehzahl
BLDC + ESC ESC Servo-ähnliches PWM Kalibrieren/armen; sehr hohe Leistung möglich
High-Power/Closed-Loop ODrive/VESC/Roboclaw UART/USB/CAN + API Integriertes Current/PID/Telemetrie

Verdrahtungs-Checkliste (spart Nerven)

  • Gemeinsame Masse zwischen Pi, Treiber-Logik und Motorversorgung.

  • Stützkondensatoren am Treiber (z. B. 100 µF Elko + 0,1 µF Keramik).

  • Motorversorgung getrennt vom Pi halten; bei gemeinsamer Netzquelle Buck-Wandler für 5 V-Logik nutzen.

  • Logik-Level-MOSFETs mit großzügiger Strom/Spannungs-Reserve.

  • Treiber kühlen; Strombegrenzung bei Stepper-Treibern korrekt einstellen (Vref).

  • EMV: Motorleitungen verdrillen, ggf. Snubber; Motorleitungen von CSI/DSI/Ribbon-Kabeln des Pi fernhalten.


Nützliche Python-Bibliotheken

  • gpiozero: High-Level-Klassen für Motor/Servo.

  • pigpio: präzise PWM/Servo + Encoder-Callbacks (Daemon-basiert).

  • RPi.GPIO: klassisch, simpel; weniger präzise PWM.

  • smbus2/adafruit-blinka: für I²C-HATs/Expander.

  • pyvesc/odrive: Kommunikation mit VESC/ODrive.

Ampheo