By | 08/05/2020

Hello sahabat Anak Kendali

Pada kesempatan kali ini saya akan menuliskan artikel tetang Tutorial PID Arduino Kontrol Sistem Pemanas Udara Otomatis.
Program PID pada mikrokontroler sebenarnya sangat sederhana dan mudah dibandingkan program Fuzzy Logic tapi kebanyakan orang orang menganggap program PID dengan Arduino itu susah karena di tempat kuliah dosen mengajarkan PID dengan simulasi dulu. dan kali ini saya buat tutorial PID dengan arduino supaya orang lain mudah mengerti

Apa itu PID ?

PID merupakan metode pengendali lama dalam suatu sistem yang terdiri dari tiga parameter Proportional, Integral dan Derivatif
PID adalah pengendali yang sangat sederhana dan masih banyak digunakan pada peran industri, dikarenakan algoritma nya yang sederhana, mudah digunakan dan komputasinya tidak berat.

Baca Juga : Arduino, Tutorial PID untuk Air Heater dengan Sensor LM35 tanpa Library (Identifikasi)

Setiap parameter memiliki peran penting dalam sebuah sinyal respon atau output, adapun bagian penting pada sebuah sinyal respon adalah :
Rise Time
Overshoot
Setling Time
Steady State Error

Rise Time

Rise time merupakan waktu pertama kali sinyal sampai pada titik set-point

Overshoot

Overshoot merupakan sinyal yang melebihi batas dari set-point pada saat pertama menuju set point

Setling Time

Setling Time merupakan waktu pada saat sinyal turun pertama kali dari steady state sampai naik lagi , sehingga menyebabkan sinyal berisolasi

Steady State Error

Steady State Error merupakan kondisi sinyal yang tidak sampai pada set-point (steady state)

untuk pengaruh dari setiap parameter PID terhadap respon sinyal dapat di lihat pada tabel di bawah ini.

Pengambilan Data

pengambilan data merupakan langkah awal untuk membuat simulasi pengendalian PID menggunakan Software MATLAB, hasil perekaman data akan digunakan untuk identifikasi sistem.

Identifikasi Sistem

Identifikasi Sistem merupakan pencarian model matematis pada suatu sistem berdasarkan Input dan Output yang merepresentasikan perilaku sistem tersebut.

Simulasi Pengendali PID dengan Matlab Simulink

Simulasi berguna untuk mencari masing – masing nilai parameter P I dan D dengan melihat hasil sinyal responnya,
jika model matematis yang di dapat dari hasil identifikasi sistem berhasil dan benar maka nilai parameter yang di tentukan pada simulasi juga dapat bekerja dengan baik saat diterapkan pada sistem yang sebenarnya.
jika proses validasi pada sistem gagal, maka bisa di lakukan percobaan ulang mulai dari tahap pengambilan data.

Rangkaian Skematik

untuk sekamtik sensor nya sudah ada pada artikel : Belajar Arduino, Mengakses Sensor Suhu NTC Thermistor 10K
tinggal tambahkan driver untuk element heater nya seperti modul mosfet yang sudah jadi, atau driver motor yang kuat mengangkat beban sampai 10A atau lebih

Code PID Arduino

Berikut merupakan code Arduino untuk Sistem Kendali Pemanas Udara Otomatis Menggunakan PID.

Download Code

atau bisa juga langsung copy paste di bawah ini.

int ThermistorPin = A7;
int Vo;
float R1 = 10000;
float logR2, R2, T, Tc, Tf;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;

float Kp = 8;
float Ki = 0.1;
float Kd = 0;
float Error, dError, sum_Error;
float sp = 38;

float suhu_C() {
  Vo = analogRead(ThermistorPin);
  R2 = R1 * (1023.0 / (float)Vo - 1.0);
  logR2 = log(R2);
  T = (1.0 / (c1 + c2 * logR2 + c3 * logR2 * logR2 * logR2));
  Tc = T - 273.15;
  Tf = (Tc * 9.0) / 5.0 + 32.0;

  return Tc;
  delay(100);
}

int pid (float p, float i, float d)
{
  dError = Error;
  Error = sp - suhu_C();
  sum_Error += Error;

  float P = p * Error;
  float I = i * sum_Error;
  float D = (d / 100) * (Error - dError);

  float power = P + I + D;

  if (power > 255){
    power = 255;
  }
  else if (power < 0){
    power = 0;
  }
  
  analogWrite (5, power);
  return power;
}

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print (dError);
  Serial.print("  ");
  Serial.print (Error);
  Serial.print("  ");
  Serial.print (sum_Error);
  Serial.print("  ");
  Serial.print (sp);
  Serial.print("  ");
  Serial.print (suhu_C());
  Serial.print("  ");
  Serial.println (pid(Kp, Ki, Kd));
}

untuk melihat tutorial dan hasilnya silahkan tonton video di bawah ini.

Mungkin cukup sekian apa yang bisa saya bagikan kali ini, semoga bermanfaat, dan jika ada yang ingin di tanyakan silahkan berkomentar di bawah ini.

Pencarian terkait
Belajar PID Lengkap dengan Program (509)
Tutorial Memprogram PID Arduino (488)
Cara Implementasi PID pada Program Arduino (479)
Aplikasi PID Arduino (389)
Dasar Aplikasi PID (370)
Rumus dasar PID (333)
Penerapan PID dengan Arduino (205)

Leave a Reply

Your email address will not be published. Required fields are marked *