---
# System prepended metadata

title: SISTEM KENDALI KECEPATAN/RPM MOTOR DC DENGAN PID MENGGUNAKAN KEYPAD DAN LCD

---

<div style="text-align:center;">
  <h1>LAPORAN TUGAS BESAR SKM 
      
     SISTEM KENDALI KECEPATAN/RPM MOTOR DC 
    DENGAN PID MENGGUNAKAN KEYPAD DAN LCD
</div>

<div style="text-align:center;">
<img src="https://hackmd.io/_uploads/Hk-k3NYwa.png" alt="Logo_Tel-U" width="300">
</div>

<div style="text-align:center;">
    <h1>
        Disusun Oleh:
    </h1>
    <h2>
    Kelompok 5
    </h2>


## Nama Kelompok :
Muhammad Rafindha Aslam / 1103213080
Muhammad Faqih Syadidan / 1103213225
Andi Cleopatra Maryam Jamila / 1103213071
Muhammad Mirza Fauzan Martono / 1103210042 
Muhammad Thoriq Zam / 1103210008

    
## **Daftar Isi**
[TOC]
<div style="text-align:justify;">
<p>
    
*[CLO 4]* Memiliki kemampuan untuk menganalisis sistem kendali loop tertutup pada kondisi transien dan steady state untuk melihat performansinya.
*[CLO5]* Memiliki kemampuan merancang sistem kendali motor DC.


## **Pendahuluan**
* **Latar Belakang**
<div style="text-align:justify;">
Pada proyek ini kami membuat sebuah rangkaian sederhana sistem kendali kecepatan motor DC dengan PID menggunakan keypad dan LCD memungkinkan pengguna untuk mengatur dan memantau kecepatan putaran motor DC dengan mudah dan presisi. Pengguna memasukkan nilai kecepatan yang diinginkan melalui keypad. Mikrokontroler membaca nilai dan menghitung selisihnya dengan kecepatan DC aktual yang diukur oleh sensor kecepatan. Selisih ini yang disebut error, digunakan oleh kontroler PID untuk menghitung sinyal kontrol. Sinyal kontrol ini diperkuat oleh driver motor DC dan digunakan untuk mengendalikan kecepatan motor DC. Kecepatan motor DC aktual kemudian ditampilkan pada LCD. Berikut adalah alat yang dibutuhkan.
 </div>
   
* **Permasalahan**
<div style="text-align:justify;"> 
Permasalahan yang mendorong kelompok kami membuat alat ini tidak lain tidak bukan karena kebutuhan akan pengendalian kecepatan motor DC yang stabil dan presisi untuk berbagai aplikasi industri adalah masalah utama yang mendorong pembuatan alat ini. Banyak sistem menghadapi masalah menjaga kecepatan konsisten karena variasi beban dan kondisi operasional. Sistem konvensional seringkali tidak fleksibel dan tidak menyediakan pengaturan yang mudah dan pemantauan kecepatan secara real-time. Alat ini dimaksudkan untuk mengatasi masalah pengaturan parameter PID, mengintegrasikan komponen hardware, dan menyediakan solusi yang lebih efisien dan mudah digunakan.
    </div>
    
## **TUJUAN**
<div style="text-align:justify;">
    Tujuan pembuatan alat kendali kecepatan/RPM motor DC dengan PID menggunakan keypad dan LCD adalah untuk menyediakan solusi praktis dan efisien untuk mengendalikan kecepatan motor DC. Alat ini dirancang untuk memudahkan pengguna mengatur dan memantau kecepatan motor DC dengan presisi melalui antarmuka yang mudah digunakan. Dengan menggunakan metode PID, alat ini mampu memberikan kontrol yang stabil dan responsif terhadap perubahan beban dan kondisi operasional. Alat ini memiliki kapasitas untuk mengontrol kecepatan motor DC dengan cepat dan responsif terhadap
</div>

## **Alat Yang Digunakan :**
    
**1. Sensor dan Aktuator**
* Motor DC
![MotorDC (1)](https://hackmd.io/_uploads/SJccRVnrC.png)
<div style="text-align:justify;">
    Motor DC adalah mesin listrik yang menggunakan arus DC atau arus searah untuk menghasilkan energi mekanik melalui medan magnet yang ditenagai arus searah. Motor DC memiliki kemampuan mengontrol kecepatan dan banyak diaplikasikan sebagai penggerak pintu putar, rangkaian robot sederhana, dan berbagai jenis komponen pada perangkat elektronik.
    </div>
    
* Mini Breadboard
![MiniBreadboard (1)](https://hackmd.io/_uploads/S1kFyrnSR.jpg)

<div style="text-align:justify;">
    Mini Breadboard adalah papan prototyping atau konstruksi untuk membangun sirkuit elektronik tanpa perlu melakukan solder. Papan ini memiliki banyak lubang kecil untuk menempatkan komponen dan menghubungkan secara fisik dan listrik di dalam papan. 
    </div>
    
* LCD
![lcd](https://hackmd.io/_uploads/B1XEWG2rC.jpg)
<div style="text-align:justify;">
    LCD adalah suatu jenis panel display datar yang menggunakan kristal cair dalam pengoperasiannya, LDC ini menampilkan dua baris teks hingga 16 karakter per baris. memiliki bentuk persegi panjang dengan latar belakang biru dan teks/grafik berwarna putih untuk keterlihatan. Papan sirkuit hijau pada bagian bawah modul LCD memiliki banyak titik koneksi untuk berinteraksi dengan komponen elektronik lainnya atau mikrokontroler.
    </div>
    
* Sensor Kecepatan
![download](https://hackmd.io/_uploads/ryLtZM3HA.jpg)
<div style="text-align:justify;">
    Sensor kecepatan adalah perangkat yang digunakan untuk mengukur kecepatan suatu objek, baik itu kecepatan rotasi maupun kecepatan linier. Sensor kecepatan merupakan komponen penting dalam berbagai aplikasi dan memainkan peran penting dalam memastikan operasi yang aman, efisien, dan terkontrol.
    </div>
    
* Bracket Motor DC
![brecket](https://hackmd.io/_uploads/ByggGf3rR.jpg)
<div style="text-align:justify;">
    Bracket motor DC adalah komponen mekanis yang digunakan untuk memasang dan menahan motor DC pada posisi yang diinginkan dalam suatu perangkat atau sistem. Bracket ini memastikan bahwa motor DC tetap terpasang dengan aman dan stabil, memungkinkan operasi yang efisien dan mencegah kerusakan akibat getaran atau gerakan yang tidak diinginkan.
    </div>
    
* Disk Encoder
![encoder](https://hackmd.io/_uploads/BkZEzzhHA.jpg)

<div style="text-align:justify;">
    Disk encoder adalah perangkat yang digunakan untuk mengukur posisi, kecepatan, atau arah putaran suatu objek.
    </div>
    
* Motor Driver
![motor driver](https://hackmd.io/_uploads/SJe_fG3BR.jpg)
<div style="text-align:justify;">
    Motor driver adalah perangkat elektronik yang digunakan untuk mengendalikan dan mengatur operasi motor listrik. Motor driver berfungsi sebagai perantara antara mikrokontroler atau sistem kontrol dengan motor, menyediakan daya dan sinyal yang diperlukan untuk menggerakkan motor dengan cara yang diinginkan.
    </div>
    
* Keypad
![keypad](https://hackmd.io/_uploads/BJEozfnSA.jpg)
<div style="text-align:justify;">
    Keypad adalah perangkat input yang terdiri dari susunan tombol atau kunci yang digunakan untuk memasukkan data atau instruksi ke dalam sistem elektronik
    </div>
    
* Jumper Wires
![jumper](https://hackmd.io/_uploads/BJ2TGf3BA.jpg)
<div style="text-align:justify;">
    Jumper wires adalah kabel pendek yang digunakan untuk membuat sambungan listrik sementara atau permanen antara komponen atau titik pada breadboard, PCB (printed circuit board), atau perangkat elektronik lainnya.
    </div>

    
**2. Mikrokontroler**
* Arduino
![arduino](https://hackmd.io/_uploads/HJWGmf2r0.jpg)
<div style="text-align:justify;">
        Arduino adalah platform elektronik open-source yang memungkinkan Anda mengembangkan berbagai proyek elektronik dengan papan mikrokontroler dan perangkat lunak (IDE). Arduino menggunakan bahasa pemrograman C/C++ untuk memungkinkan pengguna membaca input dari sensor dan mengendalikan output, seperti motor atau lampu. Dengan komunitas pengguna yang besar dan aktif, Arduino menyediakan banyak sumber daya, seperti kode dan tutorial, yang membantu pemula dan profesional mengembangkan proyek robotika, otomasi rumah, dan lainnya.
    </div>
    
    
## **Rancangan Sistem Kendali Loop Tertutup PID**

**1. PID**
<div style="text-align:justify;">
    
* Proportional **P**: Komponen ini menentukan seberapa jauh output saat ini dari set point dan menghasilkan respons proporsional terhadap kesalahan.
* Integral **I**: Komponen ini menanggapi kesalahan selama waktu, mengurangi kesalahan statis dan menghasilkan respons yang lambat namun akurat terhadap kesalahan yang terus berlanjut.
* Derivative **D**: Komponen ini memperkirakan laju perubahan kesalahan, membantu dalam menstabilkan sistem dan mengurangi overshoot.
PID digunakan untuk menghitung sinyal kontrol yang tepat untuk motor DC berdasarkan perbedaan antara set point (kecepatan yang diinginkan) dan output sensor (kecepatan yang diukur).
</div>
    
**2. Sistem Kendali Closed-Loop**
<div style="text-align:justify;">
Sistem kendali closed loop digunakan karena kemampuannya untuk mengukur feedback (keluaran aktual) dan membandingkannya dengan input yang diinginkan (set point). Hal ini memungkinkan sistem untuk mengkoreksi kesalahan dan mempertahankan stabilitas serta akurasi.
</div>
    
![Diagram Blok SKM.drawio](https://hackmd.io/_uploads/ByhlDJ2SA.png)

<div style="text-align:justify;">
Gambar di atas menunujukkan blok diagram untuk sistem kendali. terlihat bahwa sistem ini menunjukkan sistem kontrol loop tertutup dengan encoder sebagai umpan baliknya. Set Point merupakan nilai referensi yang akan digunakan sebagai batas yang wajib dicapai oleh sistem motor DC. Sensor encoder ini akan membaca nilai kecepatan motor, lalu dari pembacaan tersebut dibandingkan dengan nilai referensi (set point) sehingga menghasilkan nilai error. Nilai error ini digunakan sebagai masukkan pengendali PID agar dapat mengontrol kecepatan motor DC sehingga mencapai nilai referensi. Nilai yang keluar setelah proses pengendali PID adalah Pulse Width Modulation (PWM), melalui mikrokontroller Arduino UNO nilai PWM 8bit dengan nilai antara 0-255 dikirimkan ke driver motor L298N sehingga nilai PWM berubah dan juga nilai tegangan digital (PWM) dikodifikasi menjadi tegangan analog sehingga kecepatan motor DC berubah mengikuti hasil keluaran kendali PID. Proses ini akan terus-menerus (kontinu) hingga kecepatan motor DC mencapai nilai referensi (Set point) yang ditentukan.
</div>
    
![SKM.drawio (2)](https://hackmd.io/_uploads/r1Ppjtx8R.png)


    
## **Mekanik Motor DC**

Sistem kendali kecepatan motor DC dengan PID menggunakan keypad dan LCD melibatkan pemahaman teori fungsi transfer motor DC dan mekanisme daya. Fungsi transfer menggambarkan hubungan antara input tegangan dan output kecepatan motor, diperoleh dari persamaan diferensial yang mencakup komponen elektrik dan mekanik motor. Persamaan ini mencakup resistansi, induktansi, momen inersia, dan konstanta EMF balik serta torsi. Fungsi transfer dalam bentuk Laplace menunjukkan bagaimana tegangan input mempengaruhi kecepatan output, yang kemudian digunakan oleh pengendali PID untuk menyesuaikan tegangan berdasarkan kesalahan antara kecepatan yang diinginkan dan aktual.

Mekanisme daya dalam sistem ini melibatkan motor driver, kontroler PID, keypad, dan LCD. Motor driver mengatur tegangan dan arus ke motor, sementara kontroler PID mengatur kecepatan dengan mengubah tegangan berdasarkan kesalahan kecepatan. Keypad digunakan untuk menginput setpoint kecepatan, dan LCD menampilkan informasi kecepatan aktual serta status sistem. Tipe mekanik yang digunakan adalah motor DC brushless, dengan komponen seperti shaft, bearing, rotor, stator, dan encoder untuk memberikan umpan balik ke kontroler PID. Kombinasi elemen-elemen ini memungkinkan sistem mengontrol kecepatan motor dengan akurat dan responsif.


## **Analisis Transient Respon**

**1. Kode Arduino**
    
```
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); 

volatile byte half_revolutions;
unsigned int rpmku;
unsigned long timeold;

int kalibrasi;

char customKey;
const byte ROWS = 4;
const byte COLS = 4;

char keys[ROWS][COLS] = {
  {'D', 'C', 'B', 'A'},
  {'#', '9', '6', '3'},
  {'0', '8', '5', '2'},
  {'*', '7', '4', '1'}
};
byte rowPins[ROWS] = {4, 5, 6, 7};
byte colPins[COLS] = {8, 9, 10, 11};

int x = 0;

Keypad customKeypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

int speedx = 3;

float kp;
float nilaikp;
float ki;
float nilaiki;
float kd;
float nilaikd;
float sp;
float nilaisp;
float error, errorx, sumerr;
float p, i, d, pid, rpmfix;
float selisih;

unsigned long startMillis;

void setup() {
  Serial.begin(9600); 
  Serial.println("Starting...");
  Serial.println("Time RPM KP KI KD"); 

  lcd.init();
  lcd.backlight();
  lcd.clear();
  lcd.noCursor();

  attachInterrupt(0, rpm_fun, RISING);
  half_revolutions = 0;
  rpmku = 0;
  timeold = 0;
  kalibrasi = 0;

  pinMode(A0, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(speedx, OUTPUT);
  pinMode(2, INPUT);

  digitalWrite(A0, HIGH);
  digitalWrite(A1, LOW);
}

void loop() {
  customKey = customKeypad.getKey();

  if (x == 0) {
    lcd.setCursor(0, 0);
    lcd.print("1.SET PID       ");
  }

  if (x == 1) {
    lcd.setCursor(0, 0);
    lcd.print("2.MULAI        ");
  }

  if (x == 2) {
    lcd.setCursor(0, 0);
    lcd.print("3.CEK PID     ");
  }

  switch (customKey) {
    case '0' ... '9':
      break;

    case '#':
      break;

    case '*':
      break;

    case 'A':
      x++;
      break;

    case 'B':
      x--;
      break;

    case 'C':
      break;

    case 'D':
      if (x == 0) {
        lcd.clear();
        setkp();
        setki();
        setkd();
        setsp();
        cekpid();
      }
      if (x == 1) {
        lcd.clear();
        mulai();
      }
      if (x == 2) {
        lcd.clear();
        cekpid();
      }
      break;
  }

  if (x > 2) {
    x = 0;
  }

  if (x < 0) {
    x = 2;
  }
}

void setkp() {
  lcd.setCursor(0, 0);
  lcd.print("SET KP     ");

  customKey = customKeypad.getKey();

  if (customKey >= '0' && customKey <= '9') {
    kp = kp * 10 + (customKey - '0');
    lcd.setCursor(0, 1);
    lcd.print(kp);
  }

  if (customKey == 'A') {
    lcd.clear();
    delay(1000);
    kp = kp / 100;
    nilaikp = kp;
    return;
  }

  if (customKey == 'B') {
    lcd.clear();
    delay(1000);
    kp = kp / 1000;
    nilaikp = kp;
    return;
  }

  if (customKey == '*') {
    lcd.clear();
    delay(1000);
    nilaikp = kp;
    return;
  }

  setkp();
}

void setki() {
  lcd.setCursor(0, 0);
  lcd.print("SET KI     ");

  customKey = customKeypad.getKey();

  if (customKey >= '0' && customKey <= '9') {
    ki = ki * 10 + (customKey - '0');
    lcd.setCursor(0, 1);
    lcd.print(ki);
  }

  if (customKey == 'A') {
    lcd.clear();
    delay(1000);
    ki = ki / 100;
    nilaiki = ki;
    return;
  }

  if (customKey == 'B') {
    lcd.clear();
    delay(1000);
    ki = ki / 1000;
    nilaiki = ki;
    return;
  }

  if (customKey == '*') {
    lcd.clear();
    delay(1000);
    nilaiki = ki;
    return;
  }

  setki();
}

void setkd() {
  lcd.setCursor(0, 0);
  lcd.print("SET KD     ");

  customKey = customKeypad.getKey();

  if (customKey >= '0' && customKey <= '9') {
    kd = kd * 10 + (customKey - '0');
    lcd.setCursor(0, 1);
    lcd.print(kd);
  }

  if (customKey == 'A') {
    lcd.clear();
    delay(1000);
    kd = kd / 100;
    nilaikd = kd;
    return;
  }

  if (customKey == 'B') {
    lcd.clear();
    delay(1000);
    kd = kd / 1000;
    nilaikd = kd;
    return;
  }

  if (customKey == '*') {
    lcd.clear();
    delay(1000);
    nilaikd = kd;
    return;
  }

  setkd();
}

void setsp() {
  lcd.setCursor(0, 0);
  lcd.print("SET SP     ");

  customKey = customKeypad.getKey();

  if (customKey >= '0' && customKey <= '9') {
    sp = sp * 10 + (customKey - '0');
    lcd.setCursor(0, 1);
    lcd.print(sp);
  }

  if (customKey == '*') {
    lcd.clear();
    delay(1000);
    nilaisp = sp;
    return;
  }

  setsp();
}

void cekpid() {
  lcd.setCursor(0, 0);
  lcd.print("KP");
  lcd.print(nilaikp, 2);
  lcd.print("-KI");
  lcd.print(nilaiki, 2);

  lcd.setCursor(0, 1);
  lcd.print("KD");
  lcd.print(nilaikd, 2);
  lcd.print("-SP");
  lcd.print(nilaisp, 2);

  customKey = customKeypad.getKey();

  if (customKey == '*') {
    lcd.clear();
    delay(1000);
    return;
  }

  cekpid();
}

void mulai() {
  static bool firstRun = true;
  if (firstRun) {
    startMillis = millis();
    firstRun = false;
  }
  error = nilaisp - rpmfix;
  p = error * nilaikp;
  sumerr = error + errorx;
  i = nilaiki * sumerr;
  selisih = error - errorx;
  d = nilaikd * selisih;
  pid = p + i + d;

  if (pid < 0) {
    pid = 0;
  }

  if (pid > 255) {
    pid = 255; // Limit the PID to max value for PWM
  }

  analogWrite(speedx, pid);

  rpmku = 30 * 1000 / (millis() - timeold) * half_revolutions;
  timeold = millis();
  half_revolutions = 0;

  kalibrasi = (rpmku - 150) / 109;
  rpmfix = kalibrasi * 10;

  if (rpmfix > 2000) {
    rpmfix = 0;
  }

  lcd.setCursor(0, 0);
  lcd.print("RPM= ");
  lcd.print(rpmfix);
  lcd.print("       ");
  lcd.setCursor(0, 1);
  lcd.print("PID= ");
  lcd.print(pid);
  lcd.print("       ");

  // Print data for Serial Plotter with timestamp
  unsigned long currentMillis = millis();
  unsigned long elapsedMillis = currentMillis - startMillis;
  Serial.print(elapsedMillis / 1000.0);  // Mengirim waktu dalam detik
  Serial.print(" ");
  Serial.println(rpmfix);

  delay(200);
  customKey = customKeypad.getKey();

  if (customKey == '*') {
    lcd.clear();
    kp = 0;
    ki = 0;
    kd = 0;
    sp = 0;
    analogWrite(speedx, 0);
    delay(1000);
    return;
  }

  errorx = error;
  mulai();
}

void rpm_fun() {
  half_revolutions++;
}
```

**2. Gambar Plot**
    
* **Percobaan 1**
<div style="text-align:justify;">
    
Kp = 0.24
Ki = 0.55
Kd = 0.28
Setpoint (RPM) = 1100
</div>
    
![per 1](https://hackmd.io/_uploads/SJtcqPnrC.png)

* **Percobaan 2**
<div style="text-align:justify;">
    
Kp = 0.2
Ki = 0.51
Kd = 0.3
Setpoint (RPM) = 1100
</div>

![per 3](https://hackmd.io/_uploads/rJtCqDnS0.png)

* **Percobaan 3**
<div style="text-align:justify;">
    
Kp = 0.18
Ki = 0.48
Kd = 0.28
Setpoint (RPM) = 1100
</div>

![per berhasil](https://hackmd.io/_uploads/r1oWoDhSR.png)
    
<div style="text-align:justify;">
Dapat dilihat bahwa setelah dilakukan kalibrasi PID pada percobaan ketiga, osilasi hampir 0 atau sudah mencapai kestabilan.
    
Delay time = 0.5s
Rise time = 1s
Peak time = 2s
Settling time = 71s
 </div>

    
    
## **Analisis Mekanika**
###  Pengukuran Mekanika Gear
    
<div style="text-align:justify;">
Motor DC tipe JGA25-370 dengan rasio gear 9.6:1 digunakan dalam proyek ini. Untuk memastikan transfer daya yang tepat dan efisien antara motor dan beban, dilakukan analisis mekanika gear. Rasio gear 9.6:1 berarti bahwa output shaft gear berputar sekali untuk setiap 9.6 putaran motor. Dengan perbandingan ini, torsi yang dihasilkan motor dapat ditingkatkan.

**Parameter Motor:**
* Rasio Gear: 9.6:1
* Torsi: 0.233 kg.cm
* RPM Maksimal: 1200 RPM
* Arus: 0.3A
* Daya Mekanik: 2.8W
* Daya Listrik: 3.6W
    
**Analisis Kuantitatif**
* Transfer Daya: Dengan rasio gear 9.6:1, torsi motor meningkat dari 0.233 kg.cm pada output shaft menjadi 0.233 kg.cm * 9.6 = 2.2368 kg.cm. Ini meningkatkan kapasitas motor untuk mengangkut beban dengan kecepatan yang lebih rendah.
* Pengaruh Rasio Gear: Kecepatan akhir motor dipengaruhi oleh perubahan rasio gear. Jika kecepatan motor tanpa perbandingan gear adalah 1200 RPM dan rasio gear adalah 9.6:1, kecepatan output shaft akan menjadi (1200 RPM / 9.6) = 125 RPM.
* Efisiensi Daya: Dengan daya mekanik 2.8W dan daya listrik 3.6W, efisiensi motor adalah (2.8W / 3.6W) * 100% = 77.78%. Ini menunjukkan bahwa daya mekanik mengkonversi daya listrik dengan cukup efisien.
    
</div>

### Analisis Kecepatan Motor Terhadap Beban
    
<div style="text-align:justify;">
    
* Torsi Motor: Torsi motor sebesar 0.233 kg.cm menunjukkan bahwa motor dapat memberikan gaya putar yang cukup untuk mengatasi beban tertentu. Dengan peningkatan torsi menjadi 2.2368 kg.cm pada output shaft, motor mampu menangani beban yang lebih berat.
* Efisiensi Gear: Gear yang dirancang dengan baik akan meminimalkan kerugian daya dan memastikan transfer torsi yang optimal.
* Perlawanan Beban: Perlawanan beban berpengaruh langsung pada kecepatan motor. Beban yang lebih besar akan mengurangi kecepatan motor, dan sebaliknya. Penggunaan rasio gear yang tepat membantu menyeimbangkan antara torsi dan kecepatan yang diinginkan.
</div>


## **Hasil dan Saran**
**Hasil**
Dalam proyek sistem kendali kecepatan/RPM motor DC, pengontrol PID menggunakan keypad dan LCD berhasil mencapai kontrol kecepatan yang presisi. Pengontrol PID menyesuaikan tegangan motor berdasarkan perbedaan antara kecepatan aktual dan setpoint dari keypad, dan LCD menampilkan informasi kecepatan dan setpoint secara real-time, yang memudahkan pengaturan dan pemantauan. Uji coba menunjukkan bahwa respons cepat terhadap perubahan setpoint dan stabilitas kecepatan, yang menunjukkan bahwa PID efektif dalam mengurangi overshoot dan settling time.

**Saran**
Untuk peningkatan lebih lanjut, disarankan melakukan fine-tuning pada parameter PID (Kp, Ki, Kd) untuk mencapai performa yang lebih optimal sesuai dengan karakteristik beban yang bervariasi. Selain itu, penggunaan encoder dengan resolusi lebih tinggi dapat meningkatkan akurasi pengukuran kecepatan, yang akan meningkatkan respons kontrol sistem. Juga, mempertimbangkan implementasi algoritma anti-windup dapat membantu mengatasi masalah saturasi integral dalam kontrol PID, terutama untuk perubahan setpoint yang signifikan.

    
## **Desain Alat**
    
* **Desain Skematik Alat**
![Dskematik (2)](https://hackmd.io/_uploads/rkw9XOhrC.jpg)


* **Desain Awal Alat**
![Dawal](https://hackmd.io/_uploads/rkP3md3HR.jpg)


* **Desain Final Alat**
![Dfinal](https://hackmd.io/_uploads/r126Q_hSC.jpg)



## **Rubrik Penilaian**

| Penilaian Indikator Ketercapaian CLO | Bobot |
| -------- | -------- |
| Mahasiswa mampu mengevaluasi dan optimasi sistem kendali PID (soal CLO 4).     | 50 %     |
| Mahasiswa mampu mendemonstrasikan sistem mekanisme transfer daya sederhana menggunakan gear dan motor DC (soal CLO 5)     | 50%     |

## Kriteria Nilai

| 65-80 | 50-65 | 80-100 | 40-50 | 0-40 |
| ----- | ----- | ------ | ----- | ---- |
|  CLO 4     |       |        |       |      |
|Mampu menjelaskan konsep kendali umpan balik, merancang sistem kendali PID, hingga mengevaluasi dan optimasi sistem kendali PID.       |Mampu menjelaskan konsep kendali umpan balik, merancang, dan mengevaluasi sistem kendali PID.       |Mampu menjelaskan konsep kendali umpan balik dan merancang sistem kendali PID.        |Mampu menjelaskan konsep kendali umpan balik dan PID, tetapi kesulitan dalam merancang dan mengevaluasi sistem kendali PID.       |Kesulitan dalam menjelaskan konsep kendali umpan balik dan PID.      |
|  CLO 5     |       |        |       |      |
|Mampu mendapatkan fungsi transfer sistem dari mekanisme transfer daya, menganalisis hubungan antara torsi dan kecepatan motor, menjelaskan cara kerja dan karakteristik motor listrik, serta mendemonstrasikan sistem mekanisme transfer daya sederhana menggunakan gear dan motor DC.    |Mampu mendapatkan fungsi transfer sistem dari mekanisme transfer daya, menganalisis hubungan antara torsi dan kecepatan motor, menjelaskan cara kerja dan karakteristik motor listrik, tetapi kesulitan dalam mendemonstrasikan sistem mekanisme transfer daya sederhana menggunakan gear dan motor DC.       |Mampu mendapatkan fungsi transfer sistem dari mekanisme transfer daya, menganalisis hubungan antara torsi dan kecepatan motor, tetapi kesulitan dalam menjelaskan cara kerja dan karakteristik motor listrik.        |Mampu mendapatkan fungsi transfer sistem dari mekanisme transfer daya dan menganalisis hubungan antara torsi dan kecepatan motor.       |Tidak dapat menentukan satu langkah pun untuk menjelaskan mengenai mekanisme transfer daya.
 

## **Referensi**

1.	e9567492bd8ca74669586aa3fcaeb2aa. 
2.	Muhardian R. JTEV (JURNAL TEKNIK ELEKTRO DAN VOKASIONAL) Kendali Kecepatan Motor DC Dengan Kontroller PID dan Antarmuka Visual Basic. Tersedia pada: http://ejournal.unp.ac.id/index.php/jtev/index
3.	Hidayat AY, Kerlooza YY, Nizar TN. Perancangan Sistem Kendali Kecepatan Putaran Mesin Bensin Menggunakan PID. Telekontran : Jurnal Ilmiah Telekomunikasi, Kendali dan Elektronika Terapan. 30 April 2023;11(1):1–11. 
4.	Kusuma Solihin A. RANCANG BANGUN SISTEM KONTROL PID UNTUK PENGENDALIAN KECEPATAN PROTOTIPE LIFT BERBASIS LABVIEW. 
5.	Reza M, Putera AN, Hidayat R, Karawang S. STRING (Satuan Tulisan Riset dan Inovasi Teknologi) KENDALI KECEPATAN MOTOR DC MENGGUNAKAN PENGENDALI PID DENGAN ENCODER SEBAGAI FEEDBACK. 
6.	Oktaviana R, Rusimamto PW, Zuhrie MS. Rancang Bangun Sistem Kendali Water Level Berbasis IoT dengan Metode PID Controller. 
7.	Salamena GA, Salamena V. ANALISIS PENENTUAN KONSTANTA PENGENDALI PID MENGGUNAKAN GARIS SINGGUNG METODE ZIEGLER-NICHOLS I PADA TITIK KOORDINAT KURVA TANGGAPAN KELUARAN PLANT. 10(2). 
8.	2015.212458.Analytical-Mechanics. 
9.	Radzevich SP (Stepan P, Dudley DW. Dudley’s handbook of practical gear design and manufacture. CRC Press; 2012. 862 hlm. 
10. https://medium.com/@workshopitb/digital-pid-controller-with-arduino-9f5d7a06acc7
  
      
## **Dokumentasi**
<iframe width="560" height="315" 
src="https://www.youtube.com/embed/yXIbXsgDvaA?si=EIRm83diIDwhMJYD"
title="" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

## **PPT**
<div style="text-align:justify;">
  
https://www.canva.com/design/DAGH8Za1fCg/awQnVRGhPg_hyrE-XxUp8w/edit?utm_content=DAGH8Za1fCg&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton
    
</div>