August 2019
Hvorfor mon jeg sagde det?
Det begyndte med at fruen vil til at planlægge at lægge haven om og bl.a. lave en træterrasse i det sydvestlige hjørne, hvor en høj hæk sørger for så meget skygge og så lidt sol, at der stort set intet kan gro alligevel.
Og så var det, at jeg sagde, at der skulle gøres plads til et havetog. Så nu har jeg bestilt et Piko startsæt.
Indledningsvis er banen designet således:Firkanten til venstre er en ny terrasse, der skal anlægges i det ene hjørne af haven. Toget kører mod uret rundt om terrassen i en stor vendesløjfe. Ved den ene langside er der en station med to perroner, hvor to tog kan høre hjemme.
Den lange strækning ligger langs med en hæk. Det er en enkeltsporet dobbeltrettet strækning, hvor to tog kan passere hinanden ved hjælp af vigesporet på midten.
Til højre er der endnu en vendesløjfe, hvor togene kører med uret.
Automatisering via digital styring af analoge tog
Jeg vil ikke ofre penge på digitalisering. Heller ikke selvom planen på sigt er at have to tog, der deler en lang strækning på langs af haven og en vendesløjfe i hver ende plus et par vigespor, så togene kan passere hinanden.
I stedet vil jeg have en Arduino til at styre det hele. Måske en Mega. Måske en Due. Eller måske en ESP32.
Jeg har spurgt Piko om lokomotivet fra startsættet kan styres via PWM (Pulse Width Modulation), dvs. en 20 volt DC, der “hakkes i stykker” ved en relativ høj frekvens, således at det bliver til en firkantspænding, der skifter mellem 0 og 20 volt mange gange per sekund, og hvis “duty-cycle” bliver styret, så den gennemsnitlige spænding kan antage alle mulige værdier mellem 0 og 20 volt.
Problemet med lokomotivet er, at det indeholder et analogt lydmodul og et røgmodul. Og jeg er ikke sikker på, at det kan “leve” med et PWM signal.
PWM skal under alle omstændigheder bruges til servoer til sporskifterne. Sådan styrer man nu engang servoer. Selve servoerne skal gøres rimeligt vandtætte. Jeg vil forsøge at vende dem på hovedet, så regnvand ikke løber ind men tværtimod ud ved akslen. Og resten af servoen bliver pakket ind i sort silikone.
Hvis Piko svarer, at man kan styre lokomotivet med PWM, så vil jeg gøre det. Dvs. bruge et billigt L298N modul fra Kina, så en Arduino kan afgive et 3,3 volt PWM signal, der forstærkes op til 20 volt via L298N modulet, som også kan håndtere en strøm på op til 4 ampere og i øvrigt polvende signalet, så toget ændrer retning.
Der skal implementeres en kortslutningssikring. Den består i sin enkelthed af en modstand forbundet mellem sense pinden på L298N modulet og stel. Når spændingsfaldet over modstanden bliver høj nok til at drive en I/O port på Arduinoen (modstanden skal dimensioneres ud fra dette kriterie), skal softwaren sørge for at afbryde spændingen dvs. skrue ned på 0 volt.
DC spændingsforsyning til toget
Hvis svaret er, at lokomotivet ikke fungerer med PWM, så vil jeg i stedet udtænke en måde at generere en variabel DC spænding, som kan polvendes. Basalt set det samme som en variabel laboratoriestrømforsyning suppleret med en polvender.
Mht. polvenderen troede jeg, at selvsamme L298N modul kunne bruges. Men dels er den begrænset mht. hvor meget strøm, den kan drive, og dels vil den give et spændingfald. Men værst, så vil den kræve mindst et input på et sted mellem 5 og 8 volt. I stedet bliver jeg nødt til at bruge to relæer eller bedre et dobbeltrelæ:
Dioderne skal være der for at beskytte relæet mod de strømspidser, der skabes, når polariteten vendes, mens motoren roterer, fordi motoren virker som en dynamo.
Mht. strømforsyningsdelen har jeg fundet denne side http://linuxfocus.org/English/June2005/article379.shtml, som anvender en Atmel microcontroller (som også er hjertet i en Arduino) til at udgøre “Control logic” delen af dette blokdiagram:For DAC (eller digital til analog konverter) delen er der mange muligheder. Indtil videre overvejer jeg:
1. At gøre som på siden, nemlig at implementere den i microcontrolleren samt en hel del modstande. Det er rimelig simpelt og vil give en perfekt DC spænding. Men det bruger mange I/O porte på Arduinoen – især hvis man vil have mange spændingstrin som på siden. Jeg kan dog nøjes med tre eller fire I/O porte og derved få 8 eller 16 spændingstrin og dermed hastighedstrin for toget.
2. En udglattet udgave af et PWM signal. Det bliver naturligvis aldrig en perfekt DC spænding. Men det kunne måske være godt nok i praksis? Det kan da i hvert fald prøves. Fordelen skulle være, at det kun kræver en enkelt I/O port og alligevel give 255 spændingstrin. Jeg har fundet dette forslag til et passivt filter til at implementere udglatningen:3. Bruge en af de analoge udgange, som kun findes på Arduino Due og ESP32 til at generere en ægte DC spænding med 255 trin.
Uanset hvordan jeg implementerer en DAC vil den give en spænding på mellem 0 og 3,3 volt (5 volt for Arduino Uno og visse udgaver af Arduino Mega). Denne spænding skal multiplicere med 6 eller 7 i et forstærkertrin, som på siden er delt op i en spændingsforstærker og en strømforstærker:Disse forstærkere er simple nok at implementere. Dog har jeg tænkt mig at implementere strømforstærkeren som en enkelt TIP102 Darlington transistor.
Sluttelig består strømforsyningen på siden af tre dele, hvoraf jeg kun har brug for den sidste: Et tastatur til at vælge spænding og maksimal strøm, et display til at vise strøm og spænding, samt en kortslutningssikring.
Kortslutningssikringen består af en 0,5 ohms modstand, som sidder i serie med den load, som strømforsyningen driver, samt en I/O port i Arduinoen, som er sat op som analog indgang. Spændingsfaldet over modstanden er et udtryk for strømstyrken, som dels vises på displayet (hvilket jeg ikke har brug for), og dels bruges til at afbryde strømforsyningen (dvs. skrue spændingen ned på 0 volt), såfremt strømforbruget bliver så højt, at det må anses for at være en kortslutning.
Afslutningsvis skal der indskydes en 5 volt strømforsyning til Arduinoen og diverse dioder og kondensatorer for at kvæle diverse spændingsspidser m.v. Alt i alt ender siden med dette diagram, som jeg jo nok ender med at forenkle på ovenfor beskrevne vis:På siden er det også muligt at downloade software til microcontrolleren. Det kan jeg ikke bruge direkte, men det kan selvfølgelig tjene til inspiration.
15. august
Jeg fik svar fra Piko. Og det var hurtigt. Faktisk på dag 4 efter deres sommerferielukning.
Men desværre var svaret blot, at de ingen erfaring har med PWM styring af deres havetog, og derfor ikke kunne hjælpe mig. Fair nok: Hvorfor skulle de hjælpe mig med at spare noget digital styring, som de ellers kunne sælge til mig for flere tusinde kroner?
Nå! Men så må jeg jo undersøge, hvordan fartregulatoren i startsættet er bygget.
Først satte jeg mit billig-oscilloscop på, og kunne derved konstatere, at det langt fra er et pænt DC signal, der kommer ud af regulatoren. Jeg tror, at det er en udglattet PWM. Måske sidder der en microcontroller og en L298N indeni?
Næste skridt var at skille regulatoren ad og se om jeg kan genkende nogle komponenter. Jeg viser ingen billeder, for det vil sikkert være at bryde nogle copyright regler. Men jeg kan konstatere, at der på oversiden af printet findes nogle stærkstrømskomponenter. Fra venstre mod højre:
En 15N10 MOSFET, et relæ (omskifter, 2 polet), en spole, en 220uF kondensator, et potentiometer (som er den man drejer på, når man betjener regulatoren), en 1000 uF kondensator, en 470 uF kondensator, endnu en spole, en 470 uF kondensator (en lille tynd en, der kun tåler 10 volt), og sluttelig en dobbelt schottky diode, MBR2045.
Undersiden af printet består af en større mængde SMD komponenter. En 14-bens IC uden nogen form for idenfikationsmuligheder. En 8-bens IC, som er en BL05A 5V spændingsregulator, en 3-benet 2n06l64, som må være en transistor af en slags, to stk. relativt store dioder, endnu en 3-benet komponent (en J3Y transistor) samt et utal af små modstande og kondensatorer.
Jeg gætter på, at den 14-benede er en microcontroller, der bruges til at lave et PWM signal, som udglattes af de mange kondensatorer, forstærkes op af transistorerne og polvendes af relæet. Jeg har ikke målt på det, udover at konstatere, at relæet er forbundet på kryds på en måde, der stemmer med, at den bruges til at polvende.
Så hermed er der truffet et par valg, og bestilt stumper fra Kina: En ægte analog udgang i stedet for en DAC og et relæ som polvender. Jeg har bestilt en ESP32, TIP102 som strømforstærker, nogle 1 watt modstande til kortslutningssikringen og disse relæer som polvendere:Styringen bliver baseret på ESP32S (eller WROOM32), som er en “mini-Arduino”, dvs. med ikke alt for mange I/O porte:Til gengæld har den WIFI, så den kan agere WEB server, således at jeg kan styre toget fra en smartphone eller en iPad. Desuden har den en hel del flere processor kræfter end en “rigtig’ Arduino. Og hvis/når jeg løber tør for I/O porte kan jeg udvide med endnu en Arduino af en slags. F.eks. en Arduino Mega, som burde give porte nok.
Der er et lille twist i at bruge WIFI forbindelsen og lade ESP32 agere WEB server, idet jeg jo nok ikke kan regne med en stabil WIFI forbindelse via min router ude i haven. Derfor vil det være smartest at sætte ESP32 op i Access Point mode, så jeg kan oprette en direkte (punkt til punkt) forbindelse mellem smartphone og ESP32. Se https://randomnerdtutorials.com/esp32-access-point-ap-web-server/
Analog 2-skinne teknik
Der er en del problematikker ved 2-skinnedrift, jeg aldrig har tænkt over. Og også en del, der hører til i den analoge modeltogsverden. Se http://www.eastbank.org.uk/circuits.htm
Det første problem er at få et tog til at køre rundt i en vendesløjfe. Ja faktisk overhovedet det at lave en vendesløjfe, idet den umiddelbart i sig selv vil udgøre en kortslutning.
Ovenstående link beskriver “den gode gamle måde” at gøre det på med oversavede skinner og dioder. Jeg forstår bare ikke rigtigt, at det kun foreslås at save den yderste skinne over. Så vidt jeg kan se, vil den inderste skinne også give en kortslutning. Jeg tror, at begge skinner skal saves over og forsynes via dioder.
Man kan også udnytte sin Arduino og nøjes med de oversavede skinner: https://create.arduino.cc/projecthub/Steve_Massikker/automated-railway-reverse-loop-0aae4c
Til begge metoder får man brug for en sensor, der kan fortælle, hvor toget befinder sig. Og hvorfor skulle jeg ikke bruge de strømsensorer med to dioder og en optokobler, som jeg efterhånden har fået styr på at bygge i forbindelse med min “rigtige” bane? DC eller AC burde være ligegyldigt, så længe jeg er sikker på, at strømmen løber den rigtige vej gennem dioderne. Og måske bruger havetoget så meget strøm, at jeg kan nøjes med kun en diode? Det skal i hvert fald forsøges.
Jeg kan naturligvis også udstyre toget med magneter og bruge reed switches. Det kan ende med at give den simpleste ledningsføring. Og jeg kan sætte magneten et vilkårligt sted på toget. Også på bagerste vogn, så jeg kan detektere, hvornår toget er helt inde i en blok, i stedet for blot at lokomotivets strømoptag er inde i blokken. De “kontakter”, man kan købe fra LGB, er sandsynligvis reedswitche. De kræver i hvert fald en magnet på toget.
Uanset om det kræver en eller to dioder, så kan det vel være de samme dioder, der beskytter polvender relæerne.
LGB har sat det i system og tilbyder oversavede skinnestykker med dioder og det hele, polariseringsrelæ, sensorer og det hele. Det er ganske vist dyrt, men det er sikkert nemt: http://track2.com/info/lgb-reverse-loop/LGBReverse.pdf
Faktisk har LGB en hel serie af automatiseringsdimser. PIKO har kopieret en del af disse, men den eneste ordentlige beskrivelse, jeg har kunnet finde, er fra LGB: https://www.champex-linden.de/download_fremddokumente/lgb_00559_explore_the_world_of_lgb.pdf
Næste udfordring bliver at have en enkeltsporet strækning med et vigespor midt på, hvor tog på skift sendes fra hver ende og passerer hinanden ved vigesporet:Det må kunne løses ved at save skinnerne over, så hver af de to enkeltsporede stykker og hver af de to vigespor udgør en blok. Hver blok skal være udstyret med en sensor. De to ender skal kunne polvendes og de to vigespor skal kunne slukkes for, og skal kunne strømforsynes fra enten den ene eller den anden ende. Det kræver sikkert en del relæer. Men de er billige. Resten er et spørgsmål om software, der holder styr på de to tog med hensyn til position, retning og hastighed.
Alt i alt ender vi med:
– 4 dobbelte omskifter relæer (RB – RE) og et enkelt omskifter relæ (RA) til at styre skinnerne
– 2 enkelte relæer og lidt mere elektronik til kortslutningssikring af de to strømforsyninger
– 6 reed switche (S1, S2, S5, S6, S8, S9) til at føle når et tog er inde i et vigespor eller en vendesløjfe
– 6 servoer til at drive sporskifterne (T1 – T6)
– 2 spændings- og strømforstærkere, der skal gøre de to DAC’er i ESP32 til strømforsyninger
– 2 små eller hellere en stor “transformator”, som i virkeligheden skal være 20 volt (eller lidt mere eller mindre) DC strømforsyninger. Måske har jeg en eller kan finde en fra en gammel bærbar PC?
– 1 ESP32 til at styre det hele
En skitse til at få alt dette til at hænge sammen:
Og så kan det være, at jeg på et tidspunkt tilføjer et trykknappanel, nogle lysdioder og måske et lille display til at vise status og styre banen, så jeg kan bruge toget uden en iPad. Lidt ligesom det er rart at kunne bruge min “rigtige” bane fra Ecos’en i stedet for altid at skulle gøre det via en PC. Det vil sikkert kræve en ESP8266 for at få flere I/O porte til rådighed. Det kræver i hvert fald, at jeg ikke bruger de to i2c porte på ESP32 til andre formål.
Problemet med displays er, at de enten er meget små eller for dyre. Man kan købe et 1,3 tommer monokront display for ganske få Euro. Men det svarer kun til 23 x 35 mm. Eller man kan købe et display med 4×20 tegn, som er ca. 3 x 8 cm. Skal det være større bliver det dyrt.
Så måske skal jeg hellere satse på et større antal lysdioder og nogen MCP23017 I/O porte.