Pemanfaatan EEPROM untuk Sistem Kontrol Level Tangki dengan LCD 16×2

1️ Tujuan Praktikum

Setelah mengikuti praktikum ini, mahasiswa mampu:

  1. Menggunakan sensor analog pada Arduino
  2. Mengendalikan aktuator (pompa & alarm)
  3. Menyimpan parameter kontrol ke EEPROM
  4. Menampilkan data proses pada LCD 16×2
  5. Membuat sistem kontrol yang tetap bekerja setelah power OFF
  6. Memahami konsep retentive memory seperti pada PLC

2️ Dasar Teori Singkat

🔹 EEPROM Arduino

EEPROM (Electrically Erasable Programmable Read-Only Memory) adalah memori non-volatile yang digunakan untuk menyimpan data penting seperti:

  • setpoint
  • parameter alarm
  • nilai kalibrasi

Data EEPROM tidak hilang saat catu daya mati.

🔹 Sistem Kontrol Level Tangki

Sistem kontrol industri umumnya terdiri dari:

  • Sensor → membaca kondisi proses
  • Controller → memproses logika
  • Actuator → melakukan aksi

📌 Pada praktikum ini:

  • Arduino berperan sebagai controller
  • Potensiometer sebagai sensor level
  • Pompa & alarm sebagai aktuator

3️ Studi Kasus (Aplikatif & Industrial)

Sebuah tangki penyimpanan cairan memiliki:

  • Sensor level
  • Pompa pengisian
  • Alarm level tinggi

Kebutuhan sistem:

  1. Pompa ON jika level < setpoint
  2. Pompa OFF jika level ≥ setpoint
  3. Alarm aktif jika level terlalu tinggi
  4. Setpoint bisa diubah operator
  5. Setpoint tersimpan di EEPROM
  6. Level & setpoint ditampilkan di LCD 16×2

4️ Alat dan Bahan

NoAlatKeterangan
1Arduino Uno1 buah
2LCD 16×2Mode 4-bit
3PotensiometerSensor level
4Push Button UPSetting setpoint
5Push Button DOWNSetting setpoint
6LED / RelayPompa
7LED / BuzzerAlarm
8Resistor & KabelSecukupnya
9Proteus / Arduino IDESimulasi & real

5️ Konfigurasi Pin Arduino

🔹 Input

KomponenPin
Sensor LevelA0
Button UPD2
Button DOWND3

WIRING SENSOR LEVEL (POTENSIOMETER)

PotensiometerArduino
Kaki 15V
Kaki Tengah (wiper)A0
Kaki 3GND

WIRING PUSH BUTTON (UP & DOWN)

Menggunakan INPUT_PULLUP (DISARANKAN)

TombolArduinoKoneksi
UPD2ke GND
DOWND3ke GND

📌 Tidak perlu resistor eksternal
📌 Aktif LOW (saat ditekan = 0)

 

🔹 Output

KomponenPin
PompaD8
AlarmD9

🚰 Pompa (LED / Relay)

KomponenArduino
LED Anoda / Relay IND8
LED KatodaGND via R 330Ω

📌 Label:

Pompa pengisian tangki

🚨 Alarm (LED / Buzzer)

KomponenArduino
LED/Buzzer +D9
LED/Buzzer −GND

📌 Label:

Alarm level tinggi

 

🔹 LCD 16×2 (4-bit)

LCDArduino
RSD12
ED11
D4D5
D5D4
D6D7
D7D6

6️ Alamat EEPROM

DataAlamat
Setpoint Level0

7️ Cara Kerja Sistem

  1. Arduino membaca nilai sensor level
  2. Arduino membaca setpoint dari EEPROM
  3. Level & setpoint ditampilkan di LCD
  4. Jika level < setpoint → pompa ON
  5. Jika level ≥ setpoint → pompa OFF
  6. Jika level > setpoint + margin → alarm ON
  7. Setpoint dapat diubah menggunakan tombol
  8. Perubahan setpoint langsung disimpan ke EEPROM

8️ Diagram Alur Sistem

Sensor Level

Arduino + EEPROM

Perbandingan Level vs Setpoint

Pompa ON/OFF & Alarm

LCD 16×2

9️ Program Arduino (LCD + EEPROM)

#include <EEPROM.h>

#include <LiquidCrystal.h>




#define BTN_UP 2

#define BTN_DOWN 3

#define POMPA 8

#define ALARM 9

#define SENSOR A0




LiquidCrystal lcd(12,11,5,4,7,6);




int setpoint;

int level;




void setup() {

  pinMode(BTN_UP, INPUT_PULLUP);

  pinMode(BTN_DOWN, INPUT_PULLUP);

  pinMode(POMPA, OUTPUT);

  pinMode(ALARM, OUTPUT);




  lcd.begin(16,2);

  Serial.begin(9600);




  EEPROM.get(0, setpoint);

  if(setpoint < 100 || setpoint > 900){

    setpoint = 500;

    EEPROM.put(0, setpoint);

  }




  lcd.setCursor(0,0);

  lcd.print("Level Control");

  delay(1500);

  lcd.clear();

}




void loop() {

  level = analogRead(SENSOR);




  // Tombol UP

  if(digitalRead(BTN_UP) == LOW){

    setpoint += 10;

    EEPROM.put(0, setpoint);

    delay(300);

  }




  // Tombol DOWN

  if(digitalRead(BTN_DOWN) == LOW){

    setpoint -= 10;

    EEPROM.put(0, setpoint);

    delay(300);

  }




  // Kontrol Pompa

  digitalWrite(POMPA, level < setpoint);




  // Alarm

  digitalWrite(ALARM, level > setpoint + 50);




  // LCD Display

  lcd.setCursor(0,0);

  lcd.print("Lvl:");

  lcd.print(level);

  lcd.print("     ");




  lcd.setCursor(0,1);

  lcd.print("Set:");

  lcd.print(setpoint);

  lcd.print("     ");




  delay(500);

}

🔟 Prosedur Praktikum

  1. Simulasi Proteus
  1. Rangkai Arduino, LCD, potensiometer, LED
  2. Load file HEX hasil compile Arduino
  3. Jalankan simulasi
  4. Ubah potensiometer → level berubah
  5. Reset simulasi → setpoint tetap tersimpan
  1. Arduino Asli
  1. Upload program
  2. Putar potensiometer
  3. Tekan tombol UP/DOWN
  4. Cabut dan pasang kembali power
  5. Amati data tetap tersimpan

1️1️⃣ Hasil yang Diharapkan

KondisiOutput
Level < SetpointPompa ON
Level ≥ SetpointPompa OFF
Level tinggiAlarm ON
Power OFFData EEPROM tetap

1️2️⃣ Analisis & Pembahasan

  • EEPROM berfungsi sebagai memori permanen
  • LCD memudahkan monitoring proses
  • Sistem menyerupai kontrol level PLC
  • Cocok untuk aplikasi industri skala kecil

1️3️⃣ Pertanyaan Diskusi

  1. Mengapa EEPROM tidak cocok untuk logging cepat?
  2. Apa dampak write EEPROM berulang?
  3. Bandingkan EEPROM dengan FRAM & SD Card
  4. Bagaimana sistem ini diimplementasikan di PLC?

1️4️⃣ Kesimpulan

  1. EEPROM efektif untuk menyimpan parameter kontrol
  2. Sistem tetap bekerja normal setelah power OFF
  3. LCD meningkatkan kejelasan monitoring
  4. Praktikum berhasil mensimulasikan sistem industri nyata

 

 

Baca juga:
Training ESP32 Berbasis IoT – Pelatihan Praktis & Bersertifikat

Baca juga: Ingin Jadi Ahli IoT & Otomasi? Semua Bisa Dimulai dari Arduino! untuk memahami roadmap lengkap belajar Arduino dari dasar hingga proyek IoT.

Related Articles

Chat Langsung dengan Kami
Staff bisaioti 1 — +62 823-3306-4821 E-Course, Offline Course, Hardware & Teknis IoT/OT Staff bisaioti 2 — +62 823-3306-4821 Training Korporat & Toko Hardware