Modellbahn - Bahnübergang - Lichtschranke

Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von e69-fan »

Admin hat geschrieben: Di 20. Apr 2021, 21:18 Hallo Wolfgang

Ich habe gerade mal deine Lichtschranken getestet. Da geht nur ja/nein. Keine Entfernung. Aber wenn man nicht mehr braucht, ist das ja ok. Das Ding hat keinerlei Messaufwand. Da bekommt man am Pin. einfach High oder Low. Die entfernung auf die er regieren soll, stellt man mit dem Poti ein. ISt also viel leichter in einem Programm zusätzlich unter zu bringen. Ohne Library, einfach nur einen Digitalen Pin abfragen, fertig.

Gute Nacht
Franz :)

Hört sich gut an, aber ich kann bei meinen Potis nichts vernünftig einstellen. Die Dinger sind super empfindlich aber können sehr weit in die Tonne fliegen.

Wenn ich Deinen Sketch richtig gelesen habe läuft das so ab:

Wir haben einen zu überwachenden Bereich ( 2 oder mehrere Gleise ). Da die Gleise von beiden Richtungen befahren werden, bräuchten wir doch am Anfang und am Ende eine Lichtschranke.
Könnte man die parallel schalten, denn dann hätte man nur einen Zustand für alle Gleise. Entweder irgendwo belegt oder frei.


Aber erst mal sollte ich das Teil wieder aus der Tonne holen und dann nach einem besseren Exemplar suchen. Vielleicht hast Du eine Empfehlung?

Bis bald
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Du kannst das Ding bis zu einer Weite von 17cm einstellen. dann kannst du mehrere Gleise überwachen. Wenn es dir egal ist von welchen Gleis die Belegung kommt, dann ist das doch wunderbar. Einen solchen IR-Melder der 2-3 Gleise überspannt und keinen Gegenpol auf der anderen Seite braucht.

Wenn man das Ding besonders kurz einstellen will, kommt man an das empfindliche Ende. Das ist wie bei meinem IR - Sensor unterhalb 7cm. Bei deinem sind es wohl so um die 3cm. Da kommt das IR-Licht nicht mehr Zielgenau zum Empfänger zurück denke ich. Da kann man mit dem Poti nichts mehr ausrichten. Die Dinger von dir, werten die Zeit vom senden des Lichts, bis zum Emfang des Lichtes selber aus. Und mit dem Poti kann ich einstellen, auf welche maximale Entfernung das Ding reagieren soll.

Franz

PS: Habe gerade noch das mit den zwei Schranken an zwei Enden eines Gleisbereiches gelesen. Wenn man die zusammen auf einen Pin legt, braucht man eine Diode an jedem Sensor, dass es am Pin keinen Kurzschluss gibt, wenn ein Sensor Puls bringt, der andere Minus. Brauchst du eigentlich keine Fahrtrichtungserkennung?? Also zwei IR-Melder, wenn der Rechte zuerst auslöst, und dann der Linke, kommt der Zug von rechts. Wenn der Linke zuerst auslöst, dann kommt der Zug von links. Ist diese Info nicht interessant? Also ob der Zug auf die Schranke zufährt, oder von der Schranke weg? Dann bräuchte man an jeder Seite vor/nach der Schranke zwei Sensoren.
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von e69-fan »

Hallo Franz,

ich hätte da mal eine Seite für Dich über arduinos im Modellbahnbereich.

https://starthardware.org/railfx-truppe ... modellbau/

Ein Stück herunterrollen und bei dem Video wird es am Ende zu richtig schräg.

schönes Wochenende
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Ja, da kann man sich sein eigenes Kriegsgebiet aufbauen. :)

Grüsse
Franz
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von e69-fan »

Hallo Franz,

ich habe diese Woche mehrere Arzttermine und komme deshalb zu gar nichts.

Die Drehscheibe ist soweit abgeschlossen, fehlt nur noch etwas an der Mechanik.

Für die akustischen Signale spiele ich ein wenig mit einem MP3 Player herrum.

Als nächstes werde ich mich an die Lichtschranken rantasten .

Ich gebe Dir Bescheid.

schönen Tag
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Ich habe hier noch drei IR - Sensoren von dir liegen.

Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Hi Wolfgang
Der Beitrag mit der Software für die Lichtschranke mit deinen IR Sensoren ist hier
ganz unten, letzter Beitrag.

Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Hallo Wolfgang
ich habe da ein Problem. Hast du diesen "Wechselblinker modifiziert von Bodo", schon mal zum blinken gebracht?? Wenn ja, wie. Da bin ich zu blöd dazu, oder das geht nicht. Vielleicht habe ich heute auch Tomaten auf den Augen. Ich finde nicht, wie man das Blinken aktivieren kann.

Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1194
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von Admin »

Jetzt habe ich es kapiert. Das geht über die Gleis Start - Ende Kontakte.

Ich habe hier im Code mal eine Lichtschranke für Gleis 1 integriert. Also wenn ein Zug da an der IR Schranke vorbei fährt, geht das Geblinke los.
Das geht ohne Gleis Ende Kontakt. Die Belegt anzeige bleibt 3 Sek. nach Zug Ende. Einstellung über "Pausezeit01".

Code: Alles auswählen

#include <MobaTools.h>
/* Demo: Wechselblinker modifiziert von Bodo

   Plus IR Lichtschranke mit Relais
   Dieses Demo ist etwas komplexer und zeigt die Realisierung eines
   Wechselblinker, der per Schalter ein- und ausgeschaltet wird.
   Wie bei Wechselblinkern an einem BÜ üblich, starten die beiden Lampen
   gleichzeitig, um dann im Wechseltakt zu blinken
   Dieses Demo verwendet auch die 'Eieruhr' um Zeitverzögerungen zu realisieren
   Die 'Eieruhr' ist ein Zeitzähler, der aufgezogen werden kann und im loop kann
   abgefragt werden, ob er abgelaufen ist.
*/

// Festlegen der Ports
const int Blinker1P  =  6;  // Die beiden Led's des
const int Blinker2P  =  7;  // Wechselblinkers.

const int Gleis1onP  =  8;  // Gleis 1 Start-Kontakt
const int Gleis1offP =  9;  // Gleis 1 Ende--Kontakt

const int Gleis2onP  = 10;  // Gleis 2 Start-Kontakt
const int Gleis2offP = 11;  // Gleis 2 Ende--Kontakt

const int Gleis3onP  =  4;  // Gleis 3 Start-Kontakt
const int Gleis3offP =  5;  // Gleis 3 Ende--Kontakt
// ----------- Lichtschranke aktivieren -------------------------------------------------
const byte Lichtschranke01 = 3; // Pin 3 ist für Lichtschranke
const byte LS_Relais01 = 2; // Pin 2 ist für Relais Lichtschranke
unsigned long LS_Laufzeit01 = 0; // Lichtschranke01 Ablauf Zeit
const unsigned long LS_Pausezeit01 = 3000; // Lichtschranke01 Prüfzeit Überbrückung 3 Sekunden
unsigned long milli_aktuell = 0;
byte LS_Status01 = 0;
// --------------------------------------------------------------------------------------
boolean SchalterP = false;  // Blinkschaltung on/off

boolean Gleis1    = false;  // Gleis 1 belegt/frei
boolean Gleis2    = false;  // Gleis 2 belegt/frei
boolean Gleis3    = false;  // Gleis 3 belegt/frei

// Weitere Konstante
const int wbZykl = 1100;    // Zykluszeit des Wechselblinkers
const int wbSoft = 400;     // Auf/Abblendzeit der Lampen

// Zustand des Wechselblinker
byte wblZustand = 0;        // In dieser Variable wird hinterlegt, in welchem Zustand
// sich der Wechselblinker gerade befindet
#define   WBL_AUS     0     // beide Lampen sind aus
#define   WBL_START   1     // Startphase: beide Lampen sind an
#define   WBL_BLINKT  2     // Die Lampen blinken normal im Wechsel
byte ledState;              // HIGH : Blinker1 ist an, LOW Blinker2 ist an

MoToSoftLed Blinker1;
MoToSoftLed Blinker2;

MoToTimer BlinkUhr;
//--------------------------------------------------------------SETUP----------------------
void setup() {
  pinMode(Gleis1onP, INPUT_PULLUP);
  pinMode(Gleis1offP, INPUT_PULLUP);

  pinMode(Gleis2onP, INPUT_PULLUP);
  pinMode(Gleis2offP, INPUT_PULLUP);

  pinMode(Gleis3onP, INPUT_PULLUP);
  pinMode(Gleis3offP, INPUT_PULLUP);

  digitalWrite (LS_Relais01, HIGH); // Relaisausgang beim Start "aus"
  pinMode(LS_Relais01, OUTPUT);
  pinMode(Lichtschranke01, INPUT);
 
  Blinker1.attach(Blinker1P);     // die Ausgänge werden automatisch auf OUTPUT gesetzt
  Blinker1.riseTime( wbSoft );    // Aufblendzeit in ms

  Blinker2.attach(Blinker2P);
  Blinker2.riseTime( wbSoft );    // Aufblendzeit in ms
}
//--------------------------------------------------------------LOOP-----------------------
void loop() {
  // ---Millis übergeben----------------------------
  milli_aktuell = millis();
  // ---Lichtschranke01 Kontrolle-------------------
  LS_Status01 = digitalRead(Lichtschranke01);
  if (LS_Status01 == LOW) {
    digitalWrite (LS_Relais01, LOW); // Relais01 auf Pin2 einschalten
    Gleis1 = true;
    LS_Laufzeit01 =  milli_aktuell;
  }
  else {
    if (milli_aktuell - LS_Laufzeit01 >= LS_Pausezeit01) // Überbrückungszeit abgelaufen ?
    {
      digitalWrite (LS_Relais01, HIGH); // Relais01 auf Pin2 ausschalten
      Gleis1 = false;
    }
  }
  //---Lichtschranke01 Ende------------------------

  if ( digitalRead(Gleis1onP)  == LOW ) {
    Gleis1 = true;
  }
  if ( digitalRead(Gleis1offP) == LOW ) {
    Gleis1 = false;
  }
  if ( digitalRead(Gleis2onP)  == LOW ) {
    Gleis2 = true;
  }
  if ( digitalRead(Gleis2offP) == LOW ) {
    Gleis2 = false;
  }
  if ( digitalRead(Gleis3onP)  == LOW ) {
    Gleis3 = true;
  }
  if ( digitalRead(Gleis3offP) == LOW ) {
    Gleis3 = false;
  }

  SchalterP = Gleis1 || Gleis2  || Gleis3 ; // Blinken, wenn Gleis 1 oder Gleis 2 oder Gleis 3 belegt

  // Wechselblinker
  switch (wblZustand) {
    case WBL_AUS:
      // Beide Lampen sind aus, warten auf einschalten
      if ( SchalterP == true && BlinkUhr.running() == false ) {
        // Beide Leds einschalten, Timer für gemeinsames Startleuchten
        Blinker1.on();
        Blinker2.on();
        BlinkUhr.setTime( wbSoft );
        wblZustand = WBL_START;
      }
      break;
    case WBL_START:
      // Startphase: Nach Zeitablauf erste Led wieder aus
      if ( BlinkUhr.running() == false ) {
        // Die Startzeit ist abgelaufen, Übergang zur normalen Blinkphase
        ledState = HIGH;
        Blinker2.off();
        BlinkUhr.setTime(wbZykl / 2); // Zeitverzögerung setzen
        wblZustand = WBL_BLINKT;
      }
      break;
    case WBL_BLINKT:
      if ( BlinkUhr.running() == false ) {
        BlinkUhr.setTime(wbZykl / 2); // Zeitverzögerung setzen
        if ( ledState == LOW ) {
          Blinker1.on();
          Blinker2.off();
          ledState = HIGH;
        } else {
          ledState = LOW;
          Blinker2.on();
          Blinker1.off();
        }
      }
      if ( SchalterP == false ) {
        // Wechselblinker abschalten
        Blinker1.off();
        Blinker2.off();
        wblZustand = WBL_AUS;
        BlinkUhr.setTime(wbZykl);   // minimale 'Aus' zeit des Blinkers
        //( schützt vor Schalterprellen )
      }
      break;

  } // Ende switch Wechselblinker
}
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Modellbahn - Bahnübergang - Lichtschranke

Beitrag von e69-fan »

Hallo Franz,

funktioniert soweit. Ich muss nur noch eine weitere Lichtschranke für die Gegenrichtung montieren, dann sehen wir weiter.

Schönes Wochenende
Grüße aus der Heimat der E69
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast