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?
:
Verschoben durch Moderator
also meine Modelbauservos haben eine Auflösun von 4096 Schritten. Die sind optisch auch bei ganz langsamer Geschwindigkeit Ruckelfrei.
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
:
Bearbeitet durch User
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?
>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? Hat er doch grad gemacht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.