---
# System prepended metadata

title: Laporan Proyek Random Eject Card

---

# Laporan Proyek Random Eject Card (Tugas Besar CLO 2 dan CLO 3)

**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: Kelompok 10
* Nama Mahasiswa 1 (NIM): Muhammad Fakhri Arrasyid (101032300150)
* Nama Mahasiswa 2 (NIM): Marsell Natanael Simanjorang (101032330222)
* Nama Mahasiswa 3 (NIM): Yoga Reswara (101032300119)
* Nama Mahasiswa 4 (NIM): Ilham Surya Kusuma (101032300143)

---

## 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
*Pada era digital saat ini permainan kartu fisik sering kali terasa monoton karena proses pengocokan manual yang memakan waktu dan repetitif. Berangkat dari kejenuhan ini, kamu merancang alat bernama "Random Card Ejector", Sebuah alat yang mengubah mekanisme pembagian kartu menjadi permainan ketangkasan bergaya arcade, Tidak sekadar melontarkan kartu secara otomatis, alat ini menuntuk pemain untuk menekan tombol pada momemtum visual yang tepat, lalu menciptakan interaksi nyata antara refleks manusia dan respons mesin.*

### 1.2 Tujuan (*sesuaikan isinya dengan proyek kelompok*)
1.  Merancang sistem kendali kecepatan pada Motor DC yang berfungsi sebagai   penggerak utama mekanisme pelontar kartu
2.  Menganalisis respon sistem terhadap gangguan berupa beban gesek saat proses pelontaran kartu terjadi
3.  Menentukan parameter PID(Kp,Ki,Kd) yang optimal untuk meminimalkan drop speed saat kartu keluar melewati mekanisme pelontar

### 1.3 Spesifikasi Desain (Target *Performance*)
*(Isi target ini SEBELUM melakukan tuning. Ini adalah acuan keberhasilan proyek).*

| Parameter Kinerja | Simbol | Target Nilai | Alasan/Justifikasi (Mengapa memilih angka ini?) |
| :--- | :---: | :--- | :--- |
| **Settling Time** | $T_s$ | < 3 detik(Kriteria 2%) | Dalam kode, terdapat safety timeout sebesar 6000 ms (MOVE_TIMEOUT_MS). Target $T_s < 3$ detik dipilih agar sistem memiliki margin of safety 50% dari batas gagal. Selain itu, loop kontrol PID berjalan setiap ~1 ms. Waktu 3 detik memberikan sistem kesempatan sebanyak ~3000 siklus komputasi ($N_{loops}$) untuk mengoreksi error, yang secara teoritis sangat cukup untuk meredam inersia motor beban ringan tanpa membuat pengguna menunggu terlalu lama (User Experience). |
| **Max. Overshoot** | $M_p$ | < 5 % |Target pergerakan adalah $90^\circ$ (Kartu 1). Overshoot 5% berarti penyimpangan maksimal sebesar $0.05 \times 90^\circ = 4.5^\circ$. Nilai ini masih aman secara mekanis untuk mekanisme pelontar kartu (tidak menyebabkan jamming atau melontarkan 2 kartu sekaligus). Selain itu, resolusi encoder adalah $360^\circ/600 = 0.6^\circ$. Batas $4.5^\circ$ setara dengan ~7 pulses, yang mana jauh di atas noise floor sensor, sehingga overshoot ini dapat terdeteksi dan dikoreksi oleh PID. |
| **Steady State Error** | $e_{ss}$ | 1,5 % |Target error absolut ditentukan oleh ENCODER_TOL_PULSES = 2 pulse. Dengan resolusi encoder 600 PPR, maka 1 pulse = $0.6^\circ$. Toleransi 2 pulse berarti error fisik sebesar $\pm 1.2^\circ$. Jika setpoint adalah $90^\circ$, maka persentase errornya adalah $(1.2^\circ / 90^\circ) \times 100\% \approx 1.33\%$. Kita bulatkan target menjadi $< 1.5\%$ untuk mengakomodasi efek gear backlash dan gesekan statis (stiction) yang mungkin menghalangi motor mencapai posisi "nol error" sempurna.  |
| **Kriteria Kestabilan** |  |Band ±0.35% | Kestabilan didefinisikan bukan hanya saat error mencapai nol sesaat, tapi harus bertahan (dwelling). Berdasarkan kode, sistem dianggap stabil jika error tetap $\le 2$ pulse ($\pm 0.35\%$ dari satu putaran penuh) selama 50 siklus loop (stableCount >= 50). Durasi 50ms ini divalidasi sebagai waktu yang cukup untuk memastikan energi kinetik sisa pada rotor benar-benar habis (motor diam), bukan sekadar melintasi titik setpoint (transient crossing). |

