Hallo zusammen,
dies ist ein Nachfolge-Thema zur letzten Frage.
Ich möchte einen Servo geschwindigkeitsgesteuert zwischen beiden
Endpositionen bewegen.
Die Frage ist nun, ab wann eine Bewegung flüssig erscheint?
Da bei 20ms pro "impuls" bei 1 sek. verfahrweg nur 50 Schritte möglich
sind.
Dies erscheint mir etwas wenig?
Habt ihr da Erfahrungen?
Philipp schrieb:> Die Frage ist nun, ab wann eine Bewegung flüssig erscheint?
Ein Schritt ?
Von 1ms in den nächsten 20ms einfach mal 2ms senden, dann läuft er
ruckelfrei.
Ansonsten ist klar: Ein schneeller Servo ruckelt, wenn er nach 20ms
schon die Sollposition erreicht hat, oder zumindest in der Annäherung
ist.
Deswegen laufen viele Servos langsamer, wenn die Differenz zwischen Ist
und Sollwert gering ist.
Wenn es eine Stelle gibt, an der das Tempo genau zum Weiterschalten
passt, wird es ruckelfrei. Das wird aber bei jedem Servo anders sein
(auch noch betriebsspannungsabhängig) und bei manchen gar nicht
erreichbar sein.
Philipp schrieb:> Hallo zusammen,>> dies ist ein Nachfolge-Thema zur letzten Frage.>> Ich möchte einen Servo geschwindigkeitsgesteuert zwischen beiden> Endpositionen bewegen.> Die Frage ist nun, ab wann eine Bewegung flüssig erscheint?> Da bei 20ms pro "impuls" bei 1 sek. verfahrweg nur 50 Schritte möglich> sind.> Dies erscheint mir etwas wenig?>> Habt ihr da Erfahrungen?
20ms Pulsintervall ist keine feste Größe.
Du darfst auch gerne zB. alle 10ms einen neuen Puls senden.
Wo die untere Grenze liegt ist nirgendwo festgelegt und muss wohl
empirisch für jedes Servo ermittelt werden.
Philipp schrieb:> Da bei 20ms pro "impuls" bei 1 sek. verfahrweg nur 50 Schritte möglich> sind.
Du kannst ja auch jedesmal den Sollwert um mehr als einen Schritt
ändern. Wenn du 50 Schritte/s gehst und dein Servo auch die 4096
Schritte auflösen kann, dann braucht der Servo ~80 s für die von einer
Endposition zur anderen.
Gruß JackFrost
Nabend zusammen,
also die Zeit von 1-2 sek ist fix und von mir gewünscht.
In der Zeit soll er zwischen den endpositionen Verfahren.
Es ist ein analog-Servo, der eine Flanke zwischen 1-2ms und danach eine
pause benötigt.
Wie klein der kleinste Schritt ist, muss getestet werden.
Aber "normal" dauert ein Impuls 20ms, womit sich bei 1sek. 50 Schritte
ergeben.
Ich teste mal eine kürzere Ansteuerung mit 15 oder 10ms (danke norbert).
Philipp schrieb:> Nabend zusammen,>> also die Zeit von 1-2 sek ist fix und von mir gewünscht.> In der Zeit soll er zwischen den endpositionen Verfahren.> Es ist ein analog-Servo, der eine Flanke zwischen 1-2ms und danach eine> pause benötigt.> Wie klein der kleinste Schritt ist, muss getestet werden.> Aber "normal" dauert ein Impuls 20ms, womit sich bei 1sek. 50 Schritte> ergeben.> Ich teste mal eine kürzere Ansteuerung mit 15 oder 10ms (danke norbert).
Es ist doch egal wie groß der Schritt ist , der nach den 20 ms kommt.
Der Servo steuert den an und hält den. Wenn du von 1 ms auf 2 gehst in
einem Schritt dann fährt der Servo mit maximaler Geschwindigkeit von
links nach rechts. Du musst nicht alle 20 ms den Wert um eins ändern
damit der Servo fährt. Du gibst ja nur den Sollwert vor und der Servo
macht den Rest.
Kannst auch alle 20 ms den Wert um 10 Schritte ändern dann braucht der
Servo immer noch 8 Sekunden.
Gruß JackFrost
Du solltest dich mal mit den Thema Servo beschäftigen und das Prinzip
eines Servos verstehen.
Wie schon oben oft geschrieben spielt die 20 ms keine Rolle. Der Servo
bekommt von dir eine Sollwert Vorgabe. Du musst nicht, und dafür ist ein
Servo nicht gedacht, jeden Schritt einzeln anfahren. Du sagst ihm, mit
einem PWM Wechsel, "Fahre auf Position X" und der Servo fährt dahin.
Quasi von 0% bis 100% oder 89% oder 11% mit jeweils nur einem PWM
Wechsel.
Philipp schrieb:> Es ist ein analog-Servo, der eine Flanke zwischen 1-2ms und danach eine> pause benötigt.
Der braucht keine Flanke sondern einen Puls mit der Breite von 1-2ms.
Digitale Servos brauchen genau das gleiche Signal, sie sollen ja
kompatibel sein.
Der Wesentliche Unterschied ist: ein analoges Servo generiert die
Motor-PWM direkt aus dem Eingangssignal (PWM mit ca. 50Hz), ein
digitales (hat einen µC drin) misst die Pulsbreite und erzeugt eine
davon unabhängige (schnellere) Motor-PWM. Kann man leicht beobachten,
wenn man den Strom eines Servos auf dem Scope anschaut. Durch verkürzen
der Zeit bei einem analogen Servo veränderst du den Dutycycle der
Motor-PWM und das Servo wird schneller statt langsamer. Bei einem
digitalen Servo könntest du Glück haben.
Ich habe Servos mit gleicher Mechanik, die sind einmal analog und einmal
digital. Den Unterschied erkennt man von außen nur an der Typenbezeinung
und natürlich an der Elektronik. Das analoge hat einen der bekannten ICs
drauf, das digitale einen µC und eine Brücke. Am Strom kann man das
natürlich auch messen. Find doch mal raus, was für welche Servos du
hast, zur Not mal mit der Typenbezeichnung bei Hobby King suchen.
MfG Klaus
wie steuerst du den Servo an?
Falls deine PWM nur 8bit Auflösung besizt, dann liegt dort dein fehler.
Wenn du einen µC benutzt mach es einfach mal per soft PWM.
Miele Nutzer schrieb:> also meine Modelbauservos haben eine Auflösun von 4096 Schritten. Die> sind optisch auch bei ganz langsamer Geschwindigkeit Ruckelfrei.
Ach nee. Bei niedriger Geschwindigkeit is das auch kein Kunststück.
Jetzt erzähl aber mal, wie du bei einer Kommandofrequenz von
normalerweise 50Hz oder vielleicht 100Hz eine feinere Abstufung als 50
bzw. 100 Positionen für den Verstellvorgang realisieren willst.
Schreibe ich so undeutlich?
Wenn ich einen Servo von links nach rechts fahren will, dann muss ich
meine pulsbreite von 1ms auf 2ma erhöhen!
Links:
1ms "1-pegel", danach einen "0-pegel" von sagen wir 19ms.
Rechts:
2ms "1-pegel" und danach wieder die "0-pegel pause"
Dann rauscht er aber mit maximalgeschwindigkei von links nach rechts.
Wie ich aber schon mehrfach geschrieben habe, möchte ich den Wechsel von
links nach rechts in ca.1 sek Verfahren.
Dazu muss ich nunmal Zwischenschritte anfahren.
(Die kleinste Pausenzeit muss ich testen)
1,01ms "1-pegel" / ~19ms "0-pegel"
1,02ms "1-pegel" / ~19ms "0-pegel"
1,03ms "1-pegel" / ~19ms "0-pegel"
usw..
Die Auflösung bestimmt nicht mein Programm (16bit), sondern wie der
Servo sein Signal inkl. Pausenzeit erwartet.
Das sind bei 1sek. nunmal nur ~50 maximal mögliche Schritte.
Mit kleinerer Pausenzeit wohl etwas mehr.
Mehr können die Servos nunmal nicht.
Die Frage ist ja nicht, wie ich das realisiere, sondern ob ich da eine
flüssige Bewegung erwarten kann.
Oder ab wieviel Zwischenschritten ich eine flüssige Bewegung erwarten
kann.
Ich habe den aufbau aber noch nicht gemacht (der uc mit 16bit Timer
kommt erst heute an), sonst hätte ich das ja schon längst getestet.
Mit 50Hz könnte es etwas ruckelig werden. Ich bin mit 70Hz zufrieden.
Mir 100Hz bist du auf der Sicheren Seite. So mancher Digitalservo
verträgt auch 300Hz, auch wenn es nicht spezifiziert ist.
//Sorry für den "falschen" Anmeldenamen (Miele Nutzer)
Philipp schrieb:> Schreibe ich so undeutlich?
nein, schlimmer.
> Die Frage ist ja nicht, wie ich das realisiere,
sondern? Wie WIR das realisieren?
> Ich habe den aufbau aber noch nicht gemacht (der uc mit 16bit Timer> kommt erst heute an), sonst hätte ich das ja schon längst getestet.
Und nun sollen wir für dich mal eben zum Conrad fahren, das aufbauen,
deine Gedanken lesen und dir all das beantworten, was du bisher nicht
verstehst, weil du keinen Bock hast, bis heute abend zu warten?
plonk!
Danke Oskar, solche Nutzer sollten der Foren verbannt werden!
Würde dich gern noch mehr beschimpfen, aber das verstößt wohl gegen die
Forenregeln...
Ich habe nie geschrieben, das ich nicht verstehe wie der angesteuert
wird.
Es ging nie um das realisieren, was auch nirgendwo stand...
Es war einzig die Frage, ob das Vorhaben einen Servo mit 50 Schritten
innerhalb von 1sek. von links nach rechts zu fahren ein flüssiges
Ergebniss erzielen kann.
Das habe ich jetzt schon zum 3mal geschrieben.
Zur Frage passende Antworten gab es aber auch
MaWin
Norbert
W.A
Thomas W. (Miele Nutzer)
Danke an euch, ich klinke mich jetzt aus.
Die Antwort(en) auf Deine Frage ergibt sich quasi von allein durch Lesen
der Datenblätter.
z.B.: Zeit, die das Servo von einer Endposition zur anderen braucht,
Deine Zeitforderung, die Servo-Ansteuerung (Pulsbreiten, Pausen), ...
Nachfragen im Forum ist zwecklos, da keiner die Daten Deines Servos
kennt und Du Deine Anforderungen auch nur nach und nach raus gibst.
Blackbird
PS: Es wird nicht ruckelfrei in einer Sekunde von einer Endposition zur
anderen. Schon gar nicht mit einem digitalen Servo. Selber bauen.
Bei 10 - 13 ms Zykluszeit läuft ein Robbe S3003 Servor optisch
ruckelfrei zwischen den beiden Endpositionen. Getestet mit einem Attiny
2313 und dem Servo und gemessen mit dem Saleae.
Gruß JackFrost
Bastian W. schrieb:> Bei 10 - 13 ms Zykluszeit läuft ein Robbe S3003 Servor optisch> ruckelfrei zwischen den beiden Endpositionen. Getestet mit einem Attiny> 2313 und dem Servo und gemessen mit dem Saleae.
War nicht die Frage. Ist ja auch die Aufgabe eines Servos, ruckelfrei zu
laufen.
Philipp schrieb:> Ich möchte einen Servo geschwindigkeitsgesteuert zwischen beiden> Endpositionen bewegen.
Es soll extra langsam ruckelfrei und gleichmäßig zwischen zwei
Positionen laufen.
MfG Klaus
Klaus schrieb:> War nicht die Frage. Ist ja auch die Aufgabe eines Servos, ruckelfrei zu> laufen.
Grad das war dass Problem vom TO, das er nicht wusste ob der Servo
langsam zwischen den Endpositiinen innerhalb von einer Sekunde fahren
kann und dasselbe eine flüssige Bewegeung ohne "Pausen" ist. Klar wenn
der Servo direkt von A nach B fahren soll erst er ruckelfrei aber mit 50
einzelschritten ist er noch zu schnell dasselbe flüssig aussieht. Bei
100 alle 10 ms sieht es flüssig aus.
Gruß JackFrost
Ich denke es kommt zusätzlich zum Servo selbst noch sehr auf die
mechanische Seite an: Wie steif ist der Aufbau, d.h. die Verbindung
zwischen Servo und dem, was bewegt werden soll, und welche Massen sind
im Spiel, die wie schnell bewegt werden müssen.
Im Grunde ist jedes Feder-Masse-System ein mechanischer Tiefpass,
vergleichbar mit einer LC-Schaltung, wobei die Dämpfung bei mechanischen
Systemen oft recht klein ist, es sei denn man hat dafür speziell
vorgesorgt, oder man hat viel Reibung (Luftwiderstand, etwas klemmende
Lager oder Scharniere, etc.) Die Formeln findet man unter Federschwinger
sowohl translatorisch (Masse, Kraft) als auch rotatorisch
(Trägheitsmoment, Drehmoment).
Wenn jetzt das Servo selbst recht schnell ist (kleine Massen, großes
Drehmoment, kannst Du feststellen, wenn Du ohne Last den Hebel anfasst,
während es mit Deiner gewählten Geschwindigkeit laufen soll, wenn er
deutlich vibriert ist es schnell) dann springt es alle 20 ms (oder ggf.
auch schneller) jeweils einen kleinen Schritt weiter. Wenn die
mechanische Resonanzfrequenz Deines Aufbaus deutlich kleiner als 50 Hz
ist, wirst Du eine flüssige Bewegung, ggf. mit einer leichten
Verzögerung am Anfang und einem leichten Überschwingen am Ende haben.
Wenn die Resonanzfrequenz dann aber in Richtung 1 Hz kommt wird die
Verzögerung und das Überschwingen stärker.
Ist die mechanische Resonanzfrequenz mit etwas Abstand höher als 50 Hz
macht Deine Mechanik alle Sprünge des Servos fast 1:1 mit. Besonders
kritisch wird es wenn die Resonanz in der nähe der 50 Hz liegt, dann
könnte Deine Mechanik stärker schwingen als das Servo selbst.
Die mech. Resonanz kann man so verstellen:
Tiefer: Massen erhöhen, Antriebselemente weicher ausführen (biegsam,
Gummikupplung, zusätzliche Federelemente, etc.)
Höher: Leichtbau, Antriebsstrang aussteifen.
Dann gibt es noch das Phänomen der optischen Täuschung: Ein Servo, dass
mit 100 Hz läuft, kann sehr wohl ruckeln, ohne dass man es sieht, genau
wie bei 100 Hz Fernsehern die 100 Einzelbilder in der Sekunde
flimmerfrei gesehen werden, während die 50 Einzelbilder früher dafür
nicht ganz gereicht haben.
Viele Grüße,
Steffen
Steffen schrieb:> Ich denke es kommt zusätzlich zum Servo selbst noch ...
Könntest du das noch etwas ausführlicher erläutern aber auch wieder ohne
konkrete Werte für den TO seine Frage zu erwähnen?