Probleme mit SG90 Servo Zuverlässigkeit

#1 von Jotschi , 07.10.2022 10:41

Hallo!

Ich bin in letzter Zeit relativ frustriert über meine Weichensteuerung. Ich habe einige Weichen, bei denen die Steuerung manchmal nicht funktioniert.

Ich steuere die Weichen mit SG90 Mirco Servos, die mittels eines Stelldrahts von unten die Weichen bewegen. Das Steuersignal kommt von einem Arduino, die 5V Stromversorgung von einer Versorgungsleitung.
Ich habe zur Zeit ~10 Weichenmotoren eingebaut, wovon 2 manchmal einfach nicht schalten. Der Arduino sendet das Schaltsignal korrekt, aber der Motor steckt irgendwie und schaltet erst bei leichter Berührung mit dem Finger. Danach geht es dann wieder längere Zeit problemlos, das Problem besteht meistens nur beim Ersten mal Betätigen nach Inaktivität.

Was ich schon versucht habe:
- den Servo austauschen gegen einen anderen. Das hat ca. eine Woche lang funktioniert - jetzt wieder das selbe Problem.
- die Volt am Servo bei der Versorgungsspannung messen. Bei einem waren es dort tatsächlich nur 4,79V statt der geplanten 5V. Das habe ich aber jetzt behoben und das Problem besteht weiterhin.

Außerdem habe ich einige Servos die zumindest in einer der beiden Weichenstellungen (wieder nur) manchmal hörbare Zitter Geräusche machen. Das ist zwar ein bisschen ärgerlich, schränkt aber die Funktion bisher nicht ein.

Ich bin ein bisschen ratlos was ich jetzt noch versuchen kann.
- Sind die Servos die ich gekauft habe einfach schlecht? Gibt es eine Empfehlung welche Servos zuverlässig funktionieren?
- Kann es an der länge der Steuerleitung liegen? Es sind die beiden Motoren die am weitesten von den Arduinos weg sind die Probleme machen. Bei dem einen ist das eine Kabellänge von knapp 1m, bei dem anderen sind es wohl 4-5m weil ich das Kabel über eine Tür legen musste. Kann ich mir aber irgendwie nicht ganz vorstellen, warum sollte sonst eine leichte Berührung das Problem beheben?
- Sind diese Servos häufiger mechanisch defekt? Soll ich einfach solange weiter Servo tauschen bis ich einen zuverlässigen erwischt habe? Immerhin schalten die anderen 8 Servos bisher ausnahmslos zuverlässig.

Über Ideen zur Problem Behebung, Erfahrungen mit ähnlichen Problemen oder Tipps würd ich mich freuen. :)

lg,
Jotschi


Meine zweite Anlage (im Bau)


 
Jotschi
Regionalbahn (RB)
Beiträge: 29
Registriert am: 19.08.2022
Homepage: Link
Ort: Wien
Gleise Tillig Elite
Spurweite H0
Steuerung Eigenbau
Stromart DC, Digital


RE: Probleme mit SG90 Servo Zuverlässigkeit

#2 von alexus , 07.10.2022 11:12

Hallo Jotschi

Das SG90 ist jetzt nicht gerade ein Hochleistungsservo, dem Preis nach eher aus der einfachsten Liga, mechanisch wie elektrisch.
Im RC Bereich (Schifflesfahrer) werden die eigentlich nur für untergeordnete Aufgaben verwendet, da sie eher als unzuverlässig gelten, speziell das integrierte Poti.
Was helfen kann bei sehr langen Zuleitungen, etwas kräftigere Servoleitung, verdrillt.

Eine Empfehlung kann ich dir leider nicht geben, da es die von mir verwendeten Servos alle schon lange nicht mehr gibt. Aber Vorsicht, das SG90 gibt es unter vielen Namen und verschiedenen Farben.


Alexander aus dem südlichsten Allgäu
Digital mit altem Blechgleis auf dem Boden
TamsMC, Booster B4, alte Digitalkisten
Bekennender ATF-Öl Anwender


Jotschi hat sich bedankt!
alexus  
alexus
Metropolitan (MET)
Beiträge: 3.515
Registriert am: 13.12.2005
Ort: Ganz im Süden Deutschlands
Gleise M-Gleis
Spurweite H0
Steuerung Tams MC, B4, alte Mä-Digitalkomponenten
Stromart Digital


RE: Probleme mit SG90 Servo Zuverlässigkeit

#3 von Domapi , 07.10.2022 12:00

4 - 5 m Kabellänge ist schon anspruchsvoll.

Was passiert, wenn du so einen „defekten“ Servo an einem kurzen Kabel betreibst?
Damit lässt sich testen, ob es am Kabel liegt.

Falls nicht, kann das Poti im Servo defekt sein.

Ich habe mit ESU-Servos und Hitec HS53-Servos gute Erfahrungen gemacht.
Allerdings laufen auch einige SG90 Derivate und noch ein paar andere Typen recht erfolgreich.

Vielleicht liegt es auch an Arduino-Sketch? Oder am Schaltplan?

Das Zucken/Zittern lässt sich teilweise eliminieren, wenn man das Servosignal nach Erreichen der Position ausschaltet.
Oder den Servo komplett stromlos macht. Voraussetzung ist, dass der Servo dann weiterhin sein Position hält und nicht zu viel Gegendruck anliegt.


Viele Grüße
Martin

- Mein Trennungsbahnhof: viewtopic.php?f=64&t=152275
- Drehscheibensteuerung auf Arduinobasis "LocoTurn": https://wiki.mobaledlib.de/anleitungen/b...v10/150_inhalte


Jotschi hat sich bedankt!
 
Domapi
CityNightLine (CNL)
Beiträge: 1.635
Registriert am: 22.09.2015
Ort: Nämberch
Gleise Ohne Pickel
Spurweite H0
Steuerung Mit Hirn und Verstand
Stromart DC, Digital

zuletzt bearbeitet 07.10.2022 | Top

RE: Probleme mit SG90 Servo Zuverlässigkeit

#4 von Jotschi , 07.10.2022 12:11

Danke!

Es ist leider schwer zu Testen, weil die Ausfälle nur sporadisch sind. Wenn ich den "defekten" Servo direkt teste, funktioniert er eh wieder. Aber wenn ich ihn in Originalposition nur einen kleinen Schubs geben, funktioniert er danach auch wie erwartet.

Als Arduino verwende ich einen Mega jeweils für 4-10 Weichen und die Servo.h libary. Grundsätzlich funktioniert das auch - nur eben bei 2 nicht immer.

Zitat von Domapi im Beitrag #3
Das Zucken/Zittern lässt sich teilweise eliminieren, wenn man das Servosignal nach Erreichen der Position ausschaltet.
Oder den Servo komplett stromlos macht. Voraussetzung ist, dass der Servo dann weiterhin sein Position hält und nicht zu viel Gegendruck anliegt.

Das werd ich auf jedenfall mal probieren. Der Druck sollte kein Problem sein, der Servo hält das locker im Stromlosen zustand.


Meine zweite Anlage (im Bau)


 
Jotschi
Regionalbahn (RB)
Beiträge: 29
Registriert am: 19.08.2022
Homepage: Link
Ort: Wien
Gleise Tillig Elite
Spurweite H0
Steuerung Eigenbau
Stromart DC, Digital


RE: Probleme mit SG90 Servo Zuverlässigkeit

#5 von Stahlblauberlin , 07.10.2022 12:39

SG90-Servos die ab ~2,- pro Stück erhältlich sind haben auch eine entsprechende Qualität und auch Qualitätsstreuungen. Die allermeisten funktionieren, aber bei einem 10er-Pack für 19,95 kann auch mal ein totes dabei sein. In den meisten Fällen waren es bei meinen diletantische Lötstellen: Servokabel an Platine oder auch vom Poti. Ich hab die Dinger in meine LGB-Weichenantrieben verbaut, da tun sie selbst im Winter Dienst. Bei Ausfall werden sie aber gegen die kaum teureren mit Metallgetriebe getauscht, outdoor macht das Sinn.
Was die Kabellängen angeht: vier-fünf m sind ein Problem. Da haben die Ausgänge der Arduinos nicht genug Wumms für eine ordentliches Signal, erst recht nicht wenn da noch Störungen von anderen Leitungen reinhauen. Entweder Treiber dazwischen oder die Decoder dezentral verteilen. Letzteres ist einfacher und vor allem zuverlässiger. Bei der LGB sowieso, da steckt der Decoder immer gleich im Weichenantrieb: Paco's ServoPoint. Da gibt es nicht mal Kabel...
Eine Betriebsspannung von 4,79 V hingegen ist überhaupt kein Problem, bis runter auf etwa 4V arbeiten diese Servos auf jeden Fall.
Man kann natürlich deutlich bessere Markenservos kaufen, aber das geht dann schnell mächtig ins Geld, das Hitec kostet das sechsfache, vom ESU-Servo ganz zu schweigen.


Stahlblauberlin  
Stahlblauberlin
Metropolitan (MET)
Beiträge: 3.347
Registriert am: 07.03.2022
Ort: Berlin
Spurweite H0, Z, G
Steuerung Roco digital, Z21-Nachbau
Stromart DC, Digital, Analog


RE: Probleme mit SG90 Servo Zuverlässigkeit

#6 von Klaus3 , 07.10.2022 13:54

Hi,

ich habe hier auch eine ganze Serie von Servos, die erst ab 5.2 Volt vernünftig funktionieren. Da die Biester auch gerne Mal 1 Ampere ziehen, macht sich jeder Zentimeter Zuleitung bemerkbar, da hier einiges an Spannung abfällt. Gemessen hab ich mit einem Scope direkt am Servo. Im statischen Zustand kann man die Messung vergessen. Auch ein kleiner Kondensator am Servo hilft ein wenig.

Die China-Servos haben oft ein ähnliches Etikett, aber völlig verschiedenes Innenleben. Ich würde also vermuten, es gibt nicht den S90 Servo.

Daher mein Tipp: nur Servos aus einer Lieferung an einem Controller und die Spannungsversorgung für jeden Controller einstellbar. Bei meinem Controller ist die Betriebsspannung für die Servos einstellbar, die Spannung für den Prozessor dabei davon unabhängig.

Gruß
Klaus


Domapi hat sich bedankt!
Klaus3  
Klaus3
InterCity (IC)
Beiträge: 556
Registriert am: 06.11.2015
Spurweite N
Stromart DC


RE: Probleme mit SG90 Servo Zuverlässigkeit

#7 von Stahlblauberlin , 07.10.2022 16:11

@Klaus3

Zitat von Klaus3 im Beitrag #6
ch habe hier auch eine ganze Serie von Servos, die erst ab 5.2 Volt vernünftig funktionieren. Da die Biester auch gerne Mal 1 Ampere ziehen, macht sich jeder Zentimeter Zuleitung bemerkbar, da hier einiges an Spannung abfällt. Gemessen hab ich mit einem Scope direkt am Servo. Im statischen Zustand kann man die Messung vergessen. Auch ein kleiner Kondensator am Servo hilft ein wenig.


Über was für Servos bist du denn da gestolpert? Standard-Modellbauservos sollten ab 4,5V funktionieren, die werden immer noch auf Empfängerakkus mit 4,8V Nennspannung (4xNiCd oder Nimh) ausgelegt.. Und 1A ist ziemlich heftig, das gibt's nur bei Digital-Servos in Standardgrösse (~40x20x40), nicht bei den SG90-Zwergen. Bei den kleinen ist bei 100 mA nach kurzer Zeit mit Rauch zu rechnen.
1A und erst ab 5,2V wären Daten für neuere HV-Servos die direkt aus 2S-Lipos versorgt werden können, die haben dann auch meist ein (Teil-)Metallgehäuse um die Abwärme loszuwerden und so viel Power das sie die komplette Weiche samt Schotterbett bewegen.. Sowas hab ich in meinem Brushless-Buggy auf der Lenkung, mit 180 Ncm.. (= ~18,5Kg/cm...).


Stahlblauberlin  
Stahlblauberlin
Metropolitan (MET)
Beiträge: 3.347
Registriert am: 07.03.2022
Ort: Berlin
Spurweite H0, Z, G
Steuerung Roco digital, Z21-Nachbau
Stromart DC, Digital, Analog


RE: Probleme mit SG90 Servo Zuverlässigkeit

#8 von Fraenki , 07.10.2022 17:40

Hallo

Zitat
Aber Vorsicht, das SG90 gibt es unter vielen Namen und verschiedenen Farben.


Das stimmt,scheinen aber inhaltlich anders zu sein.

Ich habe die Servosteuerung S8DCC/MOT von Siegmundt Dankwardt.
Mit den SG90 von Miuzei kommt die Steuerung zurecht.Die gleichen von einer anderen Firma,keine Chance.Die schalten wenn sie Lust haben.


Gruß
Frank
🇩🇪

Ich habe die Erlaubnis von Hr.Vorsteher,Hr.Dahlhaus,Hr.Bügel,Hr.Peplies,Hr.Kleinschmidt,Hr.Pillmann,Bilder von bahnen-wuppertal und vauhundert.de im Forum zu benutzen
Thema:
Von Schwelm-Loh nach Wuppertal-Wichlinghausen

Der Umzug der Anlage aus dem Keller in die Wohnung ist in vollem Gange.


 
Fraenki
EuroCity (EC)
Beiträge: 1.202
Registriert am: 21.09.2007
Homepage: Link
Gleise Roco Line
Spurweite H0
Steuerung Roco z21,TC 10
Stromart Digital


RE: Probleme mit SG90 Servo Zuverlässigkeit

#9 von hans-gander , 08.10.2022 18:17

[quote=Fraenki|
Ich habe die Servosteuerung S8DCC/MOT von Siegmundt Dankwardt.
Mit den SG90 von Miuzei kommt die Steuerung zurecht.Die gleichen von einer anderen Firma,keine Chance.Die schalten wenn sie Lust haben.
[/quote]

Ich habe die gleiche Kombination.
Dabei habe ich festgestellt, dass von meinen 100 bestellten Servos ca. 10 Stück schon von Anfang an ihren Dienst verweigerten. Auch im Betrieb habe ich gelegentlich Ausfälle gehabt, die auf dem Ausfall des Istwert Potis zurückzuführem war. Gott sei Dank kam es wegen der Herzstückpolarisation zu keinen nennenswerten Unfälle.
Zur Zeit bin ich wohl in dem stabilen Zustand der Badewanne Ausfallkurve.
Beste Grüße
Hans


 
hans-gander
CityNightLine (CNL)
Beiträge: 1.731
Registriert am: 16.10.2007
Gleise Tillig Elite
Spurweite H0, H0m
Steuerung Lenz mit Railware
Stromart DC, Digital


RE: Probleme mit SG90 Servo Zuverlässigkeit

#10 von Fraenki , 08.10.2022 18:53

Hallo Hans

Zitat von hans-gander im Beitrag #9
Ich habe die gleiche Kombination.
Dabei habe ich festgestellt, dass von meinen 100 bestellten Servos ca. 10 Stück schon von Anfang an ihren Dienst verweigerten


Ich hattte mal 20 Stück SG90 bestellt,nicht von Miuzei,von denen 3 St. auch keinen Mucks sagten.Habe den Krempel komplett zurück geschickt und mir die Miuzei geholt.Bisher keine defekte.
OK,meine Anlage ruht immoment bis sie 2 Etagen höher zieht.Dann wird sich zeigen wie haltbar sie im Betrieb sind.


Gruß
Frank
🇩🇪

Ich habe die Erlaubnis von Hr.Vorsteher,Hr.Dahlhaus,Hr.Bügel,Hr.Peplies,Hr.Kleinschmidt,Hr.Pillmann,Bilder von bahnen-wuppertal und vauhundert.de im Forum zu benutzen
Thema:
Von Schwelm-Loh nach Wuppertal-Wichlinghausen

Der Umzug der Anlage aus dem Keller in die Wohnung ist in vollem Gange.


Jotschi hat sich bedankt!
 
Fraenki
EuroCity (EC)
Beiträge: 1.202
Registriert am: 21.09.2007
Homepage: Link
Gleise Roco Line
Spurweite H0
Steuerung Roco z21,TC 10
Stromart Digital


RE: Probleme mit SG90 Servo Zuverlässigkeit

#11 von Kurt Harders , 09.10.2022 15:58

Hallo Jotschi,
bist Du sicher, dass die Servos halbwegs symmetrisch um die Mittellage mit 1,5ms Impuls eingebaut sind und auch angesteuert werden. Die hohe Stromaufnahme und das Servo-Zittern weckt den Verdacht, dass das Servo an den Anschlag läuft. Bei richtig billigen Servos kann auch das Poti mal verdreht eingebaut sein. Dann ist die Mittellage nicht mehr bei 1,5ms.
Ausserdem sind 4-5m Servosignal sehr störanfällig. Baue die Steuerung in der Nähe des Servos oder eines "Weichenclusters" ein. Nicht umsonst habe ich bei meinen Flüsterantrieben nur ein- (WA1 bis WA3) oder zweikanalige (WA4 WA5) Elektroniken gebaut. Obwohl damals viele Kunden selbst die Servos beschafft haben, hatten wir selbst bei den > 30.000 verkauften Antrieben kaum Probleme mit den Servos.

Grüße, Kurt

PS: Ich bin seit vielen Jahren nicht mehr an MBTronik beteiligt :-)


Jotschi hat sich bedankt!
Kurt Harders  
Kurt Harders
RegionalExpress (RE)
Beiträge: 88
Registriert am: 31.05.2021
Ort: Wuppertal
Spurweite N
Stromart DC, Digital, Analog


RE: Probleme mit SG90 Servo Zuverlässigkeit

#12 von Kurt Harders , 09.10.2022 16:01

Hallo nochmal,
eine Fehlerquelle habe ich gerade vergessen: in welchem Takt kommen die Servoimpulse? Für Analogservos sind 20ms Standard, bei Digitalservos können es auch 9ms sein. Ob ein Analogservo mit einem Takt von < 20ms klar kommt ist reine Glücksache.

Grüße, Kurt


Kurt Harders  
Kurt Harders
RegionalExpress (RE)
Beiträge: 88
Registriert am: 31.05.2021
Ort: Wuppertal
Spurweite N
Stromart DC, Digital, Analog


RE: Probleme mit SG90 Servo Zuverlässigkeit

#13 von Stahlblauberlin , 09.10.2022 23:08

Die Servo.h schickt die Impulse mit den korrekten 50Hz und ist eigentlich unverdächtig. Hab sie X-fach für verschiedenste Projekte genutzt mit ebenso vielen verschiedenen Servos und Drehzahlsteller. Dazu kommt das die meisten halbwegs aktuellen Servos Recht tolerant sind was die Frequenz angeht solange die Impulse selbst im richtigen Rahmen bleiben (1 bis 2 ms, Mitte bei 1,5 ms). Zwischen 40 und 60hz kommen die allermeisten Servos klar.
Zittern und hohe Stromaufnahme deuten auf Probleme mit dem Poti hin oder das Servo schafft es nicht die Sollposition zu erreichen. Hinzu kommt das bei analogen Servos prinzipbedingt das leicht Brummen und Zittern nicht vermeidbar ist. Der Motor wird proportional zur Differenz Soll-Ist mit Strom versorgt, ganz dicht vor Erreichen der Sollposition geht ihm die Puste aus.. Bei guten Digitalservos wird das besser ausgeregelt und die Motoren mit hoher Frequenz angesteuert. Die gönnen sich dafür aber auch ordentlich Strom.
Vermutlich läuft das Servo bei dir an den Anschlag ( die SG90 haben einen!) durch zu lange (>2ms) oder kurze (1ms) Impulse oder die Wege sind zu lang eingestellt und können durch mechanische Grenzen des Aufbaus nicht erreicht werden. Wenn das Servo ohne dranhängende Mechanik sauber läuft die Servowege decoderseitig korrekt einstellen. Gerade so das die Weiche sauber gestellt wird, nicht mehr. Eine übliche H0-Weiche hat ja vielleicht 3mm Stellweg, je nach Länge des Stelldrahtes sind das vielleicht nur 5°...
Ansonsten habe ich mir angewöhnt Servos mit einem einfachen Servotester grundsätzlich kurz zu testen, der ist aus einem Arduino Nano und einem Poti ganz schnell gebaut.
Und wie schon geschrieben, 4-5m Servokabel geht nicht gut, zum einen Störungen, zum anderen ist dann dicht beim Servo ein Elko zum Stützen der Betriebsspannung nötig. Oder du ziehst ziemlich dicke Strippen, 3*0,5mm² mindestens.


Domapi und Jotschi haben sich bedankt!
Stahlblauberlin  
Stahlblauberlin
Metropolitan (MET)
Beiträge: 3.347
Registriert am: 07.03.2022
Ort: Berlin
Spurweite H0, Z, G
Steuerung Roco digital, Z21-Nachbau
Stromart DC, Digital, Analog


RE: Probleme mit SG90 Servo Zuverlässigkeit

#14 von Hobbyprog , 10.10.2022 02:07

Hallo

Meine Beobachtungen mit Modellbau-Servos:

Der DCC-Decoder:
https://bluethners.de/DCCProjekt/Zentral...ecoderPlus.html

Servo klemmt:
Falls der Servo sehr knapp an einem Endanschlag eingestellt sind, und dazu noch eine schnelle Stellgeschwindigkeit hat.
Dann verklemmen die sich am Anschlag. Das kann man dann wie berichtet wieder mit etwas unterstützen lösen.
Bei einem PWM von 1 bis 2 ms sollte das Problem aber nicht auftreten.

Die Servos machen direkt beim Einschalten der Anlage, heftige Bewegungen.
Bei meinen Decodern wurde das durch eine Unterspannung ausgelöst.
Weil mehre Servos gleichzeitig die Position halten möchten, wird viel Strom verbraucht. Der Mikrocontroller resettet, weil er Unterspannung hat. Im Extremfall kannst sich das sogar immer stärker Aufschaukeln.
Daher sollte immer genug Strom vorhanden sein. Im Übrigen brauchen die Servos sehr wenig Strom, wenn sie langsam und kontrolliert angesteuert werden.
Ich habe aber auch Servos die immer eine ca. 45° schwenk bei Spannung an machen. Ich verwende die dann nicht mehr.


Brummen:
Selbstverständlich muss auch der Anpressdruck nur so stark wie nötig eingestellt werden. Sonst brummt das Servo und wird warm. Die Wärme wiederum beeinflusst bei den einfachen Servos den Stellwinkel.
Ich schalte daher immer die Steuerleitung nach wenigen Sekunden aus, um den Anpressdruck eventuell zu entlasten.
Ich habe auch einige einfache Servos die halten den Stellwinkel aktiv, wenn kein PWM-Signal mehr anliegt.
Siehe auch Zittern.

--- Nachtrag am 10.10.22 ca. 15 Uhr!

Das Servo zittert auch ohne Belastung.
Das wird vermutlich durch ein nicht konstantes PWM-Signal ausgelöst. Bei den Arduino-Versionen kollidieren oft die zwei Timer. Daher wird die PWM verzerrt.
Ein Timer ist mit dem DCC-Protokoll beschäftigt und der andere mit dem Servo PWM muss warten. Das Problem wird noch verstärkt, wenn mehr als 4 Servos angesteuert werden.
Das kann dann verdeckt werden, in dem das PWM-Signal nach dem Schalten ausgestellt wird.
Dann sind die Endlagen nach dem Zufallsprinzip minimal unterschiedlich. Ist aber praktisch unbedeutend.
Ich programmiere meine Decoder in Assembler, und kann das Problem bei mir nicht feststellen. Man muss sicherstellen, dass unwichtige Befehle nicht mit im Interrupt ausgeführt werden.
Die Servos haben z. B. eine (Totbandbreite) Dead band width: 10 µs, daher sollte die PWM diese Toleranz einhalten, dann zittert nichts.

EEProm: z. B. ATmega328 , MEGA2560 usw.
Dann ist da noch das Problem mit dem EEProm. Die aktuellen Schaltzustände sollten dort gespeichert werden. Das Schreiben in das EEProm dauert ca. 3,5 ms, in dieser Zeit kann der Mikrocontroller nichts anderes machen. Eine Pulsweite für die Servos ist 1 bis 2 bzw. 0,5 bis 2,5 ms und es können keine Daten (z. B. DCC-Protokoll) gelesen werden.
DCC-Norm schreibt auch vor, dass keine zwei Befehle hintereinander an einer Decoder-Adresse von der Zentrale gesendet werden sollen.

Steuerkabellänge: meistens orange
Ich vermute das bei der geringen PWM-Frequenz die Leitungskapazität nicht so entscheidend ist.
Der Steuerstrom ist auch sehr gering. Der Arduino soll auch nur 20mA (max. 40mA) belastet werden.
Daher vermute ich, das längere normale Steuerkabel kein Problem sind.

Das hatte ich vor ein paar Jahren mal berichtet! Dort sind auch 3 unterschiedliche Servos zum Vergleich abgebildet.
https://bluethners.de/DCCProjekt/Zentrale/ServoRuckeln.html

Ich berichte hier im Stummis, etwas ausführlicher, weil ich das mit meiner Webseite verlink habe.
Falls ich neue Erkenntnisse von euch erhalte, werde ich das hier ergänzen.



Viele Grüße Martin


Jotschi hat sich bedankt!
 
Hobbyprog
InterRegioExpress (IRE)
Beiträge: 427
Registriert am: 03.11.2020
Homepage: Link
Ort: NRW
Spurweite H0
Steuerung DCC Eigenbau
Stromart Digital

zuletzt bearbeitet 11.10.2022 | Top

RE: Probleme mit SG90 Servo Zuverlässigkeit

#15 von Kurt Harders , 10.10.2022 09:38

Hallo Martin,
Du beschreibst die Probleme sehr genau. Ich habe bei der Entwicklung des WA5 das Einschalten der Servo-Betriebsspannung durch einen "Zufallsgenerator" verzögert und einen abschaltbaren Sanftstart über 0,5s realisiert. Damit haben wir fast alle Probleme in den Griff bekommen. Auf vielen Messen haben wir Weichen z.B. von Tillig mit 0,8mm Stelldraht im Dauerbetrieb gehabt. Wir hatten auch bei Betrieb mit Dauerspannung und Bewegung im Sekundentakt keine Wärmeprobleme und die Servos haben ca. 100.000 Umläufe mitgemacht.
Grüße, Kurt


Jotschi und apras haben sich bedankt!
Kurt Harders  
Kurt Harders
RegionalExpress (RE)
Beiträge: 88
Registriert am: 31.05.2021
Ort: Wuppertal
Spurweite N
Stromart DC, Digital, Analog


RE: Probleme mit SG90 Servo Zuverlässigkeit

#16 von Jotschi , 11.10.2022 10:28

Danke für die ausführlichen Antworten!

Zitat von Domapi im Beitrag #3
Das Zucken/Zittern lässt sich teilweise eliminieren, wenn man das Servosignal nach Erreichen der Position ausschaltet.

Zitat von Hobbyprog im Beitrag #14
Ich schalte daher immer die Steuerleitung nach wenigen Sekunden aus.

Das hab ich erfolgreich in meiner Software eingebaut, mittels attach und detach der Servo.h. Die Servos schalten jetzt nur noch während des Schaltvorgangs ein. Damit gibt es jetzt kein Zittern mehr.
Ich habe die Hoffnung, dass das auch die Timer auf den Arduinos entlastet und damit vielleicht hilft bei meinem Schaltproblemen. Vielleicht baue ich später auch noch ein, das ein Arduino immer nur eine Weiche gleichzeitig schaltet.

Jedenfalls hatte ich seit der Änderung erstmal keine Probleme mehr. Ganz sicher ob es das wirklich schon war bin ich mir aber immer noch nicht, es war vorher auch ein sporadisches auftretendes Problem.

Zitat von Kurt Harders im Beitrag #11
dass die Servos halbwegs symmetrisch um die Mittellage mit 1,5ms Impuls eingebaut sind und auch angesteuert werden.

Zitat von Hobbyprog im Beitrag #14
Bei einem PWM von 1 bis 2 ms sollte das Problem aber nicht auftreten.

Danke für den Hinweis, darauf hab ich bisher nicht geachtet. In meiner Software verwende ich die Grad direkt als Parameter, da bin ich so zwischen 40 und 120 je nach Servo. Ich werde mir mal anschauen wie das zu den ms mappt. Da hab ich sicher noch Optimierungspotential.
Vom Stellweg bin ich schon eher bei 30-40° als bei 5°. Das hängt von der Genauigkeit (mittig) und Position des Hebelpunkts und der Länge des Hebels ab. Mit 5° würd ich definitiv nicht auskommen, dazu ist mein Hebelpunkt zu dicht unter der Weiche und der Stelldraht zu lang. Das sollte aber wohl nicht das Problem sein. Meine Anordnung sollte sogar die Kraft die der Servo braucht eher reduzieren nach Hebelgesetzt.

Sollten weitere Probleme mit dem Servo am langen Kabel auftreten, werde ich auf jeden Fall noch einen weiteren Arduino verbauen um die Kabellänge zu reduzieren.


Meine zweite Anlage (im Bau)


 
Jotschi
Regionalbahn (RB)
Beiträge: 29
Registriert am: 19.08.2022
Homepage: Link
Ort: Wien
Gleise Tillig Elite
Spurweite H0
Steuerung Eigenbau
Stromart DC, Digital


RE: Probleme mit SG90 Servo Zuverlässigkeit

#17 von Hobbyprog , 11.10.2022 15:47

Hallo Jotschi,


Deine Vitrine ist super!

Viele Grüße Martin


Jotschi hat sich bedankt!
 
Hobbyprog
InterRegioExpress (IRE)
Beiträge: 427
Registriert am: 03.11.2020
Homepage: Link
Ort: NRW
Spurweite H0
Steuerung DCC Eigenbau
Stromart Digital

zuletzt bearbeitet 11.10.2022 | Top

RE: Probleme mit SG90 Servo Zuverlässigkeit

#18 von Kurt Harders , 11.10.2022 16:20

Hallo Jotschi,

Zitat von Jotschi im Beitrag #16
Das hab ich erfolgreich in meiner Software eingebaut, mittels attach und detach der Servo.h. Die Servos schalten jetzt nur noch während des Schaltvorgangs ein. Damit gibt es jetzt kein Zittern mehr.
Ich habe die Hoffnung, dass das auch die Timer auf den Arduinos entlastet und damit vielleicht hilft bei meinem Schaltproblemen. Vielleicht baue ich später auch noch ein, das ein Arduino immer nur eine Weiche gleichzeitig schaltet.


Da bei Deiner Schaltung und Anlenkung der spannungslose Zustand keine Prolenme macht, würde ich immer nur eine Weiche je Arduino schalten. Ich vermute, dass die PWM-Erzeugung im Arduino für Servos nicht mit einem Timer erfolgt, sondern weitgehend in Software. Da schadet es nicht, möglichst wenig Servos zugleich anzusteuern. Erst recht, wenn man den Umlauf langsam ausführen will, also den Servopuls langsam ändert.

Grüße, Kurt


Jotschi hat sich bedankt!
Kurt Harders  
Kurt Harders
RegionalExpress (RE)
Beiträge: 88
Registriert am: 31.05.2021
Ort: Wuppertal
Spurweite N
Stromart DC, Digital, Analog


RE: Probleme mit SG90 Servo Zuverlässigkeit

#19 von Stahlblauberlin , 11.10.2022 16:24

Wenn ich mal viele Servos anzusteuern habe nehme ich die gängigen Module mit PCA9685. Die generieren das PWM-Signal mit eigener Hardware und werden per I2C angesteuert. Damit ist der Arduino von jeglichem Timingstress befreit. Passende Libs und dazugehörige Beispiele gibt es reichlich, z.B. von Adafruit.
Der PCA9685 hat außerdem recht kräftige Treiber die auch längere Leitungen halbwegs vertragen.


Jotschi hat sich bedankt!
Stahlblauberlin  
Stahlblauberlin
Metropolitan (MET)
Beiträge: 3.347
Registriert am: 07.03.2022
Ort: Berlin
Spurweite H0, Z, G
Steuerung Roco digital, Z21-Nachbau
Stromart DC, Digital, Analog


RE: Probleme mit SG90 Servo Zuverlässigkeit

#20 von Hobbyprog , 11.10.2022 17:32

Hallo Stahlbau

ist bestimmt gut. Aber ganz ohne Timingstress geht es dennoch nicht.

Der Arduino muss noch das DCC Protokoll ohne Unterbrechung lesen und für bis zu 16 Adressen auswerten.
Falls sich der PCA9685 die aktuellen Stellwinkel nicht resetfesst merken kann, muss das der Arduino machen.

Der I2C Bus braucht auch ein gewisses Timing.
Wenn der nicht mit dem DCC lesen synchronisiert ist, gehen gelegentlich mal DCC-Datenpakete verloren.
Dann schaltet der Servo nicht. Das ist aber kein unlösbares Problem.

Und 16 Servos mit CV Adressen konfigurieren ist auch nicht ohne. z. B. 4 Decoder oder 16 Port-Adressen, 32 Stellwinkel, 16 X Geschwindigkeit, 16 X PWM Schaltzeit.

Vermutlich geht das auch ohne Probleme, sonst würdest Du nicht darüber berichten.

Bestimmt gibt es schon ein Beispiel als DCC Servoderoder mit der PCA9685 Konfiguration.

Ich denke aber auch, das man mit einem NANO328 oder 168 acht Servos , bei guter Programmierung ohne Einschränkungen verwenden kann.
Eventuell werde ich das mal später versuchen.

Nachtrag 12.10.22 17:20 Uhr
Kräftige Treiber? aus der Beschreibung


Output Ports
There are 16 output ports. Each port has 3 pins: V+, GND and the PWM output. Each
PWM runs completely independently but they must all have the same PWM frequency.
That is, for LEDs you probably want 1.0 KHz but servos need 60 Hz - so you cannot
use half for LEDs @ 1.0 KHz and half @ 60 Hz.
They're set up for servos but you can use them for LEDs! Max current per pin is
25mA.
There are 220 ohm resistors in series with all PWM Pins and the output logic is the
same as VCC so keep that in mind if using LEDs.

Der Arduino kann 20 bis max. 40mA


Man sagt ja auch. "Viele Wege führen nach Berlin "

Viele Grüße nach Berlin ?
Martin


Jotschi hat sich bedankt!
 
Hobbyprog
InterRegioExpress (IRE)
Beiträge: 427
Registriert am: 03.11.2020
Homepage: Link
Ort: NRW
Spurweite H0
Steuerung DCC Eigenbau
Stromart Digital

zuletzt bearbeitet 12.10.2022 | Top

RE: Probleme mit SG90 Servo Zuverlässigkeit

#21 von Jotschi , 12.10.2022 10:07

Laut Doku müsste der Mega bis zu 48 Servos schalten können (https://www.arduino.cc/reference/en/libraries/servo/). Klingt schon ziemlich heftig, ob die wirklich alle gleichzeitig gehen würden und wie sich das auf die restliche Performance auswirkt weiß ich nicht.
Ich werde bei mir immer nur einen gleichzeitig zu schalten, so viel länger dauern die Schaltvorgänge dadurch auch nicht.

Zitat von Hobbyprog im Beitrag #20
Der Arduino muss noch das DCC Protokoll ohne Unterbrechung lesen

Das ist in meinem Fall nicht so, weil ich die Weichen nicht per DCC ansteuere.
Ich habe am I2C Bus stattdessen ein CAN Modul (MCP2515) und steuere die Weichen via CAN Bus.
Das nur der Vollständigkeit halber - den CAN Bus auslesen ist natürlich genauso eine Timing Sache wie DCC. Wobei ich da zumindest einen Filter konfiguriert habe, welche Art von Nachricht mich interessieren.

Bisher sind mir keine verlorenen gegangenen Nachrichten aufgefallen. Wobei das natürlich möglich wäre. Der Arduino bestätigt den Stellvorgang deshalb via CAN Nachricht - das Ausbleiben dieser Bestätigung würde der PC Software auffallen und dann könnte es den Stellbefehl wiederholen.


Meine zweite Anlage (im Bau)


 
Jotschi
Regionalbahn (RB)
Beiträge: 29
Registriert am: 19.08.2022
Homepage: Link
Ort: Wien
Gleise Tillig Elite
Spurweite H0
Steuerung Eigenbau
Stromart DC, Digital


RE: Probleme mit SG90 Servo Zuverlässigkeit

#22 von Stahlblauberlin , 12.10.2022 10:39

@Hobbyprog Der PCA9685 merkt sich gar nichts. Bevor der aber nicht initialisiert ist tut er auch nichts. Beim Einschalten der Betriebsspannung zucken angeschlossene Servos leicht, Impulse bekommen sie nicht. Erst wenn per I2C entsprechende Werte in den Registern stehen passiert etwas .
Das Timing von I2C und DCC hinzubekommen ist deutlich stressfreier da es nicht zwingend gleichzeitig erfolgt. DCC lesen und auswerten, anschließend einmal den PCA mit neuen Daten via I2C versorgen, dann wieder auf das nächste DCC-Telegramm warten. Da bei DCC alles reihum nacheinander angesprochen wird dürfte es immer mehr als lange genug dauern bis wieder ein Telegramm für den Weichendecoder kommt. Dagegen ist das µsec-genaue Timing von 6 oder gar 16 Servosignalen Hektik, andauernd funkt einem ein Timer-Interrupt ins Programm um mal eben einen Pin den Status wechseln zu lassen..
Der PCA hat einfach den Vorteil das man ihm je Pin den entsprechenden Wert für's Timing einmal vorgibt und er den Rest erledigt bis er neue Anweisungen erhält. Dazu gibt es einen separaten Output-Enable-Pin, solange der High ist schweigt der PCA, das kann man z.B. beim Einschalten zur Unterdrückung von Zuckungen nutzen bis alle Kanäle mit gültigen Daten versorgt sind.


Hobbyprog und Jotschi haben sich bedankt!
Stahlblauberlin  
Stahlblauberlin
Metropolitan (MET)
Beiträge: 3.347
Registriert am: 07.03.2022
Ort: Berlin
Spurweite H0, Z, G
Steuerung Roco digital, Z21-Nachbau
Stromart DC, Digital, Analog


RE: Probleme mit SG90 Servo Zuverlässigkeit

#23 von Hobbyprog , 12.10.2022 14:41

Hallo Stahlbau,

ich möchte hier deinen Vorschlag nicht abwerten. Ich lerne beim Machen, daher muss nicht alles stimmen, was ich schreibe.
Ich kenne auch das PCA9685 nicht wirklich. Ich werde mich später mal damit beschäftigen.
Kostenmäßig hat das kein großen Vorteil. Zwei NANO168 bekommt man ab 11€ inklusive Versand.

Bei dem DCC-Protokoll gibt es keine Pausen, man kann nur die Zeit zwischen zwei Signal-Flankenwechsel + - nutzen je nach Abtastrate ca. 80 Mikrosekunden.
Dann ist da noch etwas Spielraum, falls Verzögerungen im Interrupt entstanden sind. Ob mein Decoder tatsächlich alle DCC-Befehle erfasst, weiß ich nicht. Aber die Servos Zittern nicht! Müsste mal alle gelesene Prüfsumme vom DCC-Protokoll mit auslesen. Ist mir gerade so eingefallen. Obwohl der Serial Bus dann auch Zeit braucht.

https://dccwiki.com/DCC_Power#Power

Falls ein anderes Interrupt nicht innerhalb dieser Zeit beendet ist, ist der gesamte DCC-Befehl ungültig. Das fällt dann so lange nicht auf bis der Befehl an den Decoder gerichtet ist.
Bei 16 Adressen (16 Servos) ist die höchstwahrscheinlich öfters gegeben, zumal ja auch die 16 Servos über den I2C Bus oder Interrupt ein exaktes Timing brauchen.
Das DCC-Protokoll gibt auch vor, dass keine zwei Befehle hintereinander an einem Decoder gesendet werden sollen. Ein DCC Decoderadresse hat 4 Ports. Daher besteht ein 16 Fach Decoder aus 4 Decodern.
Die Zentrale kann nicht wissen, dass 4 Decoder von einem Mikrocontroller gesteuert werden.
Den Schaltzustand im EEProm speichern dauert 3.5ms, daher kann kein DCC empfangen werden!

Ist natürlich alles Theorie. Das erklärt aber auch das bei den meisten einfachen Arduino-Programmierungen Probleme wie Servozittern auftauchen. Da überlagern sich dann zwei Interrupts.
Das Servozittern fällt sofort auf, und wird durch PWM-Abschaltung vertuscht, der Verlust von DCC-Befehlen fällt eventuell mit Glück nur äußerst selten auf.

Viele Grüße Martin


 
Hobbyprog
InterRegioExpress (IRE)
Beiträge: 427
Registriert am: 03.11.2020
Homepage: Link
Ort: NRW
Spurweite H0
Steuerung DCC Eigenbau
Stromart Digital

zuletzt bearbeitet 12.10.2022 | Top

RE: Probleme mit SG90 Servo Zuverlässigkeit

#24 von Stahlblauberlin , 12.10.2022 15:31

@Hobbyprog Im DCC-Signal gibt es keine Pausen, das stimmt. Aber wenn man ein Telegramm mit passender Adresse empfangen hat kann man sich in Ruhe um die Auswertung etc. kümmern und derweil das DCC-Signal einfach ignorieren.

Zitat von Hobbyprog im Beitrag #23
Das DCC-Protokoll gibt auch vor, dass keine zwei Befehle hintereinander an einem Decoder gesendet werden sollen.

Damit ist ja eigentlich sichergestellt das genug Zeit bleibt... Selbst wenn die vier "virtuellen" Decoder direkt nacheinander angesprochen werden.
Ansonsten sollte man das Programm so auslegen das erstmal Daten für alle virtuellen Decoder gesammelt werden und dann in entsprechende Aktionen umgesetzt werden.
Ist man mit allem fertig lauscht man auf das nächste passende Telegramm. Da das eh einige ms auf sich warten lässt bleibt genug Zeit für die Verarbeitung ohne das einem wichtiges durch die Lappen geht. Das I2C-Timing wird in HW erledigt, ist also unkritisch. Abgesehen davon arbeitet I2C mit 100khz per default, damit ist das Übertragen der paar Byte an den PCA nicht gerade ein Zeitfresser, vor allem wenn man nur Änderungen überträgt.


Stahlblauberlin  
Stahlblauberlin
Metropolitan (MET)
Beiträge: 3.347
Registriert am: 07.03.2022
Ort: Berlin
Spurweite H0, Z, G
Steuerung Roco digital, Z21-Nachbau
Stromart DC, Digital, Analog


RE: Probleme mit SG90 Servo Zuverlässigkeit

#25 von Hobbyprog , 12.10.2022 16:12

OK Stahlbau,

wenn es so funktioniert, soll es so sein. Eventuell kannst Du ja mal das Programm für alle anbieten.
Ich möchte das am liebsten als HEX um das direkt flashen zu können. Ich Fummel nicht so gerne mit der ArduinoIDE herum.

Aber Du schreibst ein DCC-Befehl in Ruhe abarbeiten und ein Befehl übergehen.
Gleichzeitig sammelst Du die Befehle für die anderen 3 Decoder. ??? die Zentrale sendet weiter an die anderen 3.

Befehle, die Du nicht decodierst, kannst Du nicht sammeln.

Hier habe ich mal den Unterschied zwischen Decoder-Adressen, Weichen-Adressen und Port beschrieben.
https://bluethners.de/DCCProjekt/Zentral...enadressen.html

Ich werde jetzt auch nichts mehr dazu schreiben. Ich bin ja nur ein Hobbyprogrammierer!

Viele Grüße, und an alle -- gesund bleiben ist das Wichtigste!
Martin


 
Hobbyprog
InterRegioExpress (IRE)
Beiträge: 427
Registriert am: 03.11.2020
Homepage: Link
Ort: NRW
Spurweite H0
Steuerung DCC Eigenbau
Stromart Digital

zuletzt bearbeitet 12.10.2022 | Top

   

Fleischmann Platine-Beleuchtung fehlerhaft?
Märklin 3096 BR 86 Telexkupplung kraftlos

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz