Perancangan Driver Motor L298 Program kendali Fuzzy

Tabel 3.2 Pin IO Minimum system slave Pin IO Fungsi Vcc Power 5v Gnd Ground PB1OR1A Sebagai output pwm 8 bit atau 10 bit T0PC4 Sebagai counter 8 bit nilai rpm dari rotary encoder MosiPB3 Master out, slave in digunakan dalam komunikasi SPI MisoPB4 Master in, salve out digunakan dalam komunikasi SPI SckPB5 Serial clock digunakan dalam komunikasi SPI Reset Mereset program PB2SS Sebagai Slave select dari microcontrollerkontroler Master

3.1.3 Perancangan Driver Motor L298

Driver motor merupakan salah satu komponen terpenting dalam pengerjaan tugas akhir kali ini, di mana driver motor digunakan sebagai pengendali motor DC. Dalam konteks tugas akhir kali ini driver motor yang digunakan penulis adalah driver motor L298. Driver motor L298 diparalel agar mendapatkan arus yang besar untuk menjalankan motor DC. Driver motor L298 mempunyai dua channel output motor, dalam satu channel mempunyai arus sebesar 2A, sedangkan untuk menjalankan motor DC yang ada pada robot, penulis membutuhkan arus yang lebih besar guna menstabilkan motor pada robot. Maka solusi yang tepat adalah memparalel dua channel output driver motor tersebut agar menjadi satu untuk mendapatkan arus sebesar 4A. Berikut gambar rangkaian driver motor yang telah diparalel. STIKOM SURABAYA Gambar 3.4 Rangkaian driver motor L298

3.1.4 Program kendali Fuzzy

Program kendali fuzzy terdiri atas fuzzification, evaluasi aturan, mekanisme pengambilan keputusan metode Sugeno. Keluaran pada proses mekanisme pengambilan keputusan metode Sugeno merupakan hasil dari proses kendali fuzzy secara keseluruhan untuk mendapatkan nilai tegasnya yaitu sinyal kontrol rpm. Blok diagram program kendali fuzzy diperlihatkan pada Gambar 3.9. miso LED 12v pu s hb ut ton 100 reset 12v Cap 2200uF25v pwm1 cap 30 pF R 10k sck DIODE reset IC4 ATmega8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 PC6 RESET PD0 RxD PD1 TxD PD2 INT0 PD3 INT1 PD4 XCKT0 VCC GND PB6 XT1TOSC1 PB7 XT2TOSC2 PD5 T1 PD6 AIN0 PD7 AIN1 PB0 ICP OC1A PB1 SSOC1B PB2 OC2MOSI PB3 MISO PB4 SCK PB5 AVCC AREF AGND ADC0 PC0 ADC1 PC1 ADC2 PC2 ADC3 PC3 SDAADC4 PC4 SCLADC5 PC5 5v Cap 470uf 16v miso Regulator LM7805 1 2 3 VI GN D VO mosi cry stal 11.0592 Mhz 5v sck cap 100u reset sumber tegangan 12V 1 2 konektor f use 1 2 5v 5 V R 330 T0 S1 5v downloader 1 2 3 4 5 6 mosi ss Cap 10uF16v dir1 dir2 cap 30 pF STIKOM SURABAYA Gambar 3.5 Flowchart Logika Fuzzy STIKOM SURABAYA Pada gambar 3.5 dapat dijelaskan sebagai berikut : 1. Input fuzzy diperoleh dari penekanan keypad berupa nilai jarak dan waktu. Adapaun program penekanan keypad sebagai berikut. unsigned int tekan_keypadunsigned char tanda { unsigned int itung = 0,x = 6; Deklarasi variabel unsigned int hasil; unsigned char buffer; unsigned char temp_hasil[3],temp_hasil1[5]; while1{ buffer = -; colom1 = 1; output keypad colom2 = 0; output keypad colom3 = 1; output keypad colom4 = 1; output keypad if row1 {buffer = ,waiting;} input keypad else if row2 {buffer = 9,waiting;}input keypad else if row3 {buffer = 6,waiting;}input keypad else if row4 {buffer = 3,waiting;}input keypad delay_ms50; colom1 = 1; colom2 = 1; colom3 = 0; colom4 = 1; if row1 {buffer = 0,waiting;} else if row2 {buffer = 8,waiting;} else if row3 {buffer = 5,waiting;} else if row4 {buffer = 2,waiting;} delay_ms50; colom1 = 1; colom2 = 1; colom3 = 1; colom4 = 0; if row1 {buffer = ,waiting;} else if row2 {buffer = 7,waiting;} else if row3 {buffer = 4,waiting;} else if row4 {buffer = 1,waiting;} iftanda == 0 { lcd_gotoxyx,0; lcd_putchar_; } if tanda == 1{ Lcd_gotoxyx,1; Lcd_putchar_; } if buffer == goto exit; keluar dari fungsi tekan keypad if buffer = -{ if tanda == 0 { temp_hasil[itung++] = buffer; lcd_gotoxyx++,0; lcd_putcharbuffer; STIKOM SURABAYA } else iftanda == 1 { temp_hasil1[itung++] = buffer; lcd_gotoxyx++,1; lcd_putcharbuffer; } else{ temp_hasil[itung++] = buffer; } } } exit: lcd_gotoxyx,0; lcd_putchar ; iftanda == 1 { hasil = atoitemp_hasil1; } else { hasil = atoitemp_hasil; } return hasil; } 2. Fuzzification adalah proses pemetaan input crisp ke dalam himpunan- himpunan fuzzy dalam bentuk fungsi keanggotaan. Tujuan dari fuzzification adalah untuk mendapatkan derajat keanggotaan dari hasil pemetaan input crisp kedalam fungsi keanggotaan yang bersesuaian. Derajat keanggotaan bernilai antara 0 dan 1. Tahapan awal proses fuzzification adalah menentukan parameter-parameter fungsi keanggotaan pada setiap himpunan fuzzy masukan. Pada pemrograman fuzzification ini digunakan parameter fungsi keanggotaan masukan berupa nilai jarak dan nilai waktu. Gambar 3.6 dan Gambar 3.7 merupakan parameter fungsi keanggotaan jarak dan waktu. Gambar 3.6 Fungsi keanggotaan jarak STIKOM SURABAYA Gambar 3.7 Fungsi keanggotaan waktu Pada Gambar 3.6 dan 3.7 adalah fungsi keanggotaan dari jarak dan waktu yang merupakan suatu variabel linguistic. Nilai linguistic S jarak = {Habis, Dekat, Sedang, Jauh dan T waktu = {Selesai, Habis, Sedang, Lama}, dimana nilai semesta pembicaraanya terletak antara -4 sampai 20. Distribusi fungsi keanggotaannya adalah fungsi segitiga dan fungsi trapesoid. Fungsi trapesoid mempunyai empat parameter = [a, b, c, d], dimana a, b, c dan d adalah proyeksi titik-titik sudut trapesium pada sumbu mendatar, contohnya pada fungsi trapesoid keanggotaan sedang jarak terdapat empat parameter nilai yaitu [4, 8, 12, 16]. Penggunaan rumus fungsi segitiga dan trapesoid sama dibedakan hanya parameter segitiga b dan c berhimpit sehingga dalam fungsi segitiga nilai b dan c bernilai sama. Untuk mencari nilai bobot dari derajat keanggotaan masing-masing fungsi menggunakan rumus trapesoid yaitu : 3.1 Keterangan : 1. ux adalah nilai derajat keanggotaan 2. x adalah nilai input crisp atau nilai tegas STIKOM SURABAYA 3. a, b, c, d merupakan parameter nilai dari fungsi trapesoid Sedangkan realisasi proses memperoleh derajat keanggotaan dari masing – masing fungsi keanggotaan adalah sebagai berikut. variable array dk[0] sampai dk[3] merupakan nilai derajat keanggotaan dari jarak sedangkan dk[4] sampai dk[7] merupakan nilai derajat keanggotaan dari waktu Untuk nilai parameter fungsi keanggotaan jarak dikalikan 100 karena sensor membacanya dalam centimeter dk[0] = derajat_keanggotaan-900,-800,0,100,s_jarak; dk[1] = derajat_keanggotaan0,400,400,800,s_jarak; dk[2] = derajat_keanggotaan400,800,1200,1600,s_jarak; dk[3] = derajat_keanggotaan1200,1600,3000,3400,s_jarak; dk[4] = derajat_keanggotaan-20,-16,0,1,t_waktu; dk[5] = derajat_keanggotaan0,4,4,8,t_waktu; dk[6] = derajat_keanggotaan4,8,12,16,t_waktu; dk[7] = derajat_keanggotaan12,16,30,34,t_waktu; fungsi dari program yang digunakan untuk memperoleh nilai derajat keanggotaan float derajat_keanggotaan float a,float b,float c,float d,float input { float m1,m2,m3,m4,m5,m6,m7; m1 = b-a; m7 = d-c; if m1=0{m2 = input-ab-a;} else {m2=0;} if m7=0{m3 = d-inputd-c;} else {m3=0;} m4 = fminm2,1; m5 = fminm4,m3; m6 = fmaxm5,0; return m6; } 3. Rule set atau evaluasi aturan adalah proses mengevaluasi derajat keanggotaan tiap-tiap fungsi keanggotaan himpunan fuzzy masukan ke dalam basis aturan yang telah ditetapkan. Tujuan dari evaluasi aturan ini adalah menentukan derajat keanggotaan dari keluaran fuzzy. Sebelum melakukan evaluasi aturan terlebih dahulu ditetapkan basis aturan. Basis aturan merupakan keseluruhan aturan dari kombinasi dua masukan yang mungkin. Secara lengkap, jumlah kombinasi yang mungkin dari dua himpunan fuzzy masukan dengan masing- STIKOM SURABAYA masing empat fungsi keanggotaan sehingga jumlah aturannya adalah enambelas aturan. Basis aturan yang dibuat berdasarkan tingkah laku plant yang diinginkan. Pada bentuk yang lebih sederhana, sembilan aturan kendali fuzzy dapat dilihat pada tabel 3.1 Tabel 3.1 Basis aturan kendali fuzzy Jarak Waktu Selesai Dekat Sedang Jauh Selesai Berhenti Berhenti Berhenti Berhenti Habis Berhenti Lambat Sedang Cepat Sedang Berhenti Lambat Sedang Cepat Lama Berhenti Lambat Lambat Lambat Berhenti, Lambat, Sedang, Cepat merupakan konstanta konsekuen dari anteseden dan masing-masing konstanta memiliki nilai yaitu Berhenti = 0, Lambat = 500, Sedang = 850, Cepat = 1000. Setelah proses fuzzification dieksekusi, dilakukan proses agregasi dengan mengambil nilai maksimal dari masing –masing fungsi keanggotaan variable keluaran. Realisasi proses evaluasi aturan dalam bentuk program adalah sebagai berikut. mencari nilai korelasi AND antara fungsi keanggotaan jarak dan waktu nilai_penyebut = k = 0;for i = 0; i 4; i++ { for j = 4; j 8; j++ { u[k] = rule_setdk[i],dk[j]; nilai_penyebut = nilai_penyebut + u[k++]; } }k=0; float rule_setfloat a,float b { float nilai; nilai = fmina,b; STIKOM SURABAYA return nilai; } 4. Defuzzification adalah kebalikan dari proses fuzzification, yaitu mengubah himpunan Fuzzy keluaran menjadi keluaran tegas crisp. Pengubahan ini diperlukan karena konstanta kendali PID hanya mengenal nilai tegas sebagai variable sinyal kontrol. Perancangan ini, menggunakan sebuah himpunan fuzzy keluaran dengan fungsi keanggotaannya berupa singleton yaitu fungsi keanggotaan keluaran sinyal control dapat dilihat pada Gambar 3.8 Gambar 3.8 Fungsi keanggotaan keluaran sinyal control Hasil keluaran crisp output akan dikirim ke Slave dengan komunikasi SPI sebagai sinyal kontrol PID. Realisasi proses pengambilan keputusan metode sugeno menjadi bentuk crisp output dalam bentuk program adalah sebagai berikut : u[0] = u[0] berhenti; u[1] = u[1] berhenti; u[2] = u[2] berhenti; u[3] = u[3] berhenti; u[4] = u[4] berhenti; u[5] = u[5] lambat; u[6] = u[6] lambat; u[7] = u[7] lambat; u[8] = u[8] berhenti; u[9] = u[9] sedang; u[10] = u[10] sedang; STIKOM SURABAYA u[11] = u[11] lambat; u[12] = u[12] berhenti; u[13] = u[13] cepat; u[14] = u[14] cepat; u[15] = u[15] lambat; nilai_pembilang = 0; for i=0;i 16; i++ nilai_pembilang = nilai_pembilang + u[i]; ifnilai_penyebut=0RPMdata = nilai_pembilangnilai_penyebut; else RPMdata = 0;

3.1.5 Kontroler PID Proportional Integral Derivative