Verantwoording.
Deze tekst is geschreven tijdens het maken van PenDel, veel zaken zijn tijdens het maken weer anders geworden dus niet meer actueel. Het actuele verhaal van PenDel kun je lezen in de handleiding. Wel hier veel overdenkingen en oplossingen.
De bouw
februari 2019
Ik rij zelf met drie rail, dus een demospoor aangepast voor twee rail. Oude gelijkstroom locomotief uit de mottenballen gehaald, gereinigd, gerepareerd, en op het spoor gezet.
Melders
Er is van alles te verzinnen om een trein af te melden wanneer hij een stop plek, station bereikt.
Op de shield komen meldpunt aansluitingen en een 5V voeding aansluiting.
De meldpunt aansluitingen worden active high **) als er 5V positief opkomt dan is het station bezet.
De voeding is te gebruiken voor moderne sensors. Maar een reed relais met een magneetje op de trein werkt ook top. Of een schakel rail of een.... enz. Als het meldpunt maar op 5V wordt gezet als de trein in het station staat.
Op mijn demo twee infra rood sluisjes, gemaakt van infra rood reflectie sensor. goedkoop en 100% betrouwbare werking. Beide infra rood leds van de sensor afhalen en tegenover elkaar op de baan monteren, draadjes verlengen en op de plaats waar de leds van de sensor zijn gehaald weer verbinden..
Paar tips, die leds zijn blauw of zwart of helder. De heldere zenden meer Infra rood uit dan de blauwe, de zwarte zijn altijd de ontvangers. De zender kun je op het blote oog niet zien branden maar daar is een trucje voor, gebruik de camera van bv. je telefoon en kijk daarmee naar de led, dan zie je het wel branden. Verder gaan ze wel eens stuk...echt waar! Zorg dat je er een paar extra hebt zodat je niet dagen gaat klooien met een defecte IR led. (hier spreek ik uit ervaring...) Ik heb ze altijd bij me op de beurzen.
Afbeelding toont locomotief op het demo spoor. Voor de loc twee plaatjes berkentriplex van 20x10x1mm met daarin de beide IR leds gemonteerd. De loc rijd door de IR straal.
Getest met gewoon heen en weer laten rijden. Eenvoudig door polariteit van rail spanning om te keren bij het bereiken van ieder station.
Dit doet de eenvoudigste pendel automaat.
Maar we willen meer......
**)opmerking 22 februari
Nee op de shield komen twee jumpers waarmee je kan instellen of de melder active high of active low is, dit om de werking van een (digitale) melder te kunnen omdraaien.
Stroomvoorziening en snelheidregeling
Snelheid van de loc wordt bepaald door het voltage van de rail spanning. Heb je een gelijkstroom regeltrafo of iets fancies moderner, dan is dit prima als railspanning te gebruiken.
Anders een gewone adapter (moderne schakelende voeding) van 12V. Deze geeft stroom aan de Arduino en aan locomotieven die aan ongeveer een 10 Vdc voldoende hebben voor het bereiken van de maximale gewilde snelheid.
Hogere spanningen, voor locomotieven die meer dan 10 V willen, gebruik dan een DC-DC step up module, hier kun je de spanning van instellen. Voor lagere spanningen dan de 10 V gebruik dan een, ook instelbare
dc-dc step down module. Beide type modules koop je voor een paar euro, ik heb ze altijd bij me op de modelspoor beurzen.
Natuurlijk willen we dat de locomotief langzaam optrekt, en bij de stations vertraagd en mooi tot stilstand komt. Snelheidsregeling is dus nodig.
Je denkt dan direct aan PWM (zie WIKIpedia voor een uitleg hierover), maar dat gaat gewoon niet.
Locomotieven zijn gemaakt voor echte gelijkstroom, ik heb het hier nu over de typen zonder digitale decoders natuurlijk. De locs zitten vol met allerlei condensatoren en spoeltjes. Sloop alles eruit en PWM zal waarschijnlijk wel werken maar we willen natuurlijk niks uit de locs halen.
Na een paar avonden testen heb ik een methode gevonden om een puls met amplitude van de maximale railspanning en duur van 10 ms met een regelbare frequentie te sturen. Bij 100hz krijgt de loc een zuivere gelijkstroom, bij 10hz een zeer laagfrequent PWM signaal met een duty cycle van 10%.
Hiermee een redelijk resultaat. Door de puls breedte van 10ms heeft de motor in de loc maximaal koppel waardoor extreem langzaam rijden mogelijk is, wel zie je hem dan schokkend vooruit kruipen. Bij de 10hz is dit niet meer storend.
let wel bij het schrijven hiervan pas 1 loc getest.
Instellen, beginwaardes
Omdat alle locomotieven en pendelbanen anders zijn moeten er zaken worden ingesteld en geregeld. PenDel moet dit automatisch gaan doen anders werkt het niet. Als je de max snelheid anders maakt, veranderd de minimaal te bereiken snelheid, dus waar de locomotief nog wil rijden. Ook de tijd die de locomotief nodig heeft om het traject af te leggen veranderd, dus het moment van afremmen.
Als dit niet automatisch gaat, ben je alleen maar aan het afstellen in plaats van PenDelen.
De gewenste maximale snelheid stellen we zelf met de hand in met de trafo of de DC-DC modules.
Minimale snelheid die de loc kan rijden met de ingestelde railspanning van het punt hierboven moet worden bepaalt door een automatisch proces..
Optrek snelheid gaan we vast in PenDel inbouwen, niet instelbaar, misschien wel een stukje willekeur inbouwen.
Vertraag snelheid ook vast in bouwen.
Lengte van de PenDel baan, eigenlijk de tijd die de loc erover doet om van A naar B te gaan moet automatisch worden gemeten per ingestelde maximale snelheid om het moment van beginnen met vertragen te berekenen.
Stoptijden in stations, willekeurig...? Of halfautomatisch? Keuze Station, opstelspoor, keren of niet, denk aan een rechte pendel met twee stations of een ovaal met opstelplek en station.
Een druk op de startknop start het initialisatie proces.
Positie
Eerst moet de positie van de locomotief worden bepaald. Staat de loc ergens op de pendelbaan dan wordt de loc in willekeurige richtig aangezet.
Bij het bereiken van 1 van de bezetmelders is de positie bekend. En ook de richting die nodig is om deze positie te bereiken.
Maar als de loc voor een melder staat dan wordt het beduidend ingewikkelder. Positie is bekend, zeker maar niet de richting die nodig is om naar de andere kant te rijden.
Eigenlijk is er geen manier om dit te weten te komen, dus als we niks doen dan zal de loc vaak de verkeerde kant opgaan en tegen het stootblok of erger het ravijn in rijden.
Hoe op te lossen? De eerste keer dat je de baan opstart, of na een factory reset van de arduino (maar daar over later) MOET de loc op een vrij stuk rail staan tussen de melders in. Bij de eerste start wordt nu stations en de richting om deze te bereiken opgeslagen in het geheugen van de Arduino. Bij een nieuwe start vanuit een positie wordt de juiste richting uit het geheugen terug gelezen... werkt perfect..
Ook de volgende dag of week, deze info wordt ook bewaard als de arduino uit is geweest.
minimum te rijden snelheid.
Locomotief wordt met standaard minimum snelheid (duty cycle 10%) aangezet richting van de bezetmelder vandaan. Wanneer de bezetmelder binnen korte periode vrij komt, heeft de loc gereden, minimum snelheid is akkoord. Wanneer na de periode de melder niet vrij is gekomen moet de minimum snelheid worden verhoogd, duty cycle met 10% verhogen, weer testen... zo door gaan totdat de loc heeft bewogen.
Gevonden waarde nu als minimum snelheid instellen. Als de loc helemaal niet wil bewegen is er iets mis en gaat de PenDel in alarm mode. Stroom van de rails en een rode knipper led.
Als juiste minimum snelheid is bepaald, keert de loc en gaat met max snelheid terug naar het station.
Lengte, tijdmeting van traject.
Om afremmend te kunnen stoppen moet bekend zijn hoelang de loc erover doet om het traject te rijden. De meeste locomotieven rijden vooruit een andere snelheid dan achteruit dus deze meting moet twee keer. Loc versneld langzaam en rijd naar andere station. Gemeten tijd opslaan. Loc keren. Meting herhalen voor andere richting en ook deze gemeten tijd opslaan.
Normaal in bedrijf.
Loc pendelt nu van station A naar station B en omgekeerd. Iedere rit wordt aan het einde van de rit gekeken hoe snel de loc rijdt. Als de snelheid gelijk is aan de gevonden minimale snelheid dan wordt het moment van vertragen later gezet met een 0,2 seconden. Rijdt de loc bij het bereikte station sneller dan de minimum snelheid dan wordt het moment van vertragen vervroegd met een 0,2 seconden.
Het op het goede moment vertragen wordt nu "geleerd".
Aanpassen maximale snelheid
De snelheid is aan te passen door het voltage van de rijstroom te regelen. Als een bij de locomotief behorende treintrafo wordt gebruikt, gewoon de snelheid bij regelen. Of met een step-up of step-down module. Dit werkt eigenlijk al. Niet nodig iets aan te passen.
Bij een sterke aanpassing van het voltage beste om de loc opnieuw even te starten anders duurt het te lang voordat de nieuwe stoptijden zijn geleerd.
Bij deze eerste testen gebruik ik een oude Fleishmann loc. Minimale spanning om deze rijdend te krijgen 7 volt. Loc rijdt dan erg onrustig. Maximale spanning 15V laat de loc heen en weer racen. Automatische vertraging naar stoptijden stelt zich vlot in.
Voor deze loc is een voltage van 12V helemaal top. 9V kan ook nog, 12V vindt ik beter. Dus is een losse voltage regelaar niet nodig. De stroomvoorziening voor de Arduino moet ook tussen de 9V en 12V liggen dus deze spanning ook te gebruiken voor de rijstroom.
Op de Shield komt straks een jumper waarmee je kan kiezen de rijstroom van de Arduino voeding te halen of een aparte rijstroom te gebruiken. Dit laatste zal echt gaan gelden voor stroomsystemen die afwijken van deze 12V.
Verder misschien later nog een instelling mogelijkheid te programmeren waarmee je de max snelheid bij gelijkblijvende voedingsspanning nog kan aanpassen. Maar hierover later... Bedenk me dat ik nu minimum snelheid eigenlijk ook in een instelling moet doen....komt ook later
Kortsluiting van de rijstroom
Het gaat wel eens fout op onze modelspoorbaan.
Kortsluiting van de railstroom moet ervoor zorgen dat de PenDel wordt uitgeschakeld, vergelijkbaar met de kortsluiting beveiliging die we vinden bij digitale centrales.
Weliswaar heeft een kort durende kortsluiting geen gevolgen maar als we deze kortdurende kortsluiting niet opmerken zal de H-brug op de shield in rook opgaan na een 10-tal seconden. Einde PenDel automaat....en dat willen we niet dus hier gaan we iets voor verzinnen.
Paar onderdelen extra naar de shield, een bruggelijkrichter de wissel kant op de rijstroom, plus en min via een weerstand naar de led van een CNY71 optocoupler. Uitgang hiervan naar een 4069 inverter die als een schmitt trigger wordt gebruikt, naar een PIN op de arduino.
De rijstroom is, zoals boven beschreven, alleen maar een reeks pulsen van ongeveer 10ms. Tijdens zo een puls meet de arduino of de 'kortsluit' PIN laag is. Dan staat er een spanning over de rails. Bij kortsluiting is er geen spanning. De PIN is dan hoog. Arduino weet dan dat er een kortsluiting is en zet de hele boel stil. Werkt perfect.
Testen met een andere locomotief.
Tot nu toe alleen de oude Fleishmann loc laten rijden. PenDel moet gaan werken voor alle type gelijkstroom locs. Daarom heb ik een oude Märklin wisselstroom rangeer loc omgebouwd naar gelijkstroom.
Procedure is hetzelfde als een dergelijke loc voorzien van een decoder, alleen mag nu echt alles eruit. De stator van de motor is standaard een spoel, deze moet worden uitgewisseld voor een permanente magneet. ESU en Märklin verkopen ze, er zijn dacht ik 3 typen.... vast weet iemand op de Houten beurs of op een van de forums precies hoe dit zit. Voor de rest alles weghalen en de twee draden naar de rails direct op de koolborstels.
Nu het werkt, maar aanraden kan ik het niemand, loc heeft veel moeite met de langzame snelheid. Is voor een locomotief van ongeveer 50 jaar oud precies wat je er van mag verwachten.
Pendelen doet het zeker, dus omdat ik ook op grotere pendelbanen wil testen en ik alleen maar een halve mijl aan oude M en C rails heb.... ben ik er blij mee.
Routes
Zoals boven vermeld, als je een Pendelbaan wilt met meerdere stopplaatsen afslagen wissels en seinen......ga dan gewoon digitaal rijden, natuurlijk kom je met een Arduino en veel tijd echt wel een heel eind maar het 'wiel uitvinden' gehalte is dan echt veel te hoog. Nee deze PenDel is bedoeld voor wie een eenvoudige simpele en goedkope oplossing wil voor het heen en weer laten rijden van een trein.
Maar ja... misschien toch nog wel de optie van in een ovaal rijden, hiervoor moet de locomotief dus niet omkeren in de stations. Enne misschien ook een twee stoppunten en een midden stop. Dan moet 1 van de melders dubbel worden uitgevoerd, dus twee melders op de einden van het traject op dezelfde aansluiting en de andere melder niet keren. Wel zijn er dan 4 routetijden nodig, dus het automatisch instellen van de juiste afrem tijden voor 4 routes gaat lang duren.
Maar goed... toch maar een weekje aan gewerkt. PenDel kan nu met drie routes omgaan.
Heen en weer, tussen twee stations pendelen
Ovaal. rondje rijden stoppen bij twee stations.
Heen en weer met tussen stop. van ene kant naar station, naar andere kant en vice versa.
ondertussen begint de proefschakeling op het breadboard zo een chaos te worden dat ik meer tijd bezig ben met zoeken naar het draadje wat er nu weer los zit als aan het project werken. Dus ga ik de PCB de shield nu ontwerpen en laten maken ( en maar hopen dat ik niks ben vergeten...) Als meezit kan ik in mei PenDel showen op de beurs.... 9 maart helaas nog niet.
Stoptijden
Bij stations moet worden gestopt. We maken een keuze tussen, beide stations een willekeurige stoptijd, 1 van de stations een vaste stoptijd en de andere een willekeurige, en beide stations een vaste stoptijd.
In default, beginstand, staan beide stations in een willekeurige stoptijd.
Stoptijd is een willekeurige tijd, iedere stop opnieuw bepaalt tussen 1sec en 30sec.
Instellen gaat door de PenDel in de programmeerstand te brengen, en eenvoudige de gewenste stoptijd de melder bezet te houden.
PenDel DC printen ontvangen. Een poos aan het debuggen geweest, eerst maar de print controleren en testen en dan nog een paar 'probleempjes' verhelpen. Dan is de PenDel klaar voor gebruik.
Factory reset
Deze kreet wordt altijd gebruikt om aan te geven dat alle door de gebruiker ingestelde waardes worden gewist. Automatisch gemaakte instellingen en handmatig ingestelde zaken worden allemaal gewist. Heel handig als je het allemaal niet meer weet... gewoon opnieuw beginnen.
Hoe?
Zet arduino uit.
Zorg dat er GEEN melder bezet is, geen trein in een station.
Druk knop S in en houdt vast terwijl je de arduino opnieuw opstart.
Daarna, minstens 30 sec wachten, arduino uit en gewoon aanzetten.
Motorregelingen
Mijn eerste idee was om geen instellingen mogelijk te maken voor motorregelingen.
Motorregelingen dienen om het rijgedrag van een locomotief te kunnen afstellen.
Je kan zeggen dat dit heel erg moeilijke en ingewikkelde materie is omdat iedere locomotief anders reageert. Dus wilde ik dit ingewikkelde gedoe niet in mijn eenvoudige voor iedereen te gebruiken PenDel automaat.
Toch heb ik ervoor gekozen een drietal instellingen mogelijk te maken.
Let wel, absoluut niet noodzakelijk voor een juiste werking van de PenDel, PenDel werkt uitstekend op de vooraf ingestelde waardes.
Snelheid van de locomotief wordt bepaald door het voltage van de voeding voor de locomotief, aansluiting loco. Verder door de breedte van de puls, in te stellen met regeling 1.
Maximaal te bereiken snelheid is regeling 3, als ingesteld op de zelfde tijd als de pulsbreedte dan is snelheid maximaal. De minimaal te bereiken snelheid is de tijd tussen de pulsen, hoe langer deze tijd hoe langzamer de loc rijdt.
De snelheid wordt automatisch door PenDel geregeld, met de instellingen 2 en 3 kun je de minimale snelheid en maximale snelheid begrenzen.
Dubbele melders
Bedoeld is hier dat je twee (of meer) melders gebruikt op 1 melder ingang van PenDel. OP deze manier zijn er veel meer routes te verzinnen voor je pendelbaan.
Dit gecombineerd met de eigenschap dat PenDel nooit stopt in het zelfde station waar het is vertrokken geeft leuke mogelijkheden.
Melders die alleen maar bestaan uit een schakelcontact zoals bv. reed relais of schakelrail kunnen zonder meer aan elkaar worden verbonden. Met actieve melder is dit ingewikkelder omdat de melders elkaar gaan kortsluiten. De melder dan via diodes aan elkaar verbinden.
Wissels omleggen door de trein
Eigenlijk heeft dit niks met PenDel te maken, maar wanneer je in je pendelroute een wissel kan laten omleggen door een locomotief die er langs rijd, dan zijn er veel meer en veel grotere routes mogelijk met PenDel.
Om de wissel om te leggen heb je weer op de positie waar dit moet gebeuren een melder nodig. Kan gewoon met schakelcontact als reed relais of schakelrail die de magneetspoelen bedient van de wissel. Een methode die in theorie werkt maar de praktijk geeft ingebrande schakelcontacten en magneetspoelen die door branden. Al beter is het het contact een relais te laten bedienen die op zijn beurt de magneetspoelen bedient.
Gebruik je in plaats van de schakelcontacten een actieve sensor als een IR sensor dan wordt het al een stuk betrouwbaarder. Als je deze sensor vervolgens met bv. ESU switch pilot servo de wissels met servo's laat bedienen ....ach daar zul je denk ik best wel tevreden mee kunnen zijn. Dit werkt goed.
Maar de allerbeste oplossing is volgens mij, jawel reclame maken voor mijn eigen projecten, toch wel door gebruik te maken van WisselAandrijving voor het aandrijven van de wissels en SchakelBord die de puls uit de actieve (IR) sensor omzet in een DCC signaal. Dit werkt perfect en geeft de 'analoge' rijder een kijkje in de wereld van het digitale rijden..
Routetijden, op tijd afremmen
Wanneer er meer ingewikkelde routes worden gereden met PenDel is er nog een aspect waar je rekening mee moet, kan houden. Het meten van de tijd die de locomotief over een traject doet om op tijd te gaan afremmen.
PenDel werkt met 4 route tijden, die je zo kunt definieren:
Loc rijd vooruit van station 1 naar station 2
Loc rijd vooruit van station 2 naar station 1
Loc rijd achteruit van station 1 naar station 2
Loc rijd achteruit van station 2 naar station 1
Bij het ontwerpen van je route probeer dan de traject delen die dezelfde tijdmeting gebruiken dezelfde lengte te geven. Kijk als voorbeeld naar voorbeeld route 5, achteruit van 2 naar 1 komt twee keer voor, maar met totaal verschillende lengtes. Op te lossen door slimmer de stations te plaatsen, en de traject delen te verlengen.
Succes...
Voor vragen mag je me altijd mailen....
Rob