Cara Kontrol Pompa Air Pada Tangki Reservoir Dengan Arduino Dan Sensor Ultrasonic

Kali ini kita akan mencoba membuat kontrol  sederhana yang mungkin berguna bagi teman-teman. Kontrol Volume Air Tangki ini adalah suatu sistem otomatis yang mampu memonitor volume tangki, dan memerintah pompa untuk mengisi tangki saat volume air didalamnya tersisa sedikit. Nantinya kontrol ini bisa dikembangkan lebih jauh lagi sesuai dengan keperluan kita masing-masing.

1. Alat

  1. Arduino Uno
  2. LCD 16 x 02 (1602)
  3. I2C
  4. Relay 5V
  5. Sensor Ultrasonic Module HC SR04

2. Schematic and Wiring

Sensor Pin Arduino Sensor Pin Arduino
I2C (for LCD)   Relay  
Ground GND/eksternal Ground GND/eksternal
VCC 5V/eksternal VCC 5V/eksternal
SDA A4 IN 1 7
SCL A5    
Ultrasonic      
Ground GND/eksternal    
VCC 5V/eksternal    
Trig 11    
Echo 10    
  1. Tinggi tangki 250 cm atau 2,5 meter, dan lebar tangki 220 cm atau sama dengan 2,2 meter (berarti jari-jari adalah 1,1 meter)
  2. Relay akan menyala dan menghidupkan pompa jika tinggi air 50 cm dari dasar tangki. Atau bisa dikatakan 2 meter dari Sensor ultrasonic. Relay dan pompa akan mati jika tinggi air 2,4 meter atau 10 cm dari sensor.
  3. Semua angka diatas bisa disesuaikan, tergantung dengan skema kita masing-masing

3. Programming

  1. Pertama masukkan library untuk lcd liquidcrystal_I2c agar kita bisa mengakses I2C dan Lcd. download library di SINI
  2. saya sudah memberikan komen pada setiap perintah, jadi teman-teman gampang untuk memahaminya.
  3. Saya tetap memasukkan variabel seperi phi, rad (jari-jari), tinggi di void loop, meskipun sebenarnya bisa saja dimasukkan di rumus langsung. Itu bertujuan untuk memudahkan saya gonta-ganti nilai tersebut.
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

//masukkan variabel pin ultrasonic
#define triggerPin 11
#define echoPin 10

//batasan jarak sensor ultrasonic
int maxRange = 300;
int minRange = 0;

//masukkan variabel pin relay pada pin 8
int relayPin1 = 8;

//==================================================setup
void setup() {
// inisialisasi lcd
  lcd.init();
  //lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("--Volume Tanki--");
  lcd.setCursor(2,1);
  lcd.print("--Satuan M3--");
  delay(5000);
  
// inisialisasi lcd
  pinMode (triggerPin, OUTPUT);
  pinMode (echoPin, INPUT);

//inisialisasi Pin relay
  pinMode(relayPin1,OUTPUT);
}
//==================================================loop
void loop() {

Serial.begin(115200);
//variabek tinggi nantinya dimasukkan ke rumus volume
const double tinggi = 2.5; //meter

//lcd set up
lcd.clear();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("--Volume Tanki--");

//inisialisasi duration, distance, volume tanki
long duration,distance;
double volumeTanki; 

digitalWrite(triggerPin,HIGH);
delayMicroseconds(2);

digitalWrite(triggerPin,LOW);
delayMicroseconds(10);

digitalWrite(triggerPin,LOW);
duration = pulseIn(echoPin,HIGH);
distance = duration/58.2;

//rumus volume tanki, pake titik untuk mengganti koma
volumeTanki = (((3.79*(tinggi-(distance/100))));

//notifikasi jika sensor melebihi batas jarak
if (distance >= maxRange || distance <= minRange)
{
//tampilkan di lcd jika diluar jangkauan
lcd.setCursor(0,1);
lcd.print("Vol: ");
lcd.print("---");

//tampilkan diserial monitor jika diluar jangkauan
Serial.println("out of range");
delay(3000);
}
else
{
//tampilkan di lcd
lcd.setCursor(0,1);
lcd.print("Vol: ");
lcd.print(volumeTanki);
lcd.print("  m3");

//tampilkan diserial monitor
Serial.print("Volume: ");
Serial.print(volumeTanki);
Serial.print("m3");
Serial.print(",");
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println("cm");
delay(1000);
}

//hidupkan relay saat kondisi sensor membaca jarak 200 cm
if (distance>=200)
{
digitalWrite(relayPin1,LOW);
}
//matikan relay saat kondisi sensor membaca jarak 10 cm
if (distance<=10)
{
  digitalWrite(relayPin1,HIGH);
}
}

4. Hasil dan Catatan

  1. Pada program diatas tetap memanfaatkan Serial Monitor, meskipun hasil ditampilkan juga dilayar lcd.
  2. Gunakan sumber energi dari luar (eksternal), jangan mengambil dari power arduino sehingga alat bekerja dengan baik.
  3. Sebelum diaplikasikan dengan nilai-nilai yang bersar mungkin dicoba dulu di tangki yang kecil seperi Drum/ ember.

Seperti tulisan awal diatas, sebaiknya kontrol ini dikembangkan bagaimana lagi ya? mungkin teman-teman ada Ide lain dan selamat mencoba.