Lieber Besucher, herzlich willkommen bei: RCLine Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
- RCLine Forum
- » Sonstiges Modellbau
- » Modelleisenbahnen
- » Bau eines Arduino-Halbwellen-Fahrreglers
Deswegen kann der auf den ersten Blick etwas umständlich aussehen.
Auf dem Treiber-IC sind ja auch noch 7 Eingänge frei.
Bei Bedarf einfach fragen.
Das Display ist ein eigenes Projekt mit einem eigenen Arduino Pro Mini und wird über die serielle Schnittstelle angesteuert. Der Code ist nicht enthalten.
Gruß, Klaus
so, jetzt hab' ich mich schlau gemacht und verstehe die beiden Schaltungen.
Thomas:
Es kann ja schon sein, daß die Modellbahner das als "Halbwellen- bzw. Vollwellensteuerung" bezeichnen, aber etwas irritierend ist das schon. Ich würde sagen: Gemischte PWM- und Linear-Ansteuerung des Leistungsteils (wobei die PWM von der positiven Halbwelle der Betriebsspannung abgeleitet wird). Daß dabei der Leistungstransistor bärig warm wird, ist klar. Technisch gesehen ist das der Entwicklungsstand der Flug-ESCs (für Bürstis) vor Jahrzehnten, als man noch die PWM von der frame rate des Servo-Signals abgeleitet hat.
Klaus:
Der Peter Rachow macht die Linear-Ansteuerung auch deshalb, weil er mit der "Halbwellen-PWM" nicht mehr als 50% ED erreichen kann. Er sagt, daß damit auch das Brummen des Lok-Motors reduziert wird (was sicher stimmt), und hat damit das Notwendige mit dem Angenehmen verbunden.
Da drängt sich mir aber die Frage auf: Warum machst du das einfach auch so, ohne die viel größeren Möglichkeiten des µPs (Arduino) zu nutzen ?
Du könntest damit problemlos eine PWM von 0 bis 100% ED erzeugen, und du könntest eine (mindestens) 100fache PWM-Frequenz wählen, irgendwo im kHz-Bereich. Dann würde die Endstufe im reinen Schaltbetrieb laufen und nicht mehr warm werden, und brummen würde auch nichts mehr; abgesehen mal von der Vereinfachung der Schaltung. Und du würdest einen I/O (zur anderweitigen Verwendung) einsparen.
Gibt's irgendeinen Grund (den ich vielleicht nicht kenne), das nicht so zu machen ?
Ich habe selbst vor Jahren, als Slow Flyer noch solche waren und u.a. auch kleine Glockenanker-Motörchen mit Getriebe (Faulhaber) zum Antrieb verwendet wurden, kleine PWM-Regler (mit Tiny 15) gebaut und verwendet; die wurden mit irgendwo zwischen 10 und 15 kHz (weiß es nicht mehr genau) getaktet, und das ging prima. Walter Scholl hat damals die Regler von Piednoir vertrieben, die wurden mit 50 kHz getaktet; deren Schaltungstechnik war aber ziemlich "tricky", und diese Regler waren recht teuer. Für die nieder-induktiven Glockenanker-Motörchen (genauer: deren Bürsten) ist die hohe Taktfrequenz viel schonender als eine niedrige; es gibt keine hohen Spitzenströme.
Bei den Flug-ESCs hat man die niedrige PWM-Taktfrequenz (ca. 50Hz) schnell wieder aufgegeben, weil die daraus entstehenden hohen Stromspitzen im Teillastbereich die damals verbreiteten Ferritmagnete in den Motoren abmagnetisiert haben. Für die Glockenankermotoren gilt das nicht, da verschleißen nur Bürsten und Kollektor schneller.
Noch ein Tip:
Ich hab' mal eine IR-Fernsteuerung entwickelt (auch für Indoor-Slow Flyer); damit konnte man sehr kleine und leichte Empfänger realisieren. Dabei gibt's aber gewisse Einschränkungen in der Impulstelegrammlänge (Details führen hier zu weit), und es zählt jedes Bit, das man einsparen kann. Daher hatte ich die Stufenzahl in der Motoransteuerung auf 64 bzw. sogar auf 32 reduziert. Bei nur 6 Bit Auflösung hat man davon noch garnichts bemerkt, bei 5 Bit nur minimal, und wenn man's gewusst hat.... Wenn es bei dir in der Software irgendwo "eng" wird, wäre das auch eine Möglichkeit.
Und noch einer:
Wenn du den µC die PWM-ED nicht über Formeln berechnen lässt, sondern diese aus einer "look-up"-Tabelle (Im EEPROM, bei der Initialisierung ins RAM holen) holst, hast du große "Freiheiten" in der Gestaltung der "Steuerkurve" Drehknopf-> Lok-Verhalten. Je nach Inhalt der Tabelle kannst du die Wirkung spreizen, einengen, auch nur bereichsweise (ähnlich wie bei den Helis die "Gaskurve").
Zu deiner letzten Erweiterung (Umpol-Relais, vom Arduino gesteuert):
Ein einfacher Transistor statt ULN2803 tut's auch, Basis-Vorwiderstand (ca. 10 KOhm) dann nicht vergessen. Und eine Freilauf-Diode über die Relais-Wicklung, wie beim Motor.
Wenn du den Lok-Antrieb nicht genügend leichtläufig hinkriegst, kannst du mal den schon erwähnten "Vor- oder Grundstrom" (mit Widerstand über den Endtransistor) versuchen. Wert kann ich dir nicht sagen; ich schätze mal, daß man da etwa 50-100 mA fließen lassen muß. Halt so viel, daß der Motor damit kurz vor dem Anlaufen ist. Die PWM-Impulse haben's dann etwas leichter.
Vergleichbar habe ich diesen Trick mal bei einem Miniatur-Flügelrad-Anemometer (mit Glockenankermotor als Tachogenerator) angewendet, um das Anlaufen bei ganz niederen Windgeschwindigkeiten zu erreichen.
Das sind jetzt alles nur Vorschläge, die du vielleicht nützlich findest.
Gruß,
Helmut
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »haschenk« (23. Oktober 2016, 21:28)
ein erneutes Danke für deine Vorschläge.
Warum machst du das einfach auch so
Der Grund ist ganz einfach: Weil mir für diese Art der Ansteuerung das Know How fehlt, habe ich zuerst das nachempfunden, was bei jemand anderem funktioniert und wo ich einen entsprechenden Ansatz für habe.
Wenn Du mit deinem Hintergrundwissen mir sagst, dass für die sogenannte "Halbwelle" eine höhere Frequenz sinnvoller ist, werde ich das gerne mal versuchen.
Wenn du den µC die PWM-ED nicht über Formeln berechnen lässt
Zurzeit wird die ED ganz einfach berechnet und ist limitiert bei 30%. Damit wollte ich wie oben ein funktionierendes System erstmal nachbilden.
Die Steuerung mit dem Arduino lässt zumindest eine sehr einfache Anpassung über die Software zu.
Mir fehlt mangels der Grundlagen eine Strategie zur Optimierung der Steuerung. Ich weiß zum Beispiel nicht, wie so eine Gaskurve aussehen müsste damit die Ansteuerung besser wird.
Ein Problem wird wohl auch sein, dass ich ohne einen anständigen Messpark die optimalen Einstellungen nicht finden werde.
Meine Ausstattung ist da recht einfach (Multimeter, selbst gebautes einfaches Oszi, ...).
Zitat von »haschenk«
Ein einfacher Transistor statt ULN2803 tut's auch
Das ist mir zufällig auch bekannt aber hier habe ich schon die Ansteuerung von diversen LEDs in meinem Diorama im Kopf.
Gruß, Klaus
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Klaus(i)« (23. Oktober 2016, 22:11)
Dies sind:
![]() |
Quellcode |
1 2 3 4 |
//---------------------- Motor Parameter -------------------------- #define MOTOR_DC_TRESHOLD 20 //Schwellenwert für Gleichspannungsanteil / Startwert (theoretisch 0-255, praktisch eher bis max.50) #define MOTOR_PWM_TRESHOLD 20 //Schwellenwert für PWM-Anteil / Startwert (theoretisch 0-255, praktisch eher bis max.50) #define MOTOR_PWM_ED_MAX 100 //ED: maximale ED für PWM (theoretisch 0-255) |
Die Parameterwerte muss man selbst für seine Anlage / Lok ermitteln.
Jetzt brauche ich den Fahrregler nicht mehr ganz soweit zu drehen bis die Lok anfährt.
Die beiden PWM-Frequenzen waren schon in der letzten Version konfigurierbar.
Gültige Werte sind in der config dokumentiert.
Den Wert für den Gleichspannungsanteil habe ich auf 4kHz erhöht um eine bessere Glättung zu erhalten.
Eine Erhöhung der PWM-Frequenz für den "Halbwellenanteil" (PWM_5_6) hat sich nachteilig auf das Anfahrverhalten ausgewirkt.
![]() |
Quellcode |
1 2 3 |
//---------------------- PWM-Frequencies -------------------------- #define PWM_5_6 1024 //Divisor for D5 & D6 --> ~60 Hz #define PWM_3_11 8 //Divisor for D3 & D11 --> ~4kHz Hz |
Ich habe langsam das Gefühl, dass weitere Änderungen keine subjektiv wahrnehmbare Verbesserungen bringen.
Messbar sind sie bestimmt, aber was der Anwender nicht merkt ....
Ich bin jetzt für meinen Teil mit den Eigenschaften des Fahrreglers zufrieden.
Ich würde ja gerne mal eine neue, moderne Lok ausprobieren.
Gruß, Klaus
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Klaus(i)« (24. Oktober 2016, 15:48)
Da lohnt der Aufwand aber nur bei mehr Anwendern.
Bei der Anzahl an Modellbahnern hier ist dies wohl nicht notwendig.
Hat auch noch keiner nach PCB und Stückliste mit Artikel-Nr. gefragt. Nur unter uns: Platinenlayout habe ich nicht

Gruß, Klaus
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Klaus(i)« (24. Oktober 2016, 17:20)
Eine Erhöhung der PWM-Frequenz für den "Halbwellenanteil" (PWM_5_6) hat sich nachteilig auf das Anfahrverhalten ausgewirkt.
Meine Erfahrung deckt sich auch mit dem Angebot von kommerziellen Produkten.
Anfahren mit optimierten Impulsen:
Impuls-Spannung: 8,0V Frequenz A: 16Hz Frequenz B: 58Hz
Dann muss ich es nochmal mit 30 Hz versuchen und ich brauche noch einen Schalter für reinen Gleichstrombetrieb für Glockenankermotoren.
Gruß, Klaus
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Klaus(i)« (24. Oktober 2016, 22:51)
ich kann's nicht so recht glauben...
wenn ich z.B. an die Spielzeug-Copterchen denke, bei denen die PWM prima funktioniert. Deren Frequenz habe ich noch nicht gemessen, aber dem Pfeifen nach, das man manchmal hören kann, sind es mindestens ein paar Hundert Hz. Die "Endstufen"-Schaltung ist da ganz primitiv, ein kleiner MOSFET (meist nur in SOT 23), der direkt vom µC angesteuert wird- das ist alles. In den Copterchen sind (in etwa) dieselben Motörchen verbaut, dürften aber wegen der höheren Betriebsspannung mehr Windungen, einen höheren Widerstand und ein kleineres kv haben. Bei den Copterchen ist der Innenwiderstand der Stromquelle (Lipo) vergleichsweise niedrig; das spielt wahrscheinlich auch eine Rolle.
Könnte es bei Klaus an der Stromversorgung liegen, die keine steilen Impulsflanken zulässt ? Oder gibt's sonst eine Stelle, die "Impuls-abträglich" ist ?
Es ist halt sehr schwierig, ohne "vernünftige" Messmöglichkeiten die Ursache zu finden. Ich würde mir dazu mal den Strom(-verlauf) in den Motorzuleitungen ansehen. Nicht die anliegende Spannung ! Dazu muß man einen Widerstand in die Leitung einfügen und den Spannungsabfall daran ansehen. Als Widerstandswert dafür würde ich mal mit 1 Ohm anfangen; ist er zu groß, beeinflusst er die Funktion, ist er zu klein, dann kriegt man ein schwieriger zu messendes (zu kleines) Signal. Bei einem Selbstbau-Scope ist dabei aber Vorsicht angebracht- dessen Messeingänge könnten nicht potentialfrei sein. Im Idealfall schaut man sich mit einem "Zweistrahler" parallel dazu noch die Spannungen an verschiedenen Stellen der Schaltung an.
Ih würde auch mal versuchen, das Anlaufen nicht mit der Lok auf den Gleisen, sondern "lastfrei" mit in der Lok (am Motor) angelöteten Litzen zu studieren; Spannung und Strom ansehen/messen.
Gruß,
Helmut
PS.
Es ist bei Modellbauern ein häufiger Fehler, daß man sich (mit dem Scope) nur die Spannung ansieht (weil halt einfach) und dann annimmt daß der Strom denselben Verlauf hat. Das ist aber oft nicht der Fall, der Strom kann ganz anders aussehen. Und für alle elektromagnetischen Wirkungen (also auch Motoren) ist immer der Strom maßgebend. Die Spannung ist -salopp gesagt- nur dazu da, daß ein Strom fließt.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »haschenk« (25. Oktober 2016, 02:35)
Klaus,
schön, daß dein Konstrukt jetzt das macht, was du wolltest.
Aber es bleibt die Frage, warum im gegebenen Fall die Taktung so extrem niederfrequent sein muß; entgegen der Erfahrung in ähnlichen Fällen.
Wahrscheinlich wird dich das nicht interessieren, aber ich stelle die Frage einfach mal. Vielleicht liest jemand mit, der die Ursache kennt.
Gruß,
Helmut
http://www.michael-twiste.de/eisenbahn/fahrtregler1.html
Gruß, Klaus
https://www.mikrocontroller.net/articles…er_PWM-Frequenz
Apropos, ich hab' jetzt auch so einen Regler gebaut, nur glaub' ich nicht an den Gleichspannungsanteil, sondern an den 16-bit Timer1

MIN=Poti_1/1023.0;
MAX=Poti_2/1023.0;
SPEED=Poti_3/1023.0;
SPEED*=SPEED;
PWM=65535*(MIN+(MAX-MIN)*SPEED);
Library stammt von da: https://forum.arduino.cc/index.php?PHPSE…&topic=117425.0

Ähnliche Themen
-
Modelleisenbahnen »
-
meine Z-Spur-Anlage im Wohnzimmerschrank...Baubericht (4. Februar 2016, 18:07)
-
Modelleisenbahnen »
-
Problem bei der Eisenbahnsteuerung mit dem Arduino (12. August 2015, 18:32)
-
Funken! Aber endlich sicher »
-
Quelle für XBee Pro 868MHz? (13. Mai 2010, 01:34)