SG90 - Servomotor

SG90 - Servomotor

Wichtig

Es gibt unterschiedliche Hersteller für Servomotoren vom Typ SG90. Die beiden bekanntesten sind Tower Pro und DIY More (DM). Dann gibt es noch Noname-Hersteller und Servomotoren, die mit einer Marke beschriftet sind, aber eigentlich von Noname-Herstellern stammen. Warum ist das wichtig zu wissen? Wenn man unterschiedliche Servomotoren vom Typ SG90 verwendet, dann wird man feststellen, dass die unterschiedlich funktionieren. Du solltest immer mit unterschiedlichem Verhalten rechnen.

  • Objekte drehen und bewegen
  • präzises Steuern oder Regeln geringer Lasten
  • Anzeigeninstrumente mit Zeiger

Der SG90 ist ein kleiner Servomotor, der oft unter der Bezeichnung Micro- oder Mini-Servo bekannt ist. Er findet hauptsächlich Anwendung im Modellbau, wenn etwas in Bewegung zu bringen ist, und wenn auf eine Motorsteuerung und ein separates Getriebe verzichtet werden soll. Wegen seiner kompakten Bauform und seinem geringen Gewicht ist er sehr beliebt.
Bei der Wahl eines Servomotors schaut man auf zwei Dinge. Einmal die Kraft, die er aufwenden kann und um wieviel Grad er sich drehen kann.

Typische Servo-Motoren bestehen aus einem Gleichstrommotor, einem Getriebesatz, einem Potentiometer und einer Steuerschaltung. Das Potentiometer dient als Positionssensor. Mit Hilfe der elektronischen Steuerung kann die aktuelle Stellung ermittelt und automatisch sehr genau nachgeregelt werden.

Der SG90 ist ein per PWM-Signal gesteuerter Servo-Motor. Die Position wird über den Winkel in Grad definiert. Der Drehbereich liegt ungefähr zwischen 0 und 180 Grad.
Es gibt mit 360 Grad auch voll drehbare Servo-Motoren, die über Richtung und auch Drehgeschwindigkeit gesteuert werden.

Vorteile gegenüber einem herkömmlichen Gleichstrommotor: Gleichstrommotoren benötigen in der Regel eine zusätzliche Steuerung. Zum Beispiel für die Drehrichtung. Außerdem kennen Gleichstrommotoren nur die Zustände EIN und AUS. Sie sind auch etwas träge und lassen sich nicht besonders präzise steuern. Ein Servo-Motor kann also eine Alternative zu einem eher rustikalen Gleichstrommotor sein.

Anschlussbelegung und Energieversorgung

SG90 - Servomotor - Kennzeichnung

Das aus dem SG90 herausgeführte Kabel ist dreiadrig und hat folgende Belegung:

  • Rot: VCC / ca. 5 Volt (4,8 bis 6,0 Volt)
  • Orange: PWM-Signal
  • Braun: GND / 0 Volt

Hinweis: Nicht auf die Reihenfolge der Steckleiste, sondern auf die Adernfarbe achten.

Der Stromverbrauch des SG90 (Original von Tower Pro) liegt zwischen 0,5 und 2,0 Ampere. Die Betriebsspannung sollte zwischen 4,8 und 6,0 Volt liegen. Die volle Kraft erreicht dieser Servomotor bei 5 Volt.

Einen Servomotor vom Typ SG90 kann man beim Experimentieren und Programmieren in der Regel problemlos über den USB des Host-Computers versorgen (VBUS, Pin 40). Schnellere Servomotoren und solche mit größeren Stellkräften sollten über ein eigenes, externes Netzteil versorgt werden. Der Grund sind die hohen Spitzenströme, die diese im Anlaufmoment ziehen können.
Bei einem externen Netzteil muss die Masse vom Mikrocontroller und vom Netzteil miteinander verbunden werden.

Steuerung

SG90 - Servomotor - Steuerung über PWM-Signal

Die Steuerung des SG90 erfolgt über ein PWM-Signal. Ein PWM-Signal ist ein sich wiederholendes Rechtecksignal, in dem die digitalen Zustände High und Low in frei definierbaren Zeiten wechseln.

Ein PWM-Signal arbeitet mit zwei Parametern:

  1. Frequenz: Der erste Parameter ist die Frequenz in Hertz (Hz) des PWM-Signals. Der Wert liegt typischerweise bei 50 Hz. Die Frequenz lässt sich umrechnen in die Dauer der Periode, die sich wiederholt. Die Dauer ist der Kehrwert der Frequenz und entspricht 0,02 Sekunden oder 20 Millisekunden (ms).
  2. Der zweite Parameter gibt in Millisekunden an, wie lange die Zeit des High-Pegels innerhalb einer Periode des PWM-Signals ist. In dieser Zeit steckt die Information für den Motor, welche Position er einnehmen soll. Dieser Parameter wird auch als Duty Cycle (Tastgrad) bezeichnet. Gemeint ist das Verhältnis zwischen Pulsdauer (oder Pulsbreite) und der Periodendauer des PWM-Signals.

Zusammenhang: Frequenz, Pulsbreite und Position

Grad Position Dauer Prozent Dezimal (*)
0 Ganz Links 0,5 ms 2,5% 1638
45 Links 1 ms 5% 3276
90 Mittelstellung 1,5 ms 7,5% 4915
135 Rechts 2 ms 10% 6553
180 Ganz Rechts 2,5 ms 12,5% 8192

Schaut man sich verschiedene Programmcodes, Beispiele und Lösungen zur Steuerung eines SG90 an, dann fällt auf, dass oft mit den Werten 1.000 und 9.000 als untere (0 Grad) und obere (180 Grad) Dezimalzahl gearbeitet wird. Wenn man das ausprobiert, dann wird man feststellen, dass das durchaus funktioniert. Mit diesen Werten wird die Motorachse ziemlich sicher ihre Endposition bei 0 und 180 Grad erreichen. Dummerweise ist der Wertebereich von 1.000 bis 9.000 viel zu grob gewählt. Spätestens dann, wenn man eine bestimmte Position dazwischen einstellen will, müssen der untere und obere Wert korrekt gewählt bzw. ausgerechnet werden.
Man kann diese Berechnung auch im Programmcode vornehmen, wenn die Positionierung dynamisch erfolgen soll.

Wenn man mit einer Frequenz von 50 Hz arbeitet, dann dauert eine Periode des PWM-Signals 20 ms. Innerhalb dieser Zeit muss der Impuls (High-Signal) eine bestimmte Zeit dauern. Man spricht auch von Pulsbreite.
Beim SG90 bedeutet eine Pulsbreite von 1,5 Millisekunden, dass er sich in die Mittelstellung (90 Grad) dreht. Bei einer Pulsbreite von 0,5 ms, dreht der Servo sich nach 0 Grad und bei 2,5 ms nach 180 Grad.

Zur Steuerung des Servomotors SG90 muss ein PWM-Signal generiert werden. Dazu braucht man eine Hardware, die an einem digitalen Ausgang ein PWM-Signal ausgeben kann. In der Regel erfolgt die Initialisierung und Steuerung mit einer Software. Diese Software muss die Parameter des PWM-Signals ändern können, damit sich der Motor dreht und die Position der Motorachse ändert.

Die Änderung der Position steckt in der Dauer des High-Pegels vom PWM-Signal. Welche Informationen die Software genau braucht, um den High-Pegel einzustellen, hängt von der Programmiersprache und deren Möglichkeiten ab. In MicroPython gibt es die Möglichkeit die Dauer des High-Pegels bzw. des Duty Cycles als Zeit (Dauer) oder als Dezimalzahl anzugeben.

Hinweis zur Dezimalzahl (*)

Die Dezimalzahl ist abhängig von der Verarbeitungsbreite des PWM-Controllers. Im Raspberry Pi Pico hat der Controller eine Breite von 16 Bit, was einem dezimalen Wertebereich von 0 bis 65.535 entspricht (umgerechnet 2 hoch 16 entspricht 65.536 Werten). Die Frage ist, wie groß muss die Dezimalzahl für eine bestimmte Position sein? Mit Hilfe des Dreisatzes kann man das ausrechnen.

Position berechnen

Es gilt:

Eine Frequenz von 50 Hz entspricht einer Periodendauer von 20 ms. Die Periodendauer entspricht 100%, die dezimale Wertigkeit 65.535.

  • Wenn man die Motorachse auf 90 Grad stellen will, dann beträgt die Impulsdauer 1,5 ms, was 7,5 % der Periodendauer entspricht. Mit Hilfe des Dreisatzes ergibt sich ein dezimaler Wert von 4915.
  • Wenn man die Motorachse auf 0 Grad stellen will, dann beträgt die Impulsdauer 0,5 ms, was 2,5 % der Periodendauer entspricht. Mit Hilfe des Dreisatzes ergibt sich ein dezimaler Wert von 1638.
  • Wenn man die Motorachse auf 180 Grad stellen will, dann beträgt die Impulsdauer 2,5 ms, was 12,5 % der Periodendauer entspricht. Mit Hilfe des Dreisatzes ergibt sich ein dezimaler Wert von 8192.

Die Dezimalzahlen können bei jedem SG90 anders aussehen. Genauer gesagt, es ist zu prüfen, ob die Achse des Motors diese Positionen auch wirklich einnehmen kann.

Ausrichten der Position bzw. des Winkels der Motorachse

Ausrichten der Position bzw. des Winkels der Motorachse

Bevor die Zubehörteile auf die Motor-Achse gesteckt und befestigt werden, sollte die Achse des Servo-Motors in eine bestimmte Position gebracht werden. Je nach Anwendungsfall kann das die Mittelstellung bzw. 90-Grad-Position sein.

Wenn der Servo-Motor diese Position erreicht hat, dann lässt sich auf der Halterung der Achse ein Zubehörteil aufstecken und bedarfsweise mit einer Schraube fixieren.

Wichtig: Beim Aufstecken sollte die Achse des Motors NICHT bewegt werden, weil sonst die Position der Achse nicht mehr stimmt.
Die Fixierung mit einer Schraube sollte erst dann erfolgen, wenn geprüft wurde, dass die Achse mit dem Aufsteckteil korrekt ausgerichtet ist.

Anleitung und Programmcode zur Positionierung der Motor-Achse:

Raspberry Pi Pico: Servo-Motor SG90 steuern und testen

Es geht darum, den Servo-Motor SG90 zu testen und die Zubehörteile, die auf die Achse gesteckt werden können, auszurichten. Dazu muss der Motor zuerst in eine Grundstellung gebracht werden.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Elektronik-Sets für das Hardware-nahe Programmieren

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)

Zum PicoTalk