Bislang beruhten meine Ent­wick­lungen für Belegt­melder immer auf dasselbe alt­herge­­brachte Kon­­­zept: Stromsensor auf der Ba­sis von anti­pa­ral­lelen Silizium-Gleich­richter-Dio­den mit Bypass Wi­der­­stand, Tran­sis­tor als Komparator (Bau­stein, der Span­nun­gen ver­gleicht) und Optokoppler zur Tren­­­­nung von Gleis­span­nung und Ver­sor­gungs­span­nung der Elektronik (RM-BUS, CAN, S88, o.ä.).
Bei den herkömmlichen Belegt­mel­dern wurde ein Modul mit 4, 8 oder 16 Strom­sensoren unter der Anlagen­platte ver­baut, mit den Gleisen ver­drah­tet und über Bus mit der Zen­trale oder dem PC ver­bun­den. Im neu­en Konzept soll der Be­legt­melder mit dem C-Gleis zu einer Ein­heit wer­den. Die Belegt­meldungen sollen über WLAN die Zen­trale­ oder den PC er­reichen. So wird das C-Gleis zu einem flexibel verwendbaren Bau­ele­ment für Tisch- und Tep­pich­bah­ner, die auch ihre provisorisch auf­gebaute Anlage auto­mati­sieren wol­len. Es kommt das Roco / Fleischmann Z21 Ethernet Proto­koll zur An­wendung.
Die Umstellung auf WLAN und der Wunsch, keine weiteren Versor­gungs­lei­tun­gen durch die Anlage zu ziehen, führ­ten dazu, dass die digitale Gleis­span­nung zur Versorgung der elek­tro­nisch­en Kom­po­nenten verwendet wur­de.
Es gibt aber wohl kaum Spannungs­­wand­­ler, die klein genug für den Ein­bau in die Bettung des C-Gleises sind und eine isolierte Aus­gangsspannung von 3,3 V für den verwen­deten WLAN Baustein ESP12-E liefern. Der ESP12-E ist eine sehr kompakte SMD Bauart des be­kann­ten Espressif ESP8266 Pro­zessors. Durch diese nicht-isolierte Strom­ver­sorgung haben nun der ESP12-E und das Gleis eine elek­trische Ver­bin­dung. Die Ver­wendung eines Opto­kopplers ist da­mit sinn­los ge­wor­den. Außerdem führt bereits das auf­gebaute WLAN von sich aus zu einer gal­va­ni­schen Trennung von Gleis­span­nung und nach­fol­gen­dem PC oder Tablet.
Die nächste Frage, die sich zwangs­läufig stellte, war die nach dem Kom­pa­ra­tor. Um aber für 2 Belegt­melder je die obere (belegt) und die untere (frei) Spannung zu verglei­chen wären schon 4 Kompa­ra­toren mit zusätz­li­chen Bau­teilen not­wen­dig gewesen. Hat nicht der ESP8266, bzw. in unser­em Fall der ESP12-E, auch einen ana­logen Eingang, mit dem man Span­nun­gen im Bereich der Dio­den­durch­lass­spannung von 0 – 700 mV (Silizium Dioden) oder 0 – 500 mV (Schottkydioden) messen kann? Richtig, aber leider sind es nicht 8, 4 oder 2 Ein­gänge, sondern ist es nur einer. Der müss­te aber dann gemein­sam, reihum, von allen Sen­sor­ka­nä­len ver­wen­det werden.

Multiplexer

Der C-Mos Baustein CD4051 macht genau das. Er verfügt über 8 elek­tro­nische „Schal­ter“ mit einem gemeinsamen Pol. Welcher von den 8 Schaltern das Mess­sig­nal zum ESP12-E leitet, wird über 3 Binäreingänge ent­­schie­den. Der CD4051 wird genau­so mit 3,3 V gespeist wie der ESP12-E. Er ist klein und erfordert keine Be­schal­tung mit ex­ternen Kompo­nen­ten. Dass wir mit diesem Konzept nur positive Span­nun­gen U messen, ist aber noch ein Nach­teil. Im alten Kon­zept wurden zwar auch nur die posi­tiven Halbwellen gemessen, das aber kontinuierlich. Die Mes­sung im neu­em Konzept erfolgt zyklisch in der Hauptschleife des ESP12-E Pro­gramms. Es erfordert immer 2 Schritte, zuerst die Aus­wahl des Kanals über den Multi­plexer, und anschließend die eigentliche Messung und Aus­wertung.
Vom alten Konzept sind also nur die anti­parallelen Dioden mit By­pass Wi­der­stand, der ESP8266 als Kompa­ra­tor und das WLAN als Schnittstelle zur Zen­tra­le oder PC ge­blie­ben. Da der ESP12-E ein sehr leistungsstarker Mi­kro­pro­zessor ist, sind wir in der Lage, das Protokoll für diese Verbin­dung frei zu wählen.

Messverfahren

Das Messverfahren am Beispiel des Trix C-Gleises

Die Messung des Span­nungs­ab­falls U über die Dioden ist nur rele­vant, wenn die Span­­nung über die Dioden positiv ist. Da die digi­tale Gleis­spannung eine Wechsel­span­nung ist, kann nur wäh­rend der positiven Halbwellen, also quasi nur die halbe Zeit sinn­voll gemes­sen werden. Um im­mer korrekt zu messen, müsste da­her theo­re­tisch der Multi­plexer mit den Flan­ken der DCC Span­nung synchronisiert wer­­den. Mit einem Trick kann man sich aber die dafür notwendige Hard- und Software spa­ren.
Mit einem Spannungsteiler wird der ana­loge Eingang des ESP12-E auf ca. 512 (mV) gelegt. Das ist der halbe Ein­gangs­bereich (0 – 1023). Die 3,3 V Versor­gungs­­span­nung geht über einen 220 kOhm Wider­stand an den ADC-Eingang und vom ADC-Eingang geht ein 39 kOhm Wider­stand auf den Pin 3, den Ausgang des Multiplexers CD4051.

Mit dem analogen Eingang des ESP12-E wird aktuell die Span­nung U so oft wie mög­lich ge­messen. Bei jedem neu­­en Durchlauf wird der Multi­plex­er-Index um 1 er­höht. Spä­tes­tens nach 2 (oder 4, oder 8) Zyklen wird wieder der Ka­nal 1 mit dem ana­lo­gen Eingang des ESP verbunden. Kurz nach dem Einschalten eines Multi­plex­er Ka­nals wird mit einer kleinen Zeit­­ver­zö­ge­rung gemessen. Ist das Er­geb­nis höher als der Schwell­wert für „belegt“, dann bedeutet das:

  1. Die Messung fand statt als die DCC Spannung positiv war und
  2. der Abschnitt ist auf jeden Fall be­legt.

Es wird vom ESP sofort ein Tele­gramm „besetzt“ abgesetzt.
Ist das Messergebnis kleiner als ein zwei­ter Schwellwert für „frei“, dann bedeutet das:

  1. die DCC Spannung war kurz weg (Mikro-Kurzschluss) oder
  2. der Abschnitt ist frei oder
  3. es gibt ein Kontaktproblem zwischen Rad und Schiene oder zwischen Schleifer und PuKos

Wiederholt sich diese Messung mehr­mals mit dem gleichen Ergeb­nis, kann nach n Mes­sun­gen davon aus­ge­gangen werden, dass der Abschnitt tat­säch­lich frei ist. Dann wird das Te­le­gramm „frei“ abge­setzt.
Wenn vor Ablauf der n Messungen wie­der eine positive Messung ge­­macht wird, wird der Zähler gelöscht (n = 0). Falls zu­letzt „belegt“ gemeldet wurde, bleibt die­se Meldung gültig. Erreicht der Zähler den Wert n, dann wird nur ein „frei“ Tele­gramm abge­setzt, wenn vorher „belegt“ war.
So wird der Datenverkehr im WLAN auf die relevanten Meldungen redu­ziert. M. a. W. es wer­den nur die Än­de­run­gen ge­mel­det.
Die „frei“ Meldung wird um n Mes­sun­gen verzögert. Das hat fol­gen­de Vor­teile:

  1. Dreckige Gleise führen weniger schnell zum Freimelden
  2. Mikro-Kurzschlüsse werden ignoriert
  3. Abschalten der digitalen Gleis­span­nung führt nicht zum Frei­melden (die Versorgungs­span­nung ist vor Ablauf der 20 „frei-Mes­sun­gen“ weg.
  4. Der Belegtmelder „glüht“ etwas nach, ein Feature, das man z.B. in der Z21 App und bei Modell­bahn­steuer­pro­gram­men einstellen muss.

Je nach Anzahl der RM-Kanäle, muss der Parameter n für die auf­ein­ander­folgende Anzahl von Messungen mit negativem Ergebnis angepasst wer­den. Die Schwell­werte für „frei“ und „belegt“ werden von der gewünsch­ten Empfindlichkeit be­stimmt. Die Vor­ein­stel­lung reicht für eine Be­legt­meldung mit dem „feuchten Fin­ger“. Der hier verwendete ESP12-E hat einen Analogeingang mit einem Ein­gangsbereich von 0 – 1 V.

Für die Variante 2-Kanal embedded Rückmeldemodul zum Einbau in das C-Gleis RMEM2xI reduziert dieses Konzept die Anzahl der Bauteile be­trächtlich. Es werden nur noch 19 Bau­teile be­nö­tigt!

Loop() braucht im aktuellen Sketch et­was mehr als 1 ms. Alle De­bug Aus­ga­ben sind dabei eingeschaltet. Das er­laubt das Umschalten des Mul­ti­plex­ers alle 2,048 ms und das Messen über den ADC in einem Zeitrahmen von 1 – 768 µs nach der Umschaltung.
Für die Geschwindigkeit des 2-fach-Rück­mel­de­mo­duls bedeutet das:

  1. „Belegt“ Meldung im schlechtesten Fall nach 5 ms +- Streuung durch fehlende Syn­chro­ni­sie­rung mit dem DCC Signal. Op­ti­scher Eindruck „sofort“.
  2. „Frei“ Meldung nach spätestens 80 ms. (n = 20).

Programmierung

Das RM Modul meldet sich mit dem „LAN_CAN_DETECTOR“ Tele­gramm aus der Roco Pro­to­koll Spezifikation. Es ver­wendet dabei die Adressen kanal­be­zo­gen (1 – 2048). Für die Ver­gabe dieser Adres­sen gibt es folgende Möglich­kei­ten:

  1. Angabe der gewünschte Adresse im Quellcode (nur für In­si­der im Besitz des Quellcode).
  2. Definition der Adresse über das Rocrail Z21 Menü im Programm Rocrail unter Roc­rail Eigen­schaf­ten. Setzt voraus, dass bei der Program­mierung nur ein Modul online ist.
  3. Programmierung über CV ist mit dem Programm Rocrail mög­lich und ge­tes­tet. Betriebsart POM für Acces­so­ry Decoder. Als Adresse dient die NID des Sensormoduls (NID = eindeutige Netz­werk Identifikation). Stand April 2020.
  4. Programmierung über Web­brow­ser. Wurde noch im Oktober 2019 reali­siert, erlaubt im Moment aber nur die Angabe von Adresse und Sensor­grup­pe.
  5. Programmierung mittels App und dem UDP Telegramm POM_ACC_CV. Als Adresse für die POM Program­mie­rung wird die NID des Moduls verwendet – Die App wurde noch nicht rea­lisiert. Die Funktionalität wird vorerst durch das Web-Interface und der Rocrail POM Schnittstelle für die Z21 abgedeckt.

Varianten

Steckbrettvariante des RMEM2xI mit 2 x 22k als Lastwiderstand. Variante noch ohne Vorspannung auf den analogen Eingang. Der FTDI232 USB nach seriell Umsetzer dient nur der Programmierung. Er kann auch für das Monitoring verwendet werden.

Achtung: Bei der Verwendung des USB Ports eines ESP-Boards oder wie hier des USB-Ports des FTDI232 Wand­lers, wird die Masse vom PC mit der Gleis­spannung verbunden. Da der PC geerdet ist und die Gleis­span­nung meistens auch Bezug auf Masse hat, führt das un­wei­gerlich zu Problemen oder zu Beschädi­gung der Hardware! Verwenden sie einen isolierten USB Adapter oder einen iso­lier­ten PC.

Die Varianten für die 2, 4 und 8 Kanäle verwenden im Prinzip den­selben Quell­code. Die An­zahl der Kanäle wird über „#define FB_PER_MODULE 2 „ (uiNrCh) definiert und der Sketch danach neu kompiliert. Dass für jede Variante eine andere Zahl für Parameter n (Anzahl der auf­ein­an­der­fol­gen­den „frei“-Messungen) verwendet wer­den muss, ist klar. Z.Zt. ist nur n=20 für die 2-Fach Variante de­finiert.
Auf dem Steckbrett wurden zur Probe die Variante mit dem Wemos D1 Mini und eine Vari­an­te mit ESP-12E und FTDI-FT232 zum Pro­gram­mieren und De­bug­gen aufgebaut. Damit man das noch mal nach­bauen kann, habe ich sie mit fritzing © dokumentiert. Mit dem Versuch ist auch belegt, dass 22 kOhm als Last für eine Belegt­mel­dung ausreichend sind. Die Schwell­werte für beide Varianten un­ter­­schei­den sich. Beim ESP12-E wurde die 120 als unteren Wert für die Belegt­meldung und 80 als oberen Wert für die Frei­mel­­dung verwendet. Der zur Verfü­gung gestellte binäre Programmcode enthält die Werte für den ESP12-E.

Auch für Gleichspannung?

Theoretisch kann das Modul RMEM2xI auch für kon­ven­tio­nel­le, also Gleich- oder Wechsel­strom­­bahn­en benutzt wer­den. Das Pro­blem da­bei ist, dass im Stand oder bei sehr langsamer Fahrt der ana­logen Fahr­zeuge keine Gleisspannung mehr da ist und die Rück­meldebausteine nicht ver­sorgt werden. Das könnte man durch Überlagerung der Gleis­span­nung mit einem niederfrequenten Sig­nal, wie z.B. aus einem (ausge­dien­ten) EMS Fahrpult verhin­dern. Damit stünde am Gleis im­mer Spannung an und die Rückmelder wären zu jeder Zeit betriebsbereit und würden auch stehende Triebfahrzeuge und „feuch­te Finger“ jederzeit melden.
Nun liegen die Bereiche, in denen „be­legt“ gemessen wird, zwi­schen 0 und 380 und zwischen 620 und 1024. Liegt der analoge Mess­wert zwischen 420 und 580 dann meldet sich der Sensor (nach n Leermessungen) als nicht belegt.

Ein bestückter Baustein RMEM2xI als Stromsensor zum Einbau in ein C-Gleis

Die erste Bewährungsprobe be­stan­den die RMEM2xI Rück­mel­de­mo­du­le auf der Modellbahn­austellung im Lok­schup­pen Hochdahl, wo sie gegen Roc­o 10808 Rückmelder antreten mussten.


Betrieb der Rückmelder

Z21 Emulation

Die im C-Gleis eingebauten Rück­mel­der brauchen für den Betrieb mit einer Mo­dell­bahn­­soft­­ware noch ein Z21 Gate­way. Das Gateway ist ein Wemos D1 Mini oder ein NodeMCU WLAN Ent­wick­lungs­mo­dul. Es wird über USB Port mit Spannung versorgt und die Firm­ware für das Z21 Gate­way (siehe unten) wird aufge­spielt. Das Gate­way stellt ein WLAN zur Ver­fü­gung, an das sich bis zu 8 ein­ge­bau­te Rückmelder anmel­den. Es leitet die Rück­mel­dun­gen aus dem C-Gleis an den PC weiter und emu­liert im PC eine (weitere) Z21 Zen­trale. Die Konfiguration des Z21 Gateways ist hier beschrieben.

Direktbetrieb an CS2

Diese Variante kommt ohne Gateway aus und verwendet das Mär­klin CAN-Bus Protokoll über Ethernet. Die Rück­mel­dun­gen werden direkt im Gleisbild-Display der CS2 angezeigt. Die Weiter­gabe der Rück­mel­de­infor­mation an ein Mo­dell­bahn­steuer­pro­gramm ist über die Funk­tion „Broad­cast“ in der CS2 bereits von Märklin rea­lisiert und wurde mit den Pro­gram­men Rocrail, iTrain und Wdp ge­prüft. Die Software für das RMEM2xI WLAN Rück­mel­de­modul für die CS2 steht hier zum Download bereit.

Nachbau

Downloads für den eingebauten 2-Kanal SMD Stromsensor (RMEM2xI)
Binärcode für den ESP12-E auf dem RMEM2xI Stromsensormodul (Z21-Emulation)
Binärcode für den ESP12-E (ESP-07) auf dem RMEM2xI Stromsensormodul für die CS2 (CAN-CS2 Protokoll).
Eagle und Gerber Dateien für die Herstellung der RMEM2xI Platine
Schaltplan für das RMEM2xI Stromsensormodul
Stückliste für das RMEM2xI Stromsensormodul
Reichelt Warenkorb für RMEM2xI
Downloads für das Sensorgateway
Binärcode für das Z21 Sensorgateway V4.5
Anleitung zum Konfigurieren und Debuggen von Sensormodul und Gateway
Platine RMEM2xI
Platinen bestellen
Weitere Links
Dimo 2020/03 Artikel „Versteckter Detektor“
3-seitiger Aufsatz mit Link auf weitere 4 Seiten und Linkliste

Nachtrag:

Für das Z21 EtherNet Protokoll gibt es mittlerweile eine „NextGen“ Ausführung der Firmware. Die Hardware wird unverändert weiter verwendet. Die Besonderheiten dieser Variante sind:

  • Wegfall der 8-Limitierung des Gateways
  • Einfachere Konfiguration des Netzwerkes
  • Sehr ausführliche Konfiguration von Parametern über Web-Interface
  • Gleiches Aussehen der Web-Oberfläche auf Handy und Desktop-PC
  • Wegfall der APXXXX WLAN Netze der Sensormodule und des Gateways („Mediators“)
  • Mehr Information, auch ohne „Serial Monitor“
  • OTA Firmware Transfer für eventuelle Updates

Die NextGen Varianten der Sensor- (und Aktor-) Module sind in diesem Blog beschrieben.

Letzter Update: 13.5.2021