Pada bagian ini akan diberikan dan dibahas contoh proyek penggunaan water flow sensor YF-S201 dengan Arduino UNO baik dari segi rangkaian maupun dari segi programnya. Pada contoh ini Arduino akan membaca pulsa keluaran dari modul sensor water flow dengan mode interupsi dimana setiap kali ada pulsa yang terdeteksi maka pulsa tersebut akan di-increment pada fungsi khusus sebelum masuk ke dalam bagian perhitungan. Output dari contoh proyek ini adalah nilai flow rate air dalam satuan liter per jam. Rangkaian yang diperlukan untuk contoh proyek ini ditunjukkan pada gambar 1.1 di bawah ini.
Gambar 1.1 Arduino dan Water Flow Sensor YF-S201 |
Hardware yang dibutuhkan :
1. Arduino UNO
2. Modul sensor water flow YF-S201
3. Kabel jumper
Keterangan Rangkaian dan Pemrograman :
1. Hubungkan pin VCC sensor YF-S201 dengan pin VCC 5V Arduino.
2. Hubungkan pin GND sensor YF-S201 dengan pin GND Arduino.
3. Hubungkan pin signal modul sensor MQ7 dengan pin digital 2 Arduino.
4. Setelah selesai membuat rangkaian, langkah selanjutnya adalah membuat sketch program pada software Arduino IDE. Sketch untuk contoh proyek ini ditunjukkan oleh contoh program prog1.1.
5. Compile sketch yang telah dibuat.
6. Hubungkan Arduino UNO dengan komputer menggunakan kabel USB dan upload ke Arduino UNO yang digunakan.
7. Buka serial monitor pada Arduino IDE sehingga nilai yang terbaca dapat terlihat.
Contoh Program : Prog1.1 Sensor YF-S201
Penjelasan :
1. Di bagian awal program terdapat deklarasi beberapa variabel. Variabel pulsa_sensor dideklarasikan dengan tipe volatile integer dan variabel literPerjam dideklarasikan dengan tipe unsigned integer. Variabel waktuAktual dan waktuLoop dideklarasikan dengan tipe unsigned long. Variabel liter dideklarasikan dengan tipe double. Pin digital yang digunakan untuk pembacaan pulsa dari sensor adalah pin digital 2 dengan alias nama pinFlowsensor.
2. Pada baris selanjutnya terdapat fungsi dengan nama cacahPulsa. Fungsi tersebut akan meng-increment variabel pulsa_sensor setiap fungsi ini dipanggil yang dikarenakan terjadinya interupsi.
3. Pada bagian void setup terdapat beberapa pengaturan terkair arah I / O, baud rate komunikasi serial, interupsi dan variabel.
4. pinFlowsensor diatur sebagai pin input dan diberi nilai awal HIGH.
5. Baud rate yang digunakan untuk komunikasi serial adalah 9600bps.
6. Pada baris selanjutnya terdapat perintah "attachInterrupt(0, cacahPulsa, RISING)". Perintah tersebut adalah perintah penggunaan interrupt 0 (pada pin digital 2), dimana fungsi cacahPulsa akan dipanggil ketika terpicu dengan kondisi RISING. Kondisi rising ini adalah kondisi yang akan dideteksi ketika nilai pin 2 berubah dari LOW ke HIGH.
7. Fungsi dari sei( ) adalah untuk mengaktifkan mode interupsi.
8. Selanjutnya terdapat inisialisasi variabel waktuAktual yang diisi oleh fungsi millis( ). Fungsi millis( ) ini akan mengembalikan waktu dalam bentuk microseconds dari mulai Arduino menjalankan program ini.
9. Pada baris terakhir dari void setup terdapat inisialisasi nilai dari variabel waktuLoop yang diisi dengan nilai variabel waktuAktual.
10. Variabel waktuLoop dan waktuAktual ini akan digunakan untuk membandingkan waktu yang akan dilakukan pada program ini. Perbandingan program masuk ke void loop.
11. Selanjutnya program masuk ke void loop.
12. Di awal void loop, program akan mengembalikan waktu saat itu dalam microsecond dengan menggunakan fungsi millis( ) ke variabel waktuAktual.
13. Selanjutnya, program masuk ke seleksi kondisi if dan akan membandingkan apakah waktuAktual lebih besar atau sama dengan dari waktuLoop + 1000, yang berarti berbeda 1 detik.
14. Jika tidak, program akan kembali mengisi variabel waktuAktual dengan fungsi millis( ).
15. Jika ya, maka program akan mengeksekusi statement yang ada di dalam percabangan if ini. Nilai dari variabel waktuLoop akan diisi nilai variabel waktuAktual.
16. Untuk mendapatkan nilai liter per jam dapat dilakukan dengan menggunakan dan memodifikasi rumus yang terulis di datasheet yaitu literPerjam = (pulsa_sensor * 60 / 7.5)
17. Pada baris selanjutnya variabel pulsa sensor akan direset ke 0.
18. Baris berikutnya variabel pulsa sensor akan mencetak string " L / hour " ke serial monitor Arduino.
0 Komentar