Sisukord:

Aiarong - Arduino Wireless NMRA DCC: 4 sammu (koos piltidega)
Aiarong - Arduino Wireless NMRA DCC: 4 sammu (koos piltidega)

Video: Aiarong - Arduino Wireless NMRA DCC: 4 sammu (koos piltidega)

Video: Aiarong - Arduino Wireless NMRA DCC: 4 sammu (koos piltidega)
Video: Введение в RailCom часть 2 2024, Juuni
Anonim
Image
Image
Süsteemi disain
Süsteemi disain

Lisaks eelnevale juhendile DCC -ga surnud raudteesüsteemis olen seda ideed edasi arendanud käeshoitava DCC juhtimisjaamaga, millel on klaviatuur ja LCD -ekraan. Juhtimisjaam sisaldab kõiki NMRA DCC juhiste jaoks vajalikke kodeeringuid, kuid rööbastega ühendamise asemel edastatakse andmed raadiomooduli RF24L01+ kaudu veoautosse paigaldatud vastuvõtjale või asukoha alla - kui ruum seda võimaldab.

Loomulikult peavad teie veokid olema varustatud mootori mootoritele sobiva koormusvõimega dekoodriga.

Samm: süsteemi kujundamine

Süsteemi disain
Süsteemi disain

Disaini keskmes on Arduino Pro Mini. Fritzingi kasutamine vooluahela arendamiseks ja PCBde tootmiseks.

Sain kasutada sama PCB -d nii saatja kui ka vastuvõtja jaoks, säästes seega mõningaid kulusid.

Saatjal on klaviatuuri ja vedelkristallekraani ühendused, samal ajal kui vastuvõtja neid ei vaja ja kasutab HC-silda, et varustada loko DCC väljundit.

Edasine arendus hõlmab ühendusi suurema H-silla jaoks, kui see on vajalik võimsamate kohtade jaoks.

PCF8574 saab kustutada, kui kasutate seljakotiga kaasasolevat LCD -ekraani, mis võimaldab Arduino SCA / SCL -ühendustel toita ekraani ainult kahe juhtme abil. Osade loend: Kokku = ligikaudu 60 £ DCC juhtjaama + 1 vastuvõtja eest = Igaüks umbes 10,00 £. + patareid

Arduino Pro Mini. x 2 = 4,00 naela

4x3 membraaniga klaviatuur = 3,00 £

20 x 4 LCD -ekraan = 7,00 £

PCF5874 = 1,80 naela

NRF24L01+. raadiomoodulid x 2 = 5,80 naela

PCB tootmine 10 off (või võib kasutada Vero plaati) = 24 £ või 4,80 £ 2off

3,3 v regulaator = 0,17 £ (25 komplekti RS Comp -lt)

5v regulaator LM7805 = 0,30 £

H-sild SN754410ne = 3,00 naela

Lloytroni laetavad 2700 maH AA patareid x 12 = 22,00 £. (madalama mahutavusega akud on odavamad)

Kondensaatorid, potid, tihvtid, pistikud jne = umbes 2,00 £

Korpus 190x110x60 mm = 8,00 €

Saatja - telefoni laadija / aku = 2,00 £

2. samm: saatja

Saatja
Saatja

Lülitusskeem on näidatud, kus Arduino Pro Mini D2 kuni D8 tihvtid on klaviatuuriga ühendatud. Kiiruse reguleerimiseks on analoogpistikuga A0 ühendatud 100k oomine potentsiomeeter. PCA8574 kiibi SDA ja SCL tihvtid on ühendatud tihvtidega A4 ja A5 Arduino Pro Minil joodetud juhtmete abil Pro Mini pealmise kihi tihvtide külge.

Arduino eskiis on allalaadimiseks lisatud.

Olen kasutanud 20 x 4 LCD -ekraani, mis võimaldab 4 rida teavet ja 20 tähemärki rea kohta. Klaviatuur pakub järgmist menüüd:

1 kuni 9 = asukoha aadress * = suund 0 = tuled # = funktsioonide menüü klahvidele 1 kuni 8

Arduino Pro Mini visandi põhikirjeldus: see koodirida korraldab DCC -teate HEX -vormingus. struktuuri sõnum msg [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // jõude sõnum

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 baidi aadress

};

Iga loko seadete salvestamiseks seadistatakse massiivide seeria järgmiselt.

int la [20]; // massiiv lokoarvude hoidmiseks

int sa [20]; // massiiv kiiruse väärtuste hoidmiseks

int fda [20]; // massiiv hoidmiseks dir

int fla [20]; // massiiv tulede hoidmiseks

int f1a [20]; // massiiv lõbutsemiseks1…..

int f8a [20]; // massiiv lõbutsemiseks8

DCC juhiste muutmise võimaldamiseks tehke järgmist.

Kiiruse juhised: void change_speed (structure Message & x) {

x.andmed [0] = locoAdr;

x.andmed [1] = 0x40; // locoMsg 28 kiiruse sammuga}

Funktsioonide juhised:

void change_group1 (struktureeritud sõnum ja x) {

x.andmed [0] = locoAdr;

x.andmed [1] = 0x80; // locoMsg esimese rühma juhisega 0x80}

Visandi peamine silmus:

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

send_data_1 (); // saata andmeid traadita ühenduse kaudu

viivitus (10);

send_data_3 (); // kuvab andmeid LCD -ekraanil

send_data_4 (); // kuva andmeid seeriamonitoril}

kui (loe_funktsioon ()) {

assemble_dcc_msg_group1 ();

send_data_1 ();

viivitus (10);

send_data_3 (); }}

Värskendage andmeid, kui kiirus muutub:

boolean read_locoSpeed () See tuvastab uue asukoha aadressi, kiiruse või suuna seadistuse ja muudab vastavalt HEX -i andmeid. Siin olen määranud 28 kiiruse sammu ja NMRA standardi S 9.2 täitmiseks tuleb kiiruse andmed leida tabelist 'speed_step ()'

void speed_step () {lüliti (locoSpeed) {

juhtum 1: andmed | = 0x02; murda;

juhtum 2: andmed | = 0x12; murda;

juhtum 3: andmed | = 0x03; murda;

………

juhtum 28: andmed | = 0x1F; murda; }}

Uuendage andmeid, kui funktsioonid muutuvad:

loogiline lugemisfunktsioon ()

kui (fla [locoAdr] == 0) {andmed = 0x80;

} // pea tuled välja

kui (fla [locoAdr] == 1) {

andmed = 0x90;

} // esituled põlevad

Iga funktsiooni jaoks:

kui (f2a [locoAdr] == 0) {andmed | = 0; }. // Funktsioon 2 välja lülitatud

kui (f2a [locoAdr] == 1) {

andmed | = 0x02; // Funktsioon 2 on} 'andmed' koostatakse, ühendades ['| =' ühend bititi või] iga funktsiooni HEX -koodid.

3. samm: vastuvõtja

Vastuvõtja
Vastuvõtja

Näidatud on skeem, kus Arduino Pro Mini tihvte 5 ja 6 kasutatakse H-sillale edastatava DCC signaali edastamiseks. H-sillapaarid on voolu läbilaskevõime suurendamiseks ühendatud paralleelselt. Sõltuvalt veduri poolt tarbitavast voolust võib olla nõutav 16-kontaktilise DIP-seadme külge kinnitamine jahutusradiaator või välispidine raskeveokite H-silla ühendamine.

Arduino visand on allalaadimiseks lisatud. DCC signaal koosneb kellast, mis töötab 2MHZ

void SetupTimer2 () teeb seda tööd.

Kell sisaldab DCC andmetes '1' jaoks lühikesi impulsse (58us) ja DCC andmetes '0' 'pikki impulsse' (116us).

Tsükkel tühine, saab andmeid raadiost ja kui leitakse kehtiv string, teisendatakse andmed DCC -andmeteks.

void loop (void) {if (radio.available ()) {bool done = false; tehtud = raadio.lugemine (inmsg, 1); // lugeda saadud andmeid

char rc = inmsg [0]; // pane sellesse massiivi loetav märk

kui (rc! = 0) {. // kui märk ei ole null

inString.concat (rc); // sõnumi koostamine}

if (rc == '\ 0') {// kui märk on '/0' sõnumi lõpp

Serial.println (inString); // printida kokkupandud sõnum

string (); // DCC juhiste saamiseks stringi sõnumi konstrueerimine

} } }

4. samm: käivitage Locos

Käivitage Locos
Käivitage Locos

Et vältida mitme rongi sama rööbasteega sõitmise andmete katkestamist, peate iga kasutatava veduri ja tõstuki rataste ja rööbastee vahelised kontaktid lahti ühendama.

Nautige tasuta sõitvaid ronge olenemata rajaoludest - milline vahe! Pole probleeme, pole käivitamist-peatamist ega puhastamist.

Patareid, mida ma kasutasin, on uuesti laetavad LLoytron AA x 12. Olen spetsiaalselt nende jaoks ehitanud laadija, mis laeb 6 korraga. (vt juhendav)

Soovitan: