Analog Servo - Genauigkeit

Hallo!

Welche Genauigkeiten sind mit nem analog Servo und der arduino servo lib möglich?

Ich benötige für ein Projekt Genauigkeiten von einem Grad.

Die Position des servo soll über ein keypad angesteuert werden.

Beispiel : Ich gebe 70 ein und der servo nimmt eine Position von 70° plus minus eins ein.

Ist es möglich, solche Genauigkeiten erreichen? Wenn ja, wovon hängt es ab?

Ich habe es schon mit einem 5€ servo probiert. Bei 0° zeigt der servo Hebel nach unten. Bei 180 ° nach oben.

Das Problem ist, bei 90° ist der Hebel nicht wirklich horizontal wie es sein soll... Der servohebel nimmt die horizontale Position schon bei ca 82° ein. Woran liegt das? Der servo ist nicht belastet gewesen.

Bitte um hilfreiche Antworten!

Gruß ser_u

Hallo,

ich vermute, Du mußt die üblichen 1ms /2ms (Endanschläge) fein tunen für Dein Servo. Eine leichte Streuung ist immer vorhanden. Dann sollte auch der Bereich dazwischen stimmen.

Wiederholgenauigkeiten von einem Grad haben fast alle Servos.
Was aber einfach nonsens ist, ist die Dinger mit Gradangaben zu füttern. Ich weiss: die Lib. bietet die Möglichkait aber es ist volkommen einleuchtend, dass es dabei Ungenauigkeiten gibt- Servos können mit Gradangaben nämlich nix anfangen.
Wird also alles umgerechnet- mehr oder weniger genau eben.

Auch ist es nicht so, dass zwei Servos bei gleichem Signal exakt das selbe tun- war nie so und wird nie so sein, schon von daher sind Gradangaben Unfug. Wenn man die benutzen will, hilft nur selber programmieren (und eben an genau das Servo anpassen).
Es gibt (ohne Umbau) nämlich keinerlei Möglichkeit, zu ermitteln, wo das Servo wirklich steht!

Zudem sprichst du ja selber von nem 5€-Servo. Geht noch billiger-aber mieser kaum noch, erwarte von so nem Ding bitte keine Wunder...
Manchmal klemmen sie auch, wenn man die Schraube vom Servohorn zu fest eindreht, dann erreicht es nie so richtig seine Sollstellung, man hörts dann meinst etwas brummen.

Verstehe, also sollte ich besser mit PWM arbeiten und per Hand nachkalibrieren? Wäre das Verhältnis denn linear oder brauch ich für jeden Winkel ein eigenes Signal? Wäre eine Menge Arbeit für 180 winkel das Signal zu bestimmen..

Es wird nicht funktionieren.

Analoge Servos (zumindest alle, die ich bisher getestet habe) haben einen extrem großen Temperaturgang.
Das heißt, du passt deine Kennlinien genau dem Servo an.
Dann wird das Servo etwas wärmer oder kälter, und schon hast du 10° Ungenauigkeit.

Ob das die digitalen besse können, weiß ich nicht.

ser_u:
Verstehe, also sollte ich besser mit PWM arbeiten und per Hand nachkalibrieren? Wäre das Verhältnis denn linear oder brauch ich für jeden Winkel ein eigenes Signal? Wäre eine Menge Arbeit für 180 winkel das Signal zu bestimmen..

Da Arduino mit einem 8 Bit PWm arbeitet und das PPM-Signal für die Servos ein Verhältnis von 1 zu 19 bis 2 zu 18 hat bleiben nur wenige PWM Werte (ca 25) zum Ansteuern übrig. Also kann es nicht genau sein.
Dir bleibt nur ein Schrittmotor oder eine Positionsmessung mittels Widerstand oder Encoder.

Grüße Uwe

Wenns denn so genau sein muss (frag mich grade, wofür...), dann kann man notfalls das Servopoti noch anzapfen. Somit kann man messen wo es wirklich steht und nachregeln.

Es soll eine Positioniervorrichtung für Messanalysen konstruiert werden.

Sind servos echt so ungenau? Ich hab leider kaum Erfahrungswerte, was das betrifft.

Ich denke mal ich werde dann lieber mit Schrittmotoren arbeiten.

200 Schritte sollten eigentlich auch reichen.

Bei Schrittmotoren habe ich doch aber den Nachteil, dass ich nicht weiß in welcher Position der sich befindet und ich ihm keine
Position, die er einnehmen soll, mitgeben kann.

Jedenfalls nicht ohne weitere Hardware. Was wäre denn eine günstige Möglichkeit?

Für den Arm brauche ich Neigungswinkel von - 90 bis +90 Grad. Hab da an einem statische Beschleunigungsensor gedacht.

Wie im smartphone..

Gruß

Montiere ein Potentiometer auf die Schrittmotorachse oder einen Endschalter in - 90 bis +90 Grad Stellung. Den rest amchst Du mit den Schritten.

Es gibt auch 400 Schritt- Schrittmotoren und Microstep-Ansteuerung. Es gibt auch Schrittmotore mit Getriebe. Alles erhöht die Auflösung der Schritte

Grüße Uwe

Servos sind nicht ungenau, das ist Quark.
Sowas wird im RC-Modellbau verwendet, und das auch in mehrere tausend Euro teuren, mehrere hundert km/h schnellen Modellen.
Nur: da baut man nicht gerade 5€-Dinger ein.... 8)
Schon für nen 20er bekommst du Servos, die in einer ganz anderen Liga spielen.

Die billigen schaffens aber (im allgemeinen) auch gradgenau, du hast nicht verstanden, wo das Problem liegt: nämlich in der Servo-Bibliothek.
Die gibt sowas einfach nicht her- sie ist eine Möglichkeit, aber keineswegs ne wirklich gute. Hier liegt der Schwerpunkt einfach darauf, dass sie leicht zu benutzen ist-weiter nix.
Gradangaben sind ohnehin so ne Sache, schau dir einfach mal so ein Servo von innen an (ich bin sicher, da weiss Google was zu...) und du wirst schnell verstehen, warum.

Hallo!
Komm auf die zu bewegenden/haltenden Massen an.
Servos sind leicht ,schnell und beim "Halten" echte Stromfresser , haben aber durch das interne poti eine eigene "Referez".
Je nachdem, wie das Poti eingeklebt wurde, stimmt die verzahnung vom Servohorn nicht, aus 0 wird 5....oder mehr....je nachdem,
wiewenig man dafür bezahlt hat. Kann man jedoch "Trimmen"....
Stepper sind "Blind" müssen über externe Endschalter referenziert werden und "verschlucken" beim beschleunigen unter
Last schon mal einen Step.
Poti an der Stepperachse verbietet aber die Verwendung von Getrieben (ohne sind die Haltekräfte dürftig ).
Bei einem Schwenkbereich von 180 Grad könnte man am Lever ein gegenläufiges Stereopoti verwenden..ist aber eine Frage der Zyklen, bis es zu ersten Aussetzern kommen kann.
Wenn es wirklich so genau sein muss, kommst um einen Referenztaster + Encoder nicht herum.
Gibt auch Drehgeber mit internen Referenztrack...die sind halt preislich dann schon sehr abgehoben.

mfg Martin

Rabenauge:
Servos sind nicht ungenau, das ist Quark.
Sowas wird im RC-Modellbau verwendet, und das auch in mehrere tausend Euro teuren, mehrere hundert km/h schnellen Modellen.
Nur: da baut man nicht gerade 5€-Dinger ein.... 8)
Schon für nen 20er bekommst du Servos, die in einer ganz anderen Liga spielen.

Sorry, aber das stimmt so nicht.
Servos haben im kurzfristbereich eine hohe Widerholgenauigkeit, das stimmt.
Aber langfristig und über Temperatur driften sie wie blöde. Und das machen meines Wissens alle analogen Servos!
Ist es dir noch nie passiert, dass man in Keller alle Ruderklappen ausrichtet, und dann am Flugplatz, wenn das Modell in der Sonne steht, plötzlich eine total andere Trimmung braucht?
Das ist auch auf Längenausdehnung im Modell zurückzuführen. Aber auch auf die Servos!

Mach doch mal einen Test: Schraub ein Servo in eine Platte, mach einen langen Servoarm dran.
Dann steuerst du das Servo mit delaymicroseconds() mit fester Pulsbreite an. Markiere die Position.
Kühle das Servo (Kühlschrank). Ansteuern, Position markieren.
Wärme das Servo (Sonne, Heizung). Ansteuern, Position markieren.

Du wirst sehen, dein Servo hat eine extreme Temperaturdrift.

Dies könnte bei echten digitalen Servos besser sein, weil die das Poti als Verhältnis auswerten könnten, nicht nur den Teilwiderstand.
aber ich hatte noch keins.

Ist es dir noch nie passiert, dass man in Keller alle Ruderklappen ausrichtet, und dann am Flugplatz, wenn das Modell in der Sonne steht, plötzlich eine total andere Trimmung braucht?

Nö-ehrlich gesagt nicht.
Ich hab auch Flugmodelle, bei denen sowas fatal wäre: bei meinem BAT (kennst du vielleicht auch..gabs in den 90ern bei Graupner) macht 1mm Querruderausschlag den Unterschied zwischen Rolle und Geradeausflug.
Da vermute ich das Übel eher im Sender...meiner trimmt allerdings schon digital, da gibts sowas nicht.
Der BAT ist übrigens mit Carbonoptik-Folie bebügelt, nach ner Stunde in de rSonne kann man den kaum anfassen, also wenn der sich nicht aufheizt, tuts nix..
Sind übrigens keine digitalen Servos drin (bin nicht sicher im Moment, aber ausm Hause Hitec was), so die 30€-Preisklasse.
Der Bursche braucht was ordentliches, sonst ist er unfliegbar.

Ok-bei den Schaumwaffeln achte ich da soo genau nicht drauf, aber meine ASK (ist ne Schaumwaffel) ist auch immer sofort einsatzbereit-ohne Nachtrimmen zu müssen.
Ich kenn auch keinen Modellflieger, bei dem das anders wäre (ausgenommen Schlampen oder wirkliche Billigflieger).

Wenn dem so wäre, müsste ich ja meine Segler sogar im Flug nachtrimmen-die verbringen des öfteren nämlich längere Zeiten am Stück in der Luft (das können auch mal zwei Stunden sein) - war noch nie nötig.

Hallo,

Wasjetzt:
Stepper ... "verschlucken" beim beschleunigen unter Last schon mal einen Step.

das kann ich leider so nicht stehen lassen, weil ich täglich damit zu tun habe an unseren Anlagen. Wenn sie Schritte verlieren, dann muß das eine Ursache haben. Entweder ist die Last zu groß bzw. der Schrittmotortyp/Netzteil/Ansteuerung dafür zu schwach oder die Beschleunigung ist zu hoch eingestellt oder die Endgeschwindigkeit zu hoch für den Typ von Schrittmotor. Oder das drum herum, also das was der Schrittmotor bewegen soll hat mechanisch ein Problem. Klemmt, dreht schwer oder sowas. Im Normalfall verliert ein Schrittmotor keinen einziges Step. Die meisten haben bei uns Encoder dran. Fehlergrenze ist auf 1 Step eingestellt.
Das drumherum bei uns sind Linearlager, Kugelumlaufspindeln oder einfachere Spindeln mit Bronzenuß. Kugelumlaufspindeln sind eigentlich unkaputtbar und immer leichtläufig. Einmal war eine Kugel innen gebrochen, warum auch immer, sonst habe ich in 20 Jahren davon noch keine gewechselt. Linearlager sind bei uns senkrecht montiert, werden einseitig belastet und Wärmeabstrahlung ausgesetzt. Wenn das Fett dann kein Fett mehr ist klemmen die auch gern. Dann nützen dessen Umlaufkugeln auch nichts mehr. Halten ansonsten aber schon 3 Jahre und etwas mehr. Die einfachen Spindeln mit Bronzenuß werden fast jährlich gewechselt.

Was ich eigentlich sagen wollte, die Dimensionierung für die Anforderung muß stimmen. Dann machen die Schrittmotoren genau das was sie sollen.

Doc_Arduino:
...
Was ich eigentlich sagen wollte, die Dimensionierung für die Anforderung muß stimmen. Dann machen die Schrittmotoren genau das was sie sollen.

Was auch für die Servos stimmt.
Grüße Uwe

Hallo!

Die meisten haben bei uns Encoder dran. Fehlergrenze ist auf 1 Step eingestellt.

Aha.
Waren halt meine ersten Erfahrungen mit meinem 3-Achser unter EMC..Beim Stroken mit G0 weisst dann , so nicht.
Wollte nur hinweisen, was passieren könnte. Zudem ja keiner weiss, was bewegt werden soll.
Bei einer Anzeigenadel wirds eh keine Probleme geben..

