Kazalo:

Model železnice - ukazna postaja DCC z uporabo Arduina :: 3 koraki
Model železnice - ukazna postaja DCC z uporabo Arduina :: 3 koraki

Video: Model železnice - ukazna postaja DCC z uporabo Arduina :: 3 koraki

Video: Model železnice - ukazna postaja DCC z uporabo Arduina :: 3 koraki
Video: Паровозы и модели поездов: Красивая модель железной дороги Virgental от Вима де Зее 2024, November
Anonim
Image
Image
Koda Arduino - ukazna postaja s tipkovnico
Koda Arduino - ukazna postaja s tipkovnico

Posodobljeno avgusta 2018-glej novo navodilo:

Posodobitev 28. april 2016: Zdaj je na ukazno postajo mogoče nadzorovati 16 udeležencev / točk. Skreti T1 - T8 so na voljo prek tipke 'B' Strelci T9 - T16 so na voljo s tipko 'C'

Posodobitev 10. marec 2016:

Zdaj je na ukazno postajo dodanih 8 zmogljivosti nadzora udeležbe / točk. Koda Arduino je bila ustrezno posodobljena s standardnim paketom NMRA za odzive (tudi na podlagi študije podatkovnih paketov Lenz / Atlas Compact za nadzor udeležbe).

Odklopi T1 - T8 so na voljo prek tipke 'B'

Glejte navodila za uporabljeno vezje sprejemnika podatkovnih paketov in zahtevano kodo Arduino.

Posodobitev 18. januar 2016:

V vezje sem dodal upor za zaznavanje toka (1k5 ohm) in kondenzator (10 uf) in spremenil kodo Arduino tako, da prekine napajanje, ko zazna največji tok> 3200 mAmps. Specifikacija mosta H navaja izhodni zaznavni tok 377 uA na 1 Amp pri obremenitvi.

1,5 k ohmski upor bo dal 0,565 voltov na Amp na analognem zatiču 6. Z 1023 koraki na analognem vhodu to daje 0,565 * 1023 /5 = 116 na obremenitev Amp.

A = 100 * (analogno branje (AN_CURRENT)) / 116; A = A * 10; (za rezultat v miliamperih)

Tok obremenitve v miliamperih je prikazan na TFT

Celotna tipkovnica 4x4 vključuje funkcije F1 do F8 in še 10 lokomov (1-19) prek tipke "#" (za dodajanje 10 številčnim tipkam od loco 10).

Koda arduino vključuje standard NMRA za bajte navodil.

Glej povezavo

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

(stran 6 je še posebej pomembna)

Paketi so razporejeni glede na število korakov hitrosti, dolgi / kratki naslov in navodila skupine funkcij.

Pred vsemi bajti navodil je preambula bitov '1' 11111111 (ali paket v prostem teku), ki mu sledi;

npr. 4 -bajtni naslov 0 00000011 0 00111111 0 10000011 0 10111111

ustreza loco 3, 128 hitrostnim korakom, smeri naprej in stopnji 3 hitrosti (zadnji bajt je preverjanje napak XOR)

npr. 3 -bajtni naslov 0 00000011 0 10010000 0 10110011

enaka loco 3, skupina funkcij 1, lučke FL vklopljene in bajt XOR (bit "0" ločuje vsak bajt)

Oglejte si priloženi predstavitveni videoposnetek za loco 12.

Funkcije F1 - F8 so na voljo prek tipke 'A', DIR (tipka '*' = smer) FL (tipka '0' = luči) in tipka '#' daje lokose od 10 do 19 na numerični tipkovnici. Tipka "D" se zdaj uporablja za "IZKLOP V SILI".

Hvala različnim ponudnikom na spletu za vire informacij DCC in kodo Arduino.

Ta projekt sta navdihnila zlasti Michael Blank in njegov "Simple DCC - command station"

www.oscale.net/en/simpledcc

4x4 matrična matrična matrična tipkovnica s 16 tipkami (ebay) 1,75 £

2,2 -palčni serijski SPI TFT LCD prikazovalni modul 240x320 (ebay) 7,19 £

UNIVERZALNI AC ADAPTER 12V 5A 60W Z NAPAJANJEM (eBay) 6,49 €

Nano V3.0 za Arduino s CH340G 5V 16M združljivim ATmega328P (ebay) 2 x 3,30 £ = 6,60 £

Modul gonilnika motorja LMD18200T za Arduino R3 (ebay) 6,99 €

Priključki, žica, plošča vero, potenciometer približno 3,50 £

Skupaj 32,52 £

Osnovna ukazna postaja brez tft zaslona in 1 x nano bi bila 22,03 £

[Opomba: Na zaslon TFT je mogoče dodati pomnilniško kartico in spremeniti kodo za prikaz slik izbranih motorjev, čeprav je treba knjižnične kode urediti, da ustvarite več pomnilnika za skico. Trenutna velikost skice je največja za TFT Arduino Nano]

Prvotna koda Arduina, ki jo je ustvaril Michael Blank, je bila za en motor, le naprej / nazaj brez nadzora funkcij, tipkovnice in zaslona.

Kodo sem spremenil tako, da vključuje 1 - 19 motorjev, zaslon, smer, luči, 8 funkcij, zaustavitev v sili in omejitev samodejnega toka.

Most LMD18200T lahko nosi do 3 ampere, zaradi česar je primeren za vse tehtnice, vključno z lestvico G (vrtni vlaki). Napajanje in elektronika sta primerna samo za uporabo v zaprtih prostorih, razen če je zaščitena pred vremenskimi vplivi. Imam poveljniško postajo v poletni hiši z žicami, ki povezujejo žice skozi steno do tira.

1. korak: Arduino koda - ukazna postaja s tipkovnico

Zahvaljujem se tvantenna2759 za opozorilo na 2 napaki v vezju, kjer se koda Arduino ni ujemala z ožičenjem, zdaj posodobljeno (21. oktober 2017).

Zdaj je na ukazno postajo dodanih 16 odklopov. Oglejte si navodila za diagram vezja / točk z uporabo modula Arduino Mini Pro.

Spremenjena koda, vključno s kontrolo udeležbe, je priložena spodaj.

Osnovni paket dekoderja dodatne opreme je: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 Iz analize paketa, ki ga uporablja Lenz (Compact / Atlas) za nadzor točk, sem uporabil naslednjo binarno obliko paketa za bajta 1 in 2: tunAddr = 1 Izhod 1a: 1000 0001 1111 1000 / Izhod 1b: 1000 0001 1111 1001 Izhod 2a: 1000 0001 1111 1010 / Izhod 2b: 1000 0001 1111 1011 Izhod 3a: 1000 0001 1111 1100 / Izhod 3b: 1000 0001 1111 1101 Izhod 4a: 1000 0001 1111 1110 / Izhod 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- Udeležba 5a: 1000 0010 1111 1000 / Udeležba 5b: 1000 0010 1111 1001 Udeležba 6a: 1000 0010 1111 1010 / Udeležba 6b: 1000 0010 1111 1011 Vožnja 7a: 1000 0010 1111 1100 / Izhod 7b: 1000 0010 1111 1101 Izhod 8a: 1000 0010 1111 1110 / Izhod 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Vožnja 9a: 1000 0011 1111 1000 / Vožnja 9b: 1000 0011 1111 1001 itd ………

Izvleček iz spremenjene kode: Dodajte še 2 posodobitvi sporočil 'struct'. // dekoder dodatkov 0x80 & naslov 1 x.data [1] = 0; }

void replace_tun2 (sporočilo strukture & x) {x.data [0] = 0x82; // dekoder dodatkov 0x80 & naslov 2 x.data [1] = 0; }

Dodaj novo praznino za odklone: boolean read_turnout () {delay (20);

logično spremenjeno_t = false; get_key ();

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

podatki = 0xf8; // = binarno 1111 1000

Spremeni_tun1 (sporočilo [1]);

}

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

podatki = 0xf8; // = binarno 1111 1000

Spremeni_tun2 (sporočilo [1]);

}

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

če (tun1 == 1) {

podatki | = 0; // t1a

spremenjeno_t = res;}

če (tun1 == 0) {

podatki | = 0x01; // t1b

spremenjeno_t = res;}

}

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

če (tun2 == 1) {

podatki | = 0x02; // t2a

spremenjen_t = res;

}

če (tun2 == 0) {

podatki | = 0x03; // t2b

spremenjen_t = res; }

}

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

če (tun3 == 1) {

podatki | = 0x04; // t3a

spremenjen_t = res;

}

če (tun3 == 0) {

podatki | = 0x05; // t3b

spremenjeno_t = res;}

}

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

če (tun4 == 1) {

podatki | = 0x06; // t4a

spremenjen_t = res;

}

če (tun4 == 0) {

podatki | = 0x07; // f4b

spremenjeno_t = res;}

}

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

če (tun5 == 1) {

podatki | = 0; // t5a

spremenjen_t = res;

}

če (tun5 == 0) {

podatki | = 0x01; // t5b

spremenjeno_t = res;}

}

itd ………………….

2. korak: Arduino koda - zaslon TFT

Koda Arduino - zaslon TFT
Koda Arduino - zaslon TFT
Arduino koda - zaslon TFT
Arduino koda - zaslon TFT
Arduino koda - zaslon TFT
Arduino koda - zaslon TFT
Koda Arduino - zaslon TFT
Koda Arduino - zaslon TFT

Zaslonsko vezje ostaja enako s spremenjeno kodo za prikaz stanja 16 odklopov. Opomba: Koda knjižnice zavzame skoraj ves pomnilnik kode za skico in pusti malo prostora za nove funkcije. Če ima kdo bolj učinkovito datoteko knjižnice za TFT, ki se tukaj uporablja, naj mi sporoči.

3. korak: Krmilnik za udeležbo

Krmilnik volilne udeležbe
Krmilnik volilne udeležbe
Krmilnik volilne udeležbe
Krmilnik volilne udeležbe

Glejte navodila, kako narediti krmilnik za udeležbo / točke.

Celotno vezje nadzoruje 16 točk in 15 dodatkov, kot so luči, zvoki, gramofon itd.

Priporočena: