BeneluxSpoor.net forum

Vraag en antwoord => Elektronica en analoog => Topic gestart door: bask185 op 10 oktober 2018, 10:07:43

Titel: Rail detectie Marklinbaan met Arduino.
Bericht door: bask185 op 10 oktober 2018, 10:07:43
Ik heb 10 doodlopende opstelsporen. Aan het einde van elk spoor is een geisoleerd contact railtje die er voor moet zorgen dat de baanspanning wordt afgeschakeld wanneer een trein over dit schakelrailtje rijdt. En met een druk knop wil ik dan weer de baanspanning er op schakelen. Ik wou eerst direct het relais omschakelen, maar daar bij kwam een probleem kijken. De trein moet ook weer weg kunnen rijden, en als hij continu op de schakelrail staat die het relais probeert om te zetten... nu kan ik dit probleem wel oplossen maar daar komen meer draadjes bij kijken dan me lief is en ik heb de pest aan draadjes.

Toen bedacht ik me dat ik beter af was om een arduino te gebruiken zodat ik wat meer flexibiliteit heb. Bovendien heb je daar erg goedkope relais modules voor. Die relais modules zijn al voorzien van transistoren dus die kan je met 5V aansturen uit je I/O pinnen. So far so easy.

Waar ik nu nog naar opzoek ben, is de makkelijkste manier om de schakelrails in te lezen. Ik weet dat dit vaak wordt gedaan met optocouplers maar ik wilde eigenlijk iets simpelers hebben zoals een weerstandsdeling en een diode. En ik heb eigenlijk geen idee of iemand zoiets al heeft gedaan. Volgens mij kom je in de knoop te zitten met je common ground verbinding. Weet iemand of iemand zoiets als dit al heeft uitgevoerd? En weet iemand eventueel een andere, simpele, manier om een arduino te verbinden met een M* schakelrail?

Titel: Re: Rail detectie Marklinbaan met Arduino.
Bericht door: Klaas Zondervan op 10 oktober 2018, 10:17:29
Je hebt het de ene keer over een contactrail en de andere keer over een schakelrail. Dat zijn twee verschillende dingen. Als het een geïsoleerd contact is kan je het toch rechtstreeks op de Arduino aansluiten?
Titel: Re: Rail detectie Marklinbaan met Arduino.
Bericht door: bask185 op 10 oktober 2018, 10:52:54
je hebt gelijk ik bedoel een contact rail
Titel: Re: Rail detectie Marklinbaan met Arduino.
Bericht door: Klaas Zondervan op 10 oktober 2018, 11:32:04
Zowel de contactrail als de schakelrail maken een massaverbinding. Je kan ze beide gebruiken, maar dan moet je wel de grounds aan elkaar verbinden. Bij de schakelrail in C-rail kan je de massaverbinding losmaken, dan krijg je een potentiaalvrij contact. Wellicht veiliger.
Titel: Re: Rail detectie Marklinbaan met Arduino.
Bericht door: Timo op 10 oktober 2018, 12:05:51
Hoe leuk ik Arduino etc ook vind, je kan het ook oplossen door een condensator in serie te zetten met het relais. Op die manier kan er maar eenmalig een puls komen. Om deze te ontladen een +- 100k weerstand over de condensator. En als de relaisspoel eindafschakeling heeft nog iets van een 1k parallel aan de spoel.

Ding om op te letten met een Arduino, als je de Arduino niet extern 5V geeft (bijvoorbeeld via USB) maar via de jack of Vin kan je amper stroom pakken van de 5V rail (om de relais te voeden). Zeker bij gebruik van 12V heeft de spanningsregulator niet zo veel (thermische) ruimte meer om dingen van stroom te voorzien. Ik zou dan ook een losse DCDC buck converter aanraden voor de spanning voor de relais.

En ja, je kunt gewoon de massa koppelen de contactrail of schakelrail direct gebruiken. Je wilt misschien alleen wat beveiliging / onderdrukking van storing aan de ingang hebben. Simpelste vorm, lagere pull up weerstand dan de interne. Zeg 1k. Of door deze 1k in serie te zetten en eventuele storing meer in software weg te werken. Laatste is überhaupt aan te raden omdat je redelijk wat dender zult hebben.


Timo
Titel: Re: Rail detectie Marklinbaan met Arduino.
Bericht door: bask185 op 10 oktober 2018, 13:05:37
Hoe leuk ik Arduino etc ook vind, je kan het ook oplossen door een condensator in serie te zetten met het relais. Op die manier kan er maar eenmalig een puls komen. Om deze te ontladen een +- 100k weerstand over de condensator. En als de relaisspoel eindafschakeling heeft nog iets van een 1k parallel aan de spoel.
Ik heb al 5V mono relais gekocht. Maar zelfs al zou ik een bi-stabiel wisselspanning relais (of enkelzijdig gelijkgericht DC bi-stabiel relais) gebruiken, en ik zou deze direct schakelen met de baanspanning. Loop ik dan niet tegen het probleem dat de condensator de wisselspanning gewoon doorlaat. Misschien werkt het wel als ik de baanspanning gelijkricht en dan op het relais gelijkspanning zet. Als dan een trein over de schakelrail rijdt, creëer je een gelijkspanning. En deze kan je dan via een condensator een puls laten geven op een relais spoel. Opzich wel interessant  ;) om te proberen. Maar ik heb nu al mono relaitjes gekocht  ;D

Ding om op te letten met een Arduino, als je de Arduino niet extern 5V geeft (bijvoorbeeld via USB) maar via de jack of Vin kan je amper stroom pakken van de 5V rail (om de relais te voeden). Zeker bij gebruik van 12V heeft de spanningsregulator niet zo veel (thermische) ruimte meer om dingen van stroom te voorzien. Ik zou dan ook een losse DCDC buck converter aanraden voor de spanning voor de relais.
Ben ik me van bewust ik wil een 5V voeding gebruiken.

En ja, je kunt gewoon de massa koppelen de contactrail of schakelrail direct gebruiken. Je wilt misschien alleen wat beveiliging / onderdrukking van storing aan de ingang hebben. Simpelste vorm, lagere pull up weerstand dan de interne. Zeg 1k. Of door deze 1k in serie te zetten en eventuele storing meer in software weg te werken. Laatste is überhaupt aan te raden omdat je redelijk wat dender zult hebben.

Dender is in principe nooit geen probleem, aangezien je zulks in je software kan oplossen. Ik wil de baanspanning er zelf weer opzetten aan de hand van een druk knop. Als ik die knop indruk, dan snapt de arduino dat hij even 10 seconde niet naar de input van de contactrail gaat luisteren.

 Maar kan je dus de ground van je arduino aansluiten op de baanmassa? (met 100Ohm weerstand voor stroombegrenzing). Ik begrijp dat bij M* de middengeleider wisselt tussen de +18V en -18V en de baan zelf op 0V blijft hangen?. Maar het lijkt me zo raar om de ground van een 5VDC systeemte verbinden met de '0' van een 18VAC systeem. De ingenieur binnen in me zegt 'just don't try'.

Als dat kan, kan ik de schakelrail gebruiken om de input naar de '0' te schakelen die anders met een pull-up op de 5V wordt gehouden.

EDIT:
Ik denk dat ik er uit ben, nu nog keuze maken of ik dit verkies boven optocouplers:

(https://i.imgur.com/2xMDceL.jpg)

Moest ff m'n hersens aanzetten, maar ik geloof dat dit zou kunnen werken. De baanspanning en de schakelrails richt ik gelijk. De min sluit ik met een 100Ohm aan op de GND van arduino en via een weerstandsdeling lees ik de input in. Als er geen trein op de schakelrail staat, dan trekt de weerstandsdeling de spanning naar de 0V toe.
Titel: Re: Rail detectie Marklinbaan met Arduino.
Bericht door: minibart op 10 oktober 2018, 14:02:22
Dat zou moeten werken. Persoonlijk zou ik voor optocouplers gaan. Lijkt mij iets veiliger voor de Arduino.
Titel: Re: Rail detectie Marklinbaan met Arduino.
Bericht door: Timo op 10 oktober 2018, 14:56:28
Monostabiel is wat lastiger. Alhoewel, je zou dan ook juist de spanning naar het relais kunnen onderbreken om te gaan rijden. Moet je wel wat langer de de knop indrukken (tot de loc van de schakelrail is).

Op AC gaat de condensator truc inderdaad niet werken. Maar je kunt prima AC en DC combineren ;) Alleen wat lastiger als je de relais van dezelfde trafo wilt voeden als de trein. Maar als je gewoon een losse (5V) voeding pakt (bijvoorbeeld telefoonlader) en daarvan V- ook aan de rail masse hangt werkt het prima.

Als je ook de Arduino met 5V wilt voeden let dan op twee dingen
- Zorg dat die 5V lokaal zit. 5V onder de baan door naar gevoelige logica is vragen om problemen. Voor ongevoelige dingen als relais geen probleem
- Als je een Uno met 5V voedt (via de 5V pin, niet Vin want dat werkt überhaupt niet), sluit dan NIET de usb aan.