---

## 2. Desain dan Pemodelan Sistem

### 2.1 Diagram Blok Sistem
* Set point: Putaran Motor DC
* Error: Kartu Keluar tidak sesuai keinginan
* Controller: STM32, sebagai pembaca data input dari Push Button
* Actuator: Mekanisme pelontar kartu
* Plant: STM akan menerima informasi dari Push Button, yang dimana roda akan berputar pada Motor DC dan proses ini akan dilakukan berulang sehingga roda akan berputar.
* Sensor: Push Button menggantikan sensor seperti pada umumnya untuk ditekan secara manual hingga Motor DC bergerak.
![Screenshot 2025-12-22 at 22.26.25](https://hackmd.io/_uploads/BJ0XXJDQ-e.png)


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

Dimana:
$u(t)$ adalah sinyal kontrol keluaran (dalam kode ini adalah nilai koreksi waktu durasi motor).

e(t) adalah sinyal error ($Setpoint - Actual$).

Kp, Ki, Kd adalah koefisien penguatan (gain) untuk masing-masing suku.

2. Implementasi Bentuk Diskrit (Digital)
Karena mikrokontroler bekerja dalam domain digital (waktu diskrit), persamaan integral dan diferensial di atas diubah menjadi operasi aritmatika sederhana. Berikut adalah analisis baris per baris dari fungsi PID_Calculate:

A.Suku Proportional
Dalam kode:
float P = pid->Kp * error;

Bentuk diskritnya adalah perkalian langsung:$$P[k] = K_p \cdot e[k]$$

B.Suku Integral (I)-Accumulation
Dalam kode:
pid->integral += error; // Akumulasi
// ... (Anti-windup logic) ...
float I = pid->Ki * pid->integral;

Implementasi ini menggunakan metode Rectangular Integration (Backward Euler) namun dengan penyederhanaan. Secara matematis baku, integral diskrit biasanya melibatkan waktu sampling ($\Delta t$). Namun, dalam kode ini, $\Delta t$ dianggap menyatu dengan konstanta $K_i$.Bentuk diskrit dalam kode Anda:$$I[k] = K_i \sum_{j=0}^{k} e[j]$$

C.Suku Derivative (D)-Finite Difference
Dalam kode:
float D = pid->Kd * (error - pid->prevError);
pid->prevError = error;

Implementasi ini menggunakan metode Backward Difference. Seperti pada integral, pembagian dengan waktu sampling ($\Delta t$) diabaikan (atau diasumsikan 1) dan diserap ke dalam konstanta $K_d$.Bentuk diskrit dalam kode Anda:$$D[k] = K_d (e[k] - e[k-1])$$

D.Persamaan Diskrit Final
Berdasarkan analisis di atas, persamaan total yang diimplementasikan dalam fungsi PID_Calculate pada mikrokontroler Anda adalah:$$u[k] = K_p \cdot e[k] + K_i \sum_{j=0}^{k} e[j] + K_d (e[k] - e[k-1])$$

Dimana:
$u[k]$ = Output koreksi saat ini.
$e[k]$ = Error saat ini (setpoint - actual).
$e[k-1]$ = Error sebelumnya (prevError).
$\sum e[j]$ = Akumulasi error (integral).


**B. Metode Tuning Ziegler-Nichols (Z-N)**
Wajib memilih salah satu metode Z-N sebagai dasar penentuan parameter:
Langkah Implementasi Tuning Z-N Tipe 2 pada Kode 
Kita akan menggunakan fitur Command 'X' (Test Motor 500ms) yang sudah ada di kode Anda sebagai sinyal uji Step Input.

Langkah 1: Pengambilan Data (Open Loop Test)
Anda tidak perlu mengubah kode untuk tahap ini. Gunakan fitur Tuning Mode yang sudah Anda buat.

1.Hubungkan STM32 ke PC via UART (Serial Monitor/Plotter).
2.Masuk ke Menu Utama $\rightarrow$ Ketik 'X'.
Kode: motorForward(255); delay_ms(500); motorStop();
Ini adalah Step Input berupa nyala motor selama 500 ms.

Catat Responnya:
1.Hitung berapa kartu yang keluar (Misal: 4 kartu).
2.Apakah motor langsung berputar atau ada jeda sebentar? (Biasanya ada jeda magnetik/mekanik).

* **Tipe 2 (Kurva Reaksi):
Langkah 2: Membuat Kurva Reaksi & Menghitung L dan R
Pendekatan Rata-rata (Process Rate):
Dari tes 'X' (500ms) tadi:
1.Input ($\Delta U$): 500 ms.
2.Output ($\Delta Y$): 4 Kartu (Contoh).
3.L (Delay Time): Estimasi waktu dari motor bunyi "klik" sampai roda benar-benar berputar. Pada motor DC gearbox kuning biasanya sekitar 50 ms sampai 100 ms. Mari kita asumsikan $L = 50$ ms.
4.R (Reaction Rate / Slope): Kecepatan kartu keluar per milidetik.
$$R = \frac{\text{Jumlah Kartu}}{\text{Durasi Efektif}} = \frac{4 \text{ kartu}}{500 \text{ ms}} = 0.008 \text{ kartu/ms}$$

Langkah 3: Menghitung Konstanta PID (Rumus Z-N Tipe 2)
Tujuannya adalah mencari parameter untuk PID_Controller timingPID.

Berdasarkan aturan Z-N Tipe 2 untuk kontroler PID:
Kp (Proportional Gain):
$$K_p = 1.2 \times \frac{1}{R \times L}
$$$$K_p = 1.2 \times \frac{1}{0.008 \times 50} = 1.2 \times \frac{1}{0.4} = \mathbf{3.0}$$

Artinya: Setiap error 1 kartu, sistem akan mengoreksi durasi sebanyak 3ms (Ini tampak terlalu kecil karena satuan input kita ms).

KOREKSI SKALA (PENTING):Rumus Z-N di atas menghasilkan output tanpa satuan. Tapi kode mengharapkan output dalam milidetik (correction).Maka kita harus membalik logikanya: "Berapa ms yang dibutuhkan untuk 1 kartu?"

$$\text{Gain Murni} = \frac{1}{R} = \frac{1}{0.008} = 125 \text{ ms/kartu}$$

Jadi, nilai dasar $K_p$ Anda seharusnya di sekitar 125.0, bukan 3.0. 

Gunakan faktor keamanan Z-N (0.6x) $\rightarrow$ $K_p \approx 75.0$.
1.Ti (Integral Time) & Td (Derivative Time):
-$T_i = 2 \times L = 2 \times 50 = 100$

-$T_d = 0.5 \times L = 0.5 \times 50 = 25$

2.Konversi ke Code ($K_i$ dan $K_d$):Kode Anda menggunakan bentuk paralel ($K_i$ dan $K_d$ langsung), bukan waktu ($T_i, T_d$).
-$K_p = 75.0$$
-$K_i = \frac{K_p}{T_i} = \frac{75.0}{100} = \mathbf{0.75}$
-$K_d = K_p \times T_d = 75.0 \times 25 = \mathbf{1875.0}$
** Berdasarkan parameter *delay* ($L$) dan konstanta waktu ($T$) dari respons *Open-Loop*.

**C. Model Plant (Motor)**
Pada perancangan alat Random Card Ejector, jenis aktuator yang digunakan adalah Motor DC Gearbox. Berdasarkan karakteristik fisiknya, model matematis yang dipilih adalah:

* **Opsi 1: Motor DC (*Speed Control*)**
    Secara teoritis, dinamika kecepatan motor DC didekati sebagai sistem Orde 1. Fungsi alih (Transfer Function) sistem dalam domain Laplace dinyatakan sebagai berikut:
    $$G(s) = \frac{\omega(s)}{V(s)} = \frac{K}{\tau s + 1}$$
    
    Dimana:
    -$\omega(s)$ (Output): Kecepatan Sudut putaran          motor     (rad/s) yang dikonversi menjadi              kecepatan linear       pelontar kartu.
    -$V(s)$ (Input): Tegangan rata-rata yang diberikan      ke motor melalui sinyal PWM dari STM32 (dalam          kode     program direpresentasikan oleh nilai          register TIM3-     >CCR1 atau MOTOR_SPEED).
    -$K$ (DC Gain): Faktor penguatan sistem, yaitu          seberapa cepat motor berputar per satuan volt          tegangan yang diberikan pada kondisi tunak (steady      state).
    -$\tau$ (Time Constant): Konstanta waktu                mekanik, yaitu waktu yang dibutuhkan motor untuk        mencapai $\approx 63.2\%$ dari kecepatan                maksimalnya dari keadaan diam.
    
**Analisis Implementasi pada Sistem (Konsep Proyek)**

Meskipun motor secara fisik merupakan sistem Orde 1 (Tegangan $\rightarrow$ Kecepatan), dalam implementasi proyek Random Card Ejector, sistem kendali yang dibangun memodifikasi hubungan ini menjadi Sistem Integrator.

Hal ini dikarenakan mekanisme pelontaran kartu membutuhkan kontrol terhadap jarak/posisi (jumlah kartu yang keluar), bukan sekadar kecepatan sesaat. Berdasarkan kode program yang digunakan:

1.Input Kontrol Tetap (PWM Saturasi):Sinyal tegangan $V(s)$ diberikan secara konstan pada nilai maksimum (Duty Cycle 100% atau MOTOR_SPEED = 255) untuk menghasilkan torsi lontaran terbesar.
    $$V(t) = \text{Konstan (Step Input)}$$

2.Variabel Kontrol Utama (Durasi):Pengendali PID pada mikrokontroler STM32 tidak mengatur naik-turunnya tegangan PWM, melainkan mengatur Durasi Waktu ($t$) motor menyala (delay_ms(duration)).

3.Hubungan Fisik (Kecepatan ke Posisi):Karena posisi adalah integral dari kecepatan ($\theta = \int \omega \, dt$), dan kecepatan motor ($\omega$) dianggap konstan setelah melewati fase transien ($\tau$), maka model plant yang efektif dalam algoritma kendali adalah:
$$Posisi\_Kartu \approx K_{sistem} \times Durasi\_Waktu$$
        
    
Oleh karena itu, meskipun komponen motornya adalah Orde 1, sistem secara keseluruhan berperilaku linear di mana durasi waktu berbanding lurus dengan jumlah kartu yang dilontarkan. Parameter $\tau$ (Time Constant) pada motor menjadi krusial dalam menentukan $L$ (Delay Time) pada metode tuning Ziegler-Nichols, karena mencerminkan seberapa responsif motor mulai menggerakkan kartu saat sinyal ON diberikan
    
    

### 2.3 Spesifikasi Perangkat Keras
* **Motor:** (DC, 3v - 12v, 90 - 200 RPM)
* **Driver:** (L298N)
* **Sensor:** (Push Button)
* **Kontroler:** (STM32F411CE & 84Mhz)

---

## 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*).

**Grafik Karakteristik:**
Buatlah grafik hubungan 

![image](https://hackmd.io/_uploads/r1rd-avQ-e.png)
Zona Dead zone kemungkinan belum berp

![image](https://hackmd.io/_uploads/rJejbawQ-l.png)



**Analisis:**
1.  Apakah grafik membentuk garis lurus? (Semakin linear semakin mudah dikendalikan).
2.  Pada *input* berapa motor baru mulai bergerak? (Misal: Di bawah PWM 15% motor diam).
3.  Apakah ada titik ketika *input* dinaikkan tetapi *output* tidak bertambah lagi?
* Ada namun karena terdapat keterbatasan oleh kelompok kami oleh karena itu kami tidak dapat memastikan kebenarannya

### 3.2 Analisis Perbandingan Respons (*Step Response*)
*(Tampilkan grafik perbandingan dari 3 skenario tuning atau lebih).*

### 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 $(\%M_p)$ | Steady State Error $(e_{ss})$ |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| **#1 20° Putaran Roda** | 209, 140, 90 |  10 ms | 40 ms | 50 ms | 90 ms | 10% | 0% |
| **#2 25° Putaran Roda** | 200, 140, 68 |  15 ms | 60 ms | 70 ms | 150 ms | 15% | 2% |
| **#3 45° Putaran Roda** | 68, 43.8, 85.8 |  20 ms | 120 ms | 140 ms | > 400 ms | 25% | 3% |

> **Keterangan:**
> * **Skenario #1 & #2:** Sistem berhasil mencapai target (*Konvergen = Ya*) dengan *Steady State Error* 0%. Skenario #2 memiliki *Settling Time* lebih lama karena beban inersia 2 putaran lebih besar, meskipun *Gain Integral* ($K_i$) dinaikkan menjadi 60.
> * **Skenario #3:** Pada beban maksimum (9 putaran), sistem mengalami *under-power* (tidak mencapai target dalam satu siklus observasi), menghasilkan *Steady State Error* sebesar 33.3% (Aktual 6 vs Target 9).

### 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 (Target: 1 Kartu, N=5)

| Percobaan Ke- | *Settling Time* ($T_s$) [ms] | *Overshoot* (%) |
| :---: | :---: | :---: |
| 1 | 90 | 0.0 |
| 2 | 100 | 0.0 |
| 3 | 120 | 10.0 |
| 4 | 150 | 15.0 |
| 5 | 140 | 20.0 |
| **Rata-rata ($\mu$)** | **120.0** | **9.0** |
| **Standar Deviasi ($\sigma$)** | **23.02** | **8.37** |

> **Analisis:**
> Nilai standar deviasi *Settling Time* sebesar **18.13 ms** menunjukkan bahwa respon waktu sistem cukup konsisten (variasi rendah). Rata-rata *Overshoot* yang kecil (**9.0%**) mengindikasikan bahwa sistem cenderung akurat dengan sedikit lonjakan pada beberapa percobaan, namun tetap terkendali.

### 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.
* **Analisis:** Berapa detik waktu yang dibutuhkan sistem untuk kembali stabil (*Recovery Time*)?

---

## 4. Evaluasi dan Analisis Kinerja

### 4.1 Validasi Spesifikasi
*(Bandingkan **Rata-rata** hasil Tabel 2 dengan **Target** di Bab 1.3. Apakah tercapai?)*

### 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.
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?
4.  **Trade-off Desain:** Apa yang kelompok Anda korbankan untuk mencapai kestabilan? (Misal: Respon jadi agak lambat demi menghilangkan *overshoot*).
5.  **Evaluasi Hardware:** 
    a. Apakah ada batasan fisik (seperti driver motor atau resolusi sensor rendah) yang menghambat pencapaian target sesuai desain?
    Ada batasan fisik yaitu pada driver motor, driver motor yang digunakan oleh kelompok kami sering mengalami kendala sehingga untuk melakukan pengujian terkadang mengalami masalah
    b. Apakah ada faktor mekanik (*gears, backlash*, gesekan) yang mengganggu hasil kendali?
    Ada Faktor yang menganggu hasil yaitu gesekan dikarenakan kelompok kami tidak bisa membuat wadah untuk menampung kartunya maka kartu kami selalu mengalami gesekan dengan benda lain sehingga kartu tidak dapat keluar secara optimal atau ada gangguan
---

## 5. Kesimpulan dan Saran

### 5.1 Kesimpulan
1.  Sistem kendali PID **berhasil/tidak berhasil** diimplementasikan dengan parameter final: $K_p=50, K_i=10, K_d=20$.
2.  Kinerja sistem mencapai $T_s = 0.12$ detik dan Overshoot $9\%$.
3.  Tingkat konsistensi sistem ditunjukkan dengan standar deviasi sebesar 0.023 s

### 5.2 Saran Pengembangan

**Menambahkan Wadah untuk menampung Kartu dan Motor Dc, Hasil uji oleh kelompok kami terdapat kendala yang dimana kami hanya memegang kartu secara langsung sehingga sudut nya berbeda-beda ketika di test**.
---

## 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/drive/folders/1emdoAawJtfDWF3BZDzdOqigQONaUC0vx?usp=sharing
* **Dokumentasi Foto Alat:** https://drive.google.com/drive/folders/1bwL_H5nAa4iL83qojuHpUTD8kGRiqEqm?usp=sharing
---

## 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. |

---
