Wie man einen Servomotor ansteuert

Was du schon weißt

  • Wie man eine Leuchtdiode an den Arduino anschließt und einen Widestand verwendet.
  • Wie man einen Quelltext bzw. ein Programm auf den Arduino hochlädt.
  • Wie man eine Leuchtdiode zum Blinken bringt.
  • Wie man eine Leuchtdiode auf Tastendruck ein- bzw. ausschaltet.
  • Wie man mit dem Arduino abfragt, ob ein Taster gedrückt wurde.
Stecke niemals auf dem Steckbrett um, während der Arduino noch mit Strom versorgt wird.
Achte darauf, dass auf dem Steckbrett keine Kurzschlüsse entstehen.

Was kommt jetzt?

Jetzt lernst du, wie ein Motor - genauer ein Servomotor - an den Arduino angschlossen und betrieben wird. Dazu schauen wir uns einen Servomotor einmal genauer an:

Wie du siehst, hat so ein Servomotor drei Kabel: ein gelbes, ein rotes und ein braunes.
Zwei der drei Kabel sind für die Stromversorgung da: das rote und das braune (in der Zeichnung ist das braune Kabel schwarz.). Das gelbe Kabel ist für die Bewegung des Servomotors vorgesehen.

Der Servomotor kommt zwar mit 5 V aus, benötigt aber relativ viel Strom. Daher schließen wir das rote Kabel nicht am 5 V-Kontakt an, sondern an VIN. Dieser Kontakt ist unten ganz rechts.
Das braune Kabel kommt entweder direkt an den Kontakt GND oder an eine der beiden waagerechten Leiste, die mit GND verbunden sind.
Die Schaltung sieht zunächst folgendermaßen aus:

Achte darauf, dass das rote und braune Kabel wirklich korrekt angeschlossen sind. Sonst könnten der Arduino oder Servomotor irreparablen Schaden nehmen.

Fehlt noch, wie man dem Arduino mitteilt, wohin er sich bewegen soll. Dazu kannst du das folgende Programm verwenden:

#include <Servo.h> 
 
Servo myservo;  
 
void setup() { 
  myservo.attach(2);
} 
 
 
void loop() { 
  myservo.write(180);
  delay(2000);
  myservo.write(0);
  delay(2000);
}

Über die gelbe Datenleitung teilt der Arduino dem Servomotor mit, wie weit er sich drehen soll. Der Servomotor schafft bauartbedingt nur eine halbe Umdrehung, was dem Winkel 180 ° entspricht. Zuerst fährt der Servomotor aber in seine Ausgangslage, die 0 ° entspricht. Eine ganze Umdrehung wären 360 °, die ist aber - wie erwähnt - nicht machbar für diese Art von Motor.

Schaue dir den loop-Bereich an:

void loop() { 
  myservo.write(180);
  delay(2000);
  myservo.write(0);
  delay(2000);
}

Dort siehst du, dass dem Servomotor mitgeteilt wird, er solle in die Ausgangslage fahren. Damit er das kann, muss eine kurze Zeit gewartet werde. Die hier angegebenen 2 Sekunden sind dafür viel mehr als ausreichend.
Dananch wird der Servomotor angewiesen, in die anderen Endposition zu fahren. Danach wird ebenfalls eine kurze Zeit gewartet.

Ziel erreicht

Herzlichen Glückwunsch! Du weißt nun, wie man mit dem Arduino einen Servomotor ansteuert.

Weitere Ideen

Wenn du noch Zeit hast, knnst du folgendes ausprobieren:

  • Lasse den Servomotor nicht den ganzen Weg fahren, sondern nur einen Teil.
  • Lasse den Servomotor sich im Sekundentakt einen Teil vorwärts bewegen.
  • Simuliere einen Scheibenwischer (im Auto). Baue dazu einen Taster mit ein. „Wische“, wenn der Taster das Wischen eingeschaltet hat. Dazu kannst du das Programm mit der Leuchtdiode und dem Taster erweitern. Statt der Leuchtdiode verwendest du einfach den Servomotor. Alternativ findest du das Scheibenwischerprogramm auch hier.

Wie geht's weiter?

Weiter geht's mit dem Zusammenbau des Messgerätes.