Pendahuluan
Water Flow Sensor YF-B6 sangat berguna dalam proyek-proyek yang memerlukan pemantauan aliran air, seperti dalam sistem irigasi atau proyek pemantauan konsumsi air.Dalam proyek ini, kita akan menjelaskan langkah-langkah untuk mengakses Water Flow Sensor YF-B6 menggunakan ESP32 atau Arduino, dengan menampilkan hasil pengukuran pada LCD 20×4 yang dihubungkan melalui interface I2C.
Komponen Yang Digunakan
- ESP32 Dev Board – Beli Disini
- Water Flow Sensor YF-B6 – Beli Disini
- LCD 20×4 + I2C – Beli Disini
- Kabel Jumper- Beli Disini
- Breadboard – Beli Disini
Skema Sistem
Konfigurasi pinout :
- ESP32 -> Water Flow Sensor
- VIN -> Kabel Merah
- GND -> Kabel Hitam
- D34 -> Kabel Kuning
- ESP32 -> LCD 20×4 I2C Interface
- GND -> GND LCD
- VIN -> VCC LCD
- D21 -> SDA LCD
- D22 -> SCL LCD
Power untuk Water Flow Sensor dan LCD I2C disini memerlukan tegangan kerja 5v, untuk mendapatkan tegangan tersebut ESP32 Board jenis yang kita pada percobaan kali ini ada pada pin VIN , Untuk sinyal yang di hasilkan Water Flow Meter kita hubungkan pada pin D34 sedangkan SDA dan SCL pada LCD kita hubungkan pada D21 dan D22 ESP32
Program ESP32
#include <LiquidCrystal_I2C.h> #define flowSensorPin 34 // Pin input untuk sensor flow meter LiquidCrystal_I2C lcd(0x27, 20, 4); volatile int pulseCount = 0; // Variabel untuk menghitung pulse float flowRate = 0; // Variabel untuk menyimpan debit air float volume = 0; // Total volume air dalam liter unsigned long previousMillis = 0; // Waktu sebelumnya untuk perhitungan interval const unsigned long interval = 1000; // Interval pembacaan dalam ms (1 detik) int PPL = 572; // Pulse per Liter (sesuaikan setelah kalibrasi) bool calibrate = 0; void IRAM_ATTR pulseCounter() { pulseCount++; // Increment pulse count setiap ada interrupt } void setup() { Serial.begin(115200); lcd.init(); lcd.backlight(); pinMode(flowSensorPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(flowSensorPin), pulseCounter, FALLING); lcd.setCursor(0, 0); lcd.print("Water Meter"); } void loop() { if (!calibrate) { flow_meter(); } } void flow_meter() { // Serial.print("Flow Meter Begin"); unsigned long currentMillis = millis(); // Hitung flow rate setiap 1 detik if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; if (pulseCount != 0) { // Hitung flow rate (liter per menit) flowRate = ((float)pulseCount / PPL) * 60.0; // Hitung volume total (liter) volume += (float)pulseCount / PPL; // Tampilkan hasil ke serial monitor Serial.print("\nPulse : "); Serial.print(pulseCount); Serial.print(" Flow Rate : "); Serial.print(flowRate); Serial.print("L/M"); Serial.print("Volume : "); Serial.print(volume); Serial.println("L"); lcd.setCursor(0, 1); lcd.print("Rate :"); lcd.print(flowRate); lcd.print("L/M"); lcd.setCursor(0, 2); lcd.print("Volume :"); lcd.print(volume * 1000); lcd.print("mL"); // Reset pulse count untuk interval berikutnya pulseCount = 0; }else{ Serial.println("0 L/M (No Pulse)"); lcd.setCursor(0, 1); lcd.print("Rate :"); lcd.print(0); lcd.print("L/M "); } } }
Pengujian
Setelah program berhasil ter-upload makan LCD akan menampilkan “Water Meter” kemudian terdapat rate yang masih 0 Liter/menit karena air belum melwati sensor Water Flow Sensor
Setelah air sudah melewati Water Flow Sensor maka data Rate akan muncul dalam satuan Liter/menit dan volume air dalam satuan liter seperti pada gambar di bawah ini
Kesimpulan
Dengan mengikuti langkah-langkah di atas, kamu dapat mengakses Water Flow Sensor YF-B6 menggunakan ESP32 atau Arduino dan menampilkan hasilnya pada LCD 20×4 dengan interface I2C. Proyek ini dapat berguna dalam berbagai aplikasi, seperti monitoring konsumsi air atau sistem irigasi otomatis. Kamu dapat mengembangkan proyek ini lebih lanjut dengan menambahkan fitur-fitur tambahan sesuai kebutuhan atau juga untuk di implementasikan untuk project Internet of Things atau sistem otomatis lainnya.
Sebagai contoh mungkin kamu bisa implementasikan project ini sistem pengisian galon atau botol otomatis dengan di tambahkan nya solenoid valve yang dapat di atur hidup dan matinya berdasarkan parameter volume air yang telah di tentukan sebelumnya.
Peletakan solenoid valve (klep solenoid) di sistem pengisian air otomatis bisa mempengaruhi kinerja dan akurasi dari water flow meter. Pertimbangan utama dalam menentukan posisi solenoid valve adalah untuk memastikan bahwa aliran air yang diukur oleh flow meter sesuai dengan kebutuhan dan tidak terganggu oleh kondisi di sekitarnya.
Umumnya, disarankan untuk meletakkan solenoid valve setelah water flow meter. Alasan utama adalah agar water flow meter dapat mengukur aliran air dengan akurat tanpa terganggu oleh perubahan tekanan atau hambatan yang mungkin ditimbulkan oleh solenoid valve.
Jadi, urutannya dapat diatur sebagai berikut:
- Water source (sumber air)
- Water flow meter
- Solenoid valve
Dengan menempatkan solenoid valve setelah water flow meter, Kamu dapat memastikan bahwa data yang diukur oleh flow meter mencerminkan jumlah air yang sebenarnya melewati sistem. Ini akan membantu dalam mengontrol dan mengoptimalkan pengisian air otomatis sesuai dengan kebutuhan yang diukur oleh flow meter.
bg izin nanya, untuk nilai 0.004 itu nilai pergitungan pulsenya kan bg, jadi untuk kalibrasi sensor ini bagaimana cara atau perbandingannya ya bg ? kenapa bisa dapat sama abg 0.004 itu ?
Dapat refrensi lain, ,ungkin bisa menjawab bang, soalnya saya juga masih bingung. -Misalkan Anda mencatat N pulsa dalam T detik dan volume air yang terukur adalah V liter.
Volume per pulsa (volume_per_pulse) dapat dihitung dengan rumus:
volume_per_pulse
=
𝑉
𝑁
volume_per_pulse=
N
V
Contoh:
Jika Anda mengukur 1 liter air (V = 1) dan sensor menghasilkan 250 pulsa (N = 250), maka:
volume_per_pulse
=
1
250
=
0.004
liter per pulsa
volume_per_pulse=
250
1
=0.004 liter per pulsa
ini harus di ukur manual masing masing flow meter nya saat ada pulse itu sama dengan berapa liter kak
mau tanya kak, untuk skema sitemnya pake aplikasi apa ya? wokwi atau fritzing ?
pakai frizing kak
ini jika kita memakai program yg kaka berikan, apakah harus kalibrasi dulu ya kak?
iya betul kak