Miniaturwelt steuern

Digitale Modellbahnsteuerung per Raspberry Pi. Bei der klassischen, analogen Modellbahn werden Züge mit Regeltrafo und mehr oder weniger Spannung gesteuert. Bei der digitalen Bahn wird ein Steuersignal auf das Gleis moduliert, Loks und Zubehör arbeiten mit Dekodern, wo viel mehr möglich wird. Ziel war nun ein eigener Leitstand auf Basis Raspberry Pi, der teure digitale Steuergeräte ersetzt, wie gewohnt Rückmeldungen verarbeiten und zudem andere Komponenten der Anlage intelligent ansprechen kann.

Der Markt bietet verschiedene Systeme. Wir wollten vor allem mit Loks, Signalen und Dekodern mit mfx-Protokoll von Märklin zusammenarbeiten. Die Bausteine dafür sollen ein Raspberry Pi, Steuerplatine und andere Hardware, und entsprechende Software wie das freie Rocrail sein.

Die grundlegende Steuerelektronik als Aufsteckplatine für den Pi ist die Entwicklung von Daniel Mrkonjic, basiert weiterhin auf den Modifikationen von Heiko Thiery und Max Kaspari. Über deren Projekt kann man unter https://www.ifoedit.com/RaspiCS2.html nachlesen. Es hat mehrere Ausbaustufen erfahren, deren letzte wir nun neu nachgebaut haben. Zusammen mit dem RPi ist unser Aufbau damit der Ersatz einer „Central Station 2“ und stellt somit unser neues Steuergerät dar.

Der Pi ist bei uns nun aber nicht nur der Steuerrechner, der die verborgene Arbeit zur Bahnelektronik macht. Er trägt auch gleich noch den Desktop mit Rocrail, auf dem alles für den Bediener visualisiert wird und muss deshalb nicht mehr mit einem zusätzlichen Windows- oder Linuxrechner im Netzwerk verbunden sein. Bei den heutigen leistungsfähigen Rechnern wie dem Pi kein Problem. Wir nutzen ein 4er-Modell, aber ein Raspberry Pi 3B tut es ebenso.

Damit ist der Pi die Schaltzentrale geworden, wir bedienen ihn über Maus und Tastatur nebst einigen Tastern am Steuerpult. Er kümmert sich bei uns außerdem noch um die Lichtsteuerung im Eigenbau (für Häuser und Straßenlampen), was er per I2C-Bus und einer dafür extra angefertigter Software mit Tag- und Nachtsteuerung macht.

So ist nun eine komplette Steuerung für eine H0-Modellbahnanlage entstanden. Steckt man nicht gerade in einem kompletten Um- oder Neubauprojekt seiner Bahn, mag man mitunter alles parallel aufbauen und gründlich testen. So haben wir ein repräsentatives Setup zum Test auf einer stabilen Unterlage angeordnet, mit Anschlussklemmen für die Anlage auf der Unterseite, vorerst verbunden zu einem Stück Testgleis, wo man alles ausprobieren kann.

Auf dem Brett sind bei uns Gleisanschlussbox, zwei externe Dekoder für z.B. Weichen und ein S88-Rückmelder untergebracht. Inmitten dessen ist unser RPi platziert, der die Steuerplatine trägt. Manches haben wir über Abstandhalter und Plexiglas geschützt.

Im laufenden Betrieb muss unsere Steuerung an Stelle käuflicher Zentralen mehrere Aufgaben übernehmen. Per CAN-Bus gilt es, alle auf die Strecke zu modulierenden Signale an die Gleisbox zu übertragen, welche über das Gleis dann die Bewegung und Zusatzfunktionen der Loks steuert und an der auch Dekoder für Signale hängen können. Der Anschluss zur Gleisbox geschieht ganz einfach durch drei kurze Kabel. Damit man für experimentelle Zwecke nach extern noch Strom abnehmen kann, gibt es zwei Buchsenpaare, eines mit 5V wie für den Pi und ein weiteres mit Bahnstrom belegt.

Nicht zuletzt sollen noch Rückmeldungen aus dem Fahrbetrieb empfangen werden. Dafür gibt es bei der digitalen Bahn ein recht altes S88-Protokoll, was sich aber bis heute bewährt hat. Die Meldungen, von zum Beispiel einem Gleiskontakt oder sonstigem Signalgeber, gelangen zuerst zum S88-Dekoder, der kommuniziert dann über den Rückmeldebus zur Steuerplatine und zum Pi. Dafür sind wenige GPIO-Pins für die Platine reserviert. Restliche kann man im späteren Ausbau noch für andere Aufgaben nutzen. Für lange Strecken, wo ein Modellbahnbrett einige Meter aufweisen kann, hat die Rückmeldeplatine auch noch den bekannten RJ45-Anschluss, der besser als einzelne Drähte geschirmt ist.

Und schließlich geht auch noch der I2C-Bus des Pi von unserer Steuerplatine ab, den wir für unsere Modellbahnanlage vorrangig für die flexible Beleuchtung in Gebäuden nutzen wollen. Dazu haben wir die Originalplatine der Entwickler etwas umgestellt und mit einigen zusätzlichen Verbindern erweitert. Das Blockschaltbild (in Abb.02) soll schematisch zeigen, wie alle Komponenten miteinander verbunden sind. Für den Nothalt ist ein Schalter zur Ein- und Ausschaltung vom Bahnstrom vorgesehen, ein weiterer, um den Pi nach dem Herunterfahren wieder booten zu können.

Um einen käuflichen Controller wie eine Central Station 2 von Märklin zu ersetzen, braucht es nun zuerst eine funktionierende Kommunikation zur Gleisanschlussbox vom Hersteller. Die ist im Projekt mittels zweier Controllerchips MCP2515 und MCP2562 realisiert. Die Platine trägt außerdem noch einen Optokoppler und Spannungswandler, Kondensatoren, einen Miniaturquarz, mehrere Widerstände und diverse Stiftleisten.

Da es bei uns nur ein Einmalaufbau ist, haben wir das Ganze per Universalleiterplatte aufgebaut. Wer sich oben unter dem Projektlink informiert, findet auch das ursprüngliche PCB-Layout für eine mehr ordentliche Lösung.

Bauteilliste:
– MCP 2515-I/P
– MCP 2562-E/P
– TMA 0505S
– LTV-847
– 2 x 22pF Kondensator
– 2 x 100nF Kondensator
– 1 x 4µ7F Elko
– 1 x 16MHz Miniaturquarz
– 3 x 1k Widerstand
– 1 x 1k8 Widerstand
– 7 x 4k7 Widerstand
– diverse Stiftleisten

Um zu überprüfen, ob alles korrekt aufgebaut ist, soll nun getestet werden. Schließlich muss die Elektronik nicht nur zur Modellbahnseite, sondern auch zum RPi ordentlich kommunizieren. Damit der Pi seine neue Peripherie versteht, muss ihm die zuerst per Overlay bekannt gemacht und der SPI-Bus eingeschalten werden. Das geschieht in der „config.txt“ und für einen RPi4 mittels den Einträgen

dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtoverlay=spi-1cs

Nach einem Reboot kann man zum Testen im Terminal am Pi nun

$ sudo ip link set can0 up type can bitrate 250000

eingeben. Bekommt man danach keine Fehlermeldung, hat man im ersten Schritt verifiziert, dass der MCP2515 ordentlich arbeitet und über SPI den CAN-Bus unter den gewünschten Parametern bereitstellt. Um im zweiten Schritt zu überprüfen, dass auch der MCP2551 auf dem Bus „hören“ kann, sollte man die CAN-Helper-Tools installieren und mittels

$ sudo ./candump can0

eine Probe machen.

Darüber und über weitere Details, gerade auch beim Umgang mit älteren Pi-Varianten, gibt die englische Entwicklerseite unter https://www.ifoedit.com/RaspiCS2SoftEn.html guten Aufschluss. Zusätzlich dazu wird dort auch die speicherresidente Software erklärt, welche wir später noch installieren müssen.

Ist die eigene Hardware erfolgreich aufgebaut, gilt es, sich um die Softwarebelange auf dem Desktop zu kümmern und zuerst Rocrail auf dem Pi zu installieren. Der soll, wie immer empfohlen, zuerst mit seinen Quellen aktualisiert sein.

Recht einfach geschieht die Installation von Rocrail (enthält Rocview und den Rocrail-Server) dann über den Download-Bereich der Website und in dem man den Inhalt des Archivs in einem Verzeichnis eigener Wahl ablegt. Nachdem man die Install-Skripte dort ausgeführt hat, gibt es der Einfachheit halber sogar ein Start-Icon auf dem Desktop.

Das freie Rocrail ist hier sicherlich eine gute Wahl, arbeitet es doch plattformübergreifend. Trotz des umfangreichen Funktionsumfangs beherrscht man es relativ schnell und kann sich Rat aus einer großen Community holen. Wie man alles konfiguriert und unsere wenigen Sensoren und Aktoren im Projekt einbindet, soll an dieser Stelle deshalb kein Thema sein.

Bevor man starten kann, braucht es noch ein Stückchen Software, welche die Übersetzung der IP-basierten Signale zusammen mit dem Pi und per CAN-Bus in Richtung Gleisanschlussbox übernimmt. Wir wollen das fertige „PiCanS88“ von Daniel Mrkonjic nutzen.

Zuerst muss der gewünschte Zugriff auf die GPIO-Ports des Pi sichergestellt werden, dazu nutzen wir eine C-Library für den bcm2835-Chip, die man sich wie folgt holt:

$ wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.42.tar.gz
$ tar zxvf bcm2835-1.42.tar.gz
$ cd bcm2835-1.42
$ ./configure
$ make
$ sudo make check
$ sudo make install

Danach kann es an die eigentliche Installation von PiCanS88 mittels

$ wget http://www.ifoedit.com/PiCanS88.tar
$ tar xvf PiCanS88.tar
$ cd PiCanS88
$ make

gehen. Nun kann man das Tool durch „sudo ./PiCanS88 …“ starten. Die IPs für das Gateway und dem lokalen Server ersetzt man durch die aus der eigenen Installation, einfach herauszufinden, wenn man auf dem Pi „ifconfig“ eingibt. Am besten, man packt alles in ein Shellskript, wie bei uns „startrs.sh“ mit den Zeilen

$ sudo ip link set can0 up type can bitrate 250000
$ sleep 2
$ ifconfig
$ sudo ./PiCanS88 -f -b 192.xxx.xxx.255 -v -d 192.xxx.xxx.xx m 1

was man im Anschluss noch mittels

$ sudo chmod u+x,g+x,o+x startrs.sh

ausführbar macht. Das Skript startet man vor dem Aufruf von Rocrail, am besten in einem Terminal, so kann man nun alle Anfragen an die Steuerung und deren Antworten mitlesen. Und man sieht auch die Ereignisse am Rückmelder, wie den Druck auf einen von uns dort angeschlossenen Tastern für diverse Zwecke, vor allem beim Debugging in der Aufbauphase nützlich.

Damit haben wir alles beisammen. Für durchgängige Tests soll möglichst viel Peripherie eingebunden werden, mit dabei sind bei uns die Gleisanschlussbox, zwei Weichen- und Zubehördekoder und ein S88-Rückmelder von bekannten Herstellern. Als Gegenüber haben wir eine Gleisstrecke aufgebaut, mit Weiche, Signal und Entkuppler. Zum Test für Rückmeldungen enthält die auch ein einseitig isoliertes Abstellgleis (Abb.07).

Bei der fertigen Anlage wandern sicher einige Komponenten weiter weg und unter das Modellbahnbrett. Und es müssen noch andere Komponenten wie etwa diverse Booster eingefügt und auf der Fläche verteilt werden. Hier geht es dem Modellbahner in der Praxis nicht nur um die angestrebte Funktionalität, sondern auch darum, Kabellängen und -wege zu optimieren, um eine gleichmäßige Versorgung mit dem Fahrstrom und Trennung der Netze in Bezug auf möglichst wenig Störungen zu erreichen. Das soll uns bei unserem Versuchsaufbau alles nicht kümmern.

So können wir jetzt einen ersten Test wagen, es soll ein minimaler Bahnbetrieb aufgenommen werden. Dazu braucht es in Rocrail nur einen kleinen Gleisplan. Und es reicht, wenn ein einzelnes Fahrzeug dem System bekannt ist. Nachher kann man es vor- und zurück in mehreren Geschwindigkeitsstufen und in seinen Zusatzfunktionen steuern. Das gelingt bei uns nun ganz ohne teure Zentrale. Unsere Güterlok ist dazu auf dem kurzen Testgleis unterwegs und kann zudem seine Fahrlichter aufleuchten lassen. Raspberry Pi nebst Steuerplatine funktionieren einwandfrei, geschafft!

Daneben lassen sich nun unsere Weiche und Entkuppler steuern. Beides schalten wir in unserem Aufbau über einen externen Dekoder. Bei Signalen ist das mitunter anders, wo Intelligenz vor Ort eingebaut ist, um zum Beispiel Gleise abschnittweise frei zu geben. Aber auch das gelingt uns jetzt, die Konfiguration von allem Zubehör macht in Rocrail keinen Unterschied zur CS2 aus dem Märklin-Baukasten.

Auch alle Rückmeldungen, wie zum Beispiel von einem Kontaktgleis, werden ebenfalls einwandfrei empfangen werden, welche man sich wie gewohnt in Rocview anzeigen lassen und mit diversen Aktionen reagieren kann. Wenn das alles klar geht, hat man sein Ziel erreicht und alles über den Desktop des Pi unter Kontrolle. Wer mag, kann sich auf seiner Anlage nun noch um einen automatisierten Fahrbetrieb kümmern.

Auf dem Desktop des Pi nimmt auch noch unsere ganz eigene Entwicklung Platz, die wir für die Lichtsteuerung von Häusern und Straßenlampen vorgesehen haben und sich in einzelnen Gruppen und per Programm beeinflussen lässt, vorhin schon zusehen. Unsere Lichtsteuerung ist in Python 3 programmiert.

Hier spielt der Raspberry Pi seine weiteren Stärken aus, denn er ist ja nicht nur an die Steuerplatine angebunden, sondern hat noch freie GPIO‘s nebst I2C-Bus. Den haben wir mit einem Expander ausgestattet, über welchen wir nun noch genug Lichtkreise schalten können. Wer möchte, mag dort noch Sachen, wie städtischen Springbrunnen, Mühlrad oder Sägewerk betreiben.

Wir haben da schon eine Menge Beleuchtungskörper (Abb.06) zur Installation in Bahnhof und den Modellhäusern vorbereitet, welche immer aus einem Treiber per NPN-Transistor und einem Stück LED-Strip bestehen. Kreisrund ausgeführt, sollen sie dadurch für eine gleichmäßige Ausleuchtung im Inneren der Häuser sorgen. Sie sind getrennt vom Bahnstrom und aus dem selben Netzteil wie für den RPi mit 5V Gleichspannung versorgt. Obwohl möglich gewesen, haben wir an dieser Stelle auf per Bus steuerbare RGB-Strips verzichtet, das hat uns für eine praxisnahe und stabile Beleuchtung mit warmweißen Licht gereicht.

Ein Manko der Modellbahnlösung mit RPi und eigener Elektronik ist derzeit noch, dass man Loks mit variabler Adresse (ohne DIP-Schalter) nicht ohne originales Hilfsmittel anlernen kann. Dazu braucht es bei mfx-Loks noch eine kleine Mobile-Station vom Hersteller, die aber gegenüber der größeren Schwester viel weniger kostenintensiv ist. Ein separates Programmiergleis braucht es nicht, es reicht, sie am zweiten Gleisbox-Anschluss anzustecken und danach die neue Lok in der Anlage irgendwo aufzusetzen. Ist diese dann in Rocrail bekannt geworden, kann man das Gerät wieder abkabeln.

Außerdem muss man bei der Umsetzung auf dem Pi noch auf Features wie ein virtuelles Cockpit am Bildschirm, also die Sicht aus der Lok verzichten. Unabhängig davon bin ich mit dem eigenen, aktuellem Aufbau sehr zufrieden, der bald in eine komplett neue digitale Modellbahnanlage übergehen soll, die dann unsere alte analoge Bahn ersetzt.

Dieses Vorhaben umzusetzen, da freue ich mich schon darauf. Vor allem auch, weil ich dann mit Raspberry Pi und freier Software arbeiten kann und für Erweiterungen flexibel bin. Und wie beim restlichen Basteln und Gestalten der eigenen Miniaturwelt, lässt so was das Herz des Modellbauers höher schlagen…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert