text: 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…
  Teilen in...
  Facebook
  Twitter
  Xing
  Linkedin
  CategoriesElektronik, Projekte, Raspberry PiTagsDekoder, Eisenbahn, Gleis, I2C, Modellbahn, Raspberry Pi, S88, Trafo
  Beitrags-Navigation
  ← Previous Previous post: Neopixel-Cube
  Next → Next post: Für’s Aquarium
  Schreibe einen Kommentar Antworten abbrechen
  Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert
  Kommentar *
  Name *
  E-Mail *
  Website
  × acht = seventy two
  Beiträge
  Schöne Adventszeit!
  Bewässerung
  Für’s Aquarium
  Miniaturwelt steuern
  Neopixel-Cube
  Weiter gehts…
  Gewächshaus
  Kommentare
  swen bei Digitalradio mit Raspberry Pi
  swen bei Digitalradio mit Raspberry Pi
  swen bei Digitalradio mit Raspberry Pi
  Volkmar Pohl bei Digitalradio mit Raspberry Pi
  Franz bei Digitalradio mit Raspberry Pi
  Lutz Pohl bei Digitalradio mit Raspberry Pi
  Hans-Hermann Petersen bei Digitalradio mit Raspberry Pi
  Hans-Hermann Petersen bei Digitalradio mit Raspberry Pi
  Links
  sw Weblog
  sw Twitter
  Archiv
  Archiv Monat auswählen November 2022 Oktober 2022 August 2022 Juli 2022 April 2022 März 2022 Januar 2022 Dezember 2021 November 2021 Oktober 2021 August 2021 Juli 2021 Juni 2021 Mai 2021 Januar 2021 Dezember 2020 September 2020 August 2020 Juli 2020 Mai 2020 März 2020 Januar 2020 Oktober 2019 September 2019 August 2019 Juli 2019 Juni 2019 April 2019 März 2019 Februar 2019 Januar 2019 Dezember 2018 November 2018 August 2018 Juli 2018 Juni 2018 Mai 2018 April 2018 März 2018 Februar 2018 Januar 2018 Dezember 2017 November 2017 Oktober 2017 September 2017 August 2017 Juli 2017 Juni 2017 Mai 2017 April 2017 Januar 2017 Oktober 2016 August 2016 Juli 2016 Juni 2016 Mai 2016 März 2016 Dezember 2015 November 2015 Oktober 2015 September 2015 August 2015 Juli 2015 Juni 2015 Mai 2015 April 2015 März 2015 Februar 2015 Dezember 2014 November 2014 Oktober 2014 September 2014 August 2014 Juli 2014 Juni 2014 Mai 2014 April 2014 März 2014 Februar 2014 Januar 2014 Dezember 2013 November 2013 Oktober 2013 September 2013 August 2013 Mai 2013 April 2013 März 2013 Dezember 2012 Oktober 2012 Mai 2012 Januar 2012
  Kategorien
  Allgemein
  Arduino
  Codeschnipsel
  Elektronik
  ESP
  Feather
  Magazin
  Photon
  Projekte
  Raspberry Pi
  Smarte Objekte
  Smarthome
  Software
  Stories
  Wearables
  Website-News
  Willkommen
  Schlagwörter
  Arduino Banana Cam Chipkarte Debian FHEM Hausautomation Hausserver Homematic Homeserver I2C Internet der Dinge Internet of Things IoT Kamera Karte LED Linux Messe Nano NFC OLED Particle Photon PHP Pi PiCam Python Radio Raspberry Raspberry Pi Raspi RFID Roboter RPi Server Smartcard Smarte Welt Smarthome Webcam Website Weihnachten Wifi WLAN Zero