-         

Ergebnis 1 bis 4 von 4

Thema: Langsame, flüssige Bewegung mit Servo

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.06.2012
    Beiträge
    29

    Langsame, flüssige Bewegung mit Servo

    Anzeige

    Hallo allerseits,

    ich muss einen Servo innerhalb von 5Sek. um etwa 60° drehen.
    Bis jetzt hab ich's nicht hingekriegt, dass diese Bewegung flüssig
    und nicht so "stotternd" abläuft - bin ich da an einer baulichen Hürde
    eines Servos angelangt oder gibt es eine möglichkeit, den Servo
    geschmeidig gleiten zu lassen?
    Bis jetzt habe ich (mangels besseren Wissens) einfach versucht, in
    Bascom die Bewegung in so viele Schritte wie möglich zu unterteilen,
    was wenigstens eine geringfügige Besserung gebracht hat.

    LG
    Tobias

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von MisterMou
    Registriert seit
    31.05.2009
    Ort
    Stralsund
    Alter
    26
    Beiträge
    433
    Nutzt du die komische Servo Funktion von Bascom? Die ist alles andere als optimal.
    Bau dir einfach selbst ein Servosignal mit einem Timer, ist viel besser
    Mähh macht der Rasenmäher. http://moufx.wordpress.com/

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.02.2006
    Beiträge
    982
    Zitat Zitat von t0bias Beitrag anzeigen
    Bis jetzt habe ich (mangels besseren Wissens) einfach versucht, in
    Bascom die Bewegung in so viele Schritte wie möglich zu unterteilen,
    was wenigstens eine geringfügige Besserung gebracht hat.
    Der Servo wird immer versuchen die Teilschritte so schnell wie moeglich zu machen,
    von daher bleibt dir eigentlich nur die Abstufung zwischen den Schritten so fein wie moeglich zu machen.
    Nam et ipsa scientia potestas est..

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.555
    Zitat Zitat von t0bias Beitrag anzeigen
    ... Servo innerhalb von 5Sek. ... 60° drehen ... so viele Schritte wie möglich zu unterteilen ...
    So viele Schritte wie möglich. Genau, das ist - mal ganz grob ausgedrückt - der erste Punkt der Lösung.

    Der Servo wird immer versuchen die Teilschritte so schnell wie moeglich zu machen,
    von daher bleibt dir eigentlich nur die Abstufung zwischen den Schritten so fein wie moeglich zu machen.
    Richtig, im Prinzip, aber nur, WENN der werte Programmierer den ersten Satzteil streng beachtet. Im Detail mal ausführlich : Der Servo hat ja - standardmässig (analog, digital geht das z.T. deutlich schneller) und theoretisch eine Periodenlänge von 20 ms (siehe hier - klick mal). Das heißt - wenn ich in einer Schleife den Servopuls pro Schleifendurchlauf nur einen Tick weiterschalte, dann könnte es sein, dass pro Servoperiode schon mal fünfzig oder hundert Schleifendurchläufe, vielleicht sogar mehr, ablaufen. Damit ist die MÜhe mit den wenigen Ticks garnix mehr wert.

    Man muss dafür sorgen, dass der Servo >>pro Servoperiode<< genau den richtigen, fein unterteilten Pulsfortschritt beigebracht bekommt. Man muss also dafür sorgen, dass der Servo grad nur 50 mal pro Sekunde einen neuen Wert bekommt (ich mache das so und es geht recht gut).

    Im vorliegenden Fall rechnen wir mal:
    5 sec für 60°, das sind 5 * 50 - also 250 - Servoperioden für 60°. Anders ausgedrückt muss ich dafür sorgen, dass pro Servoperiode die Ansteuerung für 0,24° ausgegeben wird. Weiter: die übliche Servorampe mit 8 Bit hat das schon mal verloren weil ich ja für den unteren Ausschlag schon etwa 150 von den 255 möglichen Pulswerten habe - sechzig Grad weiter werden es dann rund 220 sein - oder so. Also sind rund 70 mögliche Schritte - und diesen 1°-(Fort-)Schritt sieht man bei den meisten Servos (sogar bei meinen billigen) - insbesondere deswegen, weil ja nur - rechne mal selbst - nur jeder dritte Puls einen neuen Wert haben darf. Sonst schaffts Du die fünf Sekunden nicht . . . .

    Ich betreibe meine Servos mit dem 16bittigen Timer. Da habe ich dann ziemlich genau 300 Ticks (OCR1A) für 90 Grad, sprich: 200 Ticks für sechzig Grad. Grundlage: megaxx/20MHz/Timer1=16-Bit/prescaler=clk/8.

    Wenn man jetzt keinen Prescaler nähme, sprich: clk/1, dann sind das acht mal so viel Ticks für sechzig Grad. Bei mir geht das nicht mehr, weil mein Controller mit 20 MHz läuft und ich so Mühe mit der gesamten Servoperiode habe. Wenn man den langsamer takten lässt, dann dürfte man hier aber ne ausreichende Anzahl Ticks für die VORGABE bekommen können. Ob das der Servo mitmacht, ist ne andere Frage. Und wie das in Bas com geht weiß ich auch nicht, weil ich das in C mache (sorry). Ich weiß nicht mal, ob das überhaupt in Bas com geht.

    Fazit: mal GENAU aufmalen was geschieht - und das ins Programm umsetzen.
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. TIA - langsame Anstiegsflanken?
    Von Knorz im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 10.10.2011, 20:46
  2. Langsame Drehbewegung messen (einfach)
    Von Involut im Forum Sensoren / Sensorik
    Antworten: 20
    Letzter Beitrag: 02.01.2010, 17:15
  3. Langsame Bewegungen als Servokiller?
    Von ralf33 im Forum Motoren
    Antworten: 3
    Letzter Beitrag: 05.11.2009, 12:25
  4. Antworten: 4
    Letzter Beitrag: 30.07.2007, 21:59
  5. Antworten: 33
    Letzter Beitrag: 02.05.2006, 09:53

Berechtigungen

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