Turinys:

Geležinkelio modelis - DCC komandų stotis naudojant „Arduino“:: 3 žingsniai
Geležinkelio modelis - DCC komandų stotis naudojant „Arduino“:: 3 žingsniai

Video: Geležinkelio modelis - DCC komandų stotis naudojant „Arduino“:: 3 žingsniai

Video: Geležinkelio modelis - DCC komandų stotis naudojant „Arduino“:: 3 žingsniai
Video: Ne traukinių modeliai, bet automobilių modeliai: Automatizuota transporto priemonių sistema 2024, Liepa
Anonim
Image
Image
„Arduino“kodas - komandų stotis su klaviatūra
„Arduino“kodas - komandų stotis su klaviatūra

Atnaujinta 2018 m. Rugpjūčio mėn.-žiūrėkite naują „Instructable“:

2016 m. Balandžio 28 d. Atnaujinimas: dabar 16 dalyvių / taškų valdymo galimybės komandų stotyje. Posūkiai T1 - T8 pasiekiami naudojant „B“klavišą. T9 - T16 posūkiai pasiekiami naudojant klavišą „C“

Atnaujinta 2016 m. Kovo 10 d

Dabar komandų stotyje pridėta 8 dalyvių / taškų valdymo galimybė. „Arduino“kodas buvo atitinkamai atnaujintas naudojant NMRA standartinį paketą, skirtą dalyviams (taip pat pagrįstas „Lenz / Atlas Compact“duomenų paketų, skirtų rinkimų aktyvumui kontroliuoti, tyrimu).

Posūkiai T1 - T8 pasiekiami naudojant „B“klavišą

Žr. Instrukcijas apie naudojamą duomenų paketų imtuvo grandinę ir būtiną „Arduino“kodą.

Atnaujinta 2016 m. Sausio 18 d.:

Prie grandinės pridėjau srovės jutimo rezistorių (1k5 omų) ir kondensatorių (10 uf) ir pakeičiau „Arduino“kodą, kad nutraukčiau maitinimą, kai aptinkama didžiausia srovė> 3200 mAm. H tilto specifikacijoje nurodyta 377 uA išėjimo jutimo srovė 1 Amp apkrovoje.

1,5 k omo rezistorius perduos 0,565 volto vienam stiprintuvui ant analoginio kaiščio 6. Naudojant 1023 žingsnius analoginėje įvestyje, gaunama 0,565 * 1023/5 = 116 apkrova.

A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (kad rezultatas būtų miliampas)

Įkrovos srovė miliampomis rodoma TFT

Pilna 4x4 klaviatūra apima F1 – F8 funkcijas ir dar 10 lokų (1–19) per klavišą „#“(norint pridėti 10 prie skaitinių klavišų, pradedant nuo 10 vietos).

Į „arduino“kodą įeina NMRA instrukcijų baitų standartas.

Žiūrėti nuorodą

www.nmra.org/sites/default/files/s-9.2.1_20…

(6 puslapis yra ypač svarbus)

Paketai išdėstyti pagal greičio žingsnių skaičių, ilgą / trumpą adresą ir funkcijų grupės nurodymus.

Prieš visus instrukcijų baitus pateikiama „1“bitų preambulė 11111111 (arba tuščiosios eigos paketas), po to eina;

pvz. A 4 baitų adresas 0 00000011 0 00111111 0 10000011 0 10111111

prilygsta 3 lokomotyvui, 128 greičio žingsniams, kryptimi į priekį ir 3 greičio žingsniui (galutinis baitas yra klaidos patikrinimas XOR)

pvz., 3 baitų adresas 0 00000011 0 10010000 0 10110011

prilygsta 3 lokui, 1 funkcijų grupei, FL lemputės plius XOR baitas (kiekvieną bitą skiria „0“bitas)

Žiūrėkite pridedamą vaizdo įrašą apie loko 12.

Funkcijos F1 - F8 pasiekiamos naudojant klavišą „A“, klavišą DIR (klavišas „*“= kryptis) FL (klavišas „0“= žibintai), o klavišas „#“skaitmeninėje klaviatūroje suteikia 10–19 vietų. D klavišas dabar naudojamas avariniam STOP sustabdymui.

Dėkojame įvairiems interneto tiekėjams už DCC informacijos šaltinius ir „Arduino“kodą.

Visų pirma, šį projektą įkvėpė Michaelas Blankas ir jo „Paprasta DCC - komandų stotis“

www.oscale.net/en/simpledcc

4x4 „Matrix Array 16“rakto membranos jungiklio klaviatūra („ebay“) 1,75 £

2,2 colio 240x320 serijos SPI TFT LCD ekrano modulis („ebay“) 7,19 £

UNIVERSALUS 12V 5A 60W MAITINIMO Kintamosios srovės adapteris (ebay) £ 6.49

„Nano V3.0“, skirtas „Arduino“su CH340G 5V 16M suderinamu ATmega328P (ebay) 2 x £ 3.30 = 6,60 £

Variklio tvarkyklės modulis LMD18200T, skirtas „Arduino R3“(„ebay“) 6,99 £

Jungtys, laidas, vero plokštė, potenciometras apie £ 3.50

Iš viso £ 32,52

Pagrindinė komandų stotis be tft ekrano ir 1 x nano būtų 22,03 GBP

[Pastaba: į TFT ekraną galima pridėti atminties kortelę ir pakeisti kodą, kad būtų rodomi pasirinktų variklių vaizdai, nors bibliotekos kodai turi būti redaguoti, kad būtų sukurta daugiau eskizo atminties. Dabartinis eskizo dydis yra didžiausias TFT „Arduino Nano“]

Originalus „Michael Blank“„Arduino“kodas buvo skirtas vienam varikliui, tik pirmyn / atgal, be funkcijų valdymo, be klaviatūros ir ekrano.

Aš pakeičiau kodą, įtraukdamas 1–19 variklių, ekraną, kryptį, žibintus, 8 funkcijas, avarinį sustabdymą ir automatinę srovės ribą.

LMD18200T tiltas gali turėti iki 3 amperų stiprumą, todėl jis tinka visoms svarstyklėms, įskaitant G skalę (sodo traukiniai). Maitinimo šaltinis ir elektronika yra tinkami naudoti tik patalpose, nebent galite užtikrinti, kad jie būtų atsparūs oro sąlygoms. Turiu komandinę stotį vasarnamyje su bėgių jungiamaisiais laidais, bėgančiais per sieną į takelį.

1 žingsnis: „Arduino“kodas - komandų stotis su klaviatūra

Dėkoju tvantenna2759, kad nurodė 2 klaidas schemoje, kur „Arduino“kodas neatitiko laidų, dabar atnaujintų (2017 m. Spalio 21 d.).

Dabar prie komandų stoties pridėta 16 dalyvių. Žr. Instrukcijas, nurodytas dalyvių / taškų schemoje, naudojant „Arduino Mini Pro“modulį.

Modifikuotas kodas, įskaitant aktyvumo valdymą, pridedamas žemiau.

Pagrindinis priedų dekodavimo paketas yra: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Analizuodamas „Lenz“(„Compact“/ „Atlas“) taškų valdymui naudojamą paketą, naudojau tokį dvejetainio paketo formatą 1 ir 2 baitams: tunAddr = 1 1 dalis: 1000 0001 1111 1000 / 1b aktyvumas: 1000 0001 1111 1001 2a: 1000 0001 1111 1010 / 2b aktyvumas: 1000 0001 1111 1011 3a: 1000 0001 1111 1100 / 3b: 1000 0001 1111 1101 4a: 1000 0001 1111 1110 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- 5a: 1000 0010 1111 1000 / 5b: 1000 0010 1111 1001 6a: 1000 0010 1111 1010 / 6b aktyvumas: 1000 0010 1111 1011 7a: 1000 0010 1111 1100 / 7b aktyvumas: 1000 0010 1111 1101 8a: 1000 0010 1111 1110 / 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- 9a: 1000 0011 1111 1000 / 9b: 1000 0011 1111 1001 ir tt ………

Ištrauka iš modifikuoto kodo: Pridėkite dar 2 „struktura“pranešimų atnaujinimus, jei nėra pakeitimų_tun1 („Struktūrinis pranešimas“ir „x“) {x.data [0] = 0x81; // priedų dekoderis 0x80 & adresas 1 x.data [1] = 0; }

void change_tun2 (struktūros pranešimas ir x) {x.data [0] = 0x82; // priedų dekoderis 0x80 ir adresas 2 x.data [1] = 0; }

Pridėti naują tuštumą dalyviams: boolean read_turnout () {delay (20);

loginė vertė pakeista_t = klaidinga; get_key ();

if (key_val> = 101 && key_val <= 404 && turn == 1) {

duomenys = 0xf8; // = dvejetainis 1111 1000

change_tun1 (žinutė [1]);

}

if (key_val> = 505 && key_val <= 808 && turn == 1) {

duomenys = 0xf8; // = dvejetainis 1111 1000

edit_tun2 (žinutė [1]);

}

if (key_val == 101 && turn == 1) {

jei (tun1 == 1) {

duomenys | = 0; // t1a

pakeistas_t = tiesa;}

jei (tun1 == 0) {

duomenys | = 0x01; // t1b

pakeistas_t = tiesa;}

}

if (key_val == 202 && turn == 1) {

jei (tun2 == 1) {

duomenys | = 0x02; // t2a

pakeistas_t = tiesa;

}

jei (tun2 == 0) {

duomenys | = 0x03; // t2b

pakeistas_t = tiesa; }

}

if (key_val == 303 && turn == 1) {

jei (tun3 == 1) {

duomenys | = 0x04; // t3a

pakeistas_t = tiesa;

}

jei (tun3 == 0) {

duomenys | = 0x05; // t3b

pakeistas_t = tiesa;}

}

if (key_val == 404 && turn == 1) {

jei (tun4 == 1) {

duomenys | = 0x06; // t4a

pakeistas_t = tiesa;

}

jei (tun4 == 0) {

duomenys | = 0x07; // f4b

pakeistas_t = tiesa;}

}

if (key_val == 505 && turn == 1) {

jei (tun5 == 1) {

duomenys | = 0; // t5a

pakeistas_t = tiesa;

}

jei (tun5 == 0) {

duomenys | = 0x01; // t5b

pakeistas_t = tiesa;}

}

ir tt ………………….

2 žingsnis: „Arduino“kodas - TFT ekranas

„Arduino“kodas - TFT ekranas
„Arduino“kodas - TFT ekranas
„Arduino“kodas - TFT ekranas
„Arduino“kodas - TFT ekranas
„Arduino“kodas - TFT ekranas
„Arduino“kodas - TFT ekranas
„Arduino“kodas - TFT ekranas
„Arduino“kodas - TFT ekranas

Ekrano grandinė išlieka ta pati, o modifikuotas kodas rodo 16 dalyvių būseną. Pastaba: Bibliotekos kodas užima beveik visą eskizo kodo atmintį, palikdamas mažai vietos naujoms funkcijoms. Jei kas nors turi efektyvesnį čia naudojamo TFT bibliotekos failą, praneškite man.

3 žingsnis: dalyvavimo valdiklis

Rinkimų aktyvumo valdiklis
Rinkimų aktyvumo valdiklis
Rinkimų aktyvumo valdiklis
Rinkimų aktyvumo valdiklis

Žr. Instrukcijas, kaip padaryti „Turnout / Points“valdiklį.

Visa grandinė valdo 16 taškų ir 15 priedų, tokių kaip žibintai, garsai, patefonas ir kt.

Rekomenduojamas: