Hallo,
ich beschäftige mich seit langem mit einer Schattenbahnhof Steuerung mit dem Mega, habe die Hardware gelöst, komme aber mit der Programmierung nicht weiter.
Ich suche auch schon seit längerem nach Lösungen, habe aber nur schon Anregungen gefunden. Auch Chatgpt ist nicht in der Lage ein funktionierendes Programm zu schreiben.
(das angehängte Programm ist auf den Vorschlag aufgebaut)
Ich hoffe ich habe die richtige Kategorie gefunden.
Es sind 2 identische, voneinander unabhängige Schattenbahnhöfe (einer für jede Richtung) mit jeweils 10 Gleisen und 9 endabgeschalteten Weichen (nicht alle hintereinander, s.u.).
Gesteuert werden soll die Bahnhofseinfahrt, die Ausfahrt ist mit einem Zufallsschaltwerk gelöst. Die Blockstellensteuerung erfolgt über SRTs und bistabile Relais. Das funktioniert halt nicht für die Schattenbahnhofeinfahrt, dehalb die Anfrage!
Für jedes Gleis gibt es 1 Taster, mit dem manuell das Gleis gewählt wird.
Jedem Gleis ist im Stellpult eine LED zugeordnet.
Da die Weichen endabgeschaltet sind, kann mit einem LTV844 die Stellung ausgelesen werden.
Alle Weichen werden mit ULN2803 und 24V= gestellt.
Damit die Anzahl IO im Mega ausreicht ist für jeweils 4 Weichen ein Portexpander MCP23S17 vorgesehen.
Der Programmablauf:
Nach Programmstart sollen in einem ersten Durchlauf zum Test für 5 Sekunden alle Gleis LEDs angeschaltet werden und danach alle Weichenstellungen abgefragt und die auf das gestellte Gleis zugehörige LED angeschaltet werden.
in einer Schleife werden die Gleistaster abgefragt (die Taster schalten auf GND, deshalb Input Pullup)
Wird ein Taster gedrückt läuft das Programm ab:
Die zum Gleis führenden Weichen werden der Reihe nach gestellt.
Zur Erklärung: der zur Stellung der Weichenspule zugehörige Port A (0-7) zeigt auf Port B (0-7) die Stellung (high falsch, low richtig; die Anschlüss der Spulen sind hardwaremäßig gekreuzt)
Zunächst wird die Stellung der Weiche abgefragt, steht sie richtig, geht es zur nächsten Weiche, steht sie falsch wird sie gestellt (digital output, 200ms), danach die Stellung abfragen. Steht sie immer noch falsch, wird der Stellungsbefehl 2x wiederholt. Hilft das nicht, gibt es eine Fehlermeldung , die GleisLEDs blinken.
Danach wird die nächste Weiche gestellt.
Sind alle Weichen korrekt gestellt, wird die betreffende GleisLED angeschaltet.
Dann werden wieder die Gleistaster abgefragt.
Beide Schattenbahnhöfe sollten unabhängig voneinander gesteuert werden können.
Könnte das Probleme geben, wenn in den Programmablauf hinein ein Taster vom anderen Bahnhof gedrückt wird?
Die Zuordnung der Gleise eines Schattenbahnhofs zu den Weichenstellungen:
Gleistaster 1, Weiche 1 abzweigend
Gleistaster 2, Weiche 1 geradeaus, Weiche 2 abzweigend, Weiche 3 abzweigend
Gleistaster 3, Weiche 1 geradeaus, Weiche 2 abzweigend, Weiche 3 geradeaus
Gleistaster 4, Weiche 1 geradeaus, Weiche 2 geradeaus, Weiche 4 geradeaus, Weiche 5 abzweigend, Weiche 6 geradeaus
Gleistaster 5, Weiche 1 geradeaus, Weiche 2 geradeaus, Weiche 4 abzweigend, Weiche 5 abzweigend, Weiche 6 abzweigend
Gleistaster 6, Weiche 1 geradeaus, Weiche 2 geradeaus, Weiche 4 abzweigend, Weiche 5 geradeaus
Gleistaster 7, Weiche 1 geradeaus, Weiche 2 geradeaus, Weiche 4 geradeaus, Weiche 7 abzweigend, Weiche 8 abzweigend, Weiche 9 abzweigend
Gleistaster 8, Weiche 1 geradeaus, Weiche 2 geradeaus, Weiche 4 geradeaus, Weiche 7 abzweigend, Weiche 8 abzweigend, Weiche 9 geradeaus
Gleistaster 9, Weiche 1 geradeaus, Weiche 2 geradeaus, Weiche 4 geradeaus, Weiche 7 abzweigend, Weiche 8 geradeaus
Gleistaster 10, Weiche 1 geradeaus, Weiche 2 geradeaus, Weiche 4 geradeaus, Weiche 7 geradeaus
Beim 2. Bahnhof sind es Gleise 11-20 und Weichen 11-19.
Zur Info hänge ich das Layout für die Hardware von der Weichensteuerungsplatine an, als neuer User darf ich meinen rudimentärer Versuch fürs Programm nicht hochladen.