Wissen

Arduino – Servo ansteuern

Anleitung – so steuert man ein Servo mittels Arduino Board an

Über Arduino einen Servomotor ansteuern – ist doch ganz einfach! Ja, das dachte ich mir auch, bis ich es selbst versucht habe und dabei feststellen musste – irgendwie geht das so gar nicht – wie es im Internet oder in den Büchern erzählt wird! Grundsätzlich haben diese Quellen natürlich schon recht gehabt – aber die Praxis unterscheidet sich eben und es kommt zu Problemen, über die man vielleicht gar nicht nachgedacht hat.

Das erste Problem über welches ich gestolpert bin war, dass das Servo sich einfach nicht bewegen wollte! Habe ich über myservo.write(180) oder myservo.write(1) versucht das Servo in eine Endposition zu fahren, war es so, als hätte ich gar keinen Befehl abgesetzt. Das Thema habe ich dann auch durch einige Foren getrieben und so wirklich fand niemand den Fehler bei mir im Sketch. Es wurde vermutet die Spannung würde zusammen brechen, also hab ich dem Relais eine externe Spannungsversorgung gegeben. Alles was wir versucht haben schlug fehl um das Relais von einer Endposition in die andere zu Position zu steuern. Aber wisst ihr worauf niemand gekommen ist? Das Relais ist gar nicht in der Lage saubere 180 Grad Stellweg zu bewerkstelligen! Es gibt am freien Markt nur sehr wenige Servos, welche wirklich eine 180 Grad Drehung zu Stande bringen. Zwar gibt es im Netz zahlreiche Anleitungen den Stellbereich eines Servos zu vergrößern, doch dies sind dann sehr oft Bastellösungen für analoge Servos. Ob man sich so etwas antun möchte muss jeder für sich selbst entscheiden! Fakt ist jedoch, als ich durch Zufall den myservo.write Wert verändert habe, hat der Servo sich auf einmal bewegt! Durch etwas ausprobieren kann man sich dann recht schnell an die Werte antasten, welche noch sauber laufen! Wenn möglich sollte man jedoch nicht zu nah an die Grenze gehen, da ich festgestellt habe, dass der Servo dann nicht immer sauber arbeitet. Hier in meinem Beispiel hat ein myservo.write(25) und ein myservo.write(150) noch recht gut funktioniert. 100 Prozent stabil lief die Sache dann mit etwas kleineren Werten.

 

Arduino-Servo-Ansteuerung-Testschaltung-Sketch

 

Zweites Problem das beim Programm auftrat war die Stabilität des Servo Ausschlags. D.h. das Servo fuhr zwar in die gewünschte Endposition, behielt jedoch die Position nicht bei. Dafür wechselte Das Servo erst in die Ausgangsposition und danach wieder zurück in die gewünschte Position. Dies lag wohl daran, dass das Servo nicht genügend Zeit hatte in die Endgültige Position zu fahren. Wurde diese nicht sauber erreicht begann der Vorgang von vorne. Abhilfe schaffte hier eine kleine Pause nach der Servoansteuerung. Setzt man einen Delaybefehl in entsprechender Länge kam es zu keinen der genannten Ausfälle mehr.

Wie sollte man nun vorgehen um die Grenzen des Ausschlags eines Servos zu ermitteln?

Fangen wir hier zuerst bei den Basics an:

Der Aufbau der Ansteuerung:

Um einen Servo einzubinden benötigen wir zuerst einmal die Servo Libary:

#include <Servo.h>

Jetzt erzeugen wir ein Servo:

Servo myservo;

Im Setup des Sketches definieren wir nun den Port:

void setup()
{
Serial.begin(9600);
myservo.attach(9);
}

(der hier gewählte Port ist für Tests perfekt, da er mit allen Bibliotheken und Arduino Boards funktionieren sollte)

Im Programmabschnitt testen wir nun die Bewegung:

void loop()
{

myservo.write(65);

}

Wechselt hier nun die Werte durch um die maximalen Winkel des Servos feststellen zu können. Ändern — hochladen — Ausschlag testen! Try and Error sozusagen!

Habt ihr diese ermittelt, kann die eigentlich Programmierarbeit beginnen!

 

Hier nochmals das klein Programm in der Übersicht:

#include <Servo.h>

Servo myservo;

void setup()
{
Serial.begin(9600);
myservo.attach(9);
}

void loop()
{

myservo.write(65);

delay(1000);

}

 

Arduino-Servo-Test-Grenzwerte
Ach ja, eine kleine Info habe ich noch für Euch – die Kabelfarben der Servos bei den unterschiedlichen Herstellern!

Hersteller: acoms
Signal: Gelb
Plus: Rot
GND: Schwarz

Hersteller: Fleet
Signal: Weiß
Plus: Rot
GND: Schwarz

Hersteller: Futaba
Signal: Weiß
Plus: Rot
GND: Schwarz

Hersteller: Graupner
Signal: Orange
Plus: Rot
GND: Braun

Hersteller: HiTec
Signal: Gelb
Plus: Rot
GND: Schwarz

Hersteller: JR
Signal: Orange
Plus: Rot
GND: Braun

Hersteller: Multiplex
Signal: Gelb
Plus: Rot
GND: Schwarz

Hersteller: Robbe
Signal: Weiß
Plus: Rot
GND: Schwarz

 

Viel Erfolg!


Tags:

  • arduino servomotor ansteuern mit fotoresistor
  • servo ansteuern
  • arduino servo
  • servo arduino ansteuern
  • servo steuern mit mobilfunk
Tags

Related Articles

Kommentar verfassen

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Close

Send this to a friend