-         

Ergebnis 1 bis 2 von 2

Thema: Frage zum Servo Controller allgemeine Funktion

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.10.2010
    Beiträge
    43

    Frage zum Servo Controller allgemeine Funktion

    Anzeige

    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.

  2. #2
    Benutzer Stammmitglied Avatar von stoerpeak
    Registriert seit
    20.06.2010
    Beiträge
    38
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •