Indholdsfortegnelse:

Modeljernbane - DCC -kommandostation ved hjælp af Arduino :: 3 trin
Modeljernbane - DCC -kommandostation ved hjælp af Arduino :: 3 trin

Video: Modeljernbane - DCC -kommandostation ved hjælp af Arduino :: 3 trin

Video: Modeljernbane - DCC -kommandostation ved hjælp af Arduino :: 3 trin
Video: Første gang jeg kørte med tog / First run ever with DCC H0 train 2024, Juli
Anonim
Image
Image
Arduino -kode - Kommandostation med tastatur
Arduino -kode - Kommandostation med tastatur

Opdateret august 2018-se ny Instructable:

Opdatering 28. april 2016: Nu 16 muligheder for valgdeltagelse / punkter til Command Station. Kørslerne T1 - T8 er tilgængelige via 'B' -tasten Turnouts T9 - T16 er tilgængelige via' C '-tasten

Opdatering 10. marts 2016:

Nu tilføjet 8 valgmuligheds- / pointstyringsfunktioner til Command Station. Arduino -koden er blevet opdateret i overensstemmelse hermed ved hjælp af NMRA -standardpakken til turnouts (også baseret på en undersøgelse af Lenz / Atlas Compact -datapakker til valgdeltagelse).

Opkørslerne T1 - T8 er tilgængelige via 'B' -tasten

Se instruktionerne om datapakket modtager kredsløb og Arduino kode påkrævet.

Opdatering 18. januar 2016:

Jeg har tilføjet en strømfølelsesmodstand (1k5 ohm) og kondensator (10 uf) til kredsløbet og ændret Arduino -koden for at afbryde strømmen, når der registreres en spidsstrøm på> 3200 mAmps. H-bridge-specifikationen angiver en udgangssensestrøm på 377 uA pr. 1 ampere i belastningen.

Modstanden på 1,5 k ohm leverer 0,565 volt pr. Amp på den analoge pin 6. Med 1023 trin på den analoge indgang giver dette 0,565 * 1023 /5 = 116 pr. Amp. Belastning.

A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (for at give resultat i milliampere)

Laststrømmen i milliampere vises på TFT

Det fulde 4x4-tastatur indeholder F1 til F8-funktioner og yderligere 10 locos (1-19) via '#' -tasten (for at tilføje 10 til de numeriske taster, der starter fra loco 10).

Arduino -koden indeholder NMRA -standarden for instruktionsbytes.

Se link

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

(side 6 er særlig relevant)

Pakkerne er arrangeret efter antal hastighedstrin, lang / kort adresse og funktionsgruppeanvisninger.

Alle instruktionsbytes forud for en præambel med '1' bits 11111111 (eller inaktiv pakke) efterfulgt af;

f.eks. En 4 byte adresse 0 00000011 0 00111111 0 10000011 0 10111111

svarer til loco 3, 128 hastighedstrin, fremadgående retning og hastighedstrin 3 (slutbyten er fejlkontrollen XOR)

f.eks. en 3 byte adresse 0 00000011 0 10010000 0 10110011

svarer til loco 3, funktionsgruppe 1, FL lyser plus XOR -byte (en '0' bit adskiller hver byte)

Se vedlagte demonstrationsvideo til loco 12.

Funktionerne F1 - F8 er tilgængelige via 'A' tasten, DIR ('*' tast = retning) FL ('0' tast = lys) og tast '#' giver lokaler 10 til 19 på det numeriske tastatur. 'D' -tasten bruges nu til et' nødstop '.

Tak til forskellige udbydere på nettet for kilder til DCC -oplysninger og Arduino -kode.

Dette projekt var især inspireret af Michael Blank og hans 'Simple DCC - a command station'

www.oscale.net/en/simpledcc

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

2,2 tommer 240x320 serielt SPI TFT LCD -skærmmodul (ebay) 7,19 kr

UNIVERSAL 12V 5A 60W STRØMFORSYNING AC -ADAPTER (ebay) £ 6,49

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

Motor driver modul LMD18200T til Arduino R3 (ebay) £ 6,99

Stik, ledning, vero board, potentiometer ca. £ 3,50

I alt 32,52 £

Den grundlæggende kommandostation uden tft -skærm og 1 x nano ville være £ 22,03

[Bemærk: Det er muligt at tilføje et hukommelseskort til TFT -displayet og ændre kode for at vise billeder af udvalgte motorer, selvom bibliotekskoderne skal redigeres ned for at skabe mere hukommelse til skitsen. Nuværende skitsestørrelse er maksimalt for TFT Arduino Nano]

Den originale Arduino -kode af Michael Blank var til en motor, kun frem / tilbage uden funktionskontrol, intet tastatur og ingen display.

Jeg har ændret koden til at omfatte 1 - 19 motorer, en skærm, retning, lys, 8 funktioner, nødstop og automatisk strømgrænse.

LMD18200T-broen kan bære op til 3 ampere, hvilket gør den velegnet til alle skalaer inklusive G-skala (havetog). Strømforsyningen og elektronikken er kun egnet til indendørs brug, medmindre du kan gøre det hele vejrbestandigt. Jeg har kommandostationen i sommerhuset med skinneforbindelsestråde, der løber ud gennem væggen til sporet.

Trin 1: Arduino -kode - Kommandostation med tastatur

Min tak til tvantenna2759 for at påpege 2 fejl i kredsløbsdiagrammet, hvor Arduino -koden ikke matchede ledningerne, nu opdateret (21. oktober 2017).

Nu tilføjet 16 turnouts til Command Station. Se instruktionerne i diagrammet om valg / point -kredsløb ved hjælp af Arduino Mini Pro -modul.

Den ændrede kode inklusive valgdeltagelse er vedhæftet nedenfor.

Grundlæggende tilbehør dekoderpakke er: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Fra analyse af pakken, der blev brugt af Lenz (Compact / Atlas) til punktkontrol, har jeg brugt følgende binære pakkeformat til byte 1 og 2: tunAddr = 1 Turnout 1a: 1000 0001 1111 1000 / Turnout 1b: 1000 0001 1111 1001 Turnout 2a: 1000 0001 1111 1010 / Turnout 2b: 1000 0001 1111 1011 Turnout 3a: 1000 0001 1111 1100 / Turnout 3b: 1000 0001 1111 1101 Turnout 4a: 1000 0001 1111 1110 / Turnout 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- ---------------------------------------------------------- ----------------- Fremdeltagelse 5a: 1000 0010 1111 1000 / fremmøde 5b: 1000 0010 1111 1001 Fremmøde 6a: 1000 0010 1111 1010 / fremmøde 6b: 1000 0010 1111 1011 Fremmøde 7a: 1000 0010 1111 1100 / Valgdeltagelse 7b: 1000 0010 1111 1101 Fremmøde 8a: 1000 0010 1111 1110 / Fremmøde 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Valgdeltagelse 9a: 1000 0011 1111 1000 / valgdeltagelse 9b: 1000 0011 1111 1001 osv ………

Uddrag fra ændret kode: Tilføj 2 flere 'struct' -meddelelsesopdateringervoid amend_tun1 (struct Message & x) {x.data [0] = 0x81; // tilbehør dekoder 0x80 & adresse 1 x.data [1] = 0; }

void amend_tun2 (struct Message & x) {x.data [0] = 0x82; // tilbehør dekoder 0x80 & adresse 2 x.data [1] = 0; }

Tilføj nyt tomrum for valgdeltagelser: boolsk read_turnout () {forsinkelse (20);

boolsk ændret_t = falsk; get_key ();

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

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

amend_tun1 (msg [1]);

}

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

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

amend_tun2 (msg [1]);

}

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

hvis (tun1 == 1) {

data | = 0; // t1a

ændret_t = sandt;}

hvis (tun1 == 0) {

data | = 0x01; // t1b

ændret_t = sandt;}

}

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

hvis (tun2 == 1) {

data | = 0x02; // t2a

ændret_t = sandt;

}

hvis (tun2 == 0) {

data | = 0x03; // t2b

ændret_t = sandt; }

}

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

hvis (tun3 == 1) {

data | = 0x04; // t3a

ændret_t = sandt;

}

hvis (tun3 == 0) {

data | = 0x05; // t3b

ændret_t = sandt;}

}

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

hvis (tun4 == 1) {

data | = 0x06; // t4a

ændret_t = sandt;

}

hvis (tun4 == 0) {

data | = 0x07; // f4b

ændret_t = sandt;}

}

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

hvis (tun5 == 1) {

data | = 0; // t5a

ændret_t = sandt;

}

hvis (tun5 == 0) {

data | = 0x01; // t5b

ændret_t = sandt;}

}

etc ………………….

Trin 2: Arduino -kode - TFT -skærm

Arduino Code - TFT Display
Arduino Code - TFT Display
Arduino Code - TFT Display
Arduino Code - TFT Display
Arduino Code - TFT Display
Arduino Code - TFT Display
Arduino Code - TFT Display
Arduino Code - TFT Display

Skærmkredsløbet forbliver det samme med en ændret kode for at vise status for de 16 turnouts. Bemærk: Bibliotekskoden fylder næsten hele skitsekodens hukommelse og efterlader lidt plads til nye funktioner. Hvis nogen har en mere effektiv biblioteksfil til den TFT, der bruges her, så lad mig det vide.

Trin 3: Turnout Controller

Fremmødekontroller
Fremmødekontroller
Fremmødekontroller
Fremmødekontroller

Se instruktioner om, hvordan man laver Turnout / Point -controlleren.

Det komplette kredsløb styrer 16 punkter og 15 tilbehør såsom lys, lyde, drejeskive osv.

Anbefalede: