Cuprins:

Tren de grădină - Arduino Wireless NMRA DCC: 4 pași (cu imagini)
Tren de grădină - Arduino Wireless NMRA DCC: 4 pași (cu imagini)

Video: Tren de grădină - Arduino Wireless NMRA DCC: 4 pași (cu imagini)

Video: Tren de grădină - Arduino Wireless NMRA DCC: 4 pași (cu imagini)
Video: Garden automation with arduino #arduino #diy #engineering 2024, Noiembrie
Anonim
Image
Image
Proiectarea sistemului
Proiectarea sistemului

În urma instrucțiunilor anterioare cu DCC pe un sistem feroviar mort, am dezvoltat ideea în continuare cu o stație de comandă DCC de mână cu tastatură și afișaj LCD. Stația de comandă conține toate codurile necesare pentru instrucțiunile NMRA DCC, cu toate acestea, în loc să se conecteze la șine, datele sunt transferate prin modulul radio RF24L01 + către un receptor montat într-un camion sau sub locomotivă - oriunde permite spațiul.

Desigur, locomotivele dvs. trebuie să fie echipate cu un decodor de capacitate de încărcare adecvat motoarelor motorului.

Pasul 1: Proiectarea sistemului

Proiectarea sistemului
Proiectarea sistemului

Arduino Pro Mini se află în centrul designului. Folosind Fritzing pentru a dezvolta circuitul și pentru a produce PCB-uri.

Am putut folosi același PCB atât pentru emițător, cât și pentru receptor, economisind astfel niște costuri.

Transmițătorul are conexiuni pentru tastatură și LCD, în timp ce receptorul nu le necesită și folosește podul H pentru a furniza ieșirea DCC pentru loco.

O dezvoltare ulterioară include conexiuni pentru un pod H mai mare, dacă este necesar pentru loco mai puternice.

PCF8574 poate fi șters dacă utilizați un afișaj LCD care vine cu rucsacul, permițând conexiunilor SCA / SCL de pe Arduino să alimenteze afișajul folosind doar 2 fire Lista pieselor: Total = aproximativ 60 GBP pentru stația de comandă DCC + 1 receptor Cost suplimentar pentru receptoare = 10,00 GBP fiecare aprox. + baterii

Arduino Pro Mini. x 2 = 4,00 GBP

Tastatură cu membrană 4x3 = 3,00 GBP

Afișaj LCD 20 x 4 = 7,00 GBP

PCF5874 = 1,80 GBP

NRF24L01 +. module radio x 2 = 5,80 GBP

Fabricarea PCB pentru 10 off (sau se poate utiliza placa Vero) = 24 £ sau 4,80 £ pentru 2 off

3,3 v Regulator = 0,17 GBP (pachet de 25 de la RS Comp)

Regulator 5v LM7805 = 0,30 GBP

H-pod SN754410ne = 3,00 GBP

Baterii Lloytron reîncărcabile 2700 maH AA x 12 = 22,00 GBP. (bateriile cu o valoare mai mică a maH sunt mai ieftine)

Condensatoare, ghivece, știfturi, conectori etc. = 2,00 GBP aprox

Carcasă 190x110x60 mm = 8,00 GBP

Transmițător - încărcător telefon / baterie = 2,00 GBP

Pasul 2: Transmițător

Transmiţător
Transmiţător

Schema circuitului este afișată în cazul în care pinii D2 până la D8 de pe Arduino Pro Mini sunt conectați la tastatură. Un potențiometru de 100k ohm este conectat la pinul analogic A0 pentru reglarea vitezei. Pinii SDA și SCL formează cipul PCF8574 sunt conectați la pinii A4 și A5 pe Arduino Pro Mini prin intermediul unor fire lipite la pinii de pe stratul superior al Pro Mini.

Schița Arduino este atașată pentru descărcare.

Am folosit un afișaj LCD de 20 x 4 care permite 4 linii de informații cu 20 de caractere pe linie. Tastatura oferă următorul meniu:

1 la 9 = adresa loco * = direcția 0 = lumini # = Meniul funcțional pentru tastele 1 la 8

Descrierea de bază a schiței Arduino Pro Mini: Această linie a codului aranjează mesajul DCC în format HEX. struct Mesaj mesaj [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // mesaj inactiv

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // adresa de 3 octeți

};

Pentru a stoca setările pentru fiecare loco, se configurează o serie de tablouri după cum urmează:

int la [20]; // matrice pentru a conține numere loco

int sa [20]; // matrice pentru a menține valorile vitezei

int fda [20]; // matrice pentru a ține dir

int fla [20]; // tablou pentru a ține luminile

int f1a [20]; // matrice pentru a păstra fun1 …..

int f8a [20]; // matrice pentru a menține fun8

Pentru a permite modificarea instrucțiunilor DCC pe măsură ce mergem:

Pentru instrucțiuni de viteză: void amend_speed (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x40; // locoMsg cu 28 de pași de viteză}

Pentru instrucțiuni de funcționare:

anula amend_group1 (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x80; // locoMsg cu instrucțiunea de grup 1 0x80}

Bucla principală a schiței:

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

send_data_1 (); // trimite date prin wireless

întârziere (10);

send_data_3 (); // afișează date pe ecranul LCD

send_data_4 (); // afișează date pe monitorul serial}

if (read_function ()) {

asamblare_dcc_msg_group1 ();

send_data_1 ();

întârziere (10);

send_data_3 (); }}

Actualizați datele când viteza se modifică:

boolean read_locoSpeed () Aceasta detectează o nouă setare de adresă loco, viteză sau direcție și modifică „datele” HEX în consecință. Aici am specificat 28 de pași de viteză și pentru a îndeplini standardul NMRA S 9.2, datele despre viteză trebuie găsite dintr-un tabel de căutare în „speed_step ()”

void speed_step () {switch (locoSpeed) {

caz 1: date | = 0x02; pauză;

caz 2: date | = 0x12; pauză;

caz 3: date | = 0x03; pauză;

………

cazul 28: date | = 0x1F; pauză; }}

Actualizați datele când funcțiile se schimbă:

boolean read_function ()

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

} // luminile de cap sunt stinse

if (fla [locoAdr] == 1) {

date = 0x90;

} // farurile aprinse

Pentru fiecare funcție:

if (f2a [locoAdr] == 0) {date | = 0; }. // Funcția 2 dezactivată

if (f2a [locoAdr] == 1) {

date | = 0x02; // Funcția 2 pe} „date” este construită prin combinarea ['| =' compus în biți sau] a codurilor HEX pentru fiecare funcție.

Pasul 3: Receptor

Receptor
Receptor

Schema circuitului este prezentată în cazul în care pinii 5 și 6 ai Arduino Pro Mini sunt utilizați pentru a furniza semnalul DCC furnizat podului H. Perechile H-pod sunt conectate în paralel pentru a crește capacitatea curentă. În funcție de curentul tras de locomotivă, poate fi necesar să fie atașat un radiator la dispozitivul DIP cu 16 pini, sau o punte H de mare capacitate poate fi conectată extern.

Schița Arduino este atașată pentru descărcare. Semnalul DCC este format dintr-un ceas care rulează la 2 MHz

void SetupTimer2 () face această treabă.

Ceasul include „impulsuri scurte” (58us) pentru „1” în datele DCC și „impulsuri lungi” (116us) pentru „0” în datele DCC.

Bucla nulă, primește date de la radio și dacă se găsește un șir valid, datele sunt convertite în date DCC.

bucla void (void) {if (radio.available ()) {bool done = false; done = radio.read (inmsg, 1); // citiți datele primite

char rc = inmsg [0]; // puneți caracterul citit în această matrice

if (rc! = 0) {. // dacă caracterul nu este egal cu zero

inString.concat (rc); // construi mesajul}

if (rc == '\ 0') {// if character is '/ 0' end of message

Serial.println (inString); // tipăriți mesajul asamblat

şir(); // deconstruiți mesajul șir pentru a obține instrucțiuni DCC

} } }

Pasul 4: Rulați Locos

Rulați Locos
Rulați Locos

Pentru a evita întreruperea datelor de la circulația mai multor trenuri pe aceeași cale, trebuie să deconectați contactele dintre roți și cale pentru fiecare locomotivă și camion angajat.

Bucurați-vă de trenuri circulante gratuite, indiferent de condițiile de cale ferată - ce diferență! Fără probleme, fără start-stop și fără curățare necesară.

Bateriile pe care le-am folosit sunt reîncărcabile LLoytron AA x 12. Am construit un încărcător special pentru ele care încarcă câte 6 la un moment dat. (vezi instructiv)

Recomandat: