
Line Follower Robot merupakan robot yang dapat mengikuti garis, sebagai peng-indera robot ini menggunakan sensor yang berguna untuk membaca atau mendeteksi garis, warna garis yang biasa di gunakan adalah putih untuk base/dasar lapangan warna hitam dan garis hitam untuk base/dasar lapangan putih, dengan dua warna berbeda itu sensor dapat mendeteksi garis dengan cara membedakan warna yang gelap dan warna yang terang.
Untuk sensor yang biasa digunakan untuk membaca garis diantaranya sensor photodioda, phototransistor, infrared maupun sensor LDR (Light Dependent Resistor), untuk robot yang saya buat kali ini menggunakan sensor photodioda kenapa sensor itu, karena sensor ini mudah didapat yang banyak dijual di toko komponen elektronika dan harga yang juga terjangkau tentunya.
Gambar Ilustrasi Mekanisme Pembacaan Sensor Garis.

Kemudian untuk pemeroses atau otak dari robot ini menggunakan mikrokontroler, untuk robot line follower kali ini saya menggunakan mikrokontroler arduino yaitu arduino uno fungsi dari mikro untuk memproses data dari sensor dan kemudian mengontrol motor sebagai aktuator penggerak robot, mikrokontroler ini di isi dengan program atau coding yang akan mengatur robot untuk bernavigasi mengikuti garis.
Lalu bagaimana robot bisa 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 tepat pada robot line follower pergerakan robot akan lebih halus dibandingkan menggunakan kontrol ON-OFF.
Apa itu PID?
PID singkatan dari Proporsional Integral Derivative, merupakan sebuah algoritma kontrol yang sudah lama ada dan sangat populer digunakan pada sistem kontrol di industri maupun dibidang robotic, sistem kendali ini dapat digunakan pada sistem yang memiliki 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 agar 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 saat itu.
- Error, merupakan nilai kesalahan yang di dapat dari ( Setpoint - Process Variable ).
Kontrol PID Pada Robot Line Follower
Robot line follower yang akan di kontrol degan PID kali ini menggunakan 8 sensor, garis yang digunakan dengan lebar 2-3 cm yang memungkinkan mengenai 2 sensor kemudian lakukan mapping pada sensor untuk mendapatkan nilai process variable, untuk 8 sensor hasil mapping nilai process variable kurang lebih sebagai berikut :
kondisi ideal robot adalah pada saat sensor berada pada posisi 00011000 (nilai 1 di asumsikan sensor mengenai garis) atau NilaiPosisi = 0 dan Setpoint = 0 merupakan posisi ideal robot line follower jika 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 adalah pada saat sensor berada pada posisi 00011000 (nilai 1 di asumsikan sensor mengenai garis) atau NilaiPosisi = 0 dan Setpoint = 0 merupakan posisi ideal robot line follower jika 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 sekarang 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 menentukan nilai yang tepat untuk parameter aksi kontrol proporsional, integral, derivative pada robot line follower, proses tuning dilakukan dengan menggunkan metode tuning Ziegler-Nichols metode ini dilakukan dengan cara memberikan kontrol proporsional pada sistem close loop dan plant di dalamnya.
Kemudian memberikan nilai Kcr (kontrol proporsional), nilai Ki = 0 (kontrol integral) dan Kd = 0 (kontrol derivative) hingga sistem memperlihatkan grafik yang berosilasi terus menerus secara teratur contoh pada gambar berikut :

Dari grafik osilasi yang berkesinambungan dan dari penguatan Kcr kemudian dapatkan nilai Pcr (periode kritis) untuk mendapatkan nilai Kp, Ki, Kd dihitung sesuai aturan Ziegler-Nichols sebagai berikut:

Setelah nilai Kp, Ki, Kd di dapatkan kemudian masukkan pada program line follower, jika semua nilai parameter sudah tepat maka robot akan bergerak mengikuti garis dengan baik dan akan didapatkan grafik yang memperlihatkan respon posisi yang selalu menuju setpoint seperti gambar berikut :

Referensi :
- https://id.wikipedia.org/wiki/PID
Mas Ilham Trimakasih banyak share ilmunya tentang Line Follower PID, mohon di share sceth coding lengkapnya biar kami juga bisa eksperimen,,, semoga kebaikan mas ilham dibalas dengan Pahala yang besar dari Allah SWT,amiin.
ReplyDeletebang boleh bagi rangkaian sensor nya, buat jadi contoh
ReplyDeleteMas mohon dengan sangat untuk spec komponen & skematiknya dishare ya,,, agar bisa praktik,,, makasih banyak sebelumnya semoga jadi amal sholih, amiin.
ReplyDeleteSyukron katsir mas sketchnya,,,, moga tambah sukses, amiin.
ReplyDeleteplease i want the code
ReplyDeleteboleh saya dapatkan code lengkapnya mas
ReplyDeletebang boleh minta codingnya
ReplyDelete