RE: Bahnhofsteuerung mit Arduino. Problem.

#1 von Bummelzug , 29.05.2016 18:40

Schönen (Rest-)Sonntag an Alle.
Mit großem Interesse und nur Bahnhof, Abfahrt und Böhmische Dörfer verstehen, habe ich die Beiträge über die Verwendung des Arduino gelesen. Da ich nur eine relativ kleine Anlage habe, will ich den Bahnhof mit dem Arduino über ein Relaisboard steuern. Im Prinzip handelt es such um ein Oval/Rundkurs mit je 2 Gleisen. (siehe Skizze). Geschaltet sollen 4 Weichen über 4 Hallsensoren und Magneten unter den Loks. Gegenverkehr ist nicht geplant. Relaisboard und Arduino sind verdrahtet.
So sollen z.B. Weiche 1 und 2 von je einem Hallsensor mit Zeitverzögerung (Zuglänge) umgeschaltet werden, gleichzeitig von Digital- auf Gleichspannung wechseln, bzw auf dem nächsten Gleis umgekehrt. Verwendungfinden LoPi LS V4.0, sodass die Gleichspannung unter Beibehaltung der Funktionen zum Bremsen benutzt wird. Nach Programmierung von Weiche/Gleis 1 und 2 der erste Versuch: Nur Relais geklapper. Anbei die Programmierung. Hoffentlich habe ich mein Problem verständlich geäussert, so dass mir evtl. jemand helfen kann. Wäre sehr froh.

Programm:
const int sensorPin1 = 14;
int sensorWert1 = LOW;

int W1_2Pin = 8;

void setup() {

pinMode(W1_2Pin, OUTPUT);
pinMode(22, OUTPUT);

pinMode(sensorPin1, INPUT);

}

void loop() {

//Abfrage Bahnhofsgleise 1+2
sensorWert1 = digitalRead(sensorPin1);

if (sensorWert1 == HIGH) {
// turn LED on:
digitalWrite(W1_2Pin, HIGH);
digitalWrite(22, LOW);
} else {
digitalWrite(W1_2Pin, LOW);
digitalWrite(22, HIGH);
}

}
Bahnhofsskizze:


Kann der Fachmann hiermit was Anfangen?

Danke.
Gruß
Harald


Nix besser als DCC-Digital .
Das Neueste: Roco z21
Starkstrom-Schwachstrom-Kein Strom.
Kriechstrom ist auch Strom!
Bei einem Kurzschluss ist kurz Schluss!


 
Bummelzug
InterCity (IC)
Beiträge: 797
Registriert am: 17.07.2009
Spurweite H0
Stromart DC, Digital


RE: Bahnhofsteuerung mit Arduino. Problem.

#2 von spielbahn ( gelöscht ) , 29.05.2016 19:28

Zitat von Bummelzug
.......So sollen z.B. Weiche 1 und 2 von je einem Hallsensor mit Zeitverzögerung (Zuglänge) umgeschaltet werden,......


In deinem Programm ist von einer Zeitverzögerung aber noch nichts zu sehen.....
Zudem ist dein Programm so nicht realistisch: Du fragst den Hallsensor ab und schaltest je nach Zustand den Ausgang. Das klappt auch, wenn der Magnet über dem Sensor stehen bleibt - müsstest du mal testen. Du erwartest aber ein Verhalten, dass nach Aktivierung des Hallsensors eine Weichenstraße gestellt wird und gestellt bleibt auch wenn der Sensor wieder deaktiviert ist. Du musst den Wert des Hallsensors in einer weiteren Variablen (nennen wir sie mal "rel1") speichern und in Abhängigkeit dieser Variablen das Relais schalten.
Ich vermute mal, dass du in Gleis 1 und Gleis 2 so jeweils in der Mitte (oder gegen Ende) einen Hallsensor montiert hast. (Lage ist abhängig davon, wie schnell deine Züge bremsen und wie lang sie sind.) Dann müsste Sensor 1 die Variable "rel1" z.B. auf HIGH setzen und Sensor 2 wieder auf LOW. Abhängig von "rel1" wird dann der Ausgang (das Relais) geschaltet.
(Dieser Vorschlag nimmt an, dass du wechselweise auf Gleis 1 und Gleis 2 fahren willst.)


spielbahn

RE: Bahnhofsteuerung mit Arduino. Problem.

#3 von Bummelzug , 29.05.2016 20:26

Hallo Uli.
Danke für die schnelle Antwort.
Die Zeitverzögerung ist erst mal als "SOLL KOMMEN" zu verstehen, also später. Im Ersten Probelauf hatten wir, mein Programmierer eher, das Problem mit den ratternden Relais, so lange wie kein Magnet auf dem Sensor ist. Wenn mein, sag ich mal, Helferlein,(IT-Azubi), wieder Zeit hat, werden wir deinen Tipp ausprobieren und das Ergebnis mitteilen.
Die Sensoren sind jeweils im Einfahrbereich direkt hinter der Weiche, aber vor der Gleistrennung plaziert und werden mit " Volldampf" über fahren.Den Rest macht die Bremsverzögerung. Klappt wunderbar im "Handbetrieb".
Erst mal bleibt mir nur zu danken.
Gruß
Harald


Nix besser als DCC-Digital .
Das Neueste: Roco z21
Starkstrom-Schwachstrom-Kein Strom.
Kriechstrom ist auch Strom!
Bei einem Kurzschluss ist kurz Schluss!


 
Bummelzug
InterCity (IC)
Beiträge: 797
Registriert am: 17.07.2009
Spurweite H0
Stromart DC, Digital


RE: Bahnhofsteuerung mit Arduino. Problem.

#4 von spielbahn ( gelöscht ) , 29.05.2016 20:38

Zitat von Bummelzug
..... das Problem mit den ratternden Relais, so lange wie kein Magnet auf dem Sensor ist........


Das läßt darauf schließen, dass der Hallsensor einen Open-Collektor-Ausgang hat und du keinen Pullup-Widerstand hast. Wenn du keinen externen anschließen willst, kannst du die Zeile "pinMode(sensorPin1, INPUT);" durch "pinMode(sensorPin1, INPUT_PULLUP);" ersetzen, dann wird intern ein Pullup-Widerstand von einigen 10k zugeschaltet.
Die Lösung, dass du recht kurz nach der Weiche den Sensor plazierst, finde ich nicht optimal: Dann musst du per Zeitverzögerung warten, bis die Weiche frei ist aber der Zug noch nicht zu weit gefahren ist. (Er soll ja im Bahnhof stehen bleiben.) Das wird bei unterschiedlichen Geschwindigkeiten und Zuglängen nicht einfach sein. Besser finde ich, wenn der Sensor so platziert wird, dass bei seinem Auslösen die Weiche frei ist - dann brauchst du auch keine Zeitverzögerung. Zusätzlich möchte ich vorschlagen, dass du für die Umschaltung Digitalstrom/Gleichstrom (Bremsstrecke) und für die Weichenschaltungen getrennte Ausgänge verwendest, dann kannst du nämlich für die Weichen Impulssteuerung vorsehen. (Je nach Marke sagt man den Endabschaltungen der Weichen keine lange Lebensdauer voraus....)


spielbahn

RE: Bahnhofsteuerung mit Arduino. Problem.

#5 von Bummelzug , 29.05.2016 21:28

Hi Uli.

Zitat von spielbahn

Zitat von Bummelzug
..... das Problem mit den ratternden Relais, so lange wie kein Magnet auf dem Sensor ist........


Das läßt darauf schließen, dass der Hallsensor einen Open-Collektor-Ausgang hat und du keinen Pullup-Widerstand hast. Wenn du keinen externen anschließen willst, kannst du die Zeile "pinMode(sensorPin1, INPUT);" durch "pinMode(sensorPin1, INPUT_PULLUP);" ersetzen, dann wird intern ein Pullup-Widerstand von einigen 10k zugeschaltet.



Das lassen wir vorerst mal so stehen. Komme später wieder darauf zurück.

Zitat von spielbahn
Die Lösung, dass du recht kurz nach der Weiche den Sensor plazierst, finde ich nicht optimal: Dann musst du per Zeitverzögerung warten, bis die Weiche frei ist aber der Zug noch nicht zu weit gefahren ist. (Er soll ja im Bahnhof stehen bleiben.) Das wird bei unterschiedlichen Geschwindigkeiten und Zuglängen nicht einfach sein. Besser finde ich, wenn der Sensor so platziert wird, dass bei seinem Auslösen die Weiche frei ist - dann brauchst du auch keine Zeitverzögerung.


Wenn ich den Sensor für die Weichen kurz vor dem Haltepunkt platzieren würde, könnte ich die anderen für die Stromumschaltung nutzen? Also mit 8 Sensoren arbeiten?

Zitat von spielbahn
Zusätzlich möchte ich vorschlagen, dass du für die Umschaltung Digitalstrom/Gleichstrom (Bremsstrecke) und für die Weichenschaltungen getrennte Ausgänge verwendest, dann kannst du nämlich für die Weichen Impulssteuerung vorsehen. (Je nach Marke sagt man den Endabschaltungen der Weichen keine lange Lebensdauer voraus....)



Die Weichenantriebe sind Rocoline ohne Bettung, die dann über das Relaisboard geschaltet werden. Weichen- und Stromumschaltung haben eigene Relais.
Wenn ich das richtig verstehe, habe ich dann getrennte Ausgänge?
Gruß
Harald


Nix besser als DCC-Digital .
Das Neueste: Roco z21
Starkstrom-Schwachstrom-Kein Strom.
Kriechstrom ist auch Strom!
Bei einem Kurzschluss ist kurz Schluss!


 
Bummelzug
InterCity (IC)
Beiträge: 797
Registriert am: 17.07.2009
Spurweite H0
Stromart DC, Digital


RE: Bahnhofsteuerung mit Arduino. Problem.

#6 von spielbahn ( gelöscht ) , 29.05.2016 22:15

Zitat von Bummelzug
.....Wenn ich den Sensor für die Weichen kurz vor dem Haltepunkt platzieren würde, könnte ich die anderen für die Stromumschaltung nutzen? Also mit 8 Sensoren arbeiten?


Ja.

Zitat von Bummelzug
....Weichen- und Stromumschaltung haben eigene Relais.
Wenn ich das richtig verstehe, habe ich dann getrennte Ausgänge?


Ja.
Ein Arduino (ATMega32 hat 20 I/O-Ports. 8 wären für die Sensoren weg. Pro Weichenpaar würde ich zwei Ausgänge vorschlagen, damit du Impulssteuerung machen kannst, (Für jede Weichenstellung einen getrennten Ausgang.) macht 4 Ports für die Weichen. Für die Bremsrelais würde eines pro Gleispaar reichen, also 2 Ports. Dann hast du noch 6 Ports übrig für LEDs oder sonstiges. Mit den Bremsrelais würde ich noch "Zwangshaltabschnitte" steuern. Denkbar ist doch folgende Situation: Der Zug fährt über die Einfahrweiche und löst über den Hallsensor die Stromumschaltung für sein Gleis aus - beginnt also zu bremsen. Erreicht er den zweiten Hallsensor wird die Einfahrweiche umgeschaltet, der Zug fährt aber immer noch, wenn auch langsamer. Je nach Anfangsgeschwindigkeit und Bremsverzögerung kann es nun sein, dass er über die Ausfahrweiche fährt. Wird jedoch vor der Ausfahrweiche noch ein Gleisabschnitt stromlos geschaltet, hat man die Sicherheit, dass obige Situation nicht eintritt.
Und noch eine prinzipielle Anmerkung:
Mit Hallsensoren und Magneten unter der Lok bist du darauf angewiesen, dass die Lok immer vorne fährt - kein Schiebebetrieb. Mit Lichtschranken hättest du diese Einschränkung nicht. Ich entnehme deinen Antworten jedoch, dass du die ersten Hallsensoren schon verbaut hast.....


spielbahn

   


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz