Steuerung der Modellbahn
mit einem Computer

(In Bearbeitung)
   


Grundsätzliche Gedanken zur Steuerung der Bahn mittels Rechner

Vor längerer Zeit wurden bereits Überlegung zur PC-Steuerung einer Modellbahn angestellt.
Die Ergebnisse mündeten bei der technischen Realisierung im IO-Warrior.
Der IO-Warrior wird über ein USB-Anschluss mit einem Rechner verbunden und stellt je nach Typ bis zu 40 Signale bereit.
Die Software auf dem Rechner sollte eine Benutzerfreundliche Bedienung realisieren und setzt die Aktionen über die 40 (max) Signale auf die Bedingungen der Steuerung der Modellbahnanlage um.

Wie das aussehen könnte zeigt das folgende Beispiel: Bedienung vom PC
Das Programm wurde unter php erarbeitet und ist bedienbar. Es werden auch bereits die Adressen der Schaltelemente als Bitfolgen bekannt gegeben.

Das Bild zeigt bereits die wichtigsten Elemente zur Steuerung der Anlage.
Das ist im oberen Teil die Darstellung der aufgebauten Anlage mit allen Schaltelementen. Als letztes wurde das untere Signal bedient, es hat die Adresse 3610; bzw. 001001002, diese Umrechnungen übernimmt das Programm.
Entsprechend dem Konzept muss natürlich in Abhängigkeit vom Aufbau auch ein entsprechender Gleisplan mit den Adressen der Schaltelemente generiert werden können!
Der zweite Teil (unten) realisiert die Steuerung der Fahrspannung, also Geschwindigkeit, Richtung und Sonderfunktionen.

Aber bei genauer Betrachtung haben wir lediglich die handbedienbaren Elemente der Anlage durch eine Rechneroberfläche ersetzt. Ob das leichter bedienbar ist, ist nicht geklährt!
Aber es gibt noch eine mögliche dritte Komponente, die der programmgesteuerten Bedienung der Anlage. Und dafür sind die beiden zuvor genannten Punkte unbedingt notwendig.

Wichtig, bei allen Überlegungen zur Steuerung der Analage soll immer auch ein Handbetrieb möglich sein, ob der nun alternativ oder auch parallel nutzbar ist, muss noch ermittelt werden.

Technische Realisierung der Steuerung

Von den drei genannten Teilen soll als erstes die Fahrspannungserzeugung umgesetzt werden.

Fahrspannungs-Erzeugung
Und wieder gibt es drei zu überlegende Varianten:

  1. analoge Gleichstrom Fahrspannung
  2. digitale Fahrspannung
  3. Wechselstrom Fahrspannung

Die digitale Fahrspannung sollte einfach realisierbar sein, denn die Steuerung erfolgt über digitale Adressen mit digitalen Werten. Die Adressenerzeugung ist bereits Basis der Schaltelemente-Ansteuerung (sicher ist es doch nicht ganz einfach).

Die Wechselstrom Fahrspannung soll zur Zeit nicht untersucht werden.

Analoge Gleichstrom Fahrspannung
Das Problem liegt darin, dass man quasi analog die Fahrspannungswerte eingeben, deren Ausgabe zur Steuereinrichtung aber nur Bitweise erfolgen kann. In einer speziellen Schaltung muss aus jeder möglichen (zugelassenen) Bitkombination ein analoger Wert entstehen. Dabei brauch natürlich nicht der digitale Wert mit dem analogen übereinstimmen, z.B. gibt es für oben gezeigte Steuerung 5 Fahrspannungsstufen:
Halt, viertel, halb, dreiviertel, voll.
Die kann man digital durch 3 Bit bezeichnen:
000, 001, 010 011, 100
In der Realisierung kann das aber sein:
0V, 4V, 8V, 12V, 16V (oder andere)
Der Rechner stellt nur die Bitkombinationen zur Verfügung, die folgende elektronische Schaltung muss den Rest erledigen. Unsinnig wäre die Werte auch digital bereit zustellen:
00000, 00100, 01000, 01100, 10000
Man braucht nun 2 Bit mehr für die Ausgabe, es gibt aber nicht beliebig viele Ausgänge am Rechner!
Schaltungen, die diese Leistung zulassen, werden als Digital-Analog-Wandler bezeichnet.
Grundprinzip dabei ist, dass das kontinuierliche analoge Signal aus einzelnen diskreten Spannungsstufen zusammengesetzt wird. Durch zusätzliche Maßnahmen kann man die Spannung etwas verschleifen.

      Das Verschleifen erfolgt beispielsweise durch Auf- und Entladen von Kondensatoren.
Eine Rolle spielt auch der Motor der Lok mit eventueller Schwungmasse und die Masse des zu ziehenden Zuges. Insbesondere beim Anhalten des Zuges wirken alle Faktoren entgegen dem Halt, das muss man bei der Steuerung berücksichtigen.

Es gibt viele Möglichkeiten zur Realisierung derartiger Wandler. Die klassische Variante ist der Addierer aus der Analogrechentechnik. Dank moderner Bauelemente ist man nun in der Lage solche Addierer selbst aufzubauen.

      Mit einem Operationsverstärker kann man einen invertierenden Verstärker aufbauen. Für einen Eingangswiderstand Re gilt:
-Ua = Rrk/Re * Ue ,
ist also Rrk doppelt so groß wie Re, dann erhält man am Ausgang die doppelte Eingangsspannung.
Das läßt sich für mehrere Eingangswiderstände erweitern:
-Ua = ( Rrk/Re1 + Rrk/Re2 + Rrk/Re3 + ... ) * Ue
Nimmt man in unserem Beispiel Rrk = 8R und Ue = 1V an, so erhält man je nach geschlossenem Schalter :
    Bit0: -Ua = 8R/8R * 1V = -1V
    Bit1: -Ua = 8R/4R * 1V = -2V
    Bit2: -Ua = 8R/2R * 1V = -4V
    Bit3: -Ua = 8R/1R * 1V = -8V

Kombiniert man die Zuschaltung der Bits, kann man in Schritten zu 1V alle Spannungen von 1V bis 15V erzeugen (das funktioniert wie in der Dualtechnik). 0V stellt ein Sonderproblem dar.

      Die nebenstehende Schaltung ist alternativ anwendbar, ist vom Grundprinzip ebenfalls ein Addierer.

Weiterführende Literatur findet man unter:

  • Studienskript AD-/DA-Umsetzer
    © BA Eisenach, 2005
  • Analog-Digital-/ Digital-Analog-Wandler
    Humboldt-Universität zu Berlin
    Institut für Physik
  • Universität Paderborn –Fakultät für Naturwissenschaften -Physikalisches Praktikum PM 1
    A/D-und D/A-Wandler

Vom Prinzip her haben wir das Problem der Wandlung eines digitalen Wertes in einen analogen geklärt. Das die Spannung negativ ist, ist auch kein Problem, wir brauch am Ende ohnehin einen Polwende-Schalter.
Problem ist aber die Leistung. Diese Spannung Ua muss mit einem Leistungsverstärker auf den Modellbahnbetrieb angepasst werden. Das bedeutet, dass man mit einem Strom von etwa 1,5A zurande kommen muss und es kann auch mal ein Kurzschluss passieren. Ohne entsprechende Maßnahmen könnte die Leistungsstufe verglühen. Man braucht weiteren schaltungstechnischen Aufwand!

Andere Lösungen

Wenn man doch größeren Aufwand betreiben muss, kann man einmal schauen was die Technik sonst noch anbietet.
Eigentlich braucht man nur ein regelbares Netzgerät, das kann sehr gut beliebige Spannungen bereitstellen und hat auch eine Kurzschlusssicherung. Ich kann aber nicht die gewünschte Spannung vom Computer einstellen, ich muss einen einfachen Knopf drehen!

Im Buch
"Wolfgang Horn; Modellbahn Elektronik, Fahrregler und Fahrstraßen; Weltbild Verlag GmbH, Augsburg; 1999"
gibt es interessante Beschreibungen zu dieser Problematik.
Herr Horn verwendet zur Umsetzung der digitalen Werte in analoge den regelbaren Spannungregler-IC LM 317.

        Auf den ersten Blick sieht der Regler wie ein Leistungstransistor aus, aber es ist ein Schaltkreis mit viel Innenleben (Bild aus Datenblatt). Gesteuert wird mit einem Operationsverstärker, der Ausgang wird mit einer NPN Darlington Stufe betrieben die dann so 4A zulässt und es gibt eine Strom und Temperaturüberwachung - das ist alles sehr gut für unsere Zwecke.
Aber, wie wird der Regler gesteuert?

Folgende Grundschaltung ist Basis:

    Der IC LM 317 kann nur die Spannung im positiven Bereich regeln, deshalb ist für den Einsatz als Fahrtregler ein "Polwendeschalter" (2-pol. Umschalter) notwendig. Über die beiden Widerstände wird die Ausgangsspannung geregelt. Die angegebenen Werte werden häufig verwendet. Der IC ist in der Lage, auch mit pulsiernder Spannung zurecht zu kommen, d.h. er könnte auch zum Schwingen neigen. Deshalb werden am Ein- und Ausgang Kondensatoren von etwa 220nF zugeschaltet. Pulsierende Spannung kann auch der sinusförmige Teil der Wechselspannung nach der Zweiweggleichrichtung sein. Läßt man den Kondensator 2200µF weg, dann hat man genau diese Spannung. Für Loks der Modellbahn bringt diese Spannung gutes Anfahrverhalten und hohe Zugkraft. Das kann man nutzen, indem der Kondensator zuschaltbar gemacht wird.

    Die Schaltung wird nun so verändert, dass anstelle des Potentiometers wahlweise feste Widerstände zugeschaltet werden.
Nimmt man als Schalter einen Dreh-Stufenschalter, dann hat man ein übliches Fahrpult.
Aber, die einzelnen Schalter könnten auch durch die GPIO-Kontakte von einem Programm angesteuert werden. Beides ist für unser Projekt sehr gut.
Wie viele Fahrstufen nun installiert werden sollen, hängt vom vorhandenen Schalter oder von den zur Verfügung stehenden GPIO-Kontakten ab.

    Zur Ermittlung der notwendigen Widerstände wurden zunächst mit der ersten Schaltung Diagramme zur Spannung in Abhängigkeit vom Widerstand erzeugt.
