Obsah:

Záhradný vlak - Arduino Wireless NMRA DCC: 4 kroky (s obrázkami)
Záhradný vlak - Arduino Wireless NMRA DCC: 4 kroky (s obrázkami)

Video: Záhradný vlak - Arduino Wireless NMRA DCC: 4 kroky (s obrázkami)

Video: Záhradný vlak - Arduino Wireless NMRA DCC: 4 kroky (s obrázkami)
Video: dcc esp32 model train minimal example using rmt using lmd18200, dcc tutorial 2024, November
Anonim
Image
Image
Dizajn systému
Dizajn systému

V nadväznosti na predchádzajúci návod s DCC na systéme mŕtvej koľajnice som myšlienku ďalej rozvinul pomocou ručného veliteľského stanovišťa DCC s klávesnicou a LCD displejom. Riadiaca stanica obsahuje všetky kódy požadované pre pokyny NMRA DCC, ale namiesto pripojenia k koľajniciam sú údaje prenášané rádiovým modulom RF24L01+ do prijímača namontovaného v nákladnom vozidle alebo pod lokomotívou - kdekoľvek to miestnosť dovolí.

Vaše lokomotívy musia byť samozrejme vybavené dekodérom zaťažiteľnosti zodpovedajúcim motorom motora.

Krok 1: Návrh systému

Dizajn systému
Dizajn systému

Arduino Pro Mini je jadrom dizajnu. Použitie Fritzingu na vývoj obvodu a výrobu plošných spojov.

Dokázal som použiť rovnakú dosku plošných spojov pre vysielač aj prijímač, čím som ušetril určité náklady.

Vysielač má pripojenia pre klávesnicu a LCD, zatiaľ čo prijímač ich nevyžaduje a na napájanie výstupu DCC pre lokomotívu používa H-mostík.

Ďalší vývoj zahŕňa pripojenia pre väčší H-most, ak je to potrebné pre výkonnejšie lokomotívy.

PCF8574 je možné vymazať, ak použijete LCD displej dodávaný s batohom umožňujúci pripojenie SCA / SCL na Arduine na napájanie displeja iba pomocou 2 vodičov. Zoznam dielov: Celkom = približne 60 GBP za DCC Command Station + 1 prijímač Ďalšie náklady na prijímače = 10,00 GBP za kus. + batérie

Arduino Pro Mini. x 2 = 4,00 GBP

Membránová klávesnica 4x3 = 3,00 GBP

20 x 4 LCD displej = 7,00 GBP

PCF5874 = 1,80 GBP

NRF24L01+. rádiové moduly x 2 = 5,80 GBP

Výroba PCB so zľavou 10 (alebo môže byť použitá doska Vero) = 24 GBP alebo 4,80 GBP za 2 zľavy

Regulátor 3,3 v = 0,17 GBP (balenie po 25 kusoch od RS Comp)

5v regulátor LM7805 = 0,30 GBP

H-most SN754410ne = 3,00 GBP

Lloytron nabíjateľné batérie 2 700 mAh AA x 12 = 22,00 GBP. (batérie s nižším výkonom maH sú lacnejšie)

Kondenzátory, hrnce, piny, konektory atď. = Približne 2,00 GBP

Kryt 190x110x60 mm = 8,00 GBP

Vysielač - nabíjačka telefónu / batéria = 2,00 GBP

Krok 2: Vysielač

Vysielač
Vysielač

Schéma zapojenia je zobrazená tam, kde sú piny D2 až D8 na zariadení Arduino Pro Mini pripojené k klávesnici. Na analógový kolík A0 je na nastavenie rýchlosti pripojený potenciometer 100 kOhm. Piny SDA a SCL tvoriace čip PCF8574 sú pripojené k pinom A4 a A5 na Arduino Pro Mini pomocou spájkovaných drôtov k kolíkom na hornej vrstve Pro Mini.

Náčrt Arduino je priložený na stiahnutie.

Použil som LCD displej 20 x 4, ktorý umožňoval 4 riadky informácií s 20 znakmi na riadok. Klávesnica ponúka nasledujúce menu:

1 až 9 = adresa lokomotívy * = smer 0 = svetlá # = ponuka funkcií pre tlačidlá 1 až 8

Základný popis náčrtu Arduino Pro Mini: Tento riadok kódu usporiada správu DCC vo formáte HEX. msg štruktúrovaná správa [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // nečinná správa

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 -bytová adresa

};

Na uloženie nastavení pre každé lokomotívy je séria polí nastavená nasledovne:

int la [20]; // pole na uloženie čísiel lokomotívy

int sa [20]; // pole na uchovávanie hodnôt rýchlosti

int fda [20]; // pole na zadržanie dir

int fla [20]; // pole na uchytenie svetiel

int f1a [20]; // pole na uloženie zábavy1 …..

int f8a [20]; // pole na uloženie zábavy8

Aby bolo možné priebežne meniť pokyny DCC:

Pokyny pre rýchlosť: neplatné doplnok_ rýchlosť (štruktúrovaná správa & x) {

x.data [0] = locoAdr;

x.data [1] = 0x40; // locoMsg s 28 stupňami rýchlosti}

Pokyny k funkcii:

neplatné doplnok_skupiny1 (štruktúrovaná správa & x) {

x.data [0] = locoAdr;

x.data [1] = 0x80; // locoMsg s inštrukciou skupiny jedna 0x80}

Hlavná slučka náčrtu:

void loop (void) {if (read_locoSpeed ()) {assemble_dcc_msg_speed ();

send_data_1 (); // odosielanie údajov bezdrôtovo

oneskorenie (10);

send_data_3 (); // zobrazenie údajov na LCD displeji

send_data_4 (); // zobrazenie údajov na sériovom monitore}

if (read_function ()) {

zostavit_dcc_msg_group1 ();

send_data_1 ();

oneskorenie (10);

send_data_3 (); }}

Aktualizovať údaje pri zmene rýchlosti:

boolean read_locoSpeed () Zistí to novú adresu lokomotívy, nastavenie rýchlosti alebo smeru a podľa toho zmení „údaje“HEX. Tu som špecifikoval 28 rýchlostných krokov a aby som splnil štandard NMRA S 9.2, údaje o rýchlosti je potrebné nájsť v vyhľadávacej tabuľke. v 'speed_step ()'

void speed_step () {prepínač (locoSpeed) {

prípad 1: údaje | = 0x02; prestávka;

prípad 2: údaje | = 0x12; prestávka;

prípad 3: údaje | = 0x03; prestávka;

………

prípad 28: údaje | = 0x1F; prestávka; }}

Aktualizovať údaje pri zmene funkcií:

boolean read_function ()

if (fla [locoAdr] == 0) {data = 0x80;

} // svetlomety vypnuté

if (fla [locoAdr] == 1) {

údaje = 0x90;

} // svetlomety zapnuté

Pre každú funkciu:

if (f2a [locoAdr] == 0) {data | = 0; }. // Funkcia 2 je vypnutá

if (f2a [locoAdr] == 1) {

údaje | = 0x02; // Funkcia 2 na} „dátach“je vytvorená kombináciou ['| =' zložených bitov alebo] HEX kódov pre každú funkciu.

Krok 3: Prijímač

Prijímač
Prijímač

Schéma zapojenia je zobrazená tam, kde sú piny 5 a 6 Arduino Pro Mini použité na poskytnutie signálu DCC dodávaného do H-mostíka. Páry mostíka H sú zapojené paralelne, aby sa zvýšila prúdová kapacita. V závislosti od prúdu odoberaného lokomotívou môže byť potrebné pripojiť k 16-kolíkovému DIP zariadeniu chladič alebo môže byť externe pripojený vysokovýkonný mostík H.

Náčrt Arduino je priložený na stiahnutie. Signál DCC je tvorený hodinami s frekvenciou 2 MHz

neplatný SetupTimer2 () vykonáva túto úlohu.

Hodiny obsahujú „krátke impulzy“(58us) pre „1“v údajoch DCC a „dlhé impulzy“(116us) pre „0“v údajoch DCC.

Slučka je prázdna, získava údaje z rádia a ak sa nájde platný reťazec, údaje sa skonvertujú na údaje DCC.

void loop (void) {if (radio.available ()) {bool done = false; done = radio.read (inmsg, 1); // prečítajte prijaté údaje

char rc = inmsg [0]; // vložte do tohto poľa prečítaný znak

if (rc! = 0) {. // ak sa znak nerovná nule

inString.concat (rc); // zostavenie správy}

if (rc == '\ 0') {// ak znak je '/0' koniec správy

Serial.println (inString); // vytlačte zostavenú správu

reťazec (); // zrušením konštrukcie reťazcovej správy získate pokyny DCC

} } }

Krok 4: Spustite Locos

Spustite Locos
Spustite Locos

Aby ste sa vyhli prerušeniu údajov z prevádzky viacerých vlakov na tej istej koľaji, musíte odpojiť kontakty medzi kolesami a koľajou pre každé zamestnané lokomotíva a nákladné auto.

Užite si voľne jazdiace vlaky bez ohľadu na podmienky trate - aký rozdiel! Bez problémov, bez štart-stop a bez čistenia.

Batérie, ktoré som použil, sú nabíjateľné LLoytron AA x 12. Špeciálne pre ne som postavil nabíjačku, ktorá nabíja 6 súčasne. (pozri návod)

Odporúča: