Orodha ya maudhui:

8 Channel kipanga Timer: 13 Hatua
8 Channel kipanga Timer: 13 Hatua

Video: 8 Channel kipanga Timer: 13 Hatua

Video: 8 Channel kipanga Timer: 13 Hatua
Video: MAIDS WAINGIA BILA VIATU UKUMBINI !! NA WANAVYOJUA KURINGA SASA! |GadsonAndSalome |MCKATOKISHA 2024, Novemba
Anonim
8 Channel kipanga Timer
8 Channel kipanga Timer
8 Channel kipanga Timer
8 Channel kipanga Timer
8 Channel kipanga Timer
8 Channel kipanga Timer

Utangulizi

Nimekuwa nikitumia anuwai ya Microcontroller ya PIC ya Microchip kwa miradi yangu tangu 1993, na nimefanya programu yangu yote kwa lugha ya kukusanyika, nikitumia Microchip MPLab IDE. Miradi yangu ilitoka kwa taa nyepesi za trafiki na taa za kuwaka, kwa viunga vya kufurahisha vya USB kwa mifano ya R / C, na wachambuzi wa switchgear wanaotumika kwenye tasnia. Maendeleo yalichukua siku nyingi, na wakati mwingine maelfu ya mistari ya nambari ya kukusanyika.

Baada ya kupokea Matrix Multimedia Flowcode 4 Professional, nilikuwa na wasiwasi kabisa wa programu hiyo. Ilionekana kuwa rahisi sana kuamini. Niliamua kujaribu, na nikajaribu kila sehemu tofauti za Macros, zote kwa mafanikio makubwa. Sehemu bora ya kutumia Flowcode ilikuwa kwamba miradi rahisi inaweza kuorodheshwa kwa usiku mmoja. Baada ya kucheza na I²C na saa halisi ya DS1307, niliamua kubuni Saa 8 ya Channel kwa kutumia Flowcode. Sio mradi mdogo na rahisi, niliamini kuwa huu utakuwa mradi mzuri wa kujifundisha Flowcode.

Kuchagua microprocessor na vifaa vingine

Kwa sababu ya idadi ya pini za I / O zinazohitajika, ilikuwa wazi kwamba kifaa 40 cha pini kitahitajika. PIC 18F4520 ilichaguliwa, haswa kwa kumbukumbu ya programu ya 32K, na ka 1536 za kumbukumbu ya data. Vipengele vyote vilivyotumiwa, ni vifaa vya kawaida vya shimo, na kuifanya iwezekane kujenga mzunguko kwenye bodi ya Vero ikiwa inahitajika. Hii pia ilisaidia maendeleo kwenye ubao wa mkate.

Hatua ya 1: Malengo ya Mradi

Malengo ya Mradi
Malengo ya Mradi

Malengo

- Sahihi ya utunzaji wa wakati, na kuhifadhi nakala ya betri.

- Programu na data zote zitahifadhiwa, hata baada ya kupoteza nguvu.

- Kielelezo rahisi cha mtumiaji.

- Kubadilika kwa programu.

Kutunza muda

Kuishi katika eneo linalokabiliwa na shida ya umeme, kiwango cha 50 / 60Hz kutoka kwa laini za umeme hakitatosha kwa utunzaji wa wakati sahihi. Saa halisi ilikuwa muhimu, na baada ya kujaribu vidonge kadhaa vya RTC, niliamua DS1307 kwa sababu ya oscillator yake rahisi na usanidi wa kurudisha betri. Utunzaji wa wakati sahihi ulipatikana kwa kutumia tu glasi 32.768 kHz iliyounganishwa na DS1307. Usahihi ulikuwa ndani ya sekunde 2 juu ya kipindi cha majaribio cha miezi 2 ukitumia aina 4 tofauti za fuwele.

Uhifadhi wa data

Takwimu zote za programu ya wakati lazima zihifadhiwe, hata wakati wa kufeli kwa umeme. Na hadi programu 100 tofauti na data anuwai ya usanidi, ikawa wazi kuwa kaiti 256 za bodi ya EEPROM ya PIC haitakuwa kubwa vya kutosha. 24LC256 I²C EEPROM hutumiwa kuhifadhi habari zote za programu.

