Bislang beruhten meine Entwicklungen für Belegtmelder immer auf dasselbe alt­herge­­brachte Kon­zept: Stromsensor auf der Ba­sis von anti­pa­ral­lelen Silizium-Gleichrichter-Dioden mit Bypass Widerstand, Tran­sis­tor als Komparator (Bau­stein, der Span­nungen ver­gleicht) und Optokoppler zur Trennung von Gleis­span­nung und Versorgungs­span­nung der Elektronik (RM-BUS, CAN, S88, o.ä.).
Bei den herkömmlichen Belegtmeldern wurde ein Modul mit 4, 8 oder 16 Stromsensoren unter der Anlagenplatte verbaut, mit den Gleisen verdrahtet und über Bus mit der Zentrale oder dem PC ver­bunden. Im neuen Konzept soll der Belegtmelder mit dem C-Gleis zu einer Einheit werden. Die Belegt­meldungen sollen über WLAN die Zen­trale oder den PC erreichen. 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 automatisieren wollen. Es kommt das Roco/Fleischmann Z21 Ethernet Protokoll zur Anwendung.
Die Umstellung auf WLAN und der Wunsch, keine weiteren Versor­gungs­lei­tun­gen durch die Anlage zu ziehen, führten 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 Spannungswandler, die klein genug für den Einbau in die Bettung des C-Gleises sind und eine isolierte Aus­gangsspannung von 3,3 V für den verwendeten WLAN Baustein ESP12-E liefern. Der ESP12-E ist eine sehr kompakte SMD Bauart des be­kann­ten Espressif ESP8266 Prozessors. So haben über die Strom­versorgung der ESP12-E und das Gleis eine elek­trische Ver­bin­dung. Die Verwendung eines Optokopplers ist damit sinn­los ge­worden. Außerdem führt bereits das auf­gebaute WLAN von sich aus zu einer galvanischen Trennung von Gleisspannung und nach­fol­gen­dem PC oder Tablet.
Die nächste Frage, die sich zwangsläufig stellte, war die nach dem Kom­pa­ra­tor. Um aber für 2 Belegtmelder je die obere (belegt) und die untere (frei) Spannung zu vergleichen wären schon 4 Kompa­ra­toren mit zusätzlichen Bau­teilen notwendig gewesen. Hat nicht der ESP8266, bzw. in unserem Fall der ESP12-E, auch einen analogen Eingang, mit dem man auch 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 Eingänge, sondern ist es nur einer. Der müsste aber dann gemeinsam, 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 genauso mit 3,3 V gespeist wie der ESP12-E. Er ist klein und erfordert keine Be­schal­tung mit ex­ternen Kompo­nenten. Dass wir mit diesem Konzept nur positive Spannungen U messen, ist aber noch ein Nachteil. Im alten Konzept wurden zwar auch nur die positiven Halbwellen gemessen, das aber kontinuierlich. Die Mes­sung im neuem Konzept erfolgt zyklisch in der Hauptschleife des ESP12-E Programms. Es erfordert immer 2 Schritte, die Auswahl des Kanals über den Multiplexer, und die eigentliche Nachteil.
Vom alten Konzept sind also nur die antiparallelen Dioden mit By­pass Wi­der­stand, der ESP8266 als Komparator 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 Verbindung frei zu wählen.

Messverfahren

Das Messverfahren am Beispiel des Trix C-Gleises

Die Messung des Spannungsabfalls U über die Dioden ist nur relevant, wenn die Span­nung über den Dioden positiv ist. Da die digitale Gleis­spannung eine Wechsel­span­nung ist, kann also nur während der positiven Halbwellen, also quasi nur die halbe Zeit sinn­voll gemes­sen werden. Um im­mer korrekt zu messen, müsste daher theoretisch 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 analoge Eingang des ESP12-E auf ca. 512 (mV) gelegt. Das ist der halbe Eingangsbereich (0 – 1023). Die 3,3 V Versorgungsspannung 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 Spannung U so oft wie es geht, gemessen. Bei jedem neu­en Durchlauf wird der Multiplexer-Index um 1 er­höht. Spätestens nach 2 (oder 4, oder 8) Zyklen wird wieder der Ka­nal 1 mit dem ana­logen Eingang des ESP verbunden. Kurz nach dem Einschalten eines Multiplexer Ka­nals wird mit einer kleinen Zeit­verzögerung 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 belegt.

Es wird vom ESP sofort ein Telegramm „besetzt“ abgesetzt.
Ist das Messergebnis kleiner als ein zweiter 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 mehrmals mit dem gleichen Ergeb­nis, kann nach n Mes­sun­gen davon ausgegangen werden, dass der Abschnitt tat­säch­lich frei ist und wird das Tele­gramm „frei“ abge­setzt.
Wenn vor Ablauf der n Messungen wieder eine positive Messung gemacht wird, wird der Zähler gelöscht (n = 0). Falls zuletzt „belegt“ gemeldet wurde, bleibt diese Meldung gültig. Erreicht der Zähler den Wert n, dann wird nur ein „frei“ Telegramm abge­setzt, wenn vorher „belegt“ war.
So wird der Datenverkehr im WLAN auf die relevanten Meldungen reduziert. M. a. W. es wer­den nur die Änderungen ge­mel­det.
Die „frei“ Meldung wird um n Messungen 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 Gleisspannung führt nicht zum Frei­melden (die Versorgungsspannung ist vor Ablauf der 20 „frei-Messungen“ weg.
  4. Der Belegtmelder „glüht“ etwas nach, ein Feature, das man z.B. in der Z21 App und bei Modellbahnsteuerprogrammen 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 werden. Die Schwellwerte für „frei“ und „belegt“ werden von der gewünschten Empfindlichkeit bestimmt. Die Vor­ein­stel­lung reicht für eine Belegtmeldung mit dem „feuchten Finger“. Der hier verwendete ESP12-E hat einen Analogeingang mit einem Eingangsbereich 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 etwas mehr als 1 ms. Alle De­bug Ausgaben sind dabei eingeschaltet. Das erlaubt das Umschalten des Multiplexers 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ückmeldemoduls 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 kanalbezogen (1 – 2048). Für die Ver­gabe dieser Adres­sen gibt es folgende Möglichkeiten:

  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ü unter Roc­rail Eigenschaften. Setzt voraus, dass bei der Programmierung nur ein Modul online ist.
  3. Programmierung über CV ist mit dem Programm Rocrail mög­lich und getestet. Betriebsart POM für Accessory Decoder. Als Adresse dient die NID des Sensormoduls (NID = eindeutige Netz­werk Identifikation). Stand April 2020.
  4. Programmierung über Webbrowser. Wurde noch im Oktober 2019 realisiert, erlaubt im Moment aber nur die Angabe von Adresse und Sensorgruppe.
  5. Programmierung mittels App und dem UDP Telegramm POM_ACC_CV. Als Adresse für die POM Programmierung 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 Wandlers, wird die Masse vom PC mit der Gleis­spannung verbunden. Da der PC geerdet ist und die Gleisspannung ebenfalls meistens auch Bezug auf Masse hat, führt das unweigerlich zu Problemen oder zu Beschädigung der Hardware! Verwenden sie einen isolierten USB Adapter oder einen isolierten PC.

Die Varianten für die 2, 4 und 8 Kanäle verwenden im Prinzip den­selben Quellcode. 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 Debuggen 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­meldung ausreichend sind. Die Schwell­werte für beide Varianten unterscheiden sich. Beim ESP12-E wurde die 120 als unteren Wert für die Belegtmeldung 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­tionelle, also Gleich- oder Wechselstrombahnen benutzt werden. Das Pro­blem dabei ist, dass im Stand oder bei sehr langsamer Fahrt der ana­logen Fahrzeuge keine Gleisspannung mehr da ist und die Rück­meldebausteine nicht versorgt werden. Das könnte man durch Überlagerung der Gleis­spannung mit einem niederfrequenten Sig­nal, wie z.B. aus einem (ausgedienten) EMS Fahrpult verhindern. Damit stünde am Gleis immer Spannung an und die Rückmelder wären zu jeder Zeit betriebsbereit und würden auch stehende Triebfahrzeuge und „feuchte Finger“ jederzeit melden.
Nun liegen die Bereiche, in denen „belegt“ 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 bestanden die RMEM2xI Rück­mel­de­mo­du­le auf der Modellbahnaustellung im Lokschuppen Hochdahl, wo sie gegen Roco 10808 Rückmelder antreten mussten.


Betrieb der Rückmelder

Z21 Emulation

Die im C-Gleis eingebauten Rückmelder brauchen für den Betrieb mit einer Modellbahn­soft­ware noch ein Z21 Gateway. Das Gateway ist ein Wemos D1 Mini oder ein NodeMCU WLAN Entwicklungsmodul. Es wird über USB Port mit Spannung versorgt und die Firmware für das Z21 Gateway (siehe unten) wird aufgespielt. Das Gateway stellt ein WLAN zur Verfügung, an das sich bis zu 8 eingebaute Rückmelder anmelden. Es leitet die Rückmeldungen aus dem C-Gleis an den PC weiter und emuliert im PC eine (weitere) Z21 Zentrale. Die Konfiguration des Z21 Gateways ist hier beschrieben.

Direktbetrieb an CS2

Diese Variante kommt ohne Gateway aus und verwendet das Märklin CAN-Bus Protokoll über Ethernet. Die Rückmeldungen werden direkt im Gleisbild-Display der CS2 angezeigt. Die Weitergabe der Rückmeldeinformation an ein Mo­dell­bahn­steuer­pro­gramm ist über die Funktion „Broadcast“ in der CS2 bereits von Märklin realisiert und wurde mit den Programmen Rocrail, iTrain und Wdp geprüft. Die Software für das WLAN Rückmeldemodul für die CS2 ist in Vorbereitung und wird demnächst hier veröffentlicht.

Nachbau

Downloads für den eingebauten 2-Kanal SMD Stromsensor (RMEM2xI)
Binärcode für den ESP12-E auf dem RMEM2xI Stromsensormodul (Z21-Emulation)
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