Veröffentlicht 2026-04-13
Pulsweitenmodulation (PWM) ist die Standardmethode zur präzisen Steuerung der Winkelposition eines StandardhobbysServoMotor. Durch Variieren der Breite des an das Gerät gesendeten elektrischen ImpulsesServoAlle 20 Millisekunden können Sie das befehlenServoum sich in einen bestimmten Winkel zu bewegen, normalerweise zwischen 0 und 180 Grad. Dieser Leitfaden enthält die genauen Signalspezifikationen, eine Schritt-für-Schritt-Steuerungslogik, praktische Beispiele und Tipps zur Fehlerbehebung, damit Sie die PWM-Servosteuerung sofort implementieren können.
Ein Standard-Servomotor enthält einen kleinen Steuerkreis, der das eingehende PWM-Signal liest. Die Position der Abtriebswelle des Servos wird ausschließlich durch die bestimmtPulsbreite(Dauer des High-Signals) innerhalb eines festen 20 ms (50 Hz) Rahmens. Der Zusammenhang ist linear: Eine bestimmte Impulsbreite entspricht einem bestimmten Zielwinkel.
Standard-Puls-zu-Winkel-Zuordnung (für 0–180°-Servos):
0 Grad:0,5-ms-Impuls (500 Mikrosekunden)
90 Grad (neutral):1,5-ms-Impuls (1500 Mikrosekunden)
180 Grad:2,5-ms-Impuls (2500 Mikrosekunden)
Diese Werte entsprechen dem Industriestandard. Überprüfen Sie immer das Datenblatt Ihres Servos, aber über 95 % der Standardservos befolgen genau diese Zuordnung.
Um den Servowinkel zu steuern, müssen Sie ein sich wiederholendes Signal mit zwei Schlüsselparametern erzeugen:
Das Servo erwartet alle 20 Millisekunden einen neuen Impuls. Das bedeutet, dass die PWM-Frequenz 1 / 0,02 s = 50 Hz beträgt. Ändern Sie diese Frequenz nicht; Andernfalls zittert das Servo oder reagiert nicht.
Verwenden Sie diese lineare Interpolationsformel:
Impulsbreite (ms) = 0,5 + (Winkel / 180) 2.0
Zum Beispiel:
Winkel = 45° → Impuls = 0,5 + (45/180)2,0 = 0,5 + 0,5 =1,0 ms
Winkel = 135° → Impuls = 0,5 + (135/180)2.0 = 0.5 + 1.5 = 2,0 ms
In der Praxis stellen Sie einen Timer ein: Geben Sie HIGH für die Impulsbreite aus (z. B. 1,5 ms) und geben Sie dann LOW für die verbleibende Zeit aus (20 ms – 1,5 ms = 18,5 ms). Kontinuierlich wiederholen.
Stellen Sie sich vor, Sie haben ein Servo, das an einen Roboterarm angeschlossen ist. Sie möchten, dass es sich schrittweise von ganz links (0°) nach ganz rechts (180°) bewegt.
Signalsequenz (jede Zeile ist ein 20-ms-Zyklus):
Zyklus 1: HIGH für 0,5 ms → Servo fährt auf 0°
Zyklus 2: HIGH für 1,0 ms → Servo fährt auf 45°
Zyklus 3: HIGH für 1,5 ms → Servo fährt auf 90°
Zyklus 4: HIGH für 2,0 ms → Servo bewegt sich auf 135°
Zyklus 5: HIGH für 2,5 ms → Servo fährt auf 180°
Beobachtetes Verhalten:Das Servo bewegt sich zu jedem Winkel und hält diese Position. Es driftet nicht, da die Steuerschaltung ständig die Zielimpulsbreite erhält.
Sie können das erforderliche PWM-Signal erzeugen mit:
Mikrocontroller-Timer-/Zählermodule– Richten Sie eine 50-Hz-PWM mit variablem Arbeitszyklus ein. Arbeitszyklus = (Impulsbreite / 20 ms) 100 %. Für einen 1,5-ms-Impuls beträgt das Tastverhältnis 7,5 %.
Software-Bit-Banging– Steuern Sie einen GPIO-Pin direkt mit Verzögerungen. Weniger präzise, eignet sich aber zum Lernen.
Dedizierte Servotreibermodule– Diese entlasten die Timing-Präzision, erfordern aber immer noch den gleichen Impulsbereich von 0,5–2,5 ms.
Kritische Präzisionsanforderung:Die Genauigkeit der Impulsbreite muss innerhalb von ±10 µs (Mikrosekunden) liegen. Jitter oder falsche Winkel treten auf, wenn Ihr Timing um mehr als 20 µs abweicht.
Echter Fall:Ein häufiger Fehler ist die Verwendung eines Bereichs von 1,0–2,0 ms, da einige Mikrocontroller-Bibliotheken diesen standardmäßig verwenden. Ein Benutzer berichtete, sein Servo habe sich insgesamt nur um 90° gedreht. Nach Änderung des Pulsbereichs auf 0,5–2,5 ms wurde die volle 180°-Rotation wiederhergestellt.
PWM steuert den Servowinkel anhand der Impulsbreite, nicht nur anhand des Arbeitszyklus.Für einen festen Zeitraum von 20 ms bestimmt die absolute High-Zeit (0,5 bis 2,5 ms) die Position.
Der Zusammenhang ist linear:Impulsbreite = 0,5 ms + (Winkel/180)*2,0 ms.
Verwenden Sie immer 50 Hz (20 ms Periode).Jede andere Frequenz führt zu unregelmäßigem Verhalten oder zu keiner Bewegung.
Überprüfen Sie Ihre minimale und maximale Impulsbreite.Die meisten Probleme sind auf einen falschen Impulsbereich und nicht auf einen Hardwarefehler zurückzuführen.
Befolgen Sie diese Schritte sofort, um konsistente Ergebnisse zu erhalten:
1. Messen Sie die tatsächliche Reaktion Ihres Servos.Senden Sie Impulse von 0,5 ms, 1,5 ms und 2,5 ms. Markieren Sie die physikalischen Winkel. Wenn sie nicht 0°, 90°, 180° sind, zeichnen Sie die tatsächliche Puls-Winkel-Zuordnung auf.
2. Fügen Sie einen Sicherheitsspielraum von 100–200 µs hinzuan beiden Enden (min. Impuls = 0,6 ms, max. = 2,4 ms), um mechanische Bindungen zu verhindern.
3. Verwenden Sie eine dedizierte Timer-Hardwarestatt Software-Verzögerungen, wenn möglich. Timerbasiertes PWM sorgt für Präzision, selbst wenn Ihr Hauptcode ausgelastet ist.
4. Testen Sie mit einem Logikanalysator oder Oszilloskopum die Pulsbreiten zu bestätigen. Viele Softwaresimulationen verbergen Timing-Fehler.
5. Für Multi-Servo-ProjekteHalten Sie die Stromversorgung von der Logikversorgung getrennt. Ein blockierter Servo kann 1–2 A verbrauchen, was zu Spannungsabfällen führt, die die PWM-Signale verfälschen.
Durch die strikte Einhaltung des Impulsbreitenbereichs von 0,5–2,5 ms innerhalb eines Zeitraums von 20 ms erreichen Sie eine präzise, wiederholbare Winkelsteuerung bei jedem Standard-Servomotor. Implementieren Sie zuerst den Messschritt und optimieren Sie dann Ihren Code, und Ihr Servo bewegt sich genau dorthin, wo Sie es befehlen.
Aktualisierungszeit: 13.04.2026
Wenden Sie sich an den Produktspezialisten von Kpower, um einen geeigneten Motor oder ein geeignetes Getriebe für Ihr Produkt zu empfehlen.