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, Jun
Anonim
Image
Image
Projektovanje sistema
Projektovanje sistema

Uz prethodna uputstva sa DCC -om na mrtvom koloseku, ideju sam dodatno razvio ručnom DCC komandnom stanicom sa tastaturom i LCD ekranom. Komandna 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 lokomata - gdje god to prostorija dopušta.

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

Korak 1: Projektovanje sistema

Projektovanje sistema
Projektovanje sistema

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

Uspio sam koristiti istu PCB i za predajnik i za prijemnik, čime sam uštedio neke troškove.

Predajnik ima priključke za tastaturu 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ćava SCA / SCL veze na Arduinu za napajanje ekrana pomoću samo 2 žice. Lista dijelova: Ukupno = približno 60 funti za DCC komandnu stanicu + 1 prijemnik Dodatni troškovi prijemnika = Otprilike 10,00 £ svaki. + baterije

Arduino Pro Mini. x 2 = 4,00 £

4x3 membranska tastatura = 3,00 £

20 x 4 LCD ekran = £ 7.00

PCF5874 = 1,80 £

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 2 off

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

5v regulator LM7805 = 0,30 £

H-most SN754410ne = 3,00 £

Lloytron punjive AA baterije od 2700 maH x 12 = 22,00 £. (baterije s nižim maH vrijednostima su jeftinije)

Kondenzatori, lonci, igle, konektori itd. = £ 2,00 pribl

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

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

Korak 2: Odašiljač

Odašiljač
Odašiljač

Dijagram kruga je prikazan 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. SDA i SCL pinovi iz čipa PCF8574 spojeni su na pinove A4 i A5 na Arduino Pro Mini pomoću lemljenih žica za pinove na gornjem sloju Pro Mini.

Arduino skica je priložena za preuzimanje.

Koristio sam LCD ekran veličine 20 x 4 koji omogućava 4 reda informacija sa 20 znakova po redu. Tastatura nudi sljedeći meni:

1 do 9 = loko adresa * = smer 0 = svetla # = Meni funkcija za tastere od 1 do 8

Osnovni opis skice Arduino Pro Mini: Ova linija 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 polja se postavlja 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

Da biste omogućili izmjene i dopune DCC uputstava:

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

x.data [0] = locoAdr;

x.podaci [1] = 0x40; // locoMsg sa 28 brzinskih koraka}

Za upute o funkciji:

void submit_group1 (struct poruka & x) {

x.data [0] = locoAdr;

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

Glavna petlja skice:

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

send_data_1 (); // šalje podatke putem bežične veze

kašnjenje (10);

send_data_3 (); // prikaz podataka na LCD ekranu

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

if (read_function ()) {{100} {101}

assemble_dcc_msg_group1 ();

send_data_1 ();

kašnjenje (10);

send_data_3 (); }}

Ažurirajte podatke kada se promijeni brzina:

boolean read_locoSpeed () Ovo otkriva novu loko adresu, postavku brzine ili smjera i shodno tome mijenja HEX 'podatke'. Ovdje sam naveo 28 koraka brzine i da 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: podaci | = 0x02; break;

slučaj 2: podaci | = 0x12; break;

slučaj 3: podaci | = 0x03; break;

………

slučaj 28: podaci | = 0x1F; break; }}

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;

} // uključena 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' je izgrađena kombiniranjem ['| =' složeno bitova ili] HEX kodova za svaku funkciju.

Korak 3: Prijemnik

Prijemnik
Prijemnik

Shema kola je prikazana gdje se pinovi 5 i 6 Arduino Pro Mini koriste za davanje DCC signala koji se dovodi na H-most. Parovi H-mosta povezani su paralelno radi povećanja trenutnog kapaciteta. U zavisnosti od struje koju crpi loko, možda će biti potrebno da se na 16-polni DIP uređaj priključi hladnjak ili da se H-most za teške uslove spolja spoji.

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; done = radio.read (inmsg, 1); // čitanje primljenih podataka

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

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

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

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

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

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

} } }

Korak 4: Pokrenite Locos

Pokrenite Locos
Pokrenite Locos

Da biste izbjegli prekid podataka pri voženju 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 vozovima bez obzira na uslove kolosijeka - kakva je razlika! Bez muke, bez start-stop i nije potrebno čišćenje.

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

Preporučuje se: