Inhaltsverzeichnis
Märklin für Milliways
Worum geht's?
Milliways hat für den 34C3 einen Wettbewerb für einen Hackerspace-Eisenbahnwagen ausgeschrieben.
Idee
Die ursprüngliche Idee war, einen sinobit auf einen umgebauten Märklin-Güterwagen zu setzen und vom Gleis die Versorgungsspannung und das Kontrollsignal von Märklin Digital abzunehmen.
Am besten für einen Umbau eignen sich 4-achsige Flachwagen 4514 aus den 1950er Jahren.
Einen geeigneten Schleifer zu finden, um die Spannung vom Mittelleiter abzunehmen ist aber eher schwierig. Am einfachsten ist es, einen Märklin 7076 Schleifer zu verwenden, aber der passt nur für 2-achsige Wagen der Märklin 4500er Serie, also z.B. dem 2-achsigen Flachwagen 4503.
Wegen der Kapitalmarktfähigkeit der zur DHL zerschlagenen Deutschen Bundespost mit unterbezahlten prekär bei Subunternehmern Angestellten anstatt Postbeamten als Zusteller wurden die sinobits von Derendingen „wegen Unzustellbarkeit“ statt ans FabLab Neckar-Alb ohne Einspruchsmöglichkeit nach Shenzen zurückgeschickt.
Deshalb kommen statt sinobits Konferenzbadges (Chaos Communication Camp 2015 r0ket, SHA2017 badge) zum Einsatz.
Umbau
Von je 3 auf ebay ersteigerten 2-achsigen und 4-achsigen Flachwagen wurde von 2 Vierachsern und einem Zweiachser vorsichtig der Plastikaufbau entfernt und die Chassis aus Metall vermessen und in OpenSCAD eingegeben.
Über den am 2-achsigen Wagen montierten Schleifer kann ein 5V-Schaltnetzteil mit Vierweggleichrichter versorgt werden.
Mit einem Spannungsteiler parallel zum Brückengleichrichter aus 6.8 kΩ-Widerständen gegen die Wechselspannungen und 2 grünen Leuchtdioden in Serie gegen die negative gleichgerichtete Spannung VSS wird die jeweils positive Phase der Wechselspannung auf maximal 4.4 V begrenzt.
Wenn der analoge Trafo auf Null gestellt wird, geht die gleichgerichtete Spannung allerdings nicht ganz auf Null zurück.
(Der dicke Kondensator dient nur als Anschlusspunkt für die VSS und Ozsilloskop-Masse Krokodilklemmen.
Weil ein analoger Märklin-Trafo sekundärseitig galvanisch von der Schutzerde isoliert ist, führt das nicht zu einem Kurzschluss.)
Um ein saubereres digitales Signal zu bekommen und um die Badges gegen Verpeilung und Verpolung zu schützen, werden die Spannungsteiler noch um je einen 100 kΩ-Widerstand gegen VSS parallel zu den grünen LEDs vervollständigt und deren Ausgangssignal mit 74AHC14-Schmitt-Triggern gesäubert.
Ein Spannungsregler mit Brückengleichrichter und Digitalisierungsschaltungen für beide Wechselstromphasen wird mit doppelseitigem Klebeband auf dem 2-achsigen Wagen mit Schleifer befestigt. Das Chassis ist mit blauem Malerklebeband gegen die Platinen isoliert.
Mit OpenSCAD werden ein proof-of-concept Aufbau, eine Halterung für die SHA2017-Badge und eine Halterung für die r0ket entworfen und mit dem Lasercutter aus mitteldichter Faserplatte (MDF) ausgeschnitten.
Umbauwagen mit Badges
In diesem Zeitlupenvideo sind die Badge-Wagen und der Spannungsversorgungswagen aneinandergehängt. Die SHA-Badge wird schon über den Versorgungswagen gespeist.
Die Spannungsversorgung für die r0ket und die Modulationssignaleinspeisung für beide Badges fehlen noch.
In der Zeitlupe erkennt man, dass die LEDs gegenphasig (mit der Differenzfrequenz zwischen der Bildaufnahmerate der Kamera und 50 Hz Netzfrequenz) flackern.
Spannungsversorgungswagen
SHA2017 Badge Wagen
r0ket Wagen
Auf der Milliways-Anlage
Gewonnen!
Mit so viel Overengineering und relativ wenigen Mitbewerbern haben wir den Hackerspacewagen-Wettbewerb gewonnen.
Analyse des Digitalsignals
Vor dem 34C3 stand nur eine analoge Märklin-Eisenbahn zur Verfügung, und auf dem 34C3 war es viel zu hektisch, um viel mehr hinzubekommen als einen 74AHC14 Schmitt-Trigger (buchstäblich) abzurauchen und (diesmal mit Sockel) wieder zu ersetzen.
Nach dem Kongress haben wir [Paul]
- einen Märklin-Digital Controller 60116
- eine mobile station 60657
- ein Netzteil 66361
angeschafft und Pauls S3/6 mit einem mLD3 Lok-Decoder 60982 digitalisiert.
Das digitale Signal wird mit einem RIGOL 1052E-Oszilloskop zunächst direkt vom Gleis,
danach an den komplementären Schmitt-Trigger Ausgängen des Spannungsversorgungswagens
gemessen, gespeichert, und mit einem USB-Stick als .wfm
-Dateien exportiert.
Die Daten im binären .wfm
-Format von RIGOL werden mit wfmutil in CSV konvertiert und in Mathematica importiert.
Der Fortschritt der Analysen findet sich in entsetzlich langen PDF-Ausdrucken von kaum weniger langen Wolfram Mathematica-Notebooks.
mfx-Datenanalyse
Das gemessene digitale Kontrollsignal wiederholt sich alle 50ms und besteht aus 3 durch Pausen getrennten Blöcken.
In Mathematica werden die Datenpakete Run-Length-codiert, um verschiedene Modulationsarten identifizieren und decodieren zu können.
Die zyklisch wiederholte Sequenz beinhaltet
ein zweimal wiederholtes 18-Bit Paket
im MMX-Format
Ein vorläufiger Parser in Mathematica decodiert dieses Paket zunächst in Bits als:
{1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0}
in trits:
{open, open, open, open, 0, open, open, open, open}
Das ist sowohl im ursprünglichen Motorola-Format als auch im MM2-Format ein illegales Paket, dessen Inhalt ignoriert wird, aber wahrscheinlich Märklin-Motorola-Decoder von unkontrolliertem Losfahren abhält.
ein langes Paket
im mfx-Format, das aus 2 mal unmittelbar hintereinander gesendeten mfx-Format-Frames besteht
ein zweimal wiederholtes kürzeres Paket
im mfx-Format
Ein vorläufiger Parser in Mathematica decodiert dieses Paket zunächst in Bits als:
{SYNC, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, SYNC, SYNC}
und in einer 2. Stufe in Befehlssequenzen:
- SYNC
- {A7, 5} 7-bit Adresse 5
- {DRV7, FWD, 0} 7-bit Fahrbefehl vorwärts, Geschwindigkeit 0
- {FUNC16, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}} 16 Funktionen, Funktion 4 aktiv
- korrekte 8-bit CRC
- SYNC
- SYNC
Das lange mfx-Paket wird interpretiert als aus 2 Frames bestehende Bit-Sequenz:
{SYNC, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, SYNC, SYNC, SYNC, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, SYNC, SYNC}
Der zweite Frame des langen mfx-Paketes ist mit den folgenden 2 kürzeren mfx-Paketen identisch.
Der erste Frame des langen mfx-Paketes wird als
- SYNC
- {A7, 0} 7-bit Adresse 0 (broadcast)
- {CENTRALUID, 1195666018, COUNT, 3} UID der Kontrollstation: 1195666018, Anmeldungszähler: 3
- korrekte 8-bit CRC
- SYNC
decodiert.
Noch zu erledigen
Diese Decodierung, vor allem des MM2-Formats, muss noch vervollständigt und dann auf r0ket und SHA-Badge übertragen werden.
Die Betriebssysteme von r0ket, SHA2017 badge (und sino:bit und calliope-mini) müssen so weit verstanden werden, dass keine Interrupts ununterbrochene Datenaufnahme in Echtzeit und drahtlose Übertragung stören können.
Zunächst sollte ein Datenlogging in Echtzeit mit drahtloser Übertragung des unverarbeiteten Digitalsignals programmiert werden, damit die durch Unterbrechungen der Stromzufuhr vom Gleis bei fahrendem Zug entstehenden Signalstörungen verständlich werden.
Von den Signalstörungen hängt ab, wie ein robuster Parser auszusehen hat. Run length encoding ist bei einem gestörten Signal möglicherweise keine gute Lösung.
Leute
tatzelbrumm & Paul Rosset (FabLab Neckar-Alb).
Danke an Goswin für die Schmitt-Trigger, von denen mehrere anstatt von Spannungsreglern oder kaum mehr zu ersetzender Konferenzbadges abgeraucht sind.
Linke Liste
Repositories
- r0ket-Programme (fork von https://github.com/r0ket/r0ket)