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

No Alat Keterangan
1 Arduino Uno 1 buah
2 LCD 16×2 Mode 4-bit
3 Potensiometer Sensor level
4 Push Button UP Setting setpoint
5 Push Button DOWN Setting setpoint
6 LED / Relay Pompa
7 LED / Buzzer Alarm
8 Resistor & Kabel Secukupnya
9 Proteus / Arduino IDE Simulasi & real

5️ Konfigurasi Pin Arduino

🔹 Input

Komponen Pin
Sensor Level A0
Button UP D2
Button DOWN D3

WIRING SENSOR LEVEL (POTENSIOMETER)

Potensiometer Arduino
Kaki 1 5V
Kaki Tengah (wiper) A0
Kaki 3 GND

WIRING PUSH BUTTON (UP & DOWN)

Menggunakan INPUT_PULLUP (DISARANKAN)

Tombol Arduino Koneksi
UP D2 ke GND
DOWN D3 ke GND

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

 

🔹 Output

Komponen Pin
Pompa D8
Alarm D9

🚰 Pompa (LED / Relay)

Komponen Arduino
LED Anoda / Relay IN D8
LED Katoda GND via R 330Ω

📌 Label:

Pompa pengisian tangki

🚨 Alarm (LED / Buzzer)

Komponen Arduino
LED/Buzzer + D9
LED/Buzzer − GND

📌 Label:

Alarm level tinggi

 

🔹 LCD 16×2 (4-bit)

LCD Arduino
RS D12
E D11
D4 D5
D5 D4
D6 D7
D7 D6

6️ Alamat EEPROM

Data Alamat
Setpoint Level 0

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

Kondisi Output
Level < Setpoint Pompa ON
Level ≥ Setpoint Pompa OFF
Level tinggi Alarm ON
Power OFF Data 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

 

 

Related Articles