mfg Martin

Hier entsteht ja ne interessante Diskussion! Dass die Dimensionierung stimmen muss, ist selbstverständlich.

Es müssen maximal 5kg bewegt werden, darunter ein Schrittmotor, ein mit der Achse des Schrittmotors verbundener zylindrischer Prüfkörper (Fräswerkzeug) und natürlich die Befestigungselemente.

Der Hebelarm wird relativ kurz, der Schwerpunkt soll in etwa auf der Achse des Servos liegen.

Die Bewegung soll wie gesagt von - 90 bis +90 ° erfolgen, Genauigkeit sollte bei 1 plus minus 2 Grad liegen.

Der Schrittmotor dreht dann das Probeelement um die eigene Achse ( so gut wie keine Last für den Stepper).

Das Gerät steht nicht in der Sonne, höchstens wenn sie ins Zimmer scheint. Strombedarf ist kein Problem, da Netzteil.

Ich bin trotz meiner geringen Erfahrung eigentlich der Überzeugung, dass ein gut gewählter, richtig programmierter und kalibrierter Servo das locker schaffen sollte. Wozu sind servos denn gut, wenn nicht genau für solche Aufgaben (ausgenommen modellbau).

Ich würde übrigens höchstens 50€ ausgeben, dann muss das teil aber wirklich top sein. 30 wären ideal. Bei den Preis käme auch ein digital Servo in Frage, wenn arduino überhaupt dafür geeignet ist.

Ich hab mir auch schon gedacht, dass die servo Bibliothek Mitverursacher meines weiter oben beschriebenen Problems ist.

Ist es überhaupt nicht möglich, diesen 5€ Conrad servo, der nicht einmal belastet wird, so zu programmieren, dass er Winkel in o.g Genauigkeitsbereich anfahren kann? Und zwar ohne library.

Wie wäre es denn übrigens mit den digitalen servos, hat jemand Erfahrung damit? Man findet kaum was dazu in Verbindung mit arduino.. Der einzige Nachteil des Stromverbrauchs spielt ja für meine Zwecke keine Rolle. Kommt arduino mir digital servos klar?

Mach doch mal einen Test: Schraub ein Servo in eine Platte, mach einen langen Servoarm dran.
Dann steuerst du das Servo mit delaymicroseconds() mit fester Pulsbreite an. Markiere die Position.
Kühle das Servo (Kühlschrank). Ansteuern, Position markieren.
Wärme das Servo (Sonne, Heizung). Ansteuern, Position markieren.

Werde ich machen, klingt interessant. Hab aber leider nur die billig servos. (Modelcraft RS2 heißen die glaub ich, von Conrad halt)

ser_u:
Es müssen maximal 5kg bewegt werden, darunter ein Schrittmotor, ein mit der Achse des Schrittmotors verbundener zylindrischer Prüfkörper (Fräswerkzeug) und natürlich die Befestigungselemente.
...
Ich würde übrigens höchstens 50€ ausgeben, dann muss das teil aber wirklich top sein. 30 wären ideal. Bei den Preis käme auch ein digital Servo in Frage, wenn arduino überhaupt dafür geeignet ist.
...

5 Kg Gewicht auf der Achse das schaffen die wenigsten Servos (abgesehen vom notwendigen Drehmoment das wir aus Mangel des Hebelarms nicht bestimmen können.
Entweder kaufst Du ein sündhaft teures Servo das das Gewicht aushält oder Du mußt Dir die Mechanik selber bauen.

Grüeß Uwe

Hallo!
5 kg /cm schaffen auch die "Einsteigerservos"
Habe einige digitale im Einsatz...halten die Position viel besser als Analoge, sind halt lauter unter Last ( 400 Hz )...
und musste noch keines Nachtrimmen..
Von der Ansteuerung her kein Unterschied zu den Analogen.
Das Servo soll den Kurzkegel drehen ? Wennst nur +- 90 Grad (Zweischneider) brauchst, dann mit mechanischen Endlagen und in die Anlenkung ein wenig Elastizität reinbringen ..
Bei einer Stepperlösung mit Encoder und Treiber wirds auch mit den 50 Euros eng.

mfg Martin