Der Servomotor hat im gegensatz zu anderen Motoren sehr viele Vorteile. Er ist fertig aufgebaut, mit Getriebe und vielen Anschlussmöglichkeiten, er kann in eine genau Position gefahren werden, hat viel Kraft bei kleiner Bauweise, viel unterschiedliche Größen und er braucht verhältnismäßig wenig Leistung.
Aufbau und Funktion
Ein Servo besteht aus einer Motorsteuerung (1), einem Elektromotor (2), einem Getriebe (3), einem Potentiometer zur Positionsbestimmung (4) und einem Anschlussstück (5) an dem verschiede Servoarme angeschlossen werden können. Alle Komponenten sind in einem robusten Gehäuse untergebracht (6). Hier eine vereinfachte Darstellung. Angeschlossen wird das Servo über ein dreipoliges Kabel. Dabei handelt es sich um zwei Versorgungsleitungen (VCC und GND) und um eine Datenleitung.
Ich verwende in aller Regel Servos von Carson, diese sind vom Preis Leistungsverhältnis für mich unschlagbar und sie Funktionieren wirklich super. Ich verwende für kleine Projekte den Carson CS3 und wenn es größere Projekte werden dann die Carson CS5 oder CS7.
Die Verbindung zwischen Arduino und Servo
Der Servo bekommt VCC und GND, also die Spannungsversorgung entweder vom Arduino oder von einer externen Spannungsquelle. Ein, zwei oder auch drei kleinere Servos können ohne weiteres an den Arduino angeschlossen werden. Möchte man noch mehr anschließen sollte auf jeden Fall der Arduino nicht über USB sonder über ein Netzteil versorgt werden. Die Ansteuerung des Servo erfolgt immer über einen PWM PIN, am ~ zeichen zu erkennen. Bei Arduino UNO sind dies die Pins 3,5,6,9,10 und 11.
Werden große, noch mehr Servos oder andere Bauteile von einem Arduino Board aus betrieben, dann werden die Servos direkt von einem anderen Netzteil aus versorgt. Dann werden lediglich die PWS PINs mit dem Servo verbunden.
!!! Sollten sich die Servomotoren sehr unruhig oder stotternd bewegen. Kann es helfen den GND als den minus Pol des Netzteils mit dem GND also dem minus POL des Arduino zu verbinden. Aber auf keinen FALL den VCC !!!
Die Servo Blöcke in Ardublock
In der original Version von Ardublock gibt es sehr verschiedene Servomotoren Blöcke. Die beiden Grundblöcke sind orange hinterlegt. Es gibt einen Block für den 180 Grad Servo und einen Block für den 360 Grad Servo. Zudem gibt es noch einen Grün hinterlegten Servo Block (rechts) bei dem auch nur der Pin und Gradzahl eingestellt werden kann. Der blaue Servo Block benötigt ein spezielles Servo Shield um angesteuert zu werden.
Neben den Standard Servo Blöcken gibt es von DuinoEDU noch einige spezielle Servo Blöcke die aber vor allem mit eigenen Shields oder anderen Servomotoren betrieben werden. Auf diese Blöcke gehe ich hier nicht, da sie vermutlich rel. wenig Verbreitung haben.
Mit dem Servomotor Block einen Servo ansteuern
Damit sich ein Servomotor in die eine oder andere Richtung dreht braucht es nur einen Block. Den Servo Block. Fast alle Servomotoren können sich von 0 bis 180 Grad drehen. Soll ein Servo in eine Position gefahren werden, muss lediglich der Pin, an dem der Servo angeschlossen ist und die Gradzahl eingegeben werden. Im Besipiel unten fährt der Servo von 0-bis 180 Grad im Wechsel.
Ich habe für dieses Tutorial die Blöcke von letsgoink verwendet. Die Funktion ist aber bei allen Blöcken gleich, nur dass es in der Standard Version die "trennen und verbinden" Blöcke nicht gibt. Wer den Servo dennoch trennen möchte kann den PIN auf LOW sitzen und den Servo dann erneut ansteuern.
!!! Beim fahren des Servomotors ist vor allem darauf zu achten, dass dem Servo genügend Zeit gelassen wird um in seine Position zu fahren. Wäre im Brespiel unten nur 100 ms. eingestellt dann würde der Servo die eingestellten Positionen nicht erreichen.
Der Servo "verbinde" und "trennen" Block: Das Servo muss nur verbunden werden, wenn es vorher getrennt wurde. Es ist also nicht nötig, das Servo zu verbinden, wenn es nicht getrennt wurde. Warum dann aber das Servo überhaupt trennen? Der Servo kann getrennt werden, wenn er im Programm lange nicht verwendet wird. Da ein PWM Signal nicht so 100% ist, kann es vorkommen dass der Servo brummt, oder immer wieder ein paar Milimeter hin und her fährt und versucht in eine bestimmte Stellung zu kommen. Wird der Servo getrennt, kann das nicht mehr passieren. Dann muss er aber vor dem ansteuern verbunden werden.
Beispiel, Servomotor mit einem Poti steuern
Als ersten wird im "setup" der Servo auf 0 Grad gefahren. Der Wert der vom Poti am analogen Eingang A0 wird ausgelesen. Damit der Servo auch seine 180 Grad nach der Poti Stellung ansteuern kann. Wird das Signal vom Poti von 0-1023 auf die 0-180 Grad vom Servomotor umgerechnet und in der Variablen gespeichert.Der Servo Block liest die Variable Servo aus und gibt sie in den PWM PIN 5 weiter. Der Servo fährt in die gewünschte Stellung.
Der 360 Grad Servomotor
Nachteil des klassischen Servomotors ist dass er nur 180 Grad fahren kann. Da Servos einfach und schnell einzubauen sind, man bracht kein Getrieb, keine Kuplung usw. gibt es auch 360 Grad Servomotoren. Auch diese können mit Ardublock angesteuert werden. Die Ansteuerung geschieht mit den gleichen Servo Blöcken. nur dass hier die Gradzahlen, die Geschwindigkeit und die Drehrichtung bestimmen.
Bei 90 Grad bleibt der Servo stehen, er ist aus. Je weiter man sich von den 90 Grad entfernte, desto schnell dreht sich der Servo. Die volle Geschwindigkeit ist also bei 0 Grad links und bei 180 Grad rechts erreicht.
Der Servoblock "umlaufender servo" ersetzt nur den "servo" Block. Die Eingabe der Gradzahl ändert hier auch die Richtung, die Geschwindigkeit oder stoppt den Motor ganz.
Beispiel 360 Grad Servo mit Poti Steuern
Im Bespiel unten wird der 360 Grad Servomotor über einen Poti angesteuert. Ist der Poti in Mittelstellung dreht sich der Servo nicht da 90 Grad eingestellt sind. Dreht man den Poti nun nach links oder rechts dreht sich der Motor immer schneller in die eine oder andere Richtung.