Sadržaj:

Vrtni vlak - Arduino bežični NMRA DCC: 4 koraka (sa slikama)
Vrtni vlak - Arduino bežični NMRA DCC: 4 koraka (sa slikama)

Video: Vrtni vlak - Arduino bežični NMRA DCC: 4 koraka (sa slikama)

Video: Vrtni vlak - Arduino bežični NMRA DCC: 4 koraka (sa slikama)
Video: Установка модуля USB - TTL, для программирования RYLR998 2024, Lipanj
Anonim
Image
Image
Dizajn sustava
Dizajn sustava

Uz prethodna uputstva s DCC -om na mrtvom tračničkom sustavu, ideju sam dodatno razvio ručnom DCC komandnom postajom s tipkovnicom i LCD zaslonom. Zapovjedna stanica sadrži sve kodiranje koje je potrebno za NMRA DCC upute, međutim umjesto povezivanja na tračnice, podaci se putem radio modula RF24L01+ prenose na prijemnik montiran u kamionu ili ispod lokomota - gdje god to prostorija dopušta.

Naravno, vaši lokomoti moraju biti opremljeni dekoderom nosivosti prilagođenim motorima motora.

Korak 1: Dizajn sustava

Dizajn sustava
Dizajn sustava

Arduino Pro Mini je srce dizajna. Korištenje Fritzinga za razvoj sklopa i proizvodnju PCB -a.

Uspio sam koristiti istu tiskanu pločicu i za odašiljač i za prijamnik čime sam uštedio neke troškove.

Odašiljač ima priključke za tipkovnicu i LCD dok prijemnik to ne zahtijeva i koristi H-most za napajanje DCC izlaza za loko.

Daljnji razvoj uključuje veze za veći H-most ako je potrebno za snažnije lokomotive.

PCF8574 se može izbrisati ako koristite LCD zaslon koji dolazi s ruksakom koji omogućuje SCA / SCL veze na Arduinu za napajanje zaslona pomoću samo 2 žice. Popis dijelova: Ukupno = približno 60 GBP za DCC naredbenu stanicu + 1 prijemnik Dodatni troškovi prijemnika = Otprilike 10,00 GBP svaki. + baterije

Arduino Pro Mini. x 2 = 4,00 GBP

4x3 membranska tipkovnica = 3,00 GBP

20 x 4 LCD zaslon = 7,00 kn

PCF5874 = 1,80 GBP

NRF24L01+. radio moduli x 2 = 5,80 £

Proizvodnja PCB -a za 10 popusta (ili se može koristiti Vero ploča) = 24 £ ili 4,80 £ za 2off

3,3 v Regulator = 0,17 £ (pakiranje od 25 iz RS Comp -a)

5v regulator LM7805 = 0,30 kn

H-most SN754410ne = 3,00 kn

Lloytron punjive AA baterije od 2700 maH x 12 = 22,00 GBP. (baterije s nižom ocjenom maH jeftinije su)

Kondenzatori, lonci, igle, priključci itd. = Pribl. 2,00 GBP

Kućište 190x110x60 mm = 8,00 kn

Odašiljač - punjač / baterija za telefon = 2,00 £

Korak 2: Odašiljač

Odašiljač
Odašiljač

Dijagram kruga je prikazan na mjestu gdje su pinovi D2 do D8 na Arduino Pro Mini spojeni na tipkovnicu. Potenciometar od 100 k ohma spojen je na analogni pin A0 za podešavanje brzine. Pinovi SDA i SCL iz čipa PCF8574 spojeni su na pinove A4 i A5 na Arduino Pro Mini pomoću lemljenih žica na igle na gornjem sloju Pro Mini.

Arduino skica je priložena za preuzimanje.

Koristio sam LCD zaslon veličine 20 x 4 koji omogućuje 4 retka informacija s 20 znakova po retku. Tipkovnica nudi sljedeći izbornik:

1 do 9 = loko adresa * = smjer 0 = svjetla # = izbornik funkcija za tipke od 1 do 8

Osnovni opis skice Arduino Pro Mini: Ovaj redak koda raspoređuje DCC poruku u HEX formatu. struct Poruka poruke [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // poruka u mirovanju

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // adresa od 3 bajta

};

Za spremanje postavki za svaki loko, niz nizova postavlja se na sljedeći način:

int la [20]; // niz za držanje loko brojeva

int sa [20]; // niz za držanje vrijednosti brzine

int fda [20]; // niz za držanje red

int fla [20]; // niz za držanje svjetla

int f1a [20]; // niz za držanje fun1…..

int f8a [20]; // niz za držanje fun8

Kako biste omogućili izmjene i dopune DCC uputa:

Za upute o brzini: void replace_speed (struct Message & x) {

x.data [0] = locoAdr;

x.podaci [1] = 0x40; // locoMsg s 28 koraka brzine}

Za upute o funkciji:

void replace_group1 (struct poruka & x) {

x.data [0] = locoAdr;

x.podaci [1] = 0x80; // locoMsg s grupnom uputom 0x80}

Glavna petlja skice:

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

send_data_1 (); // slanje podataka bežičnim putem

kašnjenje (10);

send_data_3 (); // prikaz podataka na LCD zaslonu

send_data_4 (); // prikaz podataka na serijskom monitoru}

if (funkcija_čitanja ()) {

assemble_dcc_msg_group1 ();

send_data_1 ();

kašnjenje (10);

send_data_3 (); }}

Ažurirajte podatke pri promjeni brzine:

boolean read_locoSpeed () Ovo otkriva novu loko adresu, postavku brzine ili smjera i u skladu s tim mijenja HEX 'podatke'. Ovdje sam naveo 28 koraka brzine i kako bih zadovoljio NMRA standard S 9.2, podaci o brzini moraju se pronaći iz tabele za pretraživanje u 'speed_step ()'

void speed_step () {switch (locoSpeed) {

slučaj 1: podatak | = 0x02; pauza;

slučaj 2: podatak | = 0x12; pauza;

slučaj 3: podatak | = 0x03; pauza;

………

slučaj 28: podatak | = 0x1F; pauza; }}

Ažurirajte podatke kada se promijene funkcije:

boolean read_function ()

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

} // prednja svjetla isključena

if (fla [locoAdr] == 1) {

podatak = 0x90;

} // upaljena glavna svjetla

Za svaku funkciju:

if (f2a [locoAdr] == 0) {podaci | = 0; }. // Isključena funkcija 2

if (f2a [locoAdr] == 1) {

podatak | = 0x02; // Funkcija 2 na} 'data' izgrađena je kombiniranjem ['| =' složeno bitovno ili] HEX kodova za svaku funkciju.

Korak 3: Prijemnik

Prijamnik
Prijamnik

Dijagram sklopa prikazan je na mjestima gdje se pinovi 5 i 6 Arduino Pro Mini koriste za osiguravanje DCC signala koji se dovodi na H-most. Parovi H-mosta spojeni su paralelno radi povećanja strujnog kapaciteta. Ovisno o struji koju loko vuče, možda će biti potrebno priključiti hladnjak na 16-polni DIP uređaj, ili se H-most za teške uvjete može spojiti izvana.

Arduino skica je priložena za preuzimanje. DCC signal se sastoji od takta koji radi na 2MHZ

void SetupTimer2 () radi ovaj posao.

Sat uključuje 'kratke impulse' (58us) za '1' u DCC podacima i 'duge impulse' (116us) za '0' u DCC podacima.

Petlja void, prima podatke s radija i ako se pronađe valjani niz, podaci se pretvaraju u DCC podatke.

void loop (void) {if (radio.available ()) {bool done = false; učinjeno = radio.čitano (inmsg, 1); // čitanje primljenih podataka

char rc = inmsg [0]; // stavlja znak koji se čita u ovaj niz

ako je (rc! = 0) {. // ako znak nije jednak nuli

inString.concat (rc); // sastavljanje poruke}

if (rc == '\ 0') {// ako je znak '/0' kraj poruke

Serial.println (inString); // ispisati sastavljenu poruku

niz(); // dekonstruiramo niz poruku da bismo dobili DCC upute

} } }

Korak 4: Pokrenite Locos

Pokrenite Locos
Pokrenite Locos

Kako biste izbjegli prekid podataka pri vožnji više vlakova na istoj pruzi, morate odspojiti kontakte između kotača i kolosijeka za svaki zaposleni loko i kamion.

Uživajte u besplatnim vlakovima bez obzira na uvjete kolosijeka - kakva je razlika! Bez muke, bez start-stop i nije potrebno čišćenje.

Baterije koje sam koristio mogu se ponovno puniti LLoytron AA x 12. Posebno sam za njih napravio punjač koji puni 6 u isto vrijeme. (vidi uputstva)

Preporučeni: