Meine Homepage

Arduino 7

05,06,2017 Pendelzugsteuerung mit dem Arduino-Nano und zwei Relaiskarten.
Ich habe auf meiner Hafenanlage einen kleinen Bahnhof, dort treffen gleich zwei Spurweiten aufeinander.
Damit sich nicht immer der gleiche Schmalspurzug im Bahnhof verirrt, möchte ich eine eigene Steuerung aufbauen.

Material:
1x Arduino Nano
1x Arduino Terminal
1x Arduino Relaiskarte 8fach
1x Bi-Stabile Relaiskarte aus eigener Herstellung
1x Kabelsalat zum mitnehmen  ;  )

Der Sketch besteht aus einem einfachen delay gesteuerten Programm.

15,06,2017 heute konnte ein kleiner DC Motor gestartet und gestoppt werden. Auch der Drehrichtungwechsel funktioniert.
Für den Drehrichtungswechsel brauche ich noch ein zweites Bi-Stabilesrelais das nur in einer Fahrtrichtung die zwei LDR Module abwechselnd freischaltet.
Doch ich habe mir vor genommen in kleinen Schritten mich an diese Sache heran zu arbeiten, lieber alles gleich richtig verkabeln und verlöten das erspart mir viel Zeit.
Das Beschriften der einzelnen Baugruppen und Anschlußkabel bringt noch eine weitere Zeiteinsparung mit sich mit.

19,06,2017 das Steuerungsprogramm habe ich noch einmal geändert weil mit einige Zeiten zu kurz waren.
Die Schaltimpulse für die Weichen wurden verlängert.
Doch jetzt kann das ganze sauber auf ein Brett montiert werden, damit man einen besseren Überblick behält.

Bald gibt es von diesem Projekt noch mehr zu sehen!


-30,06,2017 das Steuerprogramm für die Pendelzugsteuerung

-------------------------------------------------------------------------------------------------------------------------
// LDR-Steuerung Pendelzugsteuerung
int pinLDR1 = 14;
int pinLDR2 = 15;
int pinLDR3 = 16;
int pinRELAIS0 = 3;   // ZUG halt
int pinRELAIS1 = 4;   // Umschalter Fahrtrichtung 1
int pinRELAIS2 = 5;   // ZUG Fahrtfreigabe
int pinRELAIS3 = 6;   // Weichen Umschalter Gleis1 auf Gleis2
int pinRELAIS4 = 7;   // Umschalter Fahrtrichtung 2
int pinRELAIS5 = 8;   // Weichen Umschalter Gleis2 auf Gleis1
int pinRELAIS6 = 9;   // freies Relais
int pinRELAIS7 = 10;  // freies Relais
                   //Die LDRs im Bf 2 müssen mit einem Bi-Relais beim Weichenumschalten mit
                   //umgeschaltet werden, sonst funktioniert es nicht!!!
void setup() {
pinMode(pinLDR1, INPUT_PULLUP);  // LDR Pendelzugsteuerung - zuweisung
pinMode(pinLDR2, INPUT_PULLUP);
pinMode(pinLDR3, INPUT_PULLUP);
pinMode(pinRELAIS0, OUTPUT);     
pinMode(pinRELAIS1, OUTPUT);
pinMode(pinRELAIS2, OUTPUT);
pinMode(pinRELAIS3, OUTPUT);
pinMode(pinRELAIS4, OUTPUT);
pinMode(pinRELAIS5, OUTPUT);
pinMode(pinRELAIS6, OUTPUT);
pinMode(pinRELAIS7, OUTPUT);

}

void loop() {
int zustand1 = digitalRead(pinLDR1);  // LDR Pendelzugsteuerung - zeitsteuerung
if (zustand1 == LOW){
  digitalWrite(pinRELAIS0, LOW);}
  else {
    digitalWrite(pinRELAIS0, HIGH); // Stopp ZUG Bahnhsteig
    delay(100);
    digitalWrite(pinRELAIS0, LOW); 
    delay(5000);                   
    digitalWrite(pinRELAIS1, HIGH); // Umschalter Fahrtrichtung
    delay(100);
    digitalWrite(pinRELAIS1, LOW);
    delay(5000);
    digitalWrite(pinRELAIS2, HIGH); // Fahrtfreigabe
    delay(100);
    digitalWrite(pinRELAIS2, LOW);
    delay(5000);
  }
int zustand2 = digitalRead(pinLDR2);
if (zustand2 == LOW){
  digitalWrite(pinRELAIS0, LOW);}
  else {
    digitalWrite(pinRELAIS0, HIGH); // Stopp ZUG Schatten Gleis1
    delay(100);
    digitalWrite(pinRELAIS0, LOW);
    delay(5000);                  
    digitalWrite(pinRELAIS3, HIGH); // Umschalter Weiche von Gleis1 auf Gleis2
    delay(100);
    digitalWrite(pinRELAIS3, LOW);
    delay(200);
    digitalWrite(pinRELAIS4, HIGH); // Umschalter Fahrtrichtung Gleis2
    delay(100);
    digitalWrite(pinRELAIS4, LOW);
    delay(300);
    digitalWrite(pinRELAIS2, HIGH); // Fahrtfreigabe
    delay(100);
    digitalWrite(pinRELAIS2, LOW);
    delay(5000);
  }
int zustand3 = digitalRead(pinLDR3);
if (zustand3 == LOW){
  digitalWrite(pinRELAIS0, LOW);}
  else {
    digitalWrite(pinRELAIS0, HIGH); // Stopp ZUG Schatten Gleis2
    delay(100);
    digitalWrite(pinRELAIS0, LOW);
    delay(5000);                   
    digitalWrite(pinRELAIS5, HIGH); // Umschalten Weiche von Gleis2 auf Gleis1
    delay(100);
    digitalWrite(pinRELAIS5, LOW);
    delay(200);
    digitalWrite(pinRELAIS4, HIGH); // Umschalten Fahrtrichtung Gleis1
    delay(100);
    digitalWrite(pinRELAIS4, LOW);
    delay(300);
    digitalWrite(pinRELAIS2, HIGH); // Fahrtfreigabe
    delay(100);
    digitalWrite(pinRELAIS2, LOW);
    delay(5000);
  }   
}
-----------------------------------------------------------------------------------------------------------------------
 


Zurück zur Startseite
Diese Webseite wurde kostenlos mit Homepage-Baukasten.de erstellt. Willst du auch eine eigene Webseite?
Gratis anmelden