Veröffentlicht 2026-04-18
Dieser Leitfaden bietet eine vollständige, praktische Anleitung zur Steuerung eines StandardsServoMotor mithilfe eines Raspberry Pi-Einplatinencomputers. Sie lernen die genaue Verkabelung, den Python-Code und die PWM-Einstellungen kennen, die für eine präzise Winkelsteuerung erforderlich sind, basierend auf Tests in der Praxis und offizieller Hardwaredokumentation.
Raspberry Pi (jedes Modell mit GPIO-Pins, z. B. 3B+, 4B oder 5)
MicroSD-Karte mit Raspberry Pi OS (Bookworm oder höher)
Standard 5VServoMotor (häufig in der Hobbyrobotik verwendet)
Externe 5-V-Stromversorgung (2 A oder mehr) – die meistenServos ziehen hohen Strom
Überbrückungsdrähte (Buchse zu Buchse)
Kleines Potentiometer (optional, zum Beispiel für manuelle Steuerung)
> Notiz aus der realen Welt: In einem typischen Klassenzimmer- oder Hobby-Setup beschädigen Benutzer häufig ihren Raspberry Pi, indem sie das Servo direkt über den 5-V-Pin mit Strom versorgen. Diese Anleitung zeigt die richtige Methode zur Stromtrennung.
Ein Standard-Servomotor dreht sich nicht kontinuierlich. Stattdessen bewegt es sich basierend auf einem PWM-Signal (Pulsweitenmodulation) in einen bestimmten Winkel (normalerweise 0° bis 180°). Der Raspberry Pi erzeugt dieses Signal auf einem GPIO-Pin.
Kritische Parameter (aus Servodatenblättern und der offiziellen Raspberry Pi-Dokumentation):
Signalfrequenz: 50 Hz (Periode = 20 ms)
Impulsbreite für 0°: 0,5 ms (Einschaltdauer = 2,5 %)
Impulsbreite für 90°: 1,5 ms (Einschaltdauer = 7,5 %)
Impulsbreite für 180°: 2,5 ms (Einschaltdauer = 12,5 %)
Diese Werte sind Industriestandards für die meisten analogen und digitalen Servos. Überprüfen Sie immer anhand des Datenblatts Ihres Servos – es gibt kleine Abweichungen.
Versorgen Sie das Servo niemals direkt über den 5-V-Pin des Raspberry Pi mit Strom.Ein typischer Servo kann während der Bewegung 200–800 mA verbrauchen, und die Spitzenströme übersteigen 1 A. Der 5-V-Pin des Raspberry Pi ist direkt mit dem USB-Eingang verbunden und kann nur etwa 500 mA zuverlässig liefern (weniger bei älteren Modellen). Eine höhere Stromaufnahme kann zu einem Spannungsabfall, einem Einfrieren des Systems oder dauerhaften Schäden führen.
Korrekte Verkabelung (getestet mit gängigen Setups):
Warum Gemeinsamkeiten zwingend erforderlich sind:Das Steuersignal des Servos (0–3,3 V vom Pi) und die Stromversorgung des Servos (5 V von der externen Versorgung) müssen eine gemeinsame Referenzspannung haben. Ohne eine gemeinsame Masse wird das Signal undefiniert und der Servo zittert oder bewegt sich nicht.
Auf dem Raspberry Pi OS ist Python vorinstalliert. Zur Erzeugung präziser PWM-Signale gibt es zwei zuverlässige Methoden. Die empfohlene Methode für Anfänger ist die VerwendungRPi.GPIOmit Hardware-PWM an bestimmten Pins.
Hardware-PWM-fähige GPIO-Pins am 40-Pin-Header des Raspberry Pi:
GPIO12 (Pin 32) – PWM-Kanal 0
GPIO13 (Pin 33) – PWM-Kanal 1
GPIO18 (Pin 12) – PWM-Kanal 0 (am häufigsten verwendet)
GPIO19 (Pin 35) – PWM-Kanal 1
![]()
PWM-Schnittstelle aktivieren (bei Verwendung von Hardware-PWM):Keine zusätzlichen Schritte erforderlich – Hardware-PWM ist immer verfügbar. Für Software-PWM (beliebiger Pin) ist keine Konfiguration erforderlich, aber das Timing ist möglicherweise weniger stabil.
Nachfolgend finden Sie ein vollständiges, getestetes Python-Skript, das den Servo in drei Winkel (0°, 90°, 180°) mit einer Pause von jeweils 2 Sekunden bewegt. Dieser Code folgt der offiziellen RPi.GPIO-Dokumentation.
RPi.GPIO als GPIO-Importzeit importieren # BCM-Pin-Nummerierung verwenden GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) # GPIO18 als PWM-Ausgang einrichten servo_pin = 18 GPIO.setup(servo_pin, GPIO.OUT) # PWM-Instanz bei 50 Hz erstellen pwm = GPIO.PWM(servo_pin, 50) pwm.start(0) # Beginnen mit 0 % Arbeitszyklus def set_servo_angle(angle): „““ Winkel (0-180) in Arbeitszyklus (2,5 bis 12,5) umwandeln Formel: Duty = (Winkel / 180)10 + 2,5 Verifiziert mit mehreren Servodatenblättern „““ wenn Winkel 180: Winkel = 180 Einschaltdauer = (Winkel / 180,0)10,0 + 2,5 pwm.ChangeDutyCycle(duty) # Erlaube dem Servo, die Position zu erreichen time.sleep(0,5) # Stoppen Sie das Senden eines Signals, um Jitter zu reduzieren (optional) pwm.ChangeDutyCycle(0) time.sleep(0,1) try: while True: print("Moving to 0°") set_servo_angle(0) time.sleep(2) print("Moving to 90°") set_servo_angle(90) time.sleep(2) print("Bewegung auf 180°") set_servo_angle(180) time.sleep(2) außer KeyboardInterrupt: print("Vom Benutzer gestoppt") pwm.stop() GPIO.cleanup()
Wichtiges Detail:Nach jeder Position setzt der Code den Arbeitszyklus auf 0 % und wartet 0,1 Sekunden. Dies verhindert eine kontinuierliche Leistungsaufnahme und reduziert Servo-Jitter. Viele Online-Beispiele lassen dies weg, was zu unnötigem Stromverbrauch führt.
Speichern Sie das Skript unterservo_control.py. Führen Sie im Terminal Folgendes aus:
python3 servo_control.py
Erwartetes Verhalten:Die Servowelle dreht sich auf 0°, pausiert 2 Sekunden, bewegt sich auf 90°, pausiert, bewegt sich auf 180° und wiederholt sich dann.
Wenn sich das Servo nicht bewegt:
Überprüfen Sie die Gemeinsamkeiten – der häufigste Fehler
Stellen Sie sicher, dass die externe Stromversorgung eingeschaltet ist und mindestens 5 V liefert
Bestätigen Sie die GPIO-Pin-Nummer (BCM 18 = physischer Pin 12).
Reduzieren Sie die Schlafzeit danachChangeDutyCycle? Nein – das Servo benötigt ca. 300–500 ms, um die Position zu erreichen
Für interaktive Projekte können Sie ein analoges Potentiometer mit einem MCP3008 ADC auslesen (da Raspberry Pi keine analogen Eingänge hat). Eine einfachere Methode zum Testen ist jedoch die Tastatureingabe:
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) pwm = GPIO.PWM(18, 50) pwm.start(0) def angle_to_duty(angle): return (angle / 180.0) * 10.0 + 2.5 try: while True: cmd = input("Enter angle (0-180) or 'q' zum Beenden: ") if cmd == 'q': break try: angle = float(cmd) if 0
Kernpunkt wiederholt:Um ein Servo mit einem Raspberry Pi sicher und genau zu steuern, müssen Sie (1) eine externe 5-V-Stromversorgung für das Servo verwenden, (2) eine gemeinsame Masse zwischen Pi, Servo und Netzteil herstellen, (3) ein 50-Hz-PWM-Signal mit Arbeitszyklen erzeugen, die Impulsen von 0,5–2,5 ms entsprechen, und (4) das PWM-Signal (0 % Arbeitsleistung) nach jeder Bewegung stoppen, um Jitter und Stromverbrauch zu reduzieren.
Aktionsschritte zur Anwendung dieses Leitfadens:
1. Stellen Sie die oben aufgeführten Komponenten zusammen – es sind keine bestimmten Marken erforderlich, jedes Standard-5-V-Servo funktioniert.
2. Verdrahten Sie genau wie gezeigt und überprüfen Sie die gemeinsame Erdungsverbindung noch einmal.
3. Kopieren Sie das Python-Skript und führen Sie es aus. Beobachten Sie, wie sich der Servo auf 0°, 90° und 180° bewegt.
4. Ändern Sie die Winkelwerte im Skript, um sie an die Anforderungen Ihres Projekts anzupassen.
5. Verwenden Sie bei Produktions- oder Langzeitprojekten immer Hardware-PWM und fügen Sie einen 100–470 µF-Elektrolytkondensator über die Servostromleitungen, um Spannungsspitzen zu glätten.
Vertrauenswürdige Quellen zur weiteren Überprüfung:Offizielle Raspberry Pi-Dokumentation (/documentation/computers/os.html#gpio-and-the-40-pin-header) und das Datenblatt des Servomotors (normalerweise auf der Website des Herstellers verfügbar). Beziehen Sie sich immer auf den Impulsbreitenbereich Ihres spezifischen Servos – während 0,5–2,5 ms Standard sind, verwenden einige Servos 0,7–2,3 ms. Ein einfaches Kalibrierungsskript, das den Servo durchläuft und die tatsächlichen Grenzen aufzeichnet, sorgt für perfekte Genauigkeit.
Aktualisierungszeit: 18.04.2026
Wenden Sie sich an den Produktspezialisten von Kpower, um einen geeigneten Motor oder ein geeignetes Getriebe für Ihr Produkt zu empfehlen.