Keerlussen met Arduino voor DCC

Zelfbouw, wie doet het en hoe.
Plaats reactie

Onderwerp starter
WouterX
Berichten: 43
Lid geworden op: 25 jun 2018 15:32
Locatie: Achterhoek

Keerlussen met Arduino voor DCC

Bericht door WouterX »

Een heel goedkope en eenvoudige manier om keerlussen voor een DCC aangestuurde baan te maken met een Arduino, er kunnen zelfs 4 keerlussen tegelijk door 1 Arduino aangestuurd worden! Ook al zal ik vast de enige niet zijn die zoiets gedaan heeft, ik heb het toch maar gepost op verzoek van een geinteresseerde, wellicht hebben dan nog meer mensen er iets aan, al was het maar om te zien hoe ontzettend weinig en simpele code er eigenlijk nodig is om een en ander met een Arduino te regelen.
  • Detectie op basis van pulse (voor de detectie heb ik in dit experiment klassieke reed relais gebruikt, maar het kan natuurlijk ook met andere middelen, zoals optisch).
  • De Arduino hoeft niet aan de computer gekoppeld te zijn, functioneert geheel stand-alone.
  • Het detectie- en aansturingscircuit is volledig gescheiden van de baanaansturing.
  • De startpositie van de trein bij aanzetten van het systeem is niet zo kritisch. De trein mag gerust geheel in de keerlus staan, en dan kan je een willekeurige kant op wegrijden. Mits er een magneetje onder de voorste bak/loc zit, en je eerst over een reed relais rijdt voordat hij bij de rails onderbrekingen komt, maakt het allemaal niet uit. Het gaat alleen fout als je toevallig de Arduino inschakelt als de trein tussen de beide reed relais van afbuigend stilstaan (bekrachtigd relais nodig voor juiste polariteit), en dan gaat rijden. Voor de doorgaand positie (relais niet bekrachtigd) maakt het al helemaal niet uit.


De Arduino sketch (voor 1 keerlus)

Code: Selecteer alles

const int REED_1A = 2; // Pin verbonden aan reed switch doorgaand
const int REED_1B = 3; // afbuigend
const int RELAIS_1 = 4; // relais aansturing

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(REED_1A, INPUT_PULLUP); // uitlezen doorgaand: open/geen contact = hoog
  pinMode(REED_1B, INPUT_PULLUP); // uitlezen afbuigend: open/geen contact = hoog
  pinMode(RELAIS_1, OUTPUT); // output aansturing relais
  
}

void loop() {
  // uitlezen detectie pinnen
  int nearby1A = digitalRead(REED_1A);
  int nearby1B = digitalRead(REED_1B);
  // pin 2 laag: contact doorgaand
  if (nearby1A == LOW) {
    // afvallen relais
    digitalWrite(RELAIS_1, LOW);
    digitalWrite(LED_BUILTIN, LOW);
  }
  // pin 3 laag: contact afbuigend
  if (nearby1B == LOW) {
    // aantrekken relais -> ompolen keerlus
    digitalWrite(RELAIS_1, HIGH);
    digitalWrite(LED_BUILTIN, HIGH);
  }
}
Aansluitdetails

Afbeelding

Voorbeeld proces/toelichting
  • trein komt aanrijden van links, buiten de keerlus, wissel op afbuigend
  • RS.A1 sluit, Det afb wordt naar GND getrokken
  • Arduino detecteert een LOW op pen 3 (P3) en bekrachtigd het relais
  • keerlus correct gepoold om de lus in te rijden (dat hij vervolgens over RS.A2 rijdt geeft niet, die zal het relais bekrachtigen maar dat was al zo, dus de toestand verandert niet)
  • trein komt bij RS.D2, sluit, P2 wordt naar massa getrokken
  • Arduino detecteert een LOW op pen 2 (P2) en het relais valt af
  • keerlus correct gepoold om de lus uit te rijden
Dit kan allemaal doordat DCC ongestraft omgepoold kan worden, de locomotief rijdt gewoon verder in dezelfde richting.

Video in werking



Alternatief via trein controller software

Voor de uiteindelijke baan ga ik het denk ik anders doen, maar dat kost nog een experiment: aansturing via de controller software. Ik gebruik JMRI, en daar zou dat gezien alle scripting en trigger mogelijkheden heel goed mee moeten kunnen. Dat integreert dan mooi met het gebruik van stroomdetectie secties, waarbij dan via de controller software een output aangestuurd wordt die het relais omschakelt. Dan ben ik van de magneten af, maar de beschreven methode werkt op zich prima en is beslist goedkoper dan 4 of 5 extra stroomdetectiesecties per keer lus, terwijl je hier met 1 Arduino 4 keerlussen maakt...


Oefenbaan 1 met de kids: Eiland Edward

Willempie
Elektronica/Commercieel
Berichten: 1017
Lid geworden op: 11 mei 2013 08:36

Re: Keerlussen met Arduino voor DCC

Bericht door Willempie »

Als je het met reedcontacten doet heb je helemaal geen Arduino nodig, kan gewoon rechtstreeks daarmee het relais aansturen, en dus de ompoling regelen. -;)

Groetjes.


Gebruikersavatar

martindomburg
Elektronica/Commercieel
Berichten: 4904
Lid geworden op: 01 mei 2010 14:59
Locatie: Ermelo

Re: Keerlussen met Arduino voor DCC

Bericht door martindomburg »

Exact, eens met Wim.

Maar probeer eens met 3 secties met stroomdetectie, geen gedoe met magneetjes en gemiste contacten. Onze keerPlus3 werkt ook zo. Is zeer betrouwbaar en alles zit op een PIC ic.

Kan met arduino ook gerealiseerd worden.

Groetjes


Stadt Schellenbach droomproject in N, testbaan voor Dinamo, OC32 & iTrain

Domburg Train Support / DTS Modelspoor / Digitale Infodagen / Modelspoorforum

Onderwerp starter
WouterX
Berichten: 43
Lid geworden op: 25 jun 2018 15:32
Locatie: Achterhoek

Re: Keerlussen met Arduino voor DCC

Bericht door WouterX »

Haha, ja, in feite maak je zo met een Arduino een bi-stabiel relais... ach ideeen worden geboren op basis van van alles en nog wat. In mijn geval verbazing over commerciele (ook digitale) keerlus modules die je voor vele tientjes en kortsluiting 1 keerlus leveren. Dat is ridicuul, en dat gevoel gecombineerd met spulletjes die ik toch al had, leverde dit op. En dan is het ook nog eens een aardige starter oefening voor de mensen die wel wat met een Arduino willen proberen maar niet weten hoe je de boel aanzwengelt.

Overigens biedt een Arduino wel veel meer dan een enkel relais, je kan hem ook bijv. S88 laten 'praten', DCC commando's oppakken of verzenden, wat natuurlijk flexibiliteit en mogelijkheden biedt om van alles en nog wat aan elkaar te knopen (wissels, seinen, ...).

Zelf ga ik nog iets anders proberen, maar dat schreef ik al: aansturing via de trein controller software. Ik denk dat dat heel simpel kan met JMRI, en waarschijnlijk ook wel met Rocrail. 1 relais aangestuurd door 1 uitgang van een schakeldecoder en verder bouwend op triggers in software. Dan heb je stroomdetectie, wisselstand en rijrichting beschikbaar. Ik heb zo'n vermoeden dat 2 stroomdetectie secties en wisselstand al voldoende zijn.


Oefenbaan 1 met de kids: Eiland Edward

Willempie
Elektronica/Commercieel
Berichten: 1017
Lid geworden op: 11 mei 2013 08:36

Re: Keerlussen met Arduino voor DCC

Bericht door Willempie »

Wouter,
Als je naar de xTreme keerlus kijkt heb je 3 terugmeld sectie werkt op basis van stroomdetectie en veroorzaakt dus geen kortsluiting, en is geheel onafhankelijk van wat voor programmeerbaar IC dan ook, en werkt geheel zelfstanding en is ook niet afhankelijk van DCC commando's.
Werkt altijd. En ja commerciële keerlus modules kosten geld, jij werkt ook niet voor niets.

Groetjes.



daraJO
Berichten: 3
Lid geworden op: 19 okt 2022 16:17

Re: Keerlussen met Arduino voor DCC

Bericht door daraJO »

Goede avond spoorders,

Ben doende om een baan te starten en zag dit item. Daar ik ook aan het googlen ben met betrekking tot onderwerpen waarin ik kan lezen hoe een raspberry pi én een arduino in te zetten zijn vond ik dit item wel oke.
Vraag echter is wanneer een trein afbuigt ontstaat er dan geen kortsluiting bij de overgang van de eerste railonderbreking ?
Wanneer er meer dan 1 as is waarmee stroom wordt opgenomen.

John Wouterse


Plaats reactie