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