Bild hier  
Quelle: http://wiki.rc-network.de/Servo

Das ist eine (nicht masstäbliche!) Darstellung der Servoimpulse. Die Impulslänge für Servomitte dauert ca. 1ms, der Drehbereich geht von 0,5ms bis 1,5ms (Manche Dokus sprechen auch von Mitte=1,5ms und Drehbereich 1-2ms) Die Impulse sollten alle 20ms wiederholt werden, das ist der Abstand zwischen zwei ansteigenden Flanken des Signals, in einer Sekunde werden so ca. 50 Impulse-Pausen gesendet (50Hz). Solange das Servo diese Impulse empfängt, versucht es, auf den entsprechenden Drehwinkel zu fahren bzw. diese Position zu halten. Für eine vernünftige Ansteuerung muss das Signal mindestens solange gesendet werden bis das Servo die entsprechende Position erreicht hat (zeitgesteuert weil keine Lagerückmeldung des Servos zur Verfügung steht).

Ein Sleep(1) dauert beim RP6 ca. 0,1ms weil die Zeit mit dem 10kHz-Timer0 erzeugt wird. Deshalb entsprechen Sleep(10) ca. 1ms und Sleep(200) ca. 20ms. Weil die 20ms-Pause jeweils zwischen den Impulsstarts liegen soll, ist eine Pause von Sleep(190) grundsätzlich nicht schlecht.

Meine Vorgehensweise: Ich markiere ein Servohorn (der Hebelarm auf dem Servo) an einer Stelle und drehe das Servo mit der Hand von Anschlag zu Anschlag. Dabei versetze ich das Servohorn solange in der Vielverzahnung der Antriebswelle bis der Drehbereich symetrisch in Bezug auf das Servogehäuse ist. Dann merke ich mir (oder markiere) die Mitte dieses Drehbereichs und sichere das Horn mit der Befestigungsschraube.

Nun schliese ich das Servo an den RP6 an und starte das Servoprogramm1 für eine Position. Ich beginne mit einer Impulslänge die etwa in der Mittelstellung des Servos liegt (z.B. mit 12 für 1,2ms) und ändere dann diesen Wert solange bis sich die Markierungen für Servomitte decken. (Ja, ich flashe dabei jedesmal neu ;) Anschliessend ermittle ich in gleicher weise die Werte für die Anschläge. Das sind dann die Min- und Maxwerte des Drehbereichs, diese sollten dann aber im Betrieb nicht angefahren werden!

Wenn das erledigt ist, wird man feststellen, dass die Werte für diese besonderen Positionen nicht exakt mit den Dokuwerten übereinstimmen. Das ist eben der Unterschied zwischen Theorie und Praxis :) Außerdem ist der Bereich meist nicht linear aufgeteilt und auch noch abhängig von der Betriebstemperatur.

Noch eine Info zur 20ms-Pause: Sie kann auch länger sein, das Servo wird dann träger und beginnt zu zuckeln. Kleinere Werte machen die Servos aggressiver und erhöhen die Stromaufnahme.

Der Wert des Potis ist für die Ansteuerung ohne Bedeutung. Er dient dem Servo zur Lagerückmeldung der Abtriebswelle. Der Sollwert wird von der Servoelektronik aus der Impulslänge berechnet.

Gruß

mic