Meine elektronische Echtdampflok

    • Offizieller Beitrag

    Hallo Schienendampfer,


    Die Frage nach dem "Warum" beantworte ich auch zu erst: Weil ich wissen will, ob ich das hinbekomme und weil ich mich mit der Technik beschäftigen will. Und nicht zuletzt: weil es geht. Übrigens: wenn euch der Text zu lang ist, unten gibt's Bilder :P


    Das ganze Projekt entstammt der Idee, meine 99222 bei Bedienung durch meinen (seinerzeit noch einzigen) Sohn ab einer gewissen Geschwindigkeit abzuriegeln und nicht auf jedem Übergang auf die Gerade ermahnend eingreifen zu müssen. Das Projekt wird sich wohl noch so lange hinziehen, bis der Zweite auch das gefährliche Alter verlassen hat, aber inzwischen sind so viele Ideen hinzugekommen, dass es sich auch so lohnt weiter zu machen.


    Der Unwille, auf eine neue, möglicherweise voll und frei programmierbare RC Anlage umzusteigen, verkompliziert die Sache zwar ein wenig, hält mich aber technologieunabhängig. Auch sind die vorkonfektionierten Sensoren ab einer gewissen Menge zu sperrig und unter Umständen auch softwareseitig in der Anzahl begrenzt.


    Nach einer Kurzaufnahme dessen, was man messen und regeln könnte musste erstmal die Machbarkeit analysiert werden ...


    Analog:
    + Spannung des Akkus
    ++ Temperaturen (PT100, KYT81)
    ++ Kaltgas
    ++ Heißgas
    ++ Kessel
    ++ Abgas
    ++ Zylinder L
    ++ Zylinder R
    + Drücke (MPX5xxx Reihe)
    ++ Kaltgas **
    ++ Heißgas **
    ++ Gas vor dem Regelventil
    ++ Gas in der Düsenzuleitung
    ++ Kessel
    ++ Schieberkasten
    ++ Zudampf Speisepumpe
    + Füllstände (optisch)
    ++ Wasserkästen
    ++ Kessel


    Digital:
    + Drehraten (Lichtschranke mit 100-Speichen Encoder-Rad)
    ++ Kuppelrad
    ++ Laufrad ** (kein Platz für Einbau)


    Als Basis wollte ich einen AVR Mikroprozessor verwenden, weil ich mit dieser Prozessorfamilie in einigen Bastelprojekten etliche Erfahrung sammeln konnte. Diese haben maximal 16 Analogeingänge weswegen zu zu messenden Größen etwas zusammengekürzt (**) werden mussten.


    Weiterhin wollte ich den monströsen Kabel- und Steckerwust umgehen und einen kleinen Slow-Flyer-Empfänger verbauen, das Summensignal erkennen und Servosignale ausgeben. Eine Konfigurationsdatei sollte von einer SD-Karte gelesen und Logdateien geschrieben werden, Licht geschaltet werden. Alles auf der Lok.


    Gesteuert werden
    + Bremse
    + Entwässerung
    + RC-Gasregler
    + Zünder ***
    + Umsteuerung
    + Regler
    + Speisepumpe
    + Pfeife
    + Läutwerk ***
    + Steuermodus (manuell, nebenbei-Labermodus, Spielzeug) (mehr siehe unten)


    (***) Umsetzung wegen fehlender Hardware derzeit offen


    Der Entwurf der Elektronik sieht eine dreiteilige Platine vor, die mit 90° Steckverbindern zusammen gesteckt wird und um den Kaltgastank herum steht.


    Die Platine ist zweilagig und zweiseitig bestückt, weitestgehend in SMD ausgeführt. Aufgrund der geringen Pinabstände habe ich sie fertigen lassen und nicht zuhause mit doppelseitiger Toner-Direktmethode geätzt.
    1. Teil Spannungsversorgung (Schaltregler 5V 1A sauber, für AVR, analoge Sensoren, etc / Schaltregler 5V 5A unsauber für Servos, Licht, Piezobuzzer, etc / Schaltregler 3.3V 1.25A für die SDKarte) + Piezobuzzer für Fehlermeldungen und Unterspannungswarnung
    2. Teil Hauptplatine mit Mikroprozessor, Quarz, SD Slot, Pegelwandlern, Buchsen für Servo- und Sensorstecker, Empfänger- und Telemetrieanschluss, sowie Programmierschnittstelle
    3. Teil Temperaturmessung mit Konstantstromquellen und Operationsverstärkern (PT100) und Spannungsteilern (KYT81)
    Versorgt wird das ganze von einem 2S oder 3S LiPo Akku, dieser kann sogar im Betrieb getauscht werden, ohne ausschalten. Die Ladebuchse entfällt technologiebedingt. Ein solcher Akku mag es zwar gerne warm, hat aber beim Laden nichts außerhalb einer Spezialtasche zu suchen.


    Die Software ist in C geschrieben und besteht in der ersten als geschlossen anzusehenden Version (nur manuelle Steuerung) knapp 2000 Zeilen echten Code. Die Dateien mit Dokumentation sind etwa 250 Kilobyte groß, dazu kommt nochmal genausoviel für das Dateisystem der SDKarte (FatFS, freie Software von ELM ChaN). Den überwiegenden Teil machen jedoch die Unittests und der Integrationstest aus. Jede Programmzeile und jede mögliche Programmverzweigung wird vor dem Download auf den Mikrochip automatisiert getestet. Dieses Vorgehen hatte zur Folge, dass ich kaum Fehler auf dem Chip suchen musste und bis jetzt nur 50 Programmierzyklen benötigt habe.


    Mit dieser Version will ich dann erstmal Log Dateien einfahren (einspielen?) um Erfahrungen und Daten für Regelstrategien zu sammeln. Bis auf die Füllstandssensoren ist alles in der Lok drin.


    Die Füllstandsmessung ist ja eine Wissenschaft für sich. Optische Messungen wurden wohl schon erfolgreich eingesetzt. Ich habe Lichtverlauf einschließlich Brechung mittels PovRay, einer Raytracingsoftware, simuliert um die korrekte Position von IR-Led auf der einen und IR-Fototransistor auf der anderen Seite der Wasserstände zu bestimmen. Per Software werden die LEDs nur während der Messung kurz angeschaltet (etwa sechs mal in der Sekunde für eine hundertstelsekunde). Das spart Strom.


    Die Steuerung liest nicht nur das PPM-Summensignal vom RC-Empfänger, sie verhält sich auch wie ein Graupner-Vario-Telemetrieempfänger. Dazu habe ich schon in Arnes Telemetrie-Erfahrungen etwas geschrieben. Aufgrund der starken Anwendungsausrichtung der Graupner Telemetrie lässt sich nur das Textdisplay mit 2x10 oder 3x7 Zeichen verwenden. Für letzeres Format laufen 7 Seiten mit Messwerten zyklisch durch. Außerdem gibt es im Einstellungsmenü des Empfängers 7 Textseiten mit quasi allen interessanten Daten.


    Auf Dresden und Schramberg 2020 rückblickend habe ich folgendes Zwischenfazit: die Eletktronik geht im Gegensatz zum Rest richtig gut.


    Als nächstes soll der "nebenbei-Labermodus" umgesetzt werden. Auf Messen, wenn man auf Ausstellungen mal nebenbei Dinge erklärt, vergisst man im schlimmsten Fall zu Speisen. Das soll vermieden werden. Dabei soll anhand der Abgastemperatur und des Kesseldrucks der Brenner geregelt werden. Als Hilfsgröße können Gasdruck vorm RC-Gasventil und vor der Düse verwendet werden. Je nach Zuverlässigkeit der Messdaten von den Wasserständen Kessel (voll / Mitte / leer) und Wasserkasten (leer) soll die Speisepumpe geregelt werden. Ihr Betriebsdruck und der Kesseldruck können wieder als Hilfsgröße verwendet werden. Die Entwässerung schließt automatisch ab einer bestimmten Zylindertemperatur. Alles andere geht weiter manuell. Natürlich wird der Regler automatisch zurückgenommen, wenn die maßstäbliche Höchstgeschwindigkeit erreicht wird. Letzteres vielleicht irgendwann auch im manuellen Modus.


    Der Spielzeugmodus soll auch die Steuerung ändern. Ein Drehpoti regelt die Geschwindigkeit (Bremse, Umsteuerung und Regler bedienen sich dann automatisch). Als Messgröße werden die Drehrate sowie der Schieberkasten- und Kesseldruck verwendet. Das Licht leuchtet nur noch mit der Umsteuerrichtung, die Pfeife geht noch manuell, aber nur bei genug Druck. Entwässerung, Gas und Speisepumpe wie schon im halbautomatischen Modus.


    Viele Grüße,
    Stefan


    Und nun das Bilderbuch ... leider ist die Fotodokumentation mal wieder mehr als dürftig gewesen etliches musste ich notdürftig nachholen ...


    Platine an Ort und Stelle


    Lampen mit Platinensteckverbinder


    Platinenhalter


    Man sieht die Sensoren gar nicht ...


    Sie sind in einer Kessel-/Aschkastenimitation untergebracht ...



    Dafür war auch handwerkliche Arbeit gefragt ...



    Mit ein wenig Ostererfahrung sieht man das Encoderrad sogar am Ende noch ...


    Von unten fotografieren ist übrigens neuerdings strafbar in Deutschland ...


    Hier der Schieberkasten mit Zudampf und Messleitung ...


    Beim Gas ein wenig anders ... hier waren die Sensoren nicht verkapselt ...


    Drei Anschlusspins sind nicht belegt und können abgekniffen werden.


    Zylindertemperaturmessung ...



    Die Kabel liegen in teuren dünnwandingen Messingrohren ...


    Servostromversorgung plus 8 Signalleitungen ...


    Und fertig ...


    Dünne Lampenleitungen sind nicht zu kurz - die sollen so. Die wurden an dickere Leitungen angelötet ...


    Temperatursensor ... PT100, Teflonisolation von Spezialdraht, Vierpolige Leitung aus einem hochtemperaturfesten Flachbandkabel, Silikonisolation von Hochstromlitze anstatt von Schrumpfschlauch ...


    Ich hab schon überfrachtetere Führerstände gesehen ...


    Der Mikrochip - 256kByte Flash, 512 Byte RAM, 16MHz. Mehr braucht's nicht. Nur gut Planung (siehe Platine, Revision 1 halt ... ) ...


    Hier sieht man die extrem kurzen Servokabel mit anderem Stecker.



    Und die Funke funkt auch ... hier drei Seiten aus der ausführlichen Telemetriemenü, welches ein einem als Sensorenkonfigurationsmenü gedachten Bereich implementiert ist. ... wer findet den Fehler?




    Auflösung: ms statt µs im vorletzten Bild

  • Hallo, aber Fahren immer noch mit Dampf ? Ein tolles Projekt sofern man die elektron. Kenntnisse hat. Ich bin gespannt wie es weitergeht


    Hans

    • Offizieller Beitrag

    Hallo zusammen,


    Danke für das Feedback.


    ja, Zoltan, Murphy ist immer dabei. Eben hab ich ein Kabel wieder angelötet, das leider am hochgebogenen MPU-Pin angelötet werden musste wegen eines hinzugekommenen Features (Telemetrie)


    Hans, ja, für die breite Masse ist das nichts.


    ja, Manfred, ein Notbremsassi wäre gar nicht so schwierig. Nur den Ultraschallsensor in der Größe wie die Laternen geschickt zu verstecken ist nicht so einfach. Das ließe sich im Winterschienenräumer vllt sogar machen, aber der sieht dann jeden Weichenstellhebel.


    Aber nicht übertrieben: die meisten Sensoren hat die große Lok auch. Sie kann man aber nur im Führerhaus ablesen und nicht auf unserem entfernten "Führerstand".


    Heute habe ich die Hinweise von Tobias (Kochi) eingearbeitet: Zugschlusssignal und Rangiersignal. Außerdem hab ich die Temperatursensoren neu kalibriert, nachdem sie sich jetzt eingeruckelt haben. Der Messstrom wird von Trimmwiderständen eingestellt und die schienen auf der genauen Position nicht genau bleiben zu wollen.


    Die Lichter werden mit einem 2-Positions (V-R) und einem 3-Positions-Schalter (1-2-3) gesetzt. Das läuft derzeit auf zwei Kanälen, die könnte man aber auch noch auf einen Kanal mixen, wenn man mal noch einen benötigt. Da fehlen dann aber irgendwann die Schalter, um die frei werdenden Kanäle zu bedienen :)


    So sieht es aus:


    V - 1 == aus


    V - 2 == Zg1 vorn, aus hinten


    V - 3 == Zg1 vorn, Zg2 8a hinten


    R - 1 == Fz1 vorn und hinten


    R - 2 == Zg1 hinten, aus vorn


    V - 3 == Zg1 hinten, Zg2 8a vorn


    Die Laternen werden mit Software-PWM gedimmt. Dank einer recht trickreichen Implementierung benötigt das nur etwa 10% der zur Verfügung stehenden Rechenzeit. Aber dafür flackert es nicht auf Videos. Bis auf die Initialisierung der Softwaremodule und das schreiben der Log-Dateien auf die SD-Karte ist die ganze Software Interrupt- und Timer-gesteuert. Dadurch können alle Aufgabe quasi-gleichzeitig erledigt werden.


    Und hier ist der Programmer für den Microcontroller angeschlossen:
    SD-Karte raus, Spannungsversorgungs- und Temperaturmessplatine ab, RCEmpfänger ab (da ich das Kabel zur maximalen Verwirrung schon zum zweiten mal in Kanal 4 anstatt von Kanal 6 (SUMO) gesteckt habe, habe ich die Buchse jetzt zugeklebt), Programmierkabel dran (rechts unterhalb der Gas-Schnellkupplung).


    Testabdeckung - auf Arbeit wäre das zu teuer.


    Viele Grüße,
    Stefan

  • Hallo Stefan,


    ein ambitioniertes Projekt hast du dir da vorgenommen bzw. schon geschafft. Zumindest was die Sensorik angeht, hab ich da auch schon mal in Waggons experimentiert. Insbesondere auf deine Geschwindigkeitsmessung bin ich gespannt. Ich hatte da mal eine Scheibe mit 60 Schlitzen an einem 30mm Rad montiert hatte dann aber bei höheren Geschwindigkeiten Probleme. Sodass ich dann auf 20 Schlitze gegangen bin.


    Das kann jetzt an meinem kleinen Rad, einer schlechten/ungeeigneten Lichtschranke oder (vermutlich) an meinem Code liegen. Mich würde von daher mal interessieren:
    Welchen Durchmesser hat dein Rad und deine Schlitzscheibe und welche Lichtschranke hast du mit welcher Schaltung verwendet? Ließt du den Wert analog oder digital? Welche Geschwindigkeiten/Drehzahlen konntest du erfolgreich messen?


    Viele Grüße
    Arne

    • Offizieller Beitrag

    Hallo Arne,


    das Encoderrad hat 100 Schlitze. Die Lichtschranke ist nicht so die Wucht aber ging nach Experimenten mit Schrrägstellung auf der Achs-Achse recht zuverlässig. Die Achse ist Seitenverschiebbar, das ganze Lichtschrankengehäuse aber ebenfalls. Irgendwie fehlen mir die Fotos davon im ausgebauten Zustand.


    Die zwei Signalausgänge der Lichtschranken gehen einer auf den Timer-Clockeingang eines 16-Bit-Timers der MPU und beide durch einen Flipflop zur Richtungserkennung (Ausgang in die MPU und da gibt es einen Interrupt bei Richtungswechsel). Der Timer wird alle 60ms ausgelesen und die Geschwindigkeit berechnet. Somit ist der Ausgang sehr CPU-schonend und zuverlässig. Bei (viel zu) hohen Geschwindigkeiten gibt es noch Sprünge in der Telemetrieanzeige, da muss ich mal nachrechnen ob das ein Integerüberlauf ist.


    Viele Grüße,
    Stefan

  • Hallo Stefan,


    danke für die Infos. Ja, wie ich vermutete, du hast das etwas mehr zuende gedacht als ich. Ich hab meine Lichtschranke an einen Analogeingang und dann versucht da was rauszuinterpretieren. Ich vermute ich habe einfach da einfach schon die Rechenzeit "verbraten". Mit Halbleitern und deren Verwendung stehe ich ziemlich auf Kriegsfuß. Auch mit Timer-Routinen. Irgendwie nicht meine Welt ;)


    Vielleicht frag' ich dich irgendwann nochmal konkreter nach Ideen. Derzeit liegt der Waggon kieloben und wartet auf modellbauerischen Unterboden. Dann soll das LED-Segmendisplay hinter der Schiebetür mal gegen eine BLE-Verbindung ausgetauscht werden... Dabei könne man auch die Messung nochmal refactorn.


    Viele Grüße
    Arne

    • Offizieller Beitrag

    Hallo Arne,


    gerne, frag ruhig.


    Ich habe in den letzten Tagen zwei mal die Telemetrieleitung neu angelötet. Da das erst nachträglich in den Schaltplan gekommen ist, ist das recht windig. Nun hat die Pattex-Knarre für Ruhe an den Lötstellen gesorgt.


    Dabei sind mal noch ein paar Bilder entstanden. Zoltan Murphy ärgert mich auch grade. Die Kesseltemperaturanzeige ist 25 Grad zu niedrig. der Druck steigt bei 75°C. Die anderen Anzeigen sind in Ordnung. Solche Fehlersuchen muss man wollen ...





    Viele Grüße,
    Stefan