Innholdsfortegnelse:
- Trinn 1: Arduino -kode - Kommandostasjon med tastatur
- Trinn 2: Arduino -kode - TFT -skjerm
- Trinn 3: Turnout Controller
Video: Modelljernbane - DCC kommandostasjon ved bruk av Arduino :: 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Oppdatert august 2018-se nye Instructable:
Oppdatering 28. april 2016: Nå 16 oppmøte / poengkontrollfunksjoner til Command Station. Turnoutene T1 - T8 er tilgjengelige via 'B' -tasten Turnouts T9 - T16 er tilgjengelige via 'C' -tasten
Oppdatering 10. mars 2016:
Nå lagt til 8 valgmuligheter / poengkontrollfunksjoner til Command Station. Arduino -koden er oppdatert tilsvarende ved bruk av NMRA -standardpakken for turnouts (også basert på en studie av Lenz / Atlas Compact -datapakker for valgdeltakelse).
Vekslingene T1 - T8 er tilgjengelige via 'B' -tasten
Se instruksjonene om datapakke -mottakerkretsen som brukes og Arduino -kode påkrevd.
Oppdatering 18. januar 2016:
Jeg har lagt til en strømfølelsesmotstand (1k5 ohm) og kondensator (10 uf) til kretsen og endret Arduino -koden for å kutte strømmen når en toppstrøm på> 3200 mAmps oppdages. H-bridge-spesifikasjonen angir en utgangssensestrøm på 377 uA per 1 ampere i lasten.
1,5 k ohm motstanden vil levere 0,565 volt per ampere på den analoge pinnen 6. Med 1023 trinn på den analoge inngangen gir dette 0,565 * 1023 /5 = 116 per ampere.
A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (for å gi resultat i milliampere)
Laststrømmen i milliampere vises på TFT
Det komplette 4x4-tastaturet inkluderer F1 til F8-funksjoner og ytterligere 10 locos (1-19) gjennom '#' -tasten (for å legge til 10 til de numeriske tastene som starter fra loco 10).
Arduino -koden inkluderer NMRA -standarden for instruksjonsbyte.
Se lenke
www.nmra.org/sites/default/files/s-9.2.1_20…
(side 6 er spesielt relevant)
Pakkene er ordnet i henhold til antall hastighetstrinn, lang / kort adresse og funksjonsgruppeanvisninger.
Alle instruksjonsbyte innledes med en innledning av '1' bits 11111111 (eller inaktiv pakke) etterfulgt av;
f.eks. En 4 byte adresse 0 00000011 0 00111111 0 10000011 0 10111111
tilsvarer loko 3, 128 hastighetstrinn, fremoverretning og hastighetstrinn 3 (sluttbyten er feilkontrollen XOR)
f.eks. en 3 byte adresse 0 00000011 0 10010000 0 10110011
tilsvarer loco 3, funksjonsgruppe 1, FL lyser pluss XOR byte (en '0' bit skiller hver byte)
Se vedlagte demonstrasjonsvideo for loco 12.
Funksjonene F1 - F8 er tilgjengelige via 'A' -tasten, DIR ('*' tast = retning) FL ('0' tast = lys) og tasten '#' gir plass 10 til 19 på det numeriske tastaturet. 'D' -tasten brukes nå for en 'nødstopp'.
Takk til forskjellige leverandører på nettet for kilder til DCC -informasjon og Arduino -kode.
Spesielt ble dette prosjektet inspirert av Michael Blank og hans 'Simple DCC - a command station'
www.oscale.net/en/simpledcc
4x4 Matrix Array 16 Key Membrane Switch Tastatur (ebay) £ 1,75
2,2 tommers 240x320 seriell SPI TFT LCD -skjermmodul (ebay) £ 7,19
UNIVERSAL 12V 5A 60W STRØMFORSYNING AC -ADAPTER (ebay) £ 6,49
Nano V3.0 For Arduino med CH340G 5V 16M kompatibel ATmega328P (ebay) 2 x £ 3,30 = £ 6,60
Motordrivermodul LMD18200T for Arduino R3 (ebay) £ 6,99
Koblinger, ledning, verokort, potensiometer ca. £ 3,50
Totalt £ 32,52
Den grunnleggende kommandostasjonen uten tft -skjerm og 1 x nano ville være £ 22,03
[Merk: Det er mulig å legge til et minnekort i TFT -displayet og endre kode for å vise bilder av utvalgte motorer, selv om bibliotekskodene må redigeres ned for å skape mer minne for skissen. Gjeldende skissestørrelse er maksimalt for TFT Arduino Nano]
Den originale Arduino -koden av Michael Blank var for én motor, bare forover / bakover uten funksjonskontroll, ingen tastatur og ingen display.
Jeg har endret koden til å inkludere 1 - 19 motorer, en skjerm, retning, lys, 8 funksjoner, nødstopp og automatisk strømgrense.
LMD18200T-broen kan bære opptil 3 ampere, noe som gjør den egnet for alle skalaer, inkludert G-skala (hagetog). Strømforsyningen og elektronikken er kun egnet for innendørs bruk, med mindre du kan gjøre alt værbestandig. Jeg har kommandostasjonen i sommerhuset med skinneforbindelsestråder som løper ut gjennom veggen til sporet.
Trinn 1: Arduino -kode - Kommandostasjon med tastatur
Min takk til tvantenna2759 for å påpeke 2 feil i kretsdiagrammet der Arduino -koden ikke samsvarte med ledningene, nå oppdatert (21. oktober 2017).
Nå lagt til 16 oppmøter til Command Station. Se instruksjonene på kretsdiagrammet om valg / poeng ved bruk av Arduino Mini Pro -modulen.
Den endrede koden inkludert valgdeltakelse er vedlagt nedenfor.
Basic Accessory decoder packet er: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Fra å analysere pakken som ble brukt av Lenz (Compact / Atlas) for punktkontroll, har jeg brukt følgende binære pakkeformat for byte 1 og 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / Turnout 1b: 1000 0001 1111 1001 Turnout 2a: 1000 0001 1111 1010 / Turnout 2b: 1000 0001 1111 1011 Turnout 3a: 1000 0001 1111 1100 / Turnout 3b: 1000 0001 1111 1101 Turnout 4a: 1000 0001 1111 1110 / Turnout 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- Vekst 5a: 1000 0010 1111 1000 / Vekst 5b: 1000 0010 1111 1001 Vekst 6a: 1000 0010 1111 1010 / Vekst 6b: 1000 0010 1111 1011 Vekst 7a: 1000 0010 1111 1100 / Turnout 7b: 1000 0010 1111 1101 Turnout 8a: 1000 0010 1111 1110 / Turnout 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Valgdeltakelse 9a: 1000 0011 1111 1000 / valgdeltakelse 9b: 1000 0011 1111 1001 etc ………
Trekk ut fra den endrede koden: Legg til ytterligere 2 'struct' -meldingsoppdateringervoid amend_tun1 (struct Message & x) {x.data [0] = 0x81; // tilbehør dekoder 0x80 & adresse 1 x.data [1] = 0; }
void amend_tun2 (struct Message & x) {x.data [0] = 0x82; // tilbehør dekoder 0x80 & adresse 2 x.data [1] = 0; }
Legg til nytt tomrom for valgdeltakelser: boolsk read_turnout () {forsinkelse (20);
boolsk change_t = false; get_key ();
hvis (key_val> = 101 && key_val <= 404 && turn == 1) {
data = 0xf8; // = binær 1111 1000
amend_tun1 (msg [1]);
}
hvis (key_val> = 505 && key_val <= 808 && turn == 1) {
data = 0xf8; // = binær 1111 1000
amend_tun2 (msg [1]);
}
hvis (key_val == 101 && turn == 1) {
hvis (tun1 == 1) {
data | = 0; // t1a
change_t = true;}
hvis (tun1 == 0) {
data | = 0x01; // t1b
change_t = true;}
}
hvis (key_val == 202 && turn == 1) {
hvis (tun2 == 1) {
data | = 0x02; // t2a
endret_t = sant;
}
hvis (tun2 == 0) {
data | = 0x03; // t2b
endret_t = sant; }
}
hvis (key_val == 303 && turn == 1) {
hvis (tun3 == 1) {
data | = 0x04; // t3a
endret_t = sant;
}
hvis (tun3 == 0) {
data | = 0x05; // t3b
change_t = true;}
}
hvis (key_val == 404 && turn == 1) {
hvis (tun4 == 1) {
data | = 0x06; // t4a
endret_t = sant;
}
hvis (tun4 == 0) {
data | = 0x07; // f4b
change_t = true;}
}
hvis (key_val == 505 && turn == 1) {
hvis (tun5 == 1) {
data | = 0; // t5a
endret_t = sant;
}
hvis (tun5 == 0) {
data | = 0x01; // t5b
change_t = true;}
}
etc ………………….
Trinn 2: Arduino -kode - TFT -skjerm
Skjermkretsen forblir den samme med en modifisert kode for å vise statusen til de 16 turnoutene. Merk: Bibliotekskoden tar opp nesten hele skissekodeminnet og gir lite plass til nye funksjoner. Hvis noen har en mer effektiv biblioteksfil for TFT som brukes her, vennligst gi meg beskjed.
Trinn 3: Turnout Controller
Se instruksjonene om hvordan du lager Turnout / Point -kontrolleren.
Hele kretsen styrer 16 punkter og 15 tilbehør som lys, lyder, platespiller, etc.
Anbefalt:
Bærbar datamaskin Touchpad kontrollert modelljernbane - PS/2 Arduino -grensesnitt: 14 trinn
Bærbar datamaskin Touchpad kontrollert modelljernbane | PS/2 Arduino -grensesnitt: En bærbar PCs styreflate er en av de flotte enhetene du kan bruke som inngang for mikrokontrollerprosjekter. Så i dag, la oss implementere denne enheten med en Arduino mikrokontroller for å kontrollere en modelljernbane. Ved å bruke en PS/2 -berøringsplate vil vi kunne kontrollere 3 t
Kontroll ledet over hele verden ved bruk av internett ved hjelp av Arduino: 4 trinn
Kontroll ledet over hele verden ved bruk av internett ved hjelp av Arduino: Hei, jeg er Rithik. Vi kommer til å lage en Internett -kontrollert LED ved hjelp av telefonen din. Vi kommer til å bruke programvare som Arduino IDE og Blynk. Det er enkelt, og hvis du lyktes kan du kontrollere så mange elektroniske komponenter du vilTing We Need: Hardware:
Overvåke akselerasjon ved bruk av Raspberry Pi og AIS328DQTR ved hjelp av Python: 6 trinn
Overvåke akselerasjon ved hjelp av Raspberry Pi og AIS328DQTR Bruke Python: Akselerasjon er begrenset, tror jeg i henhold til noen fysikklover.- Terry Riley En gepard bruker fantastisk akselerasjon og raske endringer i hastighet når jeg jager. Den raskeste skapningen i land en gang i blant bruker sitt høyeste tempo for å fange byttedyr. Den
Atollic TrueStudio-Switch på LED-en ved å trykke på trykknappen ved bruk av STM32L100: 4 trinn
Atollic TrueStudio-Switch på LED-en ved å trykke på trykknappen ved bruk av STM32L100: I denne opplæringen til STM32 skal jeg fortelle deg hvordan du leser en GPIO-pin av STM32L100, så her skal jeg lage en ombord LED-glød av bare trykke på trykknappen
Brannalarmsystem ved bruk av Arduino [i få enkle trinn]: 3 trinn
Brannalarmsystem ved bruk av Arduino [i få enkle trinn]: Er du ute etter å lage et enkelt og interessant prosjekt med Arduino som samtidig kan være veldig nyttig og potensielt livreddende? Hvis ja, har du kommet til rett sted for å lære noe nytt og nyskapende. I dette innlegget går vi