So steuern Sie einen Servomotor mit ESP32 mithilfe von Python: Eine vollständige Anleitung_BLDC_Industry Insights_Kpower
Heim > Brancheneinblicke >BLDC
TECHNISCHE UNTERSTÜTZUNG

Produktunterstützung

So steuern Sie einen Servomotor mit ESP32 mithilfe von Python: Eine vollständige Anleitung

Veröffentlicht 2026-04-05

Diese Anleitung bietet eine Schritt-für-Schritt-Methode zur Steuerung eines StandardsServoMotor mit einem ESP32-Board mit Python. Unabhängig davon, ob Sie einen Roboterarm, eine Schwenk-/Neigekamerahalterung oder eine einfache bewegliche Stütze bauen, lernen Sie die genaue Verkabelung, den Python-Code und die Kalibrierungsschritte kennen, die Sie benötigenServopräzise bewegen. Alle Beispiele basieren auf alltäglichen, realen Situationen, sodass Sie sie sofort auf Ihre eigenen Projekte anwenden können.

01Was Sie brauchen

Ein ESP32-Entwicklungsboard (jede gängige Variante)

Ein Standard 5VServoMotor (z. B. Typ SG90 oder MG995)

Externe 5-V-Stromversorgung (bei Verwendung eines Servos mit hohem Drehmoment)

Überbrückungskabel (Buchse-zu-Buchse)

Ein Computer mit auf dem ESP32 installierter MicroPython-Firmware

> Wichtig: Versorgen Sie niemals einen Servo direkt über den 3,3-V-Pin des ESP32. Die meisten Servos benötigen 5 V und können mehr Strom ziehen, als die Platine sicher liefern kann. Verwenden Sie eine separate 5-V-Stromquelle für das Servo und verbinden Sie nur das Signalkabel mit dem ESP32.

02Hardware-Verbindung – ein echter Fall

Stellen Sie sich vor, Sie bauen eine einfache Roboterklaue, die sich öffnet und schließt. Sie haben ein gewöhnliches MG995-Servo. Connect it as follows:

Servokabel Farbe (typisch) Verbinden mit
Leistung Rot Externer 5V-Pluspol
Boden Braun oder Schwarz Externe 5V-MasseUndESP32 GND
Signal Orange oder Gelb ESP32 GPIO Pin 15 (beliebiger PWM-Pin)

Kritischer Punkt: Die Masse der externen Stromversorgungmussmit dem ESP32 GND verbunden werden. Ohne diese gemeinsame Masse ist das Signal instabil und der Servo zittert oder bewegt sich nicht.

03Python-Code – Schritt für Schritt

Der ESP32 steuert einen Servo, indem er ein 50-Hz-PWM-Signal (Periode = 20 ms) erzeugt. Die Position des Servos wird durch die Impulsbreite bestimmt: 0,5 ms für 0°, 1,5 ms für 90° und 2,5 ms für 180°.

Nachfolgend finden Sie ein vollständiges, getestetes MicroPython-Skript. Speichern Sie es untermain.pyauf deinem ESP32.

vom Maschinenimport-Pin, PWM-Importzeit # GPIO15 verwenden – Sie können zu jedem Pin wechseln, der PWM unterstützt SERVO_PIN = 15 # Standard-Servofrequenz: 50 Hz 20ms)65535 # 0,5 ms -> 1638 (0°) # 1,5 ms -> 4915 (90°) # 2,5 ms -> 8192 (180°) DUTY_0 = 1638 DUTY_90 = 4915 DUTY_180 = 8192 # PWM am Servo-Pin initialisieren servo = PWM(Pin(SERVO_PIN), freq=PWM_FREQ,duty_u16=DUTY_90) # Start bei 90° def set_angle: „““ Setzt den Servowinkel (0° bis 180°). Ordnet den Winkel linear dem Arbeitszyklus zu. „““ # Klemmwinkel auf den gültigen Bereich (Winkel = max(0, min(180, Winkel)) # Lineare Zuordnung: Duty = DUTY_0 + (Winkel/180)(DUTY_180 - DUTY_0) Duty = int(DUTY_0 + (Winkel / 180) * (DUTY_180 - DUTY_0)) servo.duty_u16(duty) # Beispiel: hin und her streichen while True: für Winkel im Bereich(0, 181, 10): set_angle(angle) time.sleep_ms(50) für Winkel im Bereich(180, -1, -10): set_angle(angle) time.sleep_ms(50)

04So verwenden Sie den Code

1. Flashen Sie die MicroPython-Firmware auf Ihren ESP32 (falls noch nicht geschehen).

2. Schließen Sie das Servo wie beschrieben an.

3. Kopieren Sie das Skript mit einem Tool wie z. B. auf die Tafelmpremoteoder Thonny.

4. Führen Sie das Skript aus. Das Servo bewegt sich wiederholt von 0° auf 180° und zurück.

05Kalibrierung – Warum Ihr Servo möglicherweise unterschiedliche Werte benötigt

Verschiedene Servomodelle haben leicht unterschiedliche Impulsbreitenbereiche. Beispielsweise könnte ein billiger SG90 mit 0,5 ms bis 2,4 ms arbeiten, während ein MG996R mit hohem Drehmoment 0,6 ms bis 2,4 ms benötigt. Der übliche Bereich von 0,5–2,5 ms funktioniert für die meisten, Sie sollten jedoch immer kalibrieren.

Kalibrierungsmethode(ein realer Fall aus einem Roboterarmprojekt):

Stellen Sie den Arbeitszyklus auf 1638 ein und notieren Sie den tatsächlichen Winkel.

Wenn das Servo nicht 0° erreicht, erhöhen Sie die Einschaltdauer leicht (z. B. 1700), bis es sich nicht mehr bewegt.

Machen Sie dasselbe für 180°, indem Sie von 8192 aus abnehmen.

Verwenden Sie Ihre gemessenen DUTY_MIN und DUTY_MAX imset_angle()Funktion.

06Häufige Probleme und Lösungen

Problem Höchstwahrscheinliche Ursache Fix
Servo bewegt sich überhaupt nicht Fehlende gemeinsame Masse zwischen ESP32 und Servoleistung Verbinden Sie GND der externen Versorgung mit ESP32 GND
Servo zittert oder zuckt Die PWM-Frequenz beträgt nicht 50 Hz; oder instabile Stromversorgung SatzFrequenz = 50; Verwenden Sie eine separate 5-V-Versorgung mit ausreichend Strom
Servo bewegt sich nur in einem kleinen Bereich Die Betriebswerte sind für Ihr Servo nicht korrekt Kalibrieren Sie wie oben beschrieben; Passen Sie DUTY_0 und DUTY_180 an
ESP32 wird zurückgesetzt, wenn sich der Servo bewegt Der Servo zieht zu viel Strom vom 5-V-Pin der Platine Betreiben Sie das Servo niemals über ESP32; Verwenden Sie eine externe 5-V-Versorgung

07Kernprinzip, das man sich merken sollte

Ein Servo wird durch die Impulsbreite gesteuert, nicht durch den Prozentsatz des Arbeitszyklus.Die Frequenz muss genau 50Hz (Periode 20ms) betragen. Durch Ändern der Impulsbreite zwischen 0,5 ms und 2,5 ms wird der Servo von 0° auf 180° gedreht. In MicroPythonsDuty_u16()Methode hängt die Zuordnung von Impulsbreite zu Tastverhältnis von der PWM-Auflösung ab (immer 16 Bit auf ESP32). Verwenden Sie die bereitgestellten Formeln oder die lineare Zuordnungsfunktion.

08Umsetzbare Empfehlungen

1. Beginnen Sie immer mit einem einfachen Sweep-Test– Es bestätigt die Verkabelung und den grundlegenden PWM-Betrieb.

2. Verwenden Sie einen Logikanalysator oder ein Oszilloskopum die Impulsbreite zu überprüfen, wenn sich das Servo seltsam verhält.

3. Für batteriebetriebene ProjekteFügen Sie einen großen Kondensator (470 µF oder mehr) über die Servostromklemmen hinzu, um Spannungsabfälle zu absorbieren.

4. Wenn Ihr Projekt mehrere Servos erfordert, steuern Sie jeden über einen separaten GPIO-Pin, aber stellen Sie sicher, dass der Gesamtstrom die Nennleistung Ihres Netzteils nicht überschreitet.

09Abschließende Zusammenfassung

Die Steuerung eines Servos mit ESP32 und Python ist unkompliziert: Schließen Sie das Signalkabel an einen beliebigen PWM-fähigen GPIO an, stellen Sie eine separate 5-V-Stromversorgung mit gemeinsamer Masse bereit, erzeugen Sie ein 50-Hz-PWM-Signal und passen Sie den Arbeitszyklus an, um die Impulsbreite zwischen 0,5 ms und 2,5 ms einzustellen. Der bereitgestellte Code funktioniert sofort mit den meisten Standardservos. Wenn der Bewegungsbereich falsch ist, kalibrieren Sie die minimalen und maximalen Betriebswerte für Ihr spezifisches Servo. Jetzt sind Sie bereit, präzise Bewegung in Ihre eigenen ESP32-basierten Projekte zu integrieren.

Aktualisierungszeit: 05.04.2026

Die Zukunft vorantreiben

Wenden Sie sich an den Produktspezialisten von Kpower, um einen geeigneten Motor oder ein geeignetes Getriebe für Ihr Produkt zu empfehlen.

Mail an Kpower
Anfrage senden
WhatsApp-Nachricht
+86 0769 8399 3238
 
kpowerMap