---
# System prepended metadata

title: Laporan Proyek Sistem Kendali PID pada Motor Listrik (Tugas Besar CLO 2 dan CLO 3)

---

# Laporan Proyek Sistem Kendali PID pada Motor Listrik (Tugas Besar CLO 2 dan CLO 3)

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

**IDENTITAS KELOMPOK:**
* **Nama Kelompok: Berlima** 
* **Nama Mahasiswa 1 (NIM):** 
* Ginan Surya Irawan (101032300109)
* Muhammad Fatihudin Al Banjary (101032300155)
* Putra Banindya Kinanta Erlangga (101032300161)
* Fandy Rifky Melani Saputra (101032300181)
* Muhammad Naufal Cahya Ramadhana (101032300188)
---

## 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
Motor listrik merupakan salah satu aktuator utama dalam penerapan berbagai macam sistem mekatronika seperti pada bidang robotika, conveyor untuk industri, dan sistem otomasi bangunan. Pada aplikasi pintu putar otomatis yang kami rancang, motor tidak hanya dituntut untuk berputar saja, tetapi juga harus memiliki kecepatan yang stabil, respon yang halus juga akurasi sudut yang baik.
Diperlukan juga sistem kendali *closed-loop* dengan feedback sensor untuk meningkatkan kestabilan dan presisi. Maka dari itu, kami menggunakan sistem PID (Proportional-Integral-Derivative) pada kecepatan demi meningkatkan kestabilan dan presisi, serta kontrol sudut dengan encoder, yang dipicu oleh sensor ultrasonik sebagai pendeteksi keberadaan objek.

### 1.2 Tujuan (*sesuaikan isinya dengan proyek kelompok*)
1.  Merancang sistem kendali tertutup (*closed-loop*) berbasis PID pada motor DC.
2.  Menganalisis respon transien sistem (*Rise time, Settling time, Overshoot*).
3.  Menguji ketahanan (*robustness*) sistem terhadap gangguan eksternal.
4.  Mengimplementasikan kontrol sudut putaran motor sebesar 120° dengan presisi.

### 1.3 Spesifikasi Desain (Target *Performance*)
| Parameter Kinerja | Simbol | Target Nilai | Alasan/Justifikasi |
| :--- | :---: | :--- | :--- |
| **Settling Time** | $T_s$ | < 3 detik | Agar pintu merespons cepat |
| **Max. Overshoot** | $M_p$ | < 10 % | Mencegah terjadinya hentakan pada motor |
| **Steady State Error** | $e_{ss}$ | ≈ 0 % | Menjaga kepresisian kecepatan |
| **Kriteria Kestabilan** |  | ± 5% | Toleransi differential gap |

---

## 2. Desain dan Pemodelan Sistem

### 2.1 Diagram Blok Sistem
Sistem dirancang sebagai **closed-loop control system** dengan komponen:
* Setpoint: Kecepatan motor (RPM)
* Controller: Kendali PID
* Actuator: Motor DC + Driver L298N
* Sensor: Encoder (feedback kecepatan & sudut)
* Trigger: Sensor ultrasonik
![WhatsApp Image 2026-01-03 at 8.44.29 PM](https://hackmd.io/_uploads/B1Ql4i8Vbx.jpg)



### 2.2 Pemodelan Matematis (Theoretical Modeling)

Bagian ini bertujuan untuk menunjukkan landasan teori sistem kendali yang digunakan. Sertakan referensi dari buku, jurnal bereputasi, dan/atau *datasheet*.

**A. Model Algoritma Kontroler (PID)**
Tuliskan persamaan matematis kontroler PID yang diimplementasikan:
$$u(t) = K_p e(t) + K_i \int e(t) dt + K_d \frac{de(t)}{dt}$$
Bentuk matematis yang diimplementasikan dalam Kode Mikrokontroller:
![Screenshot 2026-01-03 173847](https://hackmd.io/_uploads/rkF1MdIV-g.png)

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

* **Tipe 1 (Osilasi Kontinu):** Berdasarkan $K_p$' dan $T_c$ saat sistem mulai berosilasi stabil.

**C. Model Plant (Motor)**
Pilih salah satu model di bawah ini sesuai dengan jenis motor yang Anda gunakan:

* **Opsi 1: Motor DC (*Speed Control*)**
    Secara teoritis, motor DC didekati sebagai sistem **Orde 1**.
    $$G(s) = \frac{\omega(s)}{V(s)} = \frac{K}{\tau s + 1}$$
    *(yang mana output adalah Kecepatan Sudut $\omega$).*

### 2.3 Spesifikasi Perangkat Keras
* **Motor:** DC Gear Motor 25GA370, 12V, 60 RPM
* **Driver:** L298N Dual H-Bridge
* **Sensor:** Encoder incremental (±660 PPR output), Ultrasonic HC-SR04
* **Kontroler:** Arduino Uno (ATmega328P, 16 MHz)

---

## 3. Implementasi dan Pengujian

> **⚠️ Syarat data yang harus ada:**
> 1.  **Analisis Komparatif:** **Minimal** **3 Variasi *Tuning*** (Misal: Hanya Proporsional vs PI vs PID Optimal).
> 2.  **Uji Konsistensi (*Repeatability*):** Pada *tuning* terbaik, lakukan **minimal 5x percobaan** berulang untuk mendapatkan rata-rata dan standar deviasi.
> 3.  **Uji Gangguan (*Disturbance*):** Minimal satu grafik yang menunjukkan respons sistem saat diberi beban atau gangguan tiba-tiba.
> 
> *Catatan: Untuk poin 1 dan 2, lebih banyak lebih baik, karena akan semakin menghasilkan banyak data untuk dianalisis dan dibandingkan.*

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

Lakukan pengujian respon motor **tanpa algoritma PID** (*Open Loop*) untuk melihat perilaku aslinya.
*(Pilih satu skenario di bawah ini sesuai jenis motor kelompok Anda)*:

* **Skenario A (Motor DC - Kecepatan):** Berikan PWM bertahap (0% s.d. 100%), catat RPM yang dihasilkan (*jika sulit menggunakan tachometer seperti yang digunakan saat asesmen praktik CLO 1, dapat menggunakan TCRT5000 atau Optocoupler Speed Sensor yang dihubungkan ke mikrokontroler*).
![image](https://hackmd.io/_uploads/HJmy0K8Ebl.png)
* PWM < 15 → motor tidak berputar (dead zone).
* PWM 20–45 → hubungan PWM–RPM hampir linear.
* PWM ≥ 45 → saturasi, kenaikan RPM kecil.
* Saat PWM turun ke 0, RPM tidak langsung nol karena inersia mekanik.

**Grafik Karakteristik:**
* **Value 1:** Nilai PWM.
* **Value 2:** RPM.
![Screenshot 2026-01-03 185229](https://hackmd.io/_uploads/SkX45KIVbg.png)


**Analisis:**
1.  Apakah grafik membentuk garis lurus? (Semakin linear semakin mudah dikendalikan).
Tidak membentuk garis lurus sepenuhnya
2.  Pada *input* berapa motor baru mulai bergerak?
Motor mulai bergerak pada PWM melewati 20.
3.  Apakah ada titik ketika *input* dinaikkan tetapi *output* tidak bertambah lagi?
Ada, pada PWM sekitar 45-50.

### 3.2 Analisis Perbandingan Respons (*Step Response*)
*(Tampilkan grafik perbandingan dari 3 skenario tuning atau lebih).*
Grafik :  
Biru : Setpoint RPM (30 RPM)
Oranye = RPM Aktual
Hijau = P
Kuning = I
Ungu = D

#1
![image](https://hackmd.io/_uploads/r10__3LV-e.png)

#2
![image](https://hackmd.io/_uploads/BJ-mOhUEWx.png)

#3 
![image](https://hackmd.io/_uploads/Sk5xUhLE-x.png)

**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  | Kp : 2.0 | ≈0.15 | Tidak tercapai | Tidak tercapai | Tidak tercapai | 0% | Besar (≈21 RPM) |
| #2 PI | Kp : 2.0, Ki : 4.0 | ≈ 0.15-0.30 | ≈ 1.2-1.6 | ≈ 1.6-2.0 | ≈ 2.5-3.5 | ≈ 3% | 0 RPM |
| #3 PID | Kp : 1.4, Ki : 5.5, Kd : 0.15 | ≈ 0.15 | ≈ 1.3-1.5 | ≈ 2.0 | ≈ 3.5-4.0 | ≈ 13% | ≈ 0 RPM |
| #3 (PID Optimal) | Kp : 1.8, Ki : 4.0, Kd : 0.1 | ≈ 0.25 | ≈ 1.2 | ≈ 1.6 | ≈ 2.5 | ≈ 6-8% | ≈ 0 RPM |

### 3.3 Uji Konsistensi (Repeatability Test)
*(Ambil Skenario #3 (Optimal), jalankan 5 kali atau lebih dari posisi diam ke setpoint).*

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

| Percobaan Ke- | *Settling Time* ($T_s$) | *Overshoot* (%) |
| :---: | :---: | :---: |
| 1 | 3.8s | 2.8% |
| 2 | 3.9s | 2.8% |
| 3 | 3.7s | 2.8% |
| 4 | 3.8s | 2.8% |
| 5 | 3.9s | 2.8% |
| 6 | 3.8s | 2.8% |
| **Rata-rata ($\mu$)** | **3.82s** | **2.8%** |
| **Standar Deviasi ($\sigma$)** | **≈ 0.08s** | **0%** |

*(Nilai standar deviasi yang kecil menunjukkan sistem kelompok Anda reliabel, data valid, dan konsisten).*

### 3.4 Uji Gangguan (Disturbance Rejection)
*(Tampilkan grafik respons saat motor sedang stabil di setpoint, lalu beri gangguan fisik sesaat).*
* **Gambar:** *Screenshot* Serial Plotter saat gangguan terjadi.
![image](https://hackmd.io/_uploads/ryAC26L4bl.png)
* **Analisis:** Berapa detik waktu yang dibutuhkan sistem untuk kembali stabil (*Recovery Time*)?
Setelah kami memberikan gangguan fisik berupa menahan sesaat motor menggunakan tangan, sistem PID dapat mengembalikan kecepatan motor ke setpoint 30 RPM setelah gangguan fisik sesaat. Gangguan menyebabkan penurunan kecepatan hingga sekitar 23 RPM, namun pengendali PID meningkatkan sinyal PWM secara signifikan untuk mengompensasi gangguan tersebut. Sistem kembali stabil di rentang ±5% setpoint dengan recovery time sekitar 6 detik, tanpa osilasi berlebih dan tanpa error steady-state.
---

## 4. Evaluasi dan Analisis Kinerja

### 4.1 Validasi Spesifikasi
*(Bandingkan **Rata-rata** hasil Tabel 2 dengan **Target** di Bab 1.3. Apakah tercapai?)*
Hasil dari hasil yang didapatkan dengan target tercapai, hanya pada settling timenya lebih sedikit dari target.

### 4.2 Analisis Mendalam
*(Jawab dengan paragraf analisis kritis)*

1.  **Analisis Pengaruh *Gain*:** Dari data yang sudah dihasilkan, perubahan nilai gain sangat mengubah bentuk pada grafik. Saat hanya menggunakan Kp, sistem bisa bergerak tetapi RPM tidak bisa menyentuh ke setpoint. Error steady state besar. Hanya bisa berada pada 10 RPM dan cenderung tidak stabil. Saat menambahkan Ki, RPM bisa mencapai setpoint karena integral ikut membantu kontrol dan koreksi error. Tetapi, pada percobaan diatas terdapat overshoot berlebih sehingga pergerakan motor masih kurang halus. Setelah Kd ditambahkan, motor menjadi lebih halus karena Kd membantu meredam lonjakan sehingga grafik yang dihasilkan lebih stabil dan gerak motor menjadi lebih halus.  
2.  **Analisis Stabilitas:** 
    a. Berdasarkan Uji Gangguan (Bab 3.4), seberapa tangguh sistem kelompok Anda? Apakah terjadi osilasi berlebih saat beban dilepas?
    Sistem cukup tangguh karena pada saat sistem diberikan gangguan fisik, RPM hanya drop sebentar dan kembali koreksi lagi mendekati setpoint dan stabil kembali
    b. Apakah metode *tuning* PID yang kelompok Anda gunakan sudah optimal untuk membuat sistem stabil dan mempertahankan kestabilannya?
    Mungkin metode tuning kami cukup optimal untuk stabilitas, tetapi secara performa dan kehalusan belum bisa optimal. Overall tuning sistem kami berada pada zona stabil.
4.  **Trade-off Desain:** Apa yang kelompok Anda korbankan untuk mencapai kestabilan? Kelompok kami mengorbankan kecepatan respon demi mencapai kestabilan, walaupun dengan konsekuensi settling/recovery timenya menjadi lebih panjang.
5.  **Evaluasi Hardware:** 
    a. Apakah ada batasan fisik (seperti driver motor atau resolusi sensor rendah) yang menghambat pencapaian target sesuai desain?
    Kemungkinan pada Driver L298N yang sering drop voltasenya, contoh pada RPM rendah setpoint 30 RPM, perubahan PWM kecil bisa tidak langsung mengeluarkan torsi yang cukup. Pembacaan RPM pada encoder juga menjadi tantangan karena ketidakefisiensian itu. Jika interval sampling terlalu pendek, RPM bisa loncat dan jika sebaliknya sistem akan menjadi lambat.
    b. Apakah ada faktor mekanik (*gears, backlash*, gesekan) yang mengganggu hasil kendali?
    Faktor mekanik seperti gesekan, dan perubahan beban mungkin mengganggu hasil. Pada kecepatan rendah, motor tidak bisa langsung berputar halus karena adanya gesekan awal dan beban yang tidak selalu sama. Akibatnya, motor membutuhkan nilai PWM tertentu (cukup besar) supaya bisa mulai bergerak. Saat kontrol menaikkan PWM untuk “memaksa” motor bergerak, motor bisa langsung berputar lebih cepat dari yang diinginkan, sehingga muncul lonjakan kecepatan (overshoot).
---

## 5. Kesimpulan dan Saran

### 5.1 Kesimpulan
1.  Sistem kendali PID **berhasil** diimplementasikan dengan parameter final: $K_p= 1.8, K_i= 4, K_d= 0.1$.
2.  Kinerja sistem mencapai $T_s = 3,82$ detik dan Overshoot $2.8\%$.
3.  Tingkat konsistensi sistem ditunjukkan dengan standar deviasi sebesar 0.08

### 5.2 Saran Pengembangan
Sistem dapat ditingkatkan dengan menggunakan sensor kecepatan dengan resolusi lebih tinggi, misal encoder dengan jumlah pulse lebih besar dapat meningkatkan akurasi pembacaan RPM dan mengurangi noise pada sinyal feedback. Pemilihan driver motor dengan respon arus yang lebih cepat juga bisa membantu meningkatkan performa sistem semakin cepat, presisi dan stabil pada berbagai kondisi.

---

## Lampiran
* **Kode Program Utama (Arduino/C++):** *(Lampirkan bagian loop kendali dan deklarasi variabel. Kode program lengkap unggah di Github. Pastikan dapat diakses oleh dosen).*
* **Tautan Video Demonstrasi:**
https://drive.google.com/file/d/17aIn5EQEhONP2AgKG3lm3wdzQg8zLFFh/view?usp=drivesdk
* **Tautan Link Github:**
https://github.com/banjayry/codearduino
* **Dokumentasi Foto Alat:** 
* ![WhatsApp Image 2026-01-04 at 12.10.38 AM](https://hackmd.io/_uploads/SkPfUkD4be.jpg)

![WhatsApp Image 2026-01-04 at 12.18.36 AM](https://hackmd.io/_uploads/BJiM8yD4bx.jpg)

![WhatsApp Image 2026-01-04 at 1.54.38 AM](https://hackmd.io/_uploads/B1x7IJD4-e.jpg)

![WhatsApp Image 2026-01-04 at 1.57.19 AM](https://hackmd.io/_uploads/SJX281vNbg.jpg)

![WhatsApp Image 2026-01-04 at 1.57.20 AM](https://hackmd.io/_uploads/BJqnUyD4Zg.jpg)


