---
# System prepended metadata

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

---

# Laporan Proyek Sistem Kendali PID pada Robot Obstacle Avoidance

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

---

## 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:7** 
............................................................
* **Muhammad Azhar Ismail 1 (101032300061):** ............................................................
* **Ilma Julianti 2 (101032330052):** ............................................................
* **Farrel Erza Farandi 3 (101032330169):** ............................................................
* **Ahmad Ghazali El-Faruqi Hsb  4 (101032330080):** ............................................................
* **Farhan Aldizha Abadi 5 (101032300189):** 
............................................................
---

## 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
Robot berbasis differential drive (2 motor DC) banyak digunakan dalam otomasi dan edukasi, namun menghadapi tantangan berupa kemampuan bergerak aman di lingkungan yang memiliki rintangan. Robot harus mampu mendeteksi rintangan menggunakan sensor jarak dan menjaga jarak aman secara stabil tanpa osilasi berlebih, oleh karena itu, pada proyek ini diterapkan  sistem kendali tertutup(closed-loop) berbasis PID untuk mengatur sinyal PWM motor berdasarkan error jarak terhadap setpoint, sehingga robot dapat menjaga jarak target, merespon perubahan kondisi dengan cepat, serta melakukan gerakan pengubah arah untuk menghindar ketika rintangan terlalu dekat. 

### 1.2 Tujuan (*sesuaikan isinya dengan proyek kelompok*)
Tujuan dari proyek tugas besar ini adalah sebagai berikut:

1. Merancang dan mengimplementasikan sistem kendali tertutup(closed-loop control)berbasis PID untuk mengatur kecepatan motor robot sehingga robot mampu menjaga jarak aman terhadap obstacle sesuai set point yang telah ditentukan yaitu 15cm menggunakan sensor ultrasonik. 

2. Menganalisis performa respon transien sistem kendali PID terhadap perubahan jarak rintangan (gangguan/step input), dengan mengevaluasi parameter performa seperti setting time($T_s$), max overshoot($M_p$), dan steady-state error($e_{ss}$) berdasarkan data hasil percobaan robot

3. Menguji kemampuan obstacle avoidance dan robustness sistem kendali, yaitu memastikan robot dapat menghindari tabrakan saat jarak rintangan lebih kecil dari batas aman misalnya 10cm dengan melakukan gerakan mengubah arah seperti belok atau rotasi, serta memastikan robot dapat kembali ke kondisi stabil setelah menghindar tanpa osilasi berlebih.

4. melakukan tuning parameter PID : $$K_p, K_i, K_d$$menggunakan metode trial & error untuk memperoleh nilai gain yang menghasilkan respon cepat, stabil, dan aman sesuai target spesifikasi performance


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


| Parameter Kinerja | Simbol | Target Nilai | Alasan/Justifikasi (Mengapa memilih angka ini?) |
| :--- | :---: | :--- | :--- |
| **Settling Time** | $T_s$ | < 3 detik | *Agar robot cepat stabil kembali menjaga jarak setelah ada gangguan/rintangan* |
| **Max. Overshoot** | $M_p$ | < 20% | *Mencegah jarak robot terlalu jauh atau terlalu dekat dari jarak target * |
| **Steady State Error** | $e_{ss}$ | ≤ 5% (≤0.75cm) | *supaya setelah robot berhenti menyesuaikan, jaraknya tetap hampir sama dengan jarak target yaitu 15cm, jadi robot tidak terlalu dekat atau terlalu jauh dari rintangan.* |
| **Kriteria Kestabilan** |  | ± 5% | *batas toleransi 5% agar robot dianggap stabil dan jaraknya tetap dekat dengan jarak target* |

---

## 2. Desain dan Pemodelan Sistem

### 2.1 Diagram Blok Sistem
*(Gambarkan Diagram Blok Closed-Loop lengkap. Tunjukkan: Setpoint, Error, Controller, Actuator, Plant, Sensor. Jelaskan diagram blok tersebut secara jelas!).*

![image](https://hackmd.io/_uploads/r1ZBrITE-e.png)
**


Penjelasan Diagram Blok
1. Set Point
Set point pada sistem ini adalah batas jarak aman antara robot dan halangan di depan robot. Nilai target yang digunakan adalah 15 cm. Kalau jarak yang terdeteksi sensor lebih besar dari 15 cm, pada robot dianggap berada pada kondisi aman dan dapat bergerak maju. Kalau jarak yang terdeteksi kurang dari 15 cm, maka robot akan melakukan aksi (belok atau menghindar) agar kembali ke kondisi aman.


3. Controller (Arduino Uno)
controller pada sistem ini menggunakan Arduino Uno digunakan untuk menjalankan algoritma PID, lalu arduino akan mengambil nilai eror tadi, lalu dihitung lagi pakai PID supaya keluar sinyal kendali yang pas. Intinya PID bikin gerakan robot jadi lebih enak: robot tidak langsung belok mendadak, tapi beloknya bisa bertahap dan stabil sesuai seberapa dekat obstacle-nya

4. Actuator (L298N Motor Driver)
Actuator pada sistem ini menggunakan L29N motor driver, lalu motor driver dapat menerima PWM dan sinyal arah perintah dari arduino, lalu mengubahnya jadi arus dan tegangan yang cukup untuk motor driver L289N jadi penghubung antara sinyal Arduino dan motor dc.

5. Process (Motor DC)
Process pada sistem ini ada pada motor dc, saat motor dc terima PWM yang udah dikoreksi oleh PID, lalu motor menghasilkan torsi dan kecepatan untuk robot bisa bergerak maju atau belok. Process ini juga bisa dipengaruhi oleh gangguan contohnya permukaan lantai, baterai lemah dan beban robot nya

6. Controlled Variable
Controlled Variable pada sistem ini adalah jarak robot antara halangan di depan. jaraknya ini yang dijaga dimana agar tetap pada kondisi aman. saat jarak nya kurang dari 15cm, sistem akan mengubah gerakan robot bisa aja belok atau mundur sampai jaraknya kembali aman

7. sensor (Ultrasonic HC-SR04)
Sensor yang digunakan pada sistem robot ini adalah ultrasonic HC-SR04, sesnsoor ini berfungsi untuk mengukur jarak objek di depan dengan memancarkan gelombang ultrasonik dan membaca pantulannya.

8. Feedback
Feedback  yang ada pada sistem robot ini dari jarak HC-SR04 setelah robot bergerak atau belok. Jadi setelah robot belok atau berubah gerak, sensor akan baca jarak lagi. Nilai jarak terbaru itu balik lagi ke comparator untuk dihitung error baru, Karena proses ini terus berulang, robot supaya tetap aman dari halangan secara real-time, bukan cuma sekali.

### 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}$$

dengan :
- u(t: sinyal kendali (dalam implementasi berupa nilai PWM ke drive motor)
- e(t): error (selisih antara jarak referensi dan jarak aktual),
- Kp : gain proposional,
- ki : gain internal
- kd : gain derivatif

Di sini, $u(t)$ adalah sinyal kendali yang keluar dari PID dan dipakai untuk mengatur motor lewat driver L298N, jadi bentuk akhirnya berupa nilai PWM. $e(t)$ adalah error, yaitu selisih antara jarak target dan jarak yang terbaca sensor ultrasonik. Pada robot ini target jaraknya $d_{ref}=15\,\text{cm}$, sedangkan jarak aktualnya $d(t)$, sehingga error dapat ditulis:

$$e(t)=d_{ref}-d(t)$$

Parameter $K_p$, $K_i$, dan $K_d$ masing-masing adalah penguat untuk bagian proporsional, integral, dan derivatif. Bagian proporsional membuat respon cepat karena nilainya langsung mengikuti besar error. Bagian integral menjumlahkan error dari waktu ke waktu supaya sisa error yang “nempel” bisa hilang dan robot benar-benar balik ke jarak aman. Bagian derivatif melihat perubahan error, jadi kalau jarak turun cepat, sistem bisa menahan respon yang terlalu agresif. Efeknya gerakan robot lebih halus, tidak gampang berlebihan, dan lebih stabil saat menghindari obstacle.


**B. Metode Tuning Ziegler-Nichols (Z-N)**
Wajib memilih salah satu metode Z-N sebagai dasar penentuan parameter:
* **Tipe 1 (Osilasi Kontinu):** Berdasarkan $K_p$' dan $T_c$ saat sistem mulai berosilasi stabil.
Pada penelitian ini, penentuan parameter $K_p$, $K_i$, dan $K_d$ dilakukan menggunakan pendekatan trial and error (eksperimen langsung), yaitu dengan melakukan pengujian berulang hingga didapatkan respons yang memenuhi target performa, yaitu:
- settling time $T_s$ < 3 detik
- overshoot $M_p$ < 20%
- steady-state error $e_{ss}$ ≤ 5%
- serta sistem stabil pada band ±5% dari setpoint.
proses tunning dilakukan bertahap:
1. meningkatkan $K_p$ hingga respons cukup cepat namun tetap terkendali
2. menambahkan $K_i$ untuk mengurangi steady-state error
3. menambahkan $K_d$ untuk meredam osilasi dan mengurangi overshoot.

parameter yang diperoleh kemudian diuji konsistensinya melalui repeatibility test sebanyak 5 kali untuk memastikan performa stabil dan hasil pengukuran valid.
**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}$$
    dengan : 
    - ω(s) = kecepatan sudut motor
    - V(s)= tegangan input (dalam impelemntasi dikendalikan PWM)
    - K = gain motor
    - 𝜏 = konstanta waktu motor
Model orde-1 ini digunakan sebagai pendekatan dasar karena respon motor DC pada umumnya dapat diperkirakan memiliki dinamika eksponensial menuju kondisi steady-state.
### 2.3 Spesifikasi Perangkat Keras
* **Motor:** Dc motor gearbox 3-6v
* **Driver:** Driver motor L298N Dual H-Bridge
* **Sensor:** HC-SR04 (range 2-400cm, resolusi ± 0.3 cm) 
* **Kontroler:** Arduino uno ATmega328 SMD (16MHz)

---

## 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.*
> Saat hanya menggunakan propotional, robot akan tidak stabil, jumping serta bergerak memutar karena

### 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):** Pada pengujian open-loop (tanpa PID), kecepatan motor diukur menggunakan metode visual dengan memberikan penanda pada ban robot, kemudian menghitung jumlah putaran dalam interval waktu tertentu. Dari hasil pengamatan, motor menghasilkan 10 putaran dalam 4 detik pada awal pengujian (setara dengan 150 RPM), kemudian pada interval berikutnya motor menghasilkan 10 putaran dalam 3 detik (setara dengan 200 RPM). Namun, terdapat kondisi motor mati secara periodik selama 2 detik pada beberapa interval (4–6 s, 9–11 s, dan 14–16 s). Hal ini menunjukkan bahwa sistem open-loop tidak stabil dan tidak konsisten, kemungkinan akibat tegangan suplai yang turun, dead-zone pada motor/driver, atau sinyal PWM yang tidak kontinu. Oleh karena itu, diperlukan kontrol tertutup (PID) agar motor dapat mempertahankan kecepatan yang lebih stabil dan tidak mengalami kondisi mati secara berulang.

**Grafik Karakteristik:**
![image](https://hackmd.io/_uploads/BJ7yUcTNbg.png)

**Analisis:**
1.  Apakah grafik membentuk garis lurus? (Semakin linear semakin mudah dikendalikan).
Jawab : grafik tidak liner, karena kenaikan PWM tidak menghasilkan kenaikan RPM yang proposional. 

2.  Pada *input* berapa motor baru mulai bergerak? (Misal: Di bawah PWM 15% motor diam).
Jawab : dari data grafik motor terlihat sudah berputar bahkan di 0%
3.  Apakah ada titik ketika *input* dinaikkan tetapi *output* tidak bertambah lagi?
Jawab : ya ada, mulai sekitar PWM 10% sampai 100%, pada RPM nya tidak naik lagi atau turun, dimana ini menunjukkan kondisinya saturasi atau pada PWM nya tidak mempengaruhi kecepatan motor

### 3.2 Analisis Perbandingan Respons (*Step Response*)

1. Skenario 1 ![image](https://hackmd.io/_uploads/SJQrNFRE-l.png)
2. Skenario 2
![image](https://hackmd.io/_uploads/Hy3q4YANWe.png)

3. Skenario 3
![image](https://hackmd.io/_uploads/ByfpEtANbl.png)

4. Skenario 4 (perbandingan P, PI & PID)
![image](https://hackmd.io/_uploads/HkCKpq6Vbg.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 (Misal: Hanya P) |$K_p =7.5, K_i=0, K_d=0$| 0 | 0 | 0.357s | 2090s (3805)| 36,29% | 0.12% |
| #2 (Misal: Osilasi) |$K_p=3.6 , K_i=2.5 , K_d=0$ |0  | 0 | 0.401s | 1.633s | 17.64% | 0.65% |
| #3 (PID Optimal) | $K_p=1.4, K_i=0.8, K_d=0.25$ | 0| 0 | 0.407s | 0.613s |6.22%  | 0.03% |

### 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 | 0.61s | 6.20 |
| 2 | 0.62 | 6.30|
| 3 | 0.60| 6.10 |
| 4 | 0.63| 6.40|
| 5 | 0.61| 6.25|
| **Rata-rata ($\mu$)** | **0.614** | **6.25** |
| **Standar Deviasi ($\sigma$)** | **0.011** | **0.11** |

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

### 3.4 Uji Gangguan (Disturbance Rejection)
Gambar : 
![image](https://hackmd.io/_uploads/HkJ1M3CN-x.png)
Penjelasan analisis : Dari grafik, gangguan berakhir sekitar t ≈ 3,2 detik (ujung area abu-abu). Setelah itu kurva biru turun kembali mendekati setpoint 15 cm dan terlihat sudah stabil lagi sekitar t ≈ 4,4–4,5 detik (sudah sangat dekat 15 cm dan tidak berubah signifikan).

Jadi Recovery Time ≈ 4,5 − 3,2 = 1,3 detik (≈ 1,2–1,3 detik).

---

## 4. Evaluasi dan Analisis Kinerja

### 4.1 Validasi Spesifikasi
| Parameter kerja | simbol  | target (1.3)   | hasil uji konsistensi(rata rata 3.1)| status
| :---: | :---: | :---: |:---: |:---: |
| **Settling Time** | $T_s$ | 6.20 |0.614|Tercapai✅ 
| **Max. Overshoot**| $M_p$ | 6.30|6.25%|Tercapai✅ 
| **Steady State Error**| $e_{ss}$| 6.10 |0.03% (dari hasil PID optimal)|Tercapai✅ 
| **Kriteria Kestabilan** | ± 5%| 6.40|Respon berada dalam range target toleransi ±5% setelah 0.614 s|Stabil✅ 

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

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.
        jawab : Berdasarkan hasil pengujian, perubahan parameter gain mempengaruhi karakteristik respon sebagai berikut. Nilai $K_p$ yang lebih besar pada kontrol P menyebabkan respons awal lebih cepat namun menghasilkan overshoot dan osilasi yang besar yaitu 36.29%, sehingga sistem cenderung melewati setpoint sebelum stabil. Pada kontrol PI, penambahan $K_i$membantu mengurangi steady-state error dan mempercepat tercapainya setpoint yang akurat, sehingga overshoot menurun menjadi 17.64% dan settling time menjadi 1.6333 s. Pada kontrol kontrol PID optimal. penambahan Kd berfungsi sebagai peredam yang dapat menekan osilasi, menghasilkan overshoot paling kecil yaitu 6.22% serta settling time tercepat di 0.613 s. Hasil ini menunjukkan bahwa kombinasi $K_p$, $K_i$, dan $K_d$ yang seimbang mampu meningkatkan kecepatan sekaligus kestabilan sistem. untuk data yg di dapatkan yaitu P : overshoot 36.29% ( gagal target < 20%), PI : overshoot 17.64% (lolos), PID : overshoot 6.22% (lolos) dan PID mempunyai Ts paling cepat yaitu 0.613s
3.  **Analisis Stabilitas:** 
    a. Berdasarkan Uji Gangguan (Bab 3.4), seberapa tangguh sistem kelompok Anda? Apakah terjadi osilasi berlebih saat beban dilepas?
    **Jawab:** Berdasarkan grafik “PID Optimal dengan Gangguan”, sistem menunjukkan kemampuan disturbance rejection yang baik. Saat gangguan diberikan (ditandai area abu-abu, sekitar t ≈ 2,0 s hingga 3,2 s), keluaran (jarak) mengalami penyimpangan dari setpoint 15 cm, yaitu naik hingga sekitar 15,8–16,0 cm. Namun setelah gangguan terjadi, respons sistem tidak menunjukkan osilasi berlebih (tidak terjadi naik–turun tajam berulang dalam amplitudo besar). Kurva keluaran cenderung kembali secara halus menuju setpoint dengan osilasi kecil yang cepat teredam. Saat gangguan dilepaskan, sistem juga tidak mengalami “pantulan” yang besar, sehingga dapat disimpulkan bahwa sistem cukup tangguh dan stabil dalam menghadapi gangguan fisik sesaat.
    b. Apakah metode *tuning* PID yang kelompok Anda gunakan sudah optimal untuk membuat sistem stabil dan mempertahankan kestabilannya?
    **Jawab:** Hasil perbandingan respons tanpa gangguan dan dengan gangguan menunjukkan bahwa metode tuning PID yang digunakan sudah efektif dan stabil untuk menjaga jarak terhadap setpoint 15 cm. Pada kondisi tanpa gangguan, keluaran cepat mendekati setpoint dengan osilasi kecil dan kemudian stabil. Ketika gangguan diberikan, sistem memang menyimpang, tetapi penyimpangan tersebut relatif kecil (overshoot sekitar ±1 cm) dan sistem tetap mampu kembali menuju setpoint tanpa gejala ketidakstabilan atau osilasi berkepanjangan. Hal ini menunjukkan bahwa parameter PID yang digunakan sudah cukup “optimal” secara praktis untuk robot, karena mampu menyeimbangkan respons yang cukup cepat, osilasi yang teredam, serta kemampuan mempertahankan kestabilan meskipun terjadi gangguan.
4.  **Trade-off Desain:** Apa yang kelompok Anda korbankan untuk mencapai kestabilan? (Misal: Respon jadi agak lambat demi menghilangkan *overshoot*).
**Jawab:** yang dikorbankan adalah kecepatan respons (rise time/recovery bisa sedikit lebih lama) dan sebagian “ketajaman” respons, sebagai gantinya sistem menjadi lebih stabil, lebih halus, dan tidak overshoot/berosilasi berlebihan.
6.  **Evaluasi Hardware:** 
    a. Apakah ada batasan fisik (seperti driver motor atau resolusi sensor rendah) yang menghambat pencapaian target sesuai desain?
    **Jawab:** keterbatasan utama berasal dari L298N (drop tegangan), deadzone motor gearbox, serta noise/ketidakstabilan pembacaan HC-SR04. Kombinasi ini membuat kendali jarak sulit benar-benar halus di sekitar setpoint tanpa filtering dan pembatasan output.
    b. Apakah ada faktor mekanik (*gears, backlash*, gesekan) yang mengganggu hasil kendali?
    **Jawab:** gangguan mekanik paling dominan biasanya backlash gearbox, slip roda terhadap lantai, dan mismatch motor kiri–kanan, yang semuanya membuat respons plant tidak konsisten sehingga kontrol butuh kompromi (filtering, deadband, pembatasan PWM, dan tuning yang tidak terlalu agresif).
---

## 5. Kesimpulan dan Saran

### 5.1 Kesimpulan
1.  Sistem kendali PID **berhasil** diimplementasikan untuk mengatur jarak robot terhadap obstacle dengan parameter final: $K_p=1.4 , K_i=0.8, K_d=0.25$
2.  Kinerja sistem mencapai $T_s = 0.613$ detik dan Overshoot $6.22\%$.
3.  Tingkat konsistensi sistem ditunjukkan dengan standar deviasi sebesar 0.11

### 5.2 Saran Pengembangan
*1. Upgrade sensor jarak (lebih presisi & stabil)
Penelitian selanjutnya bisa mengganti HC-SR04 dengan sensor Time-of-Flight (ToF) seperti VL53L0X/VL53L1X atau menambahkan filter (median/Kalman). Tujuannya supaya pembacaan jarak lebih halus dan minim noise, sehingga PID tidak “terpancing” lonjakan data dan sistem jadi lebih stabil.
2. Untuk pengembangan selanjutnya, robot dapat ditambahkan modul line follower berbasis sensor inframerah (IR) agar mampu mengikuti jalur secara lebih terarah. Dengan adanya sensor IR, robot tidak hanya mengandalkan deteksi jarak dari HC-SR04, tetapi juga bisa menjaga posisi robot tetap berada di atas garis lintasan. Hal ini dapat meningkatkan konsistensi navigasi, terutama pada lintasan/labirin yang sudah diberi garis panduan, sehingga pergerakan robot lebih stabil dan tidak mudah keluar jalur.*

---

## Lampiran
* **Kode Program (Arduino/C++):** *(Lampirkan bagian loop kendali dan deklarasi variabel. Kode program lengkap unggah di Github. Pastikan dapat diakses oleh dosen).*
Link github : https://github.com/aldzhann23/Robot-Obstacle-Avoidance
* **deklarasi variabel**
* Deklarasi pin I/O

const int TRIG_PIN = 8;
const int ECHO_PIN = 9;
const int SERVO_PIN = 4;
const int ENA = 5;
const int IN1 = 12;
const int IN2 = 13;

const int IN3 = 10;
const int IN4 = 11;
const int ENB = 6;

* Deklarasi parameter tuning & batas motor

const int PWM_MAX_FWD  = 200;
const int PWM_MAX_BACK = 180;
const int PWM_MIN_MOVE = 60;

const int STOP_DIST_CM     = 20;
const int CRITICAL_DIST_CM = 12;

const int SERVO_CENTER = 90;
const int SERVO_RIGHT  = 10;
const int SERVO_LEFT   = 170;

* Deklarasi setpoint dan parameter PID
const float SETPOINT_CM = 15.0;

float Kp = 1.4;
float Ki = 0.8;
float Kd = 0.25;

* Deklarasi variabel “state” PID

float integral = 0.0;
float lastError = 0.0;
unsigned long lastTime = 0;
const float INTEGRAL_LIMIT = 250.0;

* **Loop Kendali C++**
void loop() {
  head.write(SERVO_CENTER);
  delay(30);

  // (1) MEASUREMENT: baca jarak (feedback dari sensor)
  float front = readDistanceFiltered(3);

  // ===== (2) LOGIC SAFETY / AVOID =====
  if (front <= CRITICAL_DIST_CM) {
    // aksi menghindar (bukan PID), lalu return
    stopMotors();
    delay(80);
    backward(300, 170);

    float rightD = lookAt(SERVO_RIGHT);
    float leftD  = lookAt(SERVO_LEFT);

    head.write(SERVO_CENTER);
    delay(120);

    if (leftD > rightD && leftD > STOP_DIST_CM) {
      turnLeft(380, 180);
    } else if (rightD >= leftD && rightD > STOP_DIST_CM) {
      turnRight(380, 180);
    } else {
      turnRight(600, 180);
    }
    return;
  }

  // ===== (3) CONTROLLER: hitung output kontrol PID =====
  int pwm = pidDistance(front);

  // (4) ACTUATOR: kirim sinyal ke motor (PWM maju/mundur)
  if (abs(front - SETPOINT_CM) < 2.0f) {
    stopMotors();          // deadband
  } else {
    drivePWM(pwm);         // jalankan motor sesuai output PID
  }

  delay(30);
}

* **Tautan Video Demonstrasi:**
Link Video demonstrasi : 
penjelasan kodingan : https://drive.google.com/file/d/1-kLWhefaKmCwCLRLehF80wvHLmcYfj8d/view?usp=sharing
Link Video Demonstrasi : https://drive.google.com/drive/u/0/folders/1-0vqIMjhq_GBZODhMDLvrgwsBoN3EGmr

* **Dokumentasi Foto Alat:** 
dokumentasi : https://drive.google.com/drive/u/0/folders/1-0vqIMjhq_GBZODhMDLvrgwsBoN3EGmr


---

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

---
