Tartalomjegyzék:

Vasútmodell - DCC parancsnoki állomás az Arduino használatával :: 3 lépés
Vasútmodell - DCC parancsnoki állomás az Arduino használatával :: 3 lépés

Videó: Vasútmodell - DCC parancsnoki állomás az Arduino használatával :: 3 lépés

Videó: Vasútmodell - DCC parancsnoki állomás az Arduino használatával :: 3 lépés
Videó: TrainController: Blokkok 2024, Július
Anonim
Image
Image
Arduino kód - parancsnokság billentyűzettel
Arduino kód - parancsnokság billentyűzettel

2018. augusztus, frissítve-lásd az új Instructable-t:

2016. április 28 -i frissítés: Most 16 részvételi / pontvezérlő képesség a Command Station számára. A T1 - T8 fordulatok a "B" billentyűvel érhetők el A T9 - T16 fordulók a "C" gombon keresztül érhetők el

Frissítés 2016. március 10 -én:

Most 8 részvételi / pontvezérlő képességgel bővült a Command Station. Az Arduino kód ennek megfelelően frissítésre került az NMRA szabványos csomag használatával (szintén a Lenz / Atlas Compact adatcsomagok tanulmánya alapján).

A T1 - T8 fordulatok a „B” gombbal érhetők el

Lásd az utasításokat a használt adatcsomag -vevő áramkörről és a szükséges Arduino kódról.

Frissítés 2016. január 18.:

Hozzáadtam egy áramérzékelő ellenállást (1k5 ohm) és kondenzátort (10 uf) az áramkörhöz, és módosítottam az Arduino kódot, hogy lekapcsolják az áramot, ha a 3200 mAmp -es csúcsáramot észlelik. A H-híd specifikációja 377 uA / 1 Amp kimeneti érzékelőáramot jelent a terhelésben.

Az 1,5 k ohmos ellenállás 0,565 voltot ad ki erősítőnként az analóg 6 -os tűn. Az analóg bemenet 1023 lépésével ez 0,565 * 1023 /5 = 116 erősítőt tesz ki.

A = 100 * (analóg olvasás (AN_CURRENT)) / 116; A = A * 10; (hogy milliamperben adjon eredményt)

A terhelési áram milliamperben jelenik meg a TFT -n

A teljes 4x4-es billentyűzet F1-F8 funkciókat és további 10 lókust (1-19) tartalmaz a "#" billentyűvel (10-et hozzá kell adni a 10-es számtól kezdve).

Az arduino kód tartalmazza az utasítás bájtok NMRA szabványát.

Lásd a linket

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

(a 6. oldal különösen fontos)

A csomagok a sebességlépések száma, a hosszú / rövid cím és a funkciócsoport utasításai szerint vannak elrendezve.

Minden utasításbájt előtt 1 'bit 1161111 (vagy üresjáratú csomag) preambulum következik;

például. A 4 bájtos cím 0 00000011 0 00111111 0 10000011 0 10111111

loco 3, 128 sebességlépés, előrehaladási irány és 3. sebességlépés (a végbájt a hibaellenőrzés XOR)

pl. 3 bájtos cím 0 00000011 0 10010000 0 10110011

egyenlő a 3 -as loco -val, az 1 -es funkciócsoportdal, az FL fények bekapcsolnak plusz XOR bájt (a „0” bit elválaszt minden bájtot)

Lásd a mellékelt bemutató videót a 12 -es mozdonyhoz.

Az F1 - F8 funkciók az „A”, a DIR („*” gomb = irány) FL („0” gomb = világít) és a „#” gombok 10 -től 19 -ig adhatók meg a numerikus billentyűzeten. A „D” gomb mostantól „vészleállítás”.

Köszönet a különböző szolgáltatóknak az interneten a DCC információforrásokért és az Arduino kódért.

Ezt a projektet különösen Michael Blank és az "Egyszerű DCC - parancsnoki állomás" ihlette

www.oscale.net/en/simpledcc

4x4 Mátrix tömb 16 kulcsos membránkapcsoló billentyűzet (ebay) £ 1.75

2,2 hüvelykes 240x320 soros SPI TFT LCD kijelző modul (ebay) 7,19 £

UNIVERZÁLIS 12V 5A 60W HÁLÓZATI HÁLÓZATI ADAPTER (ebay) £ 6.49

Nano V3.0 Arduino számára CH340G 5V 16M kompatibilis ATmega328P (ebay) 2 x £ 3.30 = 6,60 £

LMD18200T motorvezérlő modul Arduino R3 -hoz (ebay) 6,99 £

Csatlakozók, vezeték, vero kártya, potenciométer kb. £ 3.50

Összesen 32,52 font

Az alap parancsnoki állomás tft képernyő és 1 x nano nélkül 22,03 font lenne

[Megjegyzés: Lehetőség van memóriakártya hozzáadására a TFT kijelzőre, és a kód módosítására, hogy megjelenjenek a kiválasztott motorok képei, bár a könyvtári kódokat le kell szerkeszteni, hogy több memóriát hozzon létre a vázlathoz. A jelenlegi vázlatméret a TFT Arduino Nano esetében a maximális]

Michael Blank eredeti Arduino kódja egy motorra vonatkozott, csak előre / hátra, funkcióvezérlés, billentyűzet és kijelző nélkül.

Módosítottam a kódot, hogy 1–19 motort, kijelzőt, irányt, fényeket, 8 funkciót, vészleállást és automatikus áramkorlátot tartalmazzon.

Az LMD18200T híd akár 3 erősítőt is képes szállítani, így minden mérlegre alkalmas, beleértve a G-skálát is (kerti vonatok). A hálózati tápegység és az elektronika csak beltéri használatra alkalmas, hacsak nem tudja minden időjárásállóvá tenni. Van egy parancsnoki állomásom a nyaralóban, síncsatlakozó vezetékek futnak ki a falon keresztül a pályához.

1. lépés: Arduino kód - parancsállomás billentyűzettel

Köszönöm a tvantenna2759 -nek, hogy 2 hibát jelzett az áramköri rajzon, ahol az Arduino kód nem egyezett a most frissített vezetékekkel (2017. október 21.).

Most 16 részvételi arányt adtak hozzá a parancsnoki állomáshoz. Lásd az utasításokat a részvételi / pont kapcsolási rajzon az Arduino Mini Pro modul használatával.

A módosított kód, beleértve a részvételi szabályzót, az alábbiakban található.

Az alapvető tartozékdekóder -csomag: 0001 1111 1000 / 1b: 1000 0001 1111 1001 2a. Rész: 1000 0001 1111 1010 / 2b: 1000 0001 1111 1011 3a: 1000 0001 1111 1100 / 3b: 1000 0001 1111 1101 4a: 1000 0001 1111 1110 / részvétel 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- 5a részvétel: 1000 0010 1111 1000 / 5b részvétel: 1000 0010 1111 1001 6a részvétel: 1000 0010 1111 1010 / 6b részvétel: 1000 0010 1111 1011 7a részvétel: 1000 0010 1111 1100 / 7b részvétel: 1000 0010 1111 1101 8a: 1000 0010 1111 1110 / 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- 9a. Részvétel: 1000 0011 1111 1000 / 9b. Részvétel: 1000 0011 1111 1001 stb.

Kivonat a módosított kódból: Adjon hozzá még 2 'struktura' üzenetfrissítést, és ne módosítsa a módosítást_tun1 (szerkezetüzenet & x) {x.data [0] = 0x81; // kiegészítő dekódoló 0x80 & cím 1 x.data [1] = 0; }

void change_tun2 (strukture Message & x) {x.data [0] = 0x82; // kiegészítő dekódoló 0x80 & cím 2 x.data [1] = 0; }

Új üresség hozzáadása a részvételhez: boolean read_turnout () {delay (20);

logikai érték megváltozott_t = hamis; get_key ();

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

adatok = 0xf8; // = bináris 1111 1000

módosítás_hang1 (msg [1]);

}

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

adatok = 0xf8; // = bináris 1111 1000

módosítás_hang2 (msg [1]);

}

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

ha (tun1 == 1) {

adatok | = 0; // t1a

módosított_t = igaz;}

ha (tun1 == 0) {

adatok | = 0x01; // t1b

módosított_t = igaz;}

}

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

ha (tun2 == 1) {

adatok | = 0x02; t2a

módosított_t = igaz;

}

ha (tun2 == 0) {

adatok | = 0x03; // t2b

módosított_t = igaz; }

}

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

ha (tun3 == 1) {

adatok | = 0x04; t3a

módosított_t = igaz;

}

ha (tun3 == 0) {

adatok | = 0x05; // t3b

módosított_t = igaz;}

}

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

ha (tun4 == 1) {

adatok | = 0x06; t4a

módosított_t = igaz;

}

ha (tun4 == 0) {

adatok | = 0x07; // f4b

módosított_t = igaz;}

}

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

ha (tun5 == 1) {

adatok | = 0; t5a

módosított_t = igaz;

}

ha (tun5 == 0) {

adatok | = 0x01; // t5b

módosított_t = igaz;}

}

stb ………………….

2. lépés: Arduino kód - TFT kijelző

Arduino kód - TFT kijelző
Arduino kód - TFT kijelző
Arduino kód - TFT kijelző
Arduino kód - TFT kijelző
Arduino kód - TFT kijelző
Arduino kód - TFT kijelző
Arduino kód - TFT kijelző
Arduino kód - TFT kijelző

A kijelző áramkör ugyanaz marad, módosított kóddal, amely a 16 részvétel állapotát mutatja. Megjegyzés: A könyvtári kód majdnem az összes vázlatkód memóriát elfoglalja, így kevés hely marad az új funkciók számára. Ha valakinek van hatékonyabb könyvtári fájlja az itt használt TFT -hez, kérem, tudassa velem.

3. lépés: A részvételi szabályozó

Részvételi szabályozó
Részvételi szabályozó
Részvételi szabályozó
Részvételi szabályozó

Lásd az utasítást a Turnout / Points kontroller elkészítéséről.

A teljes áramkör 16 pontot és 15 tartozékot vezérel, például fényeket, hangokat, lemezjátszót stb.

Ajánlott: