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.
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.
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:
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.
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)
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.
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.
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.
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.
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
Wenden Sie sich an den Produktspezialisten von Kpower, um einen geeigneten Motor oder ein geeignetes Getriebe für Ihr Produkt zu empfehlen.