Orodha ya maudhui:

Treni ya Bustani - Arduino Wireless NMRA DCC: Hatua 4 (na Picha)
Treni ya Bustani - Arduino Wireless NMRA DCC: Hatua 4 (na Picha)

Video: Treni ya Bustani - Arduino Wireless NMRA DCC: Hatua 4 (na Picha)

Video: Treni ya Bustani - Arduino Wireless NMRA DCC: Hatua 4 (na Picha)
Video: DCC++EX: дешевая система DCC, сделанная своими руками?!?! Это модель железной дороги, которая меняет правила игры 2024, Juni
Anonim
Image
Image
Ubunifu wa Mfumo
Ubunifu wa Mfumo

Zaidi ya kufundishwa hapo awali na DCC juu ya mfumo wa reli iliyokufa, nimetengeneza wazo zaidi na mkono ulioshikiliwa Kituo cha Amri cha DCC na keypad na onyesho la LCD. Kituo cha Amri kina usimbuaji wote unaohitajika kwa maagizo ya NMRA DCC, hata hivyo badala ya kuungana na reli, data inahamishwa na moduli ya redio RF24L01 + kwa mpokeaji aliyewekwa kwenye lori au chini ya loco - popote chumba kinaporuhusu.

Kwa kweli, locos zako lazima ziwe na dekoda ya uwezo wa kupakia unaofaa kwa motors za injini.

Hatua ya 1: Ubunifu wa Mfumo

Ubunifu wa Mfumo
Ubunifu wa Mfumo

Arduino Pro Mini iko katikati ya muundo. Kutumia Fritzing kukuza mzunguko na kutengeneza PCB.

Niliweza kutumia PCB sawa kwa transmita na mpokeaji na hivyo kuokoa gharama zingine.

Mtumaji ana unganisho kwa keypad na LCD wakati mpokeaji hahitaji hizi na hutumia daraja la H kusambaza pato la DCC kwa loco.

Maendeleo zaidi yanajumuisha unganisho kwa daraja kubwa H ikiwa inahitajika kwa maeneo yenye nguvu zaidi.

PCF8574 inaweza kufutwa ikiwa unatumia onyesho la LCD linalokuja na mkoba unaoruhusu unganisho la SCA / SCL kwenye Arduino kulisha onyesho kwa kutumia waya 2 tu. Orodha ya sehemu: Jumla = takriban £ 60 kwa Kituo cha Amri cha DCC + mpokeaji 1 Gharama za wapokeaji wa ziada = £ 10.00 takriban kila mmoja. + betri

Arduino Pro Mini. x 2 = £ 4.00

Kitufe cha utando cha 4x3 = £ 3.00

20 x 4 LCD kuonyesha = £ 7.00

PCF5874 = Pauni 1.80

NRF24L01 +. moduli za redio x 2 = £ 5.80

Utengenezaji wa PCB kwa 10 off (au bodi ya Vero inaweza kutumika) = £ 24 au £ 4.80 kwa 2off

3.3 v Mdhibiti = £ 0.17 (pakiti ya 25 kutoka RS Comp)

Mdhibiti wa 5v LM7805 = £ 0.30

H-daraja SN754410ne = £ 3.00

Lloytron inayoweza kuchajiwa tena 2700 maH AA betri x 12 = £ 22.00. (betri ya chini ya maH ni ya bei rahisi)

Capacitors, sufuria, pini, viunganishi, nk = £ 2.00 takriban

Ufungaji 190x110x60 mm = £ 8.00

Transmitter - chaja ya simu / betri = £ 2.00

Hatua ya 2: Transmitter

Transmitter
Transmitter

Mchoro wa mzunguko unaonyeshwa mahali pini za D2 hadi D8 kwenye Arduino Pro Mini zimeunganishwa kwenye keypad. Potentiometer ya 100k ohm imeunganishwa na pini ya Analog A0 kwa marekebisho ya kasi. Pini za SDA na SCL zinaunda chip ya PCF8574 imeunganishwa na pini A4 na A5 kwenye Arduino Pro Mini kupitia waya zilizouzwa kwa pini kwenye safu ya juu ya Pro Mini.

Mchoro wa Arduino umeambatanishwa kwa kupakuliwa.

Nimetumia onyesho la LCD la 20 x 4 kuruhusu mistari 4 ya habari na herufi 20. Kwa kila kitufe kinatoa menyu ifuatayo:

1 hadi 9 = anwani ya mahali * = mwelekeo 0 = taa # = Menyu ya kazi ya funguo 1 hadi 8

Maelezo ya kimsingi ya mchoro wa Arduino Pro Mini: Mstari huu wa nambari hupanga ujumbe wa DCC katika muundo wa HEX. muundo Ujumbe msg [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // msg ya uvivu

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // 3 anwani ya baiti

};

Ili kuhifadhi mipangilio ya kila eneo, safu kadhaa za safu zinawekwa kama ifuatavyo:

int la [20]; // safu ya kushikilia nambari za loco

int sa [20]; // safu ya kushikilia maadili ya kasi

int fda [20]; // safu ya kushikilia dir

