
Mengontrol Suhu dengan Heater 220V Menggunakan Arduino, Relay, PID, LCD 16×2, dan Keypad 4×4
Pada proyek kali ini, kita akan membuat sistem pengontrol suhu otomatis menggunakan Arduino yang mengatur pemanas listrik (heater 220V) melalui relay, dengan kendali PID (Proportional-Integral-Derivative) untuk menjaga kestabilan suhu. Sistem ini dilengkapi LCD 16×2 untuk menampilkan suhu dan status, serta keypad 4×4 sebagai antarmuka menu pengaturan suhu.
1. Komponen yang Dibutuhkan
-
Arduino Uno / Nano
-
Relay module 1 channel (untuk 220V heater)
-
Sensor suhu (misalnya: DS18B20 atau NTC 10K + rangkaian ADC)
-
Heater 220V (misalnya solder element atau pemanas air mini)
-
LCD 16×2 (dengan modul I2C)
-
Keypad 4×4
-
Library PID Arduino (
PID_v1.h) -
Library Keypad (
Keypad.h) -
Library LCD I2C (
LiquidCrystal_I2C.h) -
Power supply eksternal dan kabel jumper
“Peringatan: Heater 220V berbahaya! Pastikan Anda memahami instalasi listrik dan menjaga keamanan saat eksperimen.”
2. Diagram Blok Sistem
3. Prinsip Kerja Sistem
-
Arduino membaca suhu dari sensor (misalnya DS18B20).
-
User mengatur suhu target melalui keypad 4×4.
-
Sistem mengontrol pemanas melalui PID Controller.
-
Output PID menentukan kapan relay aktif atau tidak.
-
LCD menampilkan suhu saat ini dan suhu target.
4. Skema Koneksi
-
Keypad: D2–D9 (menyesuaikan pin)
-
Relay: D10
-
Sensor DS18B20: D11 (one-wire)
-
LCD I2C: SDA (A4), SCL (A5)
-
Power Supply: Arduino + relay terhubung ke 5V
5. Contoh Kode Program Arduino
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <PID_v1.h>
// Inisialisasi sensor suhu
#define ONE_WIRE_BUS 11
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Inisialisasi LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Keypad 4×4
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{‘1′,’2′,’3′,’A’},
{‘4′,’5′,’6′,’B’},
{‘7′,’8′,’9′,’C’},
{‘*’,’0′,’#’,’D’}
};
byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8, 9};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Relay
#define RELAY_PIN 10
// PID Variables
double Setpoint, Input, Output;
double Kp = 2, Ki = 5, Kd = 1; // Sesuaikan dengan sistem nyata
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
// Menu input suhu
String tempInput = “”;
void setup() {
Serial.begin(9600);
sensors.begin();
pinMode(RELAY_PIN, OUTPUT);
lcd.init(); lcd.backlight();
Setpoint = 30; // default suhu target
myPID.SetMode(AUTOMATIC);
myPID.SetOutputLimits(0, 255);
}
void loop() {
// Baca suhu
sensors.requestTemperatures();
Input = sensors.getTempCByIndex(0);
// Proses PID
myPID.Compute();
// Kendali relay berdasarkan PID output
if (Output > 100) {
digitalWrite(RELAY_PIN, HIGH); // Hidupkan heater
} else {
digitalWrite(RELAY_PIN, LOW); // Matikan heater
}
// Tampilkan di LCD
lcd.setCursor(0, 0);
lcd.print(“Suhu: “);
lcd.print(Input, 1);
lcd.print((char)223); // simbol derajat
lcd.print(“C “);
lcd.setCursor(0, 1);
lcd.print(“Set: “);
lcd.print(Setpoint, 1);
lcd.print((char)223);
lcd.print(“C “);
// Input suhu target dari keypad
char key = keypad.getKey();
if (key) {
if (key >= ‘0’ && key <= ‘9’) {
tempInput += key;
lcd.setCursor(10, 1);
lcd.print(tempInput + ” “);
} else if (key == ‘#’) {
Setpoint = tempInput.toFloat();
tempInput = “”;
} else if (key == ‘*’) {
tempInput = “”;
}
}
delay(500); // delay pembacaan
}
6. Penjelasan Kode
-
PID akan menyesuaikan output berdasarkan selisih suhu aktual dan target.
-
Output PID dikonversi secara kasar sebagai kondisi ON/OFF relay.
-
Keypad 4×4 dipakai untuk memasukkan suhu target, misalnya tekan
2 5 #untuk set suhu ke 25°C. -
*digunakan untuk menghapus input jika salah ketik.
7. Peningkatan Sistem (Opsional)
-
Tambahkan EEPROM untuk menyimpan suhu target saat restart.
-
Gunakan modul SSR (Solid State Relay) untuk pengaturan lebih halus.
-
Tambahkan fitur autotune PID untuk akurasi lebih baik.
-
Tambahkan buzzer sebagai alarm suhu terlalu tinggi.
8. Penutup
Dengan proyek ini, Anda belajar bagaimana membuat sistem kontrol suhu otomatis dengan logika PID, pengendali keypad, dan penampil LCD. Ini cocok untuk aplikasi seperti inkubator, pemanas ruangan, atau proses industri kecil.





