Servomotor SG90: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(40 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:AlphaBot]]
[[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.5 V .. 5.5 V
| Versorgungsspannung || 4.0 V .. 7.2 V
|-  
|-  
| Ausgangsspannung || 0 V .. 3.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:Analog ir sensor Steckplatine.png|thumb|rigth|300px|Abb. 2: Anschlussplan für den Betrieb am Arduino]]
[[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
 
|-  
|-  
| 0 °|| Mitte || 1,5 ms
| -90&thinsp;°|| Linksanschlag || 1&thinsp;ms || [[Datei:PWM1.jpg|ohne|200px|]] || <code>SERVO.write(0)</code>
|-  
|-  
| 90&thinsp;°|| Links || 2&thinsp;ms
| 0&thinsp;°|| Mittelstellung || 1,5&thinsp;ms || [[Datei:PWM2.jpg|ohne|200px|]] || <code>SERVO.write(90)</code>
|-  
|-  
| -90&thinsp;°|| Rechts || 1&thinsp;ms
| +90&thinsp;°|| Rechtsanschlag || 2&thinsp;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&thinsp;g Micro Servo
[[Medium:SG90 9 g Micro Servo.pdf| Datenblatt: SG90 9&thinsp;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: [[AlphaBot Bauanleitung#Ben.C3.B6tigte_Bauteile|AlphaBot Bauanleitung]]<br>
→ 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

Abb. 1: Servomotor SG90

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

Abb. 2: Pinbelegung für den Servo SG90
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.

Abb. 3: Grundschaltung für den Servo SG90

Ansteuerung

Abb. 4: Anschlussplan des Servos mit Steckbrett
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

SVN: DemoServoSG90.ino

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 1: SG90 Servomotor einfach erklärt



Video 2: Einbindung des Micro Servos SG90

Tutorial

Literatur

  1. 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