Das Projekt Computersteuerung

Die Idee

Die Modelleisenbahn soll irgendwann mal vom Computer aus steuerbar sein. Dazu braucht es zunächst einmal ein Konzept, mit dem das möglich wird. Folgende Dinge sollen im Endausbau möglich sein:

  • Alle Weichen über den PC ansteuerbar
  • Alle abschaltbaren Gleise über den PC ansteuerbar
  • Belegtanzeige der abschaltbaren Gleise (auch im abgeschalteten Zustand)
  • Belegtanzeige der gerade befahrenen Teilstrecken
  • Steuerung der Fahrgeschwindigkeit von bis zu 4 Teilstrecken separat
  • Programmierbare Reglereigenschaften zur Anpassung an verschiedene Loks
  • Gleichzeitige Benutzung von Computer und Schaltpulten (Konsistenz des Zustandes)
  • Anbindung der Schaltpulte ohne Kabelsalat
  • Drahtlose Anbindung des Computers oder Tabletts

Hört sich kompliziert an - muss es aber nicht sein. 

 


Das Konzept

Für die Umsetzung haben wir uns entschieden, eine Vernetzung auf Basis des CAN Bussystems zu realisieren. Die dafür nötige Elektronik wurde so einfach wie möglich gehalten und basiert auf Arduino Nano Boards, die für wenige Euro im Internet zu haben sind (10 Stück habe ich für 35 Euro oder so erstanden). Alle Platinen haben die gleiche Software drauf und unterscheiden sich nur durch 4 Jumper, über die bis zu 16 identische Boards realisiert werden können. Die Anbindung an den PC erfolgt über ein kleines BlueTooth Modul, welches ebenfalls für schlappe 7 Euro zu bekommen ist.

Neben den Arduino Boards braucht man dann nur noch wenige teils historische Bauteile aus dem Elektronikversand und schon kann es losgehen. 

 


Die Umsetzung

Weichenantriebe

Fangen wir klein an - zunächst braucht man einen elektronischen Antrieb für die Weichen. In der Regel brauchen die Spulen an den Weichen mindestens 12V, damit die vernünftig schalten. 

In dem Wissen, dass am Ende jede Weiche irgendwie von einem Arduino Controller Board angesteuert werden müssen, braucht es also einen Treiber, der aus der 5V Welt die beiden Weichenspulen mit jeweils 12V antreibt.

Hier ist die Lösung für diese Aufgabe:

Das Ganze passt auf eine kleine Lochrasterplatte drauf und kommt unter jede Weiche auf der Anlage:

Download
Weichenantrieb.pdf
Adobe Acrobat Dokument 23.3 KB

Abschaltbares Gleis mit Besetztanzeige

Dieser Teil hat sich am schwierigsten erwiesen und hat ein paar Tage gebraucht, bis er vernünftig funktioniert hat. Das Problem: Eine Gleichstromanlage mit beiden Fahrtrichtungen braucht eine Abschaltung, die bidirektional funktioniert. Ein Relais kam nicht in Frage, weil es permanent Strom ohne Ende verbraucht, wenn ein Gleis eingeschaltet ist. Also mußte ein elektronischer Schalter her, der +/- 12V durchschaltet und auch sperren kann und dabei keinen Ruhestrom verpulvert. Weiterhin soll dann auch noch die Besetztanzeige möglich sein, die im ein- und ausgeschalteten Zustand anzeigt, ob da was auf dem Gleis steht, oder nicht. Und das auch, wenn der Zug volle Pulle in beide Richtungen fährt.

Im Fundus hatte ich noch sogenannte TOP-FETs liegen, die über eine logische Ansteuerung sauber schaltbar sind. Leider haben alle FETs immer eine leitenden Eigenschaft in eine Richtung (Rückwärtsdiode), die ein Abschalten nur in einer Fahrtrichtung erlauben. Also müssen da 2 TOP-FETs antiseriell eingebaut werden.

Die Ansteuerung birgt ein weiteres Problem - sie muss aus der 5V Welt funktionieren und im Zustand "HIGH" (also 5V)  aus sein, damit beim Einschalten der Anlage nicht gleich alles losfährt. (5V is dummerweise der Startzustand meiner Elektronik - dazu mehr später).

Zur Ansteuerung der TOP-FETs braucht es also zunächst wieder mal einen Level Shifter von 5V nach 12V. 

Nun das Problem "Besetztanzeige":

Hierzu verwenden wir einen ähnlichen Fahrregler, wie bereits mit der analogen Lösung aus dieser Homepage dargestellt. Der neue Regler läuft ebenfalls über den Arduino - nun aber mittels eines D/A Wandlers und einer Tüte Software. Details dazu später. 

