Central Station

Aus Digital Modellbahn
Version vom 29. Mai 2020, 11:22 Uhr von FuzzyBot (Diskussion | Beiträge) (Übernehme Bearbeitung einer neuen Version der Quellseite)

Eigenbau | Zentrale Z21PG | Z21 mobile | XpressNet | LocoNet | Booster

Arduino UNO Version | Arduino MEGA Version | ESP8266 (WeMos D1 mini) Version | ESP32 Version | Sanguino Version

Sprachen:
Deutsch • ‎English
Z21 logo.png
Dcc logo.jpgRailcom logo.gif

XpressNet logo.jpgLoconet logo.jpgS88-N logo.jpg

Basics

Central Station in a Eurobox
DCC Central with network, S88, XpressNet and LocoNet connection
Connections of the central station

A very good but also very expensive model railway control ROCO Z21 and the XpressNet gave me the idea to develop a own central station. My intention was to reduce the hardware or/and replace it with software. The self-construction central station should also have a network interface for APP and PC control, XpressNet, S88 and LocoNet so it will be equal or even more powerful then the original ROCO Z21.
Here I will describe the build up of the Z21 DCC Central Station on the base platform of the Arduino (Arduino MEGA buy it on AliExpress for about 8,- Euro) to control the model railway via the Z21 LAN protocol. The basic version need for the network connection a Ethernet Shield with a W5100 chip (at AliExpress for about 5,- Euro). With the ethernet shield you can include the central station into a already used home network with WiFi to control over smartphone hand device or other software for example Rocrail your model railroad. With extensions you can add for example even a WiFi AP or Client (with ESP6288) to the central station.

Functions

  • control 29 function (light, F0, F1 to F28),
  • control up to 2048 switch,
  • extern booster connection for ROCO 10761/10764 Digitalamplifier
  • internal DCC booster (TLE5205 driver with 5A)
  • NEW: RailCom® Cutout for internal booster (supported from version v4.70)
  • NEU: CV read and write (with optional programming track) (supported from version v4.75)
  • POM (programming on the main)
  • NEW: support for F9 up to F28 for Intellibox (supported from version v4.72)
  • LocoNet-Client Mode (Slot-Server can be switched off) for connection to Uhlenbrock Intellibox
  • programming of LocoNet LNCV (configuration variable) with the Z21 mobile APP (supported from version v4.52)


ideas for new extensions:

  • Change a XpressNet MultiMaus to a WiFi MultiMaus
  • Support for the Arduino DUE, a more powerful central station

Advice

  1. The motorola format (MM) is not supported!
  2. S88N support up to 64 S88 device with 8 ports and raildata (DCC-signal) .
  3. up to 31 clients (Roco LokMaus2, Roco MultiMaus) can be connceted over XpressNet.
  4. support F0 to F8

known Bugs

This project is private and just developed by myself. It doesn't have a 100% support for the used protocols. Here is a list of known problems:

  • (solved, from version v4.65) problem: No 'Init...' while communication with Freiwald Train Controller - fix in the network protocol of the Z21. Bugfix is also include in ESP8266 from version v26!
  • (solved, from version v4.70) problem: Syncing central XpressNet clients - change of active functions and drive instructions will not affect a change on the display of the Roco MultiMaus (XpressNet Busy Feature).
  • (solved, from version v4.71) LocoNet interface controls only function F0 to F8
  • (solved in XpressNet Master Library v2.0) Problems with the XpressNet communication when connection Lenz hardware LH100 or LH90.
  • (gelöst, ab v4.65) Problem: Kein 'Init...' bei der Kommunikation mit dem Freiwald Train Controller - Anpassung der Z21 Netzwerkimplementierung vorgenommen. Bugfix auch für ESP8266 ab v26 enthalten!
  • (gelöst, ab v4.70) Problem: Synchronisation Zentrale XpressNet Client - Aktive Funktionen und Fahrbefehle werden nicht an die Roco MultiMaus übertragen und auf dem Display dargestellt (XpressNet Busy Feature).
  • (gelöst, ab v4.71) Problem: LocoNet Interface steuert nur Funktionen F0 bis F8
  • (gelöst ab XpressNet Master Library v2.0) Probleme bei der XpressNet Kommunikation mit Lenz Hardware LH100 und LH90.

I am pleased to receive suggestions and unknown problems by: TICKET creation or direct via Email.

Hardware

The Arduino Z21 DCC Central Station generates the DCC signal by using my own DCCInterface Library and Timer1/Timer2 (selectable). The central station support different protocols and it's own hardware interface. To select your own used protocols and hardware you have to (de)activate the interfaces inside the Arduino sketch (with "//" infront of #define or #include you can deactivate the unused protocol!).


Ethernet Interface

The Ethernet-Interface can be activated inside the sketch with "#define LAN". It provides the communication with the Z21 protocol library for cable devices connected to the Arduino W5100 Ethernet Shield. The used IP-Address is by default 192.168.0.111/24 and can be changed only over it's website (you need to activate the website by #define HTTPCONF"). You can also activate DHCP to receive a IP. To reset the IP to default you need to hold the power on/off switch while power plug in.

If you use the Arduino UNO with WiFi over Software Serial, you can't activate the Ethernet-Interface!

Wenn nach dem Einschalten der Zentrale keine Verbindung über die Ethernet-Schnittstelle (W5100) möglich ist und diese nach dem Drücken von RESET auf dem LAN Interface sich aufbaut, dann muss ein 1uF Kondensator, C- nach GND 0V, C+ nach RESET auf dem Shield installiert werden. Das LAN W5100 Board ist dann immer direkt nach Power on (ohne Betätigung der Reset Taste) erreichbar.

DCC Input Interface

Mit Hilfe des DCC Fremdeingang wird der DCC Datenstrom einer angeschlossenen DCC Zentrale mit in das eigene DCC Signal integriert. Hierbei erfolgt keine Rückkommunikation zu der externen Zentrale. Der Anschluss kann verwendet werden um zum Beispiel eine Piko Fern / Digi 1 (55019) zu nutzen. Da kein Timer zur Dekodierung notwendig ist läuft ist diese Integration unter allen Zentralen-MCUs möglich. Um das DCC-Interface zu verwenden, muss dies mittels #define DECODER im Sketch aktiviert werden.

End of Support!

XpressNet Interface with external booster support

Arduino XpressNet Booster Interface (Eagle)

Wenn ein preisgünstiger ROCO Booster 10761, 10764 oder Freischmann Digitalverstärker 680801 bereits vorhanden ist, kann dieser als externer Booster genutzt werden. Dafür reicht ein XpressNet-Interface ohne die Funktionalität des MAX485 aus. Die dafür notwendige Kurzschlusserkennung ist in der Software der Zentrale integriert. Im Sketch muss der externe Booster aktiviert werden:
#define BOOSTER_EXT
#define BOOSTER_EXT_ON HIGH
#define BOOSTER_EXT_OFF LOW

To communicate with a ROCO LokMaus2 or MultiMaus you need the XpressNet driver MAX485. The Z21 Central Station provide then the master function for the LokMaus2 or/and MultiMaus. You can connect up to 31 slave devices (clients) to the XpressNet.

Aktivierung des XpressNet-Interface im Sketch mittels:
#define XPRESSNET
#include <XpressNetMaster.h>

The picture on the right shows the schematic for the connection of the ROCO Boosters 10761 and the hardware you need to build up the XpressNet-Interface. For the data lines A and B you my need an additional pull up/down and/or a bus close ending. (see XpressNet hardware).


LocoNet

Arduino LocoNet Master und S88N Interface (Eagle)

Durch die Integration eines LocoNet-Interface ist es möglich die Arduino Z21 Zentrale mit der Intellibox zu verbinden oder mit LocoNet-Handregler wie den Fred zu nutzen. Um den Fred nutzen zu können muss in der Software der notwendige LocoNet Slot-Server aktiviert werden, dann ist ein Anschluss an der Intellibox (welche bereits einen Slot-Server integriert hat) nicht mehr möglich. Die LocoNet Library nutzt zur Signalerzeugung im Arduino UNO den Timer 1 und im Arduino MEGA den Timer 5. Aktiviert wird das LocoNet-Interface mittels:
#define LOCONET
#include <LocoNet.h>

Der Slot-Server kann mittels #define LnSLOTSRV zugeschaltet werden. Für den Betrieb als LocoNet Client muss der Slot-Server inaktiv sein. Sollen alle Lokinformationen ins LocoNet (auch ohne explizite Anfragen) übermittelt werden, muss #define TXAllLokInfoOnLN true gesetzt werden. Dies kann sinnvoll sein, wenn eine Steuerungssoftware über LocoNet mit der Zentrale kommuniziert.
Beachte: Das LocoNet-Interface unterstützt jetzt auch die Funktionen bis F28!

LocoNet-B

Datei:Arduino LocoNet-B Beispiel.png
Arduino LocoNet-B Anschluss

Zum Anschluss von Booster am LocoNet liegt auf den Leitungen 1 und 6 (Raildata) ein DCC-Signal an. Dies wird über eine kleinen H-Brückentreiber erzeugt.

Hinweis: Eine Unterstützung erfolgt ab Software v4.83!

S88N

Arduino S88 Singel Master Schaltplan

Rückmeldungen können mit dem S88N-Interface an die Steuersoftware weitergeleitet werden. Es werden bis zu 62 Rückmeldemodule mit 8 Eingängen unterstützt. Einstellungen zur Anzahl der abzufragenden Module lassen sich über die Webkonfiguration mittels LAN oder WLAN vornehmen. Aktiviert wird das S88-Interface mittels:
#define S88N
Hinweis: Ab ca. 5 Modulen sollte ein Ausgangstreiber 74HC244 für den S88 Bus verwendet werden.

internal Booster

TLE5205-2g Booster3 (Nicht mehr aktuell! - siehe TLE Booster3R mit RailCom)

Ein einfacher und sehr kostengünstiger Booster (z.B.: H-Brücke TLE5205) zur Verstärkung des DCC-Signal direkt in der Zentrale. Implementierung einer zweiten Kurzschlusserkennung für den internen Booster und die Erzeugung eines separaten GO/STOP Signal. Die Aktivierung im Sketch erfolgt mittels:
#define BOOSTER_INT
#define BOOSTER_INT_ON LOW
#define BOOSTER_INT_OFF HIGH

Genutzt wird dazu ein H-Brückentreiber TLE5205 oder der Baugleiche TLE5206-2 welcher bis zu 5A Ausgangsstrom liefern kann. Eine Beschreibung ist auch unter Booster3 zu finden. Für eine Datenausgabe mit RailCom muss zwingend die Hardware des Booster3R verwendet werden.

Achtung: Im Datenblatt des TLE5205 ist eine falsche Logiktabelle abgebildet!

internal Booster with Railcom

TLE Booster3R für Railcom (Eagle)
global RailCom Detector (Eagle)

Ab der Softwareversion v4.70 ist es möglich Railcom zu aktivieren. Um die für Railcom notwendige Abtastlücke zu erzeugen, muss der interne Booster umgebaut werden. Für die Ansteuerung des TLE wird nun ab v4.70 auch das DCC Signal auf den GO/STOP2 Pin (Booster intern) gelegt. Der Anschluss des internen Booster erfolgt damit so wie zuvor (DCC = DCC1), nur DCC2 des Booster muss an GO/STOP2:

  • DCC => DCC1,
  • GO/STOP2 (Booster intern) => DCC2,
  • SHORT2 (Booster intern) => SHORT.

Um die geänderte Ansteuerung zu aktivieren muss im Sketch folgende Zeile 'aktiv' sein:
#define BOOSTER_INT_NDCC
RailCom selbst kann über folgende Zeile 'aktiviert' werden:
#define RAILCOM
Zur Anzeige der Stromaufnahme muss #define BOOSTER_INT_MAINCURRENT aktiviert werden.

Damit ist nun auch möglich eine andere H-Brücke (zum Beispiel L6206N oder L298n) zu verwenden. (Die Kurzschlusserkennung mittels SENCE Widerstand muss dabei trotzdem installiert werden!)

Am Ausgang des Booster3R kann ein allgemeiner Railcom Detector angeschlossen werden. Über diesen können beim Programmieren mittels POM die CV-Daten von Dekodern auf dem Hauptgleis ausgelesen werden. Der RailCom Detector muss zwischen TLE Ausgang RAIL_1/RAIL_2 und dem Prog. Relais installiert werden. Bei der MEGA Variante wird "RAILCOM_RX" mit dem Serial3 Port verbunden. Ein Pull-Up von 100k kann für eine bessere RailCom Erkennung optional am Ausgang des UND installiert werden.

WiFi (WLAN Add-On)

ESP Arduino WiFi Modul
ESP Serial Anschluss (Eagle)

Für die WiFi-Kommunikation wird das ESP82660-01 Modul eingesetzt. Das ESP-Modul benötigt ein eigenes Sketch, welches im Downloadbereich heruntergeladen werden kann. Das ESP-Modul verbindet sich mittels Serial mit der Zentralen-MCU. Anschluss ESP8266 WLAN-Modul:

  • Arduino UNO = Serial (0,1) [oder über Software Serial (11,12)]
  • Arduino MEGA = Serial2 (16,17)
  • andere = Serial (0,1)

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 WLAN-Interface zu installieren. Die zwei Taster auf dem Adapter im Bild, sind für das aufspielen des Sketch (Firmware-Update) und Reset beim ersten installieren des ESP-Moduls nötig. Programmiert wird das ESP wie ein Arduino, aus einer angepassten Arduino IDE heraus.
Für den Anschluss an der Zentrale können die auf dem Adapter installierten Taster und LED entfallen! Diese sind nur für die einmalige Programmierung notwendig. Um WLAN in der Zentrale zu aktivieren muss folgende Zeile einkommentiert werden: #define WIFI
Das ESP8266 stellt einen AcessPoint (AP) bereit. Über diesen kann mithilfe eines Webbrowser (http://192.168.0.111) die Standard-Einstellungen (SSID "Z21_ESP" und Passwort "12345678") und der WLAN Client-Betrieb (Client-Mode) an einem vorhandenen WLAN-Router konfiguriert werden. Wenn das S88-Interface genutzt wird, kann über das Webinterface auch die Modulanzahl angepasst werden.

Debugging (optional)

Um im Bedarfsfall interne Daten über den Serial Monitor überwachen zu können, gibt es dafür eine Debug-Ausgabe. Diese muss beim Arduino UNO und aktivem XpressNet oder WLAN komplett deaktiviert sein!
Aktiviert wird das Debugging mittels: #define Debug Serial
Einstellung welche Daten/Protokolle ausgegeben werden sollen:
#define DEBUG Ausgabe von Einstellungen und Softwareversion
#define REPORT Ausgabe der Zustände von S88 Rückmelder
#define LnDEB Ausgabe LocoNet Kommunikation
#define XnDEG Ausgabe XpressNet Kommunikation
#define Z21DEBUG Ausgabe Z21 Protokoll Kommunikation

Hardware MCUs (circuit diagram)

Die Arduino Z21 DCC Zentrale kann unter verschiedenen Mikroprozessoren eingesetzt werden. Dabei richtet sich die Auswahl nach den notwendigen Funktionen (Interfaces).

  1. Arduino UNO Z21 DCC Zentrale (ATmega328p) - small
  2. Arduino MEGA Z21 DCC Zentrale (ATmega2560) - medium
  3. Sanguino Z21 DCC Zentrale (ATmega1284p/ATmega644p) - big
  4. Arduino DUE Z21 DCC Zentrale (SAM3X8E 32-bit ARM) - fast

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.


Description

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. (Übersicht Arduino Mikroprozessoren)
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 Protokolle/Interface für dem Arduino UNO eingeschränkt (zu wenig RAM/ROM)!


Z21 WLAN Add-On Sketch

Diese Software ist für das WLAN WLAN Add-On (ESP8266) der Arduino Z21 DCC Zentrale notwendig. Sie muss in das ESP8266, mit Hilfe der Arduino IDE, hochgeladen werden. Die Software beinhaltet einen AJAX Webserver zur Konfiguration und die Option die S88-Modulanzahl zu ändern. Außerdem ist ein Reset Fall-back (Timeout) des Daten-Buffer für die Serial-Kommunikation zur Arduino Z21 DCC Zentrale implementiert. Zu beachten ist, dass es sich hierbei nur um das Sketch handelt welches für das WLAN-Modul notwendig ist, dies ist keine eigenständige Zentrale.
Info: Bei Konfigurationsänderungen am AccessPoint (AP) wird dieser beim Speichern automatisch neu gestartet - es erfolgt dadurch keine Rückmeldung oder Bestätigung des Speichervorgangs! Eine freie Kanalauswahl (1-13) für den AP ist nur möglich, wenn keine Client Verbindung besteht.
Fix v27: Akzeptiert jetzt auch eine SSID mit nur einem Zeichen.

Arduino Z21 DCC Zentrale Sketch

Änderungen:

  • Add Railcom und global Railcom Detektor über Serial3 für MEGA und I2C für UNO. Lesen von CV Daten über POM.
  • Optimierung der XpressNetMaster Bibliothek - CV lesen mit MultiMaus.
  • Add: Kurzschlusserkennung über "Current Sence" programmier ACK Widerstand möglich.
  • Anpassung LocoNet Bibliothek für den Umgang mit langen Lokadressen.


Ältere Versionen können über Sourceforge heruntergeladen werden:


necessary libraries

Hier sind die notwendigen Bibliotheken aufgeführt. Nur damit ist das Sketch der DCC Zentrale lauffähig. Informationen wie ihr Bibliotheken installiert, findet ihr auf der Arduino Webseite (engl.).


Remedy

Note:
The software, circuits and layouts presented on this website can be used free for the private use,
commercial exploitation requires a written approval.