Satura rādītājs:

Dārza vilciens - Arduino bezvadu NMRA DCC: 4 soļi (ar attēliem)
Dārza vilciens - Arduino bezvadu NMRA DCC: 4 soļi (ar attēliem)

Video: Dārza vilciens - Arduino bezvadu NMRA DCC: 4 soļi (ar attēliem)

Video: Dārza vilciens - Arduino bezvadu NMRA DCC: 4 soļi (ar attēliem)
Video: Kas dārzā | Bērnu dziesmas | Latvian Folk Songs | Латышские детские песни 2024, Jūnijs
Anonim
Image
Image
Sistēmas dizains
Sistēmas dizains

Pēc iepriekšējiem norādījumiem ar DCC uz mirušo sliežu sistēmu, esmu šo ideju attīstījis tālāk ar rokas DCC vadības staciju ar tastatūru un LCD displeju. Komandstacijā ir visa kodēšana, kas nepieciešama NMRA DCC instrukcijām, tomēr tā vietā, lai izveidotu savienojumu ar sliedēm, datus ar radio moduli RF24L01+ pārsūta uz uztvērēju, kas uzstādīts kravas automašīnā vai zem atrašanās vietas - kur vien atļauj telpa.

Protams, jūsu lokomotīvēm jābūt aprīkotiem ar slodzes spēju dekodētāju, kas piemērots motora motoriem.

1. darbība: sistēmas projektēšana

Sistēmas dizains
Sistēmas dizains

Arduino Pro Mini ir dizaina pamatā. Izmantojot Fritzing, lai izstrādātu ķēdi un ražotu PCB.

Es varēju izmantot to pašu PCB gan raidītājam, gan uztvērējam, tādējādi ietaupot dažas izmaksas.

Raidītājam ir savienojumi tastatūrai un LCD, kamēr uztvērējam tie nav nepieciešami un izmanto H-tiltu, lai piegādātu lokomotīves DCC izeju.

Turpmākā attīstība ietver savienojumus lielākam H tiltam, ja tas ir nepieciešams jaudīgākiem lokomotīvēm.

PCF8574 var izdzēst, ja izmantojat LCD displeju, kas tiek piegādāts kopā ar mugursomu, ļaujot Arduino SCA / SCL savienojumiem barot displeju, izmantojot tikai 2 vadus. Daļu saraksts: Kopā = aptuveni £ 60 par DCC vadības staciju + 1 uztvērējs Papildu uztvērēja izmaksas = Aptuveni £ 10.00 katrs. + baterijas

Arduino Pro Mini. x 2 = 4,00 sterliņu mārciņas

4x3 membrānas tastatūra = £ 3.00

20 x 4 LCD displejs = £ 7,00

PCF5874 = 1,80 sterliņu mārciņas

NRF24L01+. radio moduļi x 2 = £ 5,80

PCB ražošana par 10 atlaidēm (vai var izmantot Vero plāksni) = £ 24 vai £ 4,80 par 2 off

3.3 v regulators = £ 0.17 (25 iepakojums no RS Comp)

5v regulators LM7805 = 0,30 £

H-tilts SN754410ne = £ 3.00

Lloytron atkārtoti uzlādējamas 2700 maH AA baterijas x 12 = 22,00 £. (zemākas maH nominālās baterijas ir lētākas)

Kondensatori, podi, tapas, savienotāji utt. = Aptuveni £ 2,00

Korpuss 190x110x60 mm = 8,00 £

Raidītājs - tālruņa lādētājs / akumulators = £ 2.00

2. solis: raidītājs

Raidītājs
Raidītājs

Shēmas diagramma ir parādīta, kur D2 līdz D8 tapas Arduino Pro Mini ir pievienotas tastatūrai. 100k omu potenciometrs ir savienots ar analogo tapu A0 ātruma regulēšanai. SDA un SCL tapas no PCF8574 mikroshēmas ir savienotas ar tapām A4 un A5 uz Arduino Pro Mini, izmantojot pielodētus vadus pie tapām Pro Mini augšējā slānī.

Arduino skice ir pievienota lejupielādei.

Esmu izmantojis 20 x 4 LCD displeju, kas ļauj 4 informācijas rindas ar 20 rakstzīmēm katrā rindā. Tastatūra nodrošina šādu izvēlni:

1 līdz 9 = lokalizācijas adrese * = virziens 0 = gaismas # = funkciju izvēlne taustiņiem 1 līdz 8

Arduino Pro Mini skices pamata apraksts: Šī koda rinda sakārto DCC ziņojumu HEX formātā. strukturēta ziņojuma ziņa [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // dīkstāves ziņojums

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 baitu adrese

};

Lai saglabātu katra lokalizācijas iestatījumus, masīvu sērija tiek iestatīta šādi:

int la [20]; // masīvs loco skaitļu turēšanai

int sa [20]; // masīvs ātruma vērtību turēšanai

int fda [20]; // masīvs turēt rež

int fla [20]; // masīvs gaismu turēšanai

int f1a [20]; // masīvs jautrībai1…..

int f8a [20]; // masīvs jautrības turēšanai8

Lai varētu mainīt DCC norādījumus, rīkojieties šādi:

Norādījumus par ātrumu: void change_speed (strukturēts ziņojums un x) {

x.dati [0] = locoAdr;

x.dati [1] = 0x40; // locoMsg ar 28 ātruma soļiem}

Norādījumus par funkcijām:

void edit_group1 (strukturēts ziņojums un x) {

x.dati [0] = locoAdr;

x.dati [1] = 0x80; // locoMsg ar pirmās grupas instrukciju 0x80}

Skices galvenā cilpa:

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

send_data_1 (); // nosūtīt datus, izmantojot bezvadu savienojumu

kavēšanās (10);

send_data_3 (); // parādīt datus LCD displejā

send_data_4 (); // parādīt datus seriālajā monitorā}

ja (lasīt_funkcija ()) {

assemble_dcc_msg_group1 ();

send_data_1 ();

kavēšanās (10);

send_data_3 (); }}

Atjauniniet datus, mainoties ātrumam:

boolean read_locoSpeed () Tas nosaka jaunu lokalizācijas adresi, ātrumu vai virziena iestatījumu un attiecīgi izmaina HEX “datus”. Šeit esmu norādījis 28 ātruma soļus un lai atbilstu NMRA standartam S 9.2, ātruma dati ir jāatrod no uzmeklēšanas tabulas sadaļā 'speed_step ()'

void speed_step () {switch (locoSpeed) {

1. gadījums: dati | = 0x02; pārtraukums;

2. gadījums: dati | = 0x12; pārtraukums;

3. gadījums: dati | = 0x03; pārtraukums;

………

28. gadījums: dati | = 0x1F; pārtraukums; }}

Atjauniniet datus, mainoties funkcijām:

Būla lasīšanas funkcija ()

ja (fla [locoAdr] == 0) {dati = 0x80;

} // galvas gaismas izslēgtas

ja (fla [locoAdr] == 1) {

dati = 0x90;

} // ieslēgtas galvas gaismas

Katrai funkcijai:

ja (f2a [locoAdr] == 0) {dati | = 0; }. // Funkcija 2 izslēgta

ja (f2a [locoAdr] == 1) {

dati | = 0x02; // Funkcija 2 uz} 'dati' tiek veidota, apvienojot ['| =' salikto bitveidā vai] HEX kodus katrai funkcijai.

3. solis: uztvērējs

Uztvērējs
Uztvērējs

Ir parādīta shēma, kurā Arduino Pro Mini 5. un 6. tapas tiek izmantotas, lai nodrošinātu DC tilta signālu, kas tiek piegādāts H tiltam. H tilta pāri ir savienoti paralēli, lai palielinātu strāvas jaudu. Atkarībā no lokomotīves patērētās strāvas, 16 kontaktu DIP ierīcei var būt jāpiestiprina radiators vai ārēji jāpievieno lieljaudas H tilts.

Arduino skice ir pievienota lejupielādei. DCC signālu veido pulkstenis, kas darbojas 2MHZ

void SetupTimer2 () veic šo darbu.

Pulkstenis ietver “īsus impulsus” (58us) “1” DCC datos un “garus impulsus” (116us) “0” DCC datos.

Cikls nav spēkā, iegūst datus no radio un, ja tiek atrasta derīga virkne, dati tiek pārvērsti DCC datos.

void loop (void) {if (radio.available ()) {bool done = false; darīts = radio.lasīts (inmsg, 1); // lasīt saņemtos datus

char rc = inmsg [0]; // ievietojiet šajā masīvā izlasīto rakstzīmi

ja (rc! = 0) {. // ja rakstzīme nav vienāda ar nulli

inString.concat (rc); // veidot ziņojumu}

if (rc == '\ 0') {// ja rakstzīme ir '/0' ziņojuma beigas

Serial.println (inString); // izdrukāt salikto ziņojumu

virkne (); // atveidojiet virknes ziņojumu, lai iegūtu DCC norādījumus

} } }

4. darbība: palaidiet programmu Locos

Palaist Locos
Palaist Locos

Lai izvairītos no vairāku vilcienu braukšanas datu pārtraukšanas vienā un tajā pašā sliežu ceļā, jums ir jāatvieno kontakti starp riteņiem un sliežu ceļu katram izmantotajam lokomotīvim un kravas automašīnai.

Izbaudiet bezmaksas vilcienus neatkarīgi no sliežu ceļa apstākļiem - kāda atšķirība! Nav problēmu, nav start-stop un nav nepieciešama tīrīšana.

Baterijas, kuras izmantoju, ir atkārtoti uzlādējamas LLoytron AA x 12. Īpaši tām esmu izveidojis lādētāju, kas uzlādē 6 vienlaicīgi. (skatīt pamācību)

Ieteicams: