Jumat, 02 April 2010

System Control PID


Sistem PID control
Didalam suatu sistem kontrol kita mengenal adanya beberapa macam aksi kontrol, diantaranya yaitu aksi kontrol proporsional, aksi kontrol integral dan aksi kontrol derivative . Masing-masing aksi kontrol ini mempunyai keunggulan-keunggulan tertentu, dimana aksi kontrol proporsional mempunyai keunggulan risetime yang cepat, aksi kontrol integral mempunyai keunggulan untuk memperkecil error , dan aksi kontrol derivative mempunyai keunggulan untuk memperkecil derror atau meredam overshot/undershot. Untuk itu agar kita dapat menghasilkan output dengan risetime yang tinggi dan error yang kecil kita dapat menggabungkan ketiga aksi kontrol ini menjadi aksi kontrol PID, dan pada penulisan ini sistem kendali yang digunakan adalah sistem kendali PID digital. Dalam kasus robot maze kita dapat menggunakan kendali PID untuk menjalankan robot agar lebih halus dalam menyelesaikan lorong.
Dalam kasus ini missal sensor ping kita namakan ping1, ping2, ping3, ping4, ping5, dari posisi tersebut dapat kita jadikan perbandingan sebagai berikut:
Pingki = ping1 + ping2+ ping3
Pingka = ping3+ ping4+ping5
PV = Pingka – Pingki (nilai kesalahan)
Max_MV = 100 (maximum nilai kesalahan)
Min_MV = -100 (minimum nilai kesalahan)
SP = 0 (nilai awal kesalahan)
Error = SP – PV (nilai kondisi ketika error)
Last_error = nilai untuk kondisi error yang terakhir terjadi.
Var_Kp = nilai untuk konstanta proporsional
Var_Ki = nilai untuk konstanta integral
Var_Kd = nilai untuk konstanta derivatif
MAXSpeed = 255 (nilai untuk kecepatan maximum)
MINSpeed = 0 (nilai untuk kecepatan minimum)
intervalPWM = (MAXSpeed – MINSpeed) / 5;
MAXPWM = MAXSpeed ;
MINPWM = MINSpeed;
Error = SP – PV;
P = (var_Kp * error) / 10;

I = I + error;
I = (I * var_Ki) / 10;

rate = error – last_error;
D = (rate * var_Kd) / 10;

last_error = error;

MV = P + I + D;

if (MV == 0) {
lpwm = MAXPWM;
rpwm = MAXPWM;
}
else if (MV > 0) { // alihkan ke kiri
rpwm = MAXPWM – ((intervalPWM – 20) * MV);
lpwm = (MAXPWM – (intervalPWM * MV) – 20);


if (lpwm < MINPWM) lpwm = MINPWM;
if (lpwm > MAXPWM) lpwm = MAXPWM;
if (rpwm < MINPWM) rpwm = MINPWM;
if (rpwm > MAXPWM) rpwm = MAXPWM;
}
else if (MV < 0) { // alihkan ke kanan
lpwm = MAXPWM + ( ( intervalPWM – 20 ) * MV);
rpwm = MAXPWM + ( ( intervalPWM * MV ) – 20 );

if (lpwm < MINPWM) lpwm = MINPWM;
if (lpwm > MAXPWM) lpwm = MAXPWM;
if (rpwm < MINPWM) rpwm = MINPWM;
if (rpwm > MAXPWM) rpwm = MAXPWM;

}
if (MV>Max _MV) { //belokan kanan siku
BlokKanan(); // belok kanan patah
lpwm = MAXPWM; //
rpwm = MINPWM; //
}
else if(MV //belokan kiri siku
BlokKiri(); // belok kiri patah
lpwm = MAXPWM; //
rpwm = MAXPWM; //
Pada dasarnya sistem PID merupakan system yang kompleks, system yang bekerja berdasarkan nilai yang memiliki range yang terbatas dan konstan. Sehingga untuk aplikasinya system PID sangat cocok untuk robot yang memiliki arena yang terbatas seperti arena yang menggunakan garis atau lorong untuk penyelesaian masalahnya . Sistem PID seperti ini sering digunakan untuk algoritma Line Follower, robot maze, system kendali ketinggian untuk robot terbang yang memerlukan penanganan system dengan risetime yang tinggi dan nilai error yang kecil, tetapi sayangnya system ini kurang bagus untuk arena yang luas.
Sumber dari : UG_Blog Universitas Gunadarma

Tidak ada komentar: