Servo Ansteuerung direkt vom Arduino

Ein Modellbau Servo kann direkt vom Arduino Pin angesteuert werden.

Der Servo reagiert auf Pulslängenänderungen. Ein 5V Puls ist 1-2 Millisekunden lang und dann folgt eine Pause mit 0V von ca. 20 ms bis zum nächsten Puls.
Ein Puls mit 1 ms bedeutet linker Anschlag.
Ein Puls mit 1,5 ms bedeutet Mittelstellung.
Ein Puls mit 2 ms bedeutet rechter Anschlag.

Wird die Pulsdauer von 1 ms zu 2 ms kontinuierlich verändert, dreht der Servo langsam zum Vollausschlag.

Servo am Arduino

Zur Stromversorgung bekommt der Servo noch Strom vom Arduino
+5V > Servoleitung rot
GND > Servoleitung schwarz
Und die Signalleitung
A2 > Servoleitung orange oder gelb

Hier das Programm

// Servo Ansteuerung direkt vom Arduino Pin
//
// Matthias Busse 18.07.2015 Version 1.0

int pin=2; // Servo Steuerleitung gelb / orange

void setup() {
  pinMode(pin, OUTPUT);
}

void loop() {
  for(int i=0; i <= 100; i++)
    servo(pin, i);
  for(int i=100; i >= 0; i--) 
    servo(pin, i);
}

void servo(int pin, int pos) {
// pos 0-100% > 1000-2000 Micro Sekunden
  digitalWrite(pin, 1);
  delayMicroseconds(map(pos,0,100,1000,2000));
  digitalWrite(pin, 0);
  delay(20); // 20ms warten - ergibt ca. 50 Hz Signale
}

Die map() Funktion nimmt den Wert pos, der im Bereich von 0-100 (%) liegt und rechnet ihn in die Pulslänge von 1000 bis 2000 Mikrosekunden (1-2ms) um.
Wenn die Servos etwas weiter aussteuern sollen sind häufig auch Werte 900 – 2100 möglich. Das kann man mit dem vorliegenden Servo einfach ausprobieren. Wenn er sich gut an hört, ist das noch in Ordnung

Software: Arduino 1.6.1

Hardware: Arduino Nano, Modellbauservo mit 3 Anschlussleitungen

Es gibt auch eine Servo Library in der Arduino Software mit 2 Beispielen.

von Matthias Busse

Ein Gedanke zu „Servo Ansteuerung direkt vom Arduino

  1. Pingback: Servosteuerung mit einem Poti und dem Arduino | Shelvin – Elektronik ausprobiert und erläutert

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.