Pada proyek ini akan dibuat Fire Alert System dengan menggunakan mikrokontroler ATMEGA8 dan sensor api. Sensor api bisa jenis apa saja, namun kami menggunakan Sensor Api berbasis IR (Inframerah). Meskipun Sensor Kebakaran berbasis IR memiliki beberapa kelemahan sebagian besar adalah ketidakakuratan, ini adalah cara termurah dan termudah untuk mendeteksi kebakaran.
Sensor Kebakaran Berbasis IR memiliki penglihatan penginderaan yang lebih rendah, jadi kita akan memasang sensor api pada motor servo. Servo akan membuat rotasi pendulum 180 derajat. Dengan sensor Api yang dipasang di atasnya, kami mendapatkan penglihatan sensor api 270+ derajat. Servo akan berputar terus menerus sehingga memberikan sistem peringatan kebakaran ruangan yang lengkap. Untuk lebih akuratnya kita bisa menambahkan sensor asap ke sistem. Dengan itu kami bisa mendapatkan akurasi yang lebih tinggi.
Komponen Sirkuit
Perangkat keras: Catu daya + 5v, motor Servo (sg90), ATMEGA8, BUZZER, Tombol, resistor 10KΩ, resistor 1KΩ, resistor 220Ω, kapasitor 100nF, PROGRAMMER AVR-ISP.
Perangkat lunak: Atmel studio 6.1, progisp atau flash magic.
Diagram Sirkuit & Bekerja
Agar poros servo bergerak ke kiri, kita perlu memberikan jatah 1/18 putaran, dan agar poros berputar ke kiri, kita perlu memberi PWM dengan rasio tugas 2/18. Kami akan memprogram ATMEGA8 untuk memberikan sinyal PWM yang akan memutar poros servo ke 180 dan kemudian ke 0 setelah penundaan tertentu.
Selama waktu tersebut, Sensor Kebakaran akan menyala dan pengontrol akan siaga penuh. Jika ada kebakaran, sensor memberikan pulsa tinggi pulsa ini ketika terdeteksi oleh pengontrol maka alarm akan disetel. Alarm akan dimatikan dengan menekan tombol reset yang terhubung dengannya.
Di atmega8 untuk tiga saluran PWM, kami telah menetapkan tiga pin. Kita hanya dapat mengambil keluaran PWM pada pin tersebut saja. Karena kita menggunakan PWM1 kita harus mengambil sinyal PWM pada pin OC1A (PORTB 1 st PIN). Seperti yang ditunjukkan pada diagram rangkaian, kami menghubungkan sinyal servo ke pin OC1A. Di sini hal lain adalah lebih dari tiga saluran PWM, dua adalah saluran PWM 8-bit dan satu saluran PWM 16-bit. Kami akan menggunakan saluran PWM 16-bit di sini.
Di ATMEGA ada beberapa cara untuk menghasilkan PWM, yaitu
1. Fase PWM yang benar.
2. PWM Cepat.
Di sini kita akan membuat semuanya sederhana, Jadi kita akan menggunakan metode FAST PWM untuk menghasilkan sinyal PWM.
Pertama untuk memilih frekuensi PWM, Ini tergantung pada aplikasi biasanya, untuk LED frekuensi apa pun yang lebih besar dari 50Hz akan dilakukan. Untuk alasan itu kami memilih counter clock 1MHZ. Jadi kami memilih tidak ada prescalar. Prescalar adalah angka yang dipilih untuk mendapatkan jam penghitung yang lebih rendah. Misalnya jika jam osilator adalah 8Mhz, kita dapat memilih preskalar '8' untuk mendapatkan jam 1MHz sebagai penghitung. Prescalar dipilih berdasarkan frekuensi. Jika kita ingin pulsa periode waktu lebih banyak kita harus memilih prescalar yang lebih tinggi.
Sekarang untuk mendapatkan PWM CEPAT dari clock 50Hz dari ATMEGA, kita perlu mengaktifkan bit yang sesuai di register “ TCCR1B ”.
Sini, CS10, CS11, CS12 (KUNING) —pilih prescalar untuk memilih jam penghitung. Tabel untuk prescalar yang sesuai ditunjukkan pada tabel di bawah ini. Jadi untuk prescaling satu (osilator clock = counter clock).
jadi CS10 = 1, dua bit lainnya adalah nol.
MERAH (WGM10-WGM13): diubah untuk memilih mode generasi bentuk gelombang, berdasarkan tabel di bawah, untuk PWM cepat. Saat ini WGM11, WGM12 dan WGM12 diatur ke 1.
Sekarang kita tahu bahwa PWM adalah sinyal dengan jatah tugas yang berbeda atau waktu turn ON yang berbeda. Sampai saat ini kami telah memilih frekuensi dan jenis PWM. Tema utama bab ini terletak pada bagian ini. Untuk mendapatkan rasio tugas yang berbeda, Kami akan memilih nilai antara 0 dan 255 (2 ^ 8 karena 8 bit). Katakanlah kita memilih nilai 180, saat penghitung mulai menghitung dari 0 dan mencapai nilai 180, respons keluaran dapat dipicu. Pemicu ini mungkin bersifat inverting atau non inverting. Artinya output dapat dikatakan ditarik saat mencapai hitungan, atau dapat dikatakan ditarik ke bawah saat mencapai hitungan.
HIJAU (COM1A1, COM1A0): Pilihan tarik ke atas atau ke bawah dipilih oleh bit CM1A0 dan CM1A1.
Seperti yang ditunjukkan pada tabel, agar output menjadi tinggi saat dibandingkan dan output akan tetap tinggi hingga nilai maks. Kita harus memilih mode pembalik untuk melakukan itu, jadi COM1A0 = 1; COM1A1 = 1.
Seperti yang ditunjukkan pada gambar di bawah ini, OCR1A (Output Compare Register 1A) adalah byte yang menyimpan nilai yang dipilih pengguna. Jadi jika kita mengubah OCR1A = 180, pengontrol memicu perubahan (tinggi) saat penghitung mencapai 180 dari 0.
OCR1A harus 19999-600 untuk 180 derajat dan 19999-2400 untuk 0 derajat.