Servomotor SG90: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(40 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie: | [[Kategorie:Arduino]] | ||
[[Datei:SG90.jpg|thumb|rigth|550px|Abb. 1: Servomotor SG90]] | [[Datei:SG90.jpg|thumb|rigth|550px|Abb. 1: Servomotor SG90]] | ||
'''Autoren:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | '''Autoren:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | ||
Zeile 6: | Zeile 6: | ||
== Einleitung == | == Einleitung == | ||
Diese Micro Servo ist winzig und leicht mit hoher Ausgangsleistung. Der Servo kann dreght sich ca. 180 ° (180 ° in jede Richtung), funktioniert genau wie ein Standardservo ist dabei jedoch deutlich kleiner. Für die Ansteuerung mit dem Arduino ist eine Bibliothek vorhanden. | Diese Micro Servo ist winzig und leicht mit hoher Ausgangsleistung. Der Servo kann dreght sich ca. 180 ° (180 ° in jede Richtung), funktioniert genau wie ein Standardservo ist dabei jedoch deutlich kleiner. Für die Ansteuerung mit dem Arduino ist eine Bibliothek vorhanden. | ||
kleiner. Das kleine günstige Micro Servo eignet sich hervorragend für viele Anwendungen. Falls du mehrere Servos betreiben willst, gibt es auch noch das Motor Shield oder ein Servo Driver mit 16 Kanälen. Der Servo wird mit 3 verschiedenen Armen geliefert. | kleiner. Das kleine günstige Micro Servo eignet sich hervorragend für viele Anwendungen. Falls du mehrere Servos betreiben willst, gibt es auch noch das Motor Shield oder ein Servo Driver mit 16 Kanälen. | ||
Als Servo bezeichnet man eine elektrische Einheit aus einem Elektromotor und einer Ansteuer- oder Regelungselektronik. Servos für den Modellbau gehören zu den am meisten verbreiteten Varianten von Servos. Modellbauservos wandeln die vom Sender übermittelte elektrische Information in eine mechanische Bewegung | |||
um. Dabei werden Lenkung, Höhen- oder Seitenruder und andere bewegliche Teile des ferngesteuerten Modells aktiviert. | |||
In einem Servo sind auf engstem Raum Steuerelektronik und ein Gleichspannungs-Elektromotor untergebracht. Eine integrierte Schaltung ermittelt die aktuelle Drehposition (Drehwinkel) des Motors, der sich nach links und nach rechts drehen muss. Diese Einheit zur Erfassung der Position wird meist mit einem | |||
Potentiometer, also einem verstellbaren Widerstand realisiert. Die im Servo integrierte Regeleinheit vergleicht das Eingangssignal des Servos (Sollwert) mit der aktuellen Position des Motors (Istwert) und regelt so den Motor auf die vorgegebene Position. | |||
Modellbauservos werden hauptsächlich mittels PWM-Signal (Pulsweitenmodulation) angesteuert. Die Breite des Pulssignals (HIGH-Signal) entspricht dem Sollwert. Das PWM-Signal hat meist eine Frequenz von 50 Hz. Dies entspricht einer Periodendauer von 20 ms. Die Pulsweite des Sollwertes liegt dann im | |||
Bereich von 1 ms (linker Anschlag) und 2 ms (rechter Anschlag). Die Mittelposition liegt bei 1,5 ms. Die restliche Zeit der Periode bleibt das Signal auf LOW. Der Winkel zwischen linkem und rechtem Anschlag beträgt üblicherweise 180 Grad [basierend auf 1]. | |||
Der Servo wird mit 3 verschiedenen Armen und 3 Befestigungsschrauben (1x Befestigung Arm-Servo, 2x Befestigung Arm-Drehobjekt (spitz)) geliefert. | |||
'''Achtung''': Ein Servo darf nie von Hand gedreht werden, da so das Kunststoffgetriebe '''zerstört''' werden kann. | |||
== Technische Daten == | == Technische Daten == | ||
Zeile 19: | Zeile 32: | ||
| PWM-Pulsweite || 500-2400 ms | | PWM-Pulsweite || 500-2400 ms | ||
|- | |- | ||
| Versorgungsspannung || 4. | | Versorgungsspannung || 4.0 V .. 7.2 V | ||
|- | |- | ||
| | | Versorgungsstrom || 20 mA | ||
|- | |||
| Geschwingigkeit || 0,12 s/60 ° (@4,8 V, lastfrei) | |||
|- | |||
| Drehmoment || 1,5 kg/cm (@4,8 V) | |||
|- | |||
| Gewicht || 9 g | |||
|- | |||
| Getriebe || Kunststtoff | |||
|- | |- | ||
| Arbeitstemperatur || 0 °C .. +55 °C | | Arbeitstemperatur || 0 °C .. +55 °C | ||
|- | |- | ||
| Abmessungen|| 22,2 mm x 11,8 mm x 31 mm | | Abmessungen|| 22,2 mm x 11,8 mm x 31 mm | ||
|} | |} | ||
== Pinbelegung== | == Pinbelegung== | ||
[[Datei: | [[Datei:Ansteuerung SG90 Modellbauservo.jpg|thumb|rigth|300px|Abb. 2: Pinbelegung für den Servo SG90]] | ||
{| class="wikitable" | {| class="wikitable" | ||
! style="font-weight: bold;" | Pin | ! style="font-weight: bold;" | Pin | ||
Zeile 44: | Zeile 62: | ||
| 3 || Masse (GND) || Braun | | 3 || Masse (GND) || Braun | ||
|} | |} | ||
Abb. 2 zeigt die Pin-Belegung und Abb. 3 eine mögliche Grundschaltung füt den Arduino. | |||
[[Datei:Grundschaltung Servo SG90.jpg|thumb|rigth|300px|Abb. 3: Grundschaltung für den Servo SG90]] | |||
== Ansteuerung == | == Ansteuerung == | ||
[[Datei:Servo SG90 Anschlussplan.jpg|thumb|rigth|300px|Abb. 4: Anschlussplan des Servos mit Steckbrett]] | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| Winkel || Position || Pulsweite | | Winkel || Position || Pulsweite || PWM || Befehl | ||
|- | |- | ||
| | | -90 °|| Linksanschlag || 1 ms || [[Datei:PWM1.jpg|ohne|200px|]] || <code>SERVO.write(0)</code> | ||
|- | |- | ||
| | | 0 °|| Mittelstellung || 1,5 ms || [[Datei:PWM2.jpg|ohne|200px|]] || <code>SERVO.write(90)</code> | ||
|- | |- | ||
| | | +90 °|| Rechtsanschlag || 2 ms || [[Datei:PWM3.jpg|ohne|200px|]] || <code>SERVO.write(180)</code> | ||
|} | |} | ||
Servos benötigen für die Ansteuerung nur rund 20 mA und können von einem PWM-Ausgang des Arduino direkt angesteuert werden. | |||
Die Ansteuerung eines Servos mit dem Arduino erfordert ein Programm, das die nötigen Pulssignale erzeugt. Dies kann einerseits von Hand ausprogrammiert | |||
werden oder man nutzt die Standardbibliothek <code>Servo.h</code>. Beim Einsatz der SERVO-Bibliothek muss man sich keine Gedanken um die korrekten Impulsbreiten und Frequenzen machen. | |||
<code>http://www.arduino.cc/en/Reference/Servo</code> | |||
Die SERVO-Bibliothek unterstützt auf den meisten Boards den Einsatz von bis zu zwölf Servos. Beim Einsatz der SERVO-Bibliothek muss beachtet werden, dass die normale PWM-Funktionalität für die Pins 9 und 10 deaktiviert ist. Die beiden | |||
Ports sind in diesem Fall für den Servobetrieb reserviert. | |||
Die Grundschaltung (Abb. 4) steuert einen Servo an Port 9, indem ein Sollwert von der Software vorgegeben wird (siehe Video 2). | |||
Tipp: Die <code>Servo.h</code> liegt bei Ihnen lokal unter <code>c:\Users\NUTZER\Documents\Arduino\linraries\Servo\src\Servo.h</code>. | |||
== Stepper library for Wiring/Arduino - Version 1.1.0 == | |||
c:\Users\<user>\AppData\Local\Arduino15\libraries\Stepper\src\Stepper.h | |||
== Demo == | |||
[https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoServoSG90/DemoServoSG90.ino SVN: DemoServoSG90.ino] | |||
<div class="mw-collapsible mw-collapsed"> | |||
Quelltext: DemoServoSG90.ino | |||
<source line lang="C" style="font-size:small">include <Servo.h> // Die Servobibliothek wird aufgerufen. Sie wird benötigt, damit die Ansteuerung des Servos vereinfacht wird. | |||
Servo SERVO_SG90; // Erstellt eines Servo-Objektes mit dem Namen „SERVO_SG90“ | |||
const int SERVO_PORT_s16 = 9; // PWM Port D9 | |||
const unsigned long DELAY_u32 = 3000; // in ms | |||
void setup(){ | |||
/* Einmalige Initialisierung */ | |||
SERVO_SG90.attach(SERVO_PORT_s16); //Das Setup enthält die Information, dass das Servo an der Steuerleitung (gelb) mit Pin 8 verbunden wird. Hier ist natürlich auch ein anderer Pin möglich. | |||
} | |||
void loop(){ | |||
SERVO_SG90.write(0); // Position 1 ansteuern mit dem Winkel 0° | |||
delay(DELAY_u32); // Das Programm stoppt für 3 Sekunden | |||
SERVO_SG90.write(90); // Position 2 ansteuern mit dem Winkel 90° | |||
delay(DELAY_u32); // Das Programm stoppt für 3 Sekunden | |||
SERVO_SG90.write(180); // Position 3 ansteuern mit dem Winkel 180° | |||
delay(DELAY_u32); // Das Programm stoppt für 3 Sekunden | |||
} | |||
</source> | |||
</div> | |||
== Videos == | == Videos == | ||
Zeile 60: | Zeile 124: | ||
<iframe key="panopto" path="/Panopto/Pages/Embed.aspx?id=e268228b-7439-4642-92a0-af5200c05eb8&autoplay=false&offerviewer=true&showtitle=true&showbrand=true&captions=false&interactivity=all" height="405" width="720" style="border: 1px solid #464646;" allowfullscreen allow="autoplay"></iframe> | |||
<br> | |||
Video 2: Einbindung des Micro Servos SG90 | |||
== Tutorial == | |||
*[http://www.arduino.cc/en/Tutorial/Stepper arduino.cc: Stepper Tutorial] | |||
== Literatur == | == Literatur == | ||
Zeile 66: | Zeile 135: | ||
== Datenblatt == | == Datenblatt == | ||
[[Medium:SG90 9 g Micro Servo.pdf| Datenblatt: SG90 9 g Micro Servo | [[Medium:SG90 9 g Micro Servo.pdf| Datenblatt: SG90 9 g Micro Servo]] | ||
== Weiterführende Links == | == Weiterführende Links == | ||
* [https://funduino.de/nr-12-servo-ansteuern Funduino: Servomotor TowerPro SG90] | |||
* [https://www.arduino.cc/reference/en/libraries/servo/ Arduino.cc: Servo Bibliothek] | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[ | → zurück zum Hauptartikel: [[Arduino:_Aktoren|Informatikpraktikum 1: Arduino Praxiseinstieg]]<br> | ||
→ zurück zum Hauptartikel: [[HSHL-Mechatronik-Baukasten]] | → zurück zum Hauptartikel: [[HSHL-Mechatronik-Baukasten]] |
Aktuelle Version vom 20. November 2023, 12:28 Uhr
Autoren: Prof. Dr.-Ing. Schneider
Einleitung
Diese Micro Servo ist winzig und leicht mit hoher Ausgangsleistung. Der Servo kann dreght sich ca. 180 ° (180 ° in jede Richtung), funktioniert genau wie ein Standardservo ist dabei jedoch deutlich kleiner. Für die Ansteuerung mit dem Arduino ist eine Bibliothek vorhanden. kleiner. Das kleine günstige Micro Servo eignet sich hervorragend für viele Anwendungen. Falls du mehrere Servos betreiben willst, gibt es auch noch das Motor Shield oder ein Servo Driver mit 16 Kanälen.
Als Servo bezeichnet man eine elektrische Einheit aus einem Elektromotor und einer Ansteuer- oder Regelungselektronik. Servos für den Modellbau gehören zu den am meisten verbreiteten Varianten von Servos. Modellbauservos wandeln die vom Sender übermittelte elektrische Information in eine mechanische Bewegung um. Dabei werden Lenkung, Höhen- oder Seitenruder und andere bewegliche Teile des ferngesteuerten Modells aktiviert.
In einem Servo sind auf engstem Raum Steuerelektronik und ein Gleichspannungs-Elektromotor untergebracht. Eine integrierte Schaltung ermittelt die aktuelle Drehposition (Drehwinkel) des Motors, der sich nach links und nach rechts drehen muss. Diese Einheit zur Erfassung der Position wird meist mit einem Potentiometer, also einem verstellbaren Widerstand realisiert. Die im Servo integrierte Regeleinheit vergleicht das Eingangssignal des Servos (Sollwert) mit der aktuellen Position des Motors (Istwert) und regelt so den Motor auf die vorgegebene Position.
Modellbauservos werden hauptsächlich mittels PWM-Signal (Pulsweitenmodulation) angesteuert. Die Breite des Pulssignals (HIGH-Signal) entspricht dem Sollwert. Das PWM-Signal hat meist eine Frequenz von 50 Hz. Dies entspricht einer Periodendauer von 20 ms. Die Pulsweite des Sollwertes liegt dann im Bereich von 1 ms (linker Anschlag) und 2 ms (rechter Anschlag). Die Mittelposition liegt bei 1,5 ms. Die restliche Zeit der Periode bleibt das Signal auf LOW. Der Winkel zwischen linkem und rechtem Anschlag beträgt üblicherweise 180 Grad [basierend auf 1].
Der Servo wird mit 3 verschiedenen Armen und 3 Befestigungsschrauben (1x Befestigung Arm-Servo, 2x Befestigung Arm-Drehobjekt (spitz)) geliefert.
Achtung: Ein Servo darf nie von Hand gedreht werden, da so das Kunststoffgetriebe zerstört werden kann.
Technische Daten
Messbereich | 0 ° .. 180 ° |
PWM-Modulation | analog |
PWM-Pulszykluszeit | 20 ms |
PWM-Pulsweite | 500-2400 ms |
Versorgungsspannung | 4.0 V .. 7.2 V |
Versorgungsstrom | 20 mA |
Geschwingigkeit | 0,12 s/60 ° (@4,8 V, lastfrei) |
Drehmoment | 1,5 kg/cm (@4,8 V) |
Gewicht | 9 g |
Getriebe | Kunststtoff |
Arbeitstemperatur | 0 °C .. +55 °C |
Abmessungen | 22,2 mm x 11,8 mm x 31 mm |
Pinbelegung
Pin | Belegung | Farbe |
---|---|---|
1 | Ausgang (PWM) | Orange |
2 | Versorgungsspannung 5 V (VCC) | Rot |
3 | Masse (GND) | Braun |
Abb. 2 zeigt die Pin-Belegung und Abb. 3 eine mögliche Grundschaltung füt den Arduino.
Ansteuerung
Winkel | Position | Pulsweite | PWM | Befehl |
-90 ° | Linksanschlag | 1 ms | SERVO.write(0)
| |
0 ° | Mittelstellung | 1,5 ms | SERVO.write(90)
| |
+90 ° | Rechtsanschlag | 2 ms | SERVO.write(180)
|
Servos benötigen für die Ansteuerung nur rund 20 mA und können von einem PWM-Ausgang des Arduino direkt angesteuert werden.
Die Ansteuerung eines Servos mit dem Arduino erfordert ein Programm, das die nötigen Pulssignale erzeugt. Dies kann einerseits von Hand ausprogrammiert
werden oder man nutzt die Standardbibliothek Servo.h
. Beim Einsatz der SERVO-Bibliothek muss man sich keine Gedanken um die korrekten Impulsbreiten und Frequenzen machen.
http://www.arduino.cc/en/Reference/Servo
Die SERVO-Bibliothek unterstützt auf den meisten Boards den Einsatz von bis zu zwölf Servos. Beim Einsatz der SERVO-Bibliothek muss beachtet werden, dass die normale PWM-Funktionalität für die Pins 9 und 10 deaktiviert ist. Die beiden Ports sind in diesem Fall für den Servobetrieb reserviert.
Die Grundschaltung (Abb. 4) steuert einen Servo an Port 9, indem ein Sollwert von der Software vorgegeben wird (siehe Video 2).
Tipp: Die Servo.h
liegt bei Ihnen lokal unter c:\Users\NUTZER\Documents\Arduino\linraries\Servo\src\Servo.h
.
Stepper library for Wiring/Arduino - Version 1.1.0
c:\Users\<user>\AppData\Local\Arduino15\libraries\Stepper\src\Stepper.h
Demo
Quelltext: DemoServoSG90.ino
include <Servo.h> // Die Servobibliothek wird aufgerufen. Sie wird benötigt, damit die Ansteuerung des Servos vereinfacht wird.
Servo SERVO_SG90; // Erstellt eines Servo-Objektes mit dem Namen „SERVO_SG90“
const int SERVO_PORT_s16 = 9; // PWM Port D9
const unsigned long DELAY_u32 = 3000; // in ms
void setup(){
/* Einmalige Initialisierung */
SERVO_SG90.attach(SERVO_PORT_s16); //Das Setup enthält die Information, dass das Servo an der Steuerleitung (gelb) mit Pin 8 verbunden wird. Hier ist natürlich auch ein anderer Pin möglich.
}
void loop(){
SERVO_SG90.write(0); // Position 1 ansteuern mit dem Winkel 0°
delay(DELAY_u32); // Das Programm stoppt für 3 Sekunden
SERVO_SG90.write(90); // Position 2 ansteuern mit dem Winkel 90°
delay(DELAY_u32); // Das Programm stoppt für 3 Sekunden
SERVO_SG90.write(180); // Position 3 ansteuern mit dem Winkel 180°
delay(DELAY_u32); // Das Programm stoppt für 3 Sekunden
}
Videos
Video 2: Einbindung des Micro Servos SG90
Tutorial
Literatur
- Brühlmann, T.: Arduino Praxiseinstieg. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: HSHL-Bib, O'Reilly-URL
Datenblatt
Datenblatt: SG90 9 g Micro Servo
Weiterführende Links
→ zurück zum Hauptartikel: Informatikpraktikum 1: Arduino Praxiseinstieg
→ zurück zum Hauptartikel: HSHL-Mechatronik-Baukasten