Forum: Mikrocontroller und Digitale Elektronik Wie Servos synchronisieren?


von Philipp G. (geiserp01)


Lesenswert?

Hallo zusammen

In meiner Anwendung habe ich zwei Servos, welche stirnseitig gegenüber 
stehen. Es zeigt als die Nabe (Servohornaufnahme) von einen Servo auf 
die Nabe von zweiten Servo.

Auf den Servohornaufnahmen ist ein gefräster Block aus Aluminium. Die 
Servos drehen den Block um 90° hin- und her.

Gesteuert wird das Ganze von einem ATMEGA 2560.

Problemstellung:

In meiner Anwendung kann ich konstruktionsbedingt nicht sicherstellen, 
dass beide Servos immer plan aufliegen werden. Ein Servo wird immer ein 
paar Zentel Grad 'verdreht' sein. Somit kommt es immer in einer 
Endstellung zum typischen Servoknurren. Dabei zeigt sich ein Ruhestrom 
(oder eben nicht Ruhe) von fast 500mA - was zuviel ist. Die Servos sind 
auf Gummi gelagert, hilft aber nicht wirklich weiter.

Lösungsansatz:

Meine Idee wäre, eine Sekunde nachdem die Endposition erreicht ist, die 
Stromaufnahme von einem Servo zu messen. In einem Loop dann 
inkrementierend in Microsteps in eine Richtung drehen, und dabei 
feststellen, ob der Strom grösser oder kleiner wird. Fällt er unter den 
definierten Schwellwert, Stop, wird er grösser, Richtung ändern.

Denkt ihr, ich bekomme das mit einem ACS712 hin, den Strom zu messen? 
Oder hat jemand grad eine bessere Idee, das Problem in den Griff zu 
bekommen?

Gruss, Philipp

von Rainer U. (r-u)


Lesenswert?

Philipp G. schrieb:
> Auf den Servohornaufnahmen ist ein gefräster Block aus Aluminium. Die
> Servos drehen den Block um 90° hin- und her.

Warum 2?

von Philipp G. (geiserp01)


Lesenswert?

Rainer U. schrieb:
> Warum 2?

Konstruktionsbedingt kommen nur Servos in der Standard '40mm' Grösse in 
der Frage, alles andere - ist zu gross.

Warum zwei? Weil ich Drehmoment brauche. Es sind Savöx Full Metal Servos 
mit 350nCm Kraft.

Also die beiden Zwerge heben fast 70kg Gewicht auf eine Länge von 10mm.

von Ritschard (Gast)


Lesenswert?

Mit Schaltern in der Endposition den Strom abschalten. Zum 
Wiedereinschalten die Schalter überbrücken.

von Philipp G. (geiserp01)


Lesenswert?

Ritschard schrieb:
> Mit Schaltern in der Endposition den Strom abschalten. Zum
> Wiedereinschalten die Schalter überbrücken.

Nu ja, das kann ich natürlich auch mit dem AVR. So ist es im Moment 
auch, nur dann habe ich keine Halteposition, sondern Spiel.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Wie erfolgt in den Servos die Erfassung der Ist-Position? Wenns ein poti 
ist, könnte man versuchen ein poti zu deaktivieren, und den Schleifer 
vom zweiten poti zu verwenden.

von Falk B. (falk)


Lesenswert?

@Philipp Geiser (geiserp01)

>Warum zwei? Weil ich Drehmoment brauche. Es sind Savöx Full Metal Servos
>mit 350nCm Kraft.

Was ist nCm für eine Einheit?

>Also die beiden Zwerge heben fast 70kg Gewicht auf eine Länge von 10mm.

Das macht 70kg * 9,81 m/s^2 * 0,1m / 2 = 343 Nm

von Christian B. (luckyfu)


Lesenswert?

Falk B. schrieb:
> 0,1m

10mm != 0,1m :)
somit sollte das Ergebnis 34,3Nm sein, was aber ebenfalls != 350Ncm ist

von Falk B. (falk)


Lesenswert?

@Philipp Geiser (geiserp01)

>Meine Idee wäre, eine Sekunde nachdem die Endposition erreicht ist, die
>Stromaufnahme von einem Servo zu messen.

Beiden.

> In einem Loop dann
>inkrementierend in Microsteps in eine Richtung drehen, und dabei
>feststellen, ob der Strom grösser oder kleiner wird. Fällt er unter den
>definierten Schwellwert, Stop, wird er grösser, Richtung ändern.

Vom Prinzip her richtig. Man muss die Servoströme mittels überlagertem 
Regler ausgleichen.

>Denkt ihr, ich bekomme das mit einem ACS712 hin, den Strom zu messen?

Ja, aber warum so ein High Tec Teil? Man kann die Stervoströme auch mit 
einem billigen Shunt + OPV messen. Im einfachsten Fall nimmt man 2 
Shunts mit vielleicht 100mV Vollausschlag und dahinter einen OPV, der 
das x50 auf 5V verstärkt. Das Ganze 2x und mittels ADC gemessen.

von Loth (Gast)


Lesenswert?

Ein Servo als Master. Der regelt die Position.
Beim 2. Servo nur den Motor verwenden und den parallel zum Motor des 1. 
Servos schalten.
Vermutlich wird der Servotreiber das schaffen.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Christian B. schrieb:
> 10mm != 0,1m :)
> somit sollte das Ergebnis 34,3Nm sein, was aber ebenfalls != 350Ncm ist

10mm = 1 cm, also passen die 343 Ncm schon

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Loth schrieb:
> Beim 2. Servo nur den Motor verwenden und den parallel zum Motor des 1.
> Servos schalten.
> Vermutlich wird der Servotreiber das schaffen.

nein, eher nicht. das dürfte ein BLCD-Servo sein, da kannst du nicht 
einfach den zweiten Motor parallel schalten (Kommutierungs-erkennung)

von wendelsberg (Gast)


Lesenswert?

Loth schrieb:
> Ein Servo als Master. Der regelt die Position.
> Beim 2. Servo nur den Motor verwenden und den parallel zum Motor des 1.
> Servos schalten.
> Vermutlich wird der Servotreiber das schaffen.

Das waere auch meine erste Idee gewesen.
Die zweite ist, die Servoelektronik gleich ganz rauszuwerfen und nur 
noch eines der Potis in den uC einzulesen und beide Motoren durch den uC 
zu steuern.
Wobei mir da die Frage erscheint, ob die sich nicht auch dabei 
gegenseitig verspannen?

wendelsberg

von Servo (Gast)


Lesenswert?

Loth schrieb:
> Ein Servo als Master. Der regelt die Position.
> Beim 2. Servo nur den Motor verwenden und den parallel zum Motor des 1.
> Servos schalten.
> Vermutlich wird der Servotreiber das schaffen.

Das geht so nicht. Wenn, dann muss die 2. Position auch geregelt werden. 
Was wäre, wenn der zweite Motor, zB. durch eine längere 
Versorgungsleitung etwas langsamer dreht? Das wird sich alles 
verspannen.

Wenn schon, dann muss das Signal des "Master-Potis" an die Steuerung des 
zweiten Servos. Dann sollten -bei baugleichen Servos- dieselben 
Positionen angefahren werden. Die Potis sind als "einstellbarer" 
Spannungsteiler geschaltet. Somit wäre es simpel den Mittelkontakt an 
die Steuerung des zweiten Servos zu legen. Gleiches GND vorausgesetzt.


Viele Grüße

von Stefan K (Gast)


Lesenswert?

Ohne den genauen mechanischen Aufbau und die Anforderungen zu kennen 
würde ich eine Lösung vorschlagen, wie sie sich im Modellbau bewährt 
hat:

das eine Servo bewegt eine Ende eines Hebelarms,
das andere Servo das andere Ende dieses Hebelarms.
In der Mitte des Hebels wird die Last angekoppelt.

Das lässt sich sinngemäß auch für Drehbewegungen bauen.

von Philipp G. (geiserp01)


Lesenswert?

Falk B. schrieb:
> Das macht 70kg * 9,81 m/s^2 * 0,1m / 2 = 343 Nm

Hm, Ncm:

350 Ncm sind 3.5Nm, und entspricht 35,69kg (kgf.cm) auf eine Länge von 
10mm, grob 70kg.

> Beiden.

Warum?

> Vom Prinzip her richtig. Man muss die Servoströme mittels überlagertem
> Regler ausgleichen.

Kannst Du mir das genauer ausführen?

Michael R. schrieb:
> nein, eher nicht. das dürfte ein BLCD-Servo sein, da kannst du nicht
> einfach den zweiten Motor parallel schalten (Kommutierungs-erkennung)

Das ist korrekt, es sind brushless Motoren, oder halt drei Phasen 
Assynchron Motoren ;)

wendelsberg schrieb:
> Das waere auch meine erste Idee gewesen.
> Die zweite ist, die Servoelektronik gleich ganz rauszuwerfen und nur
> noch eines der Potis in den uC einzulesen und beide Motoren durch den uC
> zu steuern.
> Wobei mir da die Frage erscheint, ob die sich nicht auch dabei
> gegenseitig verspannen?

Habe ich mir auch schon überlegt..

Servo schrieb:
> Das geht so nicht. Wenn, dann muss die 2. Position auch geregelt werden.
> Was wäre, wenn der zweite Motor, zB. durch eine längere
> Versorgungsleitung etwas langsamer dreht? Das wird sich alles
> verspannen.

Ich verwende eine 'servo ease' library, welche die Servos schon sehr 
langsam drehen lässt (ca. 2 Sekunden von Pos - Pos [daher ist auch die 
Kraft nötig])

von Falk B. (falk)


Lesenswert?

@ Philipp Geiser (geiserp01)

>> Das macht 70kg * 9,81 m/s^2 * 0,1m / 2 = 343 Nm

>Hm, Ncm:

>350 Ncm sind 3.5Nm, und entspricht 35,69kg (kgf.cm) auf eine Länge von
>10mm, grob 70kg.

jaja, da ist der Faktor 10 Zuviel 8-0


>> Beiden.

>Warum?

Weil die die Last gleichmäßig auf beide verteilen willst. Du willst ja 
nicht den Strom eines Servos auf Null regeln, während der andere, der 
nicht gemessen wird, wie blöde ackern muss. Und du weißt u.a. nicht 
vorher, welcher durch die mechanische Unsymmetrie der höher belastete 
ist.

>> Vom Prinzip her richtig. Man muss die Servoströme mittels überlagertem
>> Regler ausgleichen.

>Kannst Du mir das genauer ausführen?

Hab ich das nicht schon? Du braucht einen Regelkreis, der die beiden 
Servoströme angleicht, die Differenz auf 0 regelt. Wenn einer mehr als 
der andere zieht, wird dessen Sollwert reduziert und anders herum.

>Ich verwende eine 'servo ease' library, welche die Servos schon sehr
>langsam drehen lässt (ca. 2 Sekunden von Pos - Pos [daher ist auch die
>Kraft nötig])

Bestenfalls kann man noch über die Idee des gemeinsamen Potis 
nachdenken, wenn du das machen willst. Dazu mußt du aber die Servos 
aufschrauben und dranrumfummeln. Das ist nicht jedermans Sache.

Die Reglung der Servoströme ist mal eine schöne Nebenaufgabe.

von wendelsberg (Gast)


Lesenswert?

Philipp G. schrieb:
> Das ist korrekt, es sind brushless Motoren, oder halt drei Phasen
> Assynchron Motoren ;)

OK also Servoelektronik beibehalten. :-(
Beide Servos mit einem Poti anzusteuern, wenn die nicht exakt baugleich 
sind, hat man dasselbe Problem.
HMMMMMMMMMMM, um das 2. Servo nach Stillstand auf minimalen 
Stromverbrauch zu stellen braucht man aber ein Signal, das die Richtung 
beinhaltet, nur der Stromverbrauch des Servos reicht nicht.

Vertrackte Situation, im Moment fehlt mir eine Idee.

wendelsberg

von wendelsberg (Gast)


Lesenswert?

Falk B. schrieb:
> Du braucht einen Regelkreis, der die beiden
> Servoströme angleicht, die Differenz auf 0 regelt. Wenn einer mehr als
> der andere zieht, wird dessen Sollwert reduziert und anders herum.

Nein klappt nicht, das kann auch zur Erhoehung des Stroms fuehren, wenn 
die Richtung falsch ist.

wendelsberg

von guest...Rainer (Gast)


Lesenswert?

Hallo Philipp, ich kann mir den Aufbau nicht wirklich vorstellen...würde 
aber grundsätzlich versuchen, das mit nur einem Servo zu lösen. 
Vielleicht kannst du ja mal ein Bild hochladen.
Danke und Gruß, Rainer

von Falk B. (falk)


Lesenswert?

@wendelsberg (Gast)

>Beide Servos mit einem Poti anzusteuern, wenn die nicht exakt baugleich
>sind, hat man dasselbe Problem.

Nein, hat es nicht, denn die regeln BEIDE solange, bis Soll==Ist ist. 
Der IST-Wert ist gleich, der Sollwert auch, wenn sie digital und gleich 
kalibiert sind. Bei analogen kommt auch beim Sollwert wieder ein Fehler 
rein, der das Grundprinzip aushebelt.

>Stromverbrauch zu stellen braucht man aber ein Signal, das die Richtung
>beinhaltet, nur der Stromverbrauch des Servos reicht nicht.

Man muss beide messen.

von Falk B. (falk)


Lesenswert?

@ wendelsberg (Gast)

>> Du braucht einen Regelkreis, der die beiden
>> Servoströme angleicht, die Differenz auf 0 regelt. Wenn einer mehr als
>> der andere zieht, wird dessen Sollwert reduziert und anders herum.

>Nein klappt nicht, das kann auch zur Erhoehung des Stroms fuehren, wenn
>die Richtung falsch ist.

Glaub ich so spontan nicht.

von wendelsberg (Gast)


Lesenswert?

Falk B. schrieb:
>>Nein klappt nicht, das kann auch zur Erhoehung des Stroms fuehren, wenn
>>die Richtung falsch ist.
>
> Glaub ich so spontan nicht.

???

Mal angenommen Servo2 ist zu weit und zieht zuviel Strom - Sollwert 
etwas verringern - OK.

Mal angenommen Servo2 ist nicht weit genung und zieht zuviel Strom - 
Sollwert etwas verringern - Strom steigt weiter.

wendelsberg

von sumo (Gast)


Lesenswert?

wendelsberg schrieb:
> Mal angenommen Servo2 ist nicht weit genung und zieht zuviel Strom -
> Sollwert etwas verringern - Strom steigt weiter.

Es muss eben der Sollwert in die Richtung verändert werden, wo der Strom 
sinkt.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

sumo schrieb:
> wendelsberg schrieb:
>> Mal angenommen Servo2 ist nicht weit genung und zieht zuviel Strom -
>> Sollwert etwas verringern - Strom steigt weiter.
>
> Es muss eben der Sollwert in die Richtung verändert werden, wo der Strom
> sinkt.

was aber nicht ganz trivial ist.

von wendelsberg (Gast)


Lesenswert?

sumo schrieb:
> Es muss eben der Sollwert in die Richtung verändert werden, wo der Strom
> sinkt.

Stimmt. Aber ohne die fehlende Richtungsinformation bleibt da nur 
"ausprobieren" - eines Technikers unwuerdig.

wendelsberg

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

wendelsberg schrieb:
> Stimmt. Aber ohne die fehlende Richtungsinformation bleibt da nur
> "ausprobieren" - eines Technikers unwuerdig.

nicht nur unwürdig - je nach (dynamischer) Belastungssituation kann das 
fast unmöglich sein.

Deswegen gefällt mir die Lösung von Stefan eigentlich am Besten:

Stefan K schrieb:
> Ohne den genauen mechanischen Aufbau und die Anforderungen zu kennen
> würde ich eine Lösung vorschlagen, wie sie sich im Modellbau bewährt
> hat:
>
> das eine Servo bewegt eine Ende eines Hebelarms,
> das andere Servo das andere Ende dieses Hebelarms.
> In der Mitte des Hebels wird die Last angekoppelt.
>
> Das lässt sich sinngemäß auch für Drehbewegungen bauen.

von Falk B. (falk)


Lesenswert?

@ Michael Reinelt (fisa)

>nicht nur unwürdig - je nach (dynamischer) Belastungssituation kann das
>fast unmöglich sein.

Wer sagt denn, daß das alles hochdynamisch ist? Malt doch mal nicht 
immer gleich den Teufel an die Wand!

>Deswegen gefällt mir die Lösung von Stefan eigentlich am Besten:

>> Das lässt sich sinngemäß auch für Drehbewegungen bauen.

Nennt sich Differentialgetriebe, ist aber deutlich aufwändiger als eine 
einfache Kupplung.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Falk B. schrieb:
> Nennt sich Differentialgetriebe, ist aber deutlich aufwändiger als eine
> einfache Kupplung.

Muss es nicht - die Servohörner um 180° versetzt montieren, und die 
Spitze des Horns (aber nur die Spitze - nicht das Zentrum) ebenfalls in 
zwei entsprechend versetzte Bohrungen des Alu-Blocks befestigen.

von Falk B. (falk)


Lesenswert?

@Michael Reinelt (fisa)

>> Nennt sich Differentialgetriebe, ist aber deutlich aufwändiger als eine
>> einfache Kupplung.

>Muss es nicht - die Servohörner um 180° versetzt montieren, und die
>Spitze des Horns (aber nur die Spitze - nicht das Zentrum) ebenfalls in
>zwei entsprechend versetzte Bohrungen des Alu-Blocks befestigen.

[ ] Du hast Ahnung von Mechanik.

von Der Andere (Gast)


Lesenswert?

Auch wenns der TO nicht hören will:

Sinnvoll wäre einen doppelt so starken Servo zu benutzen.

Oder sich die ganze Mechanik des TOs mal anschauen. Das klingt mal 
wieder stark nach einer suboptimalen Lösung die man jetzt auf Biegen und 
Brechen irgenwie hinfriemeln will.

von Falk B. (falk)


Lesenswert?

@Der Andere (Gast)

>Sinnvoll wäre einen doppelt so starken Servo zu benutzen.

Wenn der aber nicht verfügbar ist, hat man ein Problem.

Natürlich ist die Symmetrierung von Antrieben ebenso wie von 
elektrischen Schaltern wie MOSFETs, Relais etc. immer ein Problem. Es 
kostet Aufwand. Und meistens ist die Gesamtbelastbarkeit KLEINER als die 
Summe der Einzelelemente.

>Oder sich die ganze Mechanik des TOs mal anschauen. Das klingt mal
>wieder stark nach einer suboptimalen Lösung die man jetzt auf Biegen und
>Brechen irgenwie hinfriemeln will.

Kann sein, muß nicht. Im einfachsten Fall braucht man die doppelte 
Hebelübersetzung. Dann ist es zwar nur noch halb so schnell, dafür 
reicht aber ein Servo. Ob das im Gesamptpaket akzeptabel ist, muss 
geklärt werden.

von Der Andere (Gast)


Lesenswert?

Falk B. schrieb:
> Kann sein, muß nicht.

Logisch ist das Spekulation, aber für mich klingt das wieder nach: Die 
vermeintliche Lösung beschrieben statt dem eigentlichen Problem.

Ansonsten braucht man einen Regelkreis mit einer Istwerterfassung und 
Sollwertberechnung und muss dann beim 2. Servo dort steuern, wo eine 
Drehzahl oder ein Drehmoment vorgegeben wird.
Bei DC Motoren und PWM wäre das einfach.

von Sebastian S. (amateur)


Lesenswert?

Prinzipiell würde ich sagen: "Das ist nicht möglich".

Üblicherweise ist ein Servo eine Black Box. "In" die Box schickst Du 
einen Positionswert, Drehwinkel oder Ähnliches.
Ob eine Digital übertragene Zahl oder ein Analogwert oder die Breite des 
Pulses, ist dabei egal.

Die Black Box "betrachtet" dann ihre interne Positionsreferenz - fast 
immer ein Potentiometer - und richtet sich danach aus.
Hier ist dann auch der Hund begraben.
Die Positionsreferenzen sind, vor allem bei "günstigen" Systemen, mit 
richtig großen, absoluten Abweichungen versehen. Bei Potentiometern: Der 
Absolutwert, der Linearitätsfehler und ein, durch den Einbau bedingter, 
absoluter Versatz.

Ein weiterer Pferdefuß liegt in der Referenzermittlung.
Auch ein 100%-tig, genauer PWM-Wert will interpretiert werden.
Eine Position als Zahl, will meist als Analogwert zum Vergleich 
herangezogen werden.
Und, und, und.
Das heißt, schon in der Erkennung der Sollposition sind ein paar Fehler 
möglich.

Dann sind noch mechanische Toleranzen, in Lagern und Getrieben möglich.

Fazit:
Das einzige, was ich als sinnvoll erachte ist eine möglichst genaue 
Soll- Ist-Positionsmessung. Hierbei wird dann letztendlich eine Formel 
oder eine Tabelle mit Korrekturfaktoren angelegt.
Servo_1 fährt dann z.B. auf 30° während Servo_2 auf 29.9° Fährt.

Ganz genau wird das Ganze dann doch wieder nicht, weil immer noch kleine 
Differenzen bleiben und, an dieser Stelle, die nicht genau definierte 
interne Regelung ins Spiel kommt.
Worst case: Kleine Differenz = Große Stromaufnahme.

Den Weg über die "Reststromaufnahme" halte ich für Problematisch.
Dadurch, dass fast immer eine H-Brücke im System ist, kann man zwar 
einen "Korrekturfaktor", aus der Stromaufnahme ermitteln, aber ohne eine 
Ahnung, von der Richtung, sieht es dunkel aus.

: Bearbeitet durch User
von Jobst Q. (joquis)


Lesenswert?

Vielleicht einen Schrittmotor mit etwas Getriebe?

von Felix F. (wiesel8)


Lesenswert?

Ich würde das auch über Stromregelung machen.

Für Servos eine bestimmte Winkelgeschwindigkeit vorgeben und Servo 2 so 
regeln, dass Strom immer möglichst gleich ist. Wenn Strom von Servo 1 
trotz Korrektur ansteigt, ist wohl die Drehrichtung falsch.

mfg

von Sebastian S. (amateur)


Lesenswert?

Ich vergaß!

Viele der hier vorgeschlagenen Lösungen "klingen" recht gut!

... aber sie bedingen einen, z. T. weitreichenden, Eingriff in die 
vorhandenen Servos.

Etwas was ich - vor allem wegen fehlender Unterlagen, und Gewährleistung 
- ausgeschlossen habe.

Wie z.B. Felix F.
>Ich würde das auch über Stromregelung machen.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Falk B. schrieb:
> [ ] Du hast Ahnung von Mechanik.

Sicher nicht so viel wie du ;-)

im Modellbau verwendet man nunmal oft solche "mechanischen" Lösungen, 
auch für ähnliche Probleme: An den Rudern eines größeren 
Kunstflug-Modells (>3m Spannweite, >20 kg, extrem übermotorisiert) hast 
du auch Kräfte, die ein Servo allein nicht mehr (verläßlich) schafft. 
Von daher ist "Servo-Knurren" und die Beseitigung desselben nichts 
wirklich neues...

von Philipp G. (geiserp01)


Angehängte Dateien:

Lesenswert?

Ok, jetzt sind einige ein bisschen übers Ziel hinausgeschossen.

Aber zuerst mal zu Dir @Falk:

>Weil die die Last gleichmäßig auf beide verteilen willst. Du willst ja
>nicht den Strom eines Servos auf Null regeln, während der andere, der
>nicht gemessen wird, wie blöde ackern muss. Und du weißt u.a. nicht
>vorher, welcher durch die mechanische Unsymmetrie der höher belastete
>ist.

Nun, die Last ist immer auf beiden gleichmässig verteilt, da sich die 
mechanische Unsymmetrie sich auf beide auswirkt.

Ich mach jetzt mal ein (Beispiel!) Bild damit sich jeder etwas 
vorstellen kann (Bild: Servo_coupling).

