Doel:€250.00
Donaties:€50.00

Per saldo:€-200.00

Steun ons nu!

Laatst bijgewerkt
op 03-01-2024

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Station Baarn HIJSM door MaraNCS
Vandaag om 00:38:07
Bouw van materieel 40 treinstellen door Peter Wijshake
Vandaag om 00:33:10
Treinverzameling verzekeren door Duikeend
Vandaag om 00:25:18
Onlangs gespot - gefotografeerd, de foto's door sneek
Vandaag om 00:22:00
Overbrenging 50 0073 van VSM naar ZLSM 3 december door henkd
28 februari 2024, 23:49:17
Toon hier je nieuwe (model-) spooraanwinst(en)... door Ronald69
28 februari 2024, 23:28:21
De IJmuider spoorlijn - korte geschiedenis en plaatjes door IJmc
28 februari 2024, 23:24:00
Maasmuiden Haven door Huup
28 februari 2024, 23:15:05
Frans loodsje et cetera door Huup
28 februari 2024, 23:11:38
On traXS 15 t/m 17 maart Spoorwegmuseum Utrecht door Robkop
28 februari 2024, 23:10:05
ARLOCO meldt niet via loconet door hgr
28 februari 2024, 23:02:06
Falkenheim door Jelmer
28 februari 2024, 22:44:21
Driewegwissel en rocrail door GeerC
28 februari 2024, 22:22:51
Werkspoor Kathedraal als minibaantje. door NS264
28 februari 2024, 22:10:32
n-spoor locs vallen stil (stroomafname) door Paul552
28 februari 2024, 22:08:16
"Litter Bin" voor Brits spoor en Britse modelspoorprojecten door Merlin674
28 februari 2024, 21:50:04
US diorama in H0 door Flevodienst 1976
28 februari 2024, 21:48:26
TrainBase door Dick55
28 februari 2024, 21:23:20
Modelbaan Beltheim. door Modelbaan BeltHeim
28 februari 2024, 21:14:21
Oplichting.. ? door Weerd
28 februari 2024, 20:49:09
Brezelbahn in H0, Duitsland tp III. door gdh
28 februari 2024, 20:40:02
Treinstation van de NTM bouwen door gdh
28 februari 2024, 20:17:28
Bouw Bührtal III door MichielB
28 februari 2024, 19:52:13
La Fabrique (1:87, 0,16m2) door NS264
28 februari 2024, 19:39:02
S88 en DCC wisseldecoders met Arduino door 1op160
28 februari 2024, 19:14:20
De Achtbaan H0 315x200cm door Mark D.
28 februari 2024, 19:14:10
Inbouwen Loksound 5 in ROCO 2200 door 008200
28 februari 2024, 19:02:46
Iemand ervaring met www.stackmodules.nl ivm arduino aansturing ? door bask185
28 februari 2024, 18:42:32
Zee. Land. door Huup
28 februari 2024, 18:14:23
Ketelwagens, welke hebben jullie? door ES44C4
28 februari 2024, 17:56:18
  

Auteur Topic: Idee voor een besturing voor een rangeerbaan, print op Arduino  (gelezen 1568 keer)

bask185

  • Offline Offline
  • Berichten: 3914
Idee voor een besturing voor een rangeerbaan, print op Arduino
« Gepost op: 10 november 2020, 22:41:39 »
Beste mensen,

Ik heb misschien wel of niet iets leuks bedacht wat iemand van jullie misschien ook zou willen hebben.

De samenvatting
Ik heb een idee voor een printplaat je op een arduino board kan prikken waarvan het geheel een analoge / DCC centrale is die speciaal is toegewijd om een rangeerbaan aan te sturen. Op dit board kan je direct bezetmelders aansluiten, rails aansluiten, voeding aansluiten en 1 of 2 handregelaars aansluiten. Je kan verder het board uitbreiden met 2 relaiskaarten van 8 relais elk en een speciaal driver boardje voor servo motors. De centrale zorgt er voor dat jij altijd die wissels kan schakelen die voor je trein liggen met de 2 knopjes onder je duim. De kosten van de centrale zelf zal, denk ik, onder de €30,- vallen.

Een opsomming van de mogelijkheden van deze centrale. Deze centrale kan:
  • 1 analoge trein of meerdere digitale treinen aansturen
  • wissels aansturen door middel van servo's of relais
  • bijhouden waar de treinen zich bevinden, zodat het weet welke wissels omgezet moeten worden
  • blinde wissels automatisch schakelen als je trein een sectie nadert
  • De centrale is ingericht om te werken met spotgoedkope LDRs voor de terugmelding
  • En al het bovenstaande kan je doen met een handcontroller met slechts 1 draaiknopje en 2 drukknopjes met de best mogelijke gebruikerservaring

Deze centrale is bedoeld voor relatief kleine baantjes met minder dan 16 wissels (bedenk wel dat uitbreidingen v/h systeem altijd mogelijk zijn  ;) ) waarbij de treinen met de hand worden gereden. De centrale komt met simpele aansluit mogelijkheden voor alle wissels en terugmelders die je nodig hebt. Dus je zou je hem voor elke micro layout, shelflayout of andere kleine baantjes kunnen toepassen.

Het idee
Ik heb het hier en daar wel eens laten vallen, maar ik voor mijn nieuwe rangeerbaan Rosedale Abbey een besturing ontworpen om met slechts 3 knoppen je hele baan aan te sturen op de meest gebruikers vriendelijke manier mogelijk. Deze week is het prototype gereed gekomen. Ik moet alleen nog de finishing touch doen met het kalibreren van de servo's van de wissels en dan kan ik hem inbouwen en een filmpje of twee schieten.

Ik zal eerst het idee en de werking er achter uitleggen. Ik heb op de modelspoor club wel eens mijn treinen laten rijden en wissels bediend met een Cs3, ik vond het een bijzonder onprettige manier van trein en baan aansturen. Naar aanleiding daarvan heb ik eens goed nagedacht over hoe ik nu een modelbaan zou willen aansturen. Het idee zoals ik nu heb ontworpen ontstond eigenlijk pas nadat ik de bakken van mijn nieuwe module had gemaakt. Ik wilde mijn wissels wel enigszins op afstand bedienen en om die reden wilde ik eigenlijk geen vast schakelpaneel. Ik wilde een kastje maken waarmee ik dus de treinen en de wissels makkelijk kon aansturen.

Ik hoor je nu denken: koop dan een Z21 en zo'n mooie WLAN muis, want daarmee kan je treinen aansturen en wissels.. draadloos. Je snapt natuurlijk dat zoiets best wel een flinke duit kost en daarom wilde ik wat zelf ontwerpen. Bovendien wilde ik ook nog een analoog treintje aan kunnen sturen en ik weet eigenlijk niet eens of een Z21 dat kan  ??? Maar dat terzijde, ik heb ook wel eens zo'n maus vastgehouden en hoewel het redelijk werkte, wilde ik toch liever minder knoppen indrukken voor de wissels.

Het prototype
Ik ben dus gaan ontwikkelen, programmeren en solderen en heb uiteindelijk gebouwd: het prototype:

Als het morgen een beetje meezit, kan ik hem morgen al inbouwen en filmpjes schieten.

De basis bestaat hier uit een arduino nano en een partij randapparaten. Bovenin zie je de treinbesturing die met een krulsnoer USB kabel naar de centrale besturing gaat. Met de draaiknop kan ik een analoge trein (en ook DCC treinen) aansturen en met de twee drukknopjes, kan ik alle wissels schakelen.

De wissels in kwestie zijn peco wissels met gepolariseerde puntstukken. Ik stuur ze aan door middel van MG90 servo motors die ik voor <€2,- p/s inkoop uit China en met het relais kaart regel ik de puntstukken. De servo's worden bestuurd door een PCA9685 pwm driver. Deze driver en de relais stuur ik allemaal via de I2C bus aan. (Dat houdt eigenlijk in dat ik de wissels met slechts vier draden aan de arduino heb hangen) De besturing heeft verder nog een enkele H-brug voor de treinen en 8 aansluitingen voor LDRs voor de terugmelding.

Het baanplan in kwestie is deze:

De werking van het systeem berust hier op het bijhouden van de locatie van de trein. Ik heb erg lang en hard nagedacht over waar de terugmelders moesten komen. Ik wilde vanwege een beperkt aantal analoge porten op de arduino er zo min mogelijk gebruiken. Om die reden, heb ik uiteindelijk beredeneerd dat er voor elke wissel (dus voor de wisseltongen) een LDR moest komen. Deze baan heeft (met rode cijfers aangeven) 12 secties, 7 wissels en slechts 6 terugmelders.

Er wordt overigens alleen de terugmelder in de gaten gehouden die voor de trein liggen, als iets of iemand anders spookmeldingen veroorzaakt op de baan kan dat geen kwaad.

Als een trein over een LDR rijdt, dan kijkt de besturing naar de richting van de trein en of er een wissel ligt die zich kan vertakken, als dat het geval is dan kijkt de software naar de stand van de wissel. Een wissel wijst (vanaf onderaf gezien) of naar het Top spoor of naar het Bottem spoor. Afhankelijk van de stand van de wissel wordt de trein in een nieuwe sectie ingedeeld. Een voorbeeld: als een trein in sectie 2 naar rechts rijdt, melder 1 ziet een trein en wissel 2 wijst naar het top spoor dan wordt de trein geplaatst in sectie 4. Zodra de trein deze sectie inkomt, kan je met de twee drukknoppen op de handregelaar de wissel bedienen die voor de trein ligt. Dat is wissel 3 in dit geval.

Als een trein een nieuwe sectie binnenkomt, dan worden automatisch alle wissels in blinde richting goed geschakeld. Vanwege de puntstukpolarisatie kan ik geen wissels openrijden. Als een trein een nieuwe sectie inrijdt, dan kan je met de twee knopjes een andere wissel bedienen (mits er een is om te bedienen). Welke wissel je kan bedienen is natuurlijk ook afhankelijk van de richting van de trein. Als een trein sectie 10 binnen rijdt en hij rijdt naar rechts, dan kan wissel 6 bedienen. En als je stopt in sectie 10 en naar links gaat rijden dan kan je wissel 4 aansturen.

De layout van deze baan ligt vast in een tabel in de source code en ziet er op het moment zo uit:
const int B = 0b10000000 ;
const int T = 0b00000000 ;
/*
      > leftSensor
      |   > rightSensor 
      |   |
      |   |       > leftTurnout ; these must jump by the buttons
      |   |       |   > rightTurnout
      |   |       |   |
      |   |       |   |     > rightTurnoutBlind        ; 1st bit true = curved, false = straight
      |   |       |   |     |   > leftTurnoutBlind      ; blind turnouts must jump when train enters new section
      |   |       |   |     |   |     
      |   |       |   |     |   |       > leftUpSection              ; last 4 bytes contain information about which new section the train is heading for
      |   |       |   |     |   |       |   > leftDownSection
      |   |       |   |     |   |       |   |
      |   |       |   |     |   |       |   |     > rightUpSection
      |   |       |   |     |   |       |   |     |   > rightDownSection
      |   |       |   |     |   |       |   |     |   |                  */
Section section[ sectionAmount ] = { // this table is the layout
NA, NA,    NA, NA,    NA, NA,    NA, NA,   NA, NA , //  Dummy
NA,  1,    NA,  2,   1|T, NA,    NA, NA,    4,  5 , //  1
NA,  1,    NA,  2,   1|B, NA,    NA, NA,    4,  5 , //  2
NA,  2,    NA,  5,    NA, NA,    NA, NA,    6,  7 , //  3
1,  3,     1,  3,   2|T, NA,     1,  2,    8,  9 , //  4
1,  4,     1, NA,   2|B, 4|T,    1,  2,   10, 10 , //  5
2,  4,    NA, NA,   5|T, 4|B,    3,  3,   10, 10 , //  6
2, NA,    NA, NA,    NA, NA,     3,  3,   NA, NA , //  7
3, NA,     1, NA,    NA, NA,     4,  4,   NA, NA , //  8
3,  6,    NA, NA,   3|B, 7|T,    4,  4,   11, 11 , //  9
4,  5,     4,  6,    NA, NA,     5,  6,   11, 12 , // 10
6, NA,     7, NA,    NA, NA,     9, 10,   NA, NA , // 11
5, NA,     4, NA,   6|B, NA,    10, 10,   NA, NA , // 12
} ;
Als ik de layout van de baan verander, hoef ik alleen deze tabel aan te passen.

Het eindproduct
Tot zover het prototype. Ik denk natuurlijk ook: hoe ik kan dit zo maken dat andere mensen het ook makkelijk kunnen gebruiken. De tabel invullen is bijvoorbeeld niet bijzonder makkelijk, je moet er goed voor zitten en weten hoe je baan in secties moet indelen. Een ander nadeel is dat je zelf de tabel in source code zou moeten aanpassen en lang niet iedereen is daar comfortabel mee.

Ik wil dit oplossen door een programma te schrijven In Processing wat een verkapte versie wordt, van de software die ik eerder al gemaakt heb voor mijn vaste treinbaan. Waar ik naar toe wil, is dat je je layout kan tekenen in dit programma en dat dan kan oversturen naar het EEPROM geheugen van de arduino. Het programma is tevens ook in staat om de arduino voor jou te programmeren. Je hoeft dan geen een woord code te zien of aan te passen. Wat je wel zou moeten doen is dit:

Je zou in een soort gelijk programma, je baanplan moeten tekenen met wissels, baanstukken en terugmelders (de groene bolletjes). Er komt dan een knop met de tekst 'FLASH PROGRAM' waarmee je de arduino eenmalig kan flashen van het programma en er komt een knop met de tekst "STORE LAYOUT" waarmee de informatie van het baanplan wordt overgepomt naar de de Arduino's eeprom. Ik denk dat je dat binnen ongeveer 10 minuten wel gedaan moet hebben.

Tot zover de software kant van het verhaal. Om de hardware ook wat 'praktisch' te houden, dacht ik er aan om een shield te ontwerpen dat op dit ding past:

Deze arduino mega's kan je voor ongeveer 10 a 12€ vinden in China. Het shield wat ik dan ontwerp kan je dan zelf als bouwpakket in elkaar solderen en op deze arduino mega prikken. Op het shield komen dan voornamelijk aansluitingen voor ongeveer 14 terugmelders (print kroonsteentjes), een 6 polige connector voor de servo drivers waarmee je tot 16 wissels (en ontkopperlaars) kan aansturen en er komen 2 aansluitingen voor de eerder getoonde 8 polige relais kaarten. Er komt een schakelende voeding op voor de arduino, een H-brug voor de treinen die zowel PWM als DCC kan aansturen en een USB poort (of eventuele andere aansluiting) voor de handregelaar. De kabels naar de externe dingetjes (relaiskaarten en servodrivers) bestaan uit jumper kabels zoals te zien is op de eerste afbeelding. Op elektrisch vlak moet het dan een soort plug en play systeem zijn. De controller zelf wordt niet groter dan de arduino mega (minus de relais kaart en de servo driver).

Als je nu geen servo's wilt maar magneetwissels wilt schakelen, dan zou je daarvoor het relaiskaart voor de puntstukken kunnen toepassen. Verdere details over wat er bij zou moeten komen qua besturing is natuurlijk afhankelijk wat wat de mensen hier graag zouden willen zien. Ik dacht er bijvoorbeeld zelf aan om een 3e en misschien 4e knop toe te voegen aan de handregelaar om daar bijvoorbeeld ontkoppelaars mee aan te sturen.

De limitaties
Natuurlijk is het systeem (nog) niet perfect. Een nadeel zijn wisselstraten. Als wissels direct aan elkaar liggen, dan heb je ca 18cm aan rails lengte de tijd om een volgende wissel te schakelen. De secties en bezetmelder hebben ook een niet-standaard indeling. Normaal heeft men bij computer banen 2 of 3 melders per sectie. En ik heb nu 1 melder bij elk wisselknooppunt liggen en de sectie indeling zoals ik nu heb geïmplementeerd, betekent dat er er eigenlijk meer secties bij komen en dat er erg korte secties bij zitten.

