Strekdambaan, Arduino en Fotografie
/

 

Seinsysteem

Het implementeren van een seinstelsel is een bijna op zichzelfstaand project. Ik gebruik niet een bestaand seinstelsel. De basis is een standaard 2 standen sein (kost maar één DCC adres) en 3 aspect seinpalen van onze Chinese vrienden (AliExpress). Gezien het aantal dat ik nodig heb moest ik op de prijs letten.

Ik ga voor het visuele effect. Van de 2 standen aansturing maak ik gebruik van een mooie overgang via geel. Alles met fading en dim mogelijkheden. Mijn DCC sein control interface maakt  gebruik van een Arduino Nano 328P en pulsbreedte modulatie.

Aan de Nano heb ik een I/O expander PCA9685 toegevoegd. Deze wordt via de I2C bus door de Nano aangestuurd. Een PCA9685 heeft 16 uitgangen die met  pulsbreedte modulatie (PWM) aangestuurd kunnen worden. Voor elk sein zijn 3 uitgangen nodig, dus zijn 5 seinen hierop aangesloten. De andere 2 seinen worden op 6 digitale uitgangen van de Nano aangesloten (ook PWM). Dus één DCC sein control interface kan maximaal 7 seinen aansturen. In principe kunnen meerdere PCA9685 expanders gebruikt worden (op de I2C bus) maar dan heeft de Nano te weinig geheugen resources. Daarbij komt nog dat voor de bekabeling (concentratie van seinen op de baan en de lengte van de bedrading) een modulariteit van 7 seinen op één interface goed uit komt. Er zijn in totaal 12 van deze interface kaarten nodig. Welk sein door welke interface wordt aangestuurd wordt in de software vastgelegd, de configuratie. Er zijn dus maximaal 7 seinen per configuratie. Alle configuraties zijn in alle interfaces aanwezig, welke gebruikt wordt kan met een DIP switch worden ingesteld. Zie voor meer informatie de DCC sein control interface pagina.

De aansturing geschiedt door Koploper via standaard seinfuncties aangevuld met de nodige logische functies en speciale acties. Geweldig veel mogelijkheden in Koploper.  

Hoe is het ontwerp van de DCC sein control interface ontstaan

Uitgangspunt was om met behulp van Arduino Nano de 3 aspect seinen aan te sturen op basis van Koploper DCC commando's. Een DCC commando geeft allen de groen of rood stand aan. Dus een conversie van 2-aspect aansturing naar 3-aspect aansturing via een geel tussen beeld. Om de overgangen mooi te maken moet de LED's langzaam aan en uit gaan (faden). Daarbij komt nog dat de licht intensiteit van de LED's ingesteld moeten worden. Afhankelijk van de kleur en fabrikant kunnen er grote verschillen in intesiteit zijn. Ook wil ik de mogelijkheid om alle LED's te kunnen dimmen voor 'nacht' situaties.
De hoeveelheid licht die een LED geeft wordt bepaald door de stroom die er doorheen loopt. Normaal regel je dit met een serie weerstand. Een andere manier is het aansturen d.m.v. pulsbreedte modulatie (PWM). Hiermee kan door de breedte van een puls te veranderen de gemiddelde stroom geregeld worden. De pulsen worden zo vaak per seconde gestuurd dat het menselijke oog geen knipper effect waarneemt. Er is dan nog maar één weerstand nodig om de maximale stroom te beperken.
De pulsbreedte aansturing realiseert mijn eisen voor de aansturing  van alle LED's. In de software kan ik alles instellen met slechts 6 getallen.

In Koploper kan je alleen seinen direct aansturen als een trein vanuit één blok naar één of meer andere blokken gaat rijden. Een voorbeeld hiervan is sein S113 dat aangestuurd wordt als vanuit blok 111 naar blok 103, 115 of 161 gereden wordt.
Ik heb ook b.v. een sein (S111) geplaatst voorbij de blokken 110 en 111. Dit sein moet dus aangestuurd worden als er een trein vanuit blok 110 of blok 111 die kant uit gaat (naar blok 103 of blok 161). In de volgende paragraaf wordt dit ook toegelicht.
In eerste instantie had ik niet door dat ik ik dit ook binnen Koploper kan realiseren. Het eerste ontwerp was dan ook voor deze seinen de stand van b.v. de wissels te gebruiken. De Arduino Nano ziet alle DCC commando's langskomen, dus ook de standen van de wissels. Vooral het programmeren hiervan was best lastig.
Ondertussen heb ik alle functies binnen Koploper kunnen realiseren en heb ik de software aanzienlijk kunnen vereenvoudigen.In de volgende paragraaf wordt dit nader toegelicht.

Programmeren van seinen in Koploper

Zoals al eerder gezegd moet elk sein net als elk wissel een DCC adres krijgen.
Ga in het menu van Koploper naar Onderhouden/Baandefinities/Baanontwerp: op het nu getoonde scherm zijn alle objecten zoals wissel, terugmeldpunten en seinen getekend. Klik rechts op een seinsymbool om de eigenschappen van het sein te zien, zie figuur hieronder. In dit voorbeeld klikken we op sein 113. In het pop-up scherm kunnen we het DCC adres (heet hier seinnummer) invullen. Voor alle seinen is de Functiedecoder hetzelfde (net als voor alle Wisseldecoders).


De volgende stap is het aangeven van wanneer een sein aangestuurd moet worden, de relatie met blokken en waar een trein naar toe gaat. Dit kan direct in Koploper worden geprogrammeerd. Ik heb ook seinen die aangestuurd moeten worden op basis waar een trein vandaan komt. Dit kan niet direct in Koploper geprogrammeerd worden. Hier gebruik ik de Logische acties en Speciale functies voor. Deze zijn in het Koploper menu te vinden onder Onderhouden/Baandefinities.

In de volgende figuur wordt dit nader toegelicht. In het Onderhouden/Baandefinities/Baanontwerp scherm klik je op de knop Seineigenschappen van de Tool balk. Er verschijnt dan een pop-up scherm Tool: seineigenschappen. Dit zijn eigenlijk de 'logische' eigenschappen in tegenstelling tot het instellen van het Seinnummer (DCC adres) hierboven. De eigenschappen worden zichtbaar door met de linker muistoets op een Seinsymbool te klikken. In dit voorbeeld zijn de eigenschappen van de seinen 111 en 113 getoond. Sein S113 kan direct in Koploper geprogrammeerd worden: wordt aangestuurd als de locomotief van blok 111 naar één van de blokken 103, 115 of 161 gaat rijden. Sein S111 kan geen relatie hebben met één enkel blok, staat dus niet  in een blok en er is verder niets ingevuld.


Voor sein S111 gaan we gebruik maken van Logische acties en van Speciale acties. In de volgende paragrafen worden voorbeelden gegeven.

Logische acties

Via het menu Onderhouden/Baandefinities/Logische acties wordt het Onderhouden logische acties scherm getoond.
Voor ons is alleen het eerste tabblad Stamgegevens van belang.

Voor het aansturen van sein S111 moeten we een viertal logische acties definiëren. Sein S111 moet worden aangestuurd als er een trein van blok 110 naar blok 103 of blok 161 rijdt. Ook moet sein S111 worden aangestuurd als er een trein van blok 111 naar blok 103 of naar blok 161 rijdt.
In de figuur hieronder is dit aangegeven.

Speciale acties

Hier gaan we definiëren wanneer en hoe sein S111 aangestuurd moet worden.
Via het menu Onderhouden/Baandefinities/Speciale acties wordt het Onderhouden speciale acties scherm getoond. Voor ons zijn de eerste 2 tabbladen Stamgegevens en Actie van belang.

In het eerste tabblad definiëren we een actie met de naam Sein111 aan. Deze actie koppelen we niet aan bezetmelders (want dat kan ook nog) maar aan één of meer logische acties. In de volgende figuur zijn de 4 logische acties geselecteerd. Als één van deze waar is zal de actie die in het tweede tabblad gedefinieerd is uitgevoerd worden. Je ziet dat daar het adres van het sein (S111) is ingevuld.