BeneluxSpoor.net forum
Vraag en antwoord => Digitaal => Topic gestart door: Reinout van Rees op 03 April 2019, 20:56:09
-
Voor m'n Eifelburgenbahn (Duits zijlijntje) ben ik lekker los gegaan met Arduino's. Twee wissels met servo's en een zelf geprogrammeerde arduino. Idem arduinootje voor een armsein met viessmann-aandrijving.
En een nagebouwd setje wissel/seinhendels + rijweghendels enzo, aangestuurd met weer een arduino. Onderlinge afhankelijkheden tussen wissels en seinen zitten dus in de arduino geprogrammeerd.
https://vimeo.com/168103331 (https://vimeo.com/168103331)
Aansturing van de servo-arduino's gaat nu via het naar 0V trekken van een snoertje dat naar die arduino toeloopt.
Digitaal: da's alleen de aansturing van de loks. Multimaus.
Maar nu: nu wil ik blokbeveiliging aanleggen richting het volgende station (Duits Streckenblock). Qua arduino zou ik dan (geloof ik) 6 draden moeten trekken om dat voor elkaar te krijgen. En er komt nog wat bij omdat ik een paar lichtsluizen nodig heb. Daar gaat het allemaal wel mee lukken.
Echter: zo'n arcomodingus arduino-dcc-servodecoder-ding klinkt ook wel makkelijk. En al die draadjes trekken: kan wel, maar... Een decoder aan de baan aansluiten en "klaar", dat klinkt wel lekker.
Maar kan wat ik wil wel een digitaal systeem?
- Ik heb drie stations met een eigen bedieningspaneel/hendels/enz. Die willen lokale wissels aansturen. Dus een bedieningpaneel moet DCC commando's kunnen geven. Moet dat via een bus (xpressnet in mijn multimaus geval) richting centrale of kan dat rechtstreeks?
- De bedieningspanelen moeten ook onderling gegevens uitwisselen. "A mag een trein naar B sturen" (enkelspoor). "C geeft de toestemming af aan B", "de trein is in C aangekomen", enz. Met arduino's zou ik dan een draadje "naar nul trekken" om het signaal over te geven. Kan dat met digitaal? Hoe? Eigenlijk wil ik dus ergens in het digitale systeem een setje variabelen bij gaan houden...
- Lichtsluizen moeten hun puls door kunnen geven. Daar hoor ik dan weer een aparte "s88" bus voor genoemd worden, naast de xpressnet bus. Oh, dan loopt het qua bedrading wel weer op. (Nee, ik hoef geen volledige detectie op de hele baan, trouwens).
- Als de bedieningspanelen dat soort dingen tegen elkaar willen zeggen vermoed ik dat daar een zelfgeprogrammeerd programma (op een laptop of raspberry) voor nodig heb. Dat moet dus dcc commando's uit kunnen sturen (naar de inrijseinen bijvoorbeeld). Maar.... kan je zoiets zelfgeprogrammeerds ergens aan de xpressnet-bus hangen? Of moet het de rol van de centrale ("multimaus nummer één") overnemen?
Enfin.... Met 100 meter draad en een stapeltje arduino's krijg ik het in ieder geval wel voor elkaar.
Voordat ik me daarop ga storten wil ik graag weten of het enigszins mogelijk zou zijn met een digitaal systeem.
Ik hoop dat ik wat ik wil enigszins bruikbaar heb opgeschreven... :D
Reinout
-
Reinout,
ik begrijp je verwarring, ik begrijp dat je digitaal tot nu toe alleen gebruikt om de loks aan te sturen. Ik weet het niet zeker, maar de multimaus weet weinig van de baantopology. Dus heb je een externe partij nodig om alles te regelen (Koploper, iTrain etc) of je moet die kennis gaan inbouwen in de keten van arduino's. In dat laatste geval heb je een probleem hoe je de Multimaus informeert dat hij een lok moet afremmen en stoppen, Wat je wilt om blokbeveiliging te implementeren.
Ik ben zelf nu ook druk bezig om Arduino's te koppelen, daarvoor ben ik de Canbus gaan gebruiken. Zie dit draadje https://forum.beneluxspoor.net/index.php?topic=79241.msg3221898725#msg3221898725 (https://forum.beneluxspoor.net/index.php?topic=79241.msg3221898725#msg3221898725), het is nog niet klaar, ik sta op het punt om ook de bezetmelders te distribueren over een 5tal Arduino's (ik gebruik Koploper voor de coordinatie).
Mijn uiteindelijk doel is om alle informatie stromen (wisselaansturing, seinaansturing, bezetmelders) over de Canbus te laten lopen en via 2 interfaces (DCC interface en S88 interface) te koppelen aan het DCC domein en uiteindelijk met Koploper. Hierdoor kan ik de koppelingen heel kort houden om storing te voorkomen.
Groet Meino
-
Er zijn vele wegen naar Rome......
Je kunt het aantal draden tussen de verschillende arduino's verminderen door er een bus voor te gebruiken.
Zoals je kon lezen bijvoorbeeld CAN-bus.
Ikzelf heb besloten het meer standaard te houden en daarom Loconet te gaan gebruiken.
Het handige daarvan is dat het bi-directioneel is + je hebt niet perse een centrale nodig om heen en weer te communiceren. (zie loconet-standalone draadje hier op bnls)
In de 'arcomoradinges' zit "ARLOCO" shield kitje waarmee je voor weinig Loconet kunt gaan praten op je arduinos.
Zuiver gezien heb je maar twee aders voor nodig - maar de standaard Rj12 stekkers en kabels kosten niet genoeg om van de standaard af te wijken.
Je kunt daarmee melders maken (en met de callback functies van de bibliotheek) ook weer op reageren (op dezelfde of een andere arduino). Ik gebruik dat nu voor de bezetmeldingen op een bedieningpaneel (met een custom Arloco-versie).
In de loconet-library zitten ook berichten om een switch-bericht te sturen (rechtdoor/afbuigend) of daar naar te luisteren (en dus te schakelen). Je zou je huidige DCC arduinos om kunnen zetten naar Loconet arduinos - maar dat heeft als nadeel dat je niet meer met de multimaus kan schakelen. Daarom heb ik daar niet voor gekozen.
Ik wil daarom gaan proberen om op een arduino mega zowel de loconet-library als de xpressnet-client library te combineren.
Zodat een melding van loconet een commando op xpressnet veroorzaakt
"als melder 123 actief, dan wissel abc op afbuigend"
Deze bevat dan de logica (melder 123 = switch abc) en verder niks
En dan is het alleen nog een kwestie om op de juiste momenten wel/niet de melding te sturen op de loconet-bus
Enige onzekere factor daarin is dat ik niet weet of de twee libraries elkaar bijten. Afzonderlijk heb ik beide al aan de praat gehad (dus als multimaus-slave en als loconet-output). Maar nog niet de tijd gevonden om beide te combineren.
In het ergste geval ga ik het op twee losse arduinos draaien die het via I/O pinnen aan elkaar doorgeven.
Maar zoals gezegd - er zijn nog veel andere manieren denkbaar, dat is het leuke van de hobby :-)
Ik ga in ieder geval volgen wat je bedenkt, want je kan mij wellicht ook weer op idee-en brengen.
Remco.
-
Meino: ik had gezien dat je met een CAN-bus bezig was, maar ik heb het wat langs me heen laten gaan omdat ik me afvroeg of het voor mij van toepassing was. Ik zal nog eens wat beter kijken :) Misschien is het wel precies wat ik nodig heb.
Qua optrekken/afremmen: NEEN met hoofdletters :D Ik rij zelf, niet de computer. Zoiets als een lichtsluis is alleen om een puls te geven richting een "bloktoestel", net zoals in het echie bij het blokstelsel waarmee ik aan de gang wil. Volledige spoorbezetmelding, da's veel te nieuwerwets. En zelfrijdende treinen al helemaal.
Zo'n scheiding van systemen (info via CAN-bus, aansturing via DCC) zoals je voorstelt vind ik ook wel aantrekkelijk klinken. Stel nou dat ik al dat CAN spul richting een raspberry pi laat lopen. Daar programmeer ik dan wel wat voor. Die wil dan DCC commando's naar de seinen en wissels geven. Hoe koppel ik dat nou? Ik ga er van uit dat m'n multimaus nog steeds de baas/centrale is. Heb ik dan een raspberry-naar-expressnet koppeling nodig?
Reinout
-
Remco: loconet, daar heb ik nog niet naar gekeken. "Bi-directioneel" en "geen centrale nodig voor communicatie" klinkt aardig.
Het "loconet standalone" draadje, daarmee bedoel je dit oude draadje uit 2009 (https://forum.beneluxspoor.net/index.php?topic=18366.0)? Ik zal het eens doornemen.
Voor de zekerheid: loconet bedoel je in dit geval als alternatief voor bijvoorbeeld een CAN-bus?
Aan xpressnet zit ik niet vast. Ik gebruik de muizen omdat ze goedkoop zijn en omdat er een fysieke draaiknop op zit en omdat het handregelaars zijn. Wissels stuur ik er (nog) niet mee aan: daarvoor zijn schakelaartjes veel handiger :)
Ik neem aan dat het daadwerkelijk commando's sturen naar de wissels "gewoon DCC" is en niet "expressnet"?
Reinout
-
Reinout
Heb je die koppeling met DCC nodig?
Ik kreeg de indruk dat je de wissels via de Arduino en een hefboompje bediende. Je kunt dan ook de Arduino code de seinen laten bedienen, of wil je op de Multimaus de wissels en seinen bedienen?, Ik kreeg de indruk dat je dat niet wilde. Dus als je de seinen en wissels op de klassieke manier wilt bedienen - met de hefboompjes, dan heb je daarvoor geen DCC koppeling nodig. Die Rasberri-Pi kun je met de zelfde interface kaartjes (als die ik gebruik voor de Arduino) ook aan de Canbus koppelen. Alleen zul je dan zelf een bibliotheek moeten vinden of ontwikkelen, Ik kan je wel mijn bibliotheek geven die ik gemaakt heb voor mijn Home-brew protocolletje. Met de Canbus kun je een simpel en betrouwbaar netwerk van gekoppelde Arduino's en Rasberry-Pi maken, wat los staat van de Multimaus.
Mocht je de centrale (Multimaus) toch informatie willen verstrekken dan kun je daarvoor best expressnet gebruiken, daar zijn ook wel bibliotheken voor te vinden. Maar ik krijg het gevoel dat je dat nu nog niet nodig hebt.
Groet Meino
-
Reinout,
nog even een opmerking over Loconet. Ik ben daar niet aan begonnen omdat het een zeer uitgebreid protocol is, gedefinieerd door Digitrax, en voor mij te uitgebreid was, het meeste had ik niet nodig. Verder een canbus kaartje koop je voor een paar euro, terwijl Loconet spul gelijk andere prijzen heeft. Loconet heeft het voordeel dat ook het DCC signaal over de kabel wordt gedistribueerd voor remote boosters en verder zit op de kabel ook een 12v voeding. Aangezien ik zelf >40jr IT werk achter de rug heb is het programmeren voor mij geen probleem.
Vandaar dat ik het goedkoop en simpel houd door direct met Canbus te werken. Ook een protocol zonder centrale, ik heb zelfs het gevoel dat de datalijnen van Loconet ook Canbus zijn. Marklin gebruikt ook Canbus als koppeling. Verder heb je nog de Cbus van MERG.
Groet Meino
-
Die koppeling met DCC? Hoofdreden waarom ik daarnaar informeer is omdat het me mogelijk flink kabels bespaart om bijvoorbeeld de inrijseinen aan te sturen. En om eventueel makkelijk standaard DCC-accepterende componenten te gebruiken.
Maar als ik alle arduinootjes onder en boven de baan met één CAN-bus kan verbinden.... Dat is misschien wel zo makkelijk. In principe mag het van mij helemaal los staan van DCC. DCC is dan voor de loks, en ik kan de hoeveelheid draden beperken door een CAN-bus.
Reinout
-
Reinout
Dat is precies de reden dat ik met de Canbus aan de gang ben gegaan.
Groet Meino
-
Ik heb zonet op aliexpress maar gelijk wat klikkie-klikkie gedaan voor mcp2515 CAN bus dingetjes en ook voor wat van die dc/dc converters naar 5v voor de aansturing van de servo's.
Binnenkort1 ga ik aan het experimenteren!
Reinout
1 Voor bepaalde ruime waardes van "binnenkort"
-
Beetje mosterd na de maaltijd : ik bedoelde dit draadje over loconet zonder centrale : https://forum.beneluxspoor.net/index.php?topic=88405.0
Remco.
-
Reinout,
Persoonlijk zou ik niet voor de CAN-bus gaan, want behalve Meino is er verder niemand die met de CAN-bus werkt (ik heb niets tegen Meino als persoon). Persoonlijk zou ik voor loconet gaan. Doordat jij de besturing van je seinen en wissels los wilt van je treinbesturing, kun je de buitenste twee draden van de 6 polige kabel voor voeding gebruiken. Maar het grote voordeel is dat zodra je de volgende stap ooit gaat doen (automatiseren via bv iTrain) je de hardware voor het aansturen van de wissels/seinen al hebt liggen en deze ook begrepen word. Dat het loconet protocol ook toestaat om treinen aan te sturen is in het protocol opgenomen als een van de mogelijke commando's. Deze gebruik je gewoon niet. Als je naar CAN-bus gaat zul je toch echt je eigen protocol moeten bedenken en kom je ook ergens bij de gestripte versie van loconet uit.
Gezien je baan hoop ik dat je met reflectie lichtsluizen (tussen de dwarsliggers) gaat werken, want anders zou ik toch gaan voor 'nieuwerwetse' (maar o zo betrouwbare) stroomdetectie.
Het prijsverschil tussen een CANbus module en een loconet interface zal niet al te groot zijn. Het enige is dat een loconet interface niet op een print zit. Die wil ik dan wel voor je ontwerpen en in China laten maken (wil er voor een toekomstig project toch een aantal hebben).
Groet,
Gerard van der Sel.
-
Hoi,
Ik zou ook niet voor een CAN-bus gaan. Ik zou zeker voor een XpressNet-oplossing of LocoNet-oplossing gaan. Zelf ben ik nog aan het experimenteren met een stellpult via XpressNet. Op internet zijn een paar Fransen en Tjechen te vinden die met een Arduino via XpressNet een Stellpult / seintableau de wissels en seinen aansturen. De voorkeur voor XpressNet zou ik hebben omdat je nu al met de multimaus bestuurt.
Een aantal opties:
- LocoNet: Met LocoNet heb je een compleet los systeem naast je multimaus-centrale. Dus voor je wissels, seinen en schakelbord / seintableau een extra kabel voor het LocoNet tussen deze onderdelen. Dus onder de gehele baan.
- XpressNet: Je maakt gebruik van je huidige Multimaus-systeem. Standaard wissel en seindecoders DCC-protocol, deze kunnen gewoon aan je bestaande DCC-voedingsleiding. Sein- en schakeltableau onder XpressNet. Extra XpressNetkabel tussen je multimauscentrale en het seintableau.
Bij alle twee de opties is later koppelen aan de PC een eitje.
Groet Ronald.
-
- Ik heb drie stations met een eigen bedieningspaneel/hendels/enz. Die willen lokale wissels aansturen. Dus een bedieningpaneel moet DCC commando's kunnen geven. Moet dat via een bus (xpressnet in mijn multimaus geval) richting centrale of kan dat rechtstreeks?
Yep, via XpressNet. Er zijn vele libraries die je kunnen helpen.
- De bedieningspanelen moeten ook onderling gegevens uitwisselen. "A mag een trein naar B sturen" (enkelspoor). "C geeft de toestemming af aan B", "de trein is in C aangekomen", enz. Met arduino's zou ik dan een draadje "naar nul trekken" om het signaal over te geven. Kan dat met digitaal? Hoe? Eigenlijk wil ik dus ergens in het digitale systeem een setje variabelen bij gaan houden...
Hier kun je gewoon wisseladressen voor gebruiken. Met tableau A zet je wisseladres 101 op Afbuigend hetgeen betekent "blok bezet". De het andere tableau zit ook op Xpressnet, leest ook mee, ziet dit bericht langskomen en onthoudt in zijn eigen geheugen dat het blok gezet is, totdat commando wisseladres 101 Rechtdoor komt, dan is het weer vrij.
- Lichtsluizen moeten hun puls door kunnen geven. Daar hoor ik dan weer een aparte "s88" bus voor genoemd worden, naast de xpressnet bus. Oh, dan loopt het qua bedrading wel weer op. (Nee, ik hoef geen volledige detectie op de hele baan, trouwens).
Xpressnet heeft ook ruimte voor bezetmelding, dus die kun je daar ook op aansluiten.
- Als de bedieningspanelen dat soort dingen tegen elkaar willen zeggen vermoed ik dat daar een zelfgeprogrammeerd programma (op een laptop of raspberry) voor nodig heb. Dat moet dus dcc commando's uit kunnen sturen (naar de inrijseinen bijvoorbeeld). Maar.... kan je zoiets zelfgeprogrammeerds ergens aan de xpressnet-bus hangen? Of moet het de rol van de centrale ("multimaus nummer één") overnemen?
Gewoon de commando's via XpressNet versturen. Jouw digitale centrale maakt daar een heel mooi DCC-signaal ;)
Let wel: Bij XpressNet heb je maximaal 31 devices die op de bus kunnen zitten!
-
Ik wil toch nog even reageren.
Ik zelf rij automatisch met Koploper, en die genereert DCC commando's voor de wissels en de seinen. Maar mijn ervaringen daarmee zijn niet onverdeeld. De DCC lijn is zeker ook niet ongevoelig voor storing veroorzaakt door de loks die over de baan rijden. Dat wordt voor een deel gecompenseerd omdat de DCC opdrachten 5-20 keer herhaald worden (hangt van je centrale af) onder het motto dan wordt waarschijnlijk tenminste een commando herkent. Ik weet dit omdat ik met Arduino's werk die aan de DCC bus hangen. Dat is vermoedelijk ook de reden waarom Loconet het DCC signaal ook op de kabel heeft, zodat je op de Loconethubs een schoon DCC signaal binnen krijgt en niet afhankelijk bent van de kwaliteit van het signaal op het spoor. Ik heb dat voor een deel opgelost door ze direct achter de centrale te hangen (voor de boosters) en niet aan het spoor en verder heb ik wat filters in de code ingebouwd om niet op spikes in het signaal te reageren.
Over de Canbus, ik ben niet de enige, Marklin gebruikt het, en verder MERG (https://www.merg.org.uk) voor hun CBus implementatie. Het verschil is dat ik zelf een protocolletje heb bedacht en geimplementeerd. Dat vond ik zelf het makkelijkst, gewoon simpel en alleen wat ik zelf nodig heb. Wat dat betreft ben ik net als Reinout, ik had een simpele oplossing nodig om Arduino's te koppelen en geen enkele behoefte om dat via de Centrale , DCC, xpressnet en koploper te laten lopen. Ik gebruik Koploper, dus ik heb wel een terugkoppeling met Koploper, maar dat doe ik met een S88 interface voor de bezetmeldingen. Overigens om een verzoek aan Koploper te sturen om een wissel te verzetten (voor die wissels die door Koploper worden gecontroleerd) doe ik dat ook via de S88 bus, door een pseudo bezetmelder (drukknop op mijn schakelbord) te activeren die dan in Koploper met een speciale actie de omzetting uitvoert. Hierdoor kan ik in Koploper extra checks doen om te voorkomen dat een wissel omgezet wordt als er een trein op rijdt of als blokken al bezet zijn voor een route.
Groet Meino
-
Beetje mosterd na de maaltijd
Nee hoor, ik heb m'n bordje nog niet braaf leeggegeten, dus die link naar het draadje was welkom.
... niet voor de CAN-bus gaan ...
:) Kijk, meer input. Op deze manier krijg ik m'n hoofd nog wel eens om de materie heen. En heb ik weer spul waar ik naar kan googlen.
Mocht het geen CAN worden dan kan ik vast andere leuke dingen met de CAN-printjes doen. De verschillende ledstrip-arduino's-waar-ik-nog-mee-bezig-ga aan mekaar lussen ofzo.
Gezien je baan hoop ik dat je met reflectie lichtsluizen (tussen de dwarsliggers) gaat werken, want anders zou ik toch gaan voor 'nieuwerwetse' (maar o zo betrouwbare) stroomdetectie.
Reflectie lichtsluizen, inderdaad. Zo'n klein aliexpress printje. Het past bij m'n voorbeeld als het alleen een "punt" detectie is i.p.v. een baanvakdetectie.
Met tableau A zet je wisseladres 101 op Afbuigend hetgeen betekent "blok bezet". De het andere tableau zit ook op Xpressnet, leest ook mee, ziet dit bericht langskomen en onthoudt in zijn eigen geheugen dat het blok gezet is, totdat commando wisseladres 101 Rechtdoor komt, dan is het weer vrij.
Wisselstanden als variabelen gebruiken :) Ja, dat is een leuke optie.
Let wel: Bij XpressNet heb je maximaal 31 devices die op de bus kunnen zitten!
Die 31, dat gaat wel goed.
Bedankt allemaal voor de info!
Reinout
-
Hallo Meino,
Over de Canbus ...
Het verschil is dat ik zelf een protocolletje heb bedacht en geimplementeerd. Dat vond ik zelf het makkelijkst, gewoon simpel en alleen wat ik zelf nodig heb. Wat dat betreft ben ik net als Reinout, ik had een simpele oplossing nodig om Arduino's te koppelen ...
De CAN-bus is bij mij ook zeker nog niet van het lijstje opties verdwenen :) Zelf een eenvoudig protocolletje in elkaar klussen gaat me wel lukken. Uitdaging is de C code omdat ik Python gewend ben. (Oh ja, ik had ook nog wat nodemcu printjes waar micropython op kon... TODO)
Ik neem rustig alle info in me op. Uiteindelijk zal de keus bij mij wel weer van wat toeval afhangen :)
Reinout
-
@Reinout
Ik kampte met een soortgelijk probleem. En ik heb uiteindelijk gekozen voor een Rs485 bus met eigen protocol. Met Can bus ben je ook heel erg goed af omdat can bus er altijd voor zorgt dat je berichten aankomen waar ze horen aan te komen.
Zelf koos ik zonder CAN omdat ik iets meer vrijheid wilde en iets minder printen wilden fabriceren. Ik heb (bijna, work in progress) terugmelders en wissel servo aansturingen over de RS485 bus lopen. Volgens mij als je met loconet of express net ga spelen, dan moet je meer doen/kopen qua elektronica en voor mij was dat een turn off.
Ik heb zelf straks een raspberry in gebruik met een zelf geschreven processing programma. In dat programma kan ik een schema van m'n baan tekenen en items als wissels, bezet melders en geheugencellen zetten. Een geheugencel is bij mij slechts een wisselstraat met ingestelde posities.
Items die in mijn programma staan, hebben een ID en kunnen in het 'echt' wel of niet op de baan bestaan. Een knopje op mijn baan komt overeen met een geheugencel op mijn Rpi. Als ik op het knopje druk, stuur ik deze informatie naar de Rpi en de Rpi stuurt daarop een broadcast instructie uit naar alle arduino's met de desbetreffende wissel IDs die geschakeld moeten worden.
Zo kan ik dus deze met schakelpaneel van arduino 1 een wissel (of wisselstraat) schakelen die aan arduino 4 en 3 hangt. En de centrale is meteen up-to-date. Op dezelfde manier stuur ik de bezetmelders door naar de RPI. Op het moment heeft dat alleen een grafische toepassing, maar het gaat meer kunnen.
Waar ik naar toe wil, is het volgende: Ik wil op de RPI op een gebruiksvriendelijke manier een soort dienstregeling maken. Dan schakel ik bijvoorbeeld een wissel of een hele wisselstraat dan laat ik een trein rijden, dan laat ik hem voor 2s toeteren wanneer hij bezetmelder 3 passeert en ik laat de trein stoppen als hij bij bezetmelder 8 is. En dan kan ik hem na een minuut weer terug laten rijden.
De treinen stuur ik aan met een arduino-DCC doorgeefluik. De Rpi stuurt een bericht naar deze arduino om een trein te laten rijden. Ik ben hier nog mee bezig en ik heb al treinen kunnen laten rijden adhv van m'n telefoon met een standaard bluetooth serial app. Ik ga zelf een rijregelaar maken die ook via bluetooth werkt.
Waarom doe ik het zo? Vrijheid, geen beperkingen, je hoeft geen half-complexe printen in elkaar te bakken, geen 3e partij software en je hoeft niet uren tijd te besteden aan het uitpluizen van een bestaand protocol (Hoewel je met 3rd party libraries dit niet perse hoeft te doen).
Natuurlijk doet koploper het beter dan mijn programma maar ook ik heb niet een conventioneel bloksysteem maar strategisch geplaatste bezet melders. En ik weet 100% dat ik met iets tegen de lamp loop als ik Loconet, XpressNet, koploper of Itrain of iets anders bestaands zou gaan gebruiken. Ik wil ook wissels kunnen open rijden en ik dacht dat niet elke programma daar cool mee was
Mijn gedachte gang was ook: Als je toch al arduino's en een communicatie bus heb liggen voor bezet melders waarom zou je dan je wissels met een aparte DCC decoder aansluiten? De infrastructuur ligt er al!
Om je Maus aan dit systeem te koppelen, zou je een met een arduino een DCC sniffer moeten maken, die je maus's dcc signalen decodeert en op de RS485 of Can bus zet. Zodat de arduino-DCC doorgeefluik het opnieuw naar DCC kan coderen en je treinen aanstuurt.
Het programma ziet er zo uit.
(https://i.imgur.com/UUb7uqM.png)
https://forum.beneluxspoor.net/index.php?topic=87366.msg3222003549#msg3222003549
Ik heb nog geen seinen en ontkoppel items gemaakt, dat staat ook nog m'n todo lijstje.
Ik wil eerdaags ook een video op youtube zetten met mijn telefoon en arduino aangestuurde treinen.
Het enige wat ik je echt wil meegeven is je aan te moedigen in het gebruik van de CAN bus zodat je 100% zeker bent dat je niet tegen de lamp loopt met 'andermans beperkingen'.
-
Maar nu: nu wil ik blokbeveiliging aanleggen richting het volgende station (Duits Streckenblock).
Maar dat is er al, Streckenblock met sturing voor bediening en seinen etc op loconetbasis (http://fremo-block.sourceforge.net/Loconet2Block/index.html). De atmega programmeer je als ware het een arduino.
Dirkjan
-
Mocht je de site nog niet kennen, hier wat info over de Duitse blokbeveiliging:
http://www.stellwerke.de/grund/seite1_a.html
-
Reinout
mocht je behoefte hebben aan wat voorbeeldcode, stuur me maar een PB dan kun je wel een zip bestandje met code van mij krijgen.
Groet Meino
-
Hoi,
Ik zelf rij automatisch met Koploper, en die genereert DCC commando's voor de wissels en de seinen.
Dat doet Koploper niet maar hij geeft commando's naar je DCC-centrale. Die zet het signaal op de baan / leidingen.
Maar mijn ervaringen daarmee zijn niet onverdeeld. De DCC lijn is zeker ook niet ongevoelig voor storing veroorzaakt door de loks die over de baan rijden. Dat wordt voor een deel gecompenseerd omdat de DCC opdrachten 5-20 keer herhaald worden (hangt van je centrale af) onder het motto dan wordt waarschijnlijk tenminste een commando herkent.
Daarvoor heb je ook een voedingsleiding of ringleiding onder je baan om de storingen te minderen.
Ik weet dit omdat ik met Arduino's werk die aan de DCC bus hangen. Dat is vermoedelijk ook de reden waarom Loconet het DCC signaal ook op de kabel heeft, zodat je op de Loconethubs een schoon DCC signaal binnen krijgt en niet afhankelijk bent van de kwaliteit van het signaal op het spoor.
Als het goed is hangen die dingen ook niet direct aan het spoor maar aan de centrale voedingsleidingen.
Over de Canbus, ik ben niet de enige, Marklin gebruikt het, en verder MERG (https://www.merg.org.uk) voor hun CBus implementatie. Het verschil is dat ik zelf een protocolletje heb bedacht en geimplementeerd.
Nope, in wezen is ook het XpressNet ook een soort van CAN-bus. ;) Alleen het protocol is geschreven door Lenz ;D
En ik weet 100% dat ik met iets tegen de lamp loop als ik Loconet, XpressNet, koploper of Itrain of iets anders bestaands zou gaan gebruiken.
Kan. Maar alles wat je hiervoor over je systeem geschreven hebt had ook gewoon met standaard protocollen foutloos gewerkt zou hebben. Het zijn geen echte bijzondere wensen. Je kan het zelfs zonder computerbesturing (LocoNet-systeem) doen. Het blijft wel zo dat als je bijvoorbeeld standaard decoders, bezetmelders of andere zaken koopt je afhankelijk bent van de ontwerper van het geheel. Met je eigen systeem ben jij de enige zwakke schakel. Ook daarbij blijf je afhankelijk van "bestaands" alleen mogelijk wat minder.
Om je Maus aan dit systeem te koppelen, zou je een met een arduino een DCC sniffer moeten maken, die je maus's dcc signalen decodeert en op de RS485 of Can bus zet. Zodat de arduino-DCC doorgeefluik het opnieuw naar DCC kan coderen en je treinen aanstuurt.
Dan ben je 2 of 3 keer aan het vertalen. De kans dat daar iets fout in gaat is zeer groot. :) Dus zo min mogelijk vertalen is beter voor de communicatie.
Het enige wat ik je echt wil meegeven is je aan te moedigen in het gebruik van de CAN bus zodat je 100% zeker bent dat je niet tegen de lamp loopt met 'andermans beperkingen'.
Ook met het gebruik van Arduino's en de CAN-bus loop je tegen andermans beperkingen aan. Ook de Arduino en CAN-bus is door "iemand anders" bedacht en ontworpen met alle bijhorende eigenaardigheden en beperkingen.
Groet Ronald.
-
En als je toch met loconet zou willen beginnen dan adviseer ik de Loconet bouwpakketjes van Arloco (4,65 euro)
(https://www.arcomora.com/wp-content/uploads/2017/09/arlocoprintbestukt3-768x823.jpg)
-
Dan ben je 2 of 3 keer aan het vertalen. De kans dat daar iets fout in gaat is zeer groot. :) Dus zo min mogelijk vertalen is beter voor de communicatie.
Ook met het gebruik van Arduino's en de CAN-bus loop je tegen andermans beperkingen aan. Ook de Arduino en CAN-bus is door "iemand anders" bedacht en ontworpen met alle bijhorende eigenaardigheden en beperkingen.
Groet Ronald.
Ik gebruik zelf dan ook geen helemaal geen CAN bus en geen multimaus;) Hoewel die maus wel verleidelijk is.
Ik heb trouwens twee vraagjes. Kan zo'n maus ook als centrale fungeren? Kan je een maus over Loconet was het? instructies geven om een trein aan te sturen?
Zo'n Z21 centrale ding met loconet aansluiting, snifft die ook niet de DCC signalen van de maus??
-
hoi,
Ik gebruik zelf dan ook geen helemaal geen CAN bus en geen multimaus;) Hoewel die maus wel verleidelijk is.
Nee, waarschijnlijk de I2C-bus van de Arduino ;)
Ik heb trouwens twee vraagjes. Kan zo'n maus ook als centrale fungeren? Kan je een maus over Loconet was het? instructies geven om een trein aan te sturen?
De multimaus is de centrale en ook meteen de rijregelaar. De standaard versterker Roco 10764 / 10761 die bij de eerste setjes zaten waren de versterkers. En de Multimaus praat volgens het XpressNet-protocol. Wil je wat meer weten over de multimaus: Aansluiting en werking ROCO 10764 o.a. als booster (https://forum.beneluxspoor.net/index.php?topic=13491.0)
Zo'n Z21 centrale ding met loconet aansluiting, snifft die ook niet de DCC signalen van de maus??
Je bedoelt de zwarte Z21 en niet de witte z21(start). Deze heeft gewoon zoveel aansluitingen dat via de XpressNet-aansluitingen de multimaus aangesloten is. De zwarte Z21 heeft een CAN-bus (Z-CAN-protocol), een LocoNet-aansluiting, XpressNet-aansluitingen, B-bus (zie versterker 10764 verhaal), R-Bus (Terugmelding Roco) en een DCC-Sniffer.
Groet Ronald.
-
Ik wil toch nog even reageren.
Ik zelf rij automatisch met Koploper, en die genereert DCC commando's voor de wissels en de seinen.
Met deze opmerking zaai je bij de beginnende rijder verwarring cq een verkeerd beeld.
Als ik dit lees vraag ik me (met respect) af of je wel goed weet waar je het over hebt. Sorry!
Koploper genereert geen DCC signaal maar (in dit geval waarschijnlijk) LocoNet protocol commando’s. Je centrale maakt daar een baan-signaal van, dus DCC / Motorola/ enz.
M.vr.gr. Marco
-
Misschien was mijn formulering wat ongelukkig, Koploper praat met de centrale, via het protocol behorende bij die specifieke centrale (in mijn geval P50), die dan in opdracht van Koploper het bedoelde DCC commando op het spoor zet.
Misschien is dit wat duidelijker.
Groet Meino
-
Ik denk dat ik me maar terugtrek uit deze discussie, want die gaat een kant op die me niet bevalt. Mochten er nog vragen zijn over de zaken waar ik misschien wel verstand van heb, tenminste dat denk ik wel, dan ben ik wel via een PB te bereiken.
Groet Meino
-
Meino: bemoei je je gerust nog met de informatieuitwisseling, hoor. Iemand die z'n eigen protocol ontwerpt en programmeert weet per definitie best goed waar 'ie mee bezig is :) En de CAN-bus modules zijn inmiddels vanuit China onderweg.
Marco:
Met deze opmerking zaai je bij de beginnende rijder verwarring cq een verkeerd beeld.
Bij het zien van zo'n opmerking gaan m'n moderator-nekharen overeind staan, want het is meestal het openingssalvo van een anderhalf pagina durende discussie tussen drie experts die allemaal hun eigen definitie ergens van hebben. Waarna de beginnende rijder al rap afhaakt. Al een paar keer gezien.
Waar je gelijk mee hebt is dat het wèl belangrijk is door te hebben hoe het nou zit tussen computerprogramma en DCC centrale. Vooral omdat precies daar bij mij initieel nogal wat vragen zaten :D Kennelijk gaat dat bij Meino via een apart protocol (P50), ik neem aan dan via een USB draadje ofzo. Vaak hebben centrales ook een eigen aansluiting voor een computer.
Maar gezien jouw opmerking kan je een computerprogramma ook (via een adapter) met loconet of expressnet laten praten. Data ophalen, commando's wegsturen. Zonder dat het computerprogramma gelijk de centrale-rol over hoeft te nemen. Hij kan gewoon op de "bus" gaan zitten.
Reinout
-
Hoi,
Maar gezien jouw opmerking kan je een computerprogramma ook (via een adapter) met loconet of expressnet laten praten. Data ophalen, commando's wegsturen. Zonder dat het computerprogramma gelijk de centrale-rol over hoeft te nemen. Hij kan gewoon op de "bus" gaan zitten.
Eigenlijk doen alle "computerinterfaces" zonder centrale mogelijkheden het op die manier. De bekendsten zijn S88XpressNetLi (https://forum.beneluxspoor.net/index.php?topic=10553.msg158472#msg158472) van Rosoft / Karst Drenth, de Lenz LI10xx interface, de Rosoft LocoNet interface (http://www.rosoft.info/LocoNet-Interface.html) of Hans deLoof Locobuffer. Voor de CAN-bus heb je CC-Schnitte (http://can-digital-bahn.com/modul.php?system=sys10). Aangezien XpressNet en LocoNet behoorlijk goed vrij gedocumenteerd zijn kan je daar heel goed zelf wat voor in elkaar frotten. Van interface P50(x)-protocol voor Marklin (en eigenlijk alle Intellibox-varianten) is ook nog genoeg info te vinden om zelf mee te doen.
Het praten tussen de interface en de computer is meestal ook weer een standaard protocol (zoals XpressNet (LAN), LocoNet, P50(x)). Dan kan je namelijk gemakkelijk koppelen aan bestaande (en gebruiken van) programma's. Maar je kan natuurlijk altijd iets zelf programmeren ;)
Hij kan gewoon op de "bus" gaan zitten.
Daarom ga ik voor mijn stellpult voor een XpressNet-oplossing. De Arduino hoeft dan alleen maar commando's op de X-bus te zetten. De rest wordt dan geregeld door de centrale. Het voordeel is dat voor XpressNet goede biebs voor de Arduino zijn. En ook genoeg voorbeelden van seintableaus. Alleen nog niet helemaal mijn naar mijn wens. Ik moet dat nog iets aanpassen. Maar dat gaat wel komen.
Groet Ronald.
-
Nee, waarschijnlijk de I2C-bus van de Arduino ;)
Oh ja, I2C heb je ook nog. Daar zou ik ook ongeveer nog wel mee uit kunnen :) Mits ik de rest binnen een station met draadjes doe.
Als het goed is hangen die dingen ook niet direct aan het spoor maar aan de centrale voedingsleidingen.
Even ter geruststelling: ik heb inderdaad twee dikke kabels onder de hele baan door lopen voor de DCC.
Qua compu-naar-dcc:
Eigenlijk doen alle "computerinterfaces" zonder centrale mogelijkheden het op die manier. De bekendsten zijn ....
Bedankt, dan kan ik die apparaten ook wat beter inschatten qua wat ze doen.
Reinout
-
hoi,
Oh ja, I2C heb je ook nog. Daar zou ik ook ongeveer nog wel mee uit kunnen :) Mits ik de rest binnen een station met draadjes doe.
Een aantal fabrikanten (zoals Märklin, Arnold en Uhlenbrock) gebruikten dat bussysteem voor het koppelen van accessoires (keyboards, memory's, computerinterfaces, rijregelaars) aan hun oudere centrales (zoals de Märklin 6020 en 6021 en de Uhlenbrock IB I in diverse versies).
Nog even een nabrander voor bas ;)
Ik wil ook wissels kunnen open rijden en ik dacht dat niet elke programma daar cool mee was
Meestal heeft een programma er geen moeite mee. Of een wissel nu wel of niet schakelt. Dat merkt het programma toch niet. Hij geeft alleen een commando. Als je gepolariseerde wissels (https://encyclopedie.beneluxspoor.net/index.php?title=Puntstuk_van_het_wissel_polariseren) gebruikt in de baan heb je meer problemen met kortsluiting van je wissel als je hem open rijdt. Daar heb je dan meer last van. Ook daar is een oplossing voor door geen polariseerde wissels te gebruiken.
Groet Ronald.
-
Of je rijdt 3-rail 8)