Servo multiplexen

#3128973
Lesenswert?

Kurze Frage mit hoffentlich kurzer Anwort:
wie verhält sich ein normaler Analog-Servo wenn am Steuereingang 
dauerhaft High-Pegel anliegt? Und was macht er, wenn dann die PWM 
losläuft?
folgender Hintergrund, ich möchte viele Servos über einen Multilexer 
74HC138 zusammenschalten. Nur einer bewegt sich, die anderen sollen aus 
sein. Für die nicht ausgewählten Servos liegt dann eben 1 an der 
Steuerleitung.
Gast #3129008
Lesenswert?

Rangi Jones schrieb:
> folgender Hintergrund, ich möchte viele Servos über einen Multilexer
> 74HC138 zusammenschalten

wenn du sowieso alle Servos nacheinander mit dem Impuls bedienen willst, 
solltest du besser ein Schieberegister verwenden, bei dem eine "1" 
durchgeschoben wird, wobei der Takt der Pulslänge entspricht.
Aletrnativ kann man auch einen Zähler wie den 74HC4017 verwenden.

Rangi Jones schrieb:
> wie verhält sich ein normaler Analog-Servo wenn am Steuereingang
> dauerhaft High-Pegel anliegt?

Es dreht an den Anschlag.
Ein Servo benötigt eine steigende Flanke, um den Beginn eines Impulses 
zu erkennen (alles andere wäre ja auch ein Pegel).
Seine Elektronik vergleicht den extern anliegenden Impuls mit einem 
intern genereiert und regelt den internen auf die Länge des externen 
durch verdrehen des integrierten Poti nach.

Die 50ms sind nur eine Anhaltsgröße. Es funktioniert i.d.R. auch mit 
kürzeren Pausen (16bit bei 3,686MHz ergeben eine Periodendauer von ca. 
18ms, was bei meinen Schaltungen problemlos funktioniert.)
Allerdings sollte man die Pause nicht endlos dehnen.
#3129063
Lesenswert?

danke für die antworten
ein konkrete antwort war zwar nicht dabei, aber das liegt vermutlich 
daran, das sich, wie Kuli schreibt, jeder Servo anders verhält, 
besonders die billigen.
Deshalb werde ich auf den 4051 ausweichen und einen Pulldown an den 
jeden Ausgang setzen. Damit ist dann im Ruhezustand alles auf 0.
@mahwe: das war garnicht die Frage, um die Mechanik kümmer ich mich 
schon
#3129066
Lesenswert?

Kuli schrieb:
> Udo Schmitt schrieb:
>> Das ist so nicht spezifiziert. Ein Standard-Servo erwartet alle 50ms ein
>> Impuls, dessen Länge dann dem Sollwert entspricht.
>
> Sind wohl 50Hz gemeint, also alle 20ms.

Uups, sorry, mein Fehler, Kuli hat natürlich recht es sind in etwa alle 
20ms.

Wobei das relativ unkritisch ist. Wenn statt dessen 25ms zwischen den 
Impulsen vergehen ist das meines Wissens nach unkritisch.
Gast #3129076
Lesenswert?

Rangi Jones schrieb:
> ein konkrete antwort war zwar nicht dabei, aber das liegt vermutlich
> daran, das sich, wie Kuli schreibt, jeder Servo anders verhält,
> besonders die billigen.

Oder auch die teueren. Wenn zu lange keine Steuerpulse kommen, ist die 
Funkstrecke ausgefallen und die Failsafe Automatik bringt die Servos in 
einen definierten Zustand.

Es ist doch gar kein Problem, ein dutzend Servos gleichzeitig 
anzusteuern.

MfG Klaus
Gast #3129088
Lesenswert?

Rangi Jones schrieb:
> folgender Hintergrund, ich möchte viele Servos über einen Multilexer
> 74HC138 zusammenschalten

wenn du sowieso alle Servos nacheinander mit dem Impuls bedienen willst, 
solltest du besser ein Schieberegister verwenden, bei dem eine "1" 
durchgeschoben wird, wobei der Takt der Pulslänge entspricht.
Aletrnativ kann man auch einen Zähler wie den 74HC4017 verwenden.

Rangi Jones schrieb:
> wie verhält sich ein normaler Analog-Servo wenn am Steuereingang
> dauerhaft High-Pegel anliegt?

Es dreht an den Anschlag.
Ein Servo benötigt eine steigende Flanke, um den Beginn eines Impulses 
zu erkennen (alles andere wäre ja auch ein Pegel).
Seine Elektronik vergleicht den extern anliegenden Impuls mit einem 
intern genereiert und regelt den internen auf die Länge des externen 
durch verdrehen des integrierten Poti nach.

Die 50ms sind nur eine Anhaltsgröße. Es funktioniert i.d.R. auch mit 
kürzeren Pausen (16bit bei 3,686MHz ergeben eine Periodendauer von ca. 
18ms, was bei meinen Schaltungen problemlos funktioniert.)
Allerdings sollte man die Pause nicht endlos dehnen.
#3129097
Lesenswert?

Klaus schrieb:
> Failsafe Automatik bringt die Servos in
> einen definierten Zustand.

Der Servo tut ohne Impulse mal gar nichts. Der Failsave ist im Empfänger 
integriert und der reagiert dann so wie er programmiert ist. Bei den 
Servos die ich verwende ist ein ständig anstehender 1 Pegel genauso egal 
wie ein ständiges 0-Signal.
Allerdings solltest Du beim einschalten der Impulsleitung darauf achten, 
dass das nicht in mitten eines Impulses geschieht. Sonst "sieht" der 
Servo einen kurzen Impuls und will in die entsprechende Position fahren. 
Im extremfall ist das dann genau die andere Endlage. Diese 
unkontrollierte Bewegung kann zu mechanischen Problemen führen.
Gast #3129115
Lesenswert?

Michael H. schrieb:
> Der Servo tut ohne Impulse mal gar nichts.

Aus dem Hitec Katalog:

> # 114003
> Damit können auch die zusätzlichen Parameter der 7XXX-Servo-Serie
> (Auflösung und Überlastungsschutzrate) eingestellt werden.

> Einstell-Parameter:
> - Endpunkte und Neustralstellung
> - Geschwindigkeit
> - Totzone
> - Laufrichtung
> - Failsafe EIN/AUS
> - Failsafe-Position (nur 7XXX)
>

deswegen habe ich geschrieben:
> Oder auch die teueren

MfG Klaus
#3129184
Lesenswert?

@STK500-Besitzer
ich glaube, du hast mich nicht richtig verstanden. Ich will einen 
Servo zu einer Zeit drehen lassen. Dann ist da Pause und nix passiert. 
Irgendwann soll ein anderer drehen. In der Pause soll keine PWM 
ausgegeben werden, an niemand. Das ist eine ganz simple Tätigkeit. Die 
Mechanik ist so ausgelegt, dass keine Kraft in den Endlagen den Servo 
zum rückdrehen bewegt.
Mit deiner Lösung müssen immer alle Takte erzeugt werden. D.h. ich muss 
immer alle Taktlängen berechnen und ausgeben, z.B. per Timer-ISR, oder 
so schnell shiften wie es geht und hoffen, dass der Servo den kurzen 
Puls nicht mitbekommt. Andere ISRs können die Timer-ISR verzögern, 
wodurch der Servo zuckelt.
Auf jedenfall ist die Software dafür anstrengender als die HW-PWM zu 
verwenden und nur den Ausgang umzuschalten.
Und ein weiteres Problem ist, wenn dann mehrere Shift-Register 
dranhängen, können sich die Zeiten der ISRs überschneiden und dann 
verschiebt sich eine Pulslänge.
...(Warum versuchen die Leute immer Probleme zu lösen, die garnicht 
gefragt sind, ich dachte mein Frage wäre eindeutig: "wie verhält sich 
der Servo wenn....")
Gast #3129220
Lesenswert?

Michael H. schrieb:
> Der Servo tut ohne Impulse mal gar nichts.

Schön wärs...

Wie schon oben jemand schrieb: Das ist nicht klar definiert.
Es gibt Servos, die laufen dann in eine der Endstellungen, und zwar bis 
ganz an den Anschlag. Wenn das die Mechanik des Modells nicht mag, gibts 
Kleinholz.

Mit dem Problem hat schon so mancher seine Flieger bei Umstellung auf 
eine aktuelle 2.4Ghz-Funke zerbröselt...

Oliver
#3129226
Lesenswert?

Rangi Jones schrieb

> ...(Warum versuchen die Leute immer Probleme zu lösen, die garnicht
> gefragt sind, ich dachte mein Frage wäre eindeutig: "wie verhält sich
> der Servo wenn....")


Das liegt sehr oft daran, dass diejenigen die in dem Thema bewandert 
sind, wissen, dass die vom TO gestellte Frage an sich schon unsinnig 
ist, weil der TO von falschen Voraussetzungen ausgeht.

D.h. anstatt auf die Frage eine zwar korrekte aber nicht hilfreiche 
Antwort zu geben, versucht man dann dem TO klar zu machen, dass sein 
ganzer Ausgangspunkt für die Frage schon unsinnig ist. Man versucht ihn 
in die richtige Bahn zu lotsen. Die Frage, ob das Wollfadenseil eines 
Bergsteigers rot oder grün sein sollte, ist solange nicht relevant, wie 
dem TO nicht klar ist, dass sich ein Wollfaden nicht als Sicherungsseil 
für einen Bergsteiger eignet.
#3129241
Lesenswert?

> Mit deiner Lösung müssen immer alle Takte erzeugt werden.
> D.h. ich muss immer alle Taktlängen berechnen und ausgeben,

ausgeben: ja
Berechnen: nein, ist ja bei jedem Servo sowieso immer die gleiche 
Pulslänge, wenn es sich nicht bewegen soll.

> z.B. per Timer-ISR,

Ja, zum Beispiel

> oder so schnell shiften wie es geht und hoffen,
> dass der Servo den kurzen Puls nicht mitbekommt.

Ich weiß nicht, welche Vorstellungen du davon hast, wie man mehrere 
Servopulse generiert.

> Andere ISRs können die Timer-ISR verzögern,
> wodurch der Servo zuckelt.

Im Prinzip ja. Allerdings sind die Verzögerungen, wenn man das 
ordentlich programmiert so gering, dass dein Servo da keine wirklich 
relevanten Umpositionierungen vornehmen wird.

> Auf jedenfall ist die Software dafür anstrengender

Ja, ne. Ist klar.

> als die HW-PWM zu
> verwenden und nur den Ausgang umzuschalten.

Und du sagst, das wäre einfacher als die paar Zeilen Code in einer ISR? 
Gestatte dass ich laut auflache.
#3129291
Lesenswert?

Also mit 0 gehts, sowas hab ich schon vor einiger Zeit programmiert. Nur 
mit +5V hatte ichs noch nicht getestet und hab jetzt auch die HW nicht 
hier ums mal schnell auszuprobieren.
Bei den damals verwendeten Servos handelte es sich um No-Name von Conrad 
für damals 10€. Da schalte ich das PWM-Signal ab, wenn die Endlage 
erreicht ist. Wenn der Servo dann wieder gebraucht wird, beginne ich mit 
der letzten verwendeten Pulsbreite und ändere die dann schrittweise, 
damit der Servo schön langsam dreht. Im Moment des Einschalten ruckt er 
nicht, läuft einfach sauber an. Und im ausgeschaltetem Zustand ruckelt 
auch keiner der Servos. Man kann sie schön mit Hand drehn.
@Klaus: wenn das so ist, werde ich wohl nicht drumherum kommen mir 
zuerst die Servos zu kaufen und dann auszuprobieren.
Btw: es geht nicht um Modellbau.
@KHB:
> Berechnen: nein, ist ja bei jedem Servo sowieso immer die gleiche
> Pulslänge, wenn es sich nicht bewegen soll.
Schon klar, aber der µC hat immer etwas zutun obwohl gar kein Grund 
vorliegt.
> Ich weiß nicht, welche Vorstellungen du davon hast, wie man mehrere
> Servopulse generiert.
Dann erklärs mal, bin schon gespannt.
> Im Prinzip ja. Allerdings sind die Verzögerungen, wenn man das
> ordentlich programmiert so gering, dass dein Servo da keine wirklich
> relevanten Umpositionierungen vornehmen wird.
Oh doch, das konnte ich schon nachweisen. In einem grossen Raum mit 100 
Servos in der Nacht, hörst du jedes kleine Zucken.

In meiner Version komme ich wenns sein muss ganz ohne ISR aus.
Und ein weiterer Grund ist mir auch noch eingefallen: wenn die Endwerte 
der PWM nicht stimmen, dann versucht der immer nachzuregeln, der Servo 
brummt. Zuerst wird der dann ein bischen warm, was den Arbeitspunkt 
verschiebt, was dann ggf. mehr nachregeln will, was zu noch mehr Wärme 
führt usw. Auf diese Weise sind damals zuvor einige Servos 
durchgebrannt. Genau deshalb habe ich die Variante mit der Abschaltung 
in eingebaut. Selbst wenn die Werte nicht simmen, geht trotzdem nicht 
gleich was kaputt.
#3129315
Lesenswert?

Rangi Jones schrieb:
> Also mit 0 gehts, sowas hab ich schon vor einiger Zeit programmiert.

Bei den Servos, die du hattest. BEi allen Servos? Keine Ahnung.
Irgendwie bist du völlig lernresistent. Nochmal zum Mitschreiben:
DAS VERHALTEN VON SERVOS OHNE REGELMÄSSIGE IMPULSE IST UNDEFINIERT!

Wo ist dein Problem.
Du hast n Variablen in denen die derzeitige Impulsdauer der n Servos 
steht.
Und eine Funktion die über den Timerinterrupt diese Werte in Impulse 
ausgibt.
Wenn sich was ändert musst du nur die Werte in den Variablen ändern, 
mehr nicht.
Dafür gibts bestimmt ein Haufen Beispielcode.
#3129326
Lesenswert?

@Udo Schmitt:
Ich habe garkein Problem, außer dass mir hier alle ihre Meinung 
aufzwingen wollen. Ich hab doch oben schon geschrieben, dass ich es mit 
den Servos ausprobieren werde. Punkt. Die Frage ist doch schon lange 
geklärt.
Und wenn ich abstürzen will, dann lass mich doch. Wie oben erwähnt, habe 
ich schon einige Erfahrungen sammeln dürfen, was andere für einen Mist 
verzapfen (siehe Servos durchgebrannt), das war fast genau so eine 
Lösung. Also erzähl mir nichts von keine Ahnung.
#3132186
Lesenswert?

hei,

Habe den Beitrag schon länger verfolgt.

Habe mir eine Steuerung aufgebaut für 16 Servo aufgebaut.

Multiplexe die Servos mittels Schieberegister.

Funktioniert wunderbar. Um den Strom zu reduzieren, möchte ich die 
Servos in den Schlafmodus schicken, keine Impulse senden und nach 
Möglichkeit die 5Volt ausschalten. (Hardware vorhanden)

In welchem Zeitabstand wäre es sinnvoll, bei den Servos die Impulse 
wieder zu aktivieren?

Nachtrag:
Habe den Impuls Pin mit 4,7kOhm gegen VCC, um beim einschalten das 
zappeln zu minimieren/verhindern.

alles Digital Servo

schönen Abend
#3132460
Lesenswert?

Wenn du den Servo abschaltest und er so, wie du beschreibst, sich in 
diesem Zustand frei drehen lässt (was möglich ist, er hat ja kein 
Vergleichssignal zur aktuellen Position):

wozu brauchst du dann einen Servo? Ein Servo wird normalerweise 
verwendet um eine bestimmte Position anzufahren und zu halten. Du willst 
die Position zwar anfahren, sie aber nicht halten.

Beschreibe doch mal, was du vorhast.
Ich kann mir gerade keine Anwendung vorstellen, bei der ich 100 Servos 
in meinem Schlafzimmer brauche.

Vielleicht reicht für dich ja der oben genannte Wollfaden als Sicherung 
aus, da du vielleicht nur 10cm den Hang hoch klettern willst. Aber 
solange du das nicht preisgibst wird dir jeder versuchen zu vermitteln, 
wie ein Servo angesteuert wird damit es richtig funktioniert. Aber genau 
das scheinst du ja nicht zu wollen.
#3132620
Lesenswert?

hei,

Dauerhaft abschalten nach erreichen der Position möchte ich nicht.
Sie sollen etwa 500ms (nur Beispiel) abgeschaltet werden. Danach soll 
für eine bestimmte Zeit wieder mit Spannung und Impulse versorgt werden.

Ich möchte damit erreichen, das der Stromverbrauch reduziert wird.

Die Steuerung mit 16 Servos funktioniert einwandfrei.
Diese bewegen kleine Flügeltore

schönen Tag
Gast #3133696
Lesenswert?

Christian B. schrieb:
> kleine Flügeltore?
> Kann man dafür nicht auch nur einen Mikro Motor nehmen? den muss man nur
> umpolen und fertig. Billiger als n Servo ist er auch.

ca. 999 bis 1000 von 1000 motorisch bewegten Schuppentoren auf 
Modellbahnanlagen werden von Servos animiert.
Da fragt man sich natürlich:
Warum wird da nicht ein Mikro-Motor einfach nur umgepolt und fertig ???

Viel Spaß beim Grübeln !!!

Es grüßt RainerK
Gast #3133873
Lesenswert?

Den ganzen Zauber kannst du dir sparen, wenn du nur 5 Euro mehr ausgibst 
und digitale Servos verwendest.

Aus eigenen Experimenten mit Arduino und Servos zum Zwecke der 
Ausrichtung eines Laserpointers habe ich erkannt, dass bei einem 
Digitalservo 5..10 Impulse entsprechend der gewünschten Position völlig 
ausreichen. Diese Position fährt der Servo an und hält sie auch, wenn 
danach für beliebig lange Zeit keine Impulse mehr kommen ...
Gast #3133940
Lesenswert?

Frank schrieb:
> Aus eigenen Experimenten mit Arduino und Servos zum Zwecke der
> Ausrichtung eines Laserpointers habe ich erkannt, dass bei einem
> Digitalservo 5..10 Impulse entsprechend der gewünschten Position völlig
> ausreichen. Diese Position fährt der Servo an und hält sie auch, wenn
> danach für beliebig lange Zeit keine Impulse mehr kommen ...

Du solltest dazu schreiben, welcher Servo das genau war. Ich bezweifle, 
daß alle digitalen Servos dieser Welt sich genau gleich verhalten.
#3133942
Lesenswert?

RainerK schrieb:
> Viel Spaß beim Grübeln !!!

spontan schrieb:
> Bei einem Motor brauchts eine Endlagenerkennung, ein kleines Getriebe,
>
> das Tor soll ja langsam bewegt werden.


Getriebe, ja. Evtl gehts aber auch mit ner passenden pwm und ggf. nem 
einstufigen Getriebe. Endlagenschalter brauchts nicht. Man kann den 
Motor einfach gegen einen Anschlag fahren lassen. Dann misst man die 
Zeit, welche er braucht um das Tor zu öffnen, addiert noch 5-10sekunden 
Sicherheitsreserve dazu und fertig.
Klar wird der Motor warm aber das ist doch vollkommen egal. Die tore 
werden ja, so es eine Modellbahnanlage ist, sowieso nicht dauernd auf 
und zu gefahren.

Als ich noch eine Modellbahnanlage hatte (vor ca 15-20 Jahren) ging das 
ganz ohne Elektrik. Ich hatte ein Gestänge verbaut welches die Lok 
selbst bewegt. Ist sie in den Schuppen gefahren hat sie die Türen 
zugeklappt. Beim Herausfahren hat sie sie wieder aufgedrückt. So sah man 
sofort, ob eine Lok im Schuppen ist oder nicht. Das hat super 
funktioniert.

Bei der Anwendung verstehe ich aber nicht, weshalb er sie nicht 
permanent mit Signalen versogren will. Es ist kaum zu erwarten, daß die 
Servos das flattern bekommen wenn der Puls immer gleich ist.
Gast #3133976
Lesenswert?

RainerK schrieb:
> ca. 999 bis 1000 von 1000 motorisch bewegten Schuppentoren auf
> Modellbahnanlagen werden von Servos animiert.

Goil. Ca. 30-50kg nur Servos.
Wie wäre es mit Memory-Draht?
Den steuert man durch Wärmeentwicklung (Stromfluß) in verschiedene 
Längen/Positionen.

Joachim Bublath hat den damals in der KnoffHoff-Show wie wild 
vorgeführt.
#3134905
Lesenswert?

Rangi Jones schrieb:
> Mit deiner Lösung müssen immer alle Takte erzeugt werden. D.h. ich muss
> immer alle Taktlängen berechnen und ausgeben, z.B. per Timer-ISR, oder
> so schnell shiften wie es geht und hoffen, dass der Servo den kurzen
> Puls nicht mitbekommt. Andere ISRs können die Timer-ISR verzögern,
> wodurch der Servo zuckelt.

Man kann auch die Hardware-PWM mißbrauchen, um das ganze auch bei 
Verzögerungen der ISRs immer noch taktzyklengenau hinzubekommen, da die 
eigentlichen Pulszeiten immer direkt im Timer ohne Software generiert 
werden. Hab ich auch schon mit einem 4017 und 9 Servos gemacht, und da 
hat nix gezuckelt. Mit einem zweiten PWM-Ausgang und noch einem 4017 
gehen nach dem selben Prinzip auch 18 Servos.
Gast #3134954
Lesenswert?

Kuli schrieb:
>> Aus eigenen Experimenten mit Arduino und Servos zum Zwecke der
>> Ausrichtung eines Laserpointers habe ich erkannt, dass bei einem
>> Digitalservo 5..10 Impulse entsprechend der gewünschten Position völlig
>> ausreichen. Diese Position fährt der Servo an und hält sie auch, wenn
>> danach für beliebig lange Zeit keine Impulse mehr kommen ...
>
> Du solltest dazu schreiben, welcher Servo das genau war. Ich bezweifle,
> daß alle digitalen Servos dieser Welt sich genau gleich verhalten.

Es handelt sich um digitale Microservos (ca. 2x3x1 cm) der Hausmarke 
"Modellcraft" von Conrad. Kosten ca. 20 Euro das Stück ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren