- Komponen
- Modul Sensor Ultrasonik
- Cara Kerja Pengontrol Level Air Otomatis
- Diagram Sirkuit dan Penjelasannya
- Pemrograman
Dalam proyek indikator dan pengontrol ketinggian air otomatis berbasis Arduino ini kita akan mengukur ketinggian air dengan menggunakan sensor ultrasonik. Prinsip dasar pengukuran jarak ultrasonik didasarkan pada ECHO. Ketika gelombang suara ditransmisikan di lingkungan maka mereka kembali ke asalnya sebagai ECHO setelah menabrak rintangan apa pun. Jadi kita harus menghitung hanya waktu perjalanannya dari kedua suara berarti waktu keluar dan waktu kembali ke asal setelah menabrak rintangan apa pun. Dan setelah beberapa perhitungan kita bisa mendapatkan hasil yaitu jarak. Konsep ini digunakan dalam proyek pengontrol air kami di mana pompa motor air secara otomatis dihidupkan ketika level air di tangki menjadi rendah. Anda juga dapat memeriksa rangkaian indikator ketinggian air sederhana ini untuk versi yang lebih sederhana dari proyek ini.
Komponen
- Arduino Uno
- Modul Sensor Ultrasonik
- LCD 16x2
- Relai 6 Volt
- ULN2003
- 7806
- PVT
- Kawat tembaga
- Baterai 9 volt atau adaptor 12 Volt
- Menghubungkan kabel
Modul Sensor Ultrasonik
Sensor ultrasonik HC-SR04 digunakan untuk mengukur jarak dalam rentang 2cm-400cm dengan akurasi 3mm. Modul sensor terdiri dari pemancar ultrasonik, penerima dan rangkaian kendali.
Modul sensor ultrasonik bekerja pada fenomena alam suara ECHO. Pulsa dikirim sekitar 10us untuk memicu modul. Setelah itu modul secara otomatis mengirimkan 8 siklus sinyal ultrasound 40 KHz dan memeriksa gema. Sinyal setelah menyerang dengan penghalang kembali dan ditangkap oleh penerima. Jadi jarak hambatan dari sensor hanya dihitung dengan rumus yang diberikan sebagai
Jarak = (waktu x kecepatan) / 2.
Di sini kita telah membagi hasil kali kecepatan dan waktu dengan 2 karena waktu adalah total waktu yang dibutuhkan untuk mencapai rintangan dan kembali. Dengan demikian waktu untuk mencapai rintangan hanya setengah dari total waktu yang dibutuhkan.
Cara Kerja Pengontrol Level Air Otomatis
Pengerjaan proyek ini sangat sederhana kami telah menggunakan modul sensor Ultrasonic yang mengirimkan gelombang suara di tangki air dan mendeteksi pantulan gelombang suara yaitu ECHO. Pertama-tama kita perlu memicu modul sensor ultrasonik untuk mengirimkan sinyal dengan menggunakan Arduino dan kemudian menunggu untuk menerima ECHO. Arduino membaca waktu antara memicu dan menerima ECHO. Kita tahu bahwa kecepatan suara sekitar 340 m / s. jadi kita bisa menghitung jarak dengan menggunakan rumus yang diberikan:
Jarak = (waktu tempuh / 2) * kecepatan suara
Dimana kecepatan suara sekitar 340m per detik.
Dengan menggunakan metode ini didapatkan jarak dari sensor ke permukaan air. Setelah itu kita perlu menghitung ketinggian air.
Sekarang kita perlu menghitung panjang total tangki air. Seperti yang kita ketahui panjang tangki air maka kita dapat menghitung ketinggian air dengan mengurangi jarak yang dihasilkan dari ultrasonik dari total panjang tangki. Dan kita akan mendapatkan jarak ketinggian air. Sekarang kita dapat mengubah ketinggian air ini menjadi persentase air, dan menampilkannya di LCD. Pengerjaan proyek indikator ketinggian air secara lengkap ditunjukkan pada diagram blok di bawah ini.
Diagram Sirkuit dan Penjelasannya
Seperti yang ditunjukkan pada rangkaian pengontrol ketinggian air yang diberikan di bawah ini, pin "pemicu" dan "gema" modul sensor ultrasonik terhubung langsung ke pin 10 dan 11 arduino. LCD 16x2 dihubungkan dengan arduino dalam mode 4-bit. Pin kontrol RS, RW dan En terhubung langsung ke arduino pin 7, GND dan 6. Dan data pin D4-D7 dihubungkan ke 5, 4, 3 dan 2 arduino, dan buzzer terhubung pada pin 12. Relai 6 Volt terhubung juga dihubungkan pada pin 8 arduino melalui ULN2003 untuk menghidupkan atau mematikan pompa motor air. Pengatur tegangan 7805 juga digunakan untuk menyediakan 5 volt untuk relai dan sirkuit yang tersisa.
Di sirkuit ini modul sensor ultrasonik ditempatkan di bagian atas ember (tangki air) untuk demonstrasi. Modul sensor ini akan membaca jarak antara modul sensor dan permukaan air, dan akan menunjukkan jarak pada layar LCD dengan pesan “Water Space in Tank is:”. Ini berarti kami di sini menunjukkan tempat kosong jarak atau volume air, bukan ketinggian air. Karena fungsi ini kita dapat menggunakan sistem ini di tangki air mana pun. Ketika ketinggian air kosong mencapai pada jarak sekitar 30 cm maka Arduino menyalakan pompa air dengan menggerakkan relay. Dan sekarang LCD akan menampilkan "LOW Water Level" "Motor dihidupkan", dan LED status Relay akan mulai menyala
Sekarang jika ruang kosong mencapai jarak sekitar 12 cm arduino OFF relay dan LCD akan menampilkan “Tank is full” “Motor Turned OFF”. Buzzer juga berbunyi bip beberapa saat dan LED status relai akan dimatikan.
Pemrograman
Untuk memprogram Arduino untuk pengontrol ketinggian air, pertama-tama kita tentukan semua pin yang akan kita gunakan dalam proyek untuk menghubungkan perangkat eksternal seperti relay, LCD, buzzer dll.
# Tentukan pemicu 10 # Tentukan echo 11 # Tentukan motor 8 # Tentukan buzzer 12
Kemudian kami menginisialisasi semua perangkat yang digunakan dalam proyek.
lcd.begin (16,2); pinMode (pemicu, OUTPUT); pinMode (echo, INPUT); PinMode (motor, OUTPUT); pinMode (buzzer, OUTPUT); lcd.print ("Ketinggian Air"); lcd.setCursor (0,1); lcd.print ("Indikator"); penundaan (2000);
Sekarang inisialisasi modul sensor ultrasonik dan baca waktu pengiriman dan penerimaan gelombang ultrasonik atau suara dengan menggunakan pulseIn (pin). Kemudian lakukan perhitungan dan tampilkan hasilnya pada LCD 16x2 dengan menggunakan fungsi yang sesuai.
digitalWrite (pemicu, TINGGI); delayMicroseconds (10); digitalWrite (trigger, LOW); delayMicroseconds (2); waktu = pulseIn (echo, HIGH); jarak = waktu * 340/20000; lcd.clear (); lcd.print ("Ruang Air Masuk"); lcd.setCursor (0,1); lcd.print ("Tangki adalah:"); lcd.print (jarak); lcd.print ("Cm");
Setelah itu kami memeriksa kondisi apakah tangki air penuh atau level air RENDAH, dan mengambil tindakan yang sesuai.
if (jarak <12 && temp == 0) {digitalWrite (motor, LOW); digitalWrite (buzzer, HIGH); lcd.clear (); lcd.print ("Tangki Air Penuh"); lcd.setCursor (0,1); lcd.print ("Motor Dimatikan"); penundaan (2000); digitalWrite (buzzer, LOW); penundaan (3000); suhu = 1; } else if (jarak <12 && temp == 1) {digitalWrite (motor, LOW); lcd.clear (); lcd.print ("Tangki Air Penuh"); lcd.setCursor (0,1); lcd.print ("Motor Dimatikan"); penundaan (5000); }