Bislang beruhten meine Entwicklungen für Belegtmelder immer auf dasselbe althergebrachte Konzept: Stromsensor auf der Basis von antiparallelen Silizium-Gleichrichter-Dioden mit Bypass Widerstand, Transistor als Komparator (Baustein, der Spannungen vergleicht) und Optokoppler zur Trennung von Gleisspannung und Versorgungsspannung 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 verbunden. Im neuen Konzept soll der Belegtmelder mit dem C-Gleis zu einer Einheit werden. Die Belegtmeldungen sollen über WLAN die Zentrale oder den PC erreichen. So wird das C-Gleis zu einem flexibel verwendbaren Bauelement für Tisch- und Teppichbahner, die auch ihre provisorisch aufgebaute Anlage automatisieren wollen. Es kommt das Roco / Fleischmann Z21 Ethernet Protokoll zur Anwendung.
Die Umstellung auf WLAN und der Wunsch, keine weiteren Versorgungsleitungen durch die Anlage zu ziehen, führten dazu, dass die digitale Gleisspannung zur Versorgung der elektronischen Komponenten verwendet wurde.
Es gibt aber wohl kaum Spannungswandler, die klein genug für den Einbau in die Bettung des C-Gleises sind und eine isolierte Ausgangsspannung von 3,3 V für den verwendeten WLAN Baustein ESP12-E liefern. Der ESP12-E ist eine sehr kompakte SMD Bauart des bekannten Espressif ESP8266 Prozessors. So haben über die Stromversorgung der ESP12-E und das Gleis eine elektrische Verbindung. Die Verwendung eines Optokopplers ist damit sinnlos geworden. Außerdem führt bereits das aufgebaute WLAN von sich aus zu einer galvanischen Trennung von Gleisspannung und nachfolgendem PC oder Tablet.
Die nächste Frage, die sich zwangsläufig stellte, war die nach dem Komparator. Um aber für 2 Belegtmelder je die obere (belegt) und die untere (frei) Spannung zu vergleichen wären schon 4 Komparatoren mit zusätzlichen Bauteilen notwendig gewesen. Hat nicht der ESP8266, bzw. in unserem Fall der ESP12-E, auch einen analogen Eingang, mit dem man auch Spannungen im Bereich der Diodendurchlassspannung 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 Sensorkanälen verwendet werden.
Multiplexer
Der C-Mos Baustein CD4051 macht genau das. Er verfügt über 8 elektronische „Schalter“ mit einem gemeinsamen Pol. Welcher von den 8 Schaltern das Messsignal zum ESP12-E leitet, wird über 3 Binäreingänge entschieden. Der CD4051 wird genauso mit 3,3 V gespeist wie der ESP12-E. Er ist klein und erfordert keine Beschaltung mit externen Komponenten. 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 Messung 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 Messung und Auswertung.
Vom alten Konzept sind also nur die antiparallelen Dioden mit Bypass Widerstand, der ESP8266 als Komparator und das WLAN als Schnittstelle zur Zentrale oder PC geblieben. Da der ESP12-E ein sehr leistungsstarker Mikroprozessor ist, sind wir in der Lage, das Protokoll für diese Verbindung frei zu wählen.
Messverfahren

Die Messung des Spannungsabfalls U über die Dioden ist nur relevant, wenn die Spannung über den Dioden positiv ist. Da die digitale Gleisspannung eine Wechselspannung ist, kann nur während der positiven Halbwellen, also quasi nur die halbe Zeit sinnvoll gemessen werden. Um immer korrekt zu messen, müsste daher theoretisch der Multiplexer mit den Flanken der DCC Spannung synchronisiert werden. Mit einem Trick kann man sich aber die dafür notwendige Hard- und Software sparen.
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 Widerstand an den ADC-Eingang und vom ADC-Eingang geht ein 39 kOhm Widerstand auf den Pin 3, den Ausgang des Multiplexers CD4051.
Mit dem analogen Eingang des ESP12-E wird aktuell die Spannung U so oft wie möglich gemessen. Bei jedem neuen Durchlauf wird der Multiplexer-Index um 1 erhöht. Spätestens nach 2 (oder 4, oder 8) Zyklen wird wieder der Kanal 1 mit dem analogen Eingang des ESP verbunden. Kurz nach dem Einschalten eines Multiplexer Kanals wird mit einer kleinen Zeitverzögerung gemessen. Ist das Ergebnis höher als der Schwellwert für „belegt“, dann bedeutet das:
- Die Messung fand statt als die DCC Spannung positiv war und
- 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:
- die DCC Spannung war kurz weg (Mikro-Kurzschluss) oder
- der Abschnitt ist frei oder
- es gibt ein Kontaktproblem zwischen Rad und Schiene oder zwischen Schleifer und PuKos
Wiederholt sich diese Messung mehrmals mit dem gleichen Ergebnis, kann nach n Messungen davon ausgegangen werden, dass der Abschnitt tatsächlich frei ist. Dann wird das Telegramm „frei“ abgesetzt.
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 abgesetzt, wenn vorher „belegt“ war.
So wird der Datenverkehr im WLAN auf die relevanten Meldungen reduziert. M. a. W. es werden nur die Änderungen gemeldet.
Die „frei“ Meldung wird um n Messungen verzögert. Das hat folgende Vorteile:
- Dreckige Gleise führen weniger schnell zum Freimelden
- Mikro-Kurzschlüsse werden ignoriert
- Abschalten der digitalen Gleisspannung führt nicht zum Freimelden (die Versorgungsspannung ist vor Ablauf der 20 „frei-Messungen“ weg.
- 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 aufeinanderfolgende Anzahl von Messungen mit negativem Ergebnis angepasst werden. Die Schwellwerte für „frei“ und „belegt“ werden von der gewünschten Empfindlichkeit bestimmt. Die Voreinstellung 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 beträchtlich. Es werden nur noch 19 Bauteile benötigt!
Loop() braucht im aktuellen Sketch etwas mehr als 1 ms. Alle Debug 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:
- „Belegt“ Meldung im schlechtesten Fall nach 5 ms +- Streuung durch fehlende Synchronisierung mit dem DCC Signal. Optischer Eindruck „sofort“.
- „Frei“ Meldung nach spätestens 80 ms. (n = 20).
Programmierung
Das RM Modul meldet sich mit dem „LAN_CAN_DETECTOR“ Telegramm aus der Roco Protokoll Spezifikation. Es verwendet dabei die Adressen kanalbezogen (1 – 2048). Für die Vergabe dieser Adressen gibt es folgende Möglichkeiten:
- Angabe der gewünschte Adresse im Quellcode (nur für Insider im Besitz des Quellcode).
- Definition der Adresse über das Rocrail Z21 Menü im Programm Rocrail unter Rocrail Eigenschaften. Setzt voraus, dass bei der Programmierung nur ein Modul online ist.
- Programmierung über CV ist mit dem Programm Rocrail möglich und getestet. Betriebsart POM für Accessory Decoder. Als Adresse dient die NID des Sensormoduls (NID = eindeutige Netzwerk Identifikation). Stand April 2020.
- Programmierung über Webbrowser. Wurde noch im Oktober 2019 realisiert, erlaubt im Moment aber nur die Angabe von Adresse und Sensorgruppe.
- 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 realisiert. Die Funktionalität wird vorerst durch das Web-Interface und der Rocrail POM Schnittstelle für die Z21 abgedeckt.
Varianten

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 Gleisspannung verbunden. Da der PC geerdet ist und die Gleisspannung 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 denselben Quellcode. Die Anzahl 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 aufeinanderfolgenden „frei“-Messungen) verwendet werden muss, ist klar. Z.Zt. ist nur n=20 für die 2-Fach Variante definiert.
Auf dem Steckbrett wurden zur Probe die Variante mit dem Wemos D1 Mini und eine Variante mit ESP-12E und FTDI-FT232 zum Programmieren und Debuggen aufgebaut. Damit man das noch mal nachbauen kann, habe ich sie mit fritzing © dokumentiert. Mit dem Versuch ist auch belegt, dass 22 kOhm als Last für eine Belegtmeldung ausreichend sind. Die Schwellwerte 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 Freimeldung 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 konventionelle, also Gleich- oder Wechselstrombahnen benutzt werden. Das Problem dabei ist, dass im Stand oder bei sehr langsamer Fahrt der analogen Fahrzeuge keine Gleisspannung mehr da ist und die Rückmeldebausteine nicht versorgt werden. Das könnte man durch Überlagerung der Gleisspannung mit einem niederfrequenten Signal, 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, zwischen 0 und 380 und zwischen 620 und 1024. Liegt der analoge Messwert zwischen 420 und 580 dann meldet sich der Sensor (nach n Leermessungen) als nicht belegt.

Die erste Bewährungsprobe bestanden die RMEM2xI Rückmeldemodule 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 Modellbahnsoftware 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 Modellbahnsteuerprogramm 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 RMEM2xI WLAN Rückmeldemodul 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 |
Schreibe einen Kommentar