Veröffentlicht 2026-03-19
Das haben Sie sich sicher schon einmal überlegt: Der 51 Mikrocontroller ist so klassisch und günstig, dass er zur Steuerung des verwendet werden kannServo? Die Antwort ist ja, und zwar in mehrfacher Hinsicht. Heute werden wir darüber sprechen, wie man den 51-Mikrocontroller zum Spielen verwendetServound bringen Sie Ihr kleines Handwerk in Bewegung.
Das Lenkgetriebe ist eigentlich ein „fauler Kerl“. Solange Sie ihm sagen, wo er abbiegen soll, nutzt er seine internen Schaltkreise und Motoren, um zu dieser Position zu fahren. Man erkennt es an einer PWM-Welle, also einem Rechtecksignal mit einstellbarer Breite. Ein StandardServoerfordert einen Impulszyklus von 20 Millisekunden, wobei die Breite des High-Pegels den Winkel des Servos bestimmt.
Obwohl der 51-Mikrocontroller nicht über ein dediziertes Hardware-PWM-Modul verfügt (das alte Modell verfügt nicht darüber, und wir werden separat über die erweiterte Version sprechen), können wir es mit einem Timer simulieren. Es ist so, als würde man eine Stoppuhr verwenden, um die Zeit zu messen, indem man einen Pin zuerst einen hohen Pegel ausgeben lässt, ihn dann nach Ablauf des Timers auf einen niedrigen Pegel zieht und wartet, bis die 20-Millisekunden-Periode abgelaufen ist, bevor man es wiederholt. Solange das Timing genau genug ist, ist der 51-Mikrocontroller dieser Aufgabe voll gewachsen.
Um das Servo zum Drehen zu bringen, reicht ein Mikrocontroller allein nicht aus. Zunächst benötigen Sie ein Servo, z. B. das SG90 mit geringem Stromverbrauch, das einfach zu bedienen ist. Dann ist da noch die Stromversorgung, die besonders wichtig ist. Der Arbeitsstrom des Servos ist nicht gering, insbesondere im Moment des Starts. Die direkte Stromversorgung über die Mikrocontroller-Entwicklungsplatine kann leicht zu einem Neustart des Mikrocontrollers führen. Daher müssen Sie eine separate 5-V-Stromversorgung für das Servo vorbereiten, beispielsweise einen Akku oder ein Spannungsstabilisierungsmodul.
Auch andere Kleinteile sind unverzichtbar: Zum Anschluss dient ein Steckbrett oder ein DuPont-Draht. Am besten bereiten Sie einen Kondensator mit etwa 100 Mikrofarad vor und filtern ihn an beiden Enden der Servostromversorgung. Der Kondensator kann wie ein kleines Reservoir wirken, das Stromschwankungen abfedert, das Lenkgetriebe stabiler macht und verhindert, dass der Mikrocontroller in den Reset verwickelt wird.
Die Kernidee beim Schreiben eines Programms besteht darin, mithilfe eines Timers eine Periode von 20 Millisekunden zu erzeugen und den Pin so zu steuern, dass er während dieser Periode Impulse unterschiedlicher Breite ausgibt. Beispielsweise stellen wir den Timer so ein, dass er alle 0,1 Millisekunden unterbricht und dann zählt. Wenn Sie einen Impuls von 1,5 Millisekunden ausgeben möchten, ziehen Sie den Pin nach unten, wenn der Zählerstand im Interrupt 15 erreicht, und ziehen Sie den Pin dann nach oben, wenn der Zählerstand 200 erreicht (20 Millisekunden erreicht) und so weiter.
Der Code ist auch nicht kompliziert zu schreiben. Verwenden Sie in der Timer-Interrupt-Servicefunktion die if-Anweisung, um zu bestimmen, ob der aktuelle Zählwert den eingestellten Impulsbreitenwert erreicht, und löschen Sie dann den Servo-Pin auf Null. Im Hauptprogramm müssen Sie nur die dem Impulsbreitenwert entsprechende Variable ändern, um den Lenkgetriebewinkel einfach zu ändern. Vergessen Sie natürlich nicht, den Timer und den Interrupt zu initialisieren, die die Grundlage für die Ausführung des Programms bilden.
Der Drehwinkel des Lenkgetriebes wird direkt durch die Impulsbreite auf hohem Niveau bestimmt, und die Beziehung zwischen beiden ist grundsätzlich linear. Im Allgemeinen entspricht ein Impuls von 0,5 Millisekunden 0 Grad, 1,5 Millisekunden entsprechen 90 Grad und 2,5 Millisekunden entsprechen 180 Grad. Verschiedene Servomarken können geringfügige Unterschiede aufweisen, dies ist jedoch der allgemeine Bereich.
Wie stellt man den Winkel im Programm ein? Wir können eine Winkelvariable definieren und dann eine einfache Formel verwenden, um die erforderliche Impulsbreite zu berechnen: Impulsbreite = 0,5 + (Winkel/180)*2,0, die Einheit ist Millisekunden. Wandeln Sie diese Zeit dann in einen Timer-Zählwert um. Wenn es beispielsweise, wie bereits erwähnt, in 0,1 Millisekunden einen Interrupt gibt, dann sind 1,5 Millisekunden 15 Interrupts. Zum Schluss weisen Sie diesen Zählwert einfach der Vergleichsvariablen im Interrupt zu. Ganz einfach, oder?
In einem Projekt gibt es oft mehr als ein Lenkgetriebe. Um beispielsweise einen sechsbeinigen Roboter herzustellen, sind viele Dinge erforderlich. Eine gängige Methode zur Verwendung eines 51-Mikrocontrollers zur Steuerung mehrerer Servos ist das „Time-Sharing-Multiplexing“. Da jedes Servo einen Impuls mit einer Periode von 20 Millisekunden benötigt, können wir 20 Millisekunden in mehrere Segmente unterteilen, und jedes Segment gibt einen Servoimpuls aus. Senden Sie beispielsweise zuerst einen Impuls von 0,5 bis 2,5 Millisekunden an Servo Nr. 1 und dann sofort einen Impuls an Servo Nr. 2 usw., solange die Impulse aller Servos innerhalb von 20 Millisekunden gesendet werden.
Diese Methode erfordert mehrere E/A-Ports und das Interrupt-Programm muss in der richtigen Reihenfolge angeordnet werden. Wenn es sich bei Ihrem Mikrocontroller um einen erweiterten Mikrocontroller mit einem Hardware-PWM-Modul handelt, ist er sorgenfreier. Sie können mehrere PWM-Ausgänge direkt konfigurieren, die CPU muss sich kaum darum kümmern und die Genauigkeit ist höher. Üben Sie für Anfänger zunächst die Verwendung von Time-Sharing-Multiplexing und erwägen Sie dann die Aktualisierung der Methoden, nachdem Sie die Prinzipien verstanden haben.
Das häufigste Problem beim Spielen mit Servos ist Jitter. Dies ist normalerweise ein Problem mit der Stromversorgung. Wenn sich das Servo bewegt, sinkt die Spannung und der Mikrocontroller funktioniert nicht richtig, was zu Signalstörungen führt. Die Lösung besteht darin, die Stromversorgung zu verstärken, eine unabhängige Stromversorgung zu verwenden und die Strom- und Erdungskabel so dick und kurz wie möglich zu machen. Außerdem sollte der Kondensator in der Nähe des Servos installiert werden.
Manchmal ist der Servowinkel falsch oder die Reaktion ist langsam. Dies kann auf Störungen auf der Signalleitung zurückzuführen sein oder das Timing im Programm ist nicht genau genug. Sie können einen 10-kOhm-Pulldown-Widerstand an die Signalleitung zur Erde anschließen, um die Entstörungsfähigkeit zu verbessern. Überprüfen Sie programmtechnisch, ob der Quarzoszillator korrekt ist und ob der Anfangswert des Timers falsch berechnet wird. Stellen Sie sicher, dass diese Fundamente in Ordnung sind und Ihr Servo dort anschlagen kann, wo Sie es haben möchten.
Sind Sie bei der Verwendung des 51-Mikrocontrollers zum Spielen mit dem Servo auf besonders interessante Fehler gestoßen oder sind Ihnen interessante Anwendungen eingefallen? Hinterlassen Sie gerne eine Nachricht und teilen Sie sie im Kommentarbereich. Vergessen Sie nicht, sie zu liken und zu speichern, damit mehr Freunde diese praktischen Tipps sehen können!
Aktualisierungszeit: 19.03.2026
Wenden Sie sich an den Produktspezialisten von Kpower, um einen geeigneten Motor oder ein geeignetes Getriebe für Ihr Produkt zu empfehlen.