Innehållsförteckning:

Modelljärnväg - DCC -kommandostation med Arduino :: 3 steg
Modelljärnväg - DCC -kommandostation med Arduino :: 3 steg

Video: Modelljärnväg - DCC -kommandostation med Arduino :: 3 steg

Video: Modelljärnväg - DCC -kommandostation med Arduino :: 3 steg
Video: Unleashing the Power of Coding in Model Railroading 2024, November
Anonim
Image
Image
Arduino -kod - Kommandostation med knappsats
Arduino -kod - Kommandostation med knappsats

Uppdaterad augusti 2018-se nya Instructable:

Uppdatering 28 april 2016: Nu 16 valmöjligheter / poängkontrollmöjligheter till Command Station. Växlarna T1 - T8 är tillgängliga via "B" -knappen Turnouts T9 - T16 är tillgängliga via "C"

Uppdatering 10 mars 2016:

Nu har 8 funktioner för valdeltagning / poängkontroll tillkommit till Command Station. Arduino -koden har uppdaterats i enlighet därmed med hjälp av NMRA -standardpaketet för växlingar (också baserat på en studie av Lenz / Atlas Compact -datapaket för valdeltagningskontroll).

Växlarna T1 - T8 är tillgängliga via knappen 'B'

Se instruktioner om datapaketmottagarkretsen som används och Arduino -kod krävs.

Uppdatering 18 januari 2016:

Jag har lagt till ett strömavkänningsmotstånd (1k5 ohm) och kondensator (10 uf) till kretsen och ändrat Arduino -koden för att stänga av strömmen när en toppström på> 3200 mA detekteras. H-bridge-specifikationen anger en utmatningsavkänningsström på 377 uA per 1 Amp i lasten.

1,5 k ohm -motståndet ger 0,565 volt per ampere på den analoga stiftet 6. Med 1023 steg på den analoga ingången ger detta 0,565 * 1023 /5 = 116 per ampereffekt.

A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (för att ge resultat i milliampere)

Lastströmmen i milliampar visas på TFT

Det fullständiga 4x4-tangentbordet innehåller F1 till F8-funktioner och ytterligare 10 locos (1-19) genom "#" -tangenten (för att lägga till 10 till de numeriska tangenterna från plats 10).

Arduino -koden innehåller NMRA -standarden för instruktionsbyte.

Se länk

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

(sida 6 är särskilt relevant)

Paketen är ordnade efter antal hastighetssteg, lång / kort adress och funktionsgruppsinstruktioner.

Alla instruktionsbyte föregås av en ingress med "1" bitar 11111111 (eller inaktiv paket) följt av;

t.ex. En 4 bytes adress 0 00000011 0 00111111 0 10000011 0 10111111

motsvarar loco 3, 128 hastighetssteg, riktning framåt och steg 3 (slutbyten är felkontrollen XOR)

t.ex. en 3 -bytes -adress 0 00000011 0 10010000 0 10110011

motsvarar loco 3, funktionsgrupp 1, FL -lampor tänd plus XOR -byte (en '0' -bit separerar varje byte)

Se bifogad demonstrationsvideo för loco 12.

Funktionerna F1 - F8 är tillgängliga via "A" -tangenten, DIR ("*" -knappen = riktning) FL ("0" -knappen = lampor) och knappen "#" ger platserna 10 till 19 på det numeriska tangentbordet. D -tangenten används nu för ett nödstopp.

Tack till olika leverantörer på webben för källor till DCC -information och Arduino -kod.

I synnerhet inspirerades detta projekt av Michael Blank och hans 'Simple DCC - a command station'

www.oscale.net/en/simpledcc

4x4 Matrix Array 16 Key Membrane Switch Keypad (ebay) £ 1,75

2,2 tum 240x320 seriell SPI TFT LCD -displaymodul (ebay) £ 7,19

UNIVERSAL 12V 5A 60W STRÖMFÖRSÖRJNING AC ADAPTER (ebay) £ 6,49

Nano V3.0 För Arduino med CH340G 5V 16M kompatibel ATmega328P (ebay) 2 x £ 3,30 = £ 6,60

Motor Driver Module LMD18200T för Arduino R3 (ebay) £ 6,99

Kontaktdon, tråd, verokort, potentiometer ca £ 3,50

Totalt £ 32,52

Den grundläggande kommandostationen utan tft -skärm och 1 x nano skulle kosta £ 22,03

[Obs: Det är möjligt att lägga till ett minneskort i TFT -displayen och ändra koden för att visa bilder av utvalda motorer, även om bibliotekskoderna måste redigeras ned för att skapa mer minne för skissen. Nuvarande skissstorlek är maximalt för TFT Arduino Nano]

Den ursprungliga Arduino -koden av Michael Blank var för en motor, endast framåt / bakåt utan funktionskontroll, ingen knappsats och ingen display.

Jag har ändrat koden för att inkludera 1 - 19 motorer, en skärm, riktning, lampor, 8 funktioner, nödstopp och automatisk strömgräns.

LMD18200T-bron kan bära upp till 3 ampere vilket gör den lämplig för alla vågor inklusive G-skala (trädgårdståg). Elnätet och elektroniken är endast lämpliga för inomhusbruk om du inte kan göra det väderbeständigt. Jag har kommandostationen i sommarhuset med rälsanslutningstrådar som rinner ut genom väggen till spåret.

Steg 1: Arduino -kod - Kommandostation med knappsats

Mitt tack till tvantenna2759 för att påpeka 2 fel i kretsschemat där Arduino -koden inte matchade ledningarna, nu uppdaterad (21 oktober 2017).

Nu lagt till 16 växlingar till Command Station. Se instruktionerna i växlings- / poängkretsschemat med Arduino Mini Pro -modulen.

Den modifierade koden inklusive valdeltagningskontroll bifogas nedan.

Grundläggande tillbehörsdekoderpaket är: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Från analys av paketet som används av Lenz (Compact / Atlas) för punktkontroll har jag använt följande binära paketformat för byte 1 och 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / Utbyte 1b: 1000 0001 1111 1001 Utbyte 2a: 1000 0001 1111 1010 / Utbyte 2b: 1000 0001 1111 1011 Utbyte 3a: 1000 0001 1111 1100 / Utbyte 3b: 1000 0001 1111 1101 Utbyte 4a: 1000 0001 1111 1110 / Utbyte 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- ---------------------------------------------------------- ----------------- Valdeltagande 5a: 1000 0010 1111 1000 / Valdeltagande 5b: 1000 0010 1111 1001 Valdeltag 6a: 1000 0010 1111 1010 / Valdeltagande 6b: 1000 0010 1111 1011 Valdeltagande 7a: 1000 0010 1111 1100 / Valdeltagande 7b: 1000 0010 1111 1101 Valdeltagande 8a: 1000 0010 1111 1110 / Valdeltagande 8b: 1000 0010 1111 1111 ----------------------- ---------------------------------------------------------- ---------------------------------- Valdeltagande 9a: 1000 0011 1111 1000 / Valdeltagande 9b: 1000 0011 1111 1001 etc ………

Extrahera från modifierad kod: Lägg till ytterligare två "struct" -meddelandeuppdateringar ogiltig amend_tun1 (struct Message & x) {x.data [0] = 0x81; // tillbehörsavkodare 0x80 & adress 1 x.data [1] = 0; }

void amend_tun2 (struct Message & x) {x.data [0] = 0x82; // tillbehörsavkodare 0x80 & adress 2 x.data [1] = 0; }

Lägg till nytt tomrum för turnouts: boolean read_turnout () {delay (20);

booleskt ändrat_t = falskt; get_key ();

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

data = 0xf8; // = binär 1111 1000

amend_tun1 (msg [1]);

}

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

data = 0xf8; // = binär 1111 1000

edit_tun2 (msg [1]);

}

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

om (tun1 == 1) {

data | = 0; // t1a

ändrad_t = sant;}

om (tun1 == 0) {

data | = 0x01; // t1b

ändrad_t = sant;}

}

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

om (tun2 == 1) {

data | = 0x02; // t2a

ändrad_t = sant;

}

om (tun2 == 0) {

data | = 0x03; // t2b

ändrad_t = sant; }

}

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

om (tun3 == 1) {

data | = 0x04; // t3a

ändrad_t = sant;

}

om (tun3 == 0) {

data | = 0x05; // t3b

ändrad_t = sant;}

}

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

om (tun4 == 1) {

data | = 0x06; // t4a

ändrad_t = sant;

}

om (tun4 == 0) {

data | = 0x07; // f4b

ändrad_t = sant;}

}

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

om (tun5 == 1) {

data | = 0; // t5a

ändrad_t = sant;

}

om (tun5 == 0) {

data | = 0x01; // t5b

ändrad_t = sant;}

}

etc ………………….

Steg 2: Arduino -kod - TFT -skärm

Arduino -kod - TFT -skärm
Arduino -kod - TFT -skärm
Arduino -kod - TFT -skärm
Arduino -kod - TFT -skärm
Arduino -kod - TFT -skärm
Arduino -kod - TFT -skärm
Arduino -kod - TFT -skärm
Arduino -kod - TFT -skärm

Displaykretsen förblir densamma med en modifierad kod för att visa status för de 16 växlarna. Obs! Bibliotekskoden tar upp nästan allt skisskodminne och lämnar lite utrymme för nya funktioner. Om någon har en mer effektiv biblioteksfil för TFT som används här, vänligen meddela mig.

Steg 3: Turnout Controller

Turnout Controller
Turnout Controller
Turnout Controller
Turnout Controller

Se instruktioner om hur du gör Turnout / Points -kontrollen.

Hela kretsen styr 16 punkter och 15 tillbehör som lampor, ljud, skivspelare etc.

Rekommenderad: