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.



SchakelBord

Tijdje niet gepost. Werk aan WMapp staat even stil omdat ik aan andere projecten momenteel werk. Een robot schip, werknaam RoBoot waarmee st...