---
# 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 Motor Listrik (Tugas Besar CLO 2 dan CLO 3)

**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:** Kelompok 6 
* **Nama Mahasiswa 1 (NIM):** Abidzar Malik Azhzafir(101032300156)
* **Nama Mahasiswa 2 (NIM):** Moch. Hafidz Muflif Leksono (101032300136)
* **Nama Mahasiswa 3 (NIM):** Omar Alfarizy Hutagalung(101032300034)
* **Nama Mahasiswa 4 (NIM):** Rafi Dewantara Rachmat (101032300130)
* **Nama Mahasiswa 5 (NIM):** Muhammad Afif Anwar (101032300148)


---

## 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
Pengelolaan tangki air secara manual masih memiliki berbagai kelemahan, seperti risiko overflow, pemborosan air, dan ketidakefisienan energi. Oleh karena itu, diperlukan sistem otomatis yang mampu memantau dan mengendalikan ketinggian air secara real-time.

Water Tank Monitoring System dirancang sebagai sistem kontrol tertutup (closed-loop) yang menggunakan sensor ultrasonik HC-SR04 sebagai umpan balik untuk mengukur ketinggian air. Data sensor diproses oleh Arduino UNO sebagai pengendali, kemudian digunakan untuk mengontrol pompa air DC berdasarkan perbandingan antara level air aktual dan setpoint yang telah ditentukan.

Dengan sistem ini, pengisian air dapat berlangsung secara otomatis, lebih stabil, dan efisien, serta mengurangi risiko luapan air. Proyek ini juga bertujuan untuk mengimplementasikan konsep dasar sistem kendali, sensor, dan aktuator dalam aplikasi nyata.

### 1.2 Tujuan (*sesuaikan isinya dengan proyek kelompok*)
1.  Merancang sistem kendali tertutup (*Closed Loop*) menggunakan metode PID.
2.  Menganalisis respon transien sistem (*Rise time, Settling time, Overshoot*).
3.  Menguji ketahanan (*robustness*) sistem terhadap gangguan eksternal.

### 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$ | < 150 s | *Agar respon cepat* |
| **Max. Overshoot** | $M_p$ | 0% | *Mencegah air menyentuh sensor ultrasonic HCSR-04* |
| **Steady State Error** | $e_{ss}$ | 5% | *Sedikit memperluas toleransi error* |
| **Kriteria Kestabilan** |  | 5% | *Toleransi differential gap* |

---

## 2. Desain dan Pemodelan Sistem

### 2.1 Diagram Blok Sistem
![closed loop.drawio](https://hackmd.io/_uploads/ryix-Zt7-x.png)

Diagram blok tersebut menunjukkan sistem kendali tertutup (closed-loop) pada pengaturan ketinggian air, di mana setpoint merepresentasikan target ketinggian air yang diinginkan, lalu dibandingkan dengan output aktual (ketinggian air dalam wadah) sehingga dihasilkan error sebagai selisih keduanya. Error ini diproses oleh controller (Arduino Uno) menggunakan algoritma kendali (PID) untuk menghasilkan sinyal kendali berupa PWM. Sinyal tersebut dikirim ke actuator, yaitu pompa air DC, yang mengatur debit air masuk ke dalam wadah sebagai plant (proses fisik) sehingga ketinggian air berubah. Perubahan ketinggian air kemudian diukur oleh sensor ultrasonik HC-SR04, yang berfungsi sebagai feedback dengan mengirimkan nilai ketinggian aktual kembali ke controller. Dengan adanya feedback ini, sistem dapat menyesuaikan kerja pompa secara terus-menerus hingga ketinggian air mendekati setpoint, sehingga pengisian air menjadi lebih stabil, akurat, dan terhindar dari kondisi luapan (overshoot).


### 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)**
Persamaan matematis kontroler PID yang diimplementasikan:

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

di mana $u(t)$ merupakan sinyal kendali yang diberikan ke aktuator (dalam bentuk PWM), $e(t)$ adalah error yang didefinisikan sebagai selisih antara nilai referensi (setpoint) dan keluaran aktual sistem, $K_p$ adalah gain proporsional, $K_i$ adalah gain integral, dan $K_d$ adalah gain derivatif. Komponen proporsional berfungsi memberikan respon sebanding terhadap besar error, komponen integral berfungsi menghilangkan error keadaan tunak dengan mengakumulasi error terhadap waktu, sedangkan komponen derivatif berfungsi mengantisipasi perubahan error yang cepat sehingga dapat meredam overshoot dan meningkatkan kestabilan sistem.

Karena sistem direalisasikan pada mikrokontroler Arduino, maka persamaan PID kontinu tersebut diimplementasikan dalam bentuk diskrit dengan waktu sampling tetap $Δt$. Bentuk diskrit dari kontroler PID yang digunakan dapat dinyatakan sebagai berikut:

$$u[k] = K_p e[k] + K_i ∑ e[i] Δt + K_d \frac{e[k] - e[k -1]}{Δt}$$

dengan $e[k]$ merupakan error pada iterasi ke-$𝑘$, dan $e[k -1]$ adalah error pada iterasi sebelumnya. Pada implementasi program, error dihitung dari selisih antara jarak ketinggian air hasil pembacaan sensor ultrasonik dan nilai setpoint. Komponen integral dihitung dengan menjumlahkan error setiap siklus dikalikan waktu sampling, sedangkan komponen derivatif dihitung dari selisih error saat ini dan error sebelumnya dibagi waktu sampling. Nilai keluaran PID kemudian dijumlahkan dengan sinyal dasar (base PWM) dan dibatasi menggunakan fungsi saturasi agar tetap berada dalam rentang kerja aktuator. Dengan pendekatan diskrit ini, algoritma PID dapat dijalankan secara real-time dan stabil pada mikrokontroler.

**B. Metode Tuning Ziegler-Nichols (Z-N)**
Metode tuning PID yang digunakan pada penelitian ini bukan metode Ziegler–Nichols, melainkan pendekatan manual berbasis eksperimen (trial-and-error). Hal ini disebabkan oleh karakteristik sistem level air yang tidak memungkinkan terjadinya osilasi berkelanjutan seperti yang disyaratkan pada metode Ziegler–Nichols. Parameter PID disesuaikan secara bertahap berdasarkan hasil pengamatan terhadap settling time, steady-state error, dan kestabilan sistem agar diperoleh respon yang stabil tanpa overshoot.

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

**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:** Pompa air DC mini submersible (tegangan kerja 3–6 V DC, debit ±120–240 L/jam, torsi kecil–menengah untuk aplikasi pengisian air skala kecil)
* **Driver:** DRV8833 (Dual H-Bridge, tegangan kerja 2.7–10.8 V, arus maksimum ±1.5 A/channel)
* **Sensor:** Ultrasonic HC-SR04 (rentang ukur 2–400 cm, resolusi sekitar ±0.3 cm
* **Kontroler:** Arduino Uno (mikrokontroler ATmega328P, frekuensi clock 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.

**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:**
![motordc](https://hackmd.io/_uploads/SJmBRvUN-l.png)


**Analisis:**
1.  Apakah grafik membentuk garis lurus? (Semakin linear semakin mudah dikendalikan).
Jawab : Sebagian linear, tetapi tidak sepenuhnya. Pada rentang PWM 30% – 60%, hubungan PWM vs RPM hampir linear
2.  Pada *input* berapa motor baru mulai bergerak? (Misal: Di bawah PWM 15% motor diam).
Jawab : Motor mulai bergerak pada PWM sekitar 25%. Di bawah 25% torsi tidak cukup mengatasi beban air, Di atas 25% motor mulai berputar stabil
3.  Apakah ada titik ketika *input* dinaikkan tetapi *output* tidak bertambah lagi?
Jawab : Ya, pada PWM di atas 80%. RPM hanya naik sedikit, Motor sudah mendekati kemampuan maksimum

### 3.2 Analisis Perbandingan Respons (*Step Response*)
1. Skenario 1
![TuningP](https://hackmd.io/_uploads/B1-uiojNbg.png)


2. Skenario 2
![TuningPI](https://hackmd.io/_uploads/SyTYiosNZe.png)


3. Skenario 3
![TuningPID](https://hackmd.io/_uploads/HynCjjsNWx.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  | 0.8, 0, 0 | 8 s | 40 s | - | - | 0% | 33% |
| #2  | 1, 0.45, 0 | 7 s | 45 s | - | - | 0% | 10% |
| #3  | 0.9, 0.35, 0.08 | 6 s | 60 s | - | 120 s | 0% | 3% |  

### 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$) | *SSE* (%) |
| :---: | :---: | :---: |
| 1 | 118 s | 3.2 |
| 2 | 121 s | 2.9 |
| 3 | 119 s | 3.1 |
| 4 | 123 s | 3 |
| 5 | 120 s | 2.8 |
| **Rata-rata ($\mu$)** | **120 s** | **3** |
| **Standar Deviasi ($\sigma$)** | **1.87** | **0.16** |

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

### 3.4 Uji Gangguan (Disturbance Rejection)
* **Gambar:**
![gangguan](https://hackmd.io/_uploads/rkiEAjsNWx.png)


* **Analisis:**
Pada pengujian gangguan, sistem PID berada pada kondisi pengisian menuju set point dengan respon optimal. Gangguan diberikan pada detik ke-60 dengan menyempitkan selang, sehingga debit air yang masuk ke wadah berkurang. Dampak gangguan ini terlihat pada penurunan jarak air ke sensor yang menjadi lebih lambat dibandingkan kondisi normal. Meskipun demikian, sistem tetap menunjukkan respon yang stabil dan mampu mencapai set point tanpa overshoot. Gangguan hanya menyebabkan peningkatan waktu pencapaian set point (settling time), dari sekitar 120 detik menjadi sekitar 160 detik, yang menunjukkan kemampuan disturbance rejection sistem masih baik.

---

## 4. Evaluasi dan Analisis Kinerja

### 4.1 Validasi Spesifikasi
Berdasarkan hasil Uji Konsistensi (Repeatability Test) pada Bab 3.3 menggunakan tuning terbaik (PID optimal), diperoleh nilai rata-rata settling time (Tₛ) sebesar 120 detik, rata-rata steady state error berada di 3%. Jika dibandingkan dengan target kinerja pada Bab 1.3, yaitu settling time < 150 detik, tanpa overshoot, dan steady state error ≤ 5%, maka seluruh spesifikasi yang ditetapkan berhasil tercapai. Selain itu, nilai standar deviasi yang relatif kecil pada pengujian berulang menunjukkan bahwa sistem memiliki performa yang konsisten dan reliabel, sehingga dapat disimpulkan bahwa kontrol PID yang dirancang telah memenuhi tujuan desain sistem.

### 4.2 Analisis Mendalam

1.  **Analisis Pengaruh *Gain*:**
**Jawab :** Berdasarkan hasil percobaan komparatif, peningkatan nilai Kp (Proportional Gain) terbukti mempercepat respon awal sistem, ditunjukkan dengan jarak air yang lebih cepat mendekati set point. Namun, nilai Kp yang terlalu besar menyebabkan sistem mengalami overshoot dan osilasi ringan akibat reaksi koreksi yang terlalu agresif. Penambahan Ki (Integral Gain) berfungsi untuk menghilangkan steady state error dengan mengakumulasi error dari waktu ke waktu, tetapi nilai Ki yang terlalu tinggi memperbesar risiko overshoot dan memperlambat stabilisasi sistem. Sementara itu, Kd (Derivative Gain) berperan sebagai peredam dengan merespons laju perubahan error, sehingga mampu mengurangi osilasi dan memperhalus transisi menuju set point. Kombinasi ketiga parameter tersebut pada tuning optimal menghasilkan respon yang seimbang antara kecepatan dan kestabilan sistem.
2.  **Analisis Stabilitas:** 
    a. Berdasarkan Uji Gangguan (Bab 3.4), seberapa tangguh sistem kelompok Anda? Apakah terjadi osilasi berlebih saat beban dilepas?
**Jawab :** 
Pada saat dilakukan pengujian gangguan dengan cara menyempitkan selang selama proses pengisian air berlangsung, terjadi penurunan laju aliran air yang menyebabkan kenaikan permukaan air menjadi lebih lambat. Kondisi ini berdampak pada bertambahnya waktu yang dibutuhkan sistem untuk mencapai set point, yaitu sekitar 40 detik dibandingkan kondisi normal. Meskipun demikian, sistem kendali PID tetap mampu mempertahankan kestabilan respon, ditunjukkan dengan tidak munculnya overshoot yang signifikan, serta tetap berhasil mencapai set point yang diinginkan secara halus dan terkendali.
    b. Apakah metode *tuning* PID yang kelompok Anda gunakan sudah optimal untuk membuat sistem stabil dan mempertahankan kestabilannya?
**Jawab :** Metode tuning PID yang digunakan dapat dikategorikan sebagai tuning empiris berbasis respons sistem, di mana parameter disesuaikan berdasarkan pengamatan grafik respon. Metode ini terbukti cukup optimal untuk aplikasi pengisian air karena mampu menghasilkan respon stabil dengan tanpa overshoot dan settling time sesuai target. Meskipun bukan metode analitis seperti Ziegler–Nichols, tuning ini sudah memadai untuk sistem nonlinier sederhana seperti pompa air dan sensor ultrasonik.
4.  **Trade-off Desain:** Apa yang kelompok Anda korbankan untuk mencapai kestabilan?
**Jawab :** Untuk mencapai kestabilan sistem dan menghindari overshoot berlebih yang berpotensi menyebabkan air menyentuh sensor HC-SR04, kelompok kami mengorbankan kecepatan respon awal. Hal ini terlihat dari settling time yang tidak terlalu cepat namun lebih aman dan stabil. Dengan kata lain, desain sistem lebih mengutamakan keandalan dan keselamatan sensor dibandingkan respon yang sangat agresif, sehingga sistem menjadi lebih cocok untuk aplikasi praktis jangka panjang.
5.  **Evaluasi Hardware:** 
    a. Apakah ada batasan fisik (seperti driver motor atau resolusi sensor rendah) yang menghambat pencapaian target sesuai desain?
**Jawab :** Terdapat beberapa keterbatasan fisik yang memengaruhi kinerja sistem, yaitu adanya delay pembacaan sensor yang dapat menimbulkan noise. Selain itu, penggunaan driver DRV8833 dengan kontrol PWM menyebabkan tegangan efektif motor lebih rendah dari tegangan output step-down, sehingga kecepatan pompa tidak sepenuhnya linier terhadap sinyal PWM.
    b. Apakah ada faktor mekanik (*gears, backlash*, gesekan) yang mengganggu hasil kendali?
**Jawab :** Faktor mekanik seperti gesekan pada pompa, elastisitas selang, dan variasi debit air juga memengaruhi respon sistem. Tidak adanya katup atau mekanisme kontrol aliran tambahan menyebabkan sistem sangat bergantung pada kecepatan motor, sehingga perubahan kecil pada PWM dapat menghasilkan perubahan debit yang cukup signifikan. Faktor-faktor ini menjadi sumber nonlinieritas yang menantang bagi pengendalian PID.
---

## 5. Kesimpulan dan Saran

### 5.1 Kesimpulan
Berdasarkan hasil implementasi dan pengujian, sistem kendali PID pada pengisian air menggunakan pompa DC, sensor ultrasonik HC-SR04, dan driver DRV8833 berhasil diimplementasikan dengan baik menggunakan parameter akhir $K_p = 0.9, K_i = 0.35, K_d = 0.08$. Sistem mampu mengendalikan ketinggian air hingga mencapai set point jarak 3 cm dari sensor secara stabil, dengan settling time rata-rata sekitar 120 detik dan hasil uji konsistensi yang menunjukkan standar deviasi rendah, sehingga dapat disimpulkan bahwa sistem memiliki performa yang stabil, konsisten, dan memenuhi spesifikasi perancangan.

### 5.2 Saran Pengembangan
Untuk pengembangan selanjutnya, disarankan penggunaan kapasitor pada rangkaian catu daya dan motor untuk meredam noise dan fluktuasi tegangan akibat switching motor DC. Selain itu, penerapan metode kendali lanjutan seperti Fuzzy-PID atau Adaptive PID dapat dipertimbangkan agar sistem mampu beradaptasi lebih baik terhadap perubahan beban, debit air, dan gangguan eksternal.

---

## Lampiran
* **Kode Program Utama (Arduino/C++):**
 ```
    // ---- CONTROL PARAMETER ----
    float setPoint   = 3.0;   // Set point jarak air ke sensor (cm)
    float slowStart  = 5.0;   // Jarak mulai perlambatan (cm)

    // ---- PID PARAMETER ----
    float Kp = 0.9;           // Gain proporsional
    float Ki = 0.35;          // Gain integral
    float Kd = 0.08;          // Gain derivatif

    // ---- VARIABLE PID ----
    float error;              // Selisih antara jarak aktual dan set point
    float prevError = 0;      // Error sebelumnya (untuk derivatif)
    float integral = 0;       // Akumulasi error (integral)
    float pwmOut = 0;         // Output PWM ke motor

    // ---- STATUS SISTEM ----
    bool pumpStopped = false; // Penanda pompa berhenti permanen di set point

    // ---- TIMING ----
    unsigned long lastTime = 0;
    const float dt = 0.05;    // Interval kontrol 50 ms

    // ---- SENSOR MEMORY ----
    float lastValidDistance = 21.0; // Jarak awal air ke sensor (cm)
    
    void loop() {
  if (millis() - lastTime >= dt * 1000) {
    lastTime = millis();

    // ---- SENSOR FILTER (AVERAGE 3x) ----
    float d1 = readDistanceCM();
    delay(5);
    float d2 = readDistanceCM();
    delay(5);
    float d3 = readDistanceCM();
    float distance = (d1 + d2 + d3) / 3.0;

    // ---- VALIDASI DATA SENSOR ----
    if (distance < 3 || distance > 300) {
      distance = lastValidDistance;
    } else {
      lastValidDistance = distance;
    }

    // ---- HARD STOP DI SET POINT ----
    if (distance <= setPoint) {
      pwmOut = 0;
      integral = 0;
      prevError = 0;
      pumpStopped = true;
    }

    // ---- KENDALI PID ----
    if (!pumpStopped) {
      error = distance - setPoint;

     integral += error * dt;
      integral = constrain(integral, -6, 6);

     float derivative = (error - prevError) / dt;
      prevError = error;

     float basePWM;
      if (distance >= slowStart) {
        basePWM = 220;     // Air masih jauh → pompa cepat
      } else {
        basePWM = map(distance, setPoint, slowStart, 0, 180);
      }

     pwmOut = basePWM
               + (Kp * error)
               + (Ki * integral)
               + (Kd * derivative);

     pwmOut = constrain(pwmOut, 0, 255);
    }

    // ---- OUTPUT KE MOTOR ----
    analogWrite(IN1_PIN, pwmOut);

    // ---- SERIAL PLOTTER ----
    Serial.print(setPoint);
    Serial.print(" ");
    Serial.println(distance);
  }
}

```
https://github.com/HafidzMuflif/Water-Tank-Monitoring-System/blob/main/WaterTankMonitoringSystem.ino

* **Tautan Video Demonstrasi:**
https://drive.google.com/file/d/1BX0JiOMmWA4y7EVKJHzoKOtlVFgWU7M1/view?usp=sharing
* **Dokumentasi Foto Alat:** 
![gambar0](https://hackmd.io/_uploads/By-8QHCNWx.jpg)
![gambar1](https://hackmd.io/_uploads/rkdezH04Wg.jpg)
![gambar2](https://hackmd.io/_uploads/HkU-GSRVWx.jpg)
![gambar3](https://hackmd.io/_uploads/H1SfzBRN-e.jpg)
![gambar4](https://hackmd.io/_uploads/HkcGGSCE-g.jpg)
![gambar5](https://hackmd.io/_uploads/SyCMzSRN-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. |

---