int fla [20]; // safu ya kushikilia taa

int f1a [20]; // safu ya kushikilia furaha1…..

int f8a [20]; // safu ya kushikilia furaha8

Ili kuwezesha maagizo ya DCC kubadilishwa tunapoenda:

Kwa maagizo ya kasi: batili amend_speed (muundo Ujumbe & x) {

x.data [0] = locoAdr;

data [1] = 0x40; // locoMsg na hatua 28 za kasi]

Kwa maagizo ya Kazi:

batili amend_group1 (muundo Ujumbe & x) {

x.data [0] = locoAdr;

data [1] = 0x80; // locoMsg na maagizo ya kikundi moja 0x80}

Kitanzi kuu cha mchoro:

kitanzi batili (batili) {ikiwa (soma_locoSpeed ()) {kukusanyika_dcc_msg_speed ();

tuma_data_1 (); // tuma data bila waya

kuchelewesha (10);

tuma_data_3 (); // data ya kuonyesha kwenye onyesho la LCD

tuma_data_4 (); // onyesha data kwenye mfuatiliaji wa serial}

ikiwa (kusoma_utendaji ()) {

kukusanyika_dcc_msg_group1 ();

tuma_data_1 ();

kuchelewesha (10);

tuma_data_3 (); }}

Sasisha data wakati kasi inabadilika:

boolean read_locoSpeed () Hii hugundua anwani mpya ya loco, kasi au mpangilio wa mwelekeo na kurekebisha 'data' ya HEX ipasavyo. Hapa nimeelezea hatua 28 za kasi na kufikia kiwango cha NMRA S 9.2, data ya kasi lazima ipatikane kutoka kwa meza ya kutazama katika 'speed_step ()'

kasi ya kasi_ya kasi () {switch (locoSpeed) {

kesi 1: data | = 0x02; kuvunja;

kesi 2: data | = 0x12; kuvunja;

kesi 3: data | = 0x03; kuvunja;

………

kesi 28: data | = 0x1F; kuvunja; }}

Sasisha data wakati kazi zinabadilika:

kusoma-kazi ya boolean ()

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

} // kichwa kinazimwa

ikiwa (fla [locoAdr] == 1) {

data = 0x90;

} // taa za kichwa zinawashwa

Kwa kila Kazi:

ikiwa (f2a [locoAdr] == 0) {data | = 0; }. // Kazi 2 imezimwa

ikiwa (f2a [locoAdr] == 1) {

data | = 0x02; // Kazi 2 kwenye} 'data' imejengwa kwa kuchanganya ['| =' kiwanja kidogo au] nambari za HEX kwa kila Kazi.

Hatua ya 3: Mpokeaji

Mpokeaji
Mpokeaji

Mchoro wa mzunguko unaonyeshwa ambapo pini 5 na 6 ya Arduino Pro Mini hutumiwa kutoa ishara ya DCC iliyotolewa kwa daraja la H. Jozi za daraja la H zimeunganishwa kwa usawa ili kuongeza uwezo wa sasa. Kulingana na sasa iliyochorwa na loco, heatsink inaweza kuhitajika kushikamana na kifaa 16 cha DIP, au jukumu-nzito la H-daraja linaweza kuunganishwa nje.

Mchoro wa Arduino umeambatanishwa kwa kupakuliwa. Ishara ya DCC imeundwa kutoka saa inayoendesha 2MHZ

utupu SetupTimer2 () hufanya kazi hii.

Saa hiyo ni pamoja na 'mapigo mafupi' (58us) ya '1' katika data ya DCC na 'kunde ndefu' (116us) ya '0' katika data ya DCC.

Utupu, hupata data kutoka kwa redio na ikiwa kamba halali inapatikana, data inabadilishwa kuwa data ya DCC.

kitanzi batili (batili) {ikiwa (redio haipatikani ()) {bool done = false; imefanywa = radio.read (inmsg, 1); // soma data iliyopokea

char rc = inmsg [0]; // weka tabia kusoma katika safu hii

ikiwa (rc! = 0) {. // ikiwa tabia sio sawa na sifuri

inString.concat (rc); // jenga ujumbe}

ikiwa (rc == '\ 0') {// ikiwa herufi ni '/ 0' mwisho wa ujumbe

Serial.println (inString); // chapisha ujumbe uliokusanyika

kamba (); // de-kujenga ujumbe wa kamba kupata maagizo ya DCC

} } }

Hatua ya 4: Endesha Locos

Endesha Locos
Endesha Locos

Ili kuzuia usumbufu wa data kutoka kuendesha treni nyingi kwenye wimbo huo huo, lazima uondoe mawasiliano kati ya magurudumu na wimbo kwa kila loco na lori lililoajiriwa.

Furahiya treni za bure bila kujali hali ya wimbo - ni tofauti gani! Hakuna shida, hakuna kuanza-kuanza na hakuna kusafisha kunahitajika.

Betri nilizotumia zinaweza kulipiwa tena LLoytron AA x 12. Nimejijengea chaja haswa kwao ambayo huchaji 6 kwa wakati mmoja. (tazama inafundishwa)

Ilipendekeza: