---
# System prepended metadata

title: Implementasi Kontrol PID pada Sistem Pendingin Suhu Ruangan Menggunakan Kipas DC Berbasis Arduino

---

# Implementasi Kontrol PID pada Sistem Pendingin Suhu Ruangan Menggunakan Kipas DC Berbasis Arduino

**Mata Kuliah:** Sistem Kendali dan Mekanika (ACK3AB3)
**Dosen:**  FCB
**Semester/Tahun:** Ganjil 2025/2026
**Kelas:** TK-47-04

---

## Identitas Asesmen & Capaian Pembelajaran (OBE)

**Bentuk Asesmen:** Tugas Besar CLO2 dan Tugas Besar CLO3
**Metode:** *Project-Based Learning (PjBL)*
**Level 3 AI [*Editing*]**: AI hanya untuk perbaikan tulisan, tanpa konten baru. Lampirkan *prompt* dan hasil lengkap *generate* AI jika menggunakan AI, serta nama *tools* AI yang digunakan.

### Pemetaan *Program Learning Outcome* (CPL - Capaian Pembelajaran Lulusan) dan *Course Learning Outcome* (CPMK - Capaian Pembelajaran Mata Kuliah)
Laporan Tugas Besar ini mengukur ketercapaian dua PLO utama sesuai RPS untuk memvalidasi ketercapaian dua CLO:

* **[PLO-3]** Kemampuan menyusun rancangan komponen, sistem dan/atau proses pada bidang teknik komputer untuk memenuhi kebutuhan yang diharapkan di dalam batasan-batasan realistis.
    * *Fokus:* Perancangan parameter kendali (*tuning*) dan analisis kestabilan sistem.
      * **[CLO-2]:** Mampu menyusun rancangan dan menganalisis sistem kendali loop tertutup dari kondisi transien hingga steady state untuk mencapai kestabilan.
        * *(Dinilai dari Laporan Bab 1, 2, dan 4: Desain, Pemodelan, dan Analisis Grafik)*
* **[PLO-6]** Kemampuan menerapkan metode, keterampilan dan piranti teknik modern yang diperlukan untuk praktek keteknikan dalam bidang teknik komputer.
    * *Fokus:* Implementasi algoritma pada mikrokontroler dan penggunaan sensor/driver motor.
        * **[CLO-3]:** Mampu menentukan dan menerapkan penggunaan kendali proporsional, integral, atau derivatif pada motor listrik untuk mencapai kestabilan.
            * *(Dinilai dari Laporan Bab 3 dan Demonstrasi Alat: Implementasi Hardware & Tuning PID)*
---

**IDENTITAS KELOMPOK:**
* **Nama Kelompok:** 1
* **Nama Mahasiswa 1 (NIM):** Muhammad Habibie Rabbani (101032300005)
* **Nama Mahasiswa 2 (NIM):** Nathanael Liongky Pratama (101032300014)
* **Nama Mahasiswa 3 (NIM):** Dimas Ali Fikri (101032300214)


---

## Daftar Isi
1.  Pendahuluan
2.  Desain dan Pemodelan Sistem
3.  Implementasi dan Pengujian
4.  Evaluasi dan Analisis Kinerja
5.  Kesimpulan dan Saran
6.  Lampiran/Dokumentasi

---

## 1. Pendahuluan

### 1.1 Latar Belakang
Dalam era saat ini, Motor listik merupakan salah satu contoh komponen utama yang banyak digunakan dalam berbagai aspek, baik pada bidang industri, robotika, maupun dalam kehidupan sehari-hari. Motor berperan sebagai aktuator yang mengubah energi listrik menjadi energi energi mekanik sehingga mampu menggerakkan berbagai berbagai peralatan salah satunya kipas. Namun,  kipas angin biasanya digunakan secara manual, baik ON maupun OFF serta mengatur kecepatan.

Pada umumnya, kipas angin secara manual seperti sistem ON maupun OFF, tidak mampu menyesuaikan kinerja motor terhadap lingkungan. Oleh karena itu, diperlukan sensor suhu sebagai perangkat feedback untuk membaca kondisi suhu ruangan secara real-time.Sensor suhu tentunya berperan untuk menyediakan informasi suhu secara aktual yang digunakan sebagai pengendali keputusan oleh pengendali. Dengan memanfaatkan data dari sensor suhu kecepatan dapat diatur secara otomatis. Pengendalian berbasis sensir suhu ini memungkinkan sistem bekerja lebih responsif terhadap suhu lingkungan.

Dalam bidang industri, kombinasi antara motor dan sensor umumnya untuk pada sistem ventilasi, pendingin mesin. Pada bidang robotika, sensor suhu dapat digunakakn sebagai parameter tambahan untuk melindungi aktuator dan sistem elektronik dari kondisi panas yang berlebih. Di sisi lain, dalam kehidupan sehari-hari, penerapan pengendalian motor berbasis sensor suhu dapat ditemukan pada kipas angin otomatis, perangkat pendingin ruangan sederhana.

Oleh karena itu, pengendalian motor berbasis sensor suhu menjadi penting untuk dipelajari dan dianalisis. Dengan menerapkan sistem kendali yang memanfaatkan feedback dari sensor suhu, diharapkan sistem dapat bekerja stabil, dan efisien terhadap perubahan kondisi lingkungan.

### 1.2 Tujuan (*sesuaikan isinya dengan proyek kelompok*)
1.  Merancang dan merealisasikan sistem kendali tertutup (*Closed Loop*) menggunakan metode PID dengan memanfaatkan umpan balik (*feedback*) dari sensor suhu untuk mengendalikan kecepatan motor kipas.
2.  Menganalisis respon transien sistem kendali, yang meliputi (*rise time*),(*overshoot*), berdasarkan perubahan suhu ruangan terhadap nilai setpoint yang telah ditentukan.
3.  Menguji ketahanan (*robustness*) sistem terhadap kendali terhadap gangguan eksternal, seperti perubahan suhu lingkungan dan gangguan aliran udara, untuk mengetahui kemampuan sistem dalam mempertahankan kestabilan dan mencapai kembali kondisi steady-state.

### 1.3 Spesifikasi Desain (Target *Performance*)

| Parameter Kinerja | Simbol | Target Nilai | Alasan/Justifikasi (Mengapa memilih angka ini?) |
| :--- | :---: | :--- | :--- |
| **Settling Time** | $T_s$ | < 120 detik | *Kenaikan suhu perlu untuk segera didinginkan, tetapi sistem suhu juga memiliki sistem inersia termal yang besar dan sensor DHT11 juga memiliki delay. Rentang tersebut dikarenakan jika suhu terlalu tingi maka pendinginan juga butuh wkatu lebih lama.* |
| **Max. Overshoot** | $M_p$ | < 1 % | *Nilai Max. Overshoot dibuat kecil, karena untuk menjaga suhu tetap stabil dan menghindari kipas nyala mati secara terus menerus.* |
| **Steady State Error** | $e_{ss}$ | 3 % |*Kipas harus tetap menyala meskipun ada perubahan suhu yang kecil, sehingga suhu bisa stabil di sekitar setpoint dan tidak selisih jauh.* |
| **Kriteria Kestabilan** | - | 5% | *Dipilih nilai kriteria kestabilan 5% karena sensor suhu DHT11 memiliki keterbatasan akurasi dan delay. Selain itu juga pengaruh fluktuasi suhu ruangan.* |

---

## 2. Desain dan Pemodelan Sistem

### 2.1 Diagram Blok Sistem
1. Set point 
Set point merupakan nilai referensi suhu yang diinginkan, setpoint ditetapkan 24 C, yang merepresentasikan suhu ruangan ideal yang ingin dicapai dan dipertahankan oleh sistem.
2. Error
Error menunjukkan seberapa besar penyimpangan suhu rungan dari nilai yang diinginkan. Nilai error menunjukkan seberapa besar penyimpangan suhu ruangan dari nilai yang diinginkan.
3. Controller
Controller pada sistem ini adalah Arduino Uno yang mengimplementasikan algoritma PID (Proportional-integral-Derivative). Controller bertugas mengolah sinyal error untuk menghasilkan sinyal berupa PWM (Pulse Width Modulation). Metode PID sebagai mempercepat respon sistem, mengurangi kesalahan steady-state, serta menjaga kestabilan suhu ruangan.
4. Plant
Sistem ini ruangan beserta dinamika perubahan suhu udara di dalamnya. Aliran udara dari kipas mempengaruhi suhu ruangan sebagai output sistem. 
5. Sensor
Sensor DHT11, yang berfungsi untuk mengukur suhu ruangan secara real-time.
![CONTROL SYSTEM TUBES](https://hackmd.io/_uploads/H16GSgv7bx.png)



### 2.2 Pemodelan Matematis (Theoretical Modeling)

**A. Model Algoritma Kontroler (PID)**

Sistem kendali suhu ruangan ini menggunakan algoritma PID (*Proportional-Integral-Derivative*) untuk mengatur kecepatan kipas DC. Secara teoritis dalam domain waktu kontinu, sinyal kendali $u(t)$ didefinisikan sebagai jumlahan dari tiga komponen: proporsional terhadap *error*, integral dari *error* terhadap waktu, dan turunan dari *error* terhadap waktu.

Persamaan matematis PID dalam bentuk kontinu adalah:

$$
u(t) = K_p e(t) + K_i \int_{0}^{t} e(t) dt + K_d \frac{de(t)}{dt}
$$

Dimana:
* $u(t)$ = Sinyal kendali keluaran (*Controller Output* / PWM)
* $e(t)$ = Sinyal kesalahan (*Error*) = $Setpoint - SuhuAktual(t)$
* $K_p$ = Konstanta *Gain* Proporsional
* $K_i$ = Konstanta *Gain* Integral
* $K_d$ = Konstanta *Gain* Derivatif

**Implementasi Diskrit (Discrete Form):**

Karena algoritma ini diimplementasikan pada mikrokontroler Arduino Uno yang bekerja pada sistem digital dengan waktu cuplik (*sampling time*) diskrit $\Delta t$, persamaan integral dan diferensial di atas harus didiskretisasi.

Kami menggunakan pendekatan *backward difference* untuk komponen derivatif dan penjumlahan persegi (*rectangular integration*) untuk komponen integral. Persamaan beda (*difference equation*) yang digunakan dalam kode program adalah sebagai berikut:

$$
u(k) = P(k) + I(k) + D(k)
$$

Dengan penjabaran masing-masing komponen pada langkah ke-$k$:

1.  **Komponen Proporsional:**
    $$P(k) = K_p \cdot e(k)$$

2.  **Komponen Integral (Akumulasi Error):**
    $$I(k) = I(k-1) + K_i \cdot e(k) \cdot \Delta t$$
    *(Nilai integral adalah jumlahan integral sebelumnya ditambah error saat ini dikali waktu sampling)*

3.  **Komponen Derivatif (Laju Perubahan Error):**
    $$D(k) = K_d \cdot \frac{e(k) - e(k-1)}{\Delta t}$$
    *(Nilai derivatif dihitung dari selisih error saat ini dengan error sebelumnya dibagi waktu sampling)*

Sehingga, persamaan total untuk output PWM pada setiap iterasi *loop* Arduino adalah:

$$
u(k) = K_p e(k) + \left( I(k-1) + K_i e(k) \Delta t \right) + K_d \frac{e(k) - e(k-1)}{\Delta t}
$$

Keterangan:
* $k$ = Langkah waktu diskrit saat ini (current step).
* $e(k)$ = Error suhu pada saat ini ($Setpoint - Suhu_{ukur}$).
* $e(k-1)$ = Error suhu pada pembacaan sebelumnya (*Previous Error*).
* $I(k-1)$ = Total akumulasi integral sebelumnya.
* $\Delta t$ = Waktu cuplik (*Sampling time*) dalam detik.

**B. Metode Tuning Ziegler-Nichols (Z-N)**

Dalam perancangan parameter kontrol PID ini, kelompok kami menggunakan pendekatan **Metode Ziegler-Nichols Tipe 2 (Kurva Reaksi)** sebagai langkah awal penentuan parameter (*initial tuning*).

**1. Dasar Pemilihan Metode**
Metode Tipe 2 dipilih karena berdasarkan karakteristik *Open-Loop* yang telah diuji pada Bab 3.1 (Gambar 1), respon suhu sistem membentuk kurva berbentuk huruf "S" (*Sigmoid Curve*). Sistem tidak memiliki osilasi bawaan (*self-regulating*) sehingga tidak memungkinkan untuk menggunakan metode Tipe 1 (Ultimate Gain). Karakteristik sistem didominasi oleh inersia termal yang menyebabkan adanya waktu tunda (*dead time*) dan konstanta waktu (*time constant*).

**2. Penentuan Parameter Model ($L$ dan $T$)**
Prosedur penentuan parameter dilakukan dengan menarik garis singgung (*tangent line*) pada titik infleksi (kemiringan tercuram) dari grafik respons *Open-Loop*. Berdasarkan analisis grafik tersebut, didefinisikan parameter sebagai berikut:



* **Delay Time ($L$):** Waktu tunda dari saat input step (PWM) diberikan hingga suhu mulai naik secara signifikan.
* **Time Constant ($T$):** Waktu yang dibutuhkan respon untuk mencapai perpotongan garis singgung dengan garis *steady state* (suhu maksimal).
* **Static Gain ($K$):** Perbandingan perubahan output suhu terhadap perubahan input PWM ($K = \frac{\Delta Output}{\Delta Input}$).

Berdasarkan grafik hasil pengujian *Open-Loop*, diperoleh estimasi parameter fisik *plant* sebagai berikut:

*(Catatan: Nilai di bawah adalah estimasi dari grafik Bab 3.1 Anda, sesuaikan jika ada perhitungan real)*
* **Kenaikan Suhu ($\Delta Output$):** $41^\circ C - 25^\circ C = 16^\circ C$
* **Input Step PWM ($\Delta Input$):** $250 - 0 = 250$ (Skala 8-bit)
* **Gain Sistem ($K$):** $16 / 250 = 0.064$
* **Delay Time ($L$):** $\approx 10$ detik
* **Time Constant ($T$):** $\approx 60$ detik

**3. Perhitungan Parameter PID Awal**
Mengacu pada aturan tuning Ziegler-Nichols Tipe 2, parameter kontroler dihitung menggunakan rumus berikut:

| Tipe Kontroler | $K_p$ | $T_i$ | $T_d$ |
| :--- | :--- | :--- | :--- |
| **PID** | $1.2 \frac{T}{K \cdot L}$ | $2 L$ | $0.5 L$ |

Dari rumus di atas, didapatkan nilai awal referensi. Namun, karena metode Ziegler-Nichols cenderung menghasilkan respon yang agresif (*overshoot* tinggi) yang kurang cocok untuk sistem pendinginan yang membutuhkan kestabilan, maka nilai ini digunakan sebagai **titik awal**.

**4. Penyesuaian Akhir (Fine Tuning)**
Setelah mendapatkan nilai dasar, dilakukan metode *Trial and Error* (Fine Tuning) untuk mencapai spesifikasi desain ($Overhoot < 1\%$ dan $Steady State Error \approx 0$).
* **$K_p$ (50):** Diset cukup besar untuk respon cepat, namun dibatasi agar tidak terjadi *chattering* pada kipas.
* **$K_i$ (0.25):** Diberikan nilai kecil untuk menghilangkan *steady state error* secara perlahan tanpa menyebabkan osilasi gelombang lambat.
* **$K_d$ (1.25):** Ditambahkan untuk meredam laju kenaikan suhu yang terlalu cepat (efek *damping*) sehingga *overshoot* dapat diminimalisir.

Hasil akhir dari proses *fine tuning* ini adalah parameter yang digunakan pada Bab 3, yaitu: **$K_p=50, K_i=0.25, K_d=1.25$**.

**C. Model Plant (Motor)**
Motor DC yang digunakan dalam sistem ini digunakan sebagai sistem pendinginannya. Dimana kita sudah menggunakan secara langsung dalam bentuk DC Brushless Fan, dan bukan menggunakan motor DC secara mentah. Kecepatan dari kipas diatur melalui Pulse Width Modulation (PWM) yang dikeluarkan oleh mikrokontroler. 
* **Motor DC (*Speed Control*)**
    Motor DC sendiri dapat didekati dengan sistem orde 1 dengan persamaan matematis seperti ini: 
    $$G(s) = \frac{\omega(s)}{V(s)} = \frac{K}{\tau s + 1}$$
    Dimana:
    * $\omega(s)$ adalah kecepatan sudut keluaran (output),
    * $V(s)$ adalah tegangan input ke motor (dari sinyal PWM),
    * $K$ adalah gain sistem,
    * $\tau$ adalah konstanta waktu mekanik.

    Namun, pada tubes ini kecepatan sudut motor     tidak diukur secara langsung, karena tidak terdapat sensor RPM atau encoder. Selain itu, kecepatan motor DC relatif jauh lebih cepat dibandingkan laju perubahan suhu pada sistem pendinginan. Oleh karena itu, dalam perancangan sistem kendali suhu, dinamika motor dianggap sebagai bagian internal dari plant dan disederhanakan sebagai gain statis.

    Dengan asumsi tersebut, fokus pengendalian sistem diarahkan pada perubahan suhu, sehingga model plant keseluruhan antara sinyal PWM dan suhu dapat didekati sebagai sistem orde satu. Berikut persamaannya:
    
    $$G(s) = \frac{T(s)}{PWM(s)} \approx \frac{K}{\tau s + 1}$$ 
    
### 2.3 Spesifikasi Perangkat Keras
* **Motor:** 
Tipe: DC Brushless Fan
Tegangan: 5V
RPM: 5000 - 8000 RPM
* **Sensor:** Sensor Suhu DHT11
* **Kontroler:** Arduino Uno R3 Clock Speed 16 MHz

---

## 3. Implementasi dan Pengujian

### 3.1 Karakteristik Open-Loop (Linearitas Plant)

Pada tahap ini, dilakukan pengujian respon sistem tanpa menggunakan algoritma PID untuk mengetahui perilaku asli dari *plant* (pemanas/motor). Pengujian dilakukan dengan memberikan input PWM secara bertahap (*staircase*) dan mengamati respon suhu yang dihasilkan.

#### A. Grafik Respon Sistem

Berikut adalah data hasil pengujian *Open-Loop* yang direkam melalui Serial Plotter:

#### 1. Kondisi Suhu Aktual (Normal)
![OPENLLOOP1](https://hackmd.io/_uploads/HJMkmtCEbg.jpg)


#### 2. Kondisi Dengan Gangguan Panas (Disturbansi)
![OPENLOOP2](https://hackmd.io/_uploads/S1ZeXK0NZl.jpg)

#### C. Analisis

#### 1. Apakah grafik membentuk garis lurus?
**Ya, secara umum respon sistem menunjukkan tren linear.**
Setiap kenaikan *step* PWM diikuti dengan kenaikan suhu secara proporsional. Namun, pada sistem termal, terdapat *time lag* (perlambatan) yang terlihat dari kemiringan kurva saat terjadi transisi antar *step* PWM.

#### 2. Pada input berapa sistem mulai bereaksi?
**Sistem mulai menunjukkan kenaikan suhu sejak PWM pertama diberikan (PWM 50).**
Tidak terlihat adanya *dead zone* yang signifikan seperti pada motor DC, namun efek panas baru terlihat nyata setelah beberapa detik karena sifat inersia termal.

#### 3. Apakah ada titik saturasi?
**Hingga PWM maksimal (250/100%), grafik belum menunjukkan titik saturasi.**
Hal ini mengindikasikan bahwa *heater* masih mampu meningkatkan suhu lebih tinggi lagi jika limit PWM ditambah atau durasi pengujian diperlama.

#### 4. Perbandingan Gambar 1 dan Gambar 2
* **Gambar 1:** Menunjukkan *baseline* sistem. Suhu naik sangat lambat karena hanya mengandalkan daya *heater* internal.
* **Gambar 2:** Menunjukkan kenaikan suhu yang lebih curam dan nilai awal yang lebih tinggi. Hal ini terjadi karena adanya disturbansi eksternal (pemanasan manual pada sensor) yang menyebabkan *offset* pada grafik suhu, sehingga suhu terbaca jauh di atas *setpoint* referensi.

### 3.2 Analisis Perbandingan Respons (*Step Response*)
* Skenario 1: Hanya P
![P 1](https://hackmd.io/_uploads/B1yUG9AE-g.jpg)
![P 2](https://hackmd.io/_uploads/BykUGcR4-e.jpg)
![P 3](https://hackmd.io/_uploads/ryyIfc04Wg.jpg)

* Skenario 2: Menggunakan P dan I
![PI 1](https://hackmd.io/_uploads/SJSRfcANWg.jpg)
![PI 2](https://hackmd.io/_uploads/rkHAf9AEWl.jpg)
![PI 3](https://hackmd.io/_uploads/rkrCG5RN-l.jpg)

* Skenario 3: Menggunakan PID optimal
![PID 1](https://hackmd.io/_uploads/BysXQcRNWx.jpg)
![PID 2](https://hackmd.io/_uploads/SJjX7qAN-g.jpg)
![PID 3](https://hackmd.io/_uploads/Hkj7Xq0Nbe.jpg)

**Tabel 1. Perbandingan Parameter Respons Transien**

| Skenario *Tuning* | Nilai *Gain* ($K_p, K_i, K_d$) | *Delay Time* ($T_d$)| *Rise Time* ($T_r$) | *Peak Time* ($T_p$) | *Settling Time* ($T_s$) | *Overshoot* (%) | *Steady State Error* |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| #1 P | 50 | 5 | 25 | 40 | 100 | 0 | 0.9 |
| #2 PI | 50, 0.25 | 10 | 15 | 24 | 110 | 0 | 0.8 |
| #3 PID Optimal | 50, 0.25, 1.2 | 1 | 35 | 75 | 100 | 0 | 0.6 |

### 3.3 Uji Konsistensi (Repeatability Test)

**Skenario 3: Menggunakan PID optimal**

* Percobaan 1
![PERCOBAAN 1.1](https://hackmd.io/_uploads/rkRpDqR4-e.jpg)
![PERCOBAAN 1.2](https://hackmd.io/_uploads/r1QAvqRVWg.jpg)

* Percobaan 2
![PERCOBAAN 2.1](https://hackmd.io/_uploads/r1wCv9AVZe.jpg)
![PERCOBAAN 2,2](https://hackmd.io/_uploads/S13RPcR4Ze.jpg)

* Percobaan 3
![PERCOBAAN 3.1](https://hackmd.io/_uploads/S1by_9A4-e.jpg)
![PERCOBAAN 3.2](https://hackmd.io/_uploads/Sy41d5R4-e.jpg)

* Percobaan 4
![PERCOBAAN4.1](https://hackmd.io/_uploads/rytJd50V-e.jpg)
![PERCOBAAN 4.2](https://hackmd.io/_uploads/rks1O9RNbg.jpg)

* Percobaan 5
![PERCOBAAN 5.1](https://hackmd.io/_uploads/HkWxO5REZx.jpg)
![PERCOBAAN 5.2](https://hackmd.io/_uploads/ryHe_qAEbe.jpg)

**Tabel 2. Statistik Konsistensi Kinerja (N=5)**

| Percobaan Ke- | *Settling Time* ($T_s$) (detik) | *Overshoot* (%) |
| :---: | :---: | :---: |
| 1 | 64 | 0 |
| 2 | 92 | 0 |
| 3 | 89 | 0 |
| 4 | 93 | 0 |
| 5 | 40 | 0 |
| **Rata-rata ($\mu$)** |75.6  | **0** |
| **Standar Deviasi ($\sigma$)** | 23.2 | **0** |

Didapatkan nilai standar deviasi sebesar 23.2. Nilai tersebut bukanlah nilai yang kecil dan termasuk nilai yang cukup besar. Hal ini dikarenakan selama 5 kali pengujian terdapat variasi suhu juga. Ada input suhu yang terlalu tinggi (seperti percobaan 2 - 4) dan ada juga yang tidak terlalu tinggi (seperti percobaan 5), sehingga waktunya lebih bervariasi dan standar deviasinya juga mengikuti. Tapi dapat dilihat juga di data 2 - 4 waktu yang ada juga berselisih dikit saja, menunjukkan sistem cukup stabil

### 3.4 Uji Gangguan (Disturbance Rejection)
* Skenario 1: Uji gangguan on/off secara manual dan tiba - tiba

![WhatsApp Image 2026-01-08 at 23.20.00](https://hackmd.io/_uploads/HkHCpuAN-l.jpg)
![WhatsApp Image 2026-01-08 at 23.22.33](https://hackmd.io/_uploads/SJcWA_CNbg.jpg)

Dari grafik yang ditampirkan terlihat PWM sempat drop ke 0, meskipun suhu masih di atas setpoint. Hal ini dikarenakan sistem dimatikan secara manual melalui pushbutton (off), lalu sistem dinyalakan kembali dengan menekan pushbutton kembali (on). Dari grafik tersebut dapat dilihat kalau grafik drop di x $\pm$ 480 detik dan kembali naik di x $\pm$ 486 detik, sehingga diperlukan waktu $\pm$ 6 detik untuk sistem kembali normal. 

* Skenario 2: Uji kenaikan suhu setelah sempat menurun
![WhatsApp Image 2026-01-08 at 23.24.59](https://hackmd.io/_uploads/HJrQgYCN-e.jpg)
![WhatsApp Image 2026-01-08 at 23.25.32](https://hackmd.io/_uploads/S1Mrlt0Ebl.jpg)
![WhatsApp Image 2026-01-08 at 23.26.07](https://hackmd.io/_uploads/SyTIeFRNWx.jpg)
![WhatsApp Image 2026-01-08 at 23.29.22](https://hackmd.io/_uploads/rJd9etA4Zg.jpg)

Dari grafik yang ditampilkan terlihat PWM sudah menurun dikarenakan suhu juga sudah menurun, lalu diberikan input kenaikan suhu kembali dan PWM kembali menaik. Sampai di akhir PWM kembali normal mengikuti penurunan suhu. Waktu pada saat PWM turun adalah $\pm$ 712 detik, lalu kembali naik sampai memuncak adalah $\pm$ 746 detik. Sehingga total waktu yang dibutuhkan dari PWM terendah sampai tertinggi adalah 34 detik.  

## 4. Evaluasi dan Analisis Kinerja

### 4.1 Validasi Spesifikasi
Berdasarkan data yang didapat selama melakukan uji coba di tabel 2 dan dibandingkan dengan tabel 1.3, maka dapat disimpulkan jika sistem yang dibangun masih sesuai dengan spesifikasi awal yang kita inginkan. Dimana rata - rata settling timenya adalah 75.6 detik dan spesifikasi awalnya adalah < 120 detik. 

### 4.2 Analisis Mendalam

1.  **Analisis Pengaruh *Gain*:** Jelaskan secara spesifik bagaimana perubahan $K_p$, $K_i$, dan $K_d$ mempengaruhi bentuk grafik respons berdasarkan data percobaan kelompok Anda.
$K_p$, $K_i$, dan $K_d$ memiliki pengaruhnya masing - masing terhadap grafik respons berdasarkan data percobaan kelompok kami. 
$K_p$ berpengaruh pada seberapa agresif kenaikan PWM saat terjadi error. Jika $K_p$ terlalu besar maka respon menjadi semakin cepat tetapi bisa menjadi sangat agresif dan berpotensi menyebabkan osilasi (overshoot). $K_p$ juga berfungsi untuk mengatasi deadzone dari kipas.
$K_i$ berpengaruh pada koreksi akumulatif dari semua error yang ada atau dapat dikatakan juga $K_i$ berfungsi untuk mengoreksi error - error yang kecil, sehingga memastikan suhu dapat mencapai tepat di setpoint dan tidak terjebak di Steady State Error. $K_i$ juga berfungsi pada saat suhu menurun, agar kipas juga tidak langsung berhenti, tapi akan menurun perlahan
$K_d$ secara garis besar digunakan untuk mengerem laju kenaikan PWM yang diberikan oleh $K_p$ dan $K_i$, sehingga grafik menjadi lebih halus baik saat naik maupun turun. $K_d$ juga berguna untuk mengurangi overshoot, sehingga dia bisa mengira - ngira kebutuhan PWM kipas terhadap prediksi kenaikan suhu. 

2.  **Analisis Stabilitas:** 
    a. Berdasarkan Uji Gangguan (Bab 3.4), seberapa tangguh sistem kelompok Anda? Apakah terjadi osilasi berlebih saat beban dilepas?
    
    b. Apakah metode *tuning* PID yang kelompok Anda gunakan sudah optimal untuk membuat sistem stabil dan mempertahankan kestabilannya?
    Metode tuning PID yang kelompok kami gunakan sudah cukup optimal untuk membuat sistem menjadi stabil dan tetap mempertahankan kestabilannya. Dapat dilihat juga pada hasil - hasil grafik yang ada. Dimana kipas dapat merespons secara baik saat terjadi kenaikan suhu dan akan turun juga seiring menurunnya suhu. Jika suhu terlampau tinggi juga kipas akan menahan di PWM tinggi selama waktu tertentu. Meskipun memang ada toleransi dimana tidak tepat di setpoint. 
    
3.  **Trade-off Desain:** Apa yang kelompok Anda korbankan untuk mencapai kestabilan? (Misal: Respon jadi agak lambat demi menghilangkan *overshoot*).
Aspek yang kelompok kami korbankan untuk mencapai kestabilan sistem adalah dari steady state error. Dimana kekurangan sistem kami adalah kipas akan menyala/bisa mati sebelum benar - benar mencapai setpoint (misal: selisih >1°). Hal ini untuk mengatasi permasalahan kipas mati nyala di selisih suhu kecil dan membuat respon kipas menjadi lebih baik dan cepat saat kenaikan suhu besar/tinggi

4.  **Evaluasi Hardware:** 
    a. Apakah ada batasan fisik (seperti driver motor atau resolusi sensor rendah) yang menghambat pencapaian target sesuai desain?
    Terdapat batasan fisik dari hardware terutama untuk sensor suhu yang kita pakai, yaitu DHT11. Dimana DHT11 memiliki delay yang cukup besar dan tingkat akurasi yang tidak setinggi itu juga. Sehingga dari keterbatasan fisik ini akan mempengaruhi hasil dari PID yang bisa saja menjadi kurang halus/delay output. 
    b. Apakah ada faktor mekanik (*gears, backlash*, gesekan) yang mengganggu hasil kendali?
    Terdapat faktor mekanik yang dapat mengganggu hasil kendali, yaitu adanya deadzone pada DC Brushless Fan yang kita gunakan. Deadzone sendiri adalah kondisi dimana kipas tidak berputar meskipun PWM sudah naik (hanya berdengung). Sehingga hal ini dapat menyebabkan delay rise time dan adanya steady state error terutama di PWM rendah. Solusi yang kita gunakan adalah menggunakan inisialisasi batas minimum PWM, sehingga dapat mengurangi delay rise time dan kipas dapat segera berputar. 
---

## 5. Kesimpulan dan Saran

### 5.1 Kesimpulan
1.  Sistem kendali PID **berhasil/tidak berhasil** diimplementasikan dengan parameter final: $K_p= 50, K_i= 0.25, K_d=1.25$.
2.  Kinerja sistem mencapai $T_s = 70 - 120 $ detik dan Overshoot $0 \%$.
3.  Tingkat konsistensi sistem ditunjukkan dengan standar deviasi sebesar 23.2

### 5.2 Saran Pengembangan
Beberapa saran pengembangan yang bisa dilakukan adalah:
1. Penggunaan sensor suhu yang lebih akurat lebih akurat seperti DHT22, DS18B20, BME280. 
2. Membuat sistem atau ruang lingkup yang terisolasi, sehingga pembacaan suhu akan lebih akurat juga dan mengurangi fluktuatif perubahan suhu dikarenakan ruang lingkup yang terlalu besar
3. Dapat menggunakan Fuzzy PID untuk memberikan klasifikasi - klasifikasi rentang suhunya dan PID lebih akurat

---

## Lampiran
* **Kode Program Utama (Arduino/C++):** 
/* ===== PIN CONFIG ===== */
#define DHTPIN 8
#define DHTTYPE DHT11
#define FAN_PIN 9
#define BTN_PIN 12

/* ===== LIMITASI PWM ===== */
#define MAX_PWM 250
#define MIN_PWM 40

void loop() {
  /* ===== BUTTON TOGGLE ===== */
  bool buttonState = digitalRead(BTN_PIN);
  if (lastButtonState == HIGH && buttonState == LOW) {
    systemON = !systemON;
    delay(200);
  }
  lastButtonState = buttonState;

  /* ===== READ TEMPERATURE ===== */
  float tempRaw = dht.readTemperature();
  if (!isnan(tempRaw)) {
    if (tempFiltered == 0)
      tempFiltered = tempRaw;
    else
      tempFiltered = FILTER_ALPHA * tempRaw + (1 - FILTER_ALPHA) * tempFiltered;
  }

  /* ===== LCD DISPLAY ===== */
  lcd.setCursor(0, 0);
  lcd.print(systemON ? "System ON   " : "System OFF  ");
  lcd.setCursor(0, 1);
  lcd.print("Temp: ");
  lcd.print(tempFiltered, 1);
  lcd.print(" C    ");

  /* ===== PID LOGIC ===== */
  if (systemON) {
    // Kipas mulai bekerja jika suhu > setpoint - hysteresis
    if (tempFiltered > (setpoint - TEMP_HYST)) {
      error = tempFiltered - setpoint;

      if (motorSpeed < MAX_PWM) {
        integral += error;
      }
      integral = constrain(integral, -30, 30);
      derivative = error - lastError;

      // Perhitungan PID
      PIDValue = Kp * error + Ki * integral + Kd * derivative;

      // Pembatasan output PWM
      motorSpeed = constrain(PIDValue, MIN_PWM, MAX_PWM);
      lastError = error;
    } else {
      // Suhu di bawah ambang batas
      integral *= 0.85;
      motorSpeed = MIN_PWM;
    }
  } else {
    motorSpeed = 0;
    integral = 0;
    lastError = 0;
  }

  analogWrite(FAN_PIN, motorSpeed);

  /* ===== SERIAL MONITOR / PLOTTER ===== */
  Serial.print("Setpoint:");
  Serial.print(setpoint);
  Serial.print(",");

  Serial.print("Suhu:");
  Serial.print(tempFiltered);
  Serial.print(",");

  Serial.print("PWM_Motor:");
  Serial.println(motorSpeed);

  delay(1000);
}

https://github.com/nathanaellpratama/Tugas-Besar-Sistem-Kendali-dan-Mekanika

* **Tautan Video Demonstrasi:**
*https://drive.google.com/file/d/1JsvnwqGIu7z3ivJDboA56tFSov0b2ORp/view?usp=drivesdk*

* **Dokumentasi Foto Alat:** 

![DOKUMENTASI_PENGERJAAN](https://hackmd.io/_uploads/SkM3nsC4Wl.jpg)

![FOTO ALAT](https://hackmd.io/_uploads/HkIiTsRE-e.jpg)


![DOKUMENATASI 2](https://hackmd.io/_uploads/H1LEy2C4-l.jpg)


---

## Panduan Checklist Kelengkapan (Alat bantu saja untuk memastikan tidak ada yang terlewat. Sesuaikan dengan yang sebenarnya.)
- [x] Target Spesifikasi (Bab 1.3) terisi jelas.
- [x] Pemodelan Matematis ada (Bab 2.2).
- [x] Grafik Open Loop (Linearitas) ada (Bab 3.1).
- [x] Tabel Perbandingan minimal 3 variasi tuning ada (Bab 3.2).
- [x] Tabel Statistik Repeatability (5x data) ada (Bab 3.3).
- [x] Grafik Uji Gangguan ada (Bab 3.4).

## 6. Rubrik Penilaian dan Pembobotan
* **[PLO-3]** Kemampuan menyusun rancangan komponen, sistem dan/atau proses pada bidang teknik komputer untuk memenuhi kebutuhan yang diharapkan di dalam batasan-batasan realistis.
*  **[CLO-2]:** Mampu menyusun rancangan dan menganalisis sistem kendali loop tertutup dari kondisi transien hingga steady state untuk mencapai kestabilan.

### A. RUBRIK TUGAS BESAR CLO 2 (*Design & Analysis*)
**Bobot:** 5% dari Nilai Akhir Mata Kuliah.



**Aspek 1: Desain Spesifikasi dan Pemodelan (40 Poin)**
| Level | Poin | Deskripsi Kriteria |
| :--- | :---: | :--- |
| **_Exemplary_** | **40** | Target spesifikasi ($T_s, M_p$) memiliki **alasan kuantitatif**. Diagram blok lengkap (*Closed-loop*) dan model matematis *Plant*, Z-N, atau PID dijelaskan dengan referensi yang benar. |
| **_Satisfactory_** | **30** | Diagram blok benar dan target spesifikasi ada. Alasan penetapan angka kurang kuat atau model matematis hanya bersifat umum. |
| **_Needs Improvement_** | **15** | Diagram blok tidak lengkap atau salah. Tidak ada target spesifikasi jelas, atau model matematis salah konsep. |
| **_Unsatisfactory_** | **0** | Tidak ada bab desain atau terindikasi plagiasi. |

**Aspek 2: Analisis Kritis Respon Transien (60 Poin)**
| Level | Poin | Deskripsi Kriteria |
| :--- | :---: | :--- |
| **_Exemplary_** | **60** | Analisis tajam menjelaskan **korelasi fisik** *gain* PID terhadap grafik ($T_d, T_r, T_p, M_p, T_s$). Menjelaskan *trade-off* desain dengan logis. |
| **_Satisfactory_** | **45** | Penjelasan benar secara teori namun bersifat **deskriptif** (hanya membaca grafik) tanpa analisis yang mendalam. |
| **_Needs Improvement_** | **25** | Analisis dangkal atau keliru. Kesimpulan bertentangan dengan data grafik. Hanya menyalin teori buku. |
| **_Unsatisfactory_** | **0** | Tidak ada analisis. |

---
---
* **[PLO-6]** Kemampuan menerapkan metode, keterampilan dan piranti teknik modern yang diperlukan untuk praktek keteknikan dalam bidang teknik komputer.
* **[CLO-3]:** Mampu menentukan dan menerapkan penggunaan kendali proporsional, integral, atau derivatif pada motor listrik untuk mencapai kestabilan.
---

### B. RUBRIK TUGAS BESAR CLO 3 (*Implementation & Tools*)
**Bobot:** 20% dari Nilai Akhir Mata Kuliah.

**Aspek 1: Metodologi *Tuning* dan Validitas Data (40 Poin)**
| Level | Poin | Deskripsi Kriteria |
| :--- | :---: | :--- |
| **_Exemplary_** | **40** | Ada grafik *Open-Loop*. Melakukan minimal **3 variasi *tuning***. Menyertakan bukti **Uji Repetisi (minimal 5x)** dengan standar deviasi kecil (data valid). |
| **_Satisfactory_** | **30** | Ada tuning PID dan alat jalan. Data perbandingan minim (<3) atau tidak ada uji repetisi (hanya sekali coba). |
| **_Needs Improvement_** | **15** | Metode tuning tidak jelas (*trial-error* acak). Grafik respon tidak jelas skalanya atau terlihat fiktif. |
| **_Unsatisfactory_** | **0** | Data fiktif atau tidak ada data. |

**Aspek 2: Kestabilan dan *Robustness* (30 Poin)**
| Level | Poin | Deskripsi Kriteria |
| :--- | :---: | :--- |
| **_Exemplary_** | **30** | Sistem stabil ($e_{ss} \approx 0$). Mampu ***Self-Recovery* (kembali stabil)** dengan cepat saat diberi gangguan fisik. Ada grafik bukti respon gangguan. |
| **_Satisfactory_** | **20** | Sistem stabil mencapai *setpoint*. Respon gangguan lambat atau berosilasi lama. Dokumentasi gangguan kurang jelas. |
| **_Needs Improvement_** | **10** | Sistem mencapai *setpoint*, tetapi tidak stabil (getar atau *drift*), gagal, atau berhenti saat diberi gangguan kecil. |
| **_Unsatisfactory_** | **0** | Alat tidak berfungsi. |

**Aspek 3: Demonstrasi Alat & Tanya Jawab (30 Poin) --> *Penilaian Individu***
| Level | Poin | Deskripsi Kriteria |
| :--- | :---: | :--- |
| **_Exemplary_** | **30** | Demo sempurna dan rapi. Mahasiswa menjawab pertanyaan teknis (seperti pemrograman dan rangkaian) dengan lancar dan paham secara mendetail. |
| **_Satisfactory_** | **20** | Demo ada kendala minor. Menjawab pertanyaan cukup baik meski ragu pada detail teknis. |
| **_Needs Improvement_** | **10** | Alat sering *error* saat demo. Mahasiswa bingung dengan alatnya sendiri (tidak menguasai). |
| **_Unsatisfactory_** | **0** | Tidak hadir demonstrasi dan presentasi. |

---
