BeneluxSpoor.net forum
Vraag en antwoord => Digitaal => Topic gestart door: RudyB op 01 December 2014, 16:13:38
-
Er is een nieuwe video uit over het inzetten van meerdere Arduino's in serie als S88 bezetmelding interface.
Link naar de video en naar de software download. (http://rudysmodelrailway.wordpress.com/2014/12/01/multiple-arduinos-chained-as-an-s88-occupancy-detector-interface/)
Waarom dit doen? Gewoon omdat het leuk is het werkend te krijgen. En natuurlijk ook omdat een Arduino rond de €4,- kost en een in de winkel aangeschafte S88 interface rond de €40,-.
(http://up.picr.de/20275128sq.jpg)
De software bestaat uit slechts 4 korte stukjes:
1. Initialisatie
Declaratie van interrupt routines en van de 16 input pinnen met interne pull up weerstand. De sensor moet de input naar 0 schakelen. Er is geen stroomdetectie voorzien, dat kan wel extern bijgebouwd worden.
2. Main loop
Continu alle 16 ingangen scannen. Bij een 0 het bijbehorende bit in de integer variabele 'sensors' zetten. Dit is een 'latch' functie ... bit blijft gezet totdat het is 'weggestuurd' over de S88 interface.
3. S88 PS interrupt.
De PS puls is het sein van de S88 bus dat een nieuwe cyclus van uitlezen van 512 bits gaat starten.
De inhoud van de 'sensors' variabele wordt overgenomen in een tweede variabele genaamd 'data'
De variabele 'sensors' wordt gereset naar 0.
De clockCounter wordt op 0 gezet (wat ie op dat moment al is, maar toch ...)
4. S88 Clock interrupt
De clock puls is het signaal van de S88 bis dat het volgende bit klaargezet moet worden om uitgelezen te worden.
Het bit met nummer 'clockCounter' uit de 16 bit 'data' variabele wordt op de data-Out pin gezet.
De data-In pin wordt gelezen en opgeslqgen in variabele 'data'. Zo lezen we dus een bit van de volgende Arduino in de 'ketting' uit en bewaren het tot de volgende 16 bits een voor een op de S88 bus worden gezet.
Increment de clockCounter, modulo 16
-
@Ruud,
Sounddecoders in locs zijn erg aan de prijs, en dan nog is het geluid soms niet om aan te horen.
Zou je de voorgesteld Arduino bezetmelding ook kunnen gebruiken om het geluid aan te sturen via speakers onder de baan die op strategische punten staan.
Een beetje zoals vroeger het stereogeluid van de ene naar de andere speaker leek te gaan.
Grzz, Hans
-
Hans,
De Arduino heeft wel mogelijkheden voor sound output. Heb ik nog niet getest. Kan me niet voorstellen dat daar HiFi uit komt.
Dan zou ik toch eerder denken aan een lekkere stevige vette 5.1 surround sound set! :)
-
@Ruud,
Daar denken we ook aan, maar de .wav sounds moeten dan afgespeeld worden op de plek waar wij dat willen. Eventueel virtueel, dat het dus lijkt of het geluid van een loc komt bijvoorbeeld.
Grzz, Hans
-
Dan hangen we wat camera's aan het plafond en middels driehoek berekening bepalen we waar elke loc is. Bijbehorende geluidsbeeld word real time gemixed naar een 5.1 digitale stream die via een Dolby Digital receiver wordt afgespeeld. Zoiets ...? :)
-
(y) 5.1 voor kleine banen, 7.1 voor de iets grotere ;D.
-
Dan hangen we wat camera's aan het plafond en middels driehoek berekening bepalen we waar elke loc is. Bijbehorende geluidsbeeld word real time gemixed naar een 5.1 digitale stream die via een Dolby Digital receiver wordt afgespeeld.
Dat deden we indertijd bij TNO.
Met detectie (optisch of magnetisch) lijkt me ook goed mogelijk de positie van de locs te bepalen. Heb op het web al wel van dit soort systemen gevonden.
Maar dan denk ik weer ... Onnodig duur!
Grzz, Hans
-
Wanneer je echt goedkoop een s88 wil maken kan het makkelijker en nog goedkoper.
Het s88 'protocol' is namelijk gebaseerd op een standaard cmos ic, namelijk de 4014. Hij is €0,75 per stuk bij conrad, maar in China zal hij wel voor minder te krijgen zijn.
https://www.conrad.nl/nl/texas-instruments-uitvoering-8-traps-static-shift-register-parallel-inserieel-uit-vertakt-opladen-cmos-ic-4014-soort-behuizing-dip-16-172707.html (https://www.conrad.nl/nl/texas-instruments-uitvoering-8-traps-static-shift-register-parallel-inserieel-uit-vertakt-opladen-cmos-ic-4014-soort-behuizing-dip-16-172707.html)
Erik
-
Dat deden we indertijd bij TNO.
Da's leuk hobbyen! En daar kreeg je dan ook nog voor betaald??? ;D
-
Yep! Tot er stevig bezuinigd moest worden, helaas.
Grzz, Hans
-
...
En natuurlijk ook omdat een Arduino rond de €4,- kost
...
Waar kun je zo'n Arduinoprintje voor €4,- kopen?
Groeten,
Freek.
-
@Freek,
Hier bijvoorbeeld:
http://m.aliexpress.com/item/1986980366.html
En dan is ie zelfs nog goedkoper dan 4,- euro.
(Zonder verzendkosten, ook nog).
Grzz, Hans
-
Dag Rudy,
Mooi gedaan!
Hoe zit het met de storingsgevoeligheid van de verbindingen tussen de verschillende Arduino´s? Dat was soms een probleem bij de traditionele S88 bezetmelders.....
mvg,
Thomas
-
Lijkt me mooi, een Arduino als bezetmelder... helaas kan ik de files etc niet meer van de site downloaden?
Zijn er wellicht nog meer ontwikkelingen/voorbeelden te vinden met arduino's als (s88?) bezetmelder? Dit topic is alweer van een tijdje geleden, de ontwikkelingen gaan ongetwijfeld door...
-
hmmmm, je hebt gelijk. Ik heb de software in het verleden wel gedownload maar kan me niet herinneren dat ik me daarvoor geregistreerd heb. Ruud zal vast wel reageren en anders kan ik je wel een kopietje sturen.
gr. Frits
-
Er zijn helaas vaak problemen met het downladen via box.com.
Als je naar de software pagina gaat via het menu, dan staat daar een download link voor een zip file die de software uit alle blog posts bevat ... ook de S88 sketch zit erbij. Die link doet het wel.
-
Ga ik proberen!
-
Begrijpt iedereen wat je bedoelt Ruud? Op je Worldpress (https://dl.dropboxusercontent.com/u/4502966/Arduino_DCC_S88.zip) site dus.
gr. Frits
-
Heb e.e.a. bekeken... ondanks dat ik erg gecharmeerd ben van de Arduino heb ik toch een beetje het idee dat het in dit geval wat overkill is? Dat hele S88 gebeuren is zo te zien niet meer dan een doorgeefluik, een Arduino voegt niet veel toe t.o.v. de gebruikelijke logische componenten. Wel leuk om te maken natuurlijk.
-
hallo
je kan met een s88 melder op basis van een arduino, toch wel leuke dingen doen
Ik heb het programma van Ruud wat aangepast en behalve stroom "sensing" ook IR "sensing" ingebouwd
Blijft een leuke basis voor experimenten
Dick
-
Het is inderdaad niet veel meer dan een doorgeefluik. Maar je kan wel wat dingen inbouwen. Zo kan je bijvoorbeeld de ingangen al debouncen zodat de signalen al stabieler zijn. Zonder dat je dit als hardware uit hoeft te voeren. Of je kan kiezen voor active high ipv active low wat normaal is bij S88 etc. En aangezien een Pro Mini zo'n beetje minder kost (en zeker kwa ruimte) dan alle losse chips, tja, waarom niet ;D
Timo
-
Is dat debouncen een serieus issue bij dit soort hardware/melders? Ik ga zeker op een breadboardje een poging doen hoor, sowieso wel leuk om eens te kijken hoe en of dat werkt, met een paar bezetmelders.
Vraagje aan Ruud; de sketch RB-S88 is echt het enige wat nodig is?
Ik meende ergens te lezen dat het geen echte 'bezetmelder' was maar een 'terugmelder'... wat bedoeld men daarmee, en is dat zo?
-
Bij stroomdetectie niet, die hebben het vaak al in hardware. Maar bij schakelaars gegarandeerd. Wel kan de meeste software er mee over weg en zal het genegeerd worden.
S88 is van nature een terugmelder. Het meldt aan de centrale wanneer een pin naar GND getrokken wordt. Maar hoe dit gebeurd of wat het betekend is aan de gebruiker. En een trein kan niet vanzelf een signaal naar GND trekken, het heeft daar wat voor nodig, een bezetmelder. Dit kan een onderbroken rail zijn bij 3-rail of lichtsluisjes of, wat gebruikelijk is bij 2-rail, stroomdetectie. Tegenwoordig wordt de term bezetmelder vaak ook gebruikt voor een bezetmelder met ingebouwde stroomdetectie.
Timo
-
Maar dit is dus geen bezetmelder obv stroomdetectie begrijp ik? Dus niet functioneel gelijk aan s88 producten die je bijv. van digikeijs etc kunt kopen? Of is dit alleen bedoeld om met reedcontacten ofzo te werken?
Want ik zoek dus duidelijk een arduino-based bezetmelder obv stroomdetectie...
-
Want ik zoek dus duidelijk een arduino-based bezetmelder obv stroomdetectie...
Is dan wel geen Arduino maar wel Atmel
http://members.home.nl/robert.evers/s88mega8.htm
Als de je Mega8 eraf haalt en de Arduino van Rudy eraan plakt heb je denk ik wat je zoekt....
Waarbij ik even in het midden laat of je nu een S88 Arduino met stroomdetectie zoekt of een bezetmelder zonder S88 maar met stroomdetectie...
Dat is altijd lekker verwarrend :)
Mvg
Robert
-
Ha ja ik ben daar ook nog niet uit of ik wel goed vertel wat ik wil ;D
Ik denk een arduino-based bezetmelder obv stroomdetectie, die ik aan een Z21 of een Digikeijs 5000 centrale etc. kan knopen :)
-
@Jowi,
De door Ruud tot S88 "verbouwde" Arduino's werken prima met de DR5000 van Digikeijs.
Het voordeel is vooral het prijsverschil met "echte" S88 schakelingen.
Gr, Hans
-
hallo
ik heb uiteindelijk mijn s88 melders met discrete ic's opgebouwd maar ik heb destijds wel wat ontwerpjes gemaakt gebaseerd op een arduino ( een pro mini in dit geval).
Schema en print zijn ongetest, maar een prototype op een bread boardje heeft probleemloos gewerkt.
Ik kan je de eagle files als uitgangspunt wel opsturen.
Als je eea wilt bouwen zul je wat meer aandacht aan de voeding en aan de mogelijkheid meer arduino ingangen te gebruiken kunnen schenken ( verder groundplane etc)
Dick
(https://images.beneluxspoor.net/bnls/schema_s88_arduino.png)[/url
[url=https://images.beneluxspoor.net/bnls/s88_arduino.jpg](https://images.beneluxspoor.net/bnls/s88_arduino.jpg) (https://images.beneluxspoor.net/bnls/schema_s88_arduino.png)
-
Oh dat vind ik wel mooi dit Dick! Wil ik graag proberen... stuur me de files maar als je wilt!
Ik geef je wel even mijn email adres in een pb!
-
We kapen Rudy's draadje...
Anyway
Schema en print zijn ongetest, maar een prototype op een bread boardje heeft probleemloos gewerkt
Maak de printsporen van de connector naar de gelijkrichters (en terug) VEEL breder!!!
Eerste beste ontsporing met een kortsluiting bakt je spoor van print af bij een 2..3A booster en haperende / of geen kortsluit beveiliging....
Mvg
Robert
-
Maar dit is dus geen bezetmelder obv stroomdetectie begrijp ik?
Nee, dit is puur de interface terug, de terugmelder dus.
Dus niet functioneel gelijk aan s88 producten die je bijv. van digikeijs etc kunt kopen?
Daar bedoel je waarschijnlijk de DR4088CS. Dan nee, CS staat niet voor niets voor Current Sens ;) S88 was van oorsprong niets meer dan een manier om ingangen terug te sturen aan de centrale. De DR4088GND is hier nog een voorbeeld van, deze is dus vergelijkbaar met deze Arduino oplossing. Net als de oorspronkelijke versie van Märklin, de 60880 of de Viessmann 5217 of LDT RM-88-N. Tweerail hing daar dan een losse stroomdetectie aan. Bijvoorbeeld zoals die van Dick of de LB100 van Lenz of de (betere) variant van Klaas (http://people.zeelandnet.nl/zondervan/bonte%20verzameling.html#02b).
Of is dit alleen bedoeld om met reedcontacten ofzo te werken?
Kan, maar van oorsprong was het een idee van Märklin waar een contact naar massa enorm eenvoudig was/is. Door één railstaaaf te onderbreken verbond een trein deze vanzelf met de andere railstaaf (de massa) wanneer er over heen gereden werd. Iets wat Märklin al toepaste in het analoge tijdperk.
Maar je kan er alles aan sluiten, zolang het maar naar massa schakelt. Reedcontacten, lichtsluizen, IR-reflectie, schakelaars, stroomdetectie, massa schakelaars enz.
Want ik zoek dus duidelijk een arduino-based bezetmelder obv stroomdetectie...
Dan gewoon een van de stroomdetectie circuits aan iedere ingang toevoegen. Bijvoorbeeld de Klaas LB100 (werk met het verval van één diode) of een meer klassieke met het verval van twee diodes zoals die van Dick. Zou zelf wel gewoon voor de PC817 opto gaan, heerlijk goedkoop. Het gedender omdat de opto maar in één DCC richting werkt is vervolgens prima in software af te vangen (of door het plaatsen van een condensator maar dat is extra hardware ;D). En inderdaad, dikke sporen!
Timo
-
Kan er een relais bij voor een keerlus schakeling?
Groet,
Gerard van der Sel.
-
Hoe bedoel je Gerard?
Timo
-
Ik heb hier 8 terugmelders en een micro die staat te niksen. Kan daar niet een relais bij die samen met 5 ingangen een keerlusschakeling vormen.
Ik denk als volgt:
Terugmelders 1 t/m 8: 1 = A, 2 = B, 3 = C, 4 = D en 5 = E. 6, 7 en 8 spelen geen rol voor de keerlus en zijn vrij te gebruiken.
Nu met A t/m E het relais besturen en je hebt een Xtreme keerlusschakeling volgens mij.
Groet,
Gerard van der Sel.
-
Yep, prima mogelijk :) Dan moet natuurlijk wel extra goed rekening gehouden worden met debouncing/signaal stabiliteit en over polariteit van de bezetmelders als het gaat om stroomdetectie.
Timo
-
Wat bedoel je met de polariteit van de stroommeting? Als er stroom loopt volgt er of een constante melding (ac opto-coupler) of een blokgolf (dc opto-coupler).
Als je de S88 methode van ontdenderen gebruikt is het vrij simpel (inverse waarde or'en).
Werkt al jaren bij mij onder Selectrix. Voordeel een keerlus schakeling voor minder dan 10 euro.
Voor het Selectrix voorbeeld zie hier:
(https://images.beneluxspoor.net/bnls/Keerlus_10.jpg) (https://images.beneluxspoor.net/bnls/Keerlus_10.jpg)
(Werkt niet met de Arduino, maar met een ATtiny2013)
Groet,
Gerard van der Sel.
-
Dat je dus de polariteit naar alle melders van de keerlus moet omdraaien. Meer eigenlijk dus het correct ontwerpen. ;D Maar als je losse stroomdetectie gebruikt met één voeding aansluiting voor meerdere secties dat je dus op let waar je ze gebruikt.
inverse waarde or'en
Wat bedoel je hier mee? Kan je een code voorbeeld geven?
Timo
-
Tuurlijk. Het "hart" van de keerlus/terugmelder (helaas in assembly):
KEERLUS:
; Keerlus aansturing
; Data vanaf de ingangen verzamelen
IN R27, PINB
COM R27
OR KLterugmeld, R27
; Trein arriveert bij sectie A of B
MOV R26, R27
AND R26, KLmaskAB
BREQ KEERLUS_10
CBI PORTD, REL1
SBRC KLstatus, Sect_combine
OR KLterugmeld, KLmaskAB
RET
KEERLUS_10:
; Trein arriveert bij sectie D of E
MOV R26, R27
AND R26, KLmaskDE
BREQ KEERLUS_20
SBI PORTD, REL1
SBRC KLstatus, Sect_combine
OR KLterugmeld, KLmaskDE
KEERLUS_20:
RET
Enige toelichting:
Poort B is als ingang geschakeld. De 8 terugmelders zijn hierop aangesloten. Het Selectrix protocol is een bidirectioneel 8 bits protocol. Door poort B als ingang of uitgang te schakelen kan ik zo een compleet byte van deSelectrix bus verwerken.
KLterugmeld wordt na versturen van de data naar de SX-nbus op 0 gezet.
In routine de eerste drie regels zie je wat ik bedoel. Hierna wordt gekeken of een trein bij de secties A/B of D/E is en het relais overeenkomstig aangestuurd.
Ook de terugmelding wordt eventueel aangepast, zodat sectie A/B of D/E gelijktijdig gemeld kan worden.
Groet,
Gerard van der Sel.