- Darba skaidrojums:
- Komponenti:
- Programmēšana:
- Ķēdes un PCB dizains, izmantojot EasyEDA:
- PCB paraugu aprēķināšana un pasūtīšana tiešsaistē:
Šajā projektā mēs izmantosim PIC mikrokontrolleru, lai attālināti kontrolētu dažas maiņstrāvas slodzes, izmantojot tikai IR tālvadības pulti. Līdzīgs projekts ar tālvadību kontrolēta mājas automatizācija jau ir veikta arī ar Arduino, taču šeit mēs to izstrādājām PCB, izmantojot EasyEDA tiešsaistes PCB dizaineru un simulatoru, un izmantojām viņu PCB projektēšanas pakalpojumus, lai pasūtītu PCB plāksnes, kā parādīts nākamajā sadaļā rakstu.
Šī projekta beigās jūs varēsiet pārslēgt (ieslēgt / izslēgt) jebkuru maiņstrāvas slodzi, izmantojot parasto pulti no sava krēsla / gultas ērtības. Lai padarītu šo projektu interesantāku, mēs esam iespējojuši arī funkciju, kas ar Triac palīdzību kontrolē ventilatora ātrumu. To visu var izdarīt, veicot vienkāršus klikšķus uz IR pulti. Šajā projektā varat izmantot jebkuru savu TV / DVD / MP3 tālvadības pulti. Dažādos infrasarkanos signālus no tālvadības pults saņem mikrokontrolleris, kas pēc tam ar releja draivera shēmu kontrolē attiecīgos relejus. Šie releji tiek izmantoti, lai pievienotu un atvienotu maiņstrāvas slodzes (gaismas / ventilators).
Darba skaidrojums:
Šī projekta darbība ir diezgan vienkārši saprotama. Nospiežot pogu uz IR tālvadības pults, tā nosūta koda secību kodētu impulsu veidā, izmantojot 38 kHz modulējošu frekvenci. Šos impulsus uztver TSOP1738 sensors, un pēc tam tos nolasa kontrolieris. Pēc tam kontrolieris atkodē saņemto impulsu vilcienu hex vērtībā un salīdzina to ar mūsu programmā iepriekš noteiktajām hex vērtībām.
Ja notiek kāda sakritība, kontrolieris veic relatīvu darbību, iedarbinot attiecīgo releju / Triac, un atbilstošo rezultātu norāda arī borta gaismas diodes. Šajā projektā mēs izmantojām 4 dažādu krāsu spuldzes (mazas spuldzes) kā apgaismojuma slodzes, un cita spuldze (lielāka spuldze) demonstrācijas nolūkā tiek uzskatīta par ventilatoru.
Mēs esam izvēlējušies taustiņu 1, lai pārslēgtu releju1, 2, lai pārslēgtu releju2, 3, lai pārslēgtu releju3, 4, lai pārslēgtu releju4, un Vol +, lai palielinātu ventilatora ātrumu, un Vol +, lai samazinātu ventilatora ātrumu.
Piezīme: Šeit mēs izmantojām 100 vatu spuldzi ventilatora vietā.
Dažādām ierīcēm ir pieejami daudzi IR tālvadības pulti, taču lielākā daļa no tiem strādā ap 38KHz frekvenci. Šajā projektā mēs kontrolējam sadzīves tehniku, izmantojot IR TV tālvadības pulti, un IR signālu noteikšanai mēs izmantojam TSOP1738 IR uztvērēju. Šis TSOP1738 sensors var uztvert 38Khz frekvences signālu. IR pults un TSOP1738 darbība ir detalizēti aplūkota šajā rakstā: IR raidītājs un uztvērējs
Mūsu PIC mikrokontrolleris darbojas ar + 5 V un releji darbojas ar + 12 V, tāpēc mēs izmantojam transformatoru, lai samazinātu 220 V maiņstrāvu un labotu to, izmantojot pilnu tilta taisngriezi. Pēc tam šis iztaisnotais līdzstrāvas spriegums tiek regulēts līdz + 12 V un + 5 V, izmantojot attiecīgi regulatora IC 7812 un 7805.
Lai aktivizētu releju, mēs izmantojam tādus tranzistorus kā BC547, kas var darboties kā elektronisks slēdzis, lai ieslēgtu / izslēgtu relejus, pamatojoties uz PIC mikrokontrollera signālu. Turpmāk, lai kontrolētu ventilatora ātrumu, mēs izmantojam TRIAC. TRIAC ir jaudas pusvadītājs, kas spēj kontrolēt izejas spriegumu; šo iespēju izmanto, lai kontrolētu ventilatora ātrumu.
Mēs arī izmantojām Triac draiveri, lai kontrolētu Triac, izmantojot mūsu PIC mikrokontrolleru. Šis draiveris tiek izmantots, lai Triac piešķirtu šaušanas leņķa impulsu, lai varētu kontrolēt izejas jaudu. Šeit mēs izmantojām 6 ātruma līmeņa kontroli. Kad līmenis ir 0, ventilators tiks izslēgts. Kad līmenis būs 1, tad ātrums būs 1/5 no pilna ātruma. Kad līmenis būs 2, ātrums būs 2/5 no pilna ātruma un attiecīgi citiem. Pašreizējo ātruma līmeni var kontrolēt, izmantojot iebūvēto 7 segmentu displeju.
Projekta blokshēma ir parādīta zemāk.
Komponenti:
Šī projekta izveidošanai nepieciešamie komponenti ir norādīti zemāk:
- PIC18f2520 mikrokontrolleris -1
- TSOP1738 -1
- IR TV / DVD tālvadības pults -1
- Tranzistors BC547 -4
- Releji 12 volti -4
- Spuldze ar turētāju -5
- Savienojošie vadi -
- EasyEda PCB -1
- 16x2 LCD
- Barošanas avots 12v
- Termināla savienotājs 2 kontaktu `-8
- Termināla savienotājs 3 kontaktu -1
- Transformators 12-0-12 -1 -
- Sprieguma regulators 7805 -1
- Sprieguma regulators 7812 -1
- Kondensators 1000uf -1
- Kondensators 10uf -1
- Kondensators 0,1uf -1
- Kondensators 0,01uf 400V `-1
- 10k -5
- 1k -5
- 100ohm -7
- Kopējais katoda segments -1
- 1n4007 diode -10
- BT136 triac -1
- Vīriešu / sieviešu galvene -
- LED -6
- Opto-coupler moc3021 -1
- Opto-savienotājs mtc2e vai 4n35 -1
- 20Mhz kristāls -1
- 33pf kondensators -2
- 5.1v zenera diode -1
- 47 omu 2 vatu rezistors -1
Visi šie komponenti parasti tiek izmantoti, un tos var viegli iegādāties. Tomēr, ja jūs meklējat labāko pirkumu tiešsaistē, mēs iesakām jums LCSC.
LCSC ir lielisks tiešsaistes veikals, kur iegādāties elektronikas komponentus visu veidu projektiem. Tajos ir apmēram 25 000 veidu komponentu, un labākais ir tas, ka maziem projektiem viņi pārdod pat neliela daudzuma preces, un tiem ir arī globālā piegāde.
IR tālvadības pults dekodēšana:
Kā jau minēts iepriekš, savam projektam varat izmantot jebkura veida tālvadības pulti. Bet mums ir jāzina, kādam signālam tiek ģenerēts konkrētais tālvadības pults. Katram atsevišķam tālvadības taustiņam šai atslēgai būs ekvivalenta HEX vērtība. Izmantojot šo HEX vērtību, mēs varam atšķirt katru taustiņu mūsu mikrokontrollera pusē. Tāpēc, pirms nolemjam izmantot tālvadības pulti, mums jāzina HEX vērtība atslēgu iestatījumiem, kas iepriekš iestatīti šajā tālvadības pultī. Šajā projektā mēs izmantojām NEC pulti. NEX tālvadības pults HEX vērtības ir norādītas zemāk.
Kā pamanāt, HEX vērtībai ir 7 rakstzīmes, no kurām atšķiras tikai pēdējās divas, tāpēc mēs varam ņemt vērā tikai pēdējos divus ciparus, lai atšķirtu katru taustiņu.
Ķēdes shēma:
Projekta shēma ir parādīta zemāk.
Iepriekšminētā shēma tika atvieglota, izmantojot esayEDA shematisko redaktoru, jo tie nodrošina visu šajā projektā izmantoto komponentu izkārtojumus. Tas arī neprasa instalēšanu, un to var izmantot tiešsaistē, atrodoties ceļā.
Piespraudes un komponentu vērtības ir skaidri norādītas iepriekš redzamajā shēmā. Shematisko failu varat lejupielādēt arī šeit.
Programmēšana:
Šī projekta programma tiek veikta, izmantojot MPLABX, kods ir arī diezgan vienkāršs un viegli saprotams. Pilns kods tiks norādīts šīs apmācības beigās, tālāk ir paskaidroti vēl daži svarīgi programmas gabali.
Koda sākumā mums jāiekļauj nepieciešamās bibliotēkas, jādefinē tapas un jādeklarē mainīgie.
# iekļaut
Pēc tam mēs esam izveidojuši vienkāršu aizkaves funkciju, izmantojot cilni “par”.
void delay (int laiks) {par (int i = 0; i
Pēc tam mēs esam inicializējuši taimeri, izmantojot šādu funkciju
anulētais taimeris () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Taimera pulksteņa avots ir no Prescaler T0CS = 0; // Prescaler saņem pulksteni no FCPU (5MHz) T08BIT = 0; 16 BITU REŽĪMS TMR0IE = 1; // Iespējot TIMER0 Pārtraukt PEIE = 1; // Iespējot perifēro traucējumu GIE = 1; // Iespējot INT visā pasaulē TMR0ON = 1; // Tagad sāciet taimeri! }
Tagad galvenajā funkcijā mums ir norādījumi izvēlētajām tapām un inicializējiet taimeri un ārējo pārtraukumu int0, lai noteiktu nulles šķērsošanu.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; RB6 = 1; relejs1 = 0; relejs2 = 0; relejs3 = 0; relejs4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; ventilatorsLED = 0; i = 0; ir = 0; tric = 0; taimeris (); INTEDG0 = 0; // Pārtraukums krītošā malā INT0IE = 1; // Iespējot INT0 ārējo pārtraukumu (RB0) INT0IF = 0; // Notīra INT0 ārējā pārtraukuma karodziņa bitu PEIE = 1; // Iespējot perifēro traucējumu GIE = 1; // Iespējot INT visā pasaulē
Tagad, lai noteiktu IR signālu, mēs šeit neizmantojam pārtraukuma vai uztveršanas un salīdzināšanas režīmu. Šeit mēs tikko izmantojām digitālo tapu, lai lasītu datus tāpat kā mēs lasām spiedpogu. Ikreiz, kad signāls kļūst augsts vai zems, mēs vienkārši ievietojam atkāpšanās metodi un palaidām taimeri. Ikreiz, kad tapa maina savu stāvokli uz citu, laika vērtības tiks saglabātas masīvā.
IR tālvadības sūtīšanas loģika 0 kā 562.5us un loģika 1 kā 2250us. Ikreiz, kad taimeris nolasa ap 562.5us, mēs pieņemam, ka tas ir 0, un, kad taimeris ir aptuveni 2250us, tad mēs to pieņemam kā 1. Tad mēs to pārvēršam sešstūrī.
Ienākošajā signālā no tālvadības ir 34 biti. Mēs glabājam visus baitus masīvā un pēc tam atšifrējam pēdējo izmantoto baitu.
kamēr (ir == 1); INT0IE = 0; kamēr (ir == 0); TMR0 = 0; kamēr (ir == 1); i ++; dat = TMR0; if (dat> 5000 && dat <12000) {} cits {i = 0; INT0IE = 1; } ja (i> = 33) {GIE = 0; kavēšanās (50); cmd = 0; par (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; else if (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
Iepriekš minētais koda gabals saņem un dekodē IR signālu, izmantojot taimera pārtraukumus un atbilstošo HEX vērtību saglabā mainīgajā cmd. Tagad mēs varam salīdzināt šo HEX vērtību (cmd mainīgo) ar mūsu iepriekš definētajām HEX vērtībām un pārslēgt releju, kā parādīts zemāk
ja (cmd == 0xAF) {relejs1 = ~ relejs1; rly1LED = ~ rly1LED; } else if (cmd == 0x27) {relejs2 = ~ relejs2; rly2LED = ~ rly2LED; } else if (cmd == 0x07) {relejs3 = ~ relejs3; rly3LED = ~ rly3LED; } else if (cmd == 0xCF) {relejs4 = ~ relejs4; rly4LED = ~ rly4LED; } else if (cmd == 0x5f) {ātrums ++; ja (ātrums> 5) {ātrums = 5; }} else if (cmd == 0x9f) {ātrums--; ja (ātrums <= 0) {ātrums = 0; }}
Tagad, lai uzzinātu, kurā mūsu ventilators pašlaik darbojas, mums vajadzētu izmantot 7 segmentu displeju. Lai norādītu 7 segmentu displeja tapas, tiek izmantotas šādas rindas.
ja (ātrums == 5) // izslēgts 5x2 = 10ms triger // ātrums 0 {PORTA = 0xC0; // displejs 0 RB6 = 1; ventilatorsLED = 0; } else if (ātrums == 4) // 8 ms trigeris // ātrums 1 {PORTA = 0xfc; // parādot 1 RB6 = 1; ventilatorsLED = 1; } else if (ātrums == 3) // 6 ms trigeris // ātrums 2 {PORTA = 0xE4; // parādot 2 RB6 = 0; ventilatorsLED = 1; } else if (ātrums == 2) // 4ms trigeris // ātrums 3 {PORTA = 0xF0; // parādot 3 RB6 = 0; ventilatorsLED = 1; } else if (ātrums == 1) // 2ms trigeris // ātrums 4 {PORTA = 0xD9; // parādot 4 RB6 = 0; ventilatorsLED = 1; } else if (ātrums == 0) // 0ms trigeris // ātrums 5 pilna jauda {PORTA = 0xD2; // parādot 5 RB6 = 0; ventilatorsLED = 1; }
Tālāk norādītā funkcija ir paredzēta ārējam pārtraukumam un laika pārpildei. Šī funkcija ir atbildīga par nulles šķērsošanas noteikšanu un Triac vadīšanu.
void break isr () {if (INT0IF) {kavēšanās (ātrums); tric = 1; par (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Pārbaudiet, vai tā ir TMR0 pārpilde ISR {TMR0IF = 0; }}
Šīs IR tālvadības mājas automatizācijas gala PCB izskatās kā parādīts zemāk:
Ķēdes un PCB dizains, izmantojot EasyEDA:
Lai projektētu šo tālvadības mājas automatizāciju, mēs esam izmantojuši EasyEDA, kas ir bezmaksas tiešsaistes EDA rīks, lai vienmērīgi izveidotu ķēdes un PCB. Iepriekš mēs pasūtījām dažus PCB no EasyEDA un joprojām izmantojam viņu pakalpojumus, jo mēs atradām visu procesu, sākot no shēmu zīmēšanas līdz PCB pasūtīšanai, ērtāku un efektīvāku salīdzinājumā ar citiem PCB izgatavotājiem. EasyEDA bez maksas piedāvā shēmas zīmēšanu, simulāciju, PCB dizainu, kā arī piedāvā augstas kvalitātes, bet par zemu cenu pielāgotu PCB pakalpojumu. Šeit skatiet pilnu apmācību par to, kā izmantot Easy EDA shēmu, PCB izkārtojumu, ķēžu simulēšanas utt.
EasyEDA katru dienu uzlabojas; tie ir pievienojuši daudzas jaunas funkcijas un uzlabojuši vispārējo lietotāja pieredzi, kas padara EasyEDA vieglāku un izmantojamu ķēžu projektēšanai. Viņi drīz gatavojas palaist savu darbvirsmas versiju, kuru var lejupielādēt un instalēt datorā bezsaistes lietošanai.
Programmā EasyEDA jūs varat padarīt savu shēmu un PCB dizainu publisku, lai citi lietotāji tos varētu kopēt vai rediģēt un gūt labumu no tā. Mēs esam padarījuši visus mūsu shēmas un PCB izkārtojumus publiski pieejamus šai tālvadības mājas automātikai.
Zemāk ir redzams EasyEDA PCB izkārtojuma augšējā slāņa momentuzņēmums. Jūs varat apskatīt jebkuru PCB slāni (augšējo, apakšējo, augšējo pienu, pudeļu pienu utt.), Atlasot slāni no loga “Slāņi”.
PCB paraugu aprēķināšana un pasūtīšana tiešsaistē:
Pabeidzot PCB dizainu, varat noklikšķināt uz Fabrication output ikonas, kas jūs aizvedīs uz PCB pasūtījuma lapu. Šeit jūs varat apskatīt savu PCB Gerber Viewer vai lejupielādēt Gerber failus no jūsu PCB un nosūtīt tos jebkuram ražotājam, tāpat ir daudz vieglāk (un lētāk) pasūtīt to tieši EasyEDA. Šeit jūs varat izvēlēties PCB skaitu, kuru vēlaties pasūtīt, cik vara slāņu jums vajag, PCB biezumu, vara svaru un pat PCB krāsu. Kad esat izvēlējies visas iespējas, noklikšķiniet uz “Saglabāt grozā” un pabeidziet pasūtījumu, pēc tam dažu dienu laikā saņemsiet savus PCB.
Jūs varat tieši pasūtīt šo PCB vai lejupielādēt Gerber failu, izmantojot šo saiti.
Pēc dažām PCB pasūtīšanas dienām mēs saņēmām PCB. Dēļi, kurus saņēmām, ir parādīti zemāk.
Kad esam saņēmuši PCB, es visus nepieciešamos komponentus uzmontēju uz PCB, un, visbeidzot, mūsu IR tālvadības mājas automatizācija ir gatava, pārbaudiet šo shēmu, kas darbojas demonstrācijas video raksta beigās.