Hallo,
bei der Ansteuerung der Servos via MLL wird der Servoimpuls nach erreichen der Sollposition abgeschaltet.
Ich bräuchte jedoch die Haltekraft der Servos.
Gibt es eine Möglichkeit den Servoimpuls bei erreichen der Position nicht abzuschalten ?
Ich hebe im Wiki nicht dazu gefunden.
Vielleicht gibt es eine Idee dazu.
Vielen Dank
Walter
Servoansteuerung
-
Eckhart Verified
- Novize des Beleuchters
- Beiträge: 248
- Registriert: Di 15. Apr 2025, 17:09
- Wohnort: bei Berlin
- Hat sich bedankt: 226 mal
- Wurde bedankt: 244 mal
Re: Servoansteuerung
Hallo Walter!
Die Standard 510 Servo Lösung kann das leider nicht, weil im 510er Code fest verankert ist, dass nach 25 Wiederholungen des selben Stellbefehls (das ist, bei 20ms Refesh, eine halbe Sekunde) das Servo keine weiteren Impulse mehr erhält. Das ist imho auch nicht konfigurierbar, oder abschaltbar. Es gäbe aber ein Workaround und einen alternativen Weg.
1. Das Workaround
Wenn der selbe Stellbefehl zu etwas ungewolltem führt, dann sendet man eben, an den Endpositionen, nicht immer wieder genau den selben Stellbefehl, sondern eine kleine Varianz! Dazu brauchst du den Pattern-Configurator und ein Multiphasen-Pattern mit GoTo Befehlen. In den Endlagen lässt du dann den Servo ganz leicht schwingen. Achtung: Da der 510 Servo leider sehr ungenau die Stellungen erkennt (Toleranz ca. 3-4 Werte) reicht es nicht aus, nur einen oder zwei Werte schwingen zu lassen; der 510er Code würde es für den selben Stellbefehl halten!
Nachteil dieser Lösung: Der Servo bewegt sich an den Endlagen ein klein wenig und wird auch "knurren".
2. Der alternative Weg
Du nutzt statt des Excel Programm-Generators, den Python PG und baust komplett um auf "Direct-Servo". Die Lösung kann, was du willst; Im "Direct-Mode" (NICHT "Legacy-Mode" für die Excel Welt!) erzeugt der Tiny so lange Servo-Impulse, wie er die entsprechenden codierten Licht-Werte von der Hauptplatine bekommt. Im "Direct-Mode" gibt es kein Eigenleben des Tiny; er ist sozusagen an der "kurzen Leine".
Nachteil: Der Aufwand des kompletten Umgewöhnens. (und es ist mehr Gebastel, weil es keine fertige Platine gibt)
Gruß, Eckhart
Die Standard 510 Servo Lösung kann das leider nicht, weil im 510er Code fest verankert ist, dass nach 25 Wiederholungen des selben Stellbefehls (das ist, bei 20ms Refesh, eine halbe Sekunde) das Servo keine weiteren Impulse mehr erhält. Das ist imho auch nicht konfigurierbar, oder abschaltbar. Es gäbe aber ein Workaround und einen alternativen Weg.
1. Das Workaround
Wenn der selbe Stellbefehl zu etwas ungewolltem führt, dann sendet man eben, an den Endpositionen, nicht immer wieder genau den selben Stellbefehl, sondern eine kleine Varianz! Dazu brauchst du den Pattern-Configurator und ein Multiphasen-Pattern mit GoTo Befehlen. In den Endlagen lässt du dann den Servo ganz leicht schwingen. Achtung: Da der 510 Servo leider sehr ungenau die Stellungen erkennt (Toleranz ca. 3-4 Werte) reicht es nicht aus, nur einen oder zwei Werte schwingen zu lassen; der 510er Code würde es für den selben Stellbefehl halten!
Nachteil dieser Lösung: Der Servo bewegt sich an den Endlagen ein klein wenig und wird auch "knurren".
2. Der alternative Weg
Du nutzt statt des Excel Programm-Generators, den Python PG und baust komplett um auf "Direct-Servo". Die Lösung kann, was du willst; Im "Direct-Mode" (NICHT "Legacy-Mode" für die Excel Welt!) erzeugt der Tiny so lange Servo-Impulse, wie er die entsprechenden codierten Licht-Werte von der Hauptplatine bekommt. Im "Direct-Mode" gibt es kein Eigenleben des Tiny; er ist sozusagen an der "kurzen Leine".
Nachteil: Der Aufwand des kompletten Umgewöhnens. (und es ist mehr Gebastel, weil es keine fertige Platine gibt)
Gruß, Eckhart
Re: Servoansteuerung
Hallo Eckhart,
Danke für die schnelle Antwort,
ich habe auch schon den "Direct-Servo" benutzt, macht aber das gleiche, im "Direct-Servo" funktionieren aber alle drei Servos.
Was muss ich genau machen, damit es funktioniert.
Über eine kurze Erklärung der Einstellungen würde ich mich freuen.
LG
Walter
Danke für die schnelle Antwort,
ich habe auch schon den "Direct-Servo" benutzt, macht aber das gleiche, im "Direct-Servo" funktionieren aber alle drei Servos.
Was muss ich genau machen, damit es funktioniert.
Über eine kurze Erklärung der Einstellungen würde ich mich freuen.
LG
Walter
-
Eckhart Verified
- Novize des Beleuchters
- Beiträge: 248
- Registriert: Di 15. Apr 2025, 17:09
- Wohnort: bei Berlin
- Hat sich bedankt: 226 mal
- Wurde bedankt: 244 mal
Re: Servoansteuerung
Hallo Walter!
Ich glaube, ich brauche noch mehr Informationen!
Du hast also, mit Harolds Python Programm-Generator, mit dem Effekt "Servo-Animation", eine Kurve für den Direkt-Servo im Direkt-Mode modelliert, oder? Dort müsstest du unter "AUS-Schalt Parameter" den Punkt "Dauer AUS (msec)" auf 0 stellen. Evtl. brauchen wir dazu noch eine Beratung von Harold @hlinke , wie die Paramter in der Servo-Animation genau zu setzen sind, damit die Daten von der Haupplatine angesteuert bleiben.
Gruß, Eckhart
PS: Was meinst du mit "funktionieren aber alle drei Servos"? Das tun sie bei der 510 doch auch, oder?
Ich glaube, ich brauche noch mehr Informationen!
Du hast also, mit Harolds Python Programm-Generator, mit dem Effekt "Servo-Animation", eine Kurve für den Direkt-Servo im Direkt-Mode modelliert, oder? Dort müsstest du unter "AUS-Schalt Parameter" den Punkt "Dauer AUS (msec)" auf 0 stellen. Evtl. brauchen wir dazu noch eine Beratung von Harold @hlinke , wie die Paramter in der Servo-Animation genau zu setzen sind, damit die Daten von der Haupplatine angesteuert bleiben.
Gruß, Eckhart
PS: Was meinst du mit "funktionieren aber alle drei Servos"? Das tun sie bei der 510 doch auch, oder?
Re: Servoansteuerung
Hallo Eckhart,
ich habe auf einen Breadboard praktisch die 511 Platine aufgebaut den TINY85 mit den Prog_generator/LED-Farbtest/Servo Test2 programmiert, dann die Endlagen und die Geschwindigkeit eingestellt, damit kann ich dann im Programmgenerator mit Servo 3 Positionen links/mitte/rechts anfahren, bei bedarf kann ich auch die Servolaufrichtung ändern. Das funktioniert für alle drei Servos die am TINY85 hängen, nur leider werden auch in dieser Konfiguration die Servoimpulse abgeschalten, ist damit praktisch gleich wie mit der 510 Platine.
Mit den Python Programm-Generator und den Effekt "Servo-Animation" habe ich es noch nicht versucht, da muss ich mich mal einlesen.
LG
Walter
ich habe auf einen Breadboard praktisch die 511 Platine aufgebaut den TINY85 mit den Prog_generator/LED-Farbtest/Servo Test2 programmiert, dann die Endlagen und die Geschwindigkeit eingestellt, damit kann ich dann im Programmgenerator mit Servo 3 Positionen links/mitte/rechts anfahren, bei bedarf kann ich auch die Servolaufrichtung ändern. Das funktioniert für alle drei Servos die am TINY85 hängen, nur leider werden auch in dieser Konfiguration die Servoimpulse abgeschalten, ist damit praktisch gleich wie mit der 510 Platine.
Mit den Python Programm-Generator und den Effekt "Servo-Animation" habe ich es noch nicht versucht, da muss ich mich mal einlesen.
LG
Walter
-
Eckhart Verified
- Novize des Beleuchters
- Beiträge: 248
- Registriert: Di 15. Apr 2025, 17:09
- Wohnort: bei Berlin
- Hat sich bedankt: 226 mal
- Wurde bedankt: 244 mal
Re: Servoansteuerung
Hallo Walter!
Wenn es wirklich gleich ("gleich" sind z.B. die Zahlen 5 und 5!) ist, gibt es ein weiteres Problem und mein Lösungsansatz funktioniert leider nicht!
Was ich darüber zu wissen meine:
1. Der 510er Servo schaltet nach 25 * 20ms = 0,5 Sek die Servoimpulse ab, wenn sich der Stellwert nicht mehr verändert.
2. Die Excel Servo-Macros senden, wenn man nichts anderes einstellt, 10 Sekunden lang den Stellwert an den Tiny (egal, ob 510 oder 511)
3. Der 511 sollte, weil er nicht selbstständig abschaltet, die 10 Sekunden der Servo-Macros den Servo mit Impulsen ansteuern!
Jetzt kommt die Crux: Ist das so, oder ist das nicht so? (das wäre das 20-fache und das würde ich niemals mit dem Wort "gleich" belegen; insbesondere, weil man daran ja merken würde, dass man eine Stellschraube in der Hand hat!)
Hast du mal, bei der 511er, die Zeit für das Stellwert-senden im Servo-Macro auf 65 Sek. (mehr geht leider nicht) verlängert und hattest dann 65 Sekunden lang einen angesteuerten Servo?
Wenn ja, dann hast du auch für die Excel Lösung einen Weg!
Du besorgst dir (von Jürgen oder Hardi) die Quellen für die Pattern der Servo-Macros; die *.MLL_pcf Dateien. (leider in den Beispielen nicht enthalten; warum eigentlich nicht?)
Dann nimmst du in den GoTo States der Servo-Positionen die Rückläufe zum State 0 weg. Einfach auf "E", bzw. "G63" setzen. Dadurch werden die States endlos mit ihren Stellwerten ausgeführt. (bis ein anderer GoTo, via DCC oder Button, reinkommt)
Alternativ kannst du den Servo3 Macro in MobaLedLib.h
Orginal:
#define Servo3(LED, InCh, Single_Cx, Servo1, Servo2, Servo3, ServoT) \
InCh_to_TmpVar1(InCh, 3) \
PatternT1(LED,_Cx2StCh(Single_Cx)+28,SI_LocalVar,1,0,255,0,0,ServoT,0,Servo1,Servo2,Servo3 ,127,129,129,129)
auf folgendes ändern:
#define Servo3(LED, InCh, Single_Cx, Servo1, Servo2, Servo3, ServoT) \
InCh_to_TmpVar1(InCh, 3) \
PatternT1(LED,_Cx2StCh(Single_Cx)+28,SI_LocalVar,1,0,255,0,0,ServoT,0,Servo1,Servo2,Servo3 ,127,191,191,191)
ACHTUNG!!! Das gilt dann aber für ALLE Servo3 deiner Konfiguration! (und es ist nach einem MLL Update wieder weg)
Gruß, Eckhart
PS: Ohne die *.MLL_pcf Quelle zu haben; wenn ich das Binary, das Excel oder Python auf der Hauptplatine erzeugen, mit meinem eigenen Tool angucke, sehe ich folgendes beim Servo3 Macro. Und wie im zweiten Bild sollte es aussehen, damit man in dem State bleibt. (sieht im Excel etwas anders aus, aber das Prinzip ist das selbe)
Wirklich praktisch (präzise?) gleich? ...oder nur "ähnlich"?WalterHz hat geschrieben: Di 25. Nov 2025, 21:34...nur leider werden auch in dieser Konfiguration die Servoimpulse abgeschalten, ist damit praktisch gleich wie mit der 510 Platine.
Wenn es wirklich gleich ("gleich" sind z.B. die Zahlen 5 und 5!) ist, gibt es ein weiteres Problem und mein Lösungsansatz funktioniert leider nicht!
Was ich darüber zu wissen meine:
1. Der 510er Servo schaltet nach 25 * 20ms = 0,5 Sek die Servoimpulse ab, wenn sich der Stellwert nicht mehr verändert.
2. Die Excel Servo-Macros senden, wenn man nichts anderes einstellt, 10 Sekunden lang den Stellwert an den Tiny (egal, ob 510 oder 511)
3. Der 511 sollte, weil er nicht selbstständig abschaltet, die 10 Sekunden der Servo-Macros den Servo mit Impulsen ansteuern!
Jetzt kommt die Crux: Ist das so, oder ist das nicht so? (das wäre das 20-fache und das würde ich niemals mit dem Wort "gleich" belegen; insbesondere, weil man daran ja merken würde, dass man eine Stellschraube in der Hand hat!)
Hast du mal, bei der 511er, die Zeit für das Stellwert-senden im Servo-Macro auf 65 Sek. (mehr geht leider nicht) verlängert und hattest dann 65 Sekunden lang einen angesteuerten Servo?
Wenn ja, dann hast du auch für die Excel Lösung einen Weg!
Du besorgst dir (von Jürgen oder Hardi) die Quellen für die Pattern der Servo-Macros; die *.MLL_pcf Dateien. (leider in den Beispielen nicht enthalten; warum eigentlich nicht?)
Dann nimmst du in den GoTo States der Servo-Positionen die Rückläufe zum State 0 weg. Einfach auf "E", bzw. "G63" setzen. Dadurch werden die States endlos mit ihren Stellwerten ausgeführt. (bis ein anderer GoTo, via DCC oder Button, reinkommt)
Alternativ kannst du den Servo3 Macro in MobaLedLib.h
Orginal:
#define Servo3(LED, InCh, Single_Cx, Servo1, Servo2, Servo3, ServoT) \
InCh_to_TmpVar1(InCh, 3) \
PatternT1(LED,_Cx2StCh(Single_Cx)+28,SI_LocalVar,1,0,255,0,0,ServoT,0,Servo1,Servo2,Servo3 ,127,129,129,129)
auf folgendes ändern:
#define Servo3(LED, InCh, Single_Cx, Servo1, Servo2, Servo3, ServoT) \
InCh_to_TmpVar1(InCh, 3) \
PatternT1(LED,_Cx2StCh(Single_Cx)+28,SI_LocalVar,1,0,255,0,0,ServoT,0,Servo1,Servo2,Servo3 ,127,191,191,191)
ACHTUNG!!! Das gilt dann aber für ALLE Servo3 deiner Konfiguration! (und es ist nach einem MLL Update wieder weg)
Gruß, Eckhart
PS: Ohne die *.MLL_pcf Quelle zu haben; wenn ich das Binary, das Excel oder Python auf der Hauptplatine erzeugen, mit meinem eigenen Tool angucke, sehe ich folgendes beim Servo3 Macro. Und wie im zweiten Bild sollte es aussehen, damit man in dem State bleibt. (sieht im Excel etwas anders aus, aber das Prinzip ist das selbe)
Re: Servoansteuerung
Hallo Eckhart,
mit "gleich" meinte ich das nach einiger Zeit die Servoimpulse abgeschaltet werden.
Die von Dir geschrieben Punkte 1 - 3 stimmen und verhalten sich bei mir genau so.
im Prinzip reicht mir das Macro Servo 2, nur das halt die Position gehalten wird, wie bei meinen Weichenservos, die halten auch die Position bis zum nächsten umschalten.
Die von Dir geschriebenen Sachen werde ich mir in nächster Zeit ansehen.
Vielen Dank für die Erklärungen, wenn es Fragen gibt, melde ich mich.
LG
Walter
mit "gleich" meinte ich das nach einiger Zeit die Servoimpulse abgeschaltet werden.
Die von Dir geschrieben Punkte 1 - 3 stimmen und verhalten sich bei mir genau so.
Die 65 Sekunden sind zu wenig, sollte bis zum nächsten Umschalten (Minuten, Stunden) so bleiben.Eckhart hat geschrieben: Mi 26. Nov 2025, 12:15Hast du mal, bei der 511er, die Zeit für das Stellwert-senden im Servo-Macro auf 65 Sek. (mehr geht leider nicht) verlängert und hattest dann 65 Sekunden lang einen angesteuerten Servo?
im Prinzip reicht mir das Macro Servo 2, nur das halt die Position gehalten wird, wie bei meinen Weichenservos, die halten auch die Position bis zum nächsten umschalten.
Die von Dir geschriebenen Sachen werde ich mir in nächster Zeit ansehen.
Vielen Dank für die Erklärungen, wenn es Fragen gibt, melde ich mich.
LG
Walter