Dender is in principe nooit geen probleem, aangezien je zulks in je software kan oplossen. Ik wil de baanspanning er zelf weer opzetten aan de hand van een druk knop. Als ik die knop indruk, dan snapt de arduino dat hij even 10 seconde niet naar de input van de contactrail gaat luisteren.
Nooit geen? ;D (Sorry ;)) Maar goed, dan is het toch gewoon een probleem wat je al oplost hebt? ;) Overigens wel met een paardenmiddel :angel: Je zou ook kunnen kijken naar een library als Bounce2.

Maar kan je dus de ground van je arduino aansluiten op de baanmassa?
Ja :) Tenzij die weer zijn spanning krijgt van dezelfde trafo als de rails (via gelijkrichters etc). Maar van een losse voeding, geen probleem. Zo werkt S88 ook (y)

(met 100Ohm weerstand voor stroombegrenzing).
Alleen moet je dat niet doen. Gewoon direct.

Ik begrijp dat bij M* de middengeleider wisselt tussen de +18V en -18V en de baan zelf op 0V blijft hangen?.
Tja, daar komen we meer in elektronica en wat je als referentie neemt. Spanning kan je nooit op één punt meten. Sluit maar eens alleen de rode probe aan op de + van een batterij ;) Maar goed, als je als referentie de rail neemt (wat voor de hand ligt als je het de massa noemt) dan ja.

Maar het lijkt me zo raar om de ground van een 5VDC systeemte verbinden met de '0' van een 18VAC systeem. De ingenieur binnen in me zegt 'just don't try'.
Haha, tja. Maar als de twee voedingen gescheiden zijn dan is dat geen probleem. Dat is het principe van superpositie. Twee gescheiden voedingen weten niet van elkaars bestaan. AC of DC speelt dan ook geen rol. En kan je ze veilig met één zijde koppelen. Meest voor de hand liggende is GND aan de massa. Zeker omdat dit dan de shakelrails en contactrails direct laat werken.

Als dat kan, kan ik de schakelrail gebruiken om de input naar de '0' te schakelen die anders met een pull-up op de 5V wordt gehouden.
Correct! Ik zou alleen dan nog een weerstand in serie opnemen. Dit zorgt voor de beveiliging van de Arduino. Als je hier 100k voor gebruikt kan de boel zelfs niet stuk als de middenrail wordt kortgesloten met de contactrail en je net een loc omschakelt. Nadeel van de 100k, de interne pull up is te sterk. Oplossing, losse pull up (en interne niet gebruiken). Niet zo'n hoge waarde waarde nodig als je alleen schakelrails gebruikt (geen kans op kortsluiting met de middenrail)
                              5V
                              ┬
                              │
                              ┴
                              10k
                              ┬
                              │
[schakel/contactrail]─────────┴───[100k]────[Arduino pin]
Dit plaats je dicht bij de Arduino (niet bij de schakelrail). Dan is de koppeling van storing ook zo goed als weg. Nog steeds simpeler dan een opto. Zeker omdat je ook iets meer nodig hebt wil je een opto ingang tegen kortsluiting met de 24VAC wilt laten kunnen (maar ook schakelen op 5V).

Ik denk dat ik er uit ben, nu nog keuze maken of ik dit verkies boven optocouplers:
Dat gaat niet betrouwbaar werken. Creëer je gekke koppelingen mee en je hebt nu een spanningsdeler met de interne pull up...


Timo
Titel: Re: Rail detectie Marklinbaan met Arduino.
Bericht door: Klaas Zondervan op 10 oktober 2018, 17:19:03
Maar het lijkt me zo raar om de ground van een 5VDC systeemte verbinden met de '0' van een 18VAC systeem. De ingenieur binnen in me zegt 'just don't try'.
Hangt er maar vanaf waar je ingenieur in bent. ;D
Titel: Re: Rail detectie Marklinbaan met Arduino.
Bericht door: Timo op 10 oktober 2018, 18:43:41
 ;D ;D

En om aan te geven dat het niet raar of gevaarlijk is, in het grootbedrijf doen ze het ook. De hoogspanning stroom van de trein gaat door de rails maar ook de stroom voor de blokbeveiligingsrelais. En die werken niet op 1800V en daar gaan ze ook niet tegen kunnen ;D En daar bovenop weer het signaal voor ATB! Dus ja, gaat prima 8)


Timo