Obsah:

Modelová železnice - DCC Command Station využívající Arduino :: 3 kroky
Modelová železnice - DCC Command Station využívající Arduino :: 3 kroky

Video: Modelová železnice - DCC Command Station využívající Arduino :: 3 kroky

Video: Modelová železnice - DCC Command Station využívající Arduino :: 3 kroky
Video: DCC + LOCONET + PC 2024, Červenec
Anonim
Image
Image
Arduino Code - velitelská stanice s klávesnicí
Arduino Code - velitelská stanice s klávesnicí

Aktualizováno v srpnu 2018-viz nový Instructable:

Aktualizace 28. dubna 2016: Nyní schopnost 16 výhybek / bodů ovládat velitelské stanoviště. Výhybky T1 - T8 jsou k dispozici pomocí tlačítka „B“Výhybky T9 - T16 jsou k dispozici pomocí tlačítka „C“

Aktualizace 10. března 2016:

Nyní byla do Command Station přidána možnost ovládání 8 výhybek / bodů. Kód Arduino byl odpovídajícím způsobem aktualizován pomocí standardního paketu NMRA pro výhybky (také na základě studie datových paketů Lenz / Atlas Compact pro řízení výhybek).

Výhybky T1 - T8 jsou k dispozici pomocí tlačítka „B“

Viz instrukce o použitém obvodu přijímače datových paketů a požadovaném kódu Arduino.

Aktualizace 18. ledna 2016:

Do obvodu jsem přidal odpor pro snímání proudu (1k5 ohm) a kondenzátor (10 uf) a upravil kód Arduino, aby přerušil napájení, když je detekován špičkový proud> 3200 mAmps. Specifikace H-můstku uvádí výstupní snímací proud 377 uA na 1 A v zátěži.

1,5 k ohmový odpor dodá 0,565 voltů na Amp na analogovém pinu 6. Při 1023 krocích na analogovém vstupu to dává 0,565 * 1023/5 = 116 na Amp zátěže.

A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (k získání výsledku v miliampérech)

Proud zátěže v miliampérech je zobrazen na TFT

Plná klávesnice 4x4 obsahuje funkce F1 až F8 a dalších 10 lokomotiv (1-19) pomocí klávesy '#' (pro přidání 10 k numerickým klávesám počínaje loco 10).

Arduino kód obsahuje standard NMRA pro instrukční bajty.

Viz odkaz

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

(strana 6 má zvláštní význam)

Pakety jsou seřazeny podle počtu rychlostních kroků, dlouhé / krátké adresy a instrukcí funkční skupiny.

Všem instrukčním bytům předchází preambule '1' bitů 11111111 (nebo nečinný paket) následovaná;

např. 4bajtová adresa 0 00000011 0 00111111 0 10000011 0 10111111

odpovídá loco 3, 128 rychlostních kroků, směr vpřed a rychlostní krok 3 (koncový bajt je kontrola chyb XOR)

např. 3bajtová adresa 0 00000011 0 10010000 0 10110011

odpovídá loco 3, funkční skupina 1, FL svítí plus XOR byte (každý byte odděluje bit '0')

Podívejte se na přiložené demonstrační video pro loco 12.

Funkce F1 - F8 jsou k dispozici přes klávesu „A“, DIR (klávesa „*“= směr) FL (klávesa „0“= světla) a klávesa „#“udává lokomotivy 10 až 19 na numerické klávesnici. Klávesa „D“se nyní používá pro „nouzové zastavení“.

Díky různým poskytovatelům na webu za zdroje informací DCC a kódu Arduino.

Tento projekt byl inspirován zejména Michaelem Blankem a jeho 'Simple DCC - velitelskou stanicí'

www.oscale.net/en/simpledcc

Klávesnice s membránovým přepínačem s maticí 4x4 16 kláves (ebay) 1,75 GBP

2,2 palcový 240x320 sériový modul SPI TFT LCD displej (ebay) 7,19 liber

UNIVERZÁLNÍ 12V 5A 60W NAPÁJECÍ ADAPTÉR (ebay) 6,49 GBP

Nano V3.0 pro Arduino s CH340G 5V 16M kompatibilní ATmega328P (ebay) 2 x 3,30 GBP = 6,60 GBP

Modul ovladače motoru LMD18200T pro Arduino R3 (ebay) 6,99 liber

Konektory, drát, vero deska, potenciometr cca 3,50 GBP

Celkem 32,52 GBP

Základní velitelská stanice bez tft obrazovky a 1 x nano by byla 22,03 GBP

[Poznámka: Na displej TFT je možné přidat paměťovou kartu a upravit kód tak, aby zobrazoval obrázky vybraných motorů, ačkoli kódy knihovny je třeba upravit, aby se vytvořila více paměti pro skicu. Aktuální velikost skici je u TFT Arduino Nano maximálně]

Původní kód Arduina od Michaela Blanka byl pro jeden motor, pouze vpřed / vzad bez ovládání funkcí, bez klávesnice a bez displeje.

Upravil jsem kód tak, aby zahrnoval 1–19 motorů, displej, směr, světla, 8 funkcí, nouzové zastavení a automatické omezení proudu.

Most LMD18200T může nést až 3 ampéry, díky čemuž je vhodný pro všechny váhy včetně G-scale (zahradní vlaky). Síťový napájecí zdroj a elektronika jsou vhodné pouze pro vnitřní použití, pokud to nedokážete zajistit proti povětrnostním vlivům. Mám velitelské stanoviště v letohrádku s dráty spojujícími dráhu skrz zeď na kolej.

Krok 1: Arduino Code - velitelská stanice s klávesnicí

Moje poděkování tvantenna2759 za upozornění na 2 chyby ve schématu zapojení, kde kód Arduino neodpovídá zapojení, nyní aktualizováno (21. října 2017).

Nyní přidáno 16 výhybek na Command Station. Viz instrukce na schématu zapojení výhybek / bodů pomocí modulu Arduino Mini Pro.

Upravený kód včetně ovládání výhybky je přiložen níže.

Základní paket dekodéru příslušenství je: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Z analýzy paketu používaného Lenzem (Compact / Atlas) pro řízení bodů jsem použil následující formát binárních paketů pro bajty 1 a 2: tunAddr = 1 Výhybka 1a: 1000 0001 1111 1000 / Výhybka 1b: 1000 0001 1111 1001 Výhybka 2a: 1000 0001 1111 1010 / Výhybka 2b: 1000 0001 1111 1011 Výhybka 3a: 1000 0001 1111 1100 / Výhybka 3b: 1000 0001 1111 1101 Výhybka 4a: 1000 0001 1111 1110 / Výhybka 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- ---------------------------------------------------------- ----------------- Výhybka 5a: 1 000 0010 1111 1 000 / Výhybka 5b: 1 000 0010 1111 1001 Výhybka 6a: 1 000 0010 1111 1010 / Výhybka 6b: 1 000 0010 1111 1011 Výhybka 7a: 1000 0010 1111 1100 / Výhybka 7b: 1000 0010 1111 1101 Výhybka 8a: 1000 0010 1111 1110 / Výhybka 8b: 1000 0010 1111 1111 ----------------------- ---------------------------------------------------------- ---------------------------------- Účast 9a: 1000 0011 1111 1000 / Účast 9b: 1000 0011 1111 1001 atd ………..

Extrahovat z upraveného kódu: Přidejte 2 další aktualizace „strukturovaných“zpráv. // dekodér příslušenství 0x80 & adresa 1 x.data [1] = 0; }

neplatné dodat_tun2 (strukturovaná zpráva & x) {x.data [0] = 0x82; // dekodér příslušenství 0x80 & adresa 2 x.data [1] = 0; }

Přidat novou prázdnotu pro výhybky: boolean read_turnout () {delay (20);

boolean changed_t = false; get_key ();

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

data = 0xf8; // = binární 1111 1000

doplnok_tun1 (zpráva [1]);

}

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

data = 0xf8; // = binární 1111 1000

doplnok_tun2 (zpráva [1]);

}

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

if (tun1 == 1) {

data | = 0; // t1a

changed_t = true;}

if (tun1 == 0) {

data | = 0x01; // t1b

changed_t = true;}

}

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

if (tun2 == 1) {

data | = 0x02; // t2a

changed_t = true;

}

if (tun2 == 0) {

data | = 0x03; // t2b

changed_t = true; }

}

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

if (tun3 == 1) {

data | = 0x04; // t3a

changed_t = true;

}

if (tun3 == 0) {

data | = 0x05; // t3b

changed_t = true;}

}

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

if (tun4 == 1) {

data | = 0x06; // t4a

changed_t = true;

}

if (tun4 == 0) {

data | = 0x07; // f4b

changed_t = true;}

}

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

if (tun5 == 1) {

data | = 0; // t5a

changed_t = true;

}

if (tun5 == 0) {

data | = 0x01; // t5b

changed_t = true;}

}

atd ………………….

Krok 2: Arduino Code - TFT displej

Arduino Code - TFT displej
Arduino Code - TFT displej
Arduino Code - TFT displej
Arduino Code - TFT displej
Arduino Code - TFT displej
Arduino Code - TFT displej
Arduino Code - TFT displej
Arduino Code - TFT displej

Zobrazovací obvod zůstává stejný s upraveným kódem pro zobrazení stavu 16 výhybek. Poznámka: Kód knihovny zabírá téměř veškerou paměť kódu skici a ponechává malý prostor pro nové funkce. Pokud má někdo efektivnější knihovní soubor pro zde použitý TFT, dejte mi prosím vědět.

Krok 3: Ovladač výhybky

Přepínač výhybek
Přepínač výhybek
Přepínač výhybek
Přepínač výhybek

Podívejte se na návod, jak vytvořit řadič výhybek / bodů.

Kompletní obvod ovládá 16 bodů a 15 příslušenství, jako jsou světla, zvuky, gramofon atd.

Doporučuje: