Blink

Non blocking Blink

Jeg har eksperimenteret med programmet “blink”, som i alt sin enkelthed tænder og slukker en lysdiode med 1 sekunds mellemrum. Dette er vist “Hello World” programmet for Arduino, og kan anvendes til at verificere at man har fået installeret IDE, compilers og drivere rigtigt. Man får testet hele kæden af fra kodeeditor til kørsel af programmet på enheden, så nu har jeg både en Esp32 og Arduino Nano der blinker…

Jeg har eksperimenteret med forskellige blink, f.eks to hurtige og derefter en længere pause, for at finde ud af hvor let det er at skelne, så man kan anvende forskellige blink to success og fejl.

Som man kan se af billedet, har jeg også lavet en non-blocking version af blink uden timer, så jeg kan se hvor meget jeg belaster mit loop. I dette tilfælde er det kun en increment og to if statement, så den når alligevel ca. 32.000 loops i sekundet.

Jeg har også fået oprette git versionskontrol til sourcekoden for Arduino klienterne, så kan udveksle den mellem mine maskiner og ikke mister noget undervejs. Indtil nu har jeg anvendt Arduino IDE både på PC og Mac, men skal på Martins anbefaling også have teste Platform IO.

Jeg er også begyndt at dokumentere den indsamlede information, og som altid giver det anledning til at man finder nogle mangler, så nu har jeg bestilt en logikanalyser til test og dokumentation, samt level shifter der kan sikre master nodens EPS32 på 3.3V mod de 5V TTL signaler der anvendes til RS485 bussen.

Så er der kommet stumper hjem

Arduino Nano, Esp32, Esp8266, interface moduler og servo’er…

De mange stumper er kommet løbende over de sidste måneder, og nu skal jeg så småt i gang med at fået overblik og begynde at sætte dem sammen. Alle pakker er bestilt til under 80 kr, så der ikke løber ekstra udgifter på.

Esp32, Esp8266 og Arduino Nano’er er alle sammen til styring og kommunikation.

PWM modulerne er i to versioner, en til styring af mange (12) Servoer, og en til styring af mange (16) LED’s. Modulerne til LED’s har indbygget strømstyring så der ikke skal anvendes formodstande, og sikre at alle LEDs lyser lige meget. Disse moduler skal anvendes hvor der er mange LEDs, f.eks. i forbindelse med signaler, og belysning i huse hvor man kan styre lyset individuelt i opgangen og lejligheder.

Micro Servo’er er til styring af sporskifter, og moduler med relæ’er er til styring af polaritet af strømmen i sporskifterne. Da jeg vil lave Fremo moduler, er det vigtigt at styring og kontrol er helt adskilt fra kørestrømmen (DCC) og kørekontrollen (Loconet)

IR modulerne og modulerne til måling af strøm kan anvendes til at finde ud af om spor eller områder er besat eller frit. Disse er igen valgt så der ikke er nogen elektrisk forbindelse mellem kørestrøm og modulernes styring.

CAN modulerne skal anvendes til LCC kommunikation, og de er købt i to versioner, da Esp32 har indbygget CAN controller, mens dette ikke er tilfældet i Arduino Nano.

RS485 modulerne er købt til kommunikation mellem Controllerne, hvor LCC ikke er anvendt. Ideen er at anvende en eller flere Esp32 som LCC noder, der giver adgang til en række moduler baseret på Arduino Nano, så prisen samlet holdes nede.

Banens Styring

De første test blev med en simple analog DC styring af et lille 1 meter test spor (kan evt. også anvendes til programmeringsspor når jeg går digital)

Planen lige nu går i retning at Ecos centralenhed og trådløs styring med TouchCap til min IPhone eller IPod touch (eller den kommende IPad).

Analog Drift

Den simpleste måde at styre et tog på en modelbane er ved at variere den spænding man sender gennem skinnerne til toget. Jo højere spænding, jo hurtigere køre toget. Bytter man om på polariteten ( + og – ) vil toget køre baglæns, mere simpelt bliver det ikke.

Konsekvensen af at styre spændingen er også at lys i lokomotiver og vogne er slukket når dette holder stille.

Problemerne opstår når man vil køre med mere end et lokomotiv ad gangen. Sætter man blot to lokomotiver på banen vil man styre begge to på samme tid og med samme hastighed – ups.

Det findes der så en række løsninger på, typisk vil man dele banen op i mange små afsnit, så man kan sende strøm til et enkelt skinne afsnit. Derved kan man køre med flere lokomotiver, blot man sørger for at kun et enkelt lokomotiv er i samme afsnit af gangen. Opbygningen af dette anlæg er ikke simpelt og kræver mange ledninger, samt en kontrolenhed til udvælgelse af skinne afsnit. Yderligere skal man anvende en styreenhed pr. lokomotiv man ønsker at styre samtidig.

Derfor vil jeg kun anbefale analog drift til helt små anlæg med kun et enkelt lokomotiv kørende af gangen. Jeg ved godt at der er bygget store klubanlæg med analog blok styring, men jeg gætter på at det var mere af nød, da den digitale teknologi ikke var tilgængelig endnu.

Digital drift

I digital drift sendes den fulde spænding ud via skinnerne hele tiden. Man behøver altså ikke at opdele banen, og lokomotiver samt vogne har strøm til lys og lyd, uanset om toget køre eller holder stille.

Med en enkelt styreenhed kan man sende et digitalt signal ud sammen med kørestrømmen, og en dekoder i hvert lokomotiv undersøger signalet og reagere kun hvis signalet er sendt til dens adresse. Styreenheden er altså i stand til at sende kommandoer ud til hvert enkelt lokomotiv, og derigennem individuelt at styre fart, lys og lyd. Man behøver altså kun en enkelt styreenhed selv om man har mange lokomotiver på banen.

Styreenheden kan også kontrollere sporskifter og signaler der har en indbygget dekoder, og nogle systemer er også i stand til at modtage retur beskeder fra enhederne – f.eks. kan et sporafsnit melde tilbage at der er et lokomotiv netop der. Det kræver dog at man igen opdeler banen i afsnit, men alle afsnit kan jo stadig fødes med den samme strøm.

Digitale styreenheder kan typisk også forbindes til en computer, som kan “overtage” driften af en del af dine lokomotiver. Dette kan gøre legen noget sjovere, da du nu skal navigere dit tog rundt på et trafikeret skinne-net.