● online
- Kapton Tape Polymide Film 20mm Polimida 20 mm Isol....
- ESP32 ESP-32 Wireless Module ESP32-S ESP-WROOM-32 ....
- Modul Sensor Tegangan AC Bolak balik 220V Listrik ....
- MP3 TF 16P Alternatif DFPlayer mini MP3 Player Ard....
- Resistor 220 Ohm 220R Ohm 220Ohm 1/4W 1% Metal fil....
- LCD CHARACTER 16X2 1602 5V GREEN HIJAU BACKLIGHT M....
- Jasa Cetak PCB....
- Kabel Jumper 10cm Dupont Pelangi 10 cm Female to F....
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
- Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
Stabil Terus! Cara Bikin Kontrol Kelembapan Ruangan Otomatis Pakai Arduino dan PID
Halo, Sobat IoT! Pernahkah kamu merasa ruangan di rumah tiba-tiba terasa lembap sampai tembok berjamur, atau malah sebaliknya, udara jadi kering banget sampai bikin kulit gatal? Di iklim tropis seperti Indonesia, menjaga kelembapan ideal itu gampang-gampang susah. Masalahnya, sistem kontrol biasa yang cuma pakai “nyala-mati” (On/Off) sering kali bikin kelembapan naik-turun nggak karuan.

Nah, solusinya adalah menggunakan sistem kendali otomatis berbasis PID Diskrit. Tenang, jangan pusing dulu sama namanya! Intinya, kita akan membuat otak elektronik yang bisa berpikir halus untuk menjaga kelembapan ruangan tetap stabil di angka ideal secara otomatis. Yuk, kita bedah cara rakitnya!
Mengenal Komponen Utama
Untuk membangun sistem ini, kita butuh beberapa komponen “tempur” yang punya tugas spesifik:
| Komponen | Fungsi |
| Arduino Uno | Bertindak sebagai unit pemroses utama yang menjalankan algoritma PID untuk mengambil keputusan. |
| Sensor DHT11 | Membaca data kelembapan (RH) dan suhu secara real-time. |
| Transistor IRLZ44N (MOSFET) | Berfungsi sebagai Logic Level MOSFET yang dapat bekerja dengan sinyal 5V dari Arduino. Komponen ini digunakan sebagai saklar elektronik untuk mengendalikan aktuator berdaya lebih besar. |
| Humidifier | Bertugas menambah uap air ke dalam ruangan ketika kondisi terlalu kering. |
| Kipas DC 12V | Bertugas menarik udara keluar sebagai perangkat exhaust untuk mengurangi kelembapan. |
Skematik Rangkaian Jalur Komunikasi dan Daya
Menghubungkan komponen ini butuh ketelitian agar sinyal kendali PWM (Pulse Width Modulation) bisa sampai dengan akurat.

- Sensor Input: Hubungkan Sensor DHT11 ke Pin Digital 2 pada Arduino.
- Output Aktuator: Sistem ini menggunakan dua jalur output PWM. Pin 9 dialokasikan untuk mengontrol Intake (Humidifier) dan Pin 10 digunakan untuk mengontrol Exhaust (Kipas DC).
- Driver Daya: Karena Arduino tidak kuat menyalakan humidifier atau kipas secara langsung, kita menggunakan IRLZ44N sebagai driver.
- Fitur Pengaman: Jangan lupa memasang Dioda 1N4007 secara paralel (flyback) pada terminal kipas. Dioda ini berfungsi sebagai pengaman untuk meredam lonjakan arus balik (back-EMF) dari motor kipas yang bisa merusak komponen lainnya.
Rahasia di Balik Layar Cara Kerja PID Diskrit
Sistem ini bekerja dengan prinsip Closed Loop Control. Bayangkan seperti menyetir mobil; kamu melihat target (garis jalan), lalu tanganmu terus mengoreksi setir agar mobil tetap di jalur. Di sini, target (Setpoint) kita adalah 70%.

Algoritma PID mengoreksi error (selisih antara kelembapan sekarang dengan 70%) melalui tiga aksi:
- Proportional (P): Memberikan respon cepat secara langsung berdasarkan seberapa jauh jarak kita dari target saat ini.
- Integral (I): Mengakumulasi kesalahan dari waktu ke waktu untuk menghilangkan sisa error yang bandel. Di sini, kita menggunakan Integral Limit sebesar 100 untuk mencegah Integral Windup (kondisi di mana nilai koreksi menjadi terlalu besar dan sulit dikendalikan).
- Derivative (D): Memprediksi perubahan di masa depan. Misalnya, jika jendela tiba-tiba dibuka dan kelembapan turun drastis, istilah “D” akan menyadari laju perubahan tersebut dan memerintahkan sistem untuk merespons lebih cepat sebelum error menjadi terlalu besar.
Bedah Kode Program Strategi Pengendalian
#include <DHT.h>
// =====================================================
// KONFIGURASI SENSOR
// =====================================================
#define DHT_PIN 2
#define DHT_TYPE DHT11
DHT dht(DHT_PIN, DHT_TYPE);
// =====================================================
// KONFIGURASI OUTPUT
// =====================================================
#define HUMIDIFIER_PIN 9
#define FAN_PIN 10
// =====================================================
// PARAMETER PID
// =====================================================
float Kp = 8.0;
float Ki = 0.08;
float Kd = 0.0;
float setpoint = 70.0;
// Sampling time = 1 detik
const unsigned long SAMPLE_TIME = 1000;
// Batas integral untuk mencegah Integral Windup
float integralLimit = 100.0;
float integral = 0.0;
float previousError = 0.0;
// =====================================================
// PWM BALANCE
// =====================================================
const int PWM_BALANCE = 80;
int humidifierPWM = 0;
int fanPWM = 0;
// =====================================================
// TIMER
// =====================================================
unsigned long lastSampleTime = 0;
// =====================================================
// SETUP
// =====================================================
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(HUMIDIFIER_PIN, OUTPUT);
pinMode(FAN_PIN, OUTPUT);
// Kondisi awal
analogWrite(HUMIDIFIER_PIN, 0);
analogWrite(FAN_PIN, 0);
Serial.println("=================================");
Serial.println("Kontrol Kelembapan PID Diskrit");
Serial.println("Target Kelembapan: 70%");
Serial.println("=================================");
}
// =====================================================
// LOOP UTAMA
// =====================================================
void loop() {
unsigned long currentTime = millis();
// Jalankan PID setiap 1 detik
if (currentTime - lastSampleTime >= SAMPLE_TIME) {
lastSampleTime = currentTime;
// -------------------------------------------------
// BACA SENSOR
// -------------------------------------------------
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Cek apakah pembacaan sensor valid
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Gagal membaca sensor DHT11!");
return;
}
// -------------------------------------------------
// HITUNG ERROR
// -------------------------------------------------
float error = setpoint - humidity;
// -------------------------------------------------
// BAGIAN PROPORTIONAL
// -------------------------------------------------
float proportional = Kp * error;
// -------------------------------------------------
// BAGIAN INTEGRAL
// -------------------------------------------------
integral += error * (SAMPLE_TIME / 1000.0);
// Integral Limit
integral = constrain(
integral,
-integralLimit,
integralLimit
);
float integralTerm = Ki * integral;
// -------------------------------------------------
// BAGIAN DERIVATIVE
// -------------------------------------------------
float derivative =
(error - previousError) /
(SAMPLE_TIME / 1000.0);
float derivativeTerm = Kd * derivative;
// -------------------------------------------------
// OUTPUT PID
// -------------------------------------------------
float pidOutput =
proportional +
integralTerm +
derivativeTerm;
previousError = error;
// -------------------------------------------------
// STRATEGI PUSH-PULL PWM
// -------------------------------------------------
humidifierPWM = PWM_BALANCE + pidOutput;
fanPWM = PWM_BALANCE - pidOutput;
// Batasi PWM 0-255
humidifierPWM = constrain(
humidifierPWM,
0,
255
);
fanPWM = constrain(
fanPWM,
0,
255
);
// -------------------------------------------------
// KIRIM PWM KE AKTUATOR
// -------------------------------------------------
analogWrite(
HUMIDIFIER_PIN,
humidifierPWM
);
analogWrite(
FAN_PIN,
fanPWM
);
// -------------------------------------------------
// MONITORING SERIAL
// -------------------------------------------------
Serial.println("---------------------------------");
Serial.print("Suhu : ");
Serial.print(temperature);
Serial.println(" C");
Serial.print("Kelembapan : ");
Serial.print(humidity);
Serial.println(" %");
Serial.print("Setpoint : ");
Serial.print(setpoint);
Serial.println(" %");
Serial.print("Error : ");
Serial.print(error);
Serial.println(" %");
Serial.print("PID Output : ");
Serial.println(pidOutput);
Serial.print("Humidifier : ");
Serial.println(humidifierPWM);
Serial.print("Kipas : ");
Serial.println(fanPWM);
}
}
Dalam kode program, kita mengatur parameter kestabilan dengan nilai: Kp = 8.0, Ki = 0.08, dan Kd = 0.0.
Mengapa Kd diatur ke angka nol? Sebagai ahli, kita tahu bahwa perubahan kelembapan ruangan biasanya terjadi secara perlahan (lambat). Dalam sistem yang lambat, parameter Derivative seringkali tidak diperlukan dan justru bisa membuat sistem bergetar jika pembacaan sensor sedikit berisik.
Sistem ini beroperasi dengan Sampling Time (Ts) sebesar 1 detik. Artinya, setiap satu detik, Arduino akan membaca sensor dan menghitung ulang koreksi. Pemahaman logika kendali seperti ini juga merupakan dasar yang sama jika kamu ingin bikin robot anti tumbang: panduan lengkap self-balancing robot pakai arduino.
Aksi Aktuator Strategi “Push-Pull” PWM
Satu hal yang membuat proyek ini profesional adalah penggunaan variabel PWM_BALANCE = 80. Sistem tidak mulai dari angka nol, melainkan memberikan tenaga dasar sebesar 80 pada kedua aktuator.
Logikanya bukan sekadar “nyala-mati”, tapi sebuah keseimbangan:
- Intake PWM = 80 + Output PID
- Exhaust PWM = 80 – Output PID
Artinya, jika kelembapan kurang dari 70%, nilai PID akan menambah kecepatan humidifier dan secara otomatis mengurangi kecepatan kipas. Begitu juga sebaliknya. Hasilnya? Transisi yang sangat halus dan kelembapan yang tidak “kaget” saat berubah.
Hasil Pengujian & Kesimpulan
Jika kita melihat grafik hasil pengujian, perbedaannya sangat mencolok. Pada kondisi “Before” tanpa PID, nilai kelembapan melonjak tidak menentu. Namun, setelah PID diaktifkan (“After”), grafik menunjukkan kelembapan merayap naik dan terkunci dengan stabil di angka 70%. Hal ini berkat parameter Ki = 0.08 yang bekerja efektif menyapu bersih sisa kesalahan.
Kesimpulannya, perpaduan Arduino Uno, sensor DHT11, dan algoritma PID diskrit adalah solusi ampuh untuk menciptakan sistem kontrol udara tingkat industri di rumah sendiri. Dengan komponen yang tepat seperti MOSFET logic-level dan teknik flyback diode, alat ini tidak hanya cerdas tapi juga tahan lama.
Ingin tahu lebih lanjut tentang mikrokontroler yang digunakan? Cek dokumentasi resmi Arduino Uno untuk mengeksplorasi lebih jauh!
Stabil Terus! Cara Bikin Kontrol Kelembapan Ruangan Otomatis Pakai Arduino dan PID
8×8 LED dot matrix merupakan sebuah display yang terdiri dari kumpulan led yang disusun secara simetris sejumlah 8 baris... selengkapnya
Oke kali ini kita akan membahas salah satu board wifi yaitu kakak dari NodeMcu yang memiliki fungsi lebih +... selengkapnya
Selamat datang di indomaker.com, pada pembahasan kali ini admin akan mengupas tentang penggunaan ESP32-CAM. Module ini merupakan sebuah module... selengkapnya
Pernah nggak lagi asyik nge-game atau mabar di kamar, eh tiba-tiba langit mendung dan hujan turun deras? Yang paling bikin... selengkapnya
Apa itu efek autumn? Efek autumn adalah efek musim gugur, dimana dedaunan akan berubah warna dari hijau menjadi coklat... selengkapnya
Halo Sobat Indomaker! Pernah enggak kamu atau anggota keluargamu lupa minum obat sesuai jadwal? Masalah sepele ini dampaknya bisa lumayan... selengkapnya
UI (User Interface) dan UX (User Experience) dalam sebuah pengembangan website dan aplikasi sangat penting dan saling berkaitan. Tetapi... selengkapnya
Sensor LM35 merupakan sebuah sensor yang dapat mendeteksi suhu ruangan dengan cara mengubah besaran suhu menjadi besaran listrik dalam... selengkapnya
Gyroscope adalah alat yang mengukur seberapa cepat sebuah benda berputar, yaitu kecepatan rotasinya di sumbu X, Y, dan Z. Modul L3G4200D adalah salah satu gyroscope tiga sumbu yang populer di kalangan para... selengkapnya
Panel P10 LED Matrix merupakan sebuah display berisi kumpulan led-led yang disusun secara matrix. Fungsinya untuk menampilkan informasi berupa... selengkapnya
ESR meter/LCR meter dengan layar lebar lebih jelas dan mantap dan dengan tempat batre jd lebih rapih batre lebih aman… selengkapnya
Rp 131.000 Rp 134.000Fitur: -Dapat mendeteksi api atau panjang gelombang sumber cahaya dalam 760nm ~ 1100nm – Api lebih ringan mendeteksi jarak 80cm… selengkapnya
Rp 9.000this is another great IIC/I2C/TWI/SPI Serial Interface. As the pin resources of for Arduino controller is limited, your project may… selengkapnya
Rp 12.400Bosan dengan modul arduino yang kalian punya, saatnya mencoba modul programmer yang lain yah ini dia RASPBERRY PI 4 COMPUTER… selengkapnya
Rp 1.570.000Dual Volt Amp Meter Digital Ampere Meter Voltmeter 10A 0-100V Ammeter Dilengkapi dengan pengukuran Voltmeter dan Amperemeter dalam 1 display… selengkapnya
Rp 26.500Kabel Jumper Dupont Pelangi 30cm female to Female 1 lembar = 40 kabel
Rp 13.500Item Deskripsi : This module performance is stable, measure the distance accurately. performance nearly the same as SRF05, SRF02 SRF05,… selengkapnya
Rp 13.900Product Name: Tactile Switch; Material: Metal, Plastic Package Content: 30 Pcs x Tactile Switch; Main Color: Black, Silver Tone Total… selengkapnya
Rp 4002000W SCR Electronic Voltage Regulator Speed Controller Dimmer Thermostat Aplikasi : Kontrol temperature heater, kontrol kecepatan fan/bor tangan/gurinda tangan, kompor… selengkapnya
Rp 19.500Spesifikasi: 20mm Kapton Tape Polymide Film Gold High Temp isolasi Tahan Panas Harga Tertera: 1 Roll Kapton Tape Polymide Film… selengkapnya
Rp 219.000Stabil Terus! Cara Bikin Kontrol Kelembapan Ruangan Otomatis Pakai Arduino dan PID
Kategori
Artikel Terkait
-
Bikin Sistem Parkir Otomatis dengan Penghitung Kendaraan dan Indikator Slot Kosong
-
Rancang Sistem Pendeteksi Kebakaran dengan Kipas Otomatis dan Alarm Peringatan
-
Bikin Alat Monitoring Konsumsi Listrik Rumah Secara Real-Time Berbasis ESP32
-
Bikin Sistem Keamanan Pintu Berbasis RFID dengan Notifikasi Telegram
-
Rancang Sistem Penyiram Tanaman Otomatis Berbasis ESP32 dengan Monitoring Smartphone

Saat ini belum tersedia komentar.