Line Follower Robot Using Pid Control
Line Follower Robot merupakan robot yang sanggup mengikuti garis, sebagai peng-indera robot ini memakai sensor yang berkhasiat untuk membaca atau mendeteksi garis, warna garis yang biasa di gunakan yakni putih untuk base/dasar lapangan warna hitam dan garis hitam untuk base/dasar lapangan putih, dengan dua warna berbeda itu sensor sanggup mendeteksi garis dengan cara membedakan warna yang gelap dan warna yang terang.
Untuk sensor yang biasa dipakai untuk membaca garis diantaranya sensor photodioda, phototransistor, infrared maupun sensor LDR (Light Dependent Resistor), untuk robot yang saya buat kali ini memakai sensor photodioda kenapa sensor itu, alasannya sensor ini gampang didapat yang banyak dijual di toko komponen elektro dan harga yang juga terjangkau tentunya.
Gambar Ilustrasi Mekanisme Pembacaan Sensor Garis.
Kemudian untuk pemeroses atau otak dari robot ini memakai mikrokontroler, untuk robot line follower kali ini saya memakai mikrokontroler arduino yaitu arduino uno fungsi dari mikro untuk memproses data dari sensor dan kemudian mengontrol motor sebagai aktuator penggagas robot, mikrokontroler ini di isi dengan aktivitas atau coding yang akan mengatur robot untuk bernavigasi mengikuti garis.
Lalu bagaimana robot sanggup dengan baik bernavigasi mengikuti garis, yaap.. kita masuk pada inti dari robot ini yaitu sistem kontrol PID pada robot line follower, dengan menerapkan kontroler PID yang sempurna pada robot line follower pergerakan robot akan lebih halus dibandingkan memakai kontrol ON-OFF.
Apa itu PID?
PID abreviasi dari Proporsional Integral Derivative, merupakan sebuah algoritma kontrol yang sudah usang ada dan sangat terkenal dipakai pada sistem kontrol di industri maupun dibidang robotic, sistem kendali ini sanggup dipakai pada sistem yang mempunyai umpan balik (feedback), kontrol PID ini akan menghitung nilai error, yaitu perbedaan antara nilai setpoint (nilai yang diinginkan) dan variabel prosses terukur (process variable), kontrol ini akan mencoba untuk megurangi nilai error biar menuju ke setpoint yang diinginkan.
Diagram Blok Kontrol PID
Bentuk Kontroler PID Diskrit
Diagram Blok Penerapan Kontrol PID Pada Robot Line Follower
- Setpoint, merupakan parameter nilai yang diinginkan.
- Process Variable, merupakan bobot nilai sensor yang dibaca sesuai dengan pembacaan sensor dikala itu.
- Error, merupakan nilai kesalahan yang di sanggup dari ( Setpoint - Process Variable ).
Kontrol PID Pada Robot Line Follower
Robot line follower yang akan di kontrol degan PID kali ini memakai 8 sensor, garis yang gunakan dengan lebar 2-3 cm yang memungkinkan mengenai 2 sensor kemudian lakukan mapping pada sensor untuk mendapat nilai process variable, untuk 8 sensor hasil mapping nilai process variable kurang lebih sebagai berikut :
kondisi ideal robot yakni pada dikala sensor berada pada posisi 00011000 (nilai 1 di asumsikan sensor mengenai garis) atau NilaiPosisi = 0 dan Setpoint = 0 merupakan posisi ideal robot line follower jikalau NilaiPosisi tidak = 0 berarti robot tidak pada posisi ideal dan artinya ada nilai error, pada kondisi error output PID akan mengeluarkan hasil kendalinya sesuai dengan besaran error yang terjadi dan kemudian akan dikalkulasikan dengan nilai base PWM yang ditentukan untuk menjadi PWM ke motor kiri dan kanan.
Formula perhitungan PWM motor kiri dan kanan sebagai berikut :
motorKi = BasePWM - outPID; ( Motor Kiri )
motorKa = BasePWM + outPID; ( Motor Kanan )
/** 1 di asusmsikan sensor mengenai garis **/ case 0b00000001 : NilaiPosisi = -10; break; case 0b00000111 : NilaiPosisi = -9; break; case 0b00000011 : NilaiPosisi = -8; break; case 0b00000010 : NilaiPosisi = -7; break; case 0b00001110 : NilaiPosisi = -6; break; case 0b00000110 : NilaiPosisi = -5; break; case 0b00000100 : NilaiPosisi = -4; break; case 0b00011100 : NilaiPosisi = -3; break; case 0b00001100 : NilaiPosisi = -2; break; case 0b00001000 : NilaiPosisi = -1; break; case 0b00011000 : NilaiPosisi = -0; break; case 0b00010000 : NilaiPosisi = 1; break; case 0b00110000 : NilaiPosisi = 2; break; case 0b00111000 : NilaiPosisi = 3; break; case 0b00100000 : NilaiPosisi = 4; break; case 0b01100000 : NilaiPosisi = 5; break; case 0b01110000 : NilaiPosisi = 6; break; case 0b01000000 : NilaiPosisi = 7; break; case 0b11000000 : NilaiPosisi = 8; break; case 0b11100000 : NilaiPosisi = 9; break; case 0b10000000 : NilaiPosisi = 10; break;
kondisi ideal robot yakni pada dikala sensor berada pada posisi 00011000 (nilai 1 di asumsikan sensor mengenai garis) atau NilaiPosisi = 0 dan Setpoint = 0 merupakan posisi ideal robot line follower jikalau NilaiPosisi tidak = 0 berarti robot tidak pada posisi ideal dan artinya ada nilai error, pada kondisi error output PID akan mengeluarkan hasil kendalinya sesuai dengan besaran error yang terjadi dan kemudian akan dikalkulasikan dengan nilai base PWM yang ditentukan untuk menjadi PWM ke motor kiri dan kanan.
Formula perhitungan PWM motor kiri dan kanan sebagai berikut :
motorKi = BasePWM - outPID; ( Motor Kiri )
motorKa = BasePWM + outPID; ( Motor Kanan )
Pada pemrograman robot line follower perhitungan PID ditulis sebagai berikut :
double Error = 0, SumError = 0, LastError = 0; double BasePWM = 250; double Kp = 43; // Proporsional double Ki = 0.2; // Integral double Kd = 145; // Diferensial double Ts = 1; // Time sampling /**** Fungsi perhitungan PID ****/ void lineFollow() { robotPosition(); int SetPoint = 0; // Setpoint yang diinginkan Error = SetPoint - NilaiPosisi; // Error double DeltaError = Error - LastError; // Delta Error (Selisih error kini e(t) dengan error sebelumya e(t-1)) SumError += LastError; // Akumulasi error double P = Kp * Error; // Kontrol proporsional double I = Ki * SumError * Ts; // Kontrol integral double D = ((Kd / Ts) * DeltaError); // Kontrol derivative LastError = Error; // Error sebelumnya outPID = P + I + D; // Output PID double motorKi = BasePWM - outPID; // Motor Kiri double motorKa = BasePWM + outPID; // Motor Kanan /*** Pembatasan kecepatan ***/ if (motorKi > Kec_Max)motorKi = Kec_Max; if (motorKi < Kec_Min)motorKi = Kec_Min; if (motorKa > Kec_Max)motorKa = Kec_Max; if (motorKa < Kec_Min)motorKa = Kec_Min; driveMotor(motorKi, motorKa); }
Tuning Kontroler PID Robot Line Follower
Proses tuning bertujuan untuk memilih nilai yang sempurna untuk parameter agresi kontrol proporsional, integral, derivative pada robot line follower, proses tuning dilakukan dengan menggunkan metode tuning Ziegler-Nichols metode ini dilakukan dengan cara menawarkan kontrol proporsional pada sistem close loop dan plant di dalamnya.
Kemudian menawarkan nilai Kcr (kontrol proporsional), nilai Ki = 0 (kontrol integral) dan Kd = 0 (kontrol derivative) sampai sistem menunjukkan grafik yang berosilasi terus menerus secara teratur teladan pada gambar berikut :
Dari grafik osilasi yang berkesinambungan dan dari penguatan Kcr kemudian dapatkan nilai Pcr (periode kritis) untuk mendapat nilai Kp, Ki, Kd dihitung sesuai hukum Ziegler-Nichols sebagai berikut:
Setelah nilai Kp, Ki, Kd di dapatkan kemudian masukkan pada aktivitas line follower, jikalau semua nilai parameter sudah sempurna maka robot akan bergerak mengikuti garis dengan baik dan akan didapatkan grafik yang menunjukkan respon posisi yang selalu menuju setpoint ibarat gambar berikut :
Referensi :
- https://id.wikipedia.org/wiki/PID
- http://gedex.web.id/2008/07/09/line-follower-robot-dengan-pid