Rahisi interface ya mtumiaji

Muunganisho wa mtumiaji una vitu 2 tu, onyesho la LCD la 16 x 4 na mwangaza wa mwangaza wa LED, na keypad ya 4 x 3. Programu zote zinaweza kufanywa na waandishi wa habari wa vitufe vichache tu. Nyongeza kwenye kiunga ni buzzer inayosikika ya piezo, na taa ya mwangaza ya LCD inayoonekana.

Hatua ya 2: Kubadilisha programu

Kubadilika kwa programu
Kubadilika kwa programu

Ili kuhakikisha kubadilika kwa programu ya kutosha, kipima muda kina programu 100 ambazo zinaweza kuwekwa peke yake. Kwa kila programu, Wakati, Wakati wa Kuzima, Njia za Pato, na Siku ya Wiki zinaweza kuwekwa. Kila mpango una njia tatu:

- Auto: Kwa Wakati, Wakati wa Kuzima, Kituo cha Pato na Siku ya wiki imewekwa.

- Mbali: Programu ya mtu binafsi inaweza kuzimwa, bila kufuta mipangilio. Ili kuwezesha programu tena, chagua tu hali tofauti.

- Mchana / Usiku: Kwa Wakati, Saa za nje, Kituo cha Pato na Siku ya wiki imewekwa. Inafanya kazi sawa na hali ya Auto, lakini itafanya

washa tu matokeo kati ya nyakati za On na Off wakati ni giza. Hii inawezesha udhibiti kamili wa Mchana / Usiku, vile vile

kama mabadiliko ya kugeuza taa wakati wa jua, na kuzima wakati wa jua.

Mfano 1: Itawasha taa baada ya 20:00, na kuzima taa wakati jua linapochomoza.

Mnamo: 20:00, Mbali: 12:00, Mfano 2: Itawasha taa wakati wa jua, na kuzima taa saa 23:00.

Mnamo: 12:00

Nje: 23:00

Mfano 3: Itawasha mwangaza wakati wa jua, na kuzima taa wakati wa jua.

Kwenye: 12:01

Nje: 12:00

Chaguzi za ziada zinapatikana, wote wakifanya kazi kwa kujitegemea kutoka kwa programu 100 za On / Off.

Vituo vya Programu Vinavyofanya kazi: Badala ya kuzima programu kadhaa, njia za pato za kibinafsi zinaweza kuzimwa bila hitaji la kubadilisha programu.

Pembejeo za msaidizi: Pembejeo mbili za dijiti zinapatikana, kuruhusu njia fulani za pato kuwashwa kwa muda maalum. Kwa mfano inaweza kutumika kuwasha taa fulani unapofika nyumbani usiku sana, wakati kitufe kwenye rimoti kinabanwa, au kuwasha taa tofauti wakati kengele ya nyumba inasababishwa.

Matokeo ya msaidizi: Matokeo mawili ya ziada (mbali na njia 8 za pato) zinapatikana. Wanaweza kusanidiwa kuwasha na njia fulani za pato, au na pembejeo za dijiti. Katika usanikishaji wangu, nina matokeo 6-8 ya kudhibiti umwagiliaji wangu, ambao hufanya kazi kwenye 24V. Ninatumia njia 6-8 kuwasha moja ya matokeo ya msaidizi, kuwasha umeme wa 24V kwa mfumo wa umwagiliaji.

Mwongozo Umewashwa: Ukiwa kwenye skrini kuu, vifungo 1-8 vinaweza kutumiwa kuwasha au kuzima njia kwa mikono.

Hatua ya 3: Vifaa

Vifaa
Vifaa

Ugavi wa Nguvu: Ugavi wa umeme una kisuluhishi, laini ya kutuliza, na fuse ya 1 Amp kwa ulinzi wa kupindukia. Ugavi huu unasimamiwa na mdhibiti wa 7812 na 7805. Ugavi wa 12V hutumiwa kwa kuendesha upelekaji wa pato, na mizunguko mingine yote inaendeshwa kutoka kwa usambazaji wa 5V. Kama mdhibiti wa 7805 ameunganishwa na pato la mdhibiti wa 7812, jumla ya sasa lazima iwe mdogo kwa 1 amp kupitia mdhibiti wa 7812. Inashauriwa kuweka wadhibiti hawa kwenye bomba linalofaa la joto.

Basi la I²C: Ingawa Flowcode inaruhusu udhibiti wa vifaa vya I²C, niliamua kutumia usanidi wa programu ya I²C. Hii inaruhusu kubadilika zaidi kwa kazi za pini. Ingawa polepole (50 kHz), bado hufanya vizuri ikilinganishwa na basi ya vifaa vya I²C. Zote DS1307 na 24LC256 zimeunganishwa na basi hii ya I²C.

Saa Saa Saa (DS1307): Wakati wa kuanza, rejista ya RTC 0 na 7 inasomwa ili kubaini ikiwa ina wakati halali na data ya usanidi. Mara baada ya kuanzisha sahihi, wakati wa RTC unasomwa na wakati uliowekwa kwenye PIC. Huu ndio wakati pekee wakati huo unasomwa kutoka kwa RTC. Baada ya kuanza, mapigo ya 1Hz yatakuwapo kwenye pin 7 ya RTC. Ishara hii ya 1Hz imeunganishwa na RB0 / INT0, na kupitia utaratibu wa huduma ya kusumbua, wakati wa PIC unasasishwa kila sekunde.

EEPROM ya nje: Takwimu zote za programu na chaguzi zinahifadhiwa kwenye EEPROM ya nje. Takwimu za EEPROM zimepakiwa wakati wa kuanza, na nakala ya data imehifadhiwa kwenye kumbukumbu ya PIC. Takwimu za EEPROM zinasasishwa tu wakati mipangilio ya programu inabadilishwa.

Sensorer ya Mchana / Usiku: Kizuizi cha kawaida kinachotegemea mwanga (LDR) hutumiwa kama sensa ya Mchana / Usiku. LDRs zinapokuja katika maumbo na aina nyingi, zote zikiwa na viwango tofauti vya upinzani chini ya hali sawa ya nuru, nilitumia kituo cha kuingiza analogi kusoma kiwango cha nuru. Viwango vya Mchana pamoja na Usiku vinaweza kubadilishwa, na huruhusu kubadilika kwa sensorer tofauti. Kuanzisha hysteresis kadhaa, maadili ya kibinafsi ya Mchana na Usiku yanaweza kuwekwa. Hali itabadilika tu ikiwa kiwango cha mwanga kiko chini ya Mchana, au juu ya alama za Usiku, kwa zaidi ya sekunde 60.

Onyesho la LCD: laini 4, onyesho la herufi 16 hutumiwa, kwani data zote hazikuweza kuonyeshwa kwenye onyesho la laini-2. Mradi huo unajumuisha wahusika wa kawaida, ambayo hufafanuliwa katika jumla ya LCD_Custom_Char.

Pembejeo za msaidizi: Pembejeo zote mbili zimepigwa na transistor ya NPN. + 12v na 0V pia inapatikana kwenye kontakt, ikiruhusu unganisho rahisi zaidi kwa unganisho la nje. Kama mfano, mpokeaji wa kudhibiti kijijini anaweza kushikamana na usambazaji.

Matokeo: Matokeo yote yametengwa kwa umeme kutoka kwa mzunguko kwa njia ya relay ya 12V. Relays zilizotumiwa, zimepimwa kwa 250V AC, kwa amps 10. Anwani za kawaida zilizo wazi na kawaida hufungwa huletwa kwenye vituo.

Keypad: Kitufe kilichotumiwa ni kitufe cha matrix 3 x 4, na imeunganishwa PORTB: 2..7.

Hatua ya 4: Kukatisha keypad

Usumbufu wa vitufe
Usumbufu wa vitufe
Usumbufu wa vitufe
Usumbufu wa vitufe
Usumbufu wa vitufe
Usumbufu wa vitufe

Nilitaka kutumia Usumbufu wa PORTB juu ya Mabadiliko kukatiza kwenye media yoyote muhimu. Kwa hili, Usumbufu wa Desturi ulipaswa kuundwa katika Flowcode, ili kuhakikisha kuwa mwelekeo wa PORTB na data imewekwa sahihi kabla na baada ya kila kitufe kukatiza. Usumbufu hutengenezwa kila wakati kitufe kinabonyeza, au kutolewa. Utaratibu wa kukatiza hujibu tu wakati kitufe kinabanwa.

UINGILIZAJI WA TABIA

Washa Msimbo

bandari = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Msimbo wa kushughulikia

ikiwa (intcon & (1 << RBIF))

{FCM_% n ();

bandari = 0b00001110;

trisb = 0b11110001;

wreg = bandari;

clear_bit (intcon, RBIF);

}

Shida zimepatikana

Wakati wa usumbufu, utaratibu wa huduma ya kusumbua lazima iwe chini ya hali NO, piga simu nyingine yoyote ambayo inaweza kutumika mahali pengine katika programu yote. Hii mwishowe itasababisha shida ya kufurika kwa mpororo, kwani usumbufu unaweza kutokea wakati huo huo kwamba programu kuu pia iko kwenye subroutine hiyo hiyo. Hii pia hutambuliwa kama KOSA MZITO na Nambari ya mtiririko wakati nambari imekusanywa.

Katika nambari maalum ya Keypad chini ya GetKeyPadNumber, kuna simu kama hiyo kwa Delay_us macro, ambayo itasababisha kufurika kwa stack. Ili kushinda hili, nimeondoa amri ya Delay_us (10), na kuibadilisha na mistari 25 ya "wreg = porta;" amri. Amri hii inasoma PORTA, na inaweka thamani yake kwenye rejista ya W, ili tu kucheleweshwa. Amri hii itajumuishwa kwa maagizo moja sawa na mkusanyiko wa movf porta, 0. Kwa saa ya 10MHz inayotumika katika mradi huo, kila maagizo yatakuwa 400ns, na kupata ucheleweshaji wa 10us, nilihitaji 25 ya maagizo haya.

Kumbuka kwenye mstari wa pili wa Kielelezo 3: GetKeypadNumber Custom Code, kwamba amri ya awali ya kuchelewesha (10) imelemazwa na "//". Chini ya hii, nimeongeza 25 yangu "wreg = porta;" amri ya kupata ucheleweshaji mpya wa 10us. Bila kupiga simu kwa macros yoyote ndani ya nambari maalum ya Keypad_ReadKeypadNumber, jumla ya keypad sasa inaweza kutumika ndani ya utaratibu wa usumbufu wa huduma.

Ikumbukwe kwamba vitufe vya Flowcode Keypad na eBlocks haitumii vipingamizi vya kawaida vya kuvuta kwenye laini za kuingiza. Badala yake, hutumia vipinga-100K vya kuvuta-chini. Kwa sababu ya usumbufu fulani uliopatikana kwenye keypad wakati wa maendeleo, vizuizi vya 100K vyote vilibadilishwa na 10K, na vipinga vyote 10K vilibadilishwa na 1K5. Kitufe kilijaribiwa kufanya kazi sahihi na viongozi vya 200mm.

Hatua ya 5: Kutumia Timer

Kutumia Timer
Kutumia Timer
Kutumia Timer
Kutumia Timer
Kutumia Timer
Kutumia Timer

Skrini zote zimewekwa ili kuonyesha habari zote zinazohitajika kwa mtumiaji kufanya mabadiliko ya haraka kwenye mipangilio. Mstari wa 4 hutumiwa kusaidia kwa urambazaji kupitia menyu na chaguzi za programu. Jumla ya skrini 22 zinapatikana wakati wa operesheni ya kawaida.

MSTARI 1: Wakati na Hali

Inaonyesha siku na saa ya sasa, ikifuatiwa na aikoni za hali:

A - Inaonyesha kuwa Aux Input A ilisababishwa, na Aux Input A timer inaendesha.

B - Inaonyesha kuwa Aux Input B ilisababishwa, na Aux Input B timer inaendesha.

C - Inaonyesha kuwa Pato la Aux limewashwa.

D - Inaonyesha kuwa Pato la Aux limewashwa.

} - Hali ya sensa ya Mchana / Usiku. Ikiwa iko, inaonyesha kuwa ni usiku.

MSTARI 2: Matokeo ya Programu

Inaonyesha vituo ambavyo vimewashwa na programu tofauti. Vituo vinaonyeshwa kwa nambari zao za pato, na "-" inaonyesha kuwa pato maalum halijawashwa. Vituo ambavyo vimezimwa katika "Matokeo ya Programu yanayotumika" bado vitaonyeshwa hapa, lakini matokeo halisi hayatawekwa.

MSTARI 3: Matokeo halisi

Inaonyesha ni vituo vipi vinawashwa na programu tofauti, Pembejeo za Aux A & B, au matokeo ya mwongozo yaliyowekwa na mtumiaji. Kubonyeza 0 itarudisha matokeo yote yaliyoamilishwa kwa mikono, na kuweka upya vipima muda vya Aux Output A & B.

MSTARI 4: Menyu na chaguzi muhimu (kwenye menyu zote)

Inaonyesha utendaji wa vitufe vya "*" na "#".

Sehemu ya katikati inaonyesha ni funguo gani za nambari (0-9) zinazotumika kwa skrini iliyochaguliwa.

Hali ya pembejeo ya Aux Input A & B pia imeonyeshwa kupitia ikoni ya swichi iliyofunguliwa au iliyofungwa.

Matokeo yanaweza kuwashwa / kuzimwa kwa mikono kwa kubonyeza kitufe kinacholingana kwenye kitufe.

Katika menyu zote, funguo za Star na Hash hutumiwa kuzunguka kupitia chaguzi tofauti za programu. Funguo 0-9 hutumiwa kuweka chaguzi. Ambapo chaguzi nyingi zinapatikana kwenye skrini moja au menyu ya programu, kitufe cha Hash hutumiwa kupitia chaguzi tofauti. Chaguo la sasa lililochaguliwa litaonyeshwa kila wakati na herufi ">" upande wa kushoto wa skrini.

Ingiza nambari za wakati

1-8 Badilisha chaguo la kituo

14 36 Hatua kupitia programu, hatua 1 nyuma, hatua 4 nyuma mipango 10, hatua 3 mbele, 6-hatua mbele 10

mipango

1-7 Weka siku za wiki. 1 = Jumapili, 2 = Jumatatu, 3 = Jumanne, 4 = Jumatano, 5 = Alhamisi, 6 = Ijumaa, 7 = Jumamosi

0 Katika skrini kuu, futa matoleo yote ya mwongozo na vipengee vya Kuingiza A & Ingiza B. Katika menyu zingine, mabadiliko

chaguzi zilizochaguliwa

# Kwenye skrini kuu, italemaza ubatilishaji wote wa mwongozo, Pembejeo A & Vipima muda B na Matokeo ya Programu, hadi

tukio linalofuata.

* na 1 Washa tena kipima muda

* na 2 Futa mipango na chaguzi zote, rejesha mipangilio kuwa chaguomsingi.

* na 3 Weka kipima saa katika hali ya kusubiri. Ili kuwasha kipima muda tena, bonyeza kitufe chochote.

Wakati wa maandishi yasiyo sahihi ya wakati wowote, taa ya nyuma ya LCD itaangaza mara 5 kuonyesha hitilafu. Wakati huo huo, buzzer itasikika. Amri za Toka na Zifuatazo zitafanya kazi tu wakati kiingilio cha sasa ni sahihi.

Mwangaza wa LCD

Wakati wa kuanza, mwangaza wa LCD utawashwa kwa dakika 3, isipokuwa:

- Kuna kutofaulu kwa vifaa (EEPROM au RTC haipatikani)

- Wakati haujawekwa katika RTC

Taa ya nyuma ya LCD itawasha tena kwa dakika 3 kwa pembejeo yoyote ya mtumiaji kwenye kitufe. Ikiwa taa ya taa ya LCD imezimwa, amri yoyote ya vitufe itawasha taa ya mwangaza ya LCD, na kupuuza kitufe kilichobanwa. Hii inahakikisha kuwa mtumiaji ataweza kusoma onyesho la LCD kabla ya kutumia keypad. Taa ya nyuma ya LCD pia itawashwa kwa sekunde 5 ikiwa Aux Input A au Aux Input B imeamilishwa.

Hatua ya 6: Menyu ya Picha Shots

Picha za Skrini za Menyu
Picha za Skrini za Menyu
Picha za Skrini za Menyu
Picha za Skrini za Menyu
Picha za Skrini za Menyu
Picha za Skrini za Menyu

Kutumia keypad, kila chaguzi zinaweza kusanidiwa kwa urahisi. Picha hizo zinatoa habari kuhusu kila skrini inafanya nini.

Hatua ya 7: Ubunifu wa Mfumo

Ubunifu wa Mfumo
Ubunifu wa Mfumo

Maendeleo yote na upimaji ulifanywa kwenye ubao wa mkate. Kuangalia sehemu zote za mfumo, nilivunja mfumo kwa moduli tatu. Uamuzi huu ulitokana na upungufu wa saizi ya PCB (80 x 100mm) ya toleo la bure la Tai.

Moduli 1 - Ugavi wa Umeme

Moduli 2 - Bodi ya CPU

Moduli 3 - Bodi ya kupeleka tena

Niliamua kuwa vifaa vyote lazima vipatikane kwa urahisi, na kwamba sikutaka kutumia vifaa vya mlima wa uso.

Wacha tupitie kila moja yao.

Hatua ya 8: Ugavi wa Umeme

Ugavi wa Umeme
Ugavi wa Umeme
Ugavi wa Umeme
Ugavi wa Umeme
Ugavi wa Umeme
Ugavi wa Umeme
Ugavi wa Umeme
Ugavi wa Umeme

Ugavi wa umeme uko mbele moja kwa moja, na unapeana bodi za CPU na relay na 12V na 5V.

Niliweka vidhibiti vya voltage kwenye visima vya joto vyenye joto, na pia nilitumia capacitors zilizozidi kwa usambazaji.

Hatua ya 9: Bodi ya CPU

Bodi ya CPU
Bodi ya CPU
Bodi ya CPU
Bodi ya CPU
Bodi ya CPU
Bodi ya CPU
Bodi ya CPU
Bodi ya CPU

Vipengele vyote, isipokuwa skrini ya LCD, keypad na relays zimewekwa kwenye bodi ya CPU.

Vitalu vya terminal viliongezwa ili kurahisisha unganisho kati ya usambazaji, pembejeo mbili za dijiti, na sensa ya mwanga.

Pini / soketi za kichwa hufanya utoaji wa unganisho rahisi kwenye skrini ya LCD na keypad.

Kwa matokeo ya relays, nilitumia ULN2803. Tayari ina vizuizi vyote vya kuendesha gari na diode za kurudi nyuma. Hii ilihakikisha kuwa bodi ya CPU bado inaweza kufanywa kwa kutumia toleo la bure la Tai. Relays zimeunganishwa na ULN2803 mbili. ULN2803 ya chini hutumiwa kwa matokeo 8, na juu ULN2803 kwa matokeo mawili ya msaidizi. Kila pato la msaidizi lina transistors nne. Uunganisho kwa relays pia ni kupitia pini / soketi za kichwa.

PIC 18F4520 iliwekwa na tundu la programu, kama kuruhusu programu rahisi kupitia programu ya PicKit 3.

KUMBUKA:

Utaona kwamba bodi hiyo ina nambari 8 ya ziada ya IC. IC ya juu ni PIC 12F675, na imeunganishwa na pembejeo ya dijiti. Hii iliongezwa wakati wa muundo wa PCB. Hii inafanya iwe rahisi kusindika mapema pembejeo ya dijiti. Katika maombi yangu, moja ya pembejeo za dijiti imeunganishwa na mfumo wangu wa kengele. Ikiwa kengele inasikika, taa zingine zinawashwa ndani ya nyumba yangu. Silaha na kupokonya silaha mfumo wangu wa kengele hutoa beeps tofauti kwenye siren. Kwa kutumia PIC 12F675, sasa naweza kutofautisha kati ya mkono / silaha na kengele halisi. 12F675 pia imewekwa na tundu la programu.

Nilifanya pia utoaji wa bandari ya I2C kupitia pini / tundu la kichwa. Hii itakuja baadaye baadaye na bodi za relay.

Bodi ina kuruka chache, ambazo zinapaswa kuuzwa kabla ya kuweka soketi za IC.

Hatua ya 10: Hitimisho la Flowcode

Hitimisho la Flowcode
Hitimisho la Flowcode
Hitimisho la Flowcode
Hitimisho la Flowcode
Hitimisho la Flowcode
Hitimisho la Flowcode

Kama nilivyozoea kufanya kazi kwa kiwango cha rejista katika kusanyiko, wakati mwingine ilikuwa ngumu na ya kukatisha tamaa kutumia sehemu ya macros. Hii ilitokana sana na ukosefu wangu wa ujuzi wa muundo wa programu ya Flowcode. Maeneo pekee ambayo nimetumia vizuizi vya C au ASM, ilikuwa kuwasha matokeo ndani ya utaratibu wa kukatiza, na katika utaratibu wa Do_KeyPressed kuzima / kuwezesha kitufe kukatiza. PIC pia imewekwa kwenye SLEEP kwa kutumia kizuizi cha ASM, wakati EEPROM au RTC haipatikani.

Msaada karibu na utumiaji wa amri tofauti za I²C, zote zilipatikana kutoka ndani ya faili za Usaidizi za Flowcode. Inahitajika kujua haswa jinsi vifaa anuwai vya I²C hufanya kazi, kabla ya amri kutumika vizuri. Kubuni mzunguko inahitaji muumbaji kuwa na data zote zinazohusika zinazopatikana. Huu sio upungufu wa Flowcode.

Flowcode kweli ilisimama kwenye jaribio, na inapendekezwa sana kwa watu wanaotaka kuanza kufanya kazi na anuwai ya Microchip ya microprocessors.

Programu ya Flowcode na usanidi wa PIC ziliwekwa kulingana na picha

Hatua ya 11: Bodi ya Uwasilishaji ya I2C hiari

Hiari I2C Bodi ya Kupeleka
Hiari I2C Bodi ya Kupeleka
Hiari I2C Relay Bodi
Hiari I2C Relay Bodi
Hiari I2C Relay Bodi
Hiari I2C Relay Bodi

Bodi ya CPU tayari ina unganisho la kichwa kwa relays 16. Matokeo haya ni transistors ya ushuru wazi kupitia chips mbili za ULN2803. Hii inaweza kutumika kutia nguvu relays moja kwa moja.

Baada ya majaribio ya kwanza ya mfumo, sikupenda waya zote kati ya bodi ya CPU na relays. Kama nilivyojumuisha bandari ya I2C kwenye bodi ya CPU, niliamua kuunda bodi ya kupeleka ili kuungana na bandari ya I2C. Kutumia chaneli 16 ya MCP23017 I / O Port Expander chip na safu ya transistor ya ULN2803, nilipunguza unganisho kati ya CPU na kurudi kwa waya 4.

Kwa kuwa sikuweza kutoshea upeanaji 16 kwenye PCB ya x x 100mm, niliamua kutengeneza bodi mbili. Kila MCP23017 hutumia bandari 8 tu kati ya 16. Bodi ya 1 inashughulikia matokeo 8, na bodi 2 matokeo mawili ya msaidizi. Tofauti pekee kwenye bodi ni anwani za kila bodi. Hii imewekwa kwa urahisi na jumper mini. Kila bodi ina viunganisho vya kusambaza umeme na data ya I2C kwa bodi nyingine.

KUMBUKA:

Ikiwa inahitajika, programu huandaa bodi moja tu ambayo inaweza kutumia bandari zote 16. Takwimu zote za relay za pato zinapatikana kwenye ubao wa kwanza.

Kwa kuwa mzunguko ni wa hiari na rahisi sana, sikuunda skimu. Ikiwa kuna mahitaji ya kutosha, naweza kuiongeza baadaye.

Hatua ya 12: Kiungo cha hiari cha RF

Kiungo cha hiari cha RF
Kiungo cha hiari cha RF
Kiungo cha hiari cha RF
Kiungo cha hiari cha RF
Kiungo cha hiari cha RF
Kiungo cha hiari cha RF

Baada ya kukamilisha mradi huo, hivi karibuni niligundua kuwa lazima nivute waya nyingi za 220V AC kwa kipima muda. Nilitengeneza kiunga cha RF kwa kutumia moduli za kawaida 315MHz ambazo ziliruhusu kipima muda kuwekwa ndani ya kabati, na bodi za kupeleka ndani ya paa, karibu na nyaya zote za 220V.

Kiungo hutumia AtMega328P inayoendesha 16MHz. Programu ya mpitishaji na mpokeaji ni sawa, na hali hiyo imechaguliwa na jumper mini.

Transmitter

Mtumaji ameingizwa tu kwenye bandari ya CPU I2C. Hakuna usanidi wa ziada unahitajika, kwani AtMega328P inasikiliza data sawa na bodi za kupeleka za I2C.

Takwimu husasishwa mara moja kwa sekunde kwenye bandari ya I2C, na mtumaji hutuma habari hii juu ya kiunga cha RF. Ikiwa mtumaji hatapokea data ya I2C kwa sekunde 30, mtumaji ataendelea kusambaza data kuzima upelekaji wote kwa kitengo cha mpokeaji.

Nguvu kwa moduli ya kusambaza inaweza kuchaguliwa kati ya 12V na 5V na jumper ndogo kwenye bodi ya PC. Ninawasha mtumaji wangu kutumia 12V.

Mpokeaji

Mpokeaji husikiliza data iliyosimbwa kutoka kwa mtumaji, na huweka data kwenye bandari ya I2C. Bodi ya relay inaingiza tu kwenye bandari hii, na inafanya kazi sawa na ilivyowekwa kwenye bodi ya CPU.

Ikiwa mpokeaji hatapokea data halali kwa sekunde 30, mpokeaji ataendelea kutuma data kwenye bandari ya I2C kuzima upelekaji wote kwenye bodi za kupeleka.

Skimatiki

Siku moja, ikiwa kuna mahitaji yake. Mchoro wa Arduino una habari zote zinazohitajika kujenga mzunguko bila mchoro wa mzunguko.

Mbalimbali

Katika usanikishaji wangu, mtoaji na mpokeaji ni karibu mita 10 mbali. Kipima muda kiko ndani ya kabati, na kitengo cha kupeleka juu ya dari.

Hatua ya 13: Bidhaa ya Mwisho

Bidhaa ya Mwisho
Bidhaa ya Mwisho
Bidhaa ya Mwisho
Bidhaa ya Mwisho
Bidhaa ya Mwisho
Bidhaa ya Mwisho

Kitengo kuu kilikuwa kimewekwa kwenye sanduku la zamani la mradi. Inayo yafuatayo:

- Transformer ya 220V / 12V

- Bodi ya Ugavi wa Umeme

- Bodi ya CPU

- Onyesho la LCD

- Keypad

- Kifurushi cha Kiunga cha RF

- Kitengo cha ziada cha kipokeaji cha nyumbani ili kuniwezesha kuwasha / kuzima taa kupitia kijijini

Kitengo cha kupeleka kinajumuisha yafuatayo:

- Transformer ya 220V / 12V

- Bodi ya Ugavi wa Umeme

- Mpokeaji wa Kiunga cha RF

- 2 x I2C Bodi za Kupeleka

Bodi zote zilibuniwa na mwelekeo sawa, na kuifanya iwe rahisi kuziweka juu ya kila mmoja na spacers 3mm.

Ilipendekeza: