Die Digitalzentrale ist das Steuerungselement einer digitalen Modellbahn. Die Digitalzentrale bedient diverse Handregler und versorgt die Fahrzeuge mit den nötigen Informationen. Bei 2L= hat sich das DCC - Digital Command Control - durchgesetzt. Dabei gibt die Zentrale ein DCC Signal aus, eine Bitfolge als Datenstrom. Dieses Rechtecksignal wird von einem Booster als Gleissignal verstärkt und auf die Gleise gegeben. In dem Signal befinden sich also die Daten und gleichzeitig werden die Fahrzeuge darüber mit Spannung versorgt. Durch den Takt von fast 10kHz und einer Bitfolge auch im Ruhezustand (d.h. es werden gerade keine Daten übertragen) ergibt sich ein Effektivwert am Gleis, mit dem die Dekoder in den Fahrzeugen betrieben werden, aus denen die Motoren, die Beleuchtung ihre Spannung bezieht.
Neben den käuflichen Digital-Zentralen für die Modellbahn gibt es auch eine Reihe Selbstbauprojekte. Die meisten Selbstbauprojekte beruhen auf den 8 Bit Controllern von Microchip, entweder AVR oder PIC. Ein sehr umfangreiches Beispiel ist die Z21PG von Philipp Gahtow oder eine etwas einfachere Variante die DCC-Ex. Nicht unerwähnt lassen möchte ich die Arbeit von W. Kufer mit dem OpenDCC Projekt, eine Quelle der Informationen mit vielen guten Beschreibungen, der Protokolle und der Hardware.
Die 8 Bit AVR Controller sind zwar leistungsfähig, aber gerade in Bezug auf den Speicher und der Netzwerkfähigkeit kommen diese schnell an ihre Grenzen. Die Z21PG und DCC-Ex sind beide Open Source, alle Quelltexte sind veröffentlicht. Auch ich habe erst mit einer Z21PG auf Basis eines ATMega2560 begonnen und wollte mir eigentlich auch für eine Selbstbau-Zentrale eine Leiterplatte machen. Mehr oder weniger per Zufall bin ich in einer meiner vielen Schubladen über den Antennenanalyzer nach EU1KY gestolpert, den ich fürs andere Hobby mal gebaut hatte. Der besteht im wesentlichen aus einem ST Discovery Modul mit einem STM32 ARM Controller.
So habe ich mich etwas näher mit diesen Controllern beschäftigt und auch die Entwicklungsumgebung dazu installiert, die aus der STM32CubeIDE, dem STM32CubeProgrammer und STM32CubeMX besteht. Alle Tools sind kostenlos auf der Website von STMicroelectronics zu bekommen. Ich habe mich dann bei meinen Experimenten für ein Nucleo-144 Board mit dem STM32F746ZG Controller entschieden. Mittlerweile gibt es einen Nachfolger davon, aber das schöne bei den STM32 Controllern ist die Skalierbarkeit, vom kleinen 8 Pin Controller bis zum F746 mit 204 Pins. Das ist ähnlich wie bei den bekannten AVR Controllern. Mit wenig Aufwand kann man mit seiner Software auf einen leistungsfähigeren Controller umziehen. Nach den ersten Schritten mit CubeIDE bin ich dann auf Visual Studio Code mit PlatformIO und STM32Duino gewechselt. Das hat mich aber gar nicht überzeugt.
Da die Boards gleich Ethernet haben, I/O Pins ohne Ende, tolle AD und DA Wandler, mehrere serielle Schnittstellen, I²C, SPI usw. usf. (einfach mal ins Datenblatt schauen), sind die für diese Anwendung wirklich gut geeignet. Dazu kommt noch der viele Speicher mit 32Bit Breite, die hohe Verarbeitungsgeschwindigkeit der ARM Controller und der extrem günstige Preis der Boards. Aktive Boards mit Ethernet wären diese hier und es ist im Prinzip egal, welches man wählt, die haben alle den gleichen Formfaktor und das gleiche Layout, um diese auf einer Trägerplatine mit Schnittstellen zu integrieren.
Erste Versuche liefen bisher erfolgversprechend. Hier ein erstes Foto des Nucleo-144 Boards mit OLED Display und EEPROM. Ich habe hier ein EEPROM für die Speicherung von Konfigurationsdaten vorgesehen, auch wenn man im Flash des Controllers speichern könnte. Nur ist der Flashspeicher nicht beliebig oft wieder beschreibbar und bei den Controllern liegt der Wert bei 10.000x im Gegensatz zum EEPROM mit > 100.000x. Das die Anzeige vom Display so seltsam aussieht, liegt an der niedrigen Wiederholrate.
So eine Softwareentwicklung, auch nur die Umsetzung von bestehenden Code auf einen anderen Controller, kann sehr zeitaufwändig sein. So sollte man immer überlegen, ob sich das lohnt, diesen Aufwand zu betreiben. Denn egal ob Z21PG oder DCC-Ex, das ist erst mal nur Software. Dazu muss man sich die Hardware anschaffen, evtl. gar noch Leiterplatten machen lassen, vorher die Schaltpläne zeichnen und die Software umsetzen, auch wenn vieles auf vorhandenen Arduino Libraries basiert, wie NMRADCC und LocoNet zum Beispiel.
Daher sollte die Überlegung folgen, ob man nicht doch besser eine Zentrale kauft und seine evtl. knappe Freizeit lieber in den Bau einer Modellbahnanlage und vielleicht kleineren Projekten, z.B. einem Booster oder der Steuerung kleinere Gimmicks auf der Anlage, investiert. Denn abgesehen vom Zeitaufwand entstehen auch noch Materialkosten, wenn es auch nicht viel ist, aber mit der Fertigung von Leiterplatten können schnell 100-200€ über den virtuellen Ladentisch gehen. Dazu kommen noch solche Dinge wie Gehäuse und Netzteil, womit sich die Differenz zu einer käuflich zu erwerbenden Zentrale auf 150-300€ reduziert und die funktioniert dann einfach nur (hoffentlich ). Auch sollte man sich zumindest mit Grundlagen der Elektronik auskennen, wissen an welchem Ende der Lötkolben heiß wird und sich schon mal mit der Arduino IDE beschäftigt haben. Wenn man wirklich Interesse an der Software hat, es gibt mindestens eine Zentrale auf dem Markt, bei der vom Hersteller die Firmware unter der GPLv2 zur Verfügung steht.
Nachteilig bei den am Markt angebotenen Zentralen finde ich die zum Teil langwierigen Release Zyklen der Software. Bei einem Eigenbau kann man auch einen Fehler kurzfristig selbst beheben. Bei einer gekauften Zentrale ist man davon abhängig, wann der Hersteller ein Update herausbringt.
Einen Funktionsvergleich einiger Zentralen habe ich hier mal aufgestellt. Leider sind nicht alle Daten seitens der Hersteller in einem Produktdatenblatt aufgeführt, es ist zum Teil mühsam, sich einen Überblick zu verschaffen.
Ich selbst habe noch keine Entscheidung getroffen, welche Zentrale ich mir letztendlich anschaffen werde.
Demnächst mehr in diesem Theater.