Die Position der Weichen sollten auch einen Stromausfall resp. Das herunterfahren der Anlage am Ende des Ausstellungstages verkraften. Um dies zu realisieren, habe ich ein FRAM Baustein via I2C Bus eingesetzt.
Wenn der Automat aktiviert wurde per Taste: Run, sollte mit einer Taste: Anhalten (orange Led) die Züge auf ihre Abstell- resp. Hauptgleise einfahren und anhalten -> Stoppen des Automaten für essen, Ausstellungsende, etc.
Im automatischen betrieb, wenn irgendwas ist, so sollten per Taster Stop (rote Led) die Fahrspannung abgestellt werden und alle Sensorspeicher/Blockvariablen zurückgesetzt werden.
Automatisches und manuelles Fahren muss möglich sein, unabhängig der Reed magnetkontakte (Umschalter)
Vor- Rückwärts sollte gefahren werden (nur im manuellen Modus notwendig)
Die Steuerung sollte leicht weiter ausgebaut werden können von der Dimensionierung her. - (Relais, freie Ein- und Ausgänge auf den MCP23017 Bausteinen (Achtung der GB7 und GA7 Pin‘s können nicht mehr als Eingang benutzt werden auf neueren Versionen ab 2020),
Potentiometer für die Fahrregelung der Zugsmotoren 0..9V Gleichspannung. Es wird analog gefahren um kompatibel zu den original hergestellten Zügen zu gewährleisten für Gastfahrer.
Die Weichen müssten auch manuell gestellt werden können (2 Taster), Anzeige der Weichenstellung: orange Led für Abgebogen, blaue Led für gerade aus.
Taster für Weichen- resp. Fahrstrassen, 3 Taster.
Das Fahrpult sollte von der übrigen Steuerung abgesetzt werden können, die Distanz ist jedoch sehr kurz mit ca. 80cm, daher kommt der I2C Bus zum Einsatz.
Einige Werte sollten auf einem LCD Display (ebenfalls via I2C) dargestellt werden: aktuelle Fahrgeschwindigkeit, Trimmerspannung,Status und Fehlermeldungen, …
Es sollten 0, 1 oder 2 Haltestellen möglich sein. In dieser Wildwest Anlage kommt nur eine Haltestelle zum Einsatz.
Die Steuerung muss eine USB Speisung für die Beleuchtung zur Verfügung stellen.
Hardware
Weil der Zeitrahmen für die Steuerung sehr eng lag, wurde beschlossen auf erhältliche Fertig Module zu setzen und nicht alles selber zu Entwickeln, löten und Ätzen. Trotzdem sind es nun 4 selber gezeichnete und gelötete Platinen geworden.
Die Speisung wird via 12V Steckernetzteil 5A zugeführt
2x DC-DC Step Down Module liefern die grossen Ströme fürs Relais Modul 5V und für die H-Brücken L298 9V für die Weichenservomotoren und das BTS 7960 9V Modul für die Fahrspannung
Eine kleinen Platine mit dem ULN2808A Chip zwischen der Platine Nr 2 und dem Relais Modul wechselt den Spannungspegel von 0V / 5V resp. 5V / 0V so dass die Ausgänge/Relais mit Logisch 1 für Ein und logisch 0 für Aus angesprochen werden kann. (Dies hatte speziell bei der Initialisierung, wenn der Baustein in der setup() Routine von Eingang auf Ausganggewechselt hat geklackt)
Weil 6 PWM Ausgänge benötigt wedren, wird der Arduino Mega 2560 Rev. 3 ausgewählt. (Bei Uno sind ja nur die Pins 3 und 9 benutzbar wenn millis(), I2C Bus und SPI Bus benutzt wird.)
Ein I2C FRAM IC sichert die Einstellungen wie die Weichenstellung beim Stellen der Weichen und liest die Daten beim Starten (setup() ) der Anlage ein. (blaue kleine Platine rechts vom Arduino)
LCD Modul 4 Zeilen x 20 Zeichen für die Anzeige via I2C Print mit einemmPCA8574 Baustein angeschlossen via I2C Bus.
Platine Nr 1, (rechts oben100mm x 100mm) enthält die Steuerspeisungen für 5V und 9V via klassischen Längsregler LM7805 und LM7809 mit je einem kleinen Kühlkörper. Ebenfalls wurden da die Pin Headers für die Potentiometer (inkl. Res.) und Eingänge mit einem RN Netzwerk von 10k auf GND gezogen für den Microcontroller Arduino Mega. Verteiler für 5V und 9V via Pin Headers oder/und Schraubklemmen, Sicherung 2.5A. Der vorgesehene Platz für den I2C Multiplexer wird für diese Steuerung nicht benötigt, der I2C Pin Header Verteiler schon.
Platine Nr. 2, (links oben 100mm x 100mm) sind 2 mcp23017 Bausteine mit je 16 Ausgängen und 14 Eingängen für die Reed Magnetsensoren, Jumper Header J11, Relais Ansteuerung mittels Inverter IC ULN 2803A, die Durchschlaufung der Signale von den beiden H-Brücken für 4 Weichen mit dem L298 Chip (2x rote Platinen) und der H-Brücke mit dem BTS7960er Chip (blaue Platine) für die Fahrspannung 0..9V
Platine Nr. 3, (unten Mitte 160mm x 100mm) mit Pin Headers zum Verteilen von 0V, 5V, I2C Bus und die analog Signale für den Fahrregler und die Trimmerspannung sowie die Steuerleitungen für vor-rückwärts, automatischer-/manueller Betrieb, Taster für Weichen, Start, Stop, Anhalten, Weichenstrassen, 2x Jumper für den I2C Busabschluss mit 4.7k, 2x ein mcp23017 (bis vor 2020 mein Lieblingsbaustein, nebst den Arduino‘s) Entstärkondensatoren auf der Rückseite der Platine. -> Wer die Leds betrachtet, sieht das Layout der Fahrstrassen und Weichen. Die roten Led’s sind die Reed Magnetkontakte.
Platine Nr. 4. (links unten 100mm x 100mm) Zusatzspeisung 12V zu 5V mit einem LM7805 für die Fahrreglerbedienplatine und das LCD zur Entlastung des Reglers auf der Platine Nr. 1 inkl. Sicherung 1A, Betriebs-Led 12V (gelb), 5V (rot), etc.
Bild betr. Hardware:
Fehlt noch die Software, das heisst die Funktionen (bis jetzt) und neu (mit Erkenntnissen der objektorientierten Programmierung) folgt ....