Zentrale Z21PG
Eigenbau |
Zentrale Z21PG |
Z21 mobile |
XpressNet |
LocoNet |
Booster
Arduino UNO Version | Arduino MEGA Version | ESP8266 (WeMos D1 mini) Version | ESP32 Version | Sanguino Version
Beschreibung
Hier wird der Aufbau einer DCC Digitalzentrale auf Basis eines Arduino (Arduino MEGA über AliExpress ab 7,30 Euro) zur Steuerung der Modellbahn über das Z21 LAN Protokoll beschrieben. Auf den Arduino MEGA wird in der Grundversion dazu ein Ethernet Shield mit dem W5100 Chip (bei AliExpress ab 4,80 Euro), aufgesetzt. Mit diesem Ethernet Shield, kann der Arduino MEGA in ein bestehendes Netzwerk integriert werden und über einen Router mit WLAN mit Handreglern oder der Computersoftware zum Beispiel Rocrail kommunizieren.
Durch Erweiterungen lässt sich zum Beispiel ein WLAN AP/Client mittels ESP6288 in die Zentrale integrieren.
Funktionsumfang
- Kommunikation via Ethernet über "Z21 LAN Protokoll" von ROCO/Fleischmann, mit mehr als nur zehn "Endgeräten"!
- => W5100 Ethernet Interface
- => ESP8266 WLAN Interface für "Z21 LAN Protokoll" (Accesspoint- und/oder Client-Betrieb)
- NMRA-DCC-Standard mit CV Programmierung (kein POM), 29 Lokfunktionen (Licht F0, F1 bis F28) und 2048 Weichen.[1]
- => DCC Booster Ausgang für ROCO 10761/10764 Digitalverstärker mit optionaler Kehrschleifenfunktion
- => integrierter DCC Booster bis 5A (TLE5205 Treiber)
- S88N Rückmeldebus (Arduino Simpel S88 Interface) [2]
- XpressNet - ab Softwareversion 2 [3]
- LocoNet mit Slot-Management für FRED oder DAISY Handregler - ab Softwareversion 3
- => LocoNet-Client Mode (Slot-Server abschaltbar) für den Anschluss an der Intellibox - ab Softwareversion 43
- DCC-Input Anschluss einer "Fremdzentrale" (nur für Arduino MEGA)
- Extra: Softwareupdate & eigene Anpassungen über Upload des Sketch mittels Arduino IDE.
geplante Erweiterungen:
- Programmierung von LocoNet LNCV Variablen über die Z21 mobile APP
- separater Programmierausgang mit ACK - Schreiben und Lesen von Konfigurationsvariablen (CV) - (Eagle)
- Stromsensor ACS712t für integrierten Booster - Auslesen der Gleisbelastung
- RailCom ® am DCC Ausgang
- Vielleicht: Nextion UART 3,5" TFT Touchscreen in der Zentrale zum Steuern und Programmieren?
Notes
bekannte Bugs
Da dieses Projekt eine persönliche Entwicklung von mir ist bleibt es nicht aus das einige Protokolle nicht 100%tig unterstützt, oder mit kleineren Ungenauigkeiten Implementiert wurden. Hier eine Auflistung der bekannten Probleme:
- Abbruch der Kommunikation ab TrainController Version 8 F2 - Anpassung am Z21 Protokoll in Arbeit.
- Synchronisation Zentrale - XpressNet, aktive Funktionen/Fahrtrichtung wird nicht durch Roco MultiMaus dargestellt.
- Probleme bei der XpressNet Kommunikation mit Lenz LH100, LH01
Gerne gebe ich zu Anregungen oder Problemen Auskunft.
Entwicklung
ROCO XpressNet:
Die komfortable aber sehr teure Modellbahnsteuerung Z21 von Roco und der genutzte XpressNet-Bus brachte mich auf die Idee, eine eigene Zentrale zu entwickeln.
Im Mittelpunkt dieser Idee, stand die Absicht, die dort eingebrachte umfangreiche Hardware zu reduzieren bzw. durch Software zu ersetzen. Die Eigenbauzentrale sollte auch ein Netzwerk Interface (für APP und PC), XpressNet, S88 und LocoNet Bus bereitstellen.
Kurzbeschreibung zum XpressNet:
Wenn ein preisgünstiger ROCO Booster 10761, 10764 oder der Digitalverstärker 680801, verwendet wird, ergibt sich die Notwendigkeit eines XpressNet-Bus Masters (auch als Zentrale oder Hauptknoten bezeichnet).
Die Masterfunktion kann beispielsweise eine LokMaus2 oder Multimaus übernehmen. Der Master steuert dann die gesamte Kommunikation des Roco XpressNet-Bus und erzeugt das DCC-Signal.
Das Projekt besteht aus zwei Teilen. Zuerst wurde ein Client für den XpressNet-Bus entwickelt (siehe Z21 mobile - Slave am XpressNet).
Um die Funktionen des oben beschriebenen XpressNet Master (Lokmaus2 oder Multimaus) zu ersetzen, schrieb ich dann eine entsprechende XpressNet Master Interface Library. Das Beispiel zeigt, wie man die Hardware einer kompletten industriell gefertigten Digitalzentrale durch Software ersetzen kann. Außerdem besteht jetzt die Möglichkeit durch die Einarbeitung unterschiedlicher Schnittstellen, verschieden auf dem Markt befindliche Systeme zu unterstützen.
Softwareversion 1
Die Softwareversion 1 der Zentrale erzeugt im Arduino ein DCC-Signal. Der MAX485 -Treiber zur Kommunikation mit dem XpressNet kann entfallen. Der ROCO Booster 10761 wird dann als reiner DCC Booster genutzt, es können keine XpressNet-Geräte angeschlossen werden.
Softwareversion 2
Ab der Softwareversion 2 ist zusätzlich ein XpressNet-Interface implementiert worden. Der Arduino mit dem MAX485 - Treiber, arbeitet wie ein Master (LokMaus2/MulitMaus) am XpressNet. Bis zu 31 XpressNet Slaves (Clients) können an diese "Software-Zentrale" angeschlossen werden.
In der unten gezeigten Schaltung ist der Aufbau der DCC-Ansteuerung des ROCO Boosters 10761 und das XpressNet Interface dargestellt. Am XpressNet Interface sind möglicherweise noch zusätzliche pull Up/Down und/oder eine XpressNet Bus-Terminierung an der Leitung A und B notwendig (siehe XpressNet Hardware).
Softwareversion 3
In der Softwareversion 3 wurde die Schaltung durch einen S88 Bus und ein LocoNet-Interface erweitert. Damit wird es möglich, den LocoNet-Handregler, wie den FredI, anzuschließen. Der zugehörige Schaltungsaufbau unten, zeigt die zusätzlich notwendige Hardware für das LocoNet-Interface.
Softwareversion 3x
Bei dieser Version wurden die Funktionen des Timer1 und Timer2 verteilt. Das DCC Interface arbeitet nun mit dem Timer2 (S88 ohne Timer), damit ist es möglich im Arduino UNO das LocoNet Interface unter Timer1 einzusetzen. Zusätzlich wird durch die Software ein zweiter Booster (Booster2) unterstützt. Der Booster2 in der Zentrale (z.B.: H-Brücke TLE5205) hat ein eigenes Kurzschluss - und GO/STOP Signal. Es schaltet somit unabhängig vom angeschlossenen Roco Booster, ab.
Softwareversion 4 WiFi
Integration des Z21 LAN Protokoll über eine externe Library z21.h. Das macht eine Auswahl des zu nutzenden Interfaces (W5100 oder WLAN) möglich.
Für die WiFi-Kommunikation wird das ESP82660-01 Modul eingesetzt. Dieses verbindet sich per Serial mit der Zentralen-MCU. Die Kommunikation mit dem ESP erfolgt nicht mittels AT-Befehlen, sondern über ein modifiziertes Z21 LAN Protokoll mit Client-Erkennung (Sketch für ESP im Downloadbereich). Da das ESP-Modul mit 3,3Volt (ca. 200mA) arbeitet ist ein extra Spannungsregler und Pegelwandler auf dem WiFi-Adapter zu installieren. Die zwei Taster auf dem Adapter im Bild, sind für das aufspielen des Sketch (Firmware-Update) und Reset des ESP-Moduls nötig. Programmiert wird das ESP wie ein Arduino aus einer angepassten Arduino IDE heraus.
Außerdem läuft der DCC-Input - Anschluss einer "Fremdzentrale" - jetzt ohne Timer4. Dadurch ist die integration der DCC-Daten unter allen Zentralen-MCUs möglich.
Zusätzlich wurden Verbesserungen sowie Anpassungen am S88, LocoNet und Z21 LAN Protokoll vorgenommen.
Für den Anschluss an der Zentrale können die Taster und LED entfallen! Diese sind nur für die einmalige Programmierung notwendig.
Softwareversion 4x
Anpassung der Kurzschlusserkennung für ROCO und Fleischmann Booster, hierfür auch ist eine Hardwareanpassung notwendig. Die Software wurde auf die invertierte Kurzschlusserkennung angepasst! (siehe Schaltplan) Der externe Booster wird nur zugeschaltet, wenn das Kurzschlusssignal negativ ist. Dies wird nur beim Einschalten der Gleisspannung abgefragt.
Außerdem wurde das S88 Bus Interface optimiert und die Abfrage beschleunigt. Zusätzlich wurde ein automatisches Rücksetzten für die WLAN-Serial Kommunikation implementiert. LocoNet Nachrichten werden komplett an Z21-Abonenten übertragen. Mit der Software v43 kann die Zentrale nun über LocoNet (Slave-Mode) mit einer Intellibox verbunden werden.
integrierter Booster:
Ein einfacher und sehr kostengünstiger Booster mit bis zu 5A Ausgangsstrom. Dieser kann direkt in die Zentrale integriert werden. Genutzt wird zur Gleisspannungserzeugung ein H-Brückentreiber TLE5205 oder der Baugleiche TLE5206-2. Eine Beschreibung ist auch unter Booster3 zu finden.
- Achtung: Im Datenblatt des TLE5205 ist eine falsche Logiktabelle abgebildet!
Hardware
Arduino UNO Z21 DCC Zentrale (ATmega328p) - klein
Arduino MEGA Z21 DCC Zentrale (ATmega2560) - mittel
Sanguino Z21 DCC Zentrale (ATmega1284p/ATmega644p) - groß
Software
Die Software ist mit der Arduino IDE geschrieben.
- Arduino Plug-In: Anpassung der Arduino IDE für die Funktion mit Sanguino oder ESP-Modul sind unter Arduino#Hardware beschrieben.
Beschreibung
Das Sketch kann universal für den Arduino UNO [eingeschränkt], Arduino MEGA oder für den Sanguino Mikroprozessor ATmega1284p (ab Sw. v31) eingesetzt werden.
In dem Sketch ab der Softwareversion 3x sind alle Protokolle variable aktivierbar/deaktivierbar. Bitte nutzt die Sketch Version 4 oder höher, hier wurden viele Fehler beseitigt! Bitte ladet euch auch die jeweils letzte Version der Bibliotheken herunter, denn nur so ist die Software lauffähig!
- Bemerkung: Ab der Version 31 ist die neue DCC Interface Library mit Timer 2 funktionalität zu nutzen. Darüber hinaus, wurden die unterstützten Protokoll für dem Arduino UNO eingeschränkt (zu wenig RAM/ROM)!
Z21 ESP8266 WLAN-Modul Sketch
WiFi Software Version 2.3 mit AJAX Webserver und S88-Modul Anzahl konfigurierbar. Automatisches Rücksetzten des Buffer für die Serial-Kommunikation. Bei Konfigurationsänderungen wird der AP neu gestartet - es erfolgt keine Rückmeldung zu Speicherung der Eingaben! Freie Kanalauswahl für AP nur möglich, wenn keine Client Verbindung besteht!
DCC Z21 Zentrale Sketch
- Fix Kommunikation im LocoNet-Client Modus mit der IntelliBox.
- Wireless & LAN: Support für kombinierte UDP Paket im WLAN und LAN. Zusätzlich Verbesserung im "DCC Interface Master" bei der CV-Programmierung.
- LocoNet mit Slotserver (Master/Slave Betrieb) - Zum Beispiel als LocoNet Slave an einer Intellibox (ab Arduino DCC Interface Library ab v2.2!)
- Weichen über LocoNet steuerbar und Anpassung der LocoNet-Nachrichtenübertragung ins Z21-Protokoll.
Ältere Versionen können über Sourceforge heruntergeladen werden:
Library
Hier sind die notwendigen Bibliotheken aufgeführt. Nur damit ist das Sketch der DCC Zentrale lauffähig.
- Z21 LAN Protokoll Library v1.2 (160118) Download - Arduino Z21 LAN Protokoll Library
- => Für Zentrale ab Softwareversion 4 nötig.
- Arduino DCC Interface Library NEW Download - NEU: Timer 1 oder Timer 2 wählbar - Standard: Timer 2. Verbesserte Datenabfolge bei der CV Programmierung.
- XpressNet Master Interface Library v1.6 Download
- Arduino LocoNet Library