Als Eingangswert stand eine Spannung von 12,4V~ zur Verfügung. Nach der Gleichrichtung werden daraus mit Kondensator 16,24V= bzw. ohne Kondensator 10,28V=. Die Werte zeigt ein einfaches Multimeter an, genauer ist es mit einem Oszi, da die Messung immer genau eine sinusformige Spannung voraussetzt. Die Endwerte werden durch den Regler nicht erreicht (das liegt am Prinzip des IC's), Mit Kondensator werden es 14,8V=, ohne 9,5V=.
Aus den Kurven sieht man eine recht gute Linearität bis zu etwa 3KΩ, danach ist die Spannung nahezu konstant.
Und die Spannung wird bei R = 0Ω nicht Null! Die meisten Lok's können mit der Spannung nicht mehr fahren, könnten aber unterschiedlich schnell anhalten.
Aber man kann nun einen R-Wert für sicheres Anfahren ermitteln. Nimmt man an, dass das 5V wären, so brauchten wir mit C ein R = 0,71KΩ. Nun haben wir aber noch eine weitere Möglichkeit, wir lassen C in dieser Stufe weg, dann haben wir in dieser Stufe einen pulsierenden Spannungswert von etwa 4V, damit ruckelt sich die Lok los. In der nächsten Stufe schalten wir wieder den Kondensator zu, jetzt läuft die Lok ruhig.

Nehmen wir zunächst einmal die oben genannten 5 Fahrstufen als Basis (Halt, viertel, halb, dreiviertel, voll,
das entsprach etwa den Spannungen von 0V, 4V, 8V, 12V, 16V,
dann kann man sehr einfach aus dem Diagramm die notwendigen Widerstandswerte entnehmen.
Folgende Schaltungsanordnung realisiert die Aufgabe:

    Das sind die etwa notwendigen Widerstandswerte (aus dem Diagramm entnommen).
Die 5 Fahrstufen lassen sich so mit 3 Schaltern und 2 Widerständen realisieren.
Es fehlt der Schalter für den Fahrtrichtungswechsel und der Schalter für das Zuschalten des Kondensators. Insgesamt müssen also 5 Schalter eingebaut werden.

Realisierung der Schalter

    Man braucht steuerbare Schalter, also Relais oder Transistoren. Für die drei Schalter der Fahrstufen muss dieser Schalter bei Ansteuerung die Widerstände auf Masse legen (Fahrspannung Minus). Bei der Fahrtrichtungsumsteuerung wird sicher nur ein Relais zu verwenden sein, beim Zu- und Abschalten des Kondensatos von 2200µF ist sicher auch ein Relais notwendig, denn hier können hohe Einschaltströme auftreten.
Herr Horn verwendet für die Steuerung der Fahrstufen ein Transistor-Array ULN 2003, ich verwende Transmissions Gates des IC 4066 ( siehe Schaltungen ). Das sind CMOS-Schalter, bei denen die Richtung des zu schaltenden Stromes keine Rolle spielt und die Ansteuerung nachezu keine elektrische Verbindung zum Strom hat, diese Gebilde funktionieren fast wie ein Relais (in der Schaltung mit TrG bezeichnet).

Wie immer müssen bei CMOS-IC's die Steuereingänge zu jedem Zeitpunkt exakt definiert sein, es wird mit 1 (+12V) geschaltet, ansonsten legt der Pull-Down-Widerstand (10KΩ) den Eingang auf 0.
Ein TG kann maximal 200mW treiben, bei 12V entspricht das einem Strom von 17mA. Die Ansteuerung der Transistorstufen zur Steuerung der Relais erfolgt über einen Widerstand von 1KΩ, also müssen 12mA gesteuert werden, das ist also zulässig!
Für das TrG und die nachfolgenden Relaissteuerungen gibt es eine separate Stromversorgung, so dass diese elektrisch nicht mit der Schaltung zur Erzeugung der Fahrspannung verbunden ist, auch keine Masseverbindung. Das grüne Leitungssystem bezeichnet die Steuerung, das schwarze die Fahrspannungserzeugung. Über die Relais gibt es keine Verbindung zwischen beiden, nur die Verbindung der Steuerwiderstände liegt in der Steuerschaltung. Überspannungen oder Kurzschlüsse am Gleis sollten so nicht auf die Steuerung und damit auch nicht auf den Computer zurück wirken können.

Die fünf Steuerleitungen stehen nun bereit, müssen durch die GPIO-Kontakte oder seperate Schalter gesteuert werden.

Nun kann man eine Zuordnung der Bits (Schalter) zu den Fahrstufen finden:

Weiterhin kann mit RBtr auf Rangierfahrt geschaltet werden (C weg), und Fahrtrichtung gewechselt werden. Bei letzterer muss man beachten, dass es keine Probleme gibt, denn unabhängig von der Fahrstufe muss die Einstellung bestehen bleiben und darf nur bei Fahrstufe0 geschaltet werden können.

Zur Ermittlung der logischen Verknüpfung wird die Zuordnung der Bits von den Fahrstufen beschrieben (Schalter als Funktion von den Fahrstufen):
z.B. Bit2 wird geschaltet von der Fahrstufe1 oder Fahrstufe2
bzw. als logische Funktion: Bit2 = Fst1 ODER Fst2
So kann man nun alle Bits formulieren:

Diese Verknüpfungen müssen von der Handbedienung durch "Hardware" und von der Computer-Steuerung durchs Programm "Software" realisiert werden!

Handbedienung

Logische ODER-Verknüpfungen lassen sich mit Logikbausteinen herstellen, z.B. NOR 4001 oder NAND 4011 (oder andere Schaltkreis-Reihen).
Aber auch eine Oder-Verknüpfung mit Dioden ist möglich (siehe Master ). Den dabei entstehenden Spannungsverlust von etwa 0,6V kann man bei 12V verschmerzen.

    Das sind die daraus folgenden Schalter.
Zu beachten ist, dass es für eine Fahrtrichtung dargestellt ist, z.B. links, es wird in allen Fahrstufen außer Fst0 Bit5 angesteuert, in der anderen Richtung fällt diese Verknüpfung weg. Also braucht man noch einmal 4 Fahrstufen (Fst0 nicht).
Ein Problem kann auftreten, wenn die Handbedienung von der Steuerschaltung getrennt wird, dann stellt sich die Höchstgeschwindigkeit ein (Widerstand unendlich). Dem wurde begegnet, indem in die Leitung der Fahrspannung ein weiteres Relais eingebaut wurde, welches beim Stecken der Schalter mit + verbunden wird und erst dann die Fahrspannung bereitstellt (untere Verbindung mit Bezeichnung "Relais).

Es bietet sich an, zum Schalten der Fahstufen einen Dreh-Stufenschalter zu verwenden, das könnte dann so aussehen:

    Dreh(stufen)schalter haben den Vorteil, dass immer nur ein Schalter geschlossen wird und eine Reihenfolge der genutzten Schalter vorgegeben ist, man kann nicht von "Halt" auf "volle Fahrt" schalten.
Die zuvor gezeigten Schaltungen zur Auswahl der Fahrstufen lassen sich nun sofort auf diesen Schalter übernehmen. Und es wurde auch noch die Fahrtrichtung mit integriert, das bedarf jeweils einer weiteren Diode. In der gezeigten Schalterstellung wird nun Bit2, Bit3, Bit4 und Bit5 angesteuert, das bedeutet, dass ein Widerstand von 0,74KΩ geschaltet ist (Bit2 und 3), der Kondensator abgeschaltet ist (Bit4) und die Fahrtrichtung nach links ist (Bit5 = 1 soll links sein). Nimmt man die gleiche Stellung nach rechts, dann ist Bit5 = 0, also Fahrtrichtung rechts.
Geschuldet dem Schalter der 11 Schaltstufen möglich macht, werden im Moment die Stufen 5 nicht gebraucht. Läßt man sie offen, stellt sich die Höchstgeschwindigkeit ein, aber bei links 5 muss unbedingt die Richtung gesteuert werden, sonst würde es von voll nach links (Stufe 4) sofort auf voll nach rechts gehen - das geht nicht!

    Das Schalten der Dioden ist etwas verwirrend, man kann das aber übersichtlicher gestalten (links).
Alle möglichen Schalterzustände werden waagerecht, alle Ausgänge (Bits) werden senkrecht angeordnet. An den Knotenpunkten werden nach Bedarf die Dioden gesetzt. Links wird senkrecht der Schalter bewegt.
Ich finde die Darstellung genial, ist aber leider nicht von mir. Rückt man den Schalter z.B. durch einen mechanischen Antrieb immer nach einer gewissen Zeit weiter, hat man z.B. das Grundprinzip eines mechanisch gesteuerten Waschautomaten. Die senkrechten Leitungen steuern dann "Wasser ein", "Wasser raus", "Trommel drehen" usw.
Und es wird noch interessanter - so funktioniert das " Microprogramm " jedes Rechners, die Grundbefehle des Rechners, z.B. Transport von Speicherplatz A nach B usw. - logisch, dass das alles elektronisch gesteuert abläuft.
Legt man für die Ausgangsleitungen Werte fest, z.B. Bit1 = 20, dann kann man für jede Zeile (mit Verbindung = 1, sonst 0), Zahlenwerte festlegen, die gezeigte Schalterstellung hat somit den dualen Wert 111102 bzw. dezimal 3010 (bzw. in der Computertechnik üblicherweise hexadezimal 1e16).

    Aus alten Beständen gab es bei mir noch von RFT den Drehschalter XD .
    Es ist ein sehr variabler Schalter.
Er hat 12 Schalterstellungen, der Endanschlag kann beliebig angeordnet werden (es können auch zwei sein). Zur Zeit wird ein Anschlag beidseitig genutzt, es sind somit 11 Stellungen möglich.
Die Schaltebene ist grundsätzlich in 2 Ebenen zu 6 Stellungen geteilt, die wiederum zusammengeschaltet werden können (eine Ebene mit 12 Stellungen). Weiterhin können leicht weitere Schaltebenen angebaut werden (siehe Bild), der Schalter soll genutzt werden.
Auf einem Stück Universal-Leiterplatte wurden die Dioden entsprechend dem Bild links verschaltet (2 Leiterbahnen wurden unterbrochen).

    Die Verbindung vom Handregler zur Steuereinheit erfolgt mit einem Kabel mit SUB9-Stecker-/Buchsensystem. An der Steuereinheit ist es steckbar, so dass hier alternativ auch die PC-Verbindung gesteckt werden kann.
Über Stift2 erfolgt die Rückführung der +12V zur Ansteuerung des Leitungsrelais zur Unterbrechung der Fahrspannung. Stift6 ist für -12V vorgesehen (wird im Moment nicht gebraucht), Stift7 ist nicht belegt.

Test der Steuerung

Um eine bessere Aussagen zur Funktion dieses Reglers zu bekommen, wurden Messungen mit einem Oszillograph durchgeführt. Am Ausgang wurde ein 100Ω Widerstand geschaltet, der in etwa den ohmschen Widerstand des Motors einer Lokomotive simulieren könnte. Der Widerstand wird "nicht anfaßbar" warm. Das stellt sich ein:
Fahrstufe0
(FSt0)
Halt
Fahrstufe1
(FSt1)
¼
Fahrstufe2
(FSt2)
½
Fahrstufe3
(FSt3)
¾
Fahrstufe4
(FSt4)
voll

Die Bilder zeigen den Rangierbetrieb. Der obere Teil der Kurve ist die eingestellte Spannung. Sie steigt mit Erhöhung der Fahrstufe. Zu sehen aber ist auch, dass Schwingungen an den Eckpunkten entstehen, da müssen noch Kondensatoren eingebaut werden. Man sieht auch, dass in FSt0 die Spannung nicht 0 ist.


Die Beiden Bilder zeigen die Fahrstufe3, links den Ragierbetrieb (ohne Kondensator), rechts den Streckenfahrbetrieb, also mit Kondensator, der eingestellte obere Wert ist etwa der Gleichspannungswert (kleine Abweichungen sind vorhanden).
Die nutzbare Leistung wird durch die Fläche unter der Kurve dargestellt, sie ist beim Rangierbetrieb eben auch kleiner, das merkt man auch an der Temperatur des Testwiderstandes.
Nun sieht man auch, dass die Messung (auch die oben dargestellten Kurven) mit einem normalen Multimeter interpretationsbedürftig sind, die Frequenz beträgt nicht 50Hz, sondern 100Hz, und die Kurvenform entspricht nicht der Sinusfunktion, das sind aber die Voraussetzungen für die Messung mit einem Multimeter.
Aber,
es funktioniert genau wie es vorgesehen war!

 

Fahrspannungs - Hand - Regler

    Das Bild zeigt die komplette Schaltung.
Unten wurde der Handregler "angesteckt", die Schalter sind symbolisch, da hier ein Stufenschalter mit 9 Schaltstufen wirkt, die negativen Spannungsstufen werden dargestellt.
An der Grundschaltung gab es noch einige Veränderungen, wie Betriebsspannungsanzeige in beiden Schaltungsteilen (grüne LEDs), eine Kurzschlussschaltung mit Anzeige (3,9Ohm Widerstand, rote LED), Testbuchsen um z.B. Steuerwiderstände zu testen, das letzte Relais dauernd einzuschalten, 12V vom Bus nehmen, ein Meßgeräte-Ausgang usw.
Nicht dargestellt ist im 12V-Teil die Glättung der Spannung mittels Kondensatoren nach der Gleichrichtung.
Die -12V wird im Reglerteil nicht gebraucht, ist aber an der Buchse vorhanden, da sie bei der PC-Steuerung gebraucht wird.

    Das Bild zeigt die komplette Schaltung: In der Mitte die Leiterplatte, links den Handregler, rechts das Messgerät und einen Arbeitswiderstand (anstelle einer Lok).
Nach dem Ausfall einer umgebauten Leiterplatte wurde die Schaltung erneut aufgebaut, auf einer Universalleiterplatte.
Links vorne befindet sich der 12V Regler, danach die Relais mit der Steuerung. Das erste Relais realisiert den Polwendeschalter, das folgende hellblaue die Zu/Abschaltung des Kondensators zur Glättung der Fahrspannung, links daneben das Zuschaltrelais.
Rechts sieht man den Regler für die Fahrspannung, zumindest den Kühlkörper. Nach dem Glättungkondensator dann die Platine mit den TGs und darunter die Gleichrichtung für beide Teile. Am Ende befinden sich dann die Buchsen zur Verbindung.
Mit der dargestellten Anordnung wurden Tests durchgeführt. Der Widerstand hat einen Wert von 100Ohm, es wurde Fahrstufe 4 nach links und Rangierbetrieb eingestellt.
Ergebnis:
Der Widerstand wird heiss (nicht festhaltbar), die Einstellung steuert alle Relais an, der Spannungsregler 12V wird warm, es stellt sich aber auf Grund der Kühlung eine hinnehmbare Temperatur ein. Der Fahrregler wird nicht merkbar warm.
Es kann so funktionieren!

PC-Steuerung

Um eine zerstörungsfreie Ankopplung eines Rechners an die Modellbahn vorzunehmen, sind zwei Teile erforderlich:

  1. eine Hardware zur Entkopplong des Rechneraus- und Eingangs
  2. Software zur Steuerung der Aus- und Eingangsleitungen des Rechners

Hardware

Der Teil, der die Steuerung der Fahrspannung sowohl von der Handsteuerung als auch der PC-Steuerung vornehmen soll, wird zu einem Teil durch den IC 4066, einem IC mit 4 Transmissions-Gates (TG), realisiert.

    Die Gatter funktionieren nahezu wie ein Relais, es spielt weder die Richtung des zu steuernden Stromes als auch Form des Stromes eine Rolle. Die Ansteuerung des Gatters erfolgt nahezu stromlos.
Ganz wichtig jedoch ist, dass zu jeder Zeit der Pegel des Steuersignals genau festgelegt sein muss! Da das bei offenem Schalter der Handsteuerung nicht gewährleistet ist, muss mit einem Pull-Down-Widerstand in diesem Fall der Pegel auf 0 gelegt werden. Der Widerstand wurde auf 10KΩ festgelegt.

Mit diesem Teil wird die Handsteuerung verbunden, ist also nun auch für die PC-Steuerung so vorgegeben!

Zur Steuerung sollen vom Raspberry-PC die GPIO-Kontakte genutzt werden. Diese liefern eine Spannung von 3,3V, mit dieser Spannung muss das TG angesteuert werden können!?
Außerdem hat der Rechner eine direkte Verbindung zum Regler. Es ist vorgesehen aus Sicherheitsgründen hier eine weitere Trennung vorzunehmen.

    Die Trennung soll mit einem Opto-Koppler erfolgen.
Hierfür wurde der Typ PC 817 (bzw. 827, 847) ausgewählt.
Mit den Eingängen 1 und 2 wird die LED von einem GPIO-Kontakt angesteuert (1 : GPIO +3,3V; 2 : GRD Masse). Allerdings muss der Strom begrenzt werden, nach Datenblatt auf maximal 50mA. Man sollte jedoch bedenken, dass der Raspberry nur einen bestimmten Gesamtstrom über alle Kontakte betreiben kann (wir brauchen insgesamt 13 Kontakte). Bei Tests wurde ermittelt, dass der Optokoppler mit 540Ω gut funktionierte, es stellt sich ein Strom von 2mA ein, gesamt also 26mA.

Der Lichtempfänger ist ein Fototransistor.
Ohne Lichtansteuerung hat die Emitter-Kollektor-Strecke einen sehr großen Widerstand, mit Licht einen sehr kleinen. Zielstellung ist, bei Licht einen Plus-Pegel zur Steuerung des TG zu generieren.

    Und so funktioniert es!
Erhält der Fototransistor kein Licht, hat er einen sehr großen Widerstand (viel größer als 10KΩ), dann stellt sich entsprechend dem Spannungteilerverhältnis am Ausgang eine Spannung um 0 ein. Wird hingegen der Transistor mit Licht bestrahlt, hat er einen Widerstand von etwa 0Ω, es liegt nun nahezu die Betriebsspannung am Ausgang, also 1.
Also,
1 (3,3V) am GPIO-Kontakt erzeugt Licht, was wiederum 12V (1) am Ausgang bewirkt.

    Soll bei der Ansteuerung eine 0 herauskommen, dann muss man die Schaltung so verändern. Der Widerstand kann variiert werden, der Strom durch den Fototransistor darf aber maximal 50mA betragen, also R darf nicht kleiner als 240Ω sein!

Nun müssen die beiden Teile nur noch zusammengeschaltet werden.

    Das linke Teil befindet sich in der Nähe des Raspberry, das rechte Teil im Regler. Zwischen beiden gibt es eine Leitungsverbindung.
Man sieht sofort, dass beide 10KΩ Widerstände parallel geschaltet sind, somit stellt sich ein Gesamtwiderstand von 5KΩ ein. Da der Optokoppler mit der Betriebsspannung vom Regler (+12V) versorgt wird, kann man den Widerstand am Optokoppler weglassen (den am TG braucht man für die Handsteuerung)!

    Das ist das Ergebnis!
Es werden wenige Bauelemente gebraucht, aber wir haben nun eine exakte galvanische Trennung zwischen Rechner und technischem Prozeß!
Der Pull-Down-Widerstand wird eigentlich in dieser Beschaltung nicht gebraucht, da durch den Fototransistor immer ein exakter Pegel am Steuereingang des TG's vorhanden ist, aber er passt gerade vom Wert und ist somit "Arbeitswiderstand" des Fototransistors!
Die rote LED zeigt Bereitschaft an, die +12V vom Regler wird durchgestellt und liegt am Fototransistor an.

    Praktischer Aufbau der TG's auf der Reglerplatine
Benötigt werden 2 Schaltkreise mit TG's (5 werden benötigt, 4 sind aber nur auf einem IC). Beide TG's werden auf einer kleinen Universalleiterplatte aufgebaut (linker: Steuerung der Widerstände; rechter: Steuerung der beiden Relais).Das dritte Relais, zur Trennung/Anschalten der Fahrspannung, wird ebenfalls über diese Platte angesteuert.
Diese Platine wird über der Fahrspannungsplatine plaziert. Nun kann man sehr gut die 7 Anschlüsse auf die Fahrspannungsplatiene verteilen, zur Verbindung zu den Optokopplern wird eine SUB9-Buchse verwendet. Die Verbindungen haben die Bezeichnung S9.x (x - Stiftnummer in der Buchse).

Auf der Platine werden für die Widerstände des Reglers Steckbuchsen eingebaut, so dass die Widerstände im Bedarfsfall leicht getauscht werden können.
Man muss hier aber aufmerksam sein, denn es gibt zwei Masseverbindungen (Masse 12V, Masse Regler), die aber nicht zusammengeschaltet werden dürfen!!! (siehe die Gesamtschaltung )

    Das Bild zeigt die komplette Schaltung.
Unten wurde die PC-Kopplung "angesteckt" (Beschreibung oben).
Die Besonderheit ist, dass es nur 5 "Schalter" gibt im Gegensatz zur Handregelung. Das ist ok., da nun alle Aktionen durch ein Programm ausgelöst werden.
Die LED zeigt an, ob die Fototransistoren mit Betriebsspannung versorgt werden.

 

Steuerung der Schaltelemente auf den Modulen durch einen Rechner

    Um mit dem Rechner das Modulsystem steuern zu können, muss es in gleicher Weise wie die Handsteuerung Signale auf den Systembus legen. Es wird ein weiteres Steuermodul "Steuerung-Modul-Rechner" aufgebaut. Die Dioden in den konventionellen Steuermodulen dienten der Realisierung der ODER-Funktion. In dem "Steuerung-Modul-Rechner" braucht man an den Ausgängen auch eine Diode, sie schützt den Ausgang der Elektronik vor unerlaubter Eingabe eines Spannungswertes (von den anderen Steuermodulen), im Endeffekt wird auch eine ODER-Funktion realisiert.
Dieses Steuermodul hat wieder für den Systembus einen Stecker und eine Buchse, kann somit an jeder beliebigen Stelle eingefügt werden und hat noch eine Verbindung zum Rechner. Die Elektronik wird von der Systembetriebsspannung versorgt.

Was muss der Rechner und die Elektronik leisten?
Bei Auswahl eines Schaltelementes müssen entsprechend seiner Adresse entsprechende Leitungen des Bussystems ausgewählt und kurzfristig eine 1 (+12V) auf diese Leitungen gelegt werden.
Weiterhin sollen wie bisher die Rechnerausgänge galvanisch von der nachfolgenden Elektronik und Modellbahn getrennt werden!
Wichtig sind auch Überlegungen zum Leistungsbedarf der Schaltstellen, die Leistung muss durch die Elektronik aufgebracht werden.

    Das ist ja die schon bekannte Trennung mittels Optokoppler.
Was muss geschaltet werden? Bei den Steuermodulen mit Tastern spielt das eine eher untergeordnete Rolle, hier muss man schon einmal rechnen, z.B.:
Es sollen auf 10 Modulen Elemente zum Schalten sein und es soll die Adresse 255(10) ausgegeben werden (das ist sicher sehr unwirklich). Weiterhin sollen auf diesen Modulen durchschnittlich 2 Multiplexer genutzt werden.
Bei der Adresse werden jeweils 8 Eingänge gebraucht, insgesamt auf den 10 Modulen also 80 Eingänge. Nach Datenblatt stellt sich pro Eingang eines Multplexers 4514/15 ein Strom von 11mA ein, gesamt also 880mA, nahezu 1A - das muss die Elektronik leisten! Der Fototransistor im Optokoppler kann das ganz sicher nicht!
Es muss ein Leistungstransistor mit dem Ausgang gesteuert werden, das Transmissions-Gate kann das leider auch nicht.

    Eine Kollektor-Schaltung (Emitter-Folger) des Transistors ist hier angebracht. Mit +1 vom Optokoppler wird der Widerstand der Emitter-Kollektorstrecke sehr klein und legt somit an den Ausgang auch eine 1 (nahezu +12V). Allerdings fällt nun über den Widerstand von 220Ω die gesamte Spannung ab, der Widerstand wird sehr warm.
Bei Ansteuerung mit 0 wird über den Widerstand nahezu 0V gelegt.
Nun kann man die Anordnung modifizieren.

    Der Transistor wird in Kollektor-Schaltung betrieben. Solche Schaltung hat einen hohen Eingangswiderstand. Das gibt uns die Möglichkeit, dass der Basiswiderstand weggelassen werden kann.
Im nächsten Schritt wird der Emitterwiderstand des Fototransistors auch weggelassen, der Transistor wird zum Emitterwiderstand des Fototransistors.

    Erreicht haben wir, symbolisch dargestellt, eine alt bekannte Schaltung -
eine Darlington-Schaltung.
        Der erste Transistor ist der Fototransistor, der zweite ein alter SF123(..9). Er kann 0,5A ständig, mit Kühlung 0,8A und kurzfristig 1A verkraften. Sollte das nicht reichen kann da ein Leistungstransistor eingefügt werden.
Der Widerstand Re muss so klein sein, dass er bei Nichtansteuerung des Transistors "ausreichend" 0 erzeugt. Das geht um so besser, je kleiner er ist, aber bei Durchsteuerung fließt auch ein größerer Strom. Üblich wird 100Ω angegeben, das bedeutet aber, das der Widerstand folgende Leistung "verbraten" muss:
P = U2 / R = 144V2 / 100Ω = 1,44W
Der angegebene Widerstand von 1KΩ braucht nur eine Leisung von 0,144W zu verarbeiten. Man muss aber sehen, ob ausreichend 0 erreicht wird.

So weit, so gut!?
Wir haben aber einen großen Gedankenfehler in der Realisierung!
Der fällt sicher sofort auf, wenn man an die Programmierung geht. Die Elektronik funktioniert, auch 8 mal parallel - der Rechner kann das aber nicht zur gleichen Zeit parallel, er macht alles schön der Reihe nach, d.h. die Bit's werden zeitlich verzögert bereit gestellt. Die Multiplexer erhalten diese Signale auch verzögert und könnten bis zur kompletten Ausgabe zwischenzeitlich andere Adressen feststellen und reagieren. Das Problem hängt also im Wesentlichen von der Geschwindigkeit des Rechners ab, läßt sich reduzieren aber nicht vermeiden.

    So muss man sich das vorstellen, wobei tdiff nicht gleich sein muss, das hängt vom Programm ab.
Bekannt ist aber genau, wann alle bit's am Multiplexer vorhanden sind - nach der letzten Ausgabe! Jetzt muß man dem Multplexer mitteilen, dass das Signal gültig ist, ein Strobe-Signal aussenden.
Das geht natürlich ganz einfach, aber die bisher berechneten Signale müssen bereits fertig berechnet und gespeichert (Hardware) sein! Bei Strobe werden alle Speicherinhalte parallel auf den Bus gelegt, der Multiplexer erhält sie somit komplett.
Wir müssen eine Hardware zur Speicherung aufbauen!
Der "Raspi" bietet hier bereits eine Möglichkeit an, denn die GPIO-Kontakte werden einmal angesteuert und behalten dann Ihre Informationen. Man muss jetzt nur verhindern, dass sie über die Optokoppler ausgegeben werden, dazu folgende Möglichkeit.

    Es wird ein weiterer Transistor auf die Schaltung des Steuermoduls aufgebracht (oberer Transistor). Dieser wird wie die anderen durch den Fototransistor eines weiteren Optokoppler gesteuert. Er ist ebenfalls als Emitter-Folger geschaltet und stellt bei Ansteuerung +12V durch. Diese Spannung wird allen anderen Kollektoren der Fototransistoren zur Verfügung gestellt, sie funktionieren wie bisher. Aber, wird dieser Transistor nicht durchgesteuert, gibt es auch kein Signal von allen anderen Fototransistoren. Diese weitere Darlington Schaltung realisiert somit ein Strobe-Signal!
Die grüne LED befindet sich auf dem Steuermodul und zeigt an, wann das Strobe-Signal gesendet wird. Die rote LED befindet sich im Kopplungsteil und zeigt Bereitschaft an, die Betriebsspannung +12V ist auf dem Systembus des Modulsystems vorhanden und somit auch am Fototransistor.

Es muss aber auch noch untersucht werden, ob die GPIO-Ausgänge selbst schon mit einem Strobe-Signal schaltbar sind?
Und es gibt noch eine andere Möglichkeit, denn auch die Multiplexer 4514/15 verfügen selbst über so eine Schaltung. Die 4 Signale werden jeweils in einem RS-Latch gespeichert, die Ausgänge werden mittels Strobe-Signal weiter geschaltet.
Die Nutzung dieser Möglichkeit hat die Konsequenz, dass im Bussystem ein weiteres Signal bereitgestellt werden muss. Problematisch ist dann aber auch, wie von der Handeingabe ein Strobe-Signal erzeugt wird?

Die Schaltung zeigt bereits wie bei der Realisierung der Schaltung verfahren werden soll. Da alle Optokoppler auf eine Platine, die dicht beim Rechner plaziert ist, aufgebaut werden sollen, gibt es eine Leitungsverbindung zu den Leistungstransistoren, die auf einem Steuermodul aufgebaut werden.

    Kopplung gesamt Raspi-Prozeß (Bahn)

Die Ausgänge von Regler und Schaltstellen sind nun gleich! Sie unterscheiden sich lediglich in der Spannungsversorgung, hingegen sind die nachfolgenden Schaltungen völlig unterschiedlich. Der ganz rechte Optokoppler ist für die Realisierung des Strobe-Signals vorgesehen. Er erhält die + Versorgungsspannung direkt vom Systembus, hingegen die Koppler 0 bis 7 eine + Stobe-Spannung.
(Teill 1)

Technische Realisierung der Kopplung

    Es wird die Trennung des Raspi und des folgenden technischen Prozesses durch Optokoppler auf einer kleinen Platte organisiert.
Die zwei Schaltkreise rechts (8 Optokoppler) leiten die Busadresse für die Steuerung der Schaltelemente über den darunter befindliche SUB15 Stecker weiter, der nächste Schaltkreis und ein Optokoppler auf dem linken Schaltkreis mit 2 Kopplern die 5 Bit für die Fahrspannungssteuerung auf den SUB9 Stecker. Das Strobebit wird durch den verbleibenden Koppler des letzten Schaltkreises realisiert.
Die Verbindung zum Raspi erfogt durch ein ATA-Kabel aus einem älteren PC. Da das Kabel auf der Leiterplatte arettiert ist, kann es hier kaum zu Kurzschlüssen kommen.
Auf dem Bild von oben gesehen, ist der 3,3V Bereich des Raspi, nach unten der 12V Bereich des folgenden technischen Prozesses.

 

Teil2 der Steuerung der Schaltelemente durch den Rechner
    Mit diesem Teil wird der zweite Teil der Darlington-Schaltung zur Steuerung der Schaltelemente auf den Modulen realisiert.
Von oben kommen die Verbindungen von den Optokoppler, nach unten gehen die 8 Leitungen auf den Systembus der Modulanlage und es wird vom Bus die Betriebspannung +/-12V abgenommen. +12V wird direkt nur weiter zum Strobe-Optokopplern geführt. Und der rechteste Transistor erzeugt das Strobe-Signal (+12V) für alle anderen Optokoppler.
(Teill 2)

    Die Verbindung zwischen Teil1 und dem Raspi erfolgt mit einem 40-poligem ATA Kabel, wobei am Rechner der Stecker verbleibt, auf der Optokoppler-Seite das Kabel angelötet wird.
Die Verbindung von Teil1 mit Teil2 erfolgt ebenfalls mit einem Kabel (11-polig), wobei das Steckersystem wegen der Unverwechselbarkeit ein anderes als SUB9 sein sollte, es wird SUB15 genutzt.

PC-Steuermodul

    Wie bisher soll auch für dieses Teil ein Steumodul erstellt werden, denn hiermit werden Signale auf den Systembus gelegt, die die Steuerung der Schaltelemente auf den Bahnmodulen vornehmen.
Die Maße und der Aufbau sollen den Vorgaben entsprechen. Das Bild links zeigt das dieses Modul durch Ausstattung mit SUB25 Buchse und Stecker wieder an beliebiger Stelle in das Bussystem eingfügt werden kann.
Die Leiterplatte mit den Bauelementen wurde einfach oben auf das Modul geschraubt (es soll noch eine durchsichtige Abdeckung folgen). Auf diesem Modul befindet sich auch die grüne LED zur Anzeige des Strobe-Signals. Darunter im Modul befinden sich alle 25 Leitungen zur Verbindung von Stecker und Buchse (der Systenbus wird komplett durchgestellt).

Erste Test's, nur mit einem Bit und dem Strobe-Signal zeigen, dass es so gehen könnte!
Die Schaltung wurde mit einem Optokoppler PC827 (zwei in einem Gehäuse) auf einem Steckbrett zusammen gesteckt (deshalb auch nur Test mit einem Bit).
Der Test zeigt sogar, dass es dringend notwendig ist, so eine Steuerung mit dem Strobe-Signal aufzubauen, denn die Raspi-Kontakte behalten ihren Wert (0 oder 1) auch wenn das Steuerprogramm bereits beendet ist. Man müsste nach Ausgabe auch alle GPIO's wieder auf 0 setzen, das geht aber auch nur nacheinander und damit gibt es neue Fehler!

Eingabe vom technischen Prozeß zum Rechner

    Zur Zeit erfolgt für die Eingabe keine Bearbeitung.
Mit dem Optokoppler sollte das jedoch kein Problem darstellen. Die Eingabe erfolgt am Raspi indem der entsprechende GPIO-Eingabe-Kontakt auf 0 gelegt wird. Passgerecht nimmt bei Licht die Emitter-Kollektor-Strecke im Optokoppler einen Widerstand von etwa 0Ω ein, also wird ein Eingabesignal vom Raspi erkannt.

 

Software

    Der Raspberry soll unter dem Betriebssystem "Raspbian" mittels GPIO-Kontakte die Modellbahn steuern.
Als Programmiersprache soll "Scratch" mit dem Zusatztool "ScratchGPIO" genutzt werden.
Weitere Beschreibung zur "Scratch"-Nutzung findet man unter Raspberry.
Unter:
Scratch_life     (https://scratch.mit.edu/projects/editor/?tip_bar=getStarted)
findet man ein sehr konfortables System zum Arbeiten mit Scratch. Allerdings aber nur für eine Nutzung am PC und deshalb auch ohne GPIO-Kontakte!

(hier gibt es die Scatch-Programme:
PC-Simulation Steuerung
Raspi Steuerung )

Die Steuerung gesamt sieht etwa wie folgt aus:

    Der linke Teil, bezeichnet mit "Raspberry", beinhaltet die Software, der rechte die zuvor beschriebene Hardware zur Kopplung des Raspi mit der Bahn, bzw. die Ankopplung des Handreglers.

Wir wollen uns nun nur um die 3 ersten Blöcke im "Raspberry" kümmern, dass ist der Teil der "Scratch"-Programmierung.
Block1 könnte man sich sparen, indem sofort die einzelnen Bits in die Speicherplätze geschrieben werden - diese Arbeitsweise ist umständlich (man muss die Digitalisierung selbst vornehmen) und hat nichts mit der üblichen Steuerung der Fahrspannung zu tun!
Schaut man nach der Technik, so sind dort Drehknöpfe oder Schieberegler üblich. Prinzipiel muss zur Realisierung solcher Gebilde "Scratch" geeignet sein, denn Spiele zu programmieren ist eine der Zielstellungen der Sprache.
Vermutlich ist ein Schieberegler leichter zu realisieren als ein Drehknopf - probieren wir es!

    So könnte der Schieberegler aussehen!
Es gibt eine Mittelstellung und von da 4 Stufen nach links und rechts. Sinnvoll ist wahrscheinlich die Steuerung des Schiebers über die Kursotasten zu regulieren, denn damit werden die Stufen der Reihe nach ausgewählt (wie beim Stufenschalter am Handregler).

Weiterhin brauchen wir noch einen Schalter, um auf Rangierbetrieb, also nur noch pulsierende Spannung, umschalten zu können:

  bzw.

Gestaltung

    Auf der Bühne (Darstellbereich) brauchen wir 3 Akteure (Objekte), wobei ein Objekt, der Schalter zwei Darstellungsformen (Kostüme) besitzt.
Der Schieberegler wird ohne Aktionen fest auf dem Bildschirm dargestellt, der Schieber vereint fast alle Aktionen zur Steuerung der Fahrspannung.
Der Schalter sorgt für die Umstellung von Strecken- auf Rangierfahrbetrieb.
Über der Darstellung werden zur Kontrolle die 5 Bit's ausgegeben. Zur Zeit gibt es auf dem Steckbrett parallel zum Optokopplereingang jeweils auch eine LED zur Kontrolle (werden später entfallen).

Das Steuerprogramm für den Schieber besteht prinzipiell aus 3 Teilen:

  1. Programmteil zur Auswertung der Steuereingabe (Tasten), der Ermittlung und Darstellung der Schieberposition und der Parameter zur weiteren Ermittlung zu den Ausgabewerten
  2. Programmteil zur Ermittlung der Ausgabewerte (Bit1 bis 5)
  3. Ausgabe der Bit-Werte über die GPIO-Kontakte

Programmteil 1

    Die dunkelblauen Befehle steuern die Position des Schiebers auf dem Bildschirm, wird also am Anfang auf Schieberegler-0-Stellung gesetzt.
Die Variable "tempo" beschreibt die Fahrstufen (-4 ... 0 ... +4), wird auch auf 0 gesetzt.
"richtg" und "wert" sind Zwischenrechnungs-Variable.
Diese Anfangswerte werden sichtbar mit dem Aufruf von Programmteil2 gemacht.
In der Endlos-Schleife wird die Tastatur nach Eingabe von "Pfeil-rechts", "Pfeil-links" und "Leertaste" abgefragt. "Links" oder "rechts" bewegen den Schieber um eine Einstellung entsprechend und verändern die Fahrstufe "tempo". Es muss jeweils noch die Richtigkeit der Einstellung überprüft und korrigiert werden. Die "Leertaste" setzt alles wieder auf den Anfangswert. Am Ende jeder Bearbeitung wird der Programmteil2 aufgerufen.

Programmteil 2

    Das ist der Algorhithmus, in dem die oben beschriebene Logik zur Steuerung der Bit's organisiert wird.
Ist eine andere Logik erforderlich, muss hier die Änderung erfolgen!
Zunächst werden alle Bit's auf 0 gesetzt. In den folgenden Fragen wird überprüft, ob das stimmt und eventuell korrigiert werden muss.
Zunächst einmal wird eine Hilfsvariable "bit4h" abgefragt, ob sie 1 ist, dann wird auch "bit4" auf 1 gesetzt. "bit4h" wird mit dem Umschalter zur Betriebsart geschaltet (1: Rangierbetrieb).
Danach wird überprüft ob "tempo" negativ ist und in diesem Fall wird der Hilfswert "wert" wieder positiv gemacht ("wert" ist die Basis für die Generierung der Fahrstufen).
Im Folgenden erfolgt dann die oben ermittelte Zusammenstellung der einzelnen Bit's. "wert" stellt dabei die Fahrstufen dar. Fahrstufe 4 gibt es nicht, dann sind auf Grund der Anfangsbedingungen ohnehin alle Schalter offen (ist also Standard).
Am Ende wird Programmteil3 aufgerufen.

Programmteil 3

    Da die Variablen "bit1 ...5" global vereinbart wurden, können sie von allen Programmteilen genutzt werden.
Pro Bit ist der Algorhithmus nahezu gleich:
es wird gefragt, ob der Wert 1 ist, dann wird die vereinbarten GPIO-Adresse auf "on" gesetzt, anderenfalls "off".

Nun muss noch das Problem der Umschaltung von Strecken- auf Rangierfahrt geklärt werden.

    Das ist ein selbständig laufendes Programmteil.
Es wird ständig die Tastatur abgefragt, wird Taste "r" gedrückt, wird auf Rangierfahrt geschaltet (bit4h = 1) und das Bild für Schalter nach rechts dargestellt, anderenfalls mit Taste "n" (normal) bit4h = 0 und Schalter links.
schalt_r_rbtr.jpg schalt_l_norm.jpg
Den anderen Schalter darstellen, bedeutet ein anderes Kostüm für das Objekt. Das wird unterschiedlich beschrieben:
auf dem Raspi heißt das: ziehe Kostüm [Kostüm-Name ▾] an ,
bei der PC-Version: wechsle zu Kostüm [Kostüm-Name ▾] .
Und nach jeder erfolgten Eingabe wird Programmteil2 gestartet.

Ergebnis

Für das oben dargestellte Beispiel: "links, Fahrstufe 4" kommt dieser Wert, mit einem analogen Meßinstrument dargestellt, heraus: "etwa 12V".

 

Testprogramm zur Steuerung der Schaltelemente


Das rechte Bild zeigt grob den Ablaufplan des Testprogramms.
Die Adresse des zu schaltenden Elements wird als dezmale Zahl eingegeben und auf die Variable "eing" gespeichert (links Zeile 2 und 3). In der folgenden Frage wird die "Sinnfälligkeit" der Eingabe überprüft und bei Unsinnigkeit (kleiner 0 oder größer 255) die Eingabe auf 0 gesetzt!
Danach folgt der Block zum Setzen der Anfangsbedingungen:
wert und dez erhält der Wert von eing, i und dual werden auf 0 gesetzt und das Array bit wird komplett gelöscht (das Array hat keine Werte).
Im folgenden Block erfolgt die schon beschriebene Umrechnung der Dezimalzahl in eine Dualzahl. Dabei erfolgt die Speicherung als einzelne Bit's im Array bit und zusätzlich als eine Dualzahl in der Variablen dual (Schleife wiederhole bis).
Im letzten Block links wird, sofern notwendig, die Dualzahl auf 8 Bit mit 0-en erweitert.
Weiter im mittleren Bild werden zunächst in einem weiteren Array gpio_sys_adr die jeweiligen GPIO-Adressen abgelegt,
so dass nun im nächsten Block die GPIO-Kontakte entsprechend dem Wert vom Array bit auf on oder off gesetzt werden können (i ist die Laufvariable in der Schleife).
Der letzte Block gibt über Adresse 32 der GPIO-Pins für eine Sekunde das Strobe-Signal aus. Die Variable strobe ist nicht notwendig, sie zeigt nur den Wert an.

    Das Bild stellt den "Eingabe-Bildschirm" dar, wobei dies schon die zweite Eingabe ist. Bei der ersten Eingabe wurde ebenfalls der dezimale Wert 55 eingegeben. Und da sieht man, was bereits oben bei der Hardware aufgefallen ist, dass die ermittelten Werte auch nach Beendigung des Scratch-Programms noch existent sind!
In diesem Fall ist das günstig, da man noch zeigen kann was eingegeben und berechnet wurde. Das Array bit (Liste) ist links zu sehen, das höchstwertigste Bit ist im Feld 8 dieses Arrays abgelegt ( 27 ). Rechts daneben ist der dezimale Eingabewert dez und darunter der berechnete Dualwert dual zu sehen, strobe zeigt natürlich 0 an. Ganz unten wird durch die 1. Zeile des Programms ein Eingabefeld geöffnet und hier wird 55 eingegeben. Mit "Enter" bzw. durch Anklicken von ✓ wird der Wert übernommen und das Programm weiter bearbeitet.

    Das Programm wurde noch etwas verändert, so dass alle Werte von 0 bis 255 durchlaufen und angezeigt werden, zuvor einmal jedes Bit einzel. Im bisherigen Programm wurde die Eingabe entfernt und das Programm startbar (Name: "ele3_t") gemacht. Dieser Teil kann nun so von einem beliebigen anderen Programm gestartet werden, in diesem Fall von dem links gezeigten.
Es wurden außerdem 8 Figuren (Quadrate) die rot oder grau anzeigen können mit einbezogen, man kann so die LED's simulieren und natürlich in der Raspi-Version auch wirklich die Bit's angesteuert, zur Anzeige wird die Teststeuerung genutzt, die zeigt die Signale auf dem Bus an (bzw. kann auch selbst welche eingeben) - es funktioniert.

       

 

PHP-Nutzung zur Steuerung der Anlage
Es werden notwendige Voraussetzungen und ein Anwendungsbeispiel in php beschrieben. Es wird die oben beschriebene Technik genutzt.
Die Sprache selbst wird nicht beschrieben, da muss man sich entsprechend selbst informieren.

 

Erste Erfahrungen mit dieser Anordnung

Zur technischen Realisierung der Fahrspannungssteuerung sollte die im Buch von
   "Wolfgang Horn; Modellbahn Elektronik, Fahrregler und Fahrstraßen; Weltbild Verlag GmbH, Augsburg; 1999"
beschriebene Leiterplatte, die bereits in großen Teilen aufgebaut war aber nie benutzt wurde, nun durch Änderungen nutzbar gemacht werden. Dazu wurden Leiterbahnen durchgetrennt und andere Verbindungen in Form von Drähten geschaffen. In einer Relaissteuerung ist mir das wohl nicht richtig gelungen.
Fazit - es sind eine Reihe von Bauelementen zerstört worden, wie Festspannungsregler, Gleichrichter Transistor usw. Auch ein TG hat wohl gelitten!
Aber
die Optokoppler haben ihre Funktion bestens erfüllt, es sind alle heil, der Raspi hat nicht gelitten!!!
Zwar unerwünscht von der Aktion her, hat aber die Kopplung voll ihre Funktion erfüllt!
Der Fahrspannungsregler wird nun auf einer Universalleiterplatte aufgebaut.

 

Wandlung von PC-Version zu Raspberry-Version

Am PC wird für Scratch die Version 2.0 verwendet, gekennzeichnet durch die Erweiterung ".sb2", das Raspberry-Scratch ist eine Version 1.4, gekennzeichnet durch die Erweiterung ".sb". Es gibt die Möglichkeit, "sb2" in "sb" zu wandeln! Man ruft dazu die Seite
Retro Converter
auf und hat schnell eine konvertierte Datei. Aber man muss beachten, dass Scratch 2.0 gegenüber 1.4 Erweiterungen hat, die natürlich nicht konvertiert werden, z.B. hatte ich ein Problem mit "runden", denn es gibt neben der klassischen Operation auch die Möglichkeit über die Operation "Wurzel" zu "auf-" und "abrunden" zu kommen, die werden aber nicht konvertiert, es gibt auch keine "Ersatzbefehlsfolge" (was natürlich geht).
Die Übername vom sb-Programmen in die PC-Version ist ohne Umwandlung sofort möglich, die PC-Version (2.0) öffnet auch sb-Dateien.