Forum: Mechanik, Gehäuse, Werkzeug Ab wieviel Schritte läuft ein Servo ruckelfrei?


von Philipp (Gast)


Lesenswert?

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
von Miele Nutzer (Gast)


Lesenswert?

also meine Modelbauservos haben eine Auflösun von 4096 Schritten. Die 
sind optisch auch bei ganz langsamer Geschwindigkeit Ruckelfrei.

von MaWin (Gast)


Lesenswert?

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.

von Norbert (Gast)


Lesenswert?

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.

von Bastian W. (jackfrost)


Lesenswert?

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

von Philipp (Gast)


Lesenswert?

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).

von Bastian W. (jackfrost)


Lesenswert?

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

von Draco (Gast)


Lesenswert?

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.

von Klaus (Gast)


Lesenswert?

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

von Miele Nutzer (Gast)


Lesenswert?

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.

von W.A. (Gast)


Lesenswert?

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.

von Philipp (Gast)


Lesenswert?

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.

von Thomas W. (thomas_w808)


Lesenswert?

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)

von Oskar (Gast)


Lesenswert?

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!

von Philipp (Gast)


Lesenswert?

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.

von Blackbird (Gast)


Lesenswert?

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.

von Bastian W. (jackfrost)


Lesenswert?

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
von Klaus (Gast)


Lesenswert?

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

von Bastian W. (jackfrost)


Lesenswert?

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

von Steffen (Gast)


Lesenswert?

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

von horch (Gast)


Lesenswert?

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?

von iillii (Gast)


Lesenswert?

>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
Noch kein Account? Hier anmelden.