zaterdag 30 september 2023

Automatisch rijden(4), richting

 In deel 3 ging het over het analyseren van de baan. Dat kan dus. Automatisch vanuit een melder kan worden bepaald hoe de verbindingen zijn naar andere melders. In het baanontwerp is dat een vast gegeven, een railstuk heeft dan altijd een aansluiting waar de trein het railstuk binnenkomt en een aansluiting, of meerdere aansluitingen bij wissels ofzo, waar de trein het railstuk weer verlaat. Dat is in een links en rechts oriëntatie vast te leggen, of zoals werkelijk bij het baanplan van WMapp in een aansluitnummer van 1 totenmet 8. Waarbij het lagere nummer altijd het ingaande en het hogere nummer het uitgaande aansluitpunt is. Ja, beste lezer, nu wordt het ingewikkeld.

Maar wel vast dus. Maar nu die trein, die is gezien de richting niet vast, hij kan vooruit of achteruit rijden en hij kan met zijn neus naar links of naar rechts staan. Verschillende rijrichting dus afhankelijk van deze twee parameters. Ach bij een heen- en weer baanplan redelijk constant, trein staat altijd met zijn neus dezelfde kant op, maar is er een ovaal of rondje of keerlus? Of draaischijf? Dan wisselt deze stand. 

Stand en richting kunnen bij start van het automatisch rijden worden ingegeven in WMapp maar zijn daarna dynamisch en worden in het automatisch rijden proces aanpast. Trein kan keren in een opstelspoor, of wanneer de treinen elkaar hebben vastgezet, deadlock is daar een goed veel gebruikt Nederlands woord voor. 

Bij draaischijven en keerlussen kan de stand van de loc veranderen. 

Daar ben ik dus nu best wel even een paar dagen mee aan het stoeien geweest en denk daar de oplossing voor gevonden te hebben. 

Wordt vervolgt....

vrijdag 15 september 2023

Automatisch rijden (3); Trajecten

Een belangrijk verschil in WMapp met andere trein programma's  of centrales is dat de trajecten en mogelijke routes die een trein kan rijden, niet handmatig hoeven te worden ingegeven maar dat ze automatisch aan de hand van het getekende baanplan worden berekend. 

Zeker was dit even avontuur om goed werkend te krijgen, maar is uitgebreidt getest en werkt feilloos. Nog niet opgenomen in de huidige versie zoals te downloaden, omdat je er in dit stadium als gebruiker nog niks aan hebt. Als maker van WMapp zie ik dit zeker als het bereiken van een belangrijke mijlpaal in de ontwikkeling van het programma.

Een traject in WMapp is de railverbinding tussen twee melders. Een begin melder, waar komt de trein vandaan, en een eindmelder, waar moet de trein naartoe. De melder zelf is een of andere vorm van sensor of schakelaar die actief wordt als er een trein op de plek van de melder is. Bij het automatisch rijden wordt een trein waarvan de positie bekend is, dus het programma weet bij welke melder het staat, gestuurd op een traject waarvan de begin melder overeenkomt met de bekende positie van de trein. Het programma weet dan, wanneer de eind melder van dit traject actief wordt, de nieuwe positie van deze trein. 

Als voorbeeld, in het programma koploper zijn er meerdere schermen waarmee het baanplan kan worden getekend, een ander waarmee blokken in het baanplan kunnen worden gezet en aan de blokken kunnen meerdere melders worden aangewezen. 

In WMapp werkt het anders. In baanontwerp teken je het baanplan met railstukken. Recht, bocht, linkse of rechtse wissel en gelijkvloerse vaste kruising. Aan een recht of bocht railstuk kun je dan een melder toevoegen. Vanzelfsprekend moet de melder ook op de modelbaan op deze plek zitten.

Na het laden van een baanplan, baanplannen kunnen een naam krijgen en kunnen worden opgeslagen in je computer, gaat WMapp het baanplan onderzoeken. Hierbij wordt onder veel meer alle mogelijke trajecten bepaald.

In een traject kunnen een onbeperkt aantal railstukken worden opgenomen. Ook wissels en de stand van deze wissels om het traject te kunnen rijden. Wil WMapp een traject laten berijden, moet het traject vrij zijn. Gekeken wordt of er wissels zijn opgenomen in het beoogde traject die ook zijn opgenomen in andere trajecten die al, door een andere trein, worden bereden. Zo een traject kan dan niet gekozen worden. Een kruising in een traject wordt opgenomen als een blokkade met hetzelfde doel. 

Dit wordt automatisch door WMapp gedaan. Als gebruiker hoef je alleen maar de modelbaan te tekenen. 

Echt uniek in WMapp is de mogelijkheid om in het baanplan ongelijkvloerse kruisingen op te nemen. Een spoor wat over een ander spoor gaat of er onderdoor. Dit is iets anders dan de 'lagen' die je vaak vindt in andere trein programma's of centrales. In WMapp kun je behalve het 'actieve' railstuk ook een railstuk als brug, dus over het actieve railstuk, en een railstuk als tunnel, onder het actieve railstuk, opnemen. Wissels en al het andere waar je op moet kunnen klikken kunnen alleen in het actieve rail worden geplaatst. En voor het plaatsen van een brug of tunnel railstuk moet er ook een actief railstuk in dat vakje zijn. Een brug is altijd een railstuk over een actief railstuk, of een tunnel er onder door.

Dit geeft unieke  mogelijkheden. Zeker kan een baanplan veel realistischer worden getekend zonder de cryptische verwijzingen naar andere lagen. Maar ook het schaduwstation kan in het zelfde baanplan direct worden getekend en verbonden. 

Wordt vervolgt....

maandag 4 september 2023

Melders(2) IRrail Infrarood detectie voor K-rail.

Sensoren, (terug)melders kunnen op meerdere manieren worden gemaakt. Traditioneel kennen we de 'massadetectie' en 'stroomdetectie'. Bij beide methoden moet er van een stukje spoor  1 railstaaf  worden geïsoleerd. Bij massadetectie kan dan dit geïsoleerde deel vaak direct op een detector, een S88 module, worden aangesloten. Bij stroomdetectie is nog wat techniek nodig welke meet of er op het geïsoleerde deel stroom wordt gebruikt. Is dat zo dan wordt de melder actief.

Maar bij beide moet de rails uit de baan worden genomen en geprepareerd. Voor een baan in aanbouw zeker geen probleem, maar een bestaande baan met misschien al scenery is dit zonder sloopwerkzaamheden niet te doen. Ook bij voortschrijdend inzicht, de geplaatste melder zit op de verkeerde plek, of we zijn er een  vergeten is dit een probleem. 

Een melder die bij een bestaande baan zonder slopen kan worden ingezet is dan nodig. Twee methoden zijn populair. Met magnetisme, reedcontacten of HALLsensoren. En de tweede methode is met infrarood licht. 

Er zijn nog meer mogelijkheden, maar daar ga ik nu verder even niet op door.

Beide hebben voor en nadelen. Op de Houten beurs heb ik hall sensoren en IRreflectie sensoren in verschillende uitvoeringen bij me. 

De micro-reflectie sensor heb ik zo gemaakt dat deze tot wel 2cm voorbij rijdende treinen kan detecteren.  Maakt deze sensor wel erg gevoelig voor zonlicht.

Recentelijk heb ik een nog kleinere ir- reflectiesensor gemaakt. Slechts 4x14mm. Deze past tussen de bielzen van K-rails. En misschien ook wel andere railsystemen, dat heb ik nog niet uitgeprobeerd. 

Deze sensor heb ik maximaal ongevoelig gemaakt voor direct daglicht, heeft ook maar een beperkt bereik. Maar de sensor zit in het midden van de rails, waar de reflecterende, stroomafnemer van de locomotief op ongeveer 1mm afstand van de sensor overheen komt.  

De afstand tussen de bovenkant van de sensor en de bovenkant van de 'pukkel'  van de K-rails is ongeveer 1mm. En de sleper, stroomafnemer, onder loc is blank metaal wat heel goed reflecteert. De sleper is ook relatief lang zodat een over de melder rijdende  trein de melder lang bezet houdt. In vergelijking met een naast de baan geplaatse IR sensor of HALLsensor.  Het resultaat een zeer betrouwbare melding.

Wagens hebben doorgaans geen sleper. Door op de onderkant van de wagen een klein, niet zichtbaar, spiegeltje te plakken, kunnen ook deze de melder activeren.

vrijdag 25 augustus 2023

Automatisch rijden(2)

 Automatisch rijden gaat een hele serie worden, daar is toch wel heel veel over te overdenken en schrijven. Dit is dus deel 2. 

Deel 1 leert dat met het tekenen van een modelbaan in het baanontwerp en het opgeven van 1 werkelijke afstand tussen twee melders alle andere waardes te berekenen moeten zijn, en dus automatisch rijden mogelijk is. 

Beginnen met definities van wat begrippen:

  • Traject, dit is een stuk baan, rails, tussen twee melders. Een traject heeft dus een 'meldervan', waarvan  een trein komt en een 'meldernaar', waar die trein naar opweg is. Een traject heeft een onbeperkt aantal railstukken, rechte en kromme rails, wissels en kruisingen. Maar alleen het eerste en het laatste railstuk heeft een melder. Hoe de in het traject opgenomen wissels (draaischijf, lift of rolbrug) moeten staan wordt ook in de beschrijving van een traject opgenomen.
  • RailBlok, expres noem ik het geen blok omdat dan de vergelijking met blokken in andere modelspoor programma's  verwarrend wordt, een railblok bestaat uit aaneengesloten trajecten die allemaal geen wissels of andere railsplitsingen hebben. Een stuk baan met 1 of meerdere melders. Een opstelspoor van wissel naar een stootblok met 1 melder halverwege is dan dus een railblok maar geen traject. Heeft dat opstelspoor twee of meer melders dan is het een railblok met meerdere trajecten. Een parade spoor, lang stuk spoor waar treinen zich van hun beste kant kunnen laten zien, is een railblok en kan uit meerdere trajecten bestaan. Op een railblok kunnen meerdere treinen rijden mits deze wel allemaal dezelfde richting opgaan. Er zijn nog veel meer factoren die hierbij een rol spelen maar dat komt later aan de orde.
  • Route, is wat een trein gaat rijden. Van de ene plek naar de andere plek. Wordt samengesteld uit railblokken en trajecten. Routes kunnen automatisch worden gekozen, maar er komt ook een optie dat je voor bepaalde treinen specifiek routes kan opgeven. De railstukken met melders kun je in het baanontwerp een naam geven zodat ook handmatig routes kunnen worden aangemaakt als: " rij van inhetdorpstation naar opdebergstation".
Na het starten van WMapp, het laden van een andere baanplan of aanpassen daarvan, moet het baanplan worden geanalyseerd. Trajecten en railblokken moeten worden bepaald. Tijdens het automatisch rijden worden enorme hoeveelheden gegevens als locsnelheden, lengtes van trajecten en nog veel meer bepaald. Bij het afsluiten van WMapp  wordt dat automatisch opgeslagen voor de volgende sessie. Het kan meerdere sessies duren voordat alle waardes zijn bepaald. Maar uiteindelijk weet WMapp alles van je locs en het banenplan wat er maar te weten valt. 

Analyse van het baanontwerp begint met het maken van een lijst van alle melders in het ontwerp.  Alle melders in de lijst worden een voor een bekeken.
Een melder kan alleen geplaatst worden op een recht railstuk of een bocht. Een railstuk kan in 8 richtingen worden gedraaid en heeft twee aansluitingen naar andere railstukken. De mogelijke aansluitingen worden genummerd 1 tm 8. De 'vanaansluiting', waar het traject begint, wordt bepaald, de 'naaraansluiting' wordt bepaald en gebruikt voor het vinden van het aansluitende railstuk. Van het gevonden aansluitende railstuk wordt de naaraansluiting bepaald welke op zijn beurt weer wordt gebruikt voor het vinden van het volgende aansluitende railstuk enzo door. Telkens wordt gekeken of het aansluitende railstuk een melder heeft. Is dat zo dan is het traject gevonden en wordt opgeslagen in de lijst met trajecten, en gaan we verder met de volgende melder in de lijst melders. 
Bovenstaande is al gerealiseerd en werkt foutloos. Maar alleen voor trajecten die alleen uit rechte en gebogen rails bestaan. 
Wordt als aansluitend railstuk een wissel, of ander 'railsplitsend' railstuk als draaischijf of rolbrug gevonden, dan wordt voor iedere mogelijke splitsing in een lijst opgeslagen het nummer van de melder waarvan we nu de trajecten aan het bepalen zijn,  de positie van dit gevonden railstuk,  de aansluiting waar dit railstuk begint en de stand van de splitsing. Bij een wissel is dat dan rechtdoor of afslaand, dus 2 splitsingen komen bij een wissel in de lijst, bij een draaischijf kunnen het er wel 30 zijn. De melder waarvan we nu het traject aan het bepalen zijn heeft dus meerdere trajecten. De volgende melder wordt bekeken.
Zijn alle melders bekeken dan komen de splitsingen in de gemaakte 'splitsingen' lijst aan de beurt. Van iedere railsuk met een splitsing worden de beide aansluitingen bepaald, de stand van de wissel is hiervoor al vastgelegd in de splitsing. Met de naaraansluiting wordt weer het aangrenzende railstuk bepaald en de zoektocht naar een melder en daarmee het complementeren van een traject gaat verder. Wissels in een wisselstraat geven weer nieuwe afsplitsingen in de lijst.
Het zoeken naar trajecten gaat altijd in een richting vanuit een melder, de trajecten kunnen straks wel in twee richtingen worden gereden. 

Morgen weer een Houten- beurs...wordt vervolgt.

donderdag 17 augustus 2023

Automatisch rijden

 WMapp is nu zover dat treinen en accessoires handmatig kunnen worden bedient. Maar hoe gaan we dit automatisch, vanzelf laten gebeuren. Er  bestaan al veel programma's die dit kunnen dus keuze genoeg, zou je denken. WMapp werkt uitsluitend met PendelDCC of een nog (door jezelf) te ontwikkelen USB>DCC interface. En alle bestaande trein programma's hebben vele opties voor verbinden met bestaande meestal commerciële centrales, maar zeker niet met PendelDCC.  

Koploper heb ik zelf jaren mee gewerkt. Voor de duidelijkheid, ik vind het een fantastisch programma met haast oneindige mogelijkheden. Een enorme prestatie van de maker waar heel veel modelspoorders heel veel plezier van hebben. In dit blog zal ik af en toe vergelijkingen aanhalen met koploper, nooit heb ik daarmee de bedoeling te zeggen dat mijn oplossingen beter zijn dan die in koploper (of andere programma's),  alleen dat ze anders zijn. 

In WMapp teken je een baanplan. Bestaat uit vierkante vakjes met een railstuk of iets anders. Rechte of kromme rail, kruising en linkse of rechtse wissel zijn als railstuk momenteel mogelijk. Een recht of krom railstuk kan een melder krijgen. Een vakje met een recht of krom railstuk heeft dus 2 aansluitingen, een wissel 3 en een ( vaste) kruising 4. De inhoud van het vakje kan in stappen van 45graden worden gedraaid. Ieder vakje heeft dan 8 aansluitplekken. De grenzende vakjes met railstukken komen met de aansluitplekken tegen elkaar. Een algoritme kan met deze informatie de routes berekenen tussen de railstukken met melders. De daarvoor nodige wissel stand wordt hierbij meegenomen. 

Om de werkelijke snelheden van locs te bepalen, nodig voor het optrekken en afremmen, is het voldoende om van 1 route tussen twee melders de werkelijk afstand tussen de melders op te geven. 

Alleen het tekenen van het baanplan en opgeven van 1 afstand is vanuit de logica geredeneerd voldoende om automatisch rijden mogelijk te maken. 

Wel kan het even duren voordat van alle locs alle 28 snelheidsstappen zijn gemeten. En aan de hand daarvan alle andere afstanden tussen de melders dus zullen deze waardes tussen de afzonderlijke rijsessies moeten worden opgeslagen. 




dinsdag 8 augustus 2023

USB aansluitingen, serial port

De verbinding tussen de windows PC met WMapp en de verschillende 'wisselmotor' arduino projecten gaat met gewone USB. Een arduino uno heeft een USB-B aansluiting, als bekend van de printer, deze verbinden met een USB A-B kabel met een USB poort op de computer. De computer moet de aangesloten arduino herkennen en er een serial port aan toewijzen. Herkent de computer de arduino niet, dan kan het meestal opgelost worden om van de website van arduino de laatste versie van de IDE te installeren. Dit zet automatisch een hele rits van bestanden op je computer die communicatie met een arduino mogelijk maakt. En dat is wat we hier willen.

Daarna kun je WMapp opstarten. Voor ieder arduino project is er een venster. Nu zijn het er drie: DCCmonitor, PenDelDCC en MelDers. Open het gewenste venster en kies de juiste comport in de opzoeklijst. Is de goede gevonden dan wordt het kader groen, informatie als instellingen worden direct uit het arduino project opgehaald en getoond. Deze instellingen kunnen dan weer als bestanden op je computer worden opgeslagen.

De comport die je hier hebt gekozen wordt onthouden, zodat je dit proces normaal gesproken maar 1 keer hoeft te doen. Handig want soms is het best wel even stoeien voordat de verbinding tot stand komt. Wat helpt is WMapp afsluiten, het arduino project opnieuw opstarten en daarna WMapp opnieuw, meestal gaat het dan in 1 keer goed.

Ik maak op een instellingen venster nog wel een plekje waar je de aangewezen compoort per arduino project kunt opzoeken. 

Waarom is gekozen voor USB als verbinding methode.

Natuurlijk er zijn veel meer mogelijkheden, denk aan een CAN bus, wat veel in de autobranche wordt toegepast, of I2C, SPI,UART enz.enz. of TCP via je netwerkrouter. Maar al die methoden hebben verbindingsdingen, interfaces, nodig aan de zend en ontvangst kant, en zowel arduino als de computer hebben standaard al USB poorten. Daarbij is USB een lang en goed doorontwikkeld systeem, dus lijkt het mij de beste keuze. 

Kost niks en doet het altijd.

Vorderingen aan WMapp zijn nu zo ver dat er een stabiele en constante verbinding tussen WMapp en de verschillende arduino projecten is.

woensdag 2 augustus 2023

MelDers

MelDers is een van de wisselmotor arduino projecten, meer info over deze module kun je op de site vinden. MelDers sluit je ook aan op een USB poort van je computer. Eenmalig moet in het venster MelDers de goede compoort worden gekozen, die wordt daarna onthouden voor opvolgende sessies. Op de shield van MelDers zitten 6 Connectors, aan iedere connector kunnen tot 4 sensor boards in serie worden verbonden. Ieder sensor board heeft dan weer aansluitingen voor 8 actieve sensoren. In totaal dus 192 sensors of anders genoemd terugmelders of bezetmelders. 

Het eerder genoemde MelDers venster is een monitor die alle actieve, dus bezette melders duidelijk toont. Bestaande treincentrales hebben meestal S88 als terugmeld manier. MelDers heeft een RJ45 connector en kan direct op een S88n poort worden aangesloten. Soms direct zoals bij de CS3 maar ook komt het voor dat je een adapter S88>S88n nodig hebt. Deze adapter is alleen maar een verloop tussen de ' oude ' platte stekker en de RJ45 en heeft verder geen techniek, makkelijk ook zelf te maken. 

Je kunt MelDers (nog) niet gebruiken om je bestaande S88 uit te breiden. Het is of-of.

WMapp kan ook zelfstandig gebruik maken van MelDers, zonder dat daar de S88 aansturing en dus een andere treincentrale voor nodig is. Zeker nodig voor de plannen om met WMapp ook automatische treinenloop te realiseren. De 192 bezetmelders zijn ook te gebruiken om fysieke schakelaars aan te sluiten waarmee dan digitale accessoires als wissels kunnen worden gezet, denk dan aan een schakelpaneel voor je treinbaan met schakelaars en drukknoppen maar wel aansturing via DCC van de wissels en andere accessoires. Natuurlijk is dan wel PenDelDCC nodig als digitale centrale. 

Een toepassing die zelfs met de duurste commerciele treincentrale niet mogelijk is. 

Verder omdat WMapp werkt met zijn eigen computer, de arduino, zijn de meldingen veel stabieler en zijn 'spookmeldingen' niet mogelijk. Ook mede door het gebruik van actieve sensoren. 

Voorbeelden van actieve sensor is een Hall sensor, infra rood refectiesensor of infra rood lichtsluis. Meestal zijn deze sensoren ook op bestaande banen toe te passen, een enorm voordeel omdat de rails niet, zoals wel bij 'massadetectie' of 'stroomdetectie', uit de baan hoeft te worden gehaald om aan te passen of te isoleren. Een melder, sensor aansluiting bestaat uit een uitgaande voeding van 5V waarmee een sensor gevoed kan worden, een GND massa en een input. Wordt de input laag gehouden dan is de melder niet bezet, wordt de input hoog gezet door er de 5V op te zetten dan is de melder bezet.

Zeker kun je ook je eigen ontwerpen en ideeen gaan realiseren hoe een melder te maken. Zelf heb ik plannen en ideeen voor diverse andere vormen van sensoren. Waarbij de TOF (=Time Of Flight) gebruik makend van een laser de meest futuristische is. Maar hierover later meer. 

In het baanplan, de tekening met de rails enzo, kun je een melder toevoegen aan een railstuk, wordt getoond als een rondje in het railstuk. Als bezet dan is het rondje rood.

In WMapp ga ik nu voorzichtig beginnen aan de automatische treinenloop te realiseren. Beginnen hoe WMapp het getekende sporenplan automatisch kan analyseren om zo routes en rijwegen te bepalen. Uitdaging.



RoBoot (2)

  Afbeelding toont de huidige fase van Project RoBoot, rare naam, vreemd project, maar af en toe moet je de lat voor je zelf wat hoger of mi...