Veröffentlicht 2026-04-17
Dieser Leitfaden bietet eine klare und praktische Erklärung, wie genau ein Mikrocontroller den Drehwinkel eines Standards steuertServoMotor. Sie lernen das grundlegende Funktionsprinzip, das genaue erforderliche elektrische Signal und die vollständige Schritt-für-Schritt-Methode zur Generierung dieses Signals mit jedem gängigen Mikrocontroller kennen. Auf Markennamen oder spezifische Unternehmensprodukte wird nicht verwiesen – es werden nur allgemeine, weithin anwendbare Prinzipien und Beispiele aus der Praxis verwendet.
Ein StandardServoMotor tut esnichtrotieren kontinuierlich wie ein normaler Gleichstrommotor. Stattdessen bewegt es sich zu einer bestimmten Winkelposition (z. B. 0°, 90° oder 180°) und hält diese Position. Der Winkel wird vollständig durch die Breite eines elektrischen Impulses gesteuert, der alle 20 Millisekunden (ms) gesendet wird.
Der direkte Zusammenhang ist:
Impulsbreite zwischen 1,0 ms und 2,0 ms → Winkel zwischen 0° und 180°(für die meisten gängigen Servos)
Ein 1,0-ms-Impuls → 0° (ganz gegen den Uhrzeigersinn)
Ein 1,5 ms Impuls → 90° (Mittelstellung)
Ein 2,0-ms-Impuls → 180° (ganz im Uhrzeigersinn)
> Beispiel aus der Praxis:Bei einem Hobby-Roboterarm sendet der Mikrocontroller einen sich wiederholenden 1,0-ms-Impuls, um den Greifer vollständig zu schließen (0°). Um den Greifer vollständig (180°) zu öffnen, sendet er einen 2,0 ms langen Impuls. Bei halboffener Stellung (90°) sendet er einen 1,5 ms langen Impuls.
Dieses Signal heißtPulsweitenmodulation (PWM)– eine Methode, bei der der Mikrocontroller ein digitales Signal ausgibt, das sehr schnell zwischen EIN (5 V oder 3,3 V) und AUS (0 V) wechselt und die Dauer des EIN-Impulses vom Servo gelesen wird.
Befolgen Sie diese Schritte genau, um jedes Standard-Servo mit einem beliebigen Mikrocontroller zu steuern:
Die meisten Standardservos arbeiten mit:
Stromspannung:4,8V – 6,0V (Stromversorgung,nichtvon Mikrocontroller-Pins)
Steuersignalspannung:3,3 V oder 5 V (entspricht dem Logikpegel des Mikrocontrollers)
Pulswiederholungsperiode:20 ms (50 Hz Frequenz)
Impulsbreitenbereich:1,0 ms bis 2,0 ms (für 0° bis 180°)
Wichtig:Überprüfen Sie das Datenblatt Ihres Servos auf den genauen Impulsbreitenbereich. Einige Servos verwenden 0,5 ms bis 2,5 ms für 0°–180° oder 1,0 ms bis 2,0 ms für 0°–90°. Das Prinzip bleibt identisch.
Ein Standardservo hat drei Drähte:
Kritischer Sicherheitshinweis:Versorgen Sie ein Servo niemals direkt über den 5-V-Pin eines Mikrocontrollers mit Strom. Ein Servo kann 200–1000 mA ziehen, was die meisten Mikrocontroller-Pin-Nennwerte übersteigt. Verwenden Sie eine separate 5-V-Stromversorgung mit gemeinsamer Masse.
Jeder Mikrocontroller verfügt über integrierte PWM-Timer. Die Konfiguration erfordert die Einstellung von zwei Parametern:
Frequenz = 50 Hz(Periode = 20 ms)
Auflösung(typischerweise 8-Bit bis 16-Bit, abhängig vom Mikrocontroller)
Beispiel einer generischen Berechnung (für jeden Mikrocontroller):
Wenn Ihre PWM-Auflösung 8 Bit (0 bis 255) beträgt und die Gesamtperiode 20 ms (20.000 µs) beträgt:
1,0 ms Impuls → Tastverhältnis = (1,0 ms / 20 ms) × 255 = 12,75 → 13 verwenden
1,5 ms Impuls → Tastverhältnis = (1,5 ms / 20 ms) × 255 = 19,125 → 19 verwenden
2,0 ms Impuls → Tastverhältnis = (2,0 ms / 20 ms) × 255 = 25,5 → 26 verwenden
Fall aus der Praxis:Ein gewöhnlicher 8-Bit-Mikrocontroller, der auf 50-Hz-PWM eingestellt ist, schreibt einen Wert von 13 in das PWM-Vergleichsregister, um 0° zu erreichen, 19 für 90° und 26 für 180°.
Die Codelogik ist auf allen Mikrocontrollern immer gleich:
1. Initialisieren Sie die PWM-Hardware mit einer Frequenz von 50 Hz.
2. Berechnen Sie die erforderliche Impulsbreite in Mikrosekunden für Ihren Zielwinkel mithilfe der linearen Formel:
Impulsbreite (µs) = 1000 + (Winkel / 180) × 1000(für den Bereich 1,0–2,0 ms)
Winkel 0° → 1000 µs
Winkel 90° → 1500 µs
Winkel 180° → 2000 µs
3. Konvertieren Sie die Impulsbreite in den Arbeitszyklusregisterwert des Mikrocontrollers.
4. Schreiben Sie diesen Wert auf den PWM-Ausgangspin.
Allgemeiner Pseudocode (anpassbar an jeden Mikrocontroller):
// Angenommen, der PWM-Timer ist bereits für 50 Hz, 8-Bit-Auflösung konfiguriert int targetAngle = 90; // Grad int pulsWidth_us = 1000 + (targetAngle1000 / 180); int DutyCycleValue = (pulseWidth_us255) / 20000; setPWMDutyCycle(PWM_PIN, DutyCycleValue);
Verwenden Sie nach dem Hochladen des Codes ein Oszilloskop oder einen Logikanalysator, um das Signal zu überprüfen:
Die Frequenz sollte 50 Hz betragen(Periode = 20 ms)
Die Impulsbreite sollte Ihrem berechneten Wert entsprechen(z. B. 1,5 ms für 90°)
Häufiges Problem in der Praxis:Wenn der Servo zittert oder sich nicht bewegt, ist die Impulsbreite wahrscheinlich falsch. Messen Sie direkt am Signalpin. Ein Fehler von 0,05 ms kann eine Abweichung von 5°–10° verursachen.
Hier ist ein vollständiges, generisches Beispiel, das nach geringfügiger Syntaxanpassung auf jedem Mikrocontroller funktioniert. Auf die Logik kommt es an.
Szenario:Eine einfache Kameraschwenkplattform. Das Servo sollte kontinuierlich von 0° auf 180° und zurück schwenken.
Schritt-für-Schritt-Implementierungslogik:
1. Stellen Sie die PWM-Frequenz auf 50 Hz ein.
2. Definieren Sie eine FunktionsetAngle(Winkel)Das:
Spannwinkel zwischen 0° und 180°
Berechnet Impulsbreite = 1000 + (Winkel × 1000 / 180) Mikrosekunden
Konvertiert in den Duty-Cycle-Registerwert
Schreibt auf den PWM-Pin
3. In der Hauptschleife:
Erhöhen Sie den Winkel von 0° bis 180° in Schritten von 1°
AnrufsetAngle(Winkel)für jeden Schritt
15 ms warten (ermöglicht die physische Bewegung des Servos)
Dann verringern Sie den Winkel wieder auf 0°
Erwartetes Ergebnis:Das Servo dreht sich sanft von einem Ende zum anderen und stoppt genau bei jedem berechneten Winkel.
Verwenden Sie diese Tabelle zur schnellen Überprüfung ohne Berechnungen:
Notiz:Wenn Ihr Servo 0° oder 180° nicht genau erreicht, passen Sie die minimale und maximale Impulsbreite leicht an (z. B. 950 µs für 0°, 2050 µs für 180°). Dies ist aufgrund von Fertigungstoleranzen normal.
Bei der Pulsweitensteuerungsmethode handelt es sich um eine analoge Servoschnittstelle nach Industriestandard, die seit Jahrzehnten verwendet wird. Jedes Standardservo – unabhängig vom Hersteller – reagiert auf den gleichen Impulsbereich von 1,0–2,0 ms. Das heisst:
Sie können jedes Standard-Servo mit jedem Mikrocontroller steuern, der 50-Hz-PWM ausgibt.
Die gleiche Codelogik funktioniert für Mikrocontroller von 8 Bit bis 32 Bit.
Es sind keine proprietären Bibliotheken oder markenspezifischen Funktionen erforderlich.
Grundprinzip, das Sie sich merken sollten:
> Der Servowinkel beträgtdirekt proportionalauf die Impulsbreite zwischen 1,0 ms und 2,0 ms, alle 20 ms wiederholt. Ändern Sie die Impulsbreite und Sie ändern den Winkel – nichts anderes zählt.
Sofortiger Aktionsplan zur Umsetzung heute:
1. Überprüfen Sie den Impulsbereich Ihres Servos– Überprüfen Sie das Datenblatt auf minimale/mittlere/maximale Impulsbreiten. Die meisten verwenden 1,0/1,5/2,0 ms für 0/90/180°.
2. Richten Sie das PWM Ihres Mikrocontrollers ein– Konfigurieren Sie einen PWM-Pin auf eine Frequenz von 50 Hz. Für stabile Impulse verwenden Sie Hardware-PWM und nicht Software-Bit-Banging.
3. Schreiben Sie die Winkel-zu-Impuls-Umrechnungsformel- Verwenden:pulse_us = 1000 + (angle_deg × 1000 / 180).
4. Test mit drei bekannten Winkeln– Befehl 0°, 90° und 180°. Messen Sie die tatsächliche Wellenposition. Passen Sie bei Bedarf die minimale/maximale Impulsbreite an.
5. Fügen Sie eine Kalibrierungsroutine hinzu– Speichern Sie die genauen minimalen und maximalen Impulsbreiten Ihres Servos im Code. Dies gewährleistet trotz Fertigungsabweichungen einen perfekten Bereich von 0°–180°.
Endgültige Validierung:Nachdem Sie dieser Anleitung gefolgt sind, können Sie jeden Winkel von 0° bis 180° mit einer Genauigkeit von ±1° steuern. Die gleiche Methode funktioniert für Servos mit kontinuierlicher Rotation (bei denen die Impulsbreite Geschwindigkeit und Richtung steuert) und für Servos mit unterschiedlichen Winkelbereichen (z. B. 0°–90° oder 0°–270°) – passen Sie einfach den Impulsbreitenbereich entsprechend an.
Wiederholen Sie die Kernwahrheit:Ein Mikrocontroller steuert den Winkel eines Servos, indem er ein 50-Hz-PWM-Signal ausgibt, wobei die Einschaltzeit (Impulsbreite) zwischen 1,0 ms (0°) und 2,0 ms (180°) variiert. Wenn Sie diese Puls-Winkel-Beziehung beherrschen, können Sie jedes Servo mit jedem Mikrocontroller steuern.
Aktualisierungszeit: 17.04.2026
Wenden Sie sich an den Produktspezialisten von Kpower, um einen geeigneten Motor oder ein geeignetes Getriebe für Ihr Produkt zu empfehlen.