Servos können am Arduino sehr vielseitig eingesetzt werden. Das Beispiel mit dem Servo am Arduino und die Verwendung der Servo-Library kennt jeder Arduino-Benutzer. Das lässt sich auch ohne Library machen! Umgebaute Servos können auch als normale Motoren eingesetzt werden. Eine H-Brücke oder ein Motorshield sind dabei nicht notwendig.


Was ist ein Servo?

Servos werden im Hobbybereich hauptsächlich für den Modellbau eingesetzt. Sie lenken dort Flugzeuge, Autos und Schiffe. Aber auch im Bereich der Elektronik lassen sie sich gut einsetzen. Neben der Versorgungsspannung haben sie nur einen Signaleingang. Dort wird über PWN angegeben, welchen Winkel der Servo einstellen muss. Servos sind also Stellmotoren und eigentlich nicht für normale Antriebe geeignet. Sie enthalten den Motor, ein Getriebe und die notwendige Steuerelektronik. Ausserdem stecken sie in einem Gehäuse, das eine einfache Integration in das eigene Projekt erlaubt.

Findige Köpfe haben herausgefunden, dass sich Servos auf einfache Art und Weise zu Antriebsmotoren umbauen lassen. Dabei kann über den Signaleingang Richtung und Geschwindigkeit des Motors gesteuert werden. Solche Servos können inzwischen auch fertig gekauft werden. Eine weniger raffinierte Umbaumethode entfernen die Elektronik, zurück bleibt ein Gleichstrommotor mit Getriebe.


Stacks Image 665

Die Ansteuerung erfolgt über PWM

Von verschiedenen Herstellern gibt es verschiedene Anschlusstecker. Man kann sich darauf verlassen, dass das mittlere Kabel immer PLUS ist. MINUS (GND) liegt auf dem dunkleren der beiden anderen Kabel. Normalerweise verwenden Modellbauservos Betriebsspannungen von etwa 4 - 6 Volt. Das verbleibende Kabel ist der Signaleingang. Er erwartet ein PWM - Signal mit einer Periodendauer von 20 ms. Die Pulsbreite schwankt zwischen etwa 0.5 bis 2.5 ms. Diese Werte variieren je nach Servo und müssen bei Fehlen eines Datenblattes experimentell ermittelt werden.

Mit dieser Spezifikation ist klar, dass der PWM-Modus eines Arduino - Analogausgangs nicht direkt geeignet ist. Für den Arduino steht die Servo - Library zur Verfügung. Es geht aber auch ohne, die beiden Sketches seht ihr unten.

Ein Servo deckt etwa einen Winkel von 180 Grad ab. Das umgebaute Modell läuft als normaler Motor, der Sketch muss dazu nicht geändert werden. Wie das genau aussieht, könnt ihr im Video sehen.

Noch etwas zum Thema Stromversorgung: Ein grösserer Servo kann unter Belastung einen hohen Strom ziehen. Die Betriebsspannung des Servos sollte daher nicht wie im Video vom Arduino genommen werden. Der PLUS- Pol des Servos sollte also mit einer externen Stromversorgung betrieben werden. Wie immer muss aber GND mit dem GND des Arduinos verbunden werden.


/*
  Servosteuerung mit Library
*/

#include 

Servo servo;  // Servo-Objekt aus Library

const int potiPin = A4;
const int servoPin = 9;

// linker und rechter Anschlag in Grad
const int minValue = 0;
const int maxValue = 180;


void setup()
{
  servo.attach(servoPin);  
}

int getPotiValue() {
  return map(analogRead(potiPin),0,1023,minValue,maxValue);
}

void setServo(int pos) {
  servo.write(pos);
}


void loop() 
{ 
  setServo(getPotiValue());
  delay(20);   // Dem Servo muss etwas Zeit gegeben werden 
} 
/*
  Servosteuerung ohne Library
*/


const int potiPin = A4;
const int servoPin = 9;

// linker und rechter Anschlag in Grad
const int minValue = 0;
const int maxValue = 180;


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

int getPotiValue() {
  return map(analogRead(potiPin),0,1023,minValue,maxValue);
}

void setServo(int pos) {
  int puls = map(pos,minValue,maxValue,400,2400);
  digitalWrite(servoPin,HIGH);
  delayMicroseconds(puls);
  digitalWrite(servoPin,LOW);
  delay(19);
}


void loop() 
{ 
  setServo(getPotiValue());
} 

Willst du es genauer wissen ?

Wie funktioniert Arduino - PWM?
https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM

Die Belegung der Servo-Anschlüsse:
http://www.electronicsplanet.ch/Roboter/Servo/stecker/stecker.html

Funktionsweise eines Servos:
http://www.electronicsplanet.ch/Roboter/Servo/intern/intern.htm

Servo-Umbau:
http://www.electronicsplanet.ch/Roboter/Servo/hacking/overview.htm

Servo-Details:
http://wiki.rc-network.de/Servo

Das Adafruit Analog Feedback Servo:
https://learn.adafruit.com/analog-feedback-servos