Er kunnen problemen ontstaan als er er meer dan 1 trein op rijdt.. Het probleem zit hem namelijk in mijn aparte sectieindeling en het is ook een oplosbaar probleem. Dit is 100% oplosbaar door eigenlijk normale secties te maken met 2 melders per sectie. Dan kunnen treinen niet over dezelfde melders rijden en zijn er geen problemen. En een bijkomend voordeel is dat je secties logischer kunt indelen en eigenlijk alles wordt er eigenlijk makkelijker van.

Waarom het gebruik van LDRs
Als laatste wil ik nog een klein uitlegje geven over de LDR. Een LDR is een Light Depended Resistor ofwel een lichtgevoelige weerstand. Door een weerstandsdeling te maken met LDR en een andere gefixeerde weerstand, kan je de lichtsterkte van de LDR bepalen. Een LDR wordt door sommigen niet helemaal als een veilige manier van terugmelding gezien. Niets is minder waar. Ik heb bovendien een aantal redenen voor het gebruik van LDR voor deze controller. Omdat een rangeerbaan nu eenmaal een... rangeerbaan is, komt het ook voor dat goederenwagonnen als eerste over de bezetmelder komen. Ik wil niet dat achtergebleven wagons worden gedetecteerd omdat dat voor zo'n handgereden rangeerbaan niet handig is. Daarom vallen massadetectie en stroomdetectie eigenlijk al af. Stroomdetectie is sowieso vervelend vanwege extra elektronica, minimale detectie lengte en de noodzaak om weerstanden of isololatie lak aan al je wagons te knutselen. En je moet in je rails gaan zagen. Lichsluisjes vind ik duur en erg omslachtig.

De voordelen van LDRs op een rijtje zijn:
  • Ze zijn spotgoedkoop
  • Ze detecteren wagonnen
  • mits goed geprogrammeerd werken ze goed genoeg
  • Je kan ze direct in een arduino analoge ingang pluggen (met 1 extra weerstand welliswaar)
  • Je hoeft je rails niet open te zagen en te isoleren
  • werkt goed voor dit systeem
  • LDRs zijn zo klein dat ze tussen de bielzen van je rails passen

In het prototype heb ik de LDRs zo geprogrammeerd dat ze bezet melden, wanneer een een bepaalde drempelwaarde binnen een bepaalde tijd wordt overschreven. Ik kan nu een hele paper schrijven over hoe je een arduino kan programmeren om een LDR op een van de vele goede wijzes in te lezen, dus ik zal het kort houden. Ze reageren alleen op plotse veranderingen zoals een rijdende wagon of locomotief. Ik heb dit getest met een tweetal wagonnetjes en het werkt als een wagonnetje zonnetje. De LDRs reageren niet op geleidelijke veranderingen, zo hoeven de LDRs dus niet ongeveer dezelfde lichtintensiteit te ondergaan en zit je ook niet vast aan een gefixeerde drempelwaarde. Dus tsja die bezetmelding.. het is een relatief begrip  ;)

Als je met een trein overigens over een LDR rijdt en halverwege omkeert, dan gaat dat ook prima goed.

Als afsluiting
Ik bedrijp dat men natuurlijk eerst wel een filmpje wil zien waarmee ik de werking kan bewezen. Tot op heden heb ik alleen de werking kunnen testen door zelf de bezetmelders te bedienen met een draadje en door te kijken naar de monitor om te zien welke wissels geschakeld werden en waar de trein was. Ik zal mijn best doen om zsm de bende aan te sluiten en te filmen.

Voordat ik mijn prototype verder door ontwikkel tot een praktisch en makkelijk te gebruiken en makkelijk te assembleren eindproduct, ben ik eigenlijk wel benieuwd naar wat jullie vinden van dit idee? Zoals meeste mensen ben ik natuurlijk kapot druk dus om dit door te ontwikkelen terwijl niemand er geïnteresseerd in is is natuurlijk puntloos  ::)

Zijn er misschien nu al mensen die misschien zeggen: "dit lijkt me wel wat!"?
Hebben jullie misschien nog andere ideeën of vragen of andere input?

Mvg,

Bas


« Laatst bewerkt op: 10 november 2020, 22:51:19 door Bert van Gelder. Reden: Titel aangevuld »
Train-Science.com
Train-Science github
It ain't rocket science ;-)

bask185

  • Offline Offline
  • Berichten: 3914
Re: Idee voor een besturing voor een rangeerbaan, print op Arduino
« Reactie #1 Gepost op: 15 november 2020, 22:33:50 »
Drie dagen non stop kunnen werken aan m'n baan. Ik moest de gehele linker helft nog aanleggen met flex rails. Maar ik heb een filmpje kunnen maken.

Het filmen en besturen tegelijk ging niet helemaal feilloos, maar je kan zien dat ik met de drie knopjes van de regelaar meerdere wissels kan bedienen.

<a href="https://www.youtube.com/v/5zLFFTup8bc" target="_blank" class="new_win">https://www.youtube.com/v/5zLFFTup8bc</a>
Ik moet de LDR's nog een klein beetje finetunen, maar over het algemeen doen ze het redelijk goed. Ik heb een enkele keer meegemaakt dat een enkeling het niet deed als de trein te langzaam rijdt. Maar het principe werkt  (y). De wissels in blinde richting schakelen ook wanneer de trein er op af komt rijden.

Bas
Train-Science.com
Train-Science github
It ain't rocket science ;-)

FreekH

  • Offline Offline
  • Berichten: 513
Re: Idee voor een besturing voor een rangeerbaan, print op Arduino
« Reactie #2 Gepost op: 15 november 2020, 22:48:09 »
Bas, waar heb je die LDR's neergezet? Ik zou wat kleine kastjes langs de rails verwachten, aan de ene kant een LDR en aan de andere kant een lampje.
Je eigen optocoupler als het ware. Nu bedenk ik met net dat je ze misschien wel in de bodem ingegraven hebt, en ze worden belicht door de verlichting boven de baan?

Freek.

Marcel112

  • Lid EMV
  • Offline Offline
  • Berichten: 1608
    • Project "Spoor op Vleugels"
Re: Idee voor een besturing voor een rangeerbaan, print op Arduino
« Reactie #3 Gepost op: 15 november 2020, 23:13:38 »
Freek,

Geen enkel probleem dat inbouwen.
Zeker niet wanneer je een modulatie op je LDR hebt staan. Dan gaan ze niet af op normaal infrarood licht, maar echt alleen op de weerkaatsing.
Alle foto's van Spoor op Vleugels EMV Foto album
Alle filmpjes van de vereniging op Youtube

FreekH

  • Offline Offline
  • Berichten: 513
Re: Idee voor een besturing voor een rangeerbaan, print op Arduino
« Reactie #4 Gepost op: 16 november 2020, 00:14:51 »
Maar waar zitten die LDR's nou?

Freek.

bask185

  • Offline Offline
  • Berichten: 3914
Re: Idee voor een besturing voor een rangeerbaan, print op Arduino
« Reactie #5 Gepost op: 16 november 2020, 10:01:58 »
Maar waar zitten die LDR's nou?



Ik heb m'n werk goed gedaan dus, want je ziet ze niet  :P Ik heb ze verstopt tussen de bielzen. En ze werken hier op de verlichting van de kamer. Omdat de software werkt met relatieve waardes en verschillen in plaats van met absolute grenswaardes, maakt het niet uit dat de LDRs verschillende licht omstandigheden hebben.

Ik heb voor elke wissel een LDR geplaatst en tussen wissel 1 en 2 zit er maar eentje. Het zijn er maar zes in totaal.

Citaat
Zeker niet wanneer je een modulatie op je LDR hebt staan. Dan gaan ze niet af op normaal infrarood licht, maar echt alleen op de weerkaatsing.
Ik snap niet goed wat je bedoelt met 'weerkaatsing'. Een LDR is niets meer dan een weerstand wiens waarde mee verandert met de hoeveel licht dat er op valt. Ik maak geen gebruik van infrarode stralers of iets anders, ik gebruik slechts het licht van m'n omgeving.  Ik weet eerlijk gezegd ook niet of een LDR ook vatbaar is voor infrarood licht, ik vermoed van wel maar het maakt niet echt uit.

Mvg,

Bas
« Laatst bewerkt op: 16 november 2020, 10:03:32 door bask185 »
Train-Science.com
Train-Science github
It ain't rocket science ;-)