27 BAB 3 PERANCANGAN SISTEM 3.1 Perancangan Perangkat Keras Perancangan sistem pengendalian posisi linier motor DC dengan algoritma PID berbasiskan mikrokontroler ini mempunyai main modul untuk pengendalian motor DC dan modul mekanik. Gambar 3.1 Diagram Blok Sistem Perancangan sistem ini merupakan sistem pengendali single input dan single output dimana nilai set point sebagai inputan dan putaran motor sebagai outputnya. Perancangan awal dari sistem yang akan dibangun ini adalah algoritma PID yang dipakai sepenuhnya berdasarkan implementasi dari sebuah algoritma matematika yang dituangkan kedalam bahasa pemograman mikrokontroler. Mikrokontroller merupakan pusat pemrosesan data. Dalam modul driver akan menerima sinyal input yang dikirim dari mikrokontroler berupa clock dan arah pergerakan. Modul driver ini akan mengirim sinyal ke motor DC yang akan menggerakkan axis. Dan encoder dari motor DC menjadi feedback untuk mikrokontroller dalam pengaturan perputaran motor DC dan 28 akan dilihat output set point akan sama dengan nilai set point inputan dengan pengukuran secara manual. Ouput pergerakan benda didalam modul mekanik dari titik awal sampai titik akhir atau sesuai dengan jarak inputan. 3.1.1 Perancangan Power Supply Power supply diperlukan untuk memenuhi konsumsi daya listrik untuk modul kontroller motor DC. Power supply yang diperlukan mempunyai tegangan +25 volt, 25 volt, +12 volt, -12 volt, +5 volt. 3.1.2 Modul Kontroller Motor DC Untuk modul kontroller DC diambil dari dari internet, yang dikenal dengan nama modul UHU Kontroller. Modul ini digunakan karena sesuai dengan kriteria yang akan digunakan pada sistem ini yaitu: - Kontroller dengan Attiny 2313 - Operating frequency: 24 MHz - Kecepatan : mencapai 250.000 steps/s (4-fold encoder steps) - Standard output : Tegangan = 100 volts Arus = 20 ampere -@70 degrees - Communication interface: RS232 34.800, 8 Bit, 1 Stop, No Parity - Inputs PC: step/dir - encoder : A/B 90°, 4-fold - emergency stop: Active Low - Outputs: Ready (LED) 29 - PWM (10 Bit, symmetric) - power enable error (LED) - Power stage: - MOS-FET technology - adjustable maximum current option 1: IRF540 max 10A/60V option 2: IRFP260N max.30A/150V Kontroller ini dapat bekerja dengan motor DC yang memiliki encoder dengan resolusi tinggi. Untuk masalah daya, kontroller ini dapat di sesuaikan dalam mengontrol motor DC dengan daya sampai 1 kW. Kontroller ini juga mempunyai pembatas arus(current limiter) sehingga arus maksimum dapat dibatasi yang mengalir pada motor DC, dengan begitu motor DC akan terlindung dari kelebihan arus. Jika terjadi kesalahan, misalnya ketika waktu motor DC bergerak, maka akan ada feedback ke sistem dan sistem akan berhenti. Dengan ini sistem tidak rusak atau tetap stabil dan khususnya motor DC tidak dipaksakan dan tidak timbul kerusakan. Dalam kontroller ini algoritma PID dapat digunakan. Dalam modul kontroller ini terdapat bagian-bagian, yang setiap bagian mempunyai fungsi yaitu : Blok Regulator Komputer Blok Konverter Serial Blok Kontroller Blok H-Bridge Blok Pembagi Arus Gambar 3.2 Diagram Blok Modul Kontroller Motor DC Motor DC 30 a. Blok konverter serial Gambar 3.3 Skematik Blok Konverter Serial Blok ini terdapat IC MAX232 yang berguna sebagai level konverter untuk melakukan konversi dua arah antara serial port dari PC (RS232) dan serial port dari mikrokontroler. Komunikasi serial yang digunakan memakai IC MAX232, IC 232 berfungsi sebagai konverter tegangan dari PC ke microcontroller, yaitu dari logic PC kedalam logic TTL 5V. Rangkaian dari IC 232 menggunakan konfigurasi cross null modem, dimana bagian TX dari microcontroller akan dihubungkan dengan RX dari PC, dan RX dari microcontroller akan dihubungkan dengan TX dari PC. Rangkaian komunikasi serial digunakan untuk mengirim data secara satu per satu dengan menggunakan satu jalur kabel data, sehingga hanya menggunakan 2 kabel data yaitu kabel data yang digunakan untuk pengiriman data atau disebut juga transmit (TX) dan kabel data yang digunakan untuk penerimaan data atau disebut juga receive (RX). Kelebihan dari komunikasi serial adalah pengiriman dan penerimaan data dapat dilakukan untuk jarak yang cukup jauh, sedangkan kekurangan dari komunikasi serial adalah kecepatan lambat. Komunikasi serial digunakan untuk 31 melakukan pengiriman dan penerimaan data dari mikrokontroller AVR ATtiny 2313 ke PC atau sebaliknya b. Blok Kontroller Blok Konverte Serial Blok H bridge Gambar 3.4 Skematik Blok Kontroller Blok Pembatas Arus 32 Mikrokontroller Attiny 2313 digunakan sebagai kontroller digital untuk mengendalikan motor DC dengan waktu yang cepat dan dengan keslahan yang sangat kecil. Algoritma PID akan diprogram di AVR ini dan algoritma ini juga yang mengatur PWM yang berguna untuk mengatur perputaran motor. Kontroller ini berbentuk closed loop sistem dengan adanya feedback kecepatan dan posisi oleh encoder motor sampai mencapai posisi yang diinginkan atau set point yang diberikan oleh user. Di blok ini terdapat IC flip-flop yang berguna untuk mengaktifkan IC halfbridge IR 2184. Jadi IC ini yang menentukan salah satu IC 2184 yang harus aktif. Dengan menggunakan metode PID, hasil dari perhitungan dari PID harus dikonversikan ke PWM. Sinyal kontrol dikalibrasikan ke sebuah nilai variabel yang mempunyai rentang misalnya 0-255. Sebelum untuk mendapat nilai PWM maka dilakukan perhitungan dengan rumus PID, lalu hasil dari perhitungan tersebut yang merupakan sinyal kontrol dimasukkan ke dalam rumus untuk mencari nilai PWM sebagai berikut : PWM = nilai maksimum – sinyal kontrol Jadi ketika nilai kontrol yang didapat sama dengan nilai maksimum (255), maka PWM bernilai 0, yang berarti perputaran motor DC dalam kecepatan penuh. Jadi untuk nilai PWM tergantung dari hasil sinyal kontrol yang dihasilkan. Nilai maksimum dapat diubah sesuai dengan keinginan. Sinyal kontrol itu sendiri adalah keluaran dari rumus PID atau dapat disebut merupakan nilai yang mengontrol PWM. 33 c. Blok H-Bridge Blok Kontroller Blok Pembatas Arus Blok Kontroller Gambar 3.5 Blok H-bridge 34 Blok ini berfungsi sebagai penggerak (driver) untuk motor DC. Terdiri dari dua IC halfbridge (IR2184) yang berguna sebagai trigger mosfet (pemicu mosfet). Empat buah mosfet (IRFP260) yang terdapat pada blok ini berguna sebagai saklar aliran arus yang menuju motor DC. Dalam blok ini terdapat resistor dengan daya 5 watt. Resistor juga berguna menentukan tegangan di blok ini, sesuai dengan arus maksimum motor DC. IC IR2184 untuk memilih mosfet mana yang harus aktif pada saat putaran motor DC searah jarum jam (CW) atau berlawanan jarum jam (CCW). IC IR2184 yang atas mengtrigger mosfet T1 dan T4, sedangkan IC IR2184 yang bawah mengtrigger mosfet T2 dan T3. Mosfet yang harus aktif antara T1 dan T4 atau T2 dan T3. Jika yang aktif T1 dan T3 atau T2 dan T4 yang aktif maka sistem akan rusak. H-Bridge adalah gabungan antara sirkuit digital dan mekanik. Biasanya HBridges digunakan untuk mengkendalikan arah putaran motor DC. Pemakaian MOSFET ini lebih baik daripada transistor. Dalam blok dipakai Mosfet IRFP260N yang mempunyai arus maksimal 30A dan tegangan maksimal 150V. MOSFET lebih efisien dan mudah untuk mengkalkulasi matematikanya. Dan dalam pemakaian PWM, MOSFET lebih optimal. Jadi untuk mengoperasikannya dengan menyulut gerbang gate dengan tegangan (bisa dari mikrokontroller). 35 d. Blok pembatas arus (current limiter) Gambar 3.6 Skematik Pembatas Arus Blok ini terdapat OP-AMP (TL082) yang berguna sebagai komparator untuk membandingkan arus yang mengalir di motor DC dengan tegangan yang diset di trimpot. Blok ini bekerja setelah IC halfbridge (IR2184) di blok H-bridge telah mengtrigger mosfet yang ada untuk menjalankan motor DC. Oleh karena itu, blok ini berguna untuk membatasi arus maksimum yang boleh mengalir pada motor DC, dengan begitu motor DC akan terlindung dari kelebihan arus. Jika motor DC kelebihan arus, maka IC op-amp yang ada di blok akan memberi sinyal kepada IC halbridge untuk berhenti meng-trigger mosfet, sehingga motor DC berhenti berputar. Ini yang dapat menyebabkan sistem tetap stabil dan terhindar dari kerusakan sistem. 36 e. Blok Regulator Gambar 3.7 Skematik Blok Regulator Blok ini berguna untuk mengkonversi dari tegangan 12 volt menjadi 5 volt. Tegangan 5 volt ini akan digunakan sebagai tegangan supply (Vcc) untuk IC halfbridge (IR2184) yang memicu mosfet. Tegangan yang dikonversi ini juga menjadi tegangan suply buat mikrokontroller dan juga IC TTL yang ada. 3.1.3 Perancangan Sistem Mekanik Sistem mekanik dirancang untuk pengimplementasian posisi linier dari motor DC. Sistem mekanik ini terbuat dari bahan besi. Motor DC dihubungkan ke katrol yang akan memutar belt yang terbuat dari karet. Skema perancangan sistem mekanik dapat dilihat pada gambar : 37 Gambar 3.8 Perancangan Sistem Mekanik Komponen-komponen mekanik yang diperlukan dalam perancangan sistem mekanik ini terdiri dari : ♦ Sebuah besi yang dibentuk dengan berukuran 160 mm x 1200 mm sebagai landasan keseluruhan sistem mekanik, ♦ 1 buah karet yang berbentuk lingkaran yang dipasang di katrol. ♦ 2 buah katrol yang diletakkan dimasing-masing pelat dan dari satu katrol ke katrol lainnya berjarak 1 meter, yang diukur dari titik tengah. ♦ 2 buah lempengan pelat besi sebagai tempat dari katrol dan salah satunya terhubung ke motor DC. ♦ 1 buah BB (Ball Bearing) di salah satu pelat yang berfungsi untuk memperlancar perputaran katrol. 38 3.2 Perancangan Perangkat Lunak Perancangan perangkat lunak meliputi perancangan file berekstensi .prj menggunakan bahasa pemrograman CodeVision AVR yang bertujuan agar sistem dapat menggerakan motor DC bergerak. Algoritma PID akan diprogram di dalam mikrokontroller. Inputan yang berupa nilai jarak, Kp, Ki, Kd, dan set point dimasukkan melalui komputer, kemudian dikirim melalui usb to serial yang terhubung ke modul kontroller. Start konfigurasi timer0 dan timer1 serial port parallel terima var jarak, set point,kp,ki,kd dan terima periode sampling Rutin PID terima perintah untuk berhenti Tidak Gambar 3.9 Diagram Alir Program Utama Ya 39 Program akan mengkonfigurasi Timer0 untuk penghitungan PWM dan Timer1 sebagai pemprosesan sampling. Timer1 berfungsi sebagai pewaktu periode sampling T sehingga ketika Timer1 overflow, maka akan terjadi interupsi dan rutin perhitungan sinyal kontrol dengan metode PID akan dipanggil. Pada listing program rutin ini dinamakan rutin PID dan akan dijelaskan secara tersendiri. Periode sampling T merupakan selang waktu dari diaktifkannya Timer1 (start Timer1) sampai Timer1 overflow. Periode sampling yaitu untuk mengukur berapa banyak pulse yg berputar. Setelah nilai set point, Kp, Ki , dan Kd serta periode sampling dimasukkan, lalu Timer1 diisi dengan nilai awal, Timer0 dan Timer1 diaktifkan sehingga Timer1 mulai menghitung dan Timer0 mulai mencacah pulsa keluaran rangkaian speed encoder. Ketika Timer1 overflow, maka rutin PID dipanggil dan motor akan mulai berputar di akhir rutin PID. Hal ini akan dijelaskan lebih lanjut pada rutin PID. Jika terjadi kesalahan user dapat memberhentikan motor dan akan kembali ke awal. 3.2.1 Perancangan Algoritma PID Dalam merancang PID dengan menggunakan mikrokontroller, langkah awal yang dilakukan adalah menjabarkan rumus PID yang akan digunakan, yang masih berupa PID analog sebagai berikut : de(t)⎤ ⎡ u(t) = Kp ⎢e(t) + Ki∫ e(t)dt + Kd dt ⎥⎦ ……………..........Persamaan (3.1) ⎣ (Application Note AN116, Tim IE ) 40 sehingga dari persamaan PID analog tersebut diubah menjadi bentuk digital sebagai berikut : e(n) − e(n − 1) ⎤ ⎡ u(n)= Kp ⎢e(n)+ Ki∑e(n)T + Kd ⎥⎦ ..............Persamaan(3.2) T ⎣ (Application Note AN116, Tim IE ) dimana : u(n) = Sinyal kontrol (output dari PID) Kp = Konstanta penguatan propotional Ki = Konstanta penguatan integral Kd = Konstanta penguatan derivative e(n) = Error posisi sekarang e(n - 1) = T= Error posisi sebelum e(n) Waktu sampling Dalam pemrograman akan dibuat dalam mikrokontroller terdapat dua proses utama yaitu : - Kp, Ki, Kd, set point - PID arithmatic processing Kp, Kd, Ki adalah konstanta yang diberikan pada algoritma PID sesuai karakteristik motor yang digunakan dimana nilainya mempengaruhi keoptimalan dari algoritma PID itu sendiri dalam mengontrol posisi pada setiap motor DC. Input Kp, Ki, Kd yang akan dimasukkan ke dalam algoritma PID haruslah berdasarkan karakteristik motor yang dipakai, akan tetapi karena pada motor DC yang digunakan tidak diketahui nilai-nilai karakteristiknya, maka nilai konstanta tersebut akan dicoba- 41 coba dengan memasukkan nilai pemisalan, dan dilakukan berulang-ulang sehingga output respon dari motor DC untuk menuju ke suatu posisi yang ditentukan dapat mendekati pada respon yang baik. Set point merupakan harga atau keadaan tertentu yang ingin dicapai. Nilai set point berupa satuan centimeter. Karena dalam sistem ini encoder sebagai feedback dari sistem. Dalam PID aritmathic proccesing, akan dilakukan perhitungan untuk mendapatkan sinyal kontrol. Proses ini berulang terus sampai sinyal error sama dengan 0 dan sesuai dengan set point yang diinginkan. Setelah nilai Kp, KI, Kd dimasukkan, maka akan terjadi proses perhitungan dengan menggunakan rumus PID digital. Rutin PID akan dikerjakan setiap kali Timer1 overflow. Laju overflow Timer1 inilah yang merupakan periode sampling T sistem kontrol. Selama Timer1 belum overflow, interupsi tidak akan terjadi dan rutin PID tidak akan dikerjakan. Timer 0 merupakan keluaran PWM. Error diperoleh dengan set point dikurang dengan posisi aktual. Pada listing program nilai error disimpan dalam variabel error. Yang dimaksud suku integral adalah suku KiΣe[n]T. Pada persamaan ini periode sampling T dapat dikeluarkan dari notasi sigma sebab nilainya konstan, sehingga suku integral (pada listing program disimpan dalam variabel intgrl_term) menjadi : intgrl_term = Ki T ∑ e(n) ........................................................Persamaan (3.3) Pada program nilai Ki langsung dikalikan dengan periode sampling T segera setelah user memasukkan nilai Ki. Akumulasi error Σe[n] disimpan dalam variabel acc_error dan dihitung sebagai berikut : acc_error = acc_error + error ..................................................Persamaan (3.4) 42 Pada akhirnya suku integral menjadi : intgrl_term = Ki x acc_error ....................................................Persamaan (3.5) dimana Ki = Ki x T. Yang dimaksud suku diferensial adalah suku Kd e(n) − e(n −1) .............................................................................Persamaan (3.6) T Pada program nilai Kd langsung dibagi dengan periode sampling T segera setelah user memasukkan nilai Kd. e[n] adalah nilai error saat ini dan e[n-1] adalah nilai error sebelumnya. Pada program e[n-1] disimpan dalam variabel prev_error , sehingga suku diferensial (disimpan dalam variabel derv_term) menjadi : derv_term = Kd x (error - prev_error ) ..........................Persamaan (3.7) dimana Kd = Kd / T. Nilai error, suku integral dan suku diferensial dijumlahkan membentuk suku yang berada dalam tanda kurung pada persamaan e(n) − e(n −1) ⎤ ⎡ u(n)= Kp ⎢e(n)+ Ki∑e(n)T + Kd ⎥⎦ ...........Persamaan (3.8) T ⎣ dan disimpan dalam variabel sum. sum = error + intgrl_term + derv_term ..................................Persamaan (3.9) Variabel sum dikalikan dengan Kp membentuk sinyal kontrol. control = Kp x Sum ..................................................................Persamaan (3.10) Beberapa variabel di atas nilainya dibatasi oleh suatu angka maksimum (batas saturasi) agar hasil perhitungan tidak melebihi nilai maksimum yang dapat diakomodasi oleh suatu tipe data. Sebagai contoh variabel control dideklarasikan dengan tipe data long. Tipe data long dapat mengakomodasi nilai -2147483648 43 sampai dengan 2147483647. Nilai maksimum beberapa variabel dalam program dibatasi agar nilainya terletak diantara -10000 sampai 10000. Nilai maksimum ini dipakai untuk menentukan nilai PWM yang harus dikirimkan ke motor DC. Perhitungan untuk PWM adalah sebagai berikut : PWM = 255 - control ............................................................Persamaan (3.11) Nilai variabel control dikalibrasikan ke rentang nilai 0 – 255. Sekali lagi nilai baru variabel control disimpan dalam variabel yang sama dengan tujuan menghemat pemakaian memori internal mikrokontroller. Jika nilai control = nilai maksimum, maka PWM akan bernilai 0, yang berarti putar motor DC pada kecepatan penuh. Rutin PID akan terus berulang sampai nilai error sama dengan nol atau sesuai dengan set point. 44 Gambar 3.10 Diagram Alir rutin PID