SONSTIGE Servo Bewegung / Genauigkeit

hobby1946

Erfahrener Benutzer
#1
Hallo,

ich habe mir ein Messgerät gebaut, das ein Servo mit genauen us Impulsen ansteuert.
Gleichzeitig wird mit einem Sensor am Servo die Servobewegung in Grad (00,0) gemessen.

Ich war da sehr überrascht, wie ungenau die Servos dabei reagieren !

Da wird beim Sender bei Hallsensoren mit einer Auflösung vo 5000 Schritten geworben,
wo ein Servo bei 40 Schritten so seine Probleme hat.

Das Messgerät zeichnet die Schritte auf einer SD karte auf, wodurch ich sie dann mit Wxcel auswerten kann.

Anfangs habe ich an der korrekten Messung meines Gerätes gezweifelt, aber nach genauer Überprüfung
misst es korrekt.

Hier mal eine Auswertung eines 9 gr. Analogservos mit Metallgetriebe und 2 Kugellagern:

us Schritt 25us
dh. 40 Schritte von 1000 -2000us
Bewegung 90 Grad bei 40 Schritten
Da wäre eine Änderung des Servoarmes von 2,2 Grad je 25us normal .

servo 25 us ma.jpg

Hier sind Änderungen von 0 bis 5,5 Grad aufgezeichnet.

Hat jemand so was schon mal gemacht ?
Oder kennt jemand andere Messungen ?

mfg
 
Erhaltene "Gefällt mir": lion

brandtaucher

Erfahrener Benutzer
#2
Ich messe ja auch gerne und viel. Daher danke fürs Teilen!

Dass 5.000 Schritte beim Sender Blödsinn sind, ist klar. Vermutlich wären pro Grad 1 Schritt völlig ausreichend.

Wenn der Servo nur 40 Schritte kann (richtig verstanden?), dann erscheint das allerdings als sehr wenig. Gibt es bessere Servos?
 

hobby1946

Erfahrener Benutzer
#3
Nein, falsch verstanden.

Ich kann verschiedene Impulslängen ausgeben.
Vorgesehen ist ein 2-5-10-25-50-100-250 Raster.
Also z.B. 1500,1525,1550,1575 us...... usw.

Das Servo läuft also im 25us Raster von einem zum anderen Anschlag.

Die Kurve ist mit 25us Raster gemessen.

2 us und 5 us sind nicht sinnvoll, da die Servos hier viel zu oft nichts machen,
aber interessant bei verschiedenen Servos.

Ich habe erst an meinem Messgerät gezweifelt, ob die Impulse stimmen.
Aber ich habe mit meine X10S die gleichen Impulse im 25us Raster programmiert
und vom Empfänger direkt ausgeben lassen. Das gleiche Ergebnis !

Das Servo müßte sich bei 25us ca. 2,2 Grad bewegen. Rote Linie !
Was es aber wirklich macht ist für mich heftig ....
 

kalle123

Jugend forscht ....
#4
Hi. Ich meine aber im o.a. Diagramm mehr als die angegebenen 40 Schritte zu sehen. Oder irre ich mich da? Interessant wäre auch ein Diagramm 1000 .. 2000 .. 1000µs.

Ein Sprung im Bereich 0 .. 4.4° wäre m.E. auch ok, alleine wegen des Spiels in der (notwendigen) Mechanik.

Bist du gewillt, etwas mehr zu deinem Messaufbau zu sagen? Wie und womit erzeugst du das Signal, welchen Encoder verwendest du? Hast du irgendeine Last auf der Servobewegung?

Gruß KH
 

hobby1946

Erfahrener Benutzer
#5
In meinem Diagramm hat das Servo 4x den Bereich von 1000-2000 us durchlaufen.
Da sieht man, daß die Ausreißer nicht konstant sind ...

Das Servo wird erst mal ohne Last betrieben.
Kommt später noch ...

Ich benutze einen Arduino Mega2560 für den Servotester.
Ein Nano hat zu wenig Speicher.

Der Mega erzeugt selbst das PWM Signal und gibt es direkt an das Servo.

Nach jedem Schritt wird mit einem Adafruit MMA8451 (sehr genau) der Winkel
an der Achse gemessen und die Differenz ermittelt.
Ferner wird der maximale Ausschlag, die minimalste und maximale Differenz
und die Mittendifferenz aus beiden Richtungen kommend ermittelt.

Dies wir auf einem farbigen TFT Display angezeigt.

Der Winkel und die Winkeldifferenz wird zusätzlich im csv-Format auf eine
SD Karte geschrieben und kann mit Excel direkt als Kurve angezeigt werden.

Das war nur möglich wegen Corona Ausgangsbeschränkung, da hat man viel Zeit zu Hause.
War 4 Wochen Arbeit, da ich eigentlich vom Arduino programmieren vorher
keine Ahnung hatte.



bild tft1.jpg


hier wird gemessen :
Download 20200421_175611.mp4 (18.49 MB) now. Fast and easy at workupload.com

Jetzt bräuchte ich nur noch verschiedene Servos (analog, digital, groß, klein, billig, teuer)
zum Testen was da die Unterschiede sind.
Leider hat ein großer Modellbauhändler in der Nähe wegen Corana geschlossen,
da hätte ich mir welcheausleihen können.

Im Übrigen hat ein Servo von HK SG90 ( gekauft für 1,60 Eur ) sehr gute Werte .....

Hier mal die Kurve mit 50us Schritt , = ca, 4,4 Grad bei diesem Servo


servo 50us.jpg

normal wäre die rote Linie ...
 

hobby1946

Erfahrener Benutzer
#7
Erst wird bewegt, dann 0,3 s gewartet, dann wird gemessen, dannach weitergeschaltet.
Da schwingt nichts ...

das wurde auch mit größeren Pausen (1s) getestet, keine Unterschiede ...
 

kalle123

Jugend forscht ....
#8
Bei dem MMA 8451 hab ich Bauchschmerzen. Hab mich lange mit Ruderwinkelmessung beschäftigt, zuerst mit ADXL345, dann mit MMA 8451.

Die Dinger sollten abgeglichen werden mit Referenzwinkel. Wie willst du das machen, hast du ein Messlabor zur Hand? Messprinzip Beschleunigungsensor! Die Dinger zeigen dir an, wenn draußen ein LKW vorbei fährt. Und ich hab 'gute' und 'weniger gute' MMA 8451 gesehen.

Bei der Drehwinkelmessung bin ich eigentlich von einem Winkelencoder ausgegangen, nicht von einem Beschleunigungssensor.

Dann zu dem PWM Signal. Würde da einfach mal nen Logic Analyzer mitlaufen lassen, nur um zu sehen, wie 'gut' die vom Arduino generierte PWM Signalfolge denn ist.

In die Richtung, so was aufzubauen, hab ich auch schon mal gedacht. Aber momentan reicht mir da ein Zeiger auf dem Servohebel, Gradscheibe und ein guter Servotester.

OZ2CPU, homemade Servo tester with PIC12F675

Ich bau in Holz und da braucht es eine Mikrometerschraube nicht!

Gruß KH
 

hobby1946

Erfahrener Benutzer
#9
Der 8451 wurde mit einem extra Programm vermessen (wie ein FC auch)
und die Offset-Werte wurden ins Programm übernommen.

Die Messung mit einem Logikanalyser habe ich mir gespart
und stattdessen meine Fernsteueranlage so programmiert,
daß diese stufenweisen Schritte vom Sender ausgegeben werden
und über den Empfänger ans Servo gelangen. Entspricht ja der Realität.
Aber das gibt auch keine anderen Ergebnisse.

Für mich wichtig sind die Winkeldifferenzen und die misst der Sensor sehr gut
Die Sensorergebnisse werden auch gefiltert. Alles nicht so einfach, aber es geht.
Ich benutze diesen Sensor auch bei meiner Einstellwinkeldifferenz-Waage, wo er gute Dienste leistet.

Ich glaube nicht, daß man mechanisch messen kann, wie groß die Differenzen
bei z.b. 25us Änderungen sind.

Überraschen war für mich, daß bei einer Änderung von 50us (!) das
Servo eine Bewegung von 1,5 bis 8 Grad macht !
Eine so große Toleranz hätte ich nicht erwartet.

Was für mich wichtig ist, ist der Unterschied der verschiedenen Servos in allen Klassen!
Und den sieht man damit sehr gut.

Wenn Servos mit Totzeiten von 3us angegeben sind und sich bei 15us noch
nicht bewegen, sagt das schon viel aus.
 

kalle123

Jugend forscht ....
#10
OK. Wenn du mit deinen Messungen zufrieden bist.

Hab mich mit Ruderwinkelmessung, dann mit CG scale und EWD Messung beschäftigt. Und dann geht es los. Wie mach ich den Abgleich bei den Sensoren? Alle 3 Achsen. Gain und Offset und dann hoffe ich mal, das der Sensor auch schön auf der Geraden, die ich da mit meinen Mitteln ermittelt habe, fährt. Hab da so meine Zweifel.

Wenn, dann schon mit nem Encoder. Wie hier https://www.rcuniverse.com/forum/rc...9-hacker-ditex-servo-review.html#&gid=1&pid=2

Ich messe inzwischen wieder traditionell.

Bei den Servos interessiert mich der Drehwinkel, hab schon erlebt, das bei typgleichen schon mal 10° Unterschied vorkommen können (so was hab ich ungern als Querruderservos drin) und natürlich eine möglichst spielfrei Anlenkung. That's it!

cu KH
 

hobby1946

Erfahrener Benutzer
#11
Meine Sensoren werden genauso abgeglichen wie in den Flightcontollern.
Gain un Offset werden für die 3 Achsen ermittelt und die Werte trage ich dann als Offset
in mein Programm ein. Funktioniert sehr gut !

Da mich beim Servoausmessen, aber nur die Schwankungen interessieren,
reicht das völlig aus.

Im Prinzip habe ich festgestellt, das bei einer Änderung des PWM Signal um 50us,
was einer Winkeländerung von ca. 4 grad entspräche, das Servo zwischen sich
zwischen 1,5 und 8 Grad dreht. Das ist eine Riesentoleranz.

Außerdem kann man sehen wie weit sich die Servos bei 1000 und 2000 us drehen.
Da habe ich Werte zwischen +/- 40 bis +/- 60 gemessen,
wobei bei einigen auch die Endausschläge bis ca. 15 Grad differieren.

Leider mangelt es mir an im Moment weiteren Servos zum ausmessen.
Es wäre schon interessant was die Typen und Marken so "hergeben".
 

hobby1946

Erfahrener Benutzer
#12
Meinen PWM Ausgang habe ich sicherheitshalber mit einem Data-Logger nachgemessen.

Arduino gibt 1500 us aus, Datalogger zeigt 1504us an !
Aus dem Empfänger kommen bei 0% 1502us.
Passt also ....

Also ich bin mit dem Servomessgerät so zufrieden.
Ich habe innerhalb von 1-2 Minuten automatisch die Größe der Endausschlage,
die minimale und maximale Änderungen pro Schritt über den gesamten Bereich,
die maximale Abweichung im Nullpunkt aus beiden Richtungen
und kann die Schritteweite beim Messen einstellen.
Eine grafische Auswertung ist auch möglich.
 
Zuletzt bearbeitet:

hobby1946

Erfahrener Benutzer
#15
Genau !

Ich kann nun feststellen ob ein Servo ok ist.
Ich kann nun feststellen welche Servos was für Ausschläge und Toleranzen haben
und wie genau sie arbeiten.
Ich kann nun feststellen wie genau das Servo den Nullpunkt hält.

2 gleiche Servos haben nicht immer auch den gleichen Ausschlag !
 

QuadCrash

Erfahrener Benutzer
#16
Ok, selbst verwende ich meist nur neue Marken-Servos, da kommen Probleme bei meinen Installationen mit Servos eher selten vor. Aber gut zu wissen, was man machen könnte.
 

hobby1946

Erfahrener Benutzer
#17
Leider hat eine mir gut bekannte Modellbaufirma ganz in der Nähe noch zu.
So kann ich keine höherwertige Servos testen ...
Das kommt aber noch !
 

kalle123

Jugend forscht ....
#20
Ich wollte dich jetzt nicht ärgern ...

Nur wenn du von 'gleichen' Servos sprichst, meinst du Servos vom gleichen Hersteller, mit der gleichen Bezeichnung, gleichen Abmessungen usw. und auch mit dem 'gleichen' Verhalten innerhalb der Herstellertoleranz, die wir aber nicht kennen.

Aber Schwamm drüber.

Aber ich komme nochmal auf deinen Ansatz hier zurück. Den Winkelausschlag erachte ich für wichtig. Aber diese 'Sprünge' bei 50µs, die du aufgezeichnet hast, ich weiß nicht.

Hab mir mal ein MPX Gimbal hier angesehen. Der Knuppelweg ist so da ~50°. also ca. 20µs pro Grad Knüppelweg. Aber wer fliegt schon mit Knüppelbewegungen in 1° steps? Also ich nicht. :)

Gruß KH

PS. Mal ein Bild deines Messaufbaus und deines sketches mag du hier nicht einstellen?
 
FPV1

Banggood

Oben Unten