- Penjelasan Kerja:
- Komponen:
- Pengaturcaraan:
- Reka bentuk litar dan PCB menggunakan EasyEDA:
- Mengira dan Memesan Sampel PCB dalam talian:
Dalam projek ini, kita akan menggunakan mikrokontroler PIC untuk mengawal beberapa beban AC dari jarak jauh dengan hanya menggunakan remote IR. Projek serupa seperti automasi Rumah jauh yang dikendalikan IR juga telah dilakukan dengan Arduino, tetapi di sini kami merancangnya di PCB menggunakan pereka dan simulator PCB dalam talian EasyEDA, dan menggunakan perkhidmatan reka bentuk PCB mereka untuk memesan papan PCB seperti yang ditunjukkan di bahagian berikutnya artikel.
Pada akhir projek ini, anda akan dapat menukar (ON / OFF) sebarang beban AC menggunakan Remote biasa dari keselesaan Kerusi / Tempat Tidur anda. Untuk menjadikan projek ini lebih menarik, kami juga telah mengaktifkan satu ciri untuk mengawal kelajuan kipas dengan bantuan Triac. Semua ini dapat dilakukan dengan klik mudah pada remote IR anda. Anda boleh menggunakan mana-mana alat kawalan jauh TV / DVD / MP3 anda untuk projek ini. Isyarat IR yang berbeza dari alat kawalan jauh diterima oleh mikrokontroler yang kemudian mengawal relay masing-masing melalui litar pemacu geganti. Relay ini digunakan untuk menyambung dan memutuskan Beban AC (Lampu / Kipas).
Penjelasan Kerja:
Kerja projek ini agak mudah difahami. Apabila butang ditekan pada IR Remote, ia akan menghantar urutan kod dalam bentuk pulsa yang dikodkan menggunakan frekuensi modulasi 38Khz. Nadi ini diterima oleh sensor TSOP1738 dan kemudian dibaca oleh Pengawal. Pengawal kemudian menyahkodkan denyut nadi yang diterima menjadi nilai heksa dan membandingkannya dengan nilai hex yang telah ditentukan dalam program kami.
Sekiranya ada kecocokan, pengawal melakukan operasi relatif dengan mencetuskan Relay / Triac masing-masing dan hasil yang sesuai juga ditunjukkan oleh LED on-board. Di sini, dalam projek ini, kami telah menggunakan 4 mentol (lampu kecil) dengan warna yang berbeza sebagai beban pencahayaan dan satu lagi mentol (mentol yang lebih besar) dianggap sebagai kipas untuk tujuan demonstrasi.
Kami telah memilih kunci 1 untuk menukar relay1, 2 untuk menukar relay2, 3 untuk menukar relay3, 4 untuk menukar relay4, dan Vol + untuk meningkatkan kelajuan kipas dan Vol- untuk mengurangkan kelajuan kipas.
Catatan: Di sini kami telah menggunakan mentol 100 watt dan bukannya kipas.
Terdapat banyak jenis Alat Jauh IR yang tersedia untuk peranti yang berbeza, tetapi kebanyakannya berfungsi sekitar Frekuensi 38KHz. Di sini, dalam projek ini, kami mengendalikan perkakas rumah menggunakan alat kawalan jauh IR TV dan untuk mengesan isyarat IR, kami menggunakan Penerima IR TSOP1738. Sensor TSOP1738 ini dapat merasakan isyarat Frekuensi 38Khz. Pengoperasian alat kawalan jauh IR dan TSOP1738 dibahas secara terperinci dalam artikel ini: Pemancar dan Penerima IR
Mikrokontroler PIC kami beroperasi pada + 5V dan Relay beroperasi pada + 12V, Oleh itu kami menggunakan transformer untuk menurunkan AC 220V dan membetulkannya menggunakan penerus jambatan penuh. Voltan DC yang diperbaiki ini kemudian diatur menjadi + 12V dan + 5V dengan menggunakan IC regulator 7812 dan 7805 masing-masing.
Untuk mencetuskan relay, kami menggunakan transistor seperti BC547 yang boleh bertindak sebagai suis elektronik untuk menghidupkan / mematikan geganti berdasarkan isyarat dari mikrokontroler PIC. Selanjutnya untuk mengawal kelajuan kipas kami menggunakan TRIAC. TRIAC adalah semikonduktor kuasa yang mampu mengawal voltan keluaran; keupayaan ini digunakan untuk mengawal kelajuan kipas.
Kami juga telah menggunakan Pemacu Triac untuk mengawal Triac menggunakan mikrokontroler PIC kami. Pemacu ini digunakan untuk memberikan pulsa sudut tembak ke Triac, sehingga daya output dapat dikendalikan. Di sini kami telah menggunakan 6 tahap kawalan kelajuan. Apabila tahap 0 maka kipas akan mati. Apabila tahap menjadi 1 maka kelajuan akan menjadi 1/5 kelajuan penuh. Apabila tahap menjadi 2 maka kelajuan akan menjadi 2/5 kelajuan penuh dan masing-masing untuk yang lain. Tahap kelajuan semasa dapat dipantau menggunakan paparan 7 segmen on-board.
Gambarajah blok projek ditunjukkan di bawah.
Komponen:
Komponen yang diperlukan untuk membina projek ini diberikan di bawah:
- PIC18f2520 Mikrokontroler -1
- TSOP1738 -1
- Jauh IR TV / DVD -1
- Transistor BC547 -4
- Relay 12 volt -4
- Mentol dengan pemegang -5
- Wayar penyambung -
- PCB EasyEda -1
- LCD 16x2
- Bekalan kuasa 12v
- Penyambung terminal 2 pin `-8
- Penyambung Terminal 3 pin -1
- Transformer 12-0-12 -1 -
- Pengatur Voltan 7805 -1
- Pengatur Voltan 7812 -1
- Kapasitor 1000uf -1
- Kapasitor 10uf -1
- Kapasitor 0.1uf -1
- Kapasitor 0.01uf 400V `-1
- 10k -5
- 1k -5
- 100ohm -7
- Segmen katod biasa -1
- 1n4007 diod -10
- BT136 triac -1
- Header lelaki / wanita -
- LED -6
- Opto-pengganding moc3021 -1
- Opto-pengganding mtc2e atau 4n35 -1
- Kristal 20Mhz -1
- Kapasitor 33pf -2
- 5.1v zener diod -1
- Perintang 47 ohm 2 watt -1
Semua komponen ini biasa digunakan dan boleh dibeli dengan mudah. Walau bagaimanapun, jika anda mencari pembelian terbaik dalam talian, kami akan mengesyorkan anda LCSC.
LCSC adalah kedai dalam talian yang bagus untuk membeli komponen elektronik anda untuk semua jenis projek. Mereka mempunyai kira-kira 25,000 jenis komponen dan yang terbaik ialah mereka menjual barang dalam jumlah kecil untuk projek kecil dan mereka juga mempunyai Penghantaran Global.
Menyahkod Jauh IR:
Seperti yang dinyatakan sebelumnya, anda boleh menggunakan alat kawalan jauh untuk projek anda. Tetapi kita harus tahu jenis isyarat apa yang dihasilkan dari alat kawalan jauh itu. Untuk setiap kunci individu pada alat kawalan jauh akan ada nilai HEX yang setara untuk kunci itu. Dengan menggunakan nilai HEX ini kita dapat membezakan antara setiap kekunci di sisi mikrokontroler kita. Oleh itu sebelum kita memutuskan untuk menggunakan alat kawalan jauh, kita harus mengetahui nilai HEX untuk kunci yang telah ditetapkan pada alat kawalan jauh tersebut. Dalam projek ini, kami telah menggunakan alat kawalan jauh NEC. Nilai HEX untuk kunci pada alat kawalan jauh NEC diberikan di bawah.
Seperti yang anda perhatikan, nilai HEX mempunyai 7 watak di mana hanya dua yang terakhir berbeza, oleh itu kita hanya boleh mempertimbangkan dua digit terakhir untuk membezakan antara setiap kekunci.
Rajah Litar:
Skema untuk projek ditunjukkan di bawah.
Skema di atas dipermudah dengan menggunakan editor skema esayEDA kerana mereka menyediakan susunan semua komponen yang digunakan dalam projek ini. Ia juga tidak memerlukan pemasangan dan boleh digunakan dalam talian semasa dalam perjalanan.
Nilai pin dan komponen dinyatakan dengan jelas dalam skema di atas. Anda juga boleh memuat turun fail skematik dari sini.
Pengaturcaraan:
Program untuk projek ini dilakukan menggunakan MPLABX, kodanya juga cukup mudah dan senang difahami. Kod lengkap akan diberikan pada akhir tutorial ini, beberapa bahagian penting program dijelaskan di bawah.
Pada awal kod, kita harus memasukkan perpustakaan yang diperlukan, menentukan pin dan menyatakan pemboleh ubahnya.
#sertakan
Selepas itu, kami telah membuat fungsi penundaan sederhana dengan menggunakan gelung "untuk".
kelewatan terbatal (masa int) {untuk (int i = 0; i
Selepas itu, kami telah memulakan pemasa dengan menggunakan fungsi berikut
pemasa tidak sah () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Sumber Jam Pemasa adalah dari Prescaler T0CS = 0; // Prescaler mendapat jam dari FCPU (5MHz) T08BIT = 0; // 16 MOD BIT TMR0IE = 1; // Aktifkan TIMER0 Interrupt PEIE = 1; // Aktifkan GIE Periferal Interrupt = 1; // Dayakan INT global TMR0ON = 1; // Sekarang mulakan pemasa! }
Sekarang dalam fungsi utama, kami telah memberikan arahan ke pin yang dipilih dan memulakan pemasa dan gangguan inter0 luaran untuk mengesan persimpangan sifar.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; RB6 = 1; geganti1 = 0; geganti2 = 0; geganti3 = 0; geganti4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; tric = 0; pemasa (); INTEDG0 = 0; // Selang pada tepi jatuh INT0IE = 1; // Aktifkan gangguan luaran INT0 (RB0) INT0IF = 0; // Membersihkan INT0 External Interrupt Flag bit PEIE = 1; // Aktifkan GIE Periferal Interrupt = 1; // Dayakan INT secara global
Sekarang, di sini kita tidak menggunakan mod gangguan atau menangkap dan membandingkan untuk mengesan isyarat IR. Di sini kita baru sahaja menggunakan pin digital untuk membaca data sama seperti kita membaca butang tekan. Bila-bila masa isyarat tinggi atau rendah kita hanya meletakkan kaedah penyahtinjaan dan menjalankan pemasa. Setiap kali pin menukar keadaannya ke yang lain maka nilai masa akan disimpan dalam array.
Logik jarak jauh IR menghantar 0 sebagai 562.5us dan logik 1 sebagai 2250us. Apabila pemasa membaca sekitar 562.5us maka kita menganggapnya 0 dan apabila pemasa membaca sekitar 2250us maka kita menganggapnya sebagai 1. Kemudian kita menukarnya dalam hex.
Isyarat masuk dari jarak jauh mengandungi 34 bit. Kami menyimpan semua bait dalam array dan kemudian menyahkod bait terakhir untuk digunakan.
sementara (ir == 1); INT0IE = 0; sementara (ir == 0); TMR0 = 0; sementara (ir == 1); saya ++; dat = TMR0; jika (dat> 5000 && dat <12000) {} lain {i = 0; INT0IE = 1; } jika (i> = 33) {GIE = 0; kelewatan (50); cmd = 0; untuk (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; lain jika (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
Bahagian kod di atas menerima dan menyahkod isyarat IR menggunakan pemasa mengganggu dan menyimpan nilai HEX yang sesuai dalam cmd pemboleh ubah. Sekarang kita dapat membandingkan nilai HEX ini (pemboleh ubah cmd) dengan nilai HEX yang telah kita tetapkan dan menukar relay seperti yang ditunjukkan di bawah
jika (cmd == 0xAF) {relay1 = ~ relay1; rly1LED = ~ rly1LED; } lain jika (cmd == 0x27) {relay2 = ~ relay2; rly2LED = ~ rly2LED; } lain jika (cmd == 0x07) {relay3 = ~ relay3; rly3LED = ~ rly3LED; } lain jika (cmd == 0xCF) {relay4 = ~ relay4; rly4LED = ~ rly4LED; } lain jika (cmd == 0x5f) {kelajuan ++; jika (kelajuan> 5) {kelajuan = 5; }} lain jika (cmd == 0x9f) {speed--; jika (kelajuan <= 0) {kelajuan = 0; }}
Sekarang untuk mengetahui di mana kipas kami beroperasi, kita harus menggunakan paparan 7 segmen. Garis berikut digunakan untuk memberi petunjuk pada paparan 7 segmen.
if (speed == 5) // dimatikan 5x2 = 10ms triger // speed 0 {PORTA = 0xC0; // paparan 0 RB6 = 1; fanLED = 0; } lain jika (kelajuan == 4) // pencetus 8 ms // kelajuan 1 {PORTA = 0xfc; // memaparkan 1 RB6 = 1; fanLED = 1; } lain jika (kelajuan == 3) // pencetus 6 ms // kelajuan 2 {PORTA = 0xE4; // memaparkan 2 RB6 = 0; fanLED = 1; } lain jika (speed == 2) // 4ms trigger // speed 3 {PORTA = 0xF0; // memaparkan 3 RB6 = 0; fanLED = 1; } lain jika (speed == 1) // 2ms trigger // speed 4 {PORTA = 0xD9; // memaparkan 4 RB6 = 0; fanLED = 1; } lain jika (speed == 0) // 0ms trigger // speed 5 full power {PORTA = 0xD2; // memaparkan 5 RB6 = 0; fanLED = 1; }
Fungsi di bawah adalah untuk gangguan luaran dan limpahan masa. Fungsi ini bertanggungjawab untuk mengesan persimpangan sifar dan memandu Triac.
batal mengganggu isr () {if (INT0IF) {kelewatan (kelajuan); tric = 1; untuk (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } jika (TMR0IF) // Periksa sama ada TMR0 Overflow ISR {TMR0IF = 0; }}
PCB akhir untuk automasi rumah kawalan jauh IR ini seperti yang ditunjukkan di bawah:
Reka bentuk litar dan PCB menggunakan EasyEDA:
Untuk merancang automasi rumah kawalan jauh ini , kami telah menggunakan EasyEDA yang merupakan alat EDA dalam talian percuma untuk membuat litar dan PCB secara lancar. Kami sebelumnya telah memesan beberapa PCB dari EasyEDA dan masih menggunakan perkhidmatannya kerana kami mendapati keseluruhan prosesnya, dari melukis litar hingga memesan PCB, lebih mudah dan cekap dibandingkan dengan pembuat PCB lain. EasyEDA menawarkan lukisan litar, simulasi, reka bentuk PCB secara percuma dan juga menawarkan perkhidmatan PCB disesuaikan berkualiti tinggi tetapi harga rendah. Lihat di sini untuk tutorial lengkap mengenai Cara Menggunakan EDA Mudah untuk membuat Skema, susun atur PCB, Simulasi Litar dll.
EasyEDA bertambah baik dari hari ke hari; mereka telah menambahkan banyak ciri baru dan meningkatkan keseluruhan pengalaman pengguna, yang menjadikan EasyEDA lebih mudah dan berguna untuk merancang litar. Mereka akan segera melancarkan versi Desktopnya, yang boleh dimuat turun dan dipasang di komputer anda untuk penggunaan luar talian.
Di EasyEDA, anda boleh menjadikan reka bentuk litar dan PCB anda umum sehingga pengguna lain dapat menyalin atau menyuntingnya dan dapat memanfaatkannya, kami juga telah menjadikan keseluruhan susun atur Litar dan PCB kami untuk automasi Rumah kawalan jauh ini .
Di bawah ini adalah Snapshot lapisan Atas susun atur PCB dari EasyEDA, anda dapat melihat mana-mana Lapisan (Atas, Bawah, Topsilk, dasar bawah dll) dari PCB dengan memilih lapisan dari Tingkap 'Lapisan'.
Mengira dan Memesan Sampel PCB dalam talian:
Setelah melengkapkan reka bentuk PCB, anda dapat mengklik ikon keluaran Fabrikasi , yang akan membawa anda ke halaman pesanan PCB. Di sini anda dapat melihat PCB anda di Gerber Viewer atau memuat turun fail Gerber dari PCB anda dan menghantarnya ke mana-mana pengeluar, ia juga jauh lebih mudah (dan lebih murah) untuk memesannya secara langsung di EasyEDA. Di sini anda dapat memilih jumlah PCB yang anda ingin pesan, berapa banyak lapisan tembaga yang anda perlukan, ketebalan PCB, berat tembaga, dan juga warna PCB. Setelah anda memilih semua pilihan, klik "Simpan ke Troli" dan selesaikan pesanan anda, maka anda akan menerima PCB anda dalam beberapa hari.
Anda boleh memesan PCB ini secara langsung atau memuat turun fail Gerber menggunakan pautan ini.
Setelah beberapa hari memesan PCB, kami mendapat PCB. Papan yang kami terima ditunjukkan di bawah.
Sebaik sahaja kami menerima PCB, saya memasang semua komponen yang diperlukan di atas PCB, dan akhirnya kami menyediakan IR Automated Home Controlled Remote kami, periksa litar ini yang berfungsi dalam video demonstrasi di akhir artikel.