PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zum Servo Controller allgemeine Funktion



Typer
26.02.2011, 10:40
Hi,

ich habe mir einen 4 beinigen Laufroboter gebaut namens Lara.

Laufender
Autonomer
Roboter mit
Atmega

Die Basis ist ein AVR Evo board mit einem Atmega 168

Lara kann auch schon laufen, hat aber noch keine Sensoren.

Zu meiner Frage:
Ich würde gerne einen Servocontroller verbauen (Lara hat 12 Servos, 3 pro Bein)

Kann mir jemand erklären wie genau so ein Servocontroller arbeitet.
Wie schaft es der Controller einige Servos langsam und gleichzeitig andere etwas schneller zu bewegen.

Beispiel für mein Programm wenn sich ein servo langsam bewegen soll.
zb von pos 100 auf 150

(Bitte nur Basic/Bascom)
do
servo.X = servo.x + 1
waitms 10 'hier stelle ich die Geschwindigkeit ein
loop until servo.x = 150

Problem:
Während dieses Loops kann das Programm keine anderen Servos ansprechen.

Zb dieser Servocontroller spricht mehrere Servos mit diversen Geschwindigkeiten an. Wie ist dies Möglich bzw brauche ich dazu einen speziellen IC?
http://www.youtube.com/watch?v=0il8uEUCGtk

Danke schon mal für die Hilfe, bin für jeden Tipp/Anregung zu haben.

stoerpeak
27.02.2011, 09:39
Zur gleichzeitigen Steuerung mehrerer Servos gehe ich wie folgt vor:
Die Routine die die Servopulse erzeugt, macht bei jedem Aufruf (alle 20ms) einen Soll-Ist-Vergleich. D.h. man gibt einen neuen Sollwert für z.B. Servo Nr.8 vor und die Routine erkennt eine Soll-Ist- Abweichung. Jetzt verstellt sie den Istwert, dem der Servo ja absolut folgt, um eine Schrittweite.
Das geht dann solange bis nach etlichen Durchläufen Soll und Ist übereinstimmen. Die Schrittweite entspricht der Geschwindigkeit. Ist sie groß, erreicht der Servo sein Ziel schnell, ist sie klein, fährt er langsam.
Bei allen anderen Servos läuft parallel dazu dasselbe ab, da die Pulsausgaberoutine ja bei jedem Aufruf alle Servos der Reihe nach abarbeitet.
Somit laufen alle Servos gleichzeitig mit der ihnen jeweils zugeordneten Geschwindigkeit. Wenn ein Servo am Ziel ist (weil er schnell war oder nur einen kurzen Weg hatte), erkennt man das an seiner Soll-Ist-Übereinstimmung.

Ich hoffe das hilft etwas weiter.

Gruß Stoerpeak