Forum: Mikrocontroller und Digitale Elektronik Modellbau Servo Impulse wiederholen


von Thomas W. (thomas0906)


Lesenswert?

Hi

Ich experimentiere gerade mit der Servoansteuerung.

Dabei stehe ich vor folgendem Problem:
Ich möchte nach Erreichen eine Endposition die Versorgungsspannug (GND) 
am Servo abschalten.
Ich lasse es z.B. von 1ms bis 2ms laufen. Also Endausschlag bis 
Endausschlag.

Wenn es sich auf 1ms befindet sende ich einen Impuls von 2ms.
Dadurch läuft es aber nicht in die Endstellung bei 2ms sondern bleibt 
vorher stehen. Es müssen also wiederholt alle 20ms die 2ms Impulse 
gesendet werden, bis endlich die Endposition erreicht wird.

Wie bekomme ich heraus, wie oft ich die Impule senden muß ,bis das Servo 
eine beliebige Position aucht tatsächlich erreicht hat?

Ist irgendwie scheinbar ein großes Problem, da ich die Servois eine 
Kurve abfahren lassen wollte, die Zielpunkte im 20ms Raster enthält. Die 
Laufzeit zwischen den Punkten wollte ich als x-faches von 20ms angeben 
und Zwischenwerte berechnen. Das funktinoniert aber nicht mit 
wiederholten Impulsen bei großen Impulslängenunterschieden :-(

Gruß
Thomas

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Thomas W. schrieb:
> Es müssen also wiederholt alle 20ms die 2ms Impulse
> gesendet werden,

Das ist das Servo-Signal und völlig korrekt so.

http://www.mikrocontroller.net/articles/Modellbauservo_Ansteuerung

Thomas W. schrieb:
> Wie bekomme ich heraus, wie oft ich die Impule senden muß ,bis das Servo
> eine beliebige Position aucht tatsächlich erreicht hat?

Die Pulse müssen rund um die Uhr gesendet werden, und zwar so lange, bis 
das Servo stromlos ist.

Thomas W. schrieb:
> Ist irgendwie scheinbar ein großes Problem, da ich die Servois eine
> Kurve abfahren lassen wollte, die Zielpunkte im 20ms Raster enthält.

Das ist kein Problem. Ändere einfach das Nutzsignal (1...2ms-Puls) alle 
20ms und gib dieses Signal alle 20ms aus. Davon abgesehen gibt es 
Servos, die einer zu starken Änderung des Signals nicht immer folgen 
können. Dann muss sich das Nutzsignal halt langsamer verändern.

von Daniel F. (df311)


Lesenswert?

Thomas W. schrieb:
> Wie bekomme ich heraus, wie oft ich die Impule senden muß ,bis das Servo
> eine beliebige Position aucht tatsächlich erreicht hat?

wie wärs mit einem endschalter?

von Karl H. (kbuchegg)


Lesenswert?

Thomas W. schrieb:

> Wie bekomme ich heraus, wie oft ich die Impule senden muß ,bis das Servo
> eine beliebige Position aucht tatsächlich erreicht hat?

Schalter den das Servo betätigt

> Ist irgendwie scheinbar ein großes Problem, da ich die Servois eine
> Kurve abfahren lassen wollte, die Zielpunkte im 20ms Raster enthält. Die
> Laufzeit zwischen den Punkten wollte ich als x-faches von 20ms angeben
> und Zwischenwerte berechnen. Das funktinoniert aber nicht mit
> wiederholten Impulsen bei großen Impulslängenunterschieden :-(

Exakt.

Erstes Zwischenziel:
Die Pulsgenerierung von den Bahnpunkten trennen. Die Servoansteuerung 
muss völlig autonom die Servopulse erzeugen können. Wo dann die 
entsprechenden abzufahrenden Punkte herkommen und welchen Pulszeiten 
diese entsprechen ist ein davon losgelöstes Problem.

Mit einer Verquickung dieser beiden Dinge, ala '5 Pulse mit 1.1ms, 
danach 7 Pulse 1.15ms' wirst du nicht glücklich werden, weil Servos auch 
unterschiedlich schnell fahren, je nachdem wie hoch die 
Versorgungsspannung noch ist (Akkubetrieb) bzw. welche Last sie dabei 
bewegen müssen.


ALso: erst mal eine autonome Pulserzeugung für die Servos machen.
Modellbauservo Ansteuerung

von Uwe (Gast)


Lesenswert?

Oder ne eigene Halbbrücke und µC ins Servo und das poti auch an den µC.
VCC und GND CLK DIO raus aus dem Servo und eine eigene Rgelung. Position 
über I2C senden und wenn Servo in Position ist dann sendest du das über 
I2C ein bin in Position.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Uwe schrieb:
> Oder ne eigene Halbbrücke und µC ins Servo und das poti auch an den µC.

Was glaubst Du, was ein Servo ist?

Thomas W. schrieb:
> das Servo
> eine beliebige Position aucht tatsächlich erreicht hat?

Wenn Du das Servo kennst, weisst Du auch dessen Position bei einer ganz 
bestimmten Pulslänge. Gerade digitale Servos einer bestimmten Baureihe 
sind untereinander reproduzierbar genau bei der Positionsbestimmung.

von Servo Master (Gast)


Lesenswert?

Thomas W. schrieb:
> Wie bekomme ich heraus, wie oft ich die Impule senden muß ,bis das Servo
>
> eine beliebige Position aucht tatsächlich erreicht hat?

Indem du die Stromaufnahme des Servos per Shunt-Widerstand überwachst 
und daraus auf die aktuelle Situation schließen kannst.
Somit ist keine Änderung des Servos nötig.

von Thomas W. (thomas0906)


Lesenswert?

Hi

Das Problem ist wohl noch nicht ganz klar geworden:
Einen Impuls zu senden, bedeutet noch lange nicht, daß das Servo die 
Position erreicht. Erst weiderholtes Senden, bis das Servo dort 
angekommen ist, ist nötig. EIn Schalter nutzt garnichts, da die 
Endposition ja variabel zwischen 1ms und 2ms liegen kann.


Karl Heinz Buchegger schrieb:

> Erstes Zwischenziel:
> Die Pulsgenerierung von den Bahnpunkten trennen. Die Servoansteuerung
> muss völlig autonom die Servopulse erzeugen können. Wo dann die
> entsprechenden abzufahrenden Punkte herkommen und welchen Pulszeiten
> diese entsprechen ist ein davon losgelöstes Problem.
>
> Mit einer Verquickung dieser beiden Dinge, ala '5 Pulse mit 1.1ms,
> danach 7 Pulse 1.15ms' wirst du nicht glücklich werden, weil Servos auch
> unterschiedlich schnell fahren, je nachdem wie hoch die
> Versorgungsspannung noch ist (Akkubetrieb) bzw. welche Last sie dabei
> bewegen müssen.
>
>
> ALso: erst mal eine autonome Pulserzeugung für die Servos machen.
> Modellbauservo Ansteuerung

Hmm
Die autonome Pulsgenerierung habe ich im Prinzip.
Wenn ich aber das 20ms Raster nicht für die Servogeschwindigkeit nutzen 
kann, wie soll ich die dann unabhängig vorgeben?

Also Ziel ist z.B. 4 Punkte anzufahren und die Werte und Zeitabstände 
dazu im EEPROM abzulegen: (IL=Impulslänge)
Punkt 1 bei 1ms IL
Punkt 2 bei 1,5ms IL
Punkt 3 bei 1,5 ms IL
Punkt 4 bei 1ms IL
Zeit zwischen 1 und 2 = 100ms
Zeit zwischen 2 und 3 = 1s
Zeit zwischen 3 und 4 = 100ms

Wenn ich die Impulslänge nicht linear ändere (also Zwischenwerte 
berechne), läuft das Servo auch nicht linear, sondern macht Sprünge.

Wie triggere ich also die autonome Pulsgenerierung?

Gruß
Thomas

von Karl H. (kbuchegg)


Lesenswert?

Thomas W. schrieb:

> Wie triggere ich also die autonome Pulsgenerierung?

Link lesen.
Mit einem Timer die Servopulse erzeugen. Das muss erst mal grundsätzlich 
unabhängig von allem anderen und autonom ablaufen.

> Zeit zwischen 1 und 2 = 100ms

das hier kannst du mit Timer machen oder mit _delay_ms (wenn sonst 
nichts zu tun ist), oder wie du willst. Du kannst auch die 100ms in 
feinere Stufen aufteilen und das der Pulserzeugung zur Verfügung 
stellen. Wie du willst.

Aber die Servopulserzeugung muss unabhängig für sich alleine die 
Servopulse erzeugen. Du kommst sonst mit deinem Timing nie auf einen 
grünen Zweig. Vor allen Dingen dann nicht, wenn dann irgendwann mehrere 
Servos im Konzert spielen sollen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Thomas W. schrieb:
> Das Problem ist wohl noch nicht ganz klar geworden:
> Einen Impuls zu senden, bedeutet noch lange nicht, daß das Servo die
> Position erreicht. Erst weiderholtes Senden, bis das Servo dort
> angekommen ist, ist nötig.

[ ] Du hast Dir die Beschreibung des Servosignals nicht angesehen

von Uwe (Gast)


Lesenswert?

> Was glaubst Du, was ein Servo ist?
Im einfachsten fall zei Halbbrücken die an nem Operationsverstärker 
hängen, der als Input Nen Soll- und nen Istwert vergleicht (mit nen paar 
Cs und Rs und Dioden die das pseudo PWM in nen Analogwert wandeln). Die 
Digitalen haben natürlich nen µC statt nen OP.

Also ein servo hat für mich per Definition eine Rückmeldung zu haben.
Modelbauservos haben diese natürlich intern. Da man aber dort nicht 
herankommt sind das einfach sche** Servos. Aber man kann seine eigene 
Elektronik reinmachen und was anständiges draus machen.

von Karl H. (kbuchegg)


Lesenswert?

> Hmm
> Die autonome Pulsgenerierung habe ich im Prinzip.

Dann zeig mal.
Aber wenn da kein Timer dafür vorkommt, kannst du es gleich wieder 
einpacken.

von Udo S. (urschmitt)


Lesenswert?

Thomas W. schrieb:
> enn ich die Impulslänge nicht linear ändere (also Zwischenwerte
> berechne), läuft das Servo auch nicht linear, sondern macht Sprünge.

Aber nur in der technischen Auflösung des Servos.
Wenn du das vermeiden möchtest müsstest du ein Servo haben bei dem du 
die Verfahrgeschwindigkeit stellen kannst.
Keine Ahnung ob es sowas gibt, sicher nicht im 0815 Modellbaubereich.

von Uwe (Gast)


Lesenswert?

Modelbau Servos haben normalerweise sowas wie ne garantierte 
Stellgeschwindigkeit bei bestimmter Betriebspannung bzw. 
Winkelgeschwindikkeit oder Maximalzeit für Stellwinkel im Datenblatt.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Thomas W. schrieb:
> Die autonome Pulsgenerierung habe ich im Prinzip.

Nein.

Thomas W. schrieb:
> Wenn ich aber das 20ms Raster nicht für die Servogeschwindigkeit nutzen
> kann, wie soll ich die dann unabhängig vorgeben?

Das Servosignal muss ständig wiederholt werden. Dies kann eine 
Timer-Interrupt-Serviceroutine erledigen. Auch wenn das Servo steht, 
muss das Signal gesendet werden, und zwar immer mit derselben 
Servopulslänge, also der positive Puls irgendwo zwischen 1...2 ms. Indem 
Du diesen Puls zur Laufzeit variierst, erhältst Du die 
Laufgeschwindigkeit des Servos. Stell Dir vor, Du sitzt im Auto: Eine 
flache Kurve fährst Du, indem Du (relativ zur Geschwindigkeit des 
Fahrzeuges) langsam am Lenkrad drehst. Eine steile Kurve erfordert 
entsprechend schnelles Drehen am Lenkrad. Drehst Du gar nicht, behält 
das Fahrzeug die gerade anliegende Kurvenbewegung bei.
Trotzdem musst Du das Lenkrad festhalten.

von Thomas W. (thomas0906)


Lesenswert?

Hi

Wenn ich das Auto anhalte, dann kann ich doch aber irgendwann loslassen?

Spaß beiseite.
Der Vergleich hinkt, weil die Stellgeschwindigkeit der Räder nicht 
langsamer ist, als mein Impuls am Lenkrad.

Bei vielen Schritten funktioniert mein Verfahren ja gut, da das Servo 
dann 1:1 den Impulsen folgt. Aber je größer die Schrittweite ist, umso 
schneller dreht das Servo (wie gewünscht), aber es erreicht halt nicht 
mehr die physikalische Position, die dem EINMALIG generierten Impuls 
entspricht.

Ich werde nochmal weitertesten.
Vielleicht nur den letzten Impuls einfach x-mal senden, bevor ich die 
GND abschalte. Das Abschalten machen übrigens viele, um ein Zittern der 
Servos bei gehaltener Position zu vermeiden. (Weiche Modellbahn)


Impule werden bei mir übrigens per CCP also Timergesteuert erzeugt.
Compare Modus. Vergleich mit Timer erzeugt fallende Flanke. Das ist 
schon ok...


Gruß
Thomas

von Karl H. (kbuchegg)


Lesenswert?

Bin ich eigentlich der einzige, der sich so dunkel an einen Frager aus 
den letzten Tagen erinnert, der Servos mittels _delay_us() ansteuern 
wollte und diese Pulse entsprechend oft wieder holt hatte?


Thomas
Wenn du das bist:
Das ist ein untaugliches Mittel!

von Karl H. (kbuchegg)


Lesenswert?

> Vielleicht nur den letzten Impuls einfach x-mal senden, bevor ich
> die GND abschalte.

Du sollst das Servo überhaupt nicht abschalten!
Ein Servo will ständig Pulse haben!


> Das Abschalten machen übrigens viele, um ein Zittern der
> Servos bei gehaltener Position zu vermeiden.

Das ist Quatsch.

von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz Buchegger schrieb:

>> Das Abschalten machen übrigens viele, um ein Zittern der
>> Servos bei gehaltener Position zu vermeiden.
>
> Das ist Quatsch.


Um da auszuholen:
Wenn ein Servo ruckelt, dann ist entweder das Poti am Ende seiner 
Lebensdauer oder du hast das Servo in die mechanische Begrenzung 
(entweder die interne oder eine durch das Gestänge verursachte) 
gefahren.
Da würden sich Modellflieger schön bedanken, wenn ihre Servos ruckeln 
würden.

von Udo S. (urschmitt)


Lesenswert?

Karl Heinz Buchegger schrieb:
>> Vielleicht nur den letzten Impuls einfach x-mal senden, bevor ich
>> die GND abschalte.
>
> Du sollst das Servo überhaupt nicht abschalten!
> Ein Servo will ständig Pulse haben!
>
>
>> Das Abschalten machen übrigens viele, um ein Zittern der
>> Servos bei gehaltener Position zu vermeiden.
>
> Das ist Quatsch.

Karl Heinz hat zu 100% recht!
Was ein Servo macht wenn es keine gültigen Signale kriegt ist erst mal 
völlig undefiniert.

Karl Heinz Buchegger schrieb:
> Wenn ein Servo ruckelt, dann ist entweder das Poti am Ende seiner
> Lebensdauer oder du hast das Servo in die mechanische Begrenzung
> (entweder die interne oder eine durch das Gestänge verursachte)
> gefahren.
Oder er hat einen Jitter programmiert von wegen Benutzung von delay etc.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Thomas W. schrieb:
> Das Abschalten machen übrigens viele, um ein Zittern der
> Servos bei gehaltener Position zu vermeiden. (Weiche Modellbahn)

Wer das macht, hat das Prinzip nicht verstanden. Wenn das Servo seine 
Position erreicht hat und von einem stehenden Signalpuls gesteuert wird, 
zittert da gar nichts. Das Servo verbraucht dann auch keinen 
nennenswerten Strom. Das Problem ist eher, wenn Du das Servo 
abschaltest, dass Du es irgendwan wieder einschalten musst. Dann geht 
das Geruckel erst los, weil sich das Servo erst initialisiert und dann 
versucht, sich auf einen hoffentlich schon angelegten Steuerpuls hin zu 
bewegen. Fehlt der Steuerpuls, macht das Servo im besten Fall nichts, 
ungünstigerweise kann es auch voll gegen einen Anschlag laufen. Billige 
Analog-Servos ruckeln beim Einschalten der Stromversorgung übrigens 
immer und verbrauchen kurzfristig viel Strom, so dass beim 
gleichzeitigen Einschalten von mehreren Servos sogar die komplette 
Stromversorgung einbrechen kann. Das ist ein unschöner Effekt!

von Blackbird (Gast)


Lesenswert?

Und GND (Ground == Masseleitung) wird auch nicht geschaltet, höchstens 
Vcc (die Betriebsspannung).

Dann kann das Servo aber vom Gestänge (oder was da dran hängt) verstellt 
werden.


Blackbird

von Holger W. (holgerw)


Lesenswert?

Den Impuls kann man schon abschalten, wenn die Endstellung erreicht ist. 
Digitale Servos behalten meist die Position automatisch, analoge Servos 
verharren durch die Selbsthemmung des Getriebes in der Stellung.
Wenn das nicht der Fall ist dann stimmt der mechanische Aufbau nicht, 
evtl. eine Untersetzung (Hebel) einbauen.
Für den Einsatzfall Modellweiche ist das ok. Zumindest bis 1:87...
Wird der Impuls nicht abgeschaltet versucht der Servo evtl. ständig 
minimale Abweichungen auszugleichen, unnötiger Stromverbrauch. (IN 
DIESEM ANWENDUNGSFALL)
Betriebsspannung zuschalten sollte man erst wenn der Impuls sicher 
steht, dann hält sich auch das Ruckeln in Grenzen.
Abschalten sollte man die Spannung nicht, sonst hat man wieder den 
Effekt des Ruckelns und vor allem nicht GND abschalten !
Wenn man den Servo mit sich langsam ändernden Positionen ansteuert weiss 
man auch, wo er sich befindet. Zum Schluß noch ein paar Impuls 
zusätzlich für die Endposition ausgeben.
Hat sich so tausende Male bewährt.

Holger

von Cyblord -. (cyblord)


Lesenswert?

Hitec hatte doch mal spezielle Robotik-Servos, die zusätzlich zum 
normalen Servo-Signal noch einen Rückkanal mit einer 
Positionsinformation implementiert hatten.

Sowas braucht der unbelehrbare TE ;-)

von Thomas W. (Gast)


Lesenswert?

Holger W. schrieb:
> Den Impuls kann man schon abschalten, wenn die Endstellung erreicht ist.
> Digitale Servos behalten meist die Position automatisch, analoge Servos
> verharren durch die Selbsthemmung des Getriebes in der Stellung.
> Wenn das nicht der Fall ist dann stimmt der mechanische Aufbau nicht,
> evtl. eine Untersetzung (Hebel) einbauen.
> Für den Einsatzfall Modellweiche ist das ok. Zumindest bis 1:87...
> Wird der Impuls nicht abgeschaltet versucht der Servo evtl. ständig
> minimale Abweichungen auszugleichen, unnötiger Stromverbrauch. (IN
> DIESEM ANWENDUNGSFALL)
> Betriebsspannung zuschalten sollte man erst wenn der Impuls sicher
> steht, dann hält sich auch das Ruckeln in Grenzen.
> Abschalten sollte man die Spannung nicht, sonst hat man wieder den
> Effekt des Ruckelns und vor allem nicht GND abschalten !
> Wenn man den Servo mit sich langsam ändernden Positionen ansteuert weiss
> man auch, wo er sich befindet. Zum Schluß noch ein paar Impuls
> zusätzlich für die Endposition ausgeben.
> Hat sich so tausende Male bewährt.
>
> Holger

Hi Holger
So ist auch mein Stand momentan.
Da ruckelt nichts, auch nicht, wenn ich die Servos mit einem 2803 gegen 
GND ab/an-schalte. Der Impuls liegt sowieso nur an dem Servo an, das 
gerade in der state machine dran ist.
Also Servo langsam stellen lassen und zum Schluß noch ein paar Impuls
zusätzlich für die Endposition ausgeben. Das war ja meine 
Ursprungsfrage, WIE VIELE Impulse noch drauf. Ich werd es halt für den 
worst case auslegen.

Danke für die Antworten
Thomas

von Holger W. (holgerw)


Lesenswert?

Ich geb pro Position 2 Impulse aus, in der Endstellung dann noch 50 
Impulse.

Holger

von Modellbauer (Gast)


Lesenswert?

Knut Ballhause schrieb:
> Die Pulse müssen rund um die Uhr gesendet werden, und zwar so lange, bis
> das Servo stromlos ist.

Das stimmt nicht. Die meisten Servos bleiben einfach da stehen wo sie 
sind, wenn sie keine Impulse kriegen.

von Modellbauer (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
>> Das Abschalten machen übrigens viele, um ein Zittern der
>> Servos bei gehaltener Position zu vermeiden.
>
> Das ist Quatsch.

Quatsch ist allenfalls die Begründung. Funktionieren tut es jedenfalls.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Modellbauer schrieb:
>> Die Pulse müssen rund um die Uhr gesendet werden, und zwar so lange, bis
>> das Servo stromlos ist.
>
> Das stimmt nicht. Die meisten Servos bleiben einfach da stehen

Aha, die meisten. Und die anderen?

Damit alle Servos funktionieren:

1. Pulse an
2. Servo V+ einschalten (wenn nötig)
3. Pulse variieren, Servo fahren
           .
           .
           .
4. Servo V+ abschalten (wenn nötig)
5. Pulse aus

Für dauerhaft eingeschaltete Servos müssen die Pulse immer gesendet 
werden.

von Ernst B. (puravida)


Lesenswert?

Modellbauer schrieb:
> Karl Heinz Buchegger schrieb:
>>> Das Abschalten machen übrigens viele, um ein Zittern der
>>> Servos bei gehaltener Position zu vermeiden.
>>
>> Das ist Quatsch.
>
> Quatsch ist allenfalls die Begründung. Funktionieren tut es jedenfalls.

Gibt es Links dazu? Wenn das so verbreitet ist müßte  sich dazu ja eine 
Menge im Netz finden lassen.

von Holger W. (holgerw)


Lesenswert?

Knut Ballhause schrieb:

> Für dauerhaft eingeschaltete Servos müssen die Pulse immer gesendet
> werden.

Nein müssen sie nicht, zumindest mir bekannte Servos behalten die 
zuletzt eingestellte Position wenn der Impuls ausbleibt.

von Cyblord -. (cyblord)


Lesenswert?

Holger W. schrieb:
> Knut Ballhause schrieb:
>
>> Für dauerhaft eingeschaltete Servos müssen die Pulse immer gesendet
>> werden.
>
> Nein müssen sie nicht, zumindest mir bekannte Servos behalten die
> zuletzt eingestellte Position wenn der Impuls ausbleibt.

Das gilt vielleicht für ein paar Digitalservos. Ein analoges Servo wird 
a.) Kraftlos und b.) wird in den meisten Fällen Zuckungen kriegen.

gruß cyblord

von Thomas W. (Gast)


Lesenswert?

Holger W. schrieb:
> Ich geb pro Position 2 Impulse aus, in der Endstellung dann noch 50
> Impulse.
>
> Holger

Hi

Ok, dann hast Du also 40ms Abstände.
50 * 20ms am Ende sind 2s, bevor das Servo wieder zurückgestellt werden 
kann.
Das sollte reichen... 25 würden sicher auch gehen.

Gruß
Thomas

von Holger W. (holgerw)


Lesenswert?

cyblord ---- schrieb:

> Das gilt vielleicht für ein paar Digitalservos. Ein analoges Servo wird
> a.) Kraftlos und b.) wird in den meisten Fällen Zuckungen kriegen.

kraftlos ja,da steht aber die Selbsthemmung des Getriebes dagegen, 
Zuckungen gibt es nicht.
Und damit klinke ich mich aus der Diskussion um DIESEN Punkt aus.

Holger

Thomas: es kann eher wieder elektrisch zurückgestellt werden, ich muß ja 
nicht warten bis die Impulse alle gesendet wurden
1 Sekunde, pro Zwischenposition 2 Impulse, in der Endstellung dann nur 
50

von Thomas W. (Gast)


Lesenswert?

Übrigens, wenn man das Steuersignal abschaltet, bleiben die Servos 
ruhig.
Eine Kraft, die das Haltemoment des Getriebes+Motors überwindet habe ich 
auf der Modellbahn auch nicht.
Zuckungen kommen durch Einstreuungen auf den Zuleitungen zustande.
Im Modellflugzeug versucht man sowas mit Ferritkernen abzufangen.
Bei der Moba schaltet man einfach die Versorgungsspannung ab, egal ob 
GND oder Vss. Dann kann nichts zucken.
Einschaltzucken habe ich noch nicht festgestellt, wenn man es richtig 
macht (Reihenfolge und Totzeiten einhält).

Gruß
Thomas

von Blackbird (Gast)


Lesenswert?

Typisches "Blackbox"-Denken, an ein paar Beispielen verifiziert und zum 
Gesetz erhoben.

Ich bin raus.

Blackbird

von Udo S. (urschmitt)


Lesenswert?

Blackbird schrieb:
> Typisches "Blackbox"-Denken, an ein paar Beispielen verifiziert und zum
> Gesetz erhoben.
Jepp.
Vor allem entzieht sich mir der Grund warum man die Servos nicht 
dauerhaft ansteuern sollte.
Ausser:
Thomas W. schrieb:
> Der Impuls liegt sowieso nur an dem Servo an, das
> gerade in der state machine dran ist.
das Problem liegt in an mangelden Programmierkenntnissen alle Servos 
dauerhaft und jitterfrei mit Impulsen zu versorgen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Udo Schmitt schrieb:
> das Problem liegt in an mangelden Programmierkenntnissen alle Servos
> dauerhaft und jitterfrei mit Impulsen zu versorgen.

Jawoll, sehe ich auch so.

von Reinhard R. (reinhardr)


Lesenswert?

Meiner Meinung nach geht ihr mit dem TE ein bisschen (zu) hart ins 
Gericht.

Der TE hat von CCP gesprochen, womit er vermutlich die die 
Compare/Capture/PWM Einheit eines PIC meint.
http://ww1.microchip.com/downloads/en/devicedoc/31014a.pdf
Es gibt also keine Gründe davon auszugehen dass er mangels 
Programmierkenntnissen unter Jitter leidet. Ich kenne mich mit PICs 
nicht aus, aber ich vermute mal dass man auf diesem Wege auch zu einem 
Interrupt alle 20ms kommen kann. Damit kann man dann auch ohne Probleme 
und schön synchron bei jedem Puls die Länge anpassen, falls man einen 
definierten Gradienten fahren will. Zumindest bei einem AVR ginge das 
ohne Probleme. Mehrkanälige Systeme sind ev. geringfügig komplizierter.

Dass ein Servo bei Verlust der Pulse einfach nur sein Moment verliert, 
deckt sich auch mit meinen (bescheidenen) Erfahrungen. Ich habe den 
Eindruck dass zumindest billige analoge Servos bei jedem Puls die 
Pulslänge mit dem Signal vom Poti vergleichen und dann entsprechend 
einen kurzen Puls auf den Stellmotor geben. Wenn man die PWM Frequenz 
(aber nicht die Pulslänge) variiert, ändert sich damit auch das Moment 
und damit die Geschwindigkeit des Servos.
Bei derartigen Servohacks muss man sich halt im Klaren darüber sein dass 
man sich außerhalb der vereinbarten Konvention bewegt. Was ein 
bestimmter Servo letztendlich macht ist daher implementierungsabhängig. 
Der Servo ist dann u.U. nicht mehr beliebig austauschbar.

Ich habe mal vor einer Weile die Erfahrung gemacht dass Servos durchaus 
zittern. Das war nicht sichtbar (oder zumindest nicht gut) aber deutlich 
hörbar. Dass ein Servo in diesem Zustand auch unnötig viel Strom zieht, 
liegt da nahe.
Die Pulsquelle war damals ein Infineon 80C537 und die Pulse wurden per 
Hardware (Compare Capture Unit) erzeugt. Der Takt kam von einem Quarz. 
Anders gesagt, der Jitter war es wohl nicht.
Nebenbei bemerkt war das Zittern auf gewissen Stellungen ausgeprägter 
als bei anderen. Einen offensichtlichen Grund dafür habe ich damals 
nicht gefunden. Der Servo war nicht das Gelbe vom Ei, für eine Weiche 
hätte er aber gereicht - für Kunstflug in einem Helikopter eher nicht.

Reinhard

von Thomas W. (Gast)


Lesenswert?

Hi Reinhard.

So siehts aus.
Und bei ca. 120 Servos unter der Moba Anlage wird es interessant.
Du hast recht, ich nutze das Capture Compare Modul des PIC 18F2620.
Die 4 Servos werden alle alle 4ms auf den CCP Ausgang geschaltet, der 
dann eine interruptgesteuerte Impulslänge erhält.
Alles funtioniert inzwischen perfekt.
Ich schicke jetzt am Ende 25 Impulse mit der Endposition raus.
Ich kann die 4 Servos jetzt unabhängig auf 8 unterschiedlichen Kurven 
(4hin 4zurück) mit beliebig vielen Positionen und Zeitintervallen 
steuern.
Auch meine Entkuppler drücke ich damit hoch.
Die Servos sind schon austauschbar, da ich die Software anpassen kann 
über Parameter, die im EEPROM liegen.

Gruß
Thomas

von Karl H. (kbuchegg)


Lesenswert?

Ich hab nur eine Bitte.
Wenn du das nächste mal Probleme mit einer Servoansteuerung hast, sag 
bitte gleich, dass es für die Modellbahn ist und ihr ganz eigene 
Vorstellungen davon habt, wie man ein Servo ansteuern sollte. Dann halt 
ich mich raus.

von Udo S. (urschmitt)


Lesenswert?

Mal interessehalber:
Was bringt das eigentlich wenn man Servos für Entkuppler und statt 
Weichenstellantriebe nutzt?

von Holger W. (holgerw)


Lesenswert?

Servo als Weichenstellantrieb:
- "relativ" kostengünstig
- langsame Bewegung
- kraftvoll
- sicher
- leise

und nicht zu vergessen den Spaß am programmieren

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Udo Schmitt schrieb:
> Was bringt das eigentlich wenn man Servos für Entkuppler und statt
> Weichenstellantriebe nutzt?

Sieht einfach echt aus. Man kann Servos auch so fahren, dass sie wie 
reale Mechanik nachfedern :-)

von Armin J. (arminj)


Lesenswert?

Ich habe gerade auch dieselbe Fragestellung gehabt, weil ich das Servo 
so schnell wie möglich die Positionen abfahren lassen möchte.

Ich hab dann mal bei dem SG90 Micro Servo 1 Ohm in die Masseleitung 
gehängt und den Strom gemessen.
Wenn das Servo seine Position erreicht hat, ist der Strom (ca. 200mA) 
während der 20ms mehr als 15 ms aus, der Rest ist das berühmte Zittern 
bei den Billigteilen.

Wenn man nicht so exakt sein muss reicht es auch, die erste Stromlücke 
mit mehr als 11-13 ms zu detektieren.

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.