Also:

grün - zwei identische Servos
orange - Aluminium 20mm, kraftschlüssig verbaut auf beide Achsen
rot - 6mm Plexiglas

So, nun stellen wir das ganze auf eine ebene Fläche, kalibrieren die 
Naben, hängen den AVR daran und lassen (orange) jeweils 90° vor- und 
zurück drehen.

Das geht in beiden Richtungen.

Sobald wir jedoch ein Ende von (rot) in die Luft heben, werden die 
Servos knurren, und zwar beide, weil beide versuchen die Soll Position 
wieder zu erreichen.

Weitere Anforderungen:
- Ausserhalb rot habe ich keinen Platz
- Bauhöhe max ist die die max. Höhe der Servos (20mm)
- Die Verwindungssteifigkeit von (rot) dermassen zu erhöhen das kein 
Verzug mehr möglich ist, stünde in keinem Verhältnis was ich mit dem AVR 
mit ein paar Zeilen Code machen kann
- Ob die Endposition 89° oder 91° erreich ist in der Toleranz

Mögliche Lösungen:

1)Da ist mir zwischenzeitlich was neues in den Sinn gekommen, probiere 
ich am Abend.
Position anfahren, 100ms waren, dann PWM Signal auf Servo a abschalten, 
das andere kann dann drehen, muss jedoch genug Kraft haben sich durch 
das Servogetriebe von Servo b zu würgen.

2)Strom messen von einem Servo.
Dummy Code

iCurrent = 0;
iPrevCurrent = 0;
iMaxCurrent = 20; // mA
i = 0;

if EndposReached = true
iPrevCurrent = iCurrent
     for i = 0 to 10 i++
         if iPrevCurrent > iCurrent
             Servopos = Servopos + 1
         end if
         iCurrent = Getcurrent(Servo(a))
         if iCurrent <= iMaxCurrent
              exit for
         end if
         iPrevCurrent = iCurrent
     next
end if

.. und dann dasselbe in die andere Richtung mit einem Statusflag und 
einem Zähler.

3) Nächster Vorschlag von euch wäre nun ein Poti zu verwenden.

1) PWM Signal von Servo(a) nach Endposition erreich abschalten
2) Strommessung durch Coding
3) Nur ein Poti verwenden
4) ??

Gruss, Philipp

von Felix F. (wiesel8)


Lesenswert?

Mit beiden Servos die Sollposition anfahren. Bei erreichen der 
Sollposition 1 Servo abschalten. Das funktioniert nicht?

mfg

von Falk B. (falk)


Lesenswert?

@ Philipp Geiser (geiserp01)

>Nun, die Last ist immer auf beiden gleichmässig verteilt,

Das glaube ich nicht so ganz.

>Sobald wir jedoch ein Ende von (rot) in die Luft heben, werden die
>Servos knurren, und zwar beide, weil beide versuchen die Soll Position
>wieder zu erreichen.

Komisches Beispiel.

>- Bauhöhe max ist die die max. Höhe der Servos (20mm)

Dann brauchst du ein Planetendifferential mit 20mm Durchmesser und 
350Ncm Drehmoment. Gib es sowas? Was kostet das?

>- Die Verwindungssteifigkeit von (rot) dermassen zu erhöhen das kein
>Verzug mehr möglich ist, stünde in keinem Verhältnis was ich mit dem AVR
>mit ein paar Zeilen Code machen kann

Vielleicht aber anders herum? Eine schwimmende Lagerung der Servos, 
sodaß sich der Verzug automatisch ausgleicht? So wie bei einer 
klassischen Felgenbremse?

>Position anfahren, 100ms waren, dann PWM Signal auf Servo a abschalten,
>das andere kann dann drehen, muss jedoch genug Kraft haben sich durch
>das Servogetriebe von Servo b zu würgen.

Klingt nicht gut. Ist so auch nicht nötig. Ich vermute mal, daß die Last 
immer nur in einer Drehrichtung wirkt. Damit hast du eine 1 
Quadratenregelung. Das vereinfacht vieles. Damit ist auch die 
Balancierung der Servoströme leicht, wie ich es schon beschrieben habe.

Der Servo-Stellwert wird mit dem überlagerten Balanceregler korrigiert 
und geht dann auf die PWM deines uCs. Und dieser Regler ist IMMER aktiv. 
Dabei reicht es, wenn der mit ca. 50 Hz läuft, denn öfter werden auch 
die Servopulse nicht generiert. Im Idealfall läuft er synchron zur 
Servopulserzeugeung.

von Falk B. (falk)


Lesenswert?

@ Felix F. (wiesel8)

>Mit beiden Servos die Sollposition anfahren. Bei erreichen der
>Sollposition 1 Servo abschalten. Das funktioniert nicht?

Dann müßte in der Sollposition das Lastmoment kleiner sein als das 
Drehmoment eines Servos. Aber der OP hat ja extra 2 Servos, um ein sehr 
großes Moment zu erzeugen.

von Sebastian S. (amateur)


Lesenswert?

>Sobald wir jedoch ein Ende von (rot) in die Luft heben, werden die
>Servos knurren, und zwar beide, weil beide versuchen die Soll Position
>wieder zu erreichen.
Dieser Fall lässt sogar "echt" gleichlaufende Servos alt aussehen.

Um das zu "regeln" müsstest Du den Hebewinkel erfassen und als 
Korrekturfaktor verwenden.
Selbst bei 100%-tig korrekten Servos könnte hier Servo_1 = 30° und 
Servo_2 = 32°, korrekt sein.

Kein Problem bei einem tiefen Eingriff in die Elektronik der beiden 
Servos, einer Erfassung der "Hebewinkel" mit Regelung der 
Positionsvorgaben oder der neuen, hellseherisch veranlagten Steuerung 
von der Firma IxYpsilonZett & Sohn.

Vielleicht liefert der TO ja noch ein paar Bedingungen nach, die 
natürlich alle erfüllt werden sollen.

von wendelsberg (Gast)


Lesenswert?

Philipp G. schrieb:
> orange - Aluminium 20mm, kraftschlüssig verbaut auf beide Achsen
> rot - 6mm Plexiglas

Bis auf eine Mechanik, die im Inneren eines als Rohr ausgefuehrten 
"orange" eingebaut wird, faellt mir dazu nichts ein, was nicht 
zusaetzliche Sensorik oder Eingriffe in die Servos erfordert.

Aber eine Walze, die gradgenau positioniert werden soll und dann auch 
noch 70 kg am Umfang ziehen koennen muss, bringt fuer mich auch nur 
Fragezeichen hervor.

Was genau soll das werden?

wendelsberg

von Philipp G. (geiserp01)


Lesenswert?

Sebastian S. schrieb:
> Vielleicht liefert der TO ja noch ein paar Bedingungen nach, die
> natürlich alle erfüllt werden sollen.

Gerne.

die untere Platte (rot) gibt es zweimal, einmal unter dem Servos und 
einmal oberhalb der Servos.

An Alu (orange) ist ein Display angeflanscht, welches die gesamte Breite 
von (orange) ausnutzt, sowie auch die maximal verfügbare Länge.

Das Display ist fester Bestandteil von (orange). Im Display sind PCBs 
verbaut, also eine Blackbox die sich nicht verändern lässt. Sonst wäre 
es am einfachsten, wie @falk schrieb, ganz einfach ein Diff einzubauen. 
Der Platz steht mir nicht zur Verfügung.

Die maximale Last haben die Servos, wenn diese das Display von liegender 
Position auf 90° stellen (linear zum Winkel abnehmend).

Sebastian S. schrieb:
> Kein Problem bei einem tiefen Eingriff in die Elektronik der beiden
> Servos, einer Erfassung der "Hebewinkel" mit Regelung der
> Positionsvorgaben oder der neuen, hellseherisch veranlagten Steuerung
> von der Firma IxYpsilonZett & Sohn.

Warum von Zettel Space X & Sohn? Servo a) aufschrauben, Strippe an 
mittleren Pin von Poti löten. Servo b) aufschrauben, mittlerer Pin 
trennen und Strippe von a) anlöten. Master Slave. Fertig.

Softwaretechnische Lösungen hat ja schon @Falk präsentiert.

>Aber eine Walze, die gradgenau positioniert werden soll und dann auch
>noch 70 kg am Umfang ziehen koennen muss, bringt fuer mich auch nur
>Fragezeichen hervor.

Da kommt net Kette dran und dann werde ich damit die Titanic heben. 
Nein, wie gesagt, die Walze ist in Wirklichkeit ein Display.

: Bearbeitet durch User
von Sebastian S. (amateur)


Lesenswert?

> Servo a) aufschrauben, Strippe an
> mittleren Pin von Poti löten. Servo b) aufschrauben, mittlerer Pin
> trennen und Strippe von a) anlöten. Master Slave. Fertig.
LOL
Auch ohne den Aschermittwoch als Ausrede zu nutzen.

von Falk B. (falk)


Lesenswert?

@Philipp Geiser (geiserp01)

>An Alu (orange) ist ein Display angeflanscht, welches die gesamte Breite
>von (orange) ausnutzt, sowie auch die maximal verfügbare Länge.

Also ein drehbares Display.

Und wegen maximal schlechter Mechanik braucht man dort immenses 
Drehmoment. Finde den Fehler. Klingt so, als ob die Drehachse am Rand 
des Displays liegt und das Ding 80 Zoll hat ;-)

Wenn es der Platz erlaubt, könnte man das Drehmoment mit einem 
Gegengewicht deutlich reduzieren. Ist halt nicht so sexy und deutlich 
größer.

: Bearbeitet durch User
von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Philipp G. schrieb:
> Sobald wir jedoch ein Ende von (rot) in die Luft heben, werden die
> Servos knurren, und zwar beide, weil beide versuchen die Soll Position
> wieder zu erreichen.

Und welches Verhalten erwartest du von deinem Display? rot verdreht sich 
im 2°... Display 1°, oder schlicht egal?

wer hebt überhaupt rot an? Kann man den eliminieren? ;-)

von Philipp G. (geiserp01)


Lesenswert?

Falk B. schrieb:
> Also ein drehbares Display.
>
> Und wegen maximal schlechter Mechanik braucht man dort immenses
> Drehmoment. Finde den Fehler. Klingt so, als ob die Drehachse am Rand
> des Displays liegt und das Ding 80 Zoll hat ;-)
>
> Wenn es der Platz erlaubt, könnte man das Drehmoment mit einem
> Gegengewicht deutlich reduzieren. Ist halt nicht so sexy und deutlich
> größer.

Das ist völlig korrekt @Falk. Gegengewicht wäre ein möglicher Ansatz, 
aber viel Platz nach hinten ist nicht. Mechanisch optimal wären die 
Servos im Schwerpunkt vom Display angebracht, nun würde man dann 
dummerweise auch nur die Hälfte vom Display sehen.

Michael R. schrieb:
> Und welches Verhalten erwartest du von deinem Display? rot verdreht sich
> im 2°... Display 1°, oder schlicht egal?

Nun, wie erwähnt, ob Display 'ausgefahren' nun 89° oder 92° hat, das ist 
vernachlässigbar.

Michael R. schrieb:
> wer hebt überhaupt rot an? Kann man den eliminieren? ;-)

Hm, der gute alte Newton halt. :)

Konkret: Es sind vor allem thermische Einflüsse die rot anheben. rot ist 
in Tat und Wahrheit 2.5mm ABS Kunststoff. Ich kann in der Anwendung den 
2.5mm Kunststoff weder verstärken noch garantieren, dass der Untergrund 
immer eben sein wird. Es geht hier auch nicht im Meter, ich habe bei 
Experimenten festgestellt, dass nur ein halber mm reicht um das Knurren 
hervorzurufen.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Na dann bau die Regelung der Servoströme. Kostet kaum Hardware (2 
Shunts, 1x Doppel-OPV) und nur bissel Software und Hirnschmalz. Die 
Regelung kann man ggf. sogar beim Positionswechsel inaktiv schalten und 
nur in der Endlage aktivieren.

von DocMartin (Gast)


Lesenswert?

Kann man evtl. ein Servo durch einen Kraftspeicher ersetzen (vulgo: 
Feder)?
So bemessen, dass das Ein-/Ausklappen im Wesentlichen durch diese Feder 
passiert und der verbliebene Servo nur die Geschwindigkeit steuert, mit 
der das passiert?

Ahoi, Martin

von Philipp G. (geiserp01)


Lesenswert?

Das versuch ich @Falk.

@docmartin: Eine Torsionsfeder? Ja, das würde der Bauraum zulassen.

von Johannes R. (oa625)


Lesenswert?

Hallo!

Hab' nicht alles durchgelesen, aber wie wäre es mit einer Schenkelfeder 
an der Welle zur Entlastung und nur 1 Servo? Max. Vorspannung bei 
liegendem Display bis 0 Vorspannung bei stehendem Display?

Beispiel:
https://www.federnshop.com/de/produkte/schenkelfedern.html

MfG

von reihaus (Gast)


Lesenswert?

Einen Servo mit soviel Spiel einbauen oder ankoppeln das
der maximale Fehler ausgeglichen wird.
 Der zweite Servo unterstützt nur beim Drehen.

von SI (Gast)


Lesenswert?

Falk B. schrieb:
> @Philipp Geiser (geiserp01)
>
>>Warum zwei? Weil ich Drehmoment brauche. Es sind Savöx Full Metal Servos
>>mit 350nCm Kraft.
>
> Was ist nCm für eine Einheit?
1
10^-9 Coulomb * Meter

So schwer ist das doch nicht ;-)
Das sollte man eigentlich in der Schule zumindest in Grundzügen 
mitgekriegt haben.

https://de.wikipedia.org/wiki/Vors%C3%A4tze_f%C3%BCr_Ma%C3%9Feinheiten#SI-Pr%C3%A4fixe
https://de.wikipedia.org/wiki/Internationales_Einheitensystem#SI-Basiseinheiten
https://de.wikipedia.org/wiki/Internationales_Einheitensystem#Abgeleitete_SI-Einheiten_mit_besonderem_Namen

von Philipp G. (geiserp)


Lesenswert?

coulumb, ok dank diesem wertvollen Beitrag dürfte das Problem dauerhaft 
gelöst sein.

von 2⁵ (Gast)


Lesenswert?


von guest...Rainer (Gast)


Lesenswert?

reihaus schrieb:
> Einen Servo mit soviel Spiel einbauen oder ankoppeln das
> der maximale Fehler ausgeglichen wird.
>  Der zweite Servo unterstützt nur beim Drehen.

Genau so. Und zwar mit einem Schlitz im Mitnehmer. Dann fährt der erste 
Servo in seine Sollstellung und der 2te kann noch etwas weiter. Beim 
Zurückfahren gibt es natürlich eine Hysterese, aber die sollte hier 
nicht weiter stören.
Gruß Rainer

von wendelsberg (Gast)


Lesenswert?

Na hoffentlich hat das Display einen Rahmen aus Flugzeug/Weltraum-Titan.
Sonst wird der von dem Drehmoment verbogen.
Viel Spass noch.

wendelsberg

von soundmachine123 (Gast)


Lesenswert?

Hi,

ohne jetzt das Rad neu erfinden zu wollen. Natürlich kann man durch 
Strommessung eine Gleichlaufregelung und Lagespielausgleiche 
programmieren. Anstöße wurden hier zuhauf gegeben und ich bin überzeugt 
das ist machbar. Wenn aber ein imens hohes Drehmoment selbst im 
Stillstand zur Lageregelung gebarucht wird, so hab ich im ersten 
Semester gelernt mit einer mechanischen Bremse zu arbeiten. Ist di zu 
können die Servos die Arbeit einstellen. Dann kann es maximal während 
der Bremsenschließzeit und Bremsenöffnungszeit "knurren". Das geht 
mechanisch nicht bei dir?

von Philipp G. (geiserp01)


Lesenswert?

> Wenn aber ein imens hohes Drehmoment selbst im
> Stillstand zur Lageregelung gebarucht wird, so hab ich im ersten
> Semester gelernt mit einer mechanischen Bremse zu arbeiten. Ist di zu
> können die Servos die Arbeit einstellen. Dann kann es maximal während
> der Bremsenschließzeit und Bremsenöffnungszeit "knurren". Das geht
> mechanisch nicht bei dir?

Eine mechanische Bremse wäre Overkill. Es ist nicht so, dass es immer 
knurrt, meist eh nur in einer Richtung.

Aber wenn ich schon nen AVR habe warum soll ich dann nicht gleich einen 
Lagerspielausgleich programmieren? Der kostet ausser ein paar Stunden 
Hirnschmalz nix.

von Philipp G. (geiserp01)


Lesenswert?

OK - das funktioniert nun. Habe es auf einem Servo programmiert.

Mit dem Drehmoment bin ich aber dennoch hart an der Grenze. Das Display 
welches ich über die beiden Servos bewege, ist 300g schwer, bei 180 x 
105 x 40mm.

Jetzt denkt ihr wohl, spinnt der? Das ganze tam tam für so ein mickriges 
Ding.

Das Problem ist, dass die Kraft beim maximaler Stellzeit angegeben ist. 
Ich lasse das Display per Software langsam beschleunigen, bewege es, und 
bremse vor Anschlag wieder ab. Die Bewegung soll möglichst flüssig und 
harmonisch aussehen.

Wenn ich das ganze auf 3000ms time fehlt den Servos die Kraft - selbst 
für das mickrige Ding.

Bei 2500 geht es ganz gut.

von Falk B. (falk)


Lesenswert?

@ Philipp Geiser (geiserp01)

>OK - das funktioniert nun. Habe es auf einem Servo programmiert.

Was hast du denn GENAU gemacht?

>Mit dem Drehmoment bin ich aber dennoch hart an der Grenze. Das Display
>welches ich über die beiden Servos bewege, ist 300g schwer, bei 180 x
>105 x 40mm.

>Jetzt denkt ihr wohl, spinnt der? Das ganze tam tam für so ein mickriges
>Ding.

In der Tat. 2x34Nm für ein 300g Display ist irgendwie ein ziemliches 
Mißverhältnis. Ich nehme mal an, daß die 105mm die Höhe sind und auch in 
der Ebene die Drehachse liegt. Sprich, die 300g greifen im Schwerpunkt 
bei ca. 0,05m an. Macht 3N * 0,05m = 0,15 Nm. Das ist eine ganz andere 
Liga. Warum brauchst du 2x34Nm? Da stimmt irgend was nicht.

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.