- Paggawa ng Paliwanag:
- Mga Bahagi:
- Programming:
- Circuit at Disenyo ng PCB gamit ang EasyEDA:
- Pagkalkula at Pag-order ng Mga Sampol ng PCB sa online:
Sa proyektong ito, gagamit kami ng isang PIC microcontroller upang malayo makontrol ang ilang mga karga ng AC sa pamamagitan lamang ng paggamit ng isang IR remote. Ang isang katulad na proyekto IR remote control Home automation na nagawa na rin sa Arduino, ngunit dito namin dinisenyo ito sa PCB gamit ang online PCB na tagadisenyo at simulator ng EasyEDA, at ginamit ang kanilang mga serbisyo sa pagdidisenyo ng PCB upang mag-order ng mga board ng PCB tulad ng ipinakita sa kasunod na seksyon ng artikulo
Sa pagtatapos ng proyektong ito magagawa mong i-toggle (ON / OFF) ang anumang AC load gamit ang isang ordinaryong Remote mula sa ginhawa ng iyong Upuan / Higaan. Upang gawing mas kawili-wili ang proyektong ito, pinagana din namin ang isang tampok upang makontrol ang bilis ng fan sa tulong ng Triac. Ang lahat ng ito ay maaaring gawin sa mga simpleng pag-click sa iyong IR remote. Maaari mong gamitin ang anuman sa iyong TV / DVD / MP3 remote para sa proyektong ito. Ang iba't ibang mga signal ng IR mula sa remote ay natatanggap ng microcontroller na pagkatapos ay kinokontrol ang mga kaukulang relay sa pamamagitan ng isang relay driver circuit. Ang mga relay na ito ay ginagamit upang kumonekta at idiskonekta ang mga AC Load (Lights / Fan).
Paggawa ng Paliwanag:
Ang pagtatrabaho ng proyektong ito ay medyo simple upang maunawaan. Kapag ang isang pindutan ay pinindot sa IR Remote nagpapadala ito ng isang pagkakasunud-sunod ng code sa anyo ng mga naka-encode na pulso gamit ang 38Khz modulate frequency. Ang mga pulso na ito ay natanggap ng sensor ng TSOP1738 at pagkatapos ay basahin ng Controller. Pagkatapos ay nai-decode ng Controller ang natanggap na tren ng mga pulso sa isang halaga ng hex at inihambing ito sa mga paunang natukoy na halaga ng hex sa aming programa.
Kung may anumang tugma na magaganap pagkatapos ay gumaganap ang controller ng isang kaugnay na operasyon sa pamamagitan ng pag-trigger ng kani-kanilang Relay / Triac at ang kaukulang resulta ay ipinahiwatig din ng on-board LEDs. Dito sa proyektong ito, gumamit kami ng 4 na bombilya (maliliit na bombilya) ng magkakaibang kulay tulad ng pag-load ng ilaw at isa pang bombilya (mas malaking bombilya) ay itinuturing na isang tagahanga para sa layunin ng pagpapakita.
Pinili namin ang key 1 upang i-toggle ang relay1, 2 upang i-toggle ang relay2, 3 upang i-toggle ang relay3, 4 upang i-toggle ang relay4, at Vol + upang madagdagan ang bilis ng fan at Vol- upang bawasan ang bilis ng fan.
Tandaan: Dito ginamit namin ang 100watt bombilya sa halip na isang fan.
Maraming mga uri ng IR Remote na magagamit para sa iba't ibang mga aparato, ngunit ang karamihan sa kanila ay gumagana sa paligid ng 38KHz Frequency. Dito sa proyektong ito, kinokontrol namin ang mga gamit sa bahay gamit ang remote ng IR TV at para sa pagtuklas ng mga signal ng IR, gumagamit kami ng isang TSOP1738 IR Receiver. Ang sensor ng TSOP1738 na ito ay maaaring makilala ang signal ng Frequency ng 38Khz. Ang pagtatrabaho ng IR remote at ang TSOP1738 ay sakop sa detalye sa artikulong ito: IR Transmitter at Receiver
Ang aming PIC microcontroller ay nagpapatakbo sa + 5V at ang Relay ay nagpapatakbo sa + 12V, Samakatuwid gumagamit kami ng isang transpormer upang bumaba ang 220V AC at maitama ito gamit ang isang buong tulay na tagatama. Ang naayos na boltahe ng DC na ito ay kinokontrol sa + 12V at + 5V sa pamamagitan ng paggamit ng regulator ICs 7812 at 7805 ayon sa pagkakabanggit.
Upang ma-trigger ang relay ay gumagamit kami ng mga transistor tulad ng BC547 na maaaring kumilos bilang isang electronic switch upang i-ON / OFF ang mga relay batay sa signal mula sa PIC microcontroller. Dagdag pa upang makontrol ang bilis ng fan na gumagamit kami ng isang TRIAC. Ang TRIAC ay isang power semiconductor na may kakayahang kontrolin ang output boltahe; ang kakayahang ito ay ginagamit upang makontrol ang bilis ng fan.
Gumamit din kami ng isang Triac Driver upang makontrol ang Triac gamit ang aming PIC microcontroller. Ang drayber na ito ay ginagamit upang magbigay ng isang anggulo ng pagpapaputok sa Triac, upang makontrol ang output power. Dito nagamit namin ang 6 na antas ng kontrol sa bilis. Kapag ang antas ay 0 pagkatapos ang fan ay papatay. Kapag ang antas ay magiging 1 pagkatapos ang bilis ay magiging 1/5 ng buong bilis. Kapag ang antas ay magiging 2 pagkatapos ang bilis ay magiging 2 / 5th ng buong bilis at ayon sa pagkakabanggit para sa iba. Ang kasalukuyang antas ng bilis ay maaaring subaybayan gamit ang on-board 7-segment display.
Ang block diagram ng proyekto ay ipinapakita sa ibaba.
Mga Bahagi:
Ang mga sangkap na kinakailangan upang buuin ang proyektong ito ay ibinibigay sa ibaba:
- PIC18f2520 Microcontroller -1
- TSOP1738 -1
- IR TV / DVD Remote -1
- Transistor BC547 -4
- Relay 12 volt -4
- Bombilya na may lalagyan -5
- Mga kumokonekta na mga wire -
- EasyEda PCB -1
- 16x2 LCD
- Pag-supply ng kuryente 12v
- Terminal konektor 2 pin `-8
- Terminal Connector 3 pin -1
- Transformer 12-0-12 -1 -
- Regulator ng Boltahe 7805 -1
- Voltage Regulator 7812 -1
- Kapasitor 1000uf -1
- Capacitor 10uf -1
- Capacitor 0.1uf -1
- Capacitor 0.01uf 400V `-1
- 10k -5
- 1k -5
- 100ohm -7
- Karaniwang segment ng cathode -1
- 1n4007 diode -10
- BT136 triac -1
- Lalaki / babaeng header -
- Mga LED -6
- Opto-coupler moc3021 -1
- Opto-coupler mtc2e o 4n35 -1
- 20Mhz na kristal -1
- 33pf capacitor -2
- 5.1v zener diode -1
- 47 ohm 2 watt risistor -1
Ang lahat ng mga sangkap na ito ay karaniwang ginagamit at madaling mabili. Gayunpaman kung naghahanap ka para sa isang pinakamahusay na pagbili sa online kung gayon inirerekumenda namin sa iyo ang LCSC.
Ang LCSC ay isang mahusay na online store upang bumili ng iyong mga sangkap ng electronics para sa lahat ng uri ng mga proyekto. Nagtatampok ang mga ito ng tungkol sa 25,000 mga uri ng mga bahagi at ang pinakamagandang bagay ay na nagbebenta sila ng kahit maliit na mga item para sa maliliit na proyekto at mayroon din silang Global Shipping.
Pag-decode ng IR Remote:
Tulad ng sinabi kanina maaari kang gumamit ng anumang uri ng remote para sa iyong proyekto. Ngunit kailangan nating malaman kung anong uri ng signal ang nabubuo mula sa partikular na remote. Para sa bawat indibidwal na susi sa remote magkakaroon ng katumbas na halaga ng HEX para sa key na iyon. Gamit ang halagang HEX na ito maaari nating makilala ang bawat key sa aming bahagi ng microcontroller. Kaya bago kami magpasya na gumamit ng isang remote dapat naming malaman ang halaga ng HEX para sa mga preset na key sa partikular na remote. Sa proyektong ito, gumamit kami ng isang NEC remote. Ang mga halagang HEX para sa mga susi sa isang remote na NEC ay ibinibigay sa ibaba.
Tulad ng mapapansin mo ang halaga ng HEX ay may 7 mga character kung saan ang huling dalawang magkakaiba lamang, kaya maaari naming isaalang-alang lamang ang huling dalawang digit na makilala sa pagitan ng bawat mga key.
Diagram ng Circuit:
Ang iskematiko para sa proyekto ay ipinapakita sa ibaba.
Ang eskematiko sa itaas ay ginawang madali sa pamamagitan ng paggamit ng esayEDA eskematiko na editor dahil nagbibigay sila ng mga layout ng lahat ng mga sangkap na ginamit sa proyektong ito. Hindi rin ito nangangailangan ng isang pag-install at maaaring magamit online on the go.
Ang mga pinout at halaga ng sangkap ay malinaw na tinukoy sa eskematiko sa itaas. Maaari mo ring i-download ang eskematiko na file mula rito.
Programming:
Ang programa para sa proyektong ito ay tapos na gamit ang MPLABX, ang code ay medyo simple din at madaling maunawaan. Ibibigay ang kumpletong code sa pagtatapos ng tutorial na ito, karagdagang ilang mahahalagang tipak ng programa ang ipinaliwanag sa ibaba.
Sa simula ng code, dapat naming isama ang mga kinakailangang aklatan, tukuyin ang mga pin at ideklara ang mga variable.
# isama
Pagkatapos nito, lumikha kami ng isang simpleng pagpapaandar na pagpapaandar sa pamamagitan ng paggamit ng "para" na loop.
walang bisa ang pagkaantala (int time) {para sa (int i = 0; i
Pagkatapos nito, nasimulan namin ang timer sa pamamagitan ng paggamit ng sumusunod na pagpapaandar
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Timer Clock Source ay mula sa Prescaler T0CS = 0; // Prescaler nakakakuha ng orasan mula sa FCPU (5MHz) T08BIT = 0; // 16 BIT MODE TMR0IE = 1; // Enable TIMER0 Interrupt PEIE = 1; // Paganahin ang Peripheral Interrupt GIE = 1; // Paganahin ang mga INT sa buong mundo TMR0ON = 1; // Ngayon simulan ang timer! }
Ngayon sa pangunahing pagpapaandar, nagbibigay kami ng mga direksyon sa mga napiling pin at ipasimuno ang timer at panlabas na makagambala na int0 upang makita ang zero na tawiran.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; RB6 = 1; relay1 = 0; relay2 = 0; relay3 = 0; relay4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; tric = 0; timer (); INTEDG0 = 0; // Magambala sa pagbagsak ng INT0IE = 1; // Paganahin ang panlabas na makagambala ng INT0 (RB0) INT0IF = 0; // Clears INT0 External Interrupt Flag bit PEIE = 1; // Paganahin ang Peripheral Interrupt GIE = 1; // Paganahin ang mga INT sa buong mundo
Ngayon, dito hindi kami gumagamit ng anumang makagambala o makunan at ihambing ang mode upang makita ang signal ng IR. Dito lang namin ginamit ang isang digital pin upang mabasa ang data tulad ng pagbabasa namin ng isang pindutan ng push. Kailan man maging mataas o mababa ang signal inilalagay lamang namin ang pamamaraan ng pag-debog at patakbuhin ang timer. Kailan man baguhin ng pin ang estado nito sa iba pa pagkatapos ang mga halaga ng oras ay mai-save sa isang array.
IR remote magpadala ng lohika 0 bilang 562.5us at lohika 1 bilang 2250us. Tuwing binabasa ng timer ang paligid ng 562.5us pagkatapos ay ipinapalagay namin ito 0 at kapag ang timer ay nagbabasa ng halos 2250us pagkatapos ay ipinapalagay namin ito bilang 1. Pagkatapos ay i-convert namin ito sa hex
Ang papasok na signal mula sa remote ay naglalaman ng 34 bit. Inimbak namin ang lahat ng mga byte sa array at pagkatapos ay nai-decode ang huling byte na gagamitin.
habang (ir == 1); INT0IE = 0; habang (ir == 0); TMR0 = 0; habang (ir == 1); ako ++; dat = TMR0; kung (dat> 5000 && dat <12000) {} iba pa {i = 0; INT0IE = 1; } kung (i> = 33) {GIE = 0; antala (50); cmd = 0; para sa (j = 26; j <34; j ++) {kung (dat> 1000 && dat <2000) cmd << = 1; kung hindi man kung (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
Ang piraso ng code sa itaas ay tumatanggap at nagde-decode ng signal ng IR gamit ang mga timer na nakakagambala at iniimbak ang katumbas na halaga ng HEX sa variable cmd. Ngayon ay maikukumpara natin ang halagang HEX (variable na cmd) sa aming paunang natukoy na mga halaga ng HEX at i-toggle ang relay tulad ng ipinakita sa ibaba
kung (cmd == 0xAF) {relay1 = ~ relay1; rly1LED = ~ rly1LED; } iba pa kung (cmd == 0x27) {relay2 = ~ relay2; rly2LED = ~ rly2LED; } iba pa kung (cmd == 0x07) {relay3 = ~ relay3; rly3LED = ~ rly3LED; } iba pa kung (cmd == 0xCF) {relay4 = ~ relay4; rly4LED = ~ rly4LED; } iba pa kung (cmd == 0x5f) {bilis ++; kung (bilis> 5) {bilis = 5; }} iba pa kung (cmd == 0x9f) {bilis--; kung (bilis <= 0) {bilis = 0; }}
Ngayon upang malaman kung saan kasalukuyang tumatakbo ang aming fan, dapat kaming gumamit ng isang 7-segment na display. Ang mga sumusunod na linya ay ginagamit upang turuan ang mga pin ng pagpapakita ng 7-segment.
kung (bilis == 5) // pinatay 5x2 = 10ms triger // bilis 0 {PORTA = 0xC0; // display 0 RB6 = 1; fanLED = 0; } iba pa kung (bilis == 4) // 8 ms trigger // bilis 1 {PORTA = 0xfc; // pagpapakita ng 1 RB6 = 1; fanLED = 1; } iba pa kung (bilis == 3) // 6 ms trigger // bilis 2 {PORTA = 0xE4; // pagpapakita ng 2 RB6 = 0; fanLED = 1; } iba pa kung (bilis == 2) // 4ms trigger // bilis 3 {PORTA = 0xF0; // pagpapakita ng 3 RB6 = 0; fanLED = 1; } iba pa kung (bilis == 1) // 2ms trigger // bilis 4 {PORTA = 0xD9; // pagpapakita ng 4 RB6 = 0; fanLED = 1; } iba pa kung (bilis == 0) // 0ms trigger // bilis 5 buong lakas {PORTA = 0xD2; // pagpapakita ng 5 RB6 = 0; fanLED = 1; }
Ang pagpapaandar sa ibaba ay para sa panlabas na makagambala at overflow ng oras. Ang pagpapaandar na ito ay responsable para sa pagtuklas ng zero tawiran at pagmamaneho ng Triac.
void interrupt isr () {if (INT0IF) {pagkaantala (bilis); tric = 1; para sa (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } kung (TMR0IF) // Suriin kung ito ay TMR0 Overflow ISR {TMR0IF = 0; }}
Ang pangwakas na PCB para sa IR na remote control home automation na ito ay nakikita tulad ng ipinakita sa ibaba:
Circuit at Disenyo ng PCB gamit ang EasyEDA:
Upang idisenyo ang Remote control home automation na ito ay ginamit namin ang EasyEDA na isang libreng online na tool ng EDA para sa paglikha ng mga circuit at PCB sa isang maayos na pamamaraan. Nag-order kami dati ng ilang mga PCB mula sa EasyEDA at ginagamit pa rin ang kanilang mga serbisyo habang nakita namin ang buong proseso, mula sa pagguhit ng mga circuit hanggang sa pag-order ng mga PCB, na mas maginhawa at mahusay sa paghahambing ng iba pang mga PCB na taga-gawa. Nag-aalok ang EasyEDA ng pagguhit ng circuit, simulation, disenyo ng PCB nang libre at nag-aalok din ng mataas na kalidad ngunit mababang presyo na Pasadyang serbisyo sa PCB. Suriin dito para sa kumpletong tutorial sa Paano gagamitin ang Madaling EDA para sa paggawa ng mga Skema, layout ng PCB, Simulate the Circuits atbp.
Ang EasyEDA ay nagpapabuti araw-araw; nagdagdag sila ng maraming mga bagong tampok at pinahusay ang pangkalahatang karanasan ng gumagamit, na ginagawang mas madali at magagamit ang EasyEDA para sa pagdidisenyo ng mga circuit. Malapit na nilang ilunsad ang bersyon ng Desktop na ito, na maaaring ma-download at mai-install sa iyong computer para sa offline na paggamit.
Sa EasyEDA, maaari mong isapubliko ang iyong mga disenyo ng circuit at PCB upang ang ibang mga gumagamit ay maaaring kopyahin o mai-edit ang mga ito at maaaring makinabang mula doon, ginawa rin naming pampubliko ang aming buong mga layout ng Circuit at PCB para sa Remote control Home na awtomatiko.
Nasa ibaba ang Snapshot ng Nangungunang layer ng layout ng PCB mula sa EasyEDA, maaari mong tingnan ang anumang Layer (Tuktok, Ibaba, Topsilk, bottomsilk atbp) ng PCB sa pamamagitan ng pagpili ng layer na bumubuo sa Window na 'Mga Layers'.
Pagkalkula at Pag-order ng Mga Sampol ng PCB sa online:
Matapos makumpleto ang disenyo ng PCB, maaari mong i-click ang icon ng Fabrication output , na magdadala sa iyo sa pahina ng order ng PCB. Dito maaari mong tingnan ang iyong PCB sa Gerber Viewer o i-download ang mga Gerber file ng iyong PCB at ipadala ang mga ito sa anumang tagagawa, mas madali din (at mas mura) upang direktang mag-order nito sa EasyEDA. Dito maaari mong piliin ang bilang ng mga PCB na nais mong mag-order, kung gaano karaming mga layer ng tanso ang kailangan mo, ang kapal ng PCB, bigat ng tanso, at maging ang kulay ng PCB. Matapos mong mapili ang lahat ng mga pagpipilian, i-click ang "I-save sa Cart" at kumpletuhin ang iyong order, pagkatapos ay matatanggap mo ang iyong mga PCB sa loob ng ilang araw.
Maaari mong direktang mag-order sa PCB na ito o i-download ang Gerber file gamit ang link na ito.
Matapos ang ilang araw ng pag-order ng PCB nakuha namin ang mga PCB. Ang mga board na natanggap namin ay ipinapakita sa ibaba.
Sa sandaling natanggap namin ang mga PCB na na-mount ko ang lahat ng kinakailangang mga sangkap sa PCB, at sa wakas ay handa na ang aming IR Remote Controlled Home Automation, suriin ang circuit na ito na gumagana sa demonstration video sa pagtatapos ng artikulo.