Anda di halaman 1dari 5

Pengisi galon otomatis menggunakan

arduino
Depot pengisian air minum menggunakan galon sebagai tempat air. Tahap-tahap pengisian
yang lazim di lakukan adalah: pembersihan, pengisian, pemasangan tutup dan perbersihan.

Dalam artikel ini hanya melakukan otomatisasi pada tahap pengisian, cara kerjanya sebagai
berikut :

1. Saat mulai, sensor ir/obstacle mendeteksi keberadaan galon diatas tempat pengisian
galon. Jika ada galon maka sistem menginformasikan agar galon diambil terlebih
dahulu.
2. Sistem menunggu hingga galon kosong ditempatkan pada posisi pengisian galon.
3. Sistem akan menghidupkan pompa air, kemudian menghidupkan solenoid.
4. Sensor flow meter akan menghitung volume ait yang dialirkan kedalam galon.
5. Jika volume telah mencukupi maka solenoid dan pompa dimatikan.
6. Jika selama pengisian galon, posisi galon bergeser atau diambil, maka solenoid dan
pompa akan dimatikan.
7. Sistem akan menunggu galon diambil.
8. Selesai.
Skema pengisian galon otomatis berbasis arduino:
Komponen yang digunakan dalam perancangan sistem pengisian galon arduino:

1. Arduino uno
2. LCD 16×2 lcd backpack
3. sensor obstacle
4. flow sensor
5. solenoid
6. pompa air
7. relay 2 channel
Program pengisi galon menggunakan arduino:

#define kapasitasGalon 19//liter


#define pulsaPerLiter 450//sesuai spesifikasi sensor water flow

#define pinWaterFlow 2
#define pinSensorIR A0
#define pinPompa 7
#define pinSelenoid 6

#define IRAktif LOW


#define relayAktif LOW

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <util/atomic.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2);


volatile uint16_t pulseCount;

void setup() {
digitalWrite(pinPompa, !relayAktif);
digitalWrite(pinSelenoid, !relayAktif);
pinMode(pinWaterFlow, INPUT);
pinMode(pinSensorIR, INPUT);
pinMode(pinPompa, OUTPUT);
pinMode(pinSelenoid, OUTPUT);

Serial.begin(9600);
Serial.println(F("Pengisi galon otomatis"));
Serial.println(F("https://www.semesin.com/project"));

Wire.begin();
Wire.beginTransmission(0x3F);
if (Wire.endTransmission())
{
lcd = LiquidCrystal_I2C(0x27, 16, 2);
}
lcd.begin();

lcd.backlight();
lcd.print("Pengisi galon");
lcd.setCursor(0, 1);
lcd.print("Semesin.com");
delay(3000);
lcd.setCursor(0, 0);
lcd.print("ambil Galon ");
while (digitalRead(pinSensorIR) == IRAktif); //deteksi awal : jika ada galon ko

attachInterrupt(digitalPinToInterrupt(pinWaterFlow), pulseCount
}

void loop() {
lcd.setCursor(0, 0);
lcd.print("Letakkan Galon ");
while (digitalRead(pinSensorIR) == !IRAktif);

delay(1000);//memastikan galon diletakkan

if (digitalRead(pinSensorIR) == IRAktif)
{
lcd.setCursor(0, 0);
lcd.print("Mengisi Galon...");

pulseCount = 0;
digitalWrite(pinPompa, relayAktif);
delay(1000);
digitalWrite(pinSelenoid, relayAktif);

lcd.setCursor(0, 1);
lcd.print(" ");
uint16_t jumlahPulsa;

while ((jumlahPulsa < kapasitasGalon * pulsaPerLiter) && (digitalRead(pi


{
ATOMIC_BLOCK(ATOMIC_FORCEON)
{
jumlahPulsa = pulseCount;
}

lcd.setCursor(0, 1);
lcd.print((1.0 * jumlahPulsa / pulsaPerLiter));
lcd.print(" liter");
}

digitalWrite(pinSelenoid, !relayAktif);
delay(100);
digitalWrite(pinPompa, !relayAktif);

lcd.setCursor(0, 0);
if (jumlahPulsa >= kapasitasGalon * pulsaPerLiter)
{
lcd.print("Galon penuh ");
}
else if (digitalRead(pinSensorIR) != IRAktif)
{
lcd.print("Galon tidak ada ");
}

delay(1000);
lcd.setCursor(0, 0);
lcd.print("silahkan ambil ");
while (digitalRead(pinSensorIR) == IRAktif);
delay(1000);//memastikan galon sudah diambil
while (digitalRead(pinSensorIR) == IRAktif);
}
}

void pulseCounter()
{
pulseCount++;
}

Anda mungkin juga menyukai