- Penjelasan Kerja:
- Komponen:
- Pemrograman:
- Desain Sirkuit dan PCB menggunakan EasyEDA:
- Menghitung dan Memesan Sampel PCB secara online:
Dalam proyek ini, kita akan menggunakan mikrokontroler PIC untuk mengontrol beberapa beban AC dari jarak jauh hanya dengan menggunakan remote IR. Proyek serupa Otomatisasi rumah yang dikendalikan jarak jauh IR telah dilakukan dengan Arduino juga, tetapi di sini kami merancangnya pada PCB menggunakan perancang dan simulator PCB online EasyEDA, dan menggunakan layanan perancangan PCB mereka untuk memesan papan PCB seperti yang ditunjukkan pada bagian selanjutnya dari artikel.
Di akhir proyek ini, Anda akan dapat mengaktifkan (ON / OFF) semua beban AC menggunakan Remote biasa dari kenyamanan Kursi / Tempat Tidur Anda. Untuk membuat proyek ini lebih menarik, kami juga mengaktifkan fitur untuk mengontrol kecepatan kipas dengan bantuan Triac. Semua ini dapat dilakukan dengan klik mudah pada remote IR Anda. Anda dapat menggunakan remote TV / DVD / MP3 Anda untuk proyek ini. Sinyal IR yang berbeda dari remote diterima oleh mikrokontroler yang kemudian mengontrol relai masing-masing melalui rangkaian driver relai. Relai ini digunakan untuk menyambungkan dan memutus Beban AC (Lampu / Kipas).
Penjelasan Kerja:
Cara kerja proyek ini cukup sederhana untuk dipahami. Ketika sebuah tombol ditekan pada IR Remote, ia mengirimkan urutan kode dalam bentuk pulsa yang dikodekan menggunakan frekuensi modulasi 38Khz. Pulsa ini diterima oleh sensor TSOP1738 dan kemudian dibaca oleh Kontroler. Kontroler kemudian menerjemahkan rangkaian pulsa yang diterima menjadi nilai hex dan membandingkannya dengan nilai hex yang telah ditentukan dalam program kami.
Jika terjadi kecocokan maka pengontrol melakukan operasi relatif dengan memicu Relai / Triac masing-masing dan hasil yang sesuai juga ditunjukkan oleh LED on-board. Di sini, dalam proyek ini, kami telah menggunakan 4 bola lampu (bola lampu kecil) dengan warna berbeda sebagai beban penerangan dan bola lampu lain (bola lampu besar) dianggap sebagai kipas untuk tujuan demonstrasi.
Kami telah memilih tombol 1 untuk mengalihkan relai1, 2 untuk mengaktifkan relai2, 3 untuk mengaktifkan relai3, 4 untuk mengaktifkan relai4, dan Vol + untuk meningkatkan kecepatan kipas dan Vol- untuk menurunkan kecepatan kipas.
Catatan: Di sini kami telah menggunakan bohlam 100 watt, bukan kipas angin.
Ada banyak jenis IR Remote yang tersedia untuk perangkat yang berbeda, tetapi kebanyakan bekerja di sekitar Frekuensi 38KHz. Di sini, di proyek ini, kami mengontrol peralatan rumah tangga menggunakan remote TV IR dan untuk mendeteksi sinyal IR, kami menggunakan Penerima IR TSOP1738. Sensor TSOP1738 ini dapat merasakan sinyal Frekuensi 38Khz. Cara kerja remote IR dan TSOP1738 dibahas secara rinci dalam artikel ini: Pemancar dan Penerima IR
Mikrokontroler PIC kami beroperasi pada + 5V dan Relay beroperasi pada + 12V, Oleh karena itu kami menggunakan transformator untuk menurunkan AC 220V dan memperbaikinya menggunakan penyearah jembatan penuh. Tegangan DC yang diperbaiki ini kemudian diatur ke + 12V dan + 5V dengan menggunakan IC regulator masing-masing 7812 dan 7805.
Untuk memicu relai digunakan transistor seperti BC547 yang berfungsi sebagai saklar elektronik untuk menghidupkan / mematikan relai berdasarkan sinyal dari mikrokontroler PIC. Selanjutnya untuk mengontrol kecepatan kipas kita menggunakan TRIAC. TRIAC adalah semikonduktor daya yang mampu mengontrol tegangan keluaran; kemampuan ini digunakan untuk mengontrol kecepatan kipas.
Kami juga telah menggunakan Driver Triac untuk mengontrol Triac menggunakan mikrokontroler PIC kami. Driver ini digunakan untuk memberikan pulsa sudut tembak ke Triac, agar daya keluaran bisa dikontrol. Di sini kami telah menggunakan 6 tingkat kontrol kecepatan. Saat level 0 maka kipas akan mati. Ketika level akan menjadi 1 maka kecepatan akan menjadi 1/5 dari kecepatan penuh. Ketika level akan menjadi 2 maka kecepatan akan menjadi 2/5 dari kecepatan penuh dan masing-masing untuk yang lain. Tingkat kecepatan saat ini dapat dipantau menggunakan tampilan 7-segmen on-board.
Diagram blok proyek ditunjukkan di bawah ini.
Komponen:
Komponen yang diperlukan untuk membangun proyek ini diberikan di bawah ini:
- Mikrokontroler PIC18f2520 -1
- TSOP1738 -1
- IR TV / DVD Remote -1
- Transistor BC547 -4
- Relai 12 volt -4
- Bohlam dengan pemegang -5
- Menghubungkan kabel -
- EasyEda PCB -1
- LCD 16x2
- Catu daya 12v
- Konektor terminal 2 pin `` -8
- Konektor Terminal 3 pin -1
- Transformator 12-0-12 -1 -
- Regulator Tegangan 7805 -1
- Regulator Tegangan 7812 -1
- Kapasitor 1000uf -1
- Kapasitor 10uf -1
- Kapasitor 0.1uf -1
- Kapasitor 0.01uf 400V `-1
- 10rb -5
- 1rb -5
- 100ohm -7
- Segmen katoda umum -1
- 1n4007 diode -10
- BT136 triac -1
- Header pria / wanita -
- LED -6
- Opto-coupler moc3021 -1
- Opto-coupler mtc2e atau 4n35 -1
- Kristal 20Mhz -1
- 33pf kapasitor -2
- 5.1v zener diode -1
- 47 ohm resistor 2 watt -1
Semua komponen ini biasa digunakan dan dapat dibeli dengan mudah. Namun jika Anda mencari pembelian online terbaik maka kami akan merekomendasikan Anda LCSC.
LCSC adalah toko online yang bagus untuk membeli komponen elektronik Anda untuk semua jenis proyek. Mereka menampilkan sekitar 25.000 jenis komponen dan yang terbaik adalah mereka menjual barang dalam jumlah kecil untuk proyek kecil dan mereka juga memiliki Pengiriman Global.
Mendekode IR Remote:
Seperti yang dikatakan sebelumnya, Anda dapat menggunakan remote jenis apa pun untuk proyek Anda. Tetapi kita harus mengetahui jenis sinyal yang dihasilkan dari remote tertentu. Untuk setiap kunci individu pada remote akan ada nilai HEX yang setara untuk kunci itu. Dengan menggunakan nilai HEX ini kita dapat membedakan setiap kunci di sisi mikrokontroler kita. Jadi sebelum kita memutuskan untuk menggunakan remote kita harus mengetahui nilai HEX untuk kunci preset di remote tersebut. Dalam proyek ini, kami telah menggunakan remote NEC. Nilai HEX untuk kunci pada remote NEC diberikan di bawah ini.
Seperti yang Anda perhatikan, nilai HEX memiliki 7 karakter yang hanya membedakan dua karakter terakhir, maka kami hanya dapat mempertimbangkan dua digit terakhir untuk membedakan setiap kunci.
Diagram Sirkuit:
Skema untuk proyek tersebut ditunjukkan di bawah ini.
Skema di atas dibuat mudah dengan menggunakan editor skematik esayEDA karena mereka menyediakan tata letak dari semua komponen yang digunakan dalam proyek ini. Ini juga tidak memerlukan instalasi dan dapat digunakan secara online saat dalam perjalanan.
Pinout dan nilai komponen ditentukan dengan jelas dalam skema di atas. Anda juga dapat mengunduh file skema dari sini.
Pemrograman:
Program untuk proyek ini dilakukan dengan menggunakan MPLABX, kodenya juga cukup sederhana dan mudah dimengerti. Kode lengkap akan diberikan di akhir tutorial ini, beberapa bagian penting dari program dijelaskan di bawah ini.
Di awal kode, kita harus menyertakan pustaka yang diperlukan, menentukan pin, dan mendeklarasikan variabel.
#include
Setelah itu, kita telah membuat fungsi penundaan sederhana dengan menggunakan loop “for”.
void delay (int time) {for (int i = 0; i
Setelah itu, kita menginisialisasi timer dengan menggunakan fungsi berikut
void timer () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Timer Clock Source adalah dari Prescaler T0CS = 0; // Prescaler mendapatkan clock dari FCPU (5MHz) T08BIT = 0; // 16 MODE BIT TMR0IE = 1; // Aktifkan TIMER0 Interrupt PEIE = 1; // Aktifkan Peripheral Interrupt GIE = 1; // Aktifkan INT secara global TMR0ON = 1; // Sekarang mulai pengatur waktunya! }
Sekarang di fungsi utama, kami telah memberikan arah ke pin yang dipilih dan menginisialisasi timer dan interupsi eksternal int0 untuk mendeteksi persimpangan nol.
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; pengatur waktu (); INTEDG0 = 0; // Interupsi pada sisi jatuh INT0IE = 1; // Aktifkan interupsi eksternal INT0 (RB0) INT0IF = 0; // Hapus INT0 External Interrupt Flag bit PEIE = 1; // Aktifkan Peripheral Interrupt GIE = 1; // Aktifkan INT secara global
Sekarang, di sini kita tidak menggunakan mode interupsi atau tangkap dan bandingkan untuk mendeteksi sinyal IR. Di sini kita baru saja menggunakan pin digital untuk membaca data seperti kita membaca tombol push. Setiap kali sinyal menjadi tinggi atau rendah kami hanya menempatkan metode debouncing dan menjalankan timer. Setiap kali pin mengubah statusnya ke yang lain maka nilai waktu akan disimpan dalam array.
IR remote mengirim logika 0 sebagai 562.5us dan logika 1 sebagai 2250us. Kapanpun timer membaca sekitar 562.5us maka kita asumsikan 0 dan ketika timer membaca sekitar 2250us maka kita asumsikan sebagai 1. Kemudian kita mengubahnya dalam hex.
Sinyal yang masuk dari remote berisi 34 bit. Kami menyimpan semua byte dalam array dan kemudian mendekode byte terakhir untuk digunakan.
sementara (ir == 1); INT0IE = 0; sementara (ir == 0); TMR0 = 0; sementara (ir == 1); i ++; dat = TMR0; if (dat> 5000 && dat <12000) {} else {i = 0; INT0IE = 1; } jika (i> = 33) {GIE = 0; penundaan (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;
Potongan kode di atas menerima dan menerjemahkan sinyal IR menggunakan interupsi pengatur waktu dan menyimpan nilai HEX yang sesuai dalam variabel cmd. Sekarang kita dapat membandingkan nilai HEX ini (variabel cmd) dengan nilai HEX yang telah ditentukan sebelumnya dan mengaktifkan relai seperti yang ditunjukkan di bawah ini
if (cmd == 0xAF) {relay1 = ~ relay1; rly1LED = ~ rly1LED; } lain jika (cmd == 0x27) {relai2 = ~ relai2; rly2LED = ~ rly2LED; } lain jika (cmd == 0x07) {relay3 = ~ relay3; rly3LED = ~ rly3LED; } lain jika (cmd == 0xCF) {relay4 = ~ relay4; rly4LED = ~ rly4LED; } lain jika (cmd == 0x5f) {kecepatan ++; if (kecepatan> 5) {kecepatan = 5; }} lain jika (cmd == 0x9f) {kecepatan--; jika (kecepatan <= 0) {kecepatan = 0; }}
Sekarang untuk mengetahui di mana kipas kami sedang beroperasi, kami harus menggunakan layar 7-segmen. Baris berikut digunakan untuk menginstruksikan pin tampilan 7 segmen.
if (speed == 5) // dimatikan 5x2 = 10ms triger // speed 0 {PORTA = 0xC0; // tampilkan 0 RB6 = 1; fanLED = 0; } else if (speed == 4) // 8 ms trigger // speed 1 {PORTA = 0xfc; // menampilkan 1 RB6 = 1; fanLED = 1; } else if (speed == 3) // 6 ms trigger // speed 2 {PORTA = 0xE4; // menampilkan 2 RB6 = 0; fanLED = 1; } else if (speed == 2) // 4ms trigger // speed 3 {PORTA = 0xF0; // menampilkan 3 RB6 = 0; fanLED = 1; } else if (speed == 1) // 2ms trigger // speed 4 {PORTA = 0xD9; // menampilkan 4 RB6 = 0; fanLED = 1; } else if (speed == 0) // 0ms trigger // speed 5 full power {PORTA = 0xD2; // menampilkan 5 RB6 = 0; fanLED = 1; }
Fungsi di bawah ini adalah untuk interupsi eksternal dan luapan waktu. Fungsi ini bertanggung jawab untuk mendeteksi zero crossing dan menggerakkan Triac.
void interrupt isr () {if (INT0IF) {delay (speed); tric = 1; untuk (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Periksa apakah TMR0 Overflow ISR {TMR0IF = 0; }}
PCB terakhir untuk otomatisasi rumah yang dikendalikan jarak jauh IR ini terlihat seperti yang ditunjukkan di bawah ini:
Desain Sirkuit dan PCB menggunakan EasyEDA:
Untuk merancang otomatisasi rumah kendali jarak jauh ini, kami telah menggunakan EasyEDA yang merupakan alat EDA online gratis untuk membuat sirkuit dan PCB dengan cara yang mulus. Kami sebelumnya telah memesan beberapa PCB dari EasyEDA dan masih menggunakan layanan mereka karena kami menemukan seluruh proses, dari menggambar sirkuit hingga memesan PCB, lebih nyaman dan efisien dibandingkan dengan pabrikan PCB lainnya. EasyEDA menawarkan gambar sirkuit, simulasi, desain PCB secara gratis dan juga menawarkan layanan PCB Khusus berkualitas tinggi tetapi harga rendah. Periksa di sini untuk tutorial lengkap tentang Cara menggunakan EDA Mudah untuk membuat Skema, tata letak PCB, Simulasi Sirkuit, dll.
EasyEDA meningkat dari hari ke hari; mereka telah menambahkan banyak fitur baru dan meningkatkan pengalaman pengguna secara keseluruhan, yang membuat EasyEDA lebih mudah dan dapat digunakan untuk mendesain sirkuit. Mereka akan segera meluncurkan versi Desktopnya, yang dapat diunduh dan diinstal di komputer Anda untuk penggunaan offline.
Di EasyEDA, Anda dapat membuat desain sirkuit dan PCB Anda menjadi publik sehingga pengguna lain dapat menyalin atau mengeditnya dan dapat memanfaatkannya, kami juga telah membuat seluruh layout Sirkuit dan PCB kami menjadi publik untuk otomatisasi Rumah Remote control ini.
Di bawah ini adalah Snapshot dari Top layer layout PCB dari EasyEDA, Anda dapat melihat Layer (Top, Bottom, Topsilk, bottomsilk dll) dari PCB dengan memilih layer dari Window 'Layers'.
Menghitung dan Memesan Sampel PCB secara online:
Setelah menyelesaikan desain PCB, Anda dapat mengklik ikon Output fabrikasi , yang akan membawa Anda ke halaman pemesanan PCB. Di sini Anda dapat melihat PCB Anda di Gerber Viewer atau mengunduh file Gerber dari PCB Anda dan mengirimkannya ke pabrikan mana pun, juga jauh lebih mudah (dan lebih murah) untuk memesannya langsung di EasyEDA. Disini anda bisa memilih jumlah PCB yang ingin anda pesan, berapa lapisan tembaga yang anda butuhkan, ketebalan PCB, berat tembaga, bahkan warna PCB. Setelah Anda memilih semua opsi, klik "Simpan ke Keranjang" dan selesaikan pesanan Anda, lalu Anda akan menerima PCB dalam beberapa hari.
Anda dapat langsung memesan PCB ini atau mengunduh file Gerber menggunakan tautan ini.
Setelah beberapa hari memesan PCB, kami mendapatkan PCBnya. Papan yang kami terima ditampilkan di bawah ini.
Setelah kami menerima PCB, saya memasang semua komponen yang diperlukan di atas PCB, dan akhirnya kami memiliki IR Remote Controlled Home Automation siap, periksa rangkaian ini berfungsi dalam video demonstrasi di akhir artikel.