Servo-Motoren (kurz: Servos) sind typische Bauteile im Flugzeugmodellbau. Sie haben folgende Eigenschaften:
Die Drehung ist nur in einem eingeschränkten Winkelbereich von 0° - 180° möglich.
Der Servo kann den aktuellen Drehwinkel messen und gezielt einen anderen Winkel anfahren.
Ein Servomotor kann nicht vollständig rotieren und eignet sich nicht zum Antrieb von Rädern.
Die Drehung erfolgt mit einem hohen Drehmoment, d.h. der Motor kann große Kraft entfalten.
2. Bestandteile
Ein Servo enthält folgende Bauteile
Der Elektromotor dreht sich mit hoher Drehzahl aber geringem Drehmoment, d.h. er erzeugt eine geringen Kraft.
Das Getriebe verringert die Drehzahl und erhöht das Drehmoment der Bewegung.
Das Potentiometer ist ein Drehwiderstand. Mit ihm kann der Servo messen, in welcher Position der Servomotor steht.
Ein Servomotor benötigt immer eine Steuereinheit, die ihm ein Positionssignal sendet. In unserem Fall ist dies der Arduino. Sobald dieses Positionssignal nicht mit der aktuellen Position des Servos übereinstimmt, dreht sich der Servo.
Die Funktion eines Servos wird auf dieser Internetseite sehr gut beschrieben: https://www.electronicsplanet.ch/Roboter/Servo/servo-funktionsweise/servo-funktionsweise.php
3. Verkabelung
Servos werden immer mit drei Kabeln angeschlossen:
braun -> GND
rot -> +5 V
orange -> Pin 2
Über das rote und braune Kabel bezieht der Elektromotor im Servo die Spannung, um sich zu bewegen.
ACHTUNG: Der Arduino UNO liefert genug Strom, um einen kleinen Servomotor zu betreiben.
Sollen mehrere oder größere Servos angeschlossen werden, muss die Spannung von einer externen Spannungsquelle bezogen werden.
4. Programmierung
4.1 Installation der Servo-Bibliothek
Für die Programmierung des Servos benötigen wir wieder eine Bibliothek:
Aktiviere den Bibliotheksmanager
Tippe den Suchbegriff "Servo" ein.
Installiere die Servo-Bibliothek von Michael Margolis
4.2 Einfaches Rotations-Programm
Mit dem folgenden Programm dreht der Servo einmal langsam um 180° und anschließend wieder zurück.
#include<Servo.h>// Bindet die Servo-Bib. ein
Servo myservo; // Erzeugt ein Servo-Objektvoidsetup(){
myservo.attach(2); // Servo ist an Pin 2 angeschlossen
}
voidloop(){
for (int pos = 0; pos <= 180; pos=pos+1) { // von 0 bis 180 °
myservo.write(pos); // dreht Servo auf pos °delay(15); // 15 ms Pause, damit der Servo die Position erreicht.
}
for (int pos = 180; pos >= 0; pos=pos-1) { // von 180 bis 0° zurück
myservo.write(pos);
delay(15);
}
}
Anpassungen
Ändere das Programm ab, so dass
der Servo nur noch 90° weit dreht.
sich der Servo doppelt so schnell dreht, d.h. pro Schritt eine Drehung um 2° durchführt.
der Servo mit einem einzigen Schritt von 0 auf 180° dreht und wieder zurück.
Ermittele die Zeit, die als Pause eingelegt werden muss, damit die Drehung jeweils vollständig durchgeführt wird.