PERANCANGAN PROTOTYPE MINI BALANCING ROBOT DUA RODA DENGAN METODE KENDALI PROPORTIONAL INTEGRAL DERIVATIVE
TUGAS AKHIR Diajukan Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Sarjana Teknik Mesin
Disusun Oleh : Nama
: Tri Darman
Nim
: 09 525 047
JURUSAN TEKNIK MESIN FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS ISLAM INDONESIA YOGYAKARTA 2015
HALAMAN MOTTO
Awali semua hal dengan “Bismillah” Akhiri semua hal dengan “Alhamdulillah” Berusaha semaksimal mungkin, berdoa, dan bertawakal adalah langkah terbaik dalam mencapai suatu keberhasilan. Berusaha tanpa berdoa adalah kesombongan. Berdoa tanpa berusaha adalah mustahil. Berusaha dan berdoa tanpa tawakal adalah menjauhkan kita dari keridhoannya allah swt. Jangan pernah malu untuk maju, karena malu menjadikan kita takkan pernah mengetahui dan memahami segala sesuatu hal akan hidup ini.
Janganlah sering mengeluh, karena: Allah Berfirman : “Aku tidak membebani seseorang, melainkan sesuai kesanggupan”. (QS. Al-Baqarah: 286) Allah Berfirman : “Hanya dengan mengingat-Ku hati akan menjadi tenang”. (QS. Ar-Ro’d :28) Allah Berfirman : “Berdoalah (mintalah) kepada-Ku, niscaya Aku kabulkan untukmu”. (QS. Al-Mukmin:60)
v
HALAMAN PERSEMBAHAN
Alhamdulillahhirobbil’alamin, Penelitian Tugas Akhir ini selesai dengan baik dan lancar. Tugas Akhir ini saya persembahkan kepada:
Allah SWT yang Maha pengasih lagi maha penyayang, sehingga memberikan segala kemudahan, kelancaran, dan pertolongan bagi penulis untuk menyelesaikan Tugas Akhir ini dengan baik dan lancar.
Kedua orang tua penulis tercinta, yang tidak hentinya-hentinya mendoakan kesuksesan anaknya, memotivasi, serta selalu memberikan kasih sayangnya sampai akhir zaman.
Semua orang yang penulis sayangi dan cintai Semoga Allah SWT membalas niat baik kalian semua amin.
iv
KATA PENGANTAR
Assalamualaikum Warrahmatullohi Wabarakatuh Puji dan syukur penulis panjatkan kepada Allah SWT, yang telah memberikan rahmat dan karunia-nya sehingga tugas akhir yang berjudul Perancangan Prototype Mini Balancing Robot Dua Roda Dengan Metode Kendali Proportional Integral Derivative ini dapat diselesaikan dengan baik dan lancar. Tujuan penulisan laporan tugas akhir ini sebagai salah satu syarat kelulusan pada Pendidikan Strata Satu (S1) Jurusan Teknik Mesin Fakultas Teknologi Industri Universitas Islam Indonesia, selain itu agar dapat bermanfaat bagi para pembaca. Dalam penulisan laporan tugas akhir ini penulis banyak sekali mendapatkan bantuan, bimbingan dari berbagai pihak. Untuk itu penulis ingin mengucapkan banyak terima kasih kepada : 1. Allah SWT yang telah memberikan kesehatan jasmani dan rohani sehingga penulis dapat menyelesaikan tugas akhir ini dengan lancar. 2. Kedua orang tua serta kakak dan adik tercinta, atas semua bantuan, dukungan, serta doa yang telah mereka berikan. 3. Bapak Risdiyono, ST, Dr.Eng, M.Eng. Selaku Ketua Jurusan Teknik Mesin Universitas Islam Indonesia. 4. Bapak Agung Nugroho Adi, ST., MT. Selaku pembimbing I yang telah banyak meluangkan waktu untuk membimbing dan mendampingi selama proses tugas akhir. 5. Bapak Purtojo, ST., M.Sc. Selaku pembimbing II yang telah banyak meluangkan waktu untuk membimbing dan mendampingi selama proses tugas akhir. 6. Dosen-dosen dan laboran-laboran Jurusan Teknik Mesin Fakultas Teknologi Industri Universitas Islam Indonesia yang telah membagikan ilmunya.
vi
7. Kekasih Tercinta Putri Wulandari yang telah mendampingi disaat susah maupun senang dan memberikan dukungan semangat dalam penyelesaian tugas akhir ini. Lope u ayy. 8. Teman-teman Mesin 2009 dan Teman-teman Elektro beserta Temanteman lainnya (Risma, Zulpian, Alpian, Ajang, Ipung, Romi, Agus, Sidik, Bangkit, Prasetyo, Mas Teguh, Irvan). 9. Semua pihak yang secara langsung maupun tidak langsung yang telah membantu penulis dalam penyelesaian laporan ini.
Dalam penulisan laporan ini penulis menyadari masih terdapat kekurangan untuk itu penulis memohon maaf dikarnakan keterbatasan yang dimiliki penulis baik dalam segi pengalaman maupun segi pengetahuan, sehingga penulisan laporan tugas akhir ini masih jauh dari kata sempurna.
Wassalamualaikum Warrahmatullahi Wabarakatuh
Yogyakarta, Desember 2014
Penulis
vii
LAMPIRAN PROGRAM SUDUT $regfile = "m32def.dat"
Dim Pi As Single
$crystal = 12000000
Dim Pid As Single
'$baud = 9600
Dim Pwm_ka As Integer
Config Lcdpin = Portb.7 , E Db4 = Portb.4 Portb.3 , Db6 Db7 = Portb.1
= = , =
Pin , Rs Portb.6 , Db5 = Portb.2 ,
Dim Pwm_ki As Integer Dim Acc As Integer '
Config Lcdbus = 4
Dim Adc_kalibrasi As Integer
Config Lcd = 16 * 2
Dim Dataadc0 As Integer
Cursor Off
Dim Dataadc1 As Integer
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Dim Eeprom0 As Eram Integer
Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
Dim Vx As Single Dim Gx As Single Dim Pv As Single Dim Fixx As Single
Dim Eror As Integer Dim Last_eror As Integer
'konstanta nilai PID
Dim Integral As Integer
Const Setpoint = 0
Dim Integral_0 As Integer
Const Dt = 10
Dim Integral_1 As Integer
Const Kp = 2
Dim Deriv As Integer
Const Ki = 1
Dim Deriv_1 As Integer
Const Kd = 8
Dim P As Single
' 3.3 / 1024 = 0.00322265625 V/bit = adc resol
Dim I As Single Dim D As Single
Const Adc_resol = 0.00322265625
' Selectable_sensitivity = 1.5 g Const Selectable_sensitivity = 1.5 ' (1.5 g)*adc resol / 800 mV = 0.00604248046875 g/bit = accelerometer resol Const Accelerometer_resol = 0.00604248046875 ' V offset(1.65) * 1024 / 3.3 = 512 = zero_g_offset Const Zero_g_offset = 512 Config Portd.3 = Output : Set Portd.3 : Dirkanan Alias Portd.3 Config Portd.6 = Output : Set Portd.6 : Dirkiri Alias Portd.6
Lowerline Lcd " ALLAH_HU_AKBAR " Wait 1 Dataadc0 = Getadc(2) Inialisasi: Dataadc0 = Eeprom0
Utama: Dataadc1 = Getadc(7) Adc_kalibrasi = Dataadc1 - Dataadc0 'perhitungan sudut Vx = Adc_kalibrasi * Accelerometer_resol Gx = Vx / Selectable_sensitivity Fixx = Asin(gx) Pv = Fixx * 57.27272727272727
Cls Upperline Lcd "
' Algoritma kendali PID
KALIBRASI "
Lowerline
Eror = Setpoint - Pv
Lcd " SEGWAY_MINI "
Integral = Eror * Dt
Wait 1
Integral_1 = Integral_0 + Integral Deriv = Eror - Last_eror
Cls
Deriv_1 = Deriv / Dt
Upperline Lcd "
BISMILLAH
P = Kp * Eror "
I = Ki * Integral_1
D = Kd * Deriv_1 Pi = P + I Pid = Pi + D Pwm_ka = Pid Pwm_ki = Pid Last_eror = Eror If Pwm_ka >= 0 Then Set Dirkanan If Pwm_ki >= 0 Then Set Dirkiri If Pwm_ka < 0 Then Reset Dirkanan If Pwm_ki < 0 Then Reset Dirkiri If Pwm_ka < 0 Then Pwm_ka = 0 - Pwm_ka
If Pwm_ki < 0 Then Pwm_ki = 0 - Pwm_ki If Pwm_ka > 255 Then Pwm_ka = 255 If Pwm_ki > 255 Then Pwm_ki = 255 If Portd.3 = 1 Then : Pwm_ka = Abs(pwm_ka) : Else : Pwm_ka = 255 Pwm_ka : End If If Portd.6 = 1 Then : Pwm_ki = Abs(pwm_ki) : Else : Pwm_ki = 255 Pwm_ki : End If Pwm1b = Pwm_ka Pwm1a = Pwm_ki Goto Utama