Der Regler liefert nun immer und zu jeder Zeit eine kleine rechteckförmige Spannung mit einem Hub von ca +/-2V. Dieser Wechselspannung wird der DC Fahrstrom in der Software überlagert und so schieben sich diese +/-2V je nach Fahrregler Aussteuerung bis +12V rauf oder bis -12V runter. Die wichtige neue Eigenschaft ist, dass auch in Nullstellung die Wechselspannung noch da ist. Diese Wechselspannung nutzen wir nun, um den Motor auf dem Gleis zu detektieren.

Im abgeschalteten Zustand wird dazu die Fahrspannung weiter hochohmig auf das Gleis gelegt. Der Serienwiderstand verhindert, dass der Motor dreht - es fließt aber ein schöner Wechselstrom durch die Lok. Den greifen wir über 2 antiparallel geschaltete Dioden ab und dann geht wieder die Levelshifterei zu der 5V Welt los.

So sieht die Schaltung aus:

Auch diese Schaltung passt leicht auf eine Lochrasterplatte drauf. In dem Beispiel sind 4 abschaltbare Gleise nebeneinander realisiert. Das entspricht genau einer EURO-Karte: (Zur Vereinfachung ist nur eine Bestückung dargestellt)

Download
Abschaltbares Gleis.pdf
Adobe Acrobat Dokument 149.8 KB

Das IO-Board

Diese Platine stellt das Herz der Anlagensteuerung dar. Hier sitzt ein Arduino Nano Controller und steuert über den I2C Bus die guten alten PCF8574 Port Expander an. Aus jedem PCA8574 kann man 8 digitale Eingänge oder Ausgänge machen. Eine Standard EURO Platine kann so  12 x 8 = 96 I/Os zur Verfügung stellen.

Weiterhin befindet sich auf dem Board ein Stand-alone CAN Controller (MCP2515) aus dem Museum, der über SPI an den Arduino angekoppelt ist. Dahinter schafft dann ein CAN Transceiver (TJA1044 oder TJA1042 oder TJA1040) das Signal auf eine 2-Draht Klingelleitung zur Verteilung auf der Anlage. Dann ist da noch ein 5V Regler drauf (7805) und 4 Jumper zur Addressenauswahl des Boards. 

Diese Platine steckt dann in den Schaltpulten drinnen, um die Taster für die Weichen, die Schalter für die abschaltbaren Gleise sowie die LEDs für die Besetztanzeige zu bespaßen. Die gleichen Platinen steckt dann mit anderer Adresse in der Anlage drinnen und steuern da die Weichen sowie die abschaltbaren Gleise an.

Das Gute an der Sache: Alle Platinen der Anlage sind identisch! Die Software erkennt an den Adress-Jumpern, was auf dem Board zu tun ist. Daher kann auch auf allen Board die identische Software drauf - die Jumer entscheiden, was zu tun ist.

Alle Ereignisse werden über den CAN Bus im System verteilt und können damit auch über CAN vom PC aus gesteuert werden. Wie das CAN Signal vom PC in die Anlage kommen, wird später gezeigt.

Hier nun die Schaltung von der Standard Platine:

Und hier das Layout - passt genau auf eine Euro-Karte drauf:

Download
IO Board.pdf
Adobe Acrobat Dokument 259.7 KB

Der neue Regler

Der analoge Fahrregler, wie bereits vorher auf dieser Homepage beschrieben, wird hier weiter verwendet. Allerdings wird das analoge Potentiometer an dem Regler nun durch eine Ansteuerung über den Arduino ersetzt. Die Wechselspannungseinkopplung auf dem Originalregler wird einfach abgeklemmt und der Potieingang nun über einen D/A Wandler von diesem neuen Board übernommen.

Die neue Platine vereinigt nun die Gesamtstromversorgung der Anlage (Gleichrichter und Pufferkondensatoren) mit dem Arduino, der CAN Schnittstelle, einem 4-Kanal D/A Wandler sowie einem 4-fach Operationsverstärker, der das 5V basierte D/A Signal in die +/- 12V Welt übersetzt.

Das Poti vom Fahrregler geht nun direkt zum Arduino und dort in einen A/D Eingang. Die Software liest den Potiwert ein und errechnet dann den D/A Wert mit überlagerter Wechselspannung. Das Ergebnis geht dann über die OpAmps an die analogen Fahrregler und schon kann man "digital" fahren. 

Der Fahrreglerwert wird natürlich über den CAN Bus im System verteilt und kann nun auch über CAN gesteuert werden. 

Und hier die Regleransteuerung über den Arduino:

(Noch nicht aufgemalt)


Die PC Anbindung über BlueTooth

Ist noch in Arbeit - die Testschaltung läuft - Ansteuerung über PC / MacBook / iPhone / iPad und Android Phone hat schon funktioniert! Alles Weitere demnächst!