BAB III
A
METODE PENELITIAN
Metode penelitian yang digunakan pada pembuatan perangkat keras dan
AY
perangkat lunak adalah studi kepustakaan dan penelitian laboratorium. Dengan cara ini penulis berusaha untuk mendapatkan dan mengumpulkan data-data,
AB
informasi, konsep-konsep yang bersifat teoretis dari buku, bahan-bahan kuliah, dan referensi dari internet yang berkaitan dengan permasalahan.
Penelitian laboratorium dilakukan dengan perancangan perangkat keras
R
dan perangkat lunak, kemudian melakukan pengujian terhadap perangkat keras
SU
dan perangkat lunak. Langkah berikutnya adalah mengambil atau mengumpulkan data hasil percobaan. Langkah terakhir adalah melakukan evaluasi dan analisis terhadap hasil data yang dikumpulkan.
M
Diagram blok yang digunakan dalam sistem dengan menggunakan
O
kendali PID dan fuzzy untuk optimalisasi kecepatan mobile robot menggunakan
ST
IK
komunikasi SPI (Serial Peripheral Interface), dapat dilihat pada Gambar 3.1 :
39
40
Minimum sistem slave
spi
AY
Motor kanan
Proses PID
Proses Fuzzy
AB
Minimum sistem master
Input : jarak dan waktu
A
Feedback kecepatan
Minimum sistem slave
Feedback jarak
SU
Sensor jarak
Motor kiri
Proses PID
R
spi
Feedback kecepatan
M
Gambar 3.1 Diagram blok sistem keseluruhan
Dari blok diagram pada Gambar 3.1 dapat dilihat porsi untuk masing-
O
masing sistem kendali PID dan fuzzy. Pada sistem ini memiliki input berupa jarak
IK
dan waktu yang kemudian akan menjadi input fuzzy yang diproses oleh microcontroller ATmega16 sebagai Master. Metode fuzzy yang digunakan adalah
ST
metode Sugeno. Setelah proses fuzzy selesai dilakukan oleh microcontroller Master, maka microcontroller Master akan mengeluarkan output berupa
kecepatan (dalam satuan rpm) yang kemudian akan dikirim ke dua buah microcontroller ATmega8 sebagai Slave. Microcontroller Slave pada tugas akhir
41
kali ini berfungsi sebagai pengontrol motor kanan dan motor kiri yang satu sama lain tidak berkomunikasi secara langsung.
A
Pada microcontroller Slave dilakukan proses kendali PID yang digunakan untuk mengontrol motor kanan dan motor kiri. Di mana proses PID mendapatkan
AY
input berasal dari microcontroller Master yang mengirimkan kecepatan yang selalu berubah-ubah sesuai dengan output fuzzy yang dihasilkan.
3.1.1
Perancangan Mekanik Robot
AB
3.1 Perancangan Perangkat Keras
Robot yang digunakan penulis terdiri atas 2 buah roda disertai motor yang
R
terletak disisi kiri dan kanan bagian base robot digunakan untuk menjalankan
Ukuran dimensi
SU
robot. Berikut arsitektur robot secara detail adalah sebagai berikut.
Ukuran Robot
: 500 mm x 600 mm x 100 mm
M
Struktur Material
O
Bahan Material yang digunakan a. Bagian Rangka
ST
IK
1. Aluminium Profile. 2. Aluminium Sheet. 3. Bearing.
4. Mur dan Baut. b. Bagian dari Penggerak Robot : 1. Motor DC 12 Volt. 2. Aluminium.
:
42
3. Roda dari karet Silikon. 4. Roda Bebas.
6. Gear.
Gambar 3.2 Desain robot keseluruhan
IK
O
M
SU
R
AB
AY
Berikut arsitektur robot secara detail adalah sebagai berikut :
A
5. Belt.
ST
3.1.2
Perancangan Minimum System
Rangkaian minimum system dibuat untuk mendukung kerja dari microchip
ATmega dimana microchip tidak bisa berdiri sendiri melainkan harus ada rangkaian dan komponen pendukung seperti halnya rangakaian catu daya, kristal dan lain sebagainya yang biasanya disebut minimum system.
43
Microchip berfungsi sebagai otak dalam mengolah semua instruksi baik input maupun output seperti halnya pemroses data input fuzzy maupun PID yang
A
kemudian menghasilkan output yang digunakan untuk menjalankan motor. Minimum system yang dirancang penulis dalam tugas akhir kali ini
AY
menggunakan minimum system dengan komunikasi SPI (Serial Peripheral Interface) yang terdiri dari satu buah microcontroller ATmega16 sebagai
AB
microcontroller Master dan dua buah ATmega8 sebagai microcontroller Slave. Dalam komunikasi SPI terdapat satu Minimum system sebagai Master dan dua minimum system sebagai Slave.
R
Pada rangkaian minimum system ini penulis memberikan pin VCC
SU
masukan tegangan operasi berkisar antara 4,5 Volt sampai dengan 5 Volt. pin reset berfungsi untuk masukan reset program secara otomatis atau manual. Sedangkan pin MOSI (Master Output Slave Input), MISO (Master Input Slave
M
Output), dan SCK (Signal Clock) digunakan untuk keperluan pemrograman
O
microcontroller dan sebagai komunikasi antara Master dan Slave (komunikasi SPI), sedangkan pin SS (Slave Select) digunakan oleh Master sebagai selektor
IK
antara Slave 1 dan slave 2. Untuk melakukan proses downloading program dari
komputer ke microcontroller harus dilakukan secara terpisah antara Master dan
ST
Slave.
44
Rotary encoder
Minimum sistem slave (proses PID)
Driver motor
Motor DC
Motor DC
AB
SPI
Driver motor
A
Minimum sistem master (Proses fuzzy)
Minimum sistem slave (proses PID)
AY
SPI
Rotary encoder
R
Rotary encoder
SU
Gambar 3.3 Diagram blok rancangan Minimum system keseluruhan
A. Minimum System Master
1 2
12v
DIODE
sumber tegangan 12v
O
VI
VO
T1 M
3
ss1 ss mosi miso sck
470uf /16v 2
2200uF/25v
cap 5v
pushbutton
9 12
PB0/(XCK/T0) PB1/(T1) PB2/(INT2/AIN0) PB3/(OC0/AIN1) PB4/(SS) PB5/(MOSI) PB6/(MISO) PB7/(SCK)
XTAL2 AREF
30pf R 10k
40 39 38 37 36 35 34 33
cry stal
AVCC
32 30
cap R 330
11.0952.000 13
LED
14 15 16 17 18 19 20 21
30pf cap 10uF/16v
PA0/(ADC0) PA1/(ADC1) PA2/(ADC2) PA3/(ADC3) PA4/(ADC4) PA5/(ADC5) PA6/(ADC6) PA7/(ADC7)
RESET
5v
reset
R 100
reset
1 2 3 4 5 6 7 8
XTAL1 PD0/(RXD) PD1/(TXD) PD2/(INT0) PD3/(INT1) PD4/(OC1B) PD5/(OC1A) PD6/(ICP) PD7/(OC2)
GND GND
IK
10
5v
regulator LM7805
1
PC7/(TOSC2) PC6/(TOSC1) PC5/(TDI) PC4/(TDO) PC3/(TMS) PC2/(TCK) PC1/(SDA) PC0/(SCL)
29 28 27 26 25 24 23 22
11 31
f use
GND
12v
ATMega16
VCC
M
1 2
ST
5V cap 100u
Gambar 3.2 Rangkaian skematik minimum system Master
Title
45
Minimum system Master menggunakan microcontroller ATmega16 yang mempunyai 40 pin I/O dan salah satunya terdapat fasilitas untuk berkomunikasi
A
antar microcontroller yaitu komunikasi SPI. Dalam komunikasi SPI minimum system Master merupakan salah satu komponen penting, dimana dalam tugas
AY
akhir ini Minimum system Master digunakan sebagai pemroses fuzzy yang mempunyai input berupa jarak dan waktu seperti yang telah digambarkan pada
AB
blok diagram dan akan menghasilkan output berupa kecepatan yang akan
dikirimkan ke minimum system Slave. Tabel di bawah ini merupakan pin I/O yang digunakan penulis dalam pembuatan tugas akhir pada minimum system Master.
R
M
PD2
SU
Pin I/O Vcc Gnd PA0-PA7 PB2
Tabel 3.1 Pin I/O Minimum system Master Fungsi Power 5v Ground LCD Sebagai slave select (selektor) ke microcontrollerkontroler slave 1 Sebagai slave select (selektor) ke microcontrollerkontroler slave 2 Sebagai counter 16 bit nilai jarak dari rotary encoder Master out, slave in (digunakan dalam komunikasi SPI) Master in, salve out (digunakan dalam komunikasi SPI) Serial Clock (digunakan dalam komunikasi SPI) Mereset program Digunakan sebagai keypad
ST
IK
O
T1/PB1 Mosi/PB5 Miso/PB6 Sck/PB7 Reset PC0-PC7
46
B. Minimum System Slave 5v
1
VI
DIODE VO
3
1 2 Cap 470uf /16v 12v
sumber tegangan 12V 1 2
2
Cap 2200uF/25v
GND
Regulator LM7805
A
12v
5V
AY
konektor f use IC4
T0 S1 cap 30 pF cry stal 11.0592 Mhz dir1 dir2
cap 30 pF
5v
PC6 (RESET)(SCL/ADC5) PC5 PD0 (RxD) (SDA/ADC4) PC4 PD1 (TxD) (ADC3) PC3 PD2 (INT0) (ADC2) PC2 PD3 (INT1) (ADC1) PC1 PD4 (XCK/T0) (ADC0) PC0 VCC AGND GND AREF PB6 (XT1/TOSC1) AVCC PB7 (XT2/TOSC2) (SCK) PB5 PD5 (T1) (MISO) PB4 PD6 (AIN0) (OC2/MOSI) PB3 PD7 (AIN1) (SS/OC1B) PB2 PB0 (ICP) (OC1A) PB1
5v
sck miso mosi reset
5v
R 10k
R 330
1 2 3 4 5 6
downloader
reset
sck miso mosi ss pwm1
LED
Cap 10uF/16v
R
ATmega8
28 27 26 25 24 23 22 21 20 19 18 17 16 15
AB
cap 100u
1 2 3 4 5 6 7 8 9 10 11 12 13 14
pushbutton
reset
100
SU
Gambar 3.3 Rangkaian skematik Minimum system slave
Pada Gambar 3.3 merupakan rangkaian skematik minimum system slave,
M
minimum system Slave disini menggunakan microcontroller ATmega8 yang mempunyai 28 pin I/O dan salah satunya terdapat fasilitas untuk berkomunikasi
O
antar microcontroller yaitu komunikasi SPI. Dalam komunikasi SPI minimum
IK
system Slave merupakan salah satu komponen penting, dimana dalam tugas akhir ini Minimum system Slave digunakan sebagaiTitlepemroses kendali PID yang <Title>
ST
Size minimum Document Numbersystem Master dan mempunyai input berupa kecepatan yang berasal dari A
Date:
Tuesday , August 14, 2012
Sheet
1
menghasilkan output berupa PWM yang akan digunakan untuk mengendalikan motor DC. Tabel di bawah ini merupakan pin I/O yang digunakan penulis dalam pembuatan tugas akhir pada minimum system Slave.
Rev of
1
47
3.1.3
A
AY
Perancangan Driver Motor L298
AB
Pin I/O Vcc Gnd PB1/OR1A T0/PC4 Mosi/PB3 Miso/PB4 Sck/PB5 Reset PB2/SS
Tabel 3.2 Pin I/O Minimum system slave Fungsi Power 5v Ground Sebagai output pwm 8 bit atau 10 bit Sebagai counter 8 bit nilai rpm dari rotary encoder Master out, slave in (digunakan dalam komunikasi SPI) Master in, salve out (digunakan dalam komunikasi SPI) Serial clock (digunakan dalam komunikasi SPI) Mereset program Sebagai Slave select dari microcontrollerkontroler Master
R
Driver motor merupakan salah satu komponen terpenting dalam pengerjaan tugas akhir kali ini, di mana driver motor digunakan sebagai
SU
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
M
menjalankan motor DC. Driver motor L298 mempunyai dua channel output
O
motor, dalam satu channel mempunyai arus sebesar 2A, sedangkan untuk menjalankan motor DC yang ada pada robot, penulis membutuhkan arus yang
IK
lebih besar guna menstabilkan motor pada robot. Maka solusi yang tepat adalah
ST
memparalel dua channel output driver motor tersebut agar menjadi satu untuk mendapatkan arus sebesar 4A. Berikut gambar rangkaian driver motor yang telah diparalel.
48
12v
5v
1
VI
DIODE VO
3
1 2 Cap 470uf /16v 12v
sumber tegangan 12V 1 2
2
Cap 2200uF/25v
GND
Regulator LM7805
A
konektor f use 5V
IC4
cry stal 11.0592 Mhz dir1 cap 30 pF dir2
ATmega8
28 27 26 25 24 23 22 21 20 19 18 17 16 15
5v
sck miso mosi reset
5v
1 2 3 4 5 6
AY
T0 S1 cap 30 pF
5v
PC6 (RESET)(SCL/ADC5) PC5 PD0 (RxD) (SDA/ADC4) PC4 PD1 (TxD) (ADC3) PC3 PD2 (INT0) (ADC2) PC2 PD3 (INT1) (ADC1) PC1 PD4 (XCK/T0) (ADC0) PC0 VCC AGND GND AREF PB6 (XT1/TOSC1) AVCC PB7 (XT2/TOSC2) (SCK) PB5 PD5 (T1) (MISO) PB4 PD6 (AIN0) (OC2/MOSI) PB3 PD7 (AIN1) (SS/OC1B) PB2 PB0 (ICP) (OC1A) PB1
R 10k
R 330
downloader
reset
sck miso mosi ss pwm1
LED
AB
cap 100u
1 2 3 4 5 6 7 8 9 10 11 12 13 14
pushbutton
reset
Cap 10uF/16v
R
100
SU
Gambar 3.4 Rangkaian driver motor L298
3.1.4 Program kendali Fuzzy
Program kendali fuzzy terdiri atas fuzzification, evaluasi aturan,
M
mekanisme pengambilan keputusan metode Sugeno. Keluaran pada proses
O
mekanisme pengambilan keputusan metode Sugeno merupakan hasil dari proses kendali fuzzy secara keseluruhan untuk mendapatkan nilai tegasnya yaitu sinyal
IK
Title diperlihatkan pada Gambar kontrol (rpm). Blok diagram program kendali fuzzy <Title>
ST
3.9.
Size A Date:
Document Number Tuesday , August 14, 2012
Rev Sheet
1
of
1
ST
IK
O
M
SU
R
AB
AY
A
49
Gambar 3.5 Flowchart Logika Fuzzy
50
Pada gambar 3.5 dapat dijelaskan sebagai berikut : 1.
Input fuzzy diperoleh dari penekanan keypad berupa nilai jarak dan waktu.
A
Adapaun program penekanan keypad sebagai berikut.
ST
IK
O
M
SU
R
AB
AY
unsigned int tekan_keypad(unsigned char tanda) { unsigned int itung = 0,x = 6; //Deklarasi variabel unsigned int hasil; unsigned char buffer; unsigned char temp_hasil[3],temp_hasil1[5]; while(1){ 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_ms(50); 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_ms(50); 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();} if(tanda == 0) { lcd_gotoxy(x,0); lcd_putchar('_'); } if (tanda == 1){ Lcd_gotoxy(x,1); Lcd_putchar('_'); } if (buffer == '#')goto exit; //keluar dari fungsi tekan //keypad if (buffer != '-'){ if (tanda == 0 ){ temp_hasil[itung++] = buffer; lcd_gotoxy(x++,0); lcd_putchar(buffer);
51
}
AY
R
AB
} } exit: lcd_gotoxy(x,0); lcd_putchar(' '); if(tanda == 1) { hasil = atoi(temp_hasil1); } else { hasil = atoi(temp_hasil); } return hasil;
A
else if(tanda == 1) { temp_hasil1[itung++] = buffer; lcd_gotoxy(x++,1); lcd_putchar(buffer); } else{ temp_hasil[itung++] = buffer; }
2.
SU
}
Fuzzification adalah proses pemetaan input crisp ke dalam himpunanhimpunan fuzzy dalam bentuk fungsi keanggotaan. Tujuan dari fuzzification
M
adalah untuk mendapatkan derajat keanggotaan dari hasil pemetaan input crisp kedalam fungsi keanggotaan yang bersesuaian. Derajat keanggotaan
O
bernilai antara 0 dan 1. Tahapan awal proses fuzzification adalah menentukan
ST
IK
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
AY
Gambar 3.7 Fungsi keanggotaan waktu
A
52
AB
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},
R
dimana nilai semesta pembicaraanya terletak antara -4 sampai 20. Distribusi
SU
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
M
pada fungsi trapesoid keanggotaan sedang jarak terdapat empat parameter nilai yaitu [4, 8, 12, 16]. Penggunaan rumus fungsi segitiga dan trapesoid
O
sama dibedakan hanya parameter segitiga b dan c berhimpit sehingga dalam
ST
IK
fungsi segitiga nilai b dan c bernilai sama. Untuk mencari nilai bobot dari derajat keanggotaan masing-masing fungsi menggunakan rumus trapesoid yaitu :
( )
(
(
)
)
Keterangan : 1. u(x) adalah nilai derajat keanggotaan 2. x adalah nilai input crisp atau nilai tegas
(3.1)
53
3. a, b, c, d merupakan parameter nilai dari fungsi trapesoid Sedangkan realisasi proses memperoleh derajat keanggotaan dari masing–
A
masing fungsi keanggotaan adalah sebagai berikut.
R
AB
AY
/*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_keanggotaan(0,400,400,800,s_jarak); dk[2] = derajat_keanggotaan(400,800,1200,1600,s_jarak); dk[3] = derajat_keanggotaan(1200,1600,3000,3400,s_jarak); dk[4] = derajat_keanggotaan(-20,-16,0,1,t_waktu); dk[5] = derajat_keanggotaan(0,4,4,8,t_waktu); dk[6] = derajat_keanggotaan(4,8,12,16,t_waktu); dk[7] = derajat_keanggotaan(12,16,30,34,t_waktu);
IK
O
M
SU
/*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-a)/(b-a);} else {m2=0;} if (m7!=0){m3 = (d-input)/(d-c);} else {m3=0;} m4 = fmin(m2,1); m5 = fmin(m4,m3); m6 = fmax(m5,0); return m6; }
ST
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-
54
masing empat fungsi keanggotaan sehingga jumlah aturannya adalah enambelas aturan. Basis aturan yang dibuat berdasarkan tingkah laku plant
A
yang diinginkan. Pada bentuk yang lebih sederhana, sembilan aturan kendali fuzzy dapat dilihat pada tabel 3.1
Jauh
Berhenti Berhenti Berhenti Berhenti
Berhenti Cepat Cepat Lambat
Waktu
Berhenti Sedang Sedang Lambat
AB
Berhenti Lambat Lambat Lambat
R
Selesai Habis Sedang Lama
AY
Jarak
Tabel 3.1 Basis aturan kendali fuzzy Selesai Dekat Sedang
SU
Berhenti, Lambat, Sedang, Cepat merupakan konstanta konsekuen dari anteseden dan masing-masing konstanta memiliki nilai yaitu Berhenti = 0, Lambat = 500, Sedang = 850, Cepat = 1000.
M
Setelah proses fuzzification dieksekusi, dilakukan proses agregasi dengan mengambil nilai maksimal dari masing–masing fungsi keanggotaan variable
O
keluaran. Realisasi proses evaluasi aturan dalam bentuk program adalah
ST
IK
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_set(dk[i],dk[j]); nilai_penyebut = nilai_penyebut + u[k++]; } }k=0; float rule_set(float a,float b) { float nilai; nilai = fmin(a,b);
55
return nilai; }
4.
Defuzzification adalah kebalikan dari proses fuzzification, yaitu mengubah
A
himpunan Fuzzy keluaran menjadi keluaran tegas (crisp). Pengubahan ini
AY
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
SU
R
AB
keanggotaan keluaran sinyal control dapat dilihat pada Gambar 3.8
M
Gambar 3.8 Fungsi keanggotaan keluaran sinyal control
O
Hasil keluaran crisp output akan dikirim ke Slave dengan komunikasi SPI
ST
IK
sebagai sinyal kontrol PID. Realisasi proses pengambilan keputusan metode sugeno menjadi bentuk crisp output dalam bentuk program adalah sebagai berikut : u[0] = u[0] * u[1] = u[1] * u[2] = u[2] * u[3] = u[3] * u[4] = u[4] * u[5] = u[5] * u[6] = u[6] * u[7] = u[7] * u[8] = u[8] * u[9] = u[9] * u[10] = u[10]
berhenti; berhenti; berhenti; berhenti; berhenti; lambat; lambat; lambat; berhenti; sedang; * sedang;
56
AY
A
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]; if(nilai_penyebut!=0)RPMdata = nilai_pembilang/nilai_penyebut; else RPMdata = 0;
3.1.5 Kontroler PID (Proportional Integral Derivative)
AB
Dalam pengontrolan PID dapat dinyatakan dengan persamaan differensial sebagai berikut :
* ( )
( )
( )
∫
+
(3.2)
R
( )
SU
Dimana e(t) = r(t) – c(t), r(t) adalah setpoint, c(t) adalah variable proses dan m(t) adalah variable manipulasi. Dan untuk mengimplementasikan kontrol PID dengan perangkat digital, maka haus dilakukan konversi dari bentuk kontinu
O
( )
M
ke bentuk diskrit. Dengan melihat bahwa :
∫
(
)
∑
(3.3)
Maka persamaan diatas menjadi persamaan PID diskrit :
IK
( )
*
(
)
∑
+
(3.4)
ST
Dimana m(n) menyatakan nilai m pada suatu interval n∆t, dengan n bilangan bulat. Dengan memperkenalkan parameter :
( )
(3.5)
( )
(3.6)
57
Dimana Ts = ∆t = waktu sampling dari input, maka persamaan PID diskrit di atas dapat dinyatakan dalam sebuah algoritma perumusan sebagai berikut :
(
)
(3.8)
AY
( )
A
(3.7)
Dimana Sn = jumlah seluruh nilai error pada interval 0 sampai nTs
Pada desain tugas akhir kali ini kontrol PID mendapat input yang berasal
AB
dari metode fuzzy yang sebelumnya melakukan proses perhitungan fuzzification yang menghasilkan output berupa kecepatan (Rpm). Gambar 3.9 merupakan
R
formula kendali kontrol PID yang digambarkan melalui sebuah flowchart adalah
ST
IK
O
M
SU
sebagai berikut :
58
Start
A
Inisialisasi : kp,ki,kd
AY
Input : sp=output fuzzy
Error = sp - pv
AB
P = kp*error
Sn = Sn_lm + error
Sn < 0
Over flow
Y
Sn = 1023
SU
N
N
R
Y Sn = 0
I = ki*Sn
M
D_error = error – error_lm
Y
D_error < 0
N
Over flow
Y
N
IK
O
D_error = 0
ST
D = kd*D_error
error_lm = error
Sn_lm = Sn
pwm = pwm + PID
PID = P + I + D
Gambar 3.9 Flowchart Kontrol PID
D_error = 1023
59
Dari program flowchart di atas dapat dilihat bahwa input kontrol PID berasal dari output fuzzy berupa kecepatan yang kemudian diolah melalui
A
perumusan kontrol PID. Pada kontrol PID terdapat feedback atau yang disebut dengan PV (present
AY
value) dari motor DC yang telah diolah oleh sensor rotary encoder yang akan digunakan sebagai perhitungan kontrol PID. Berikut merupakan cuplikan program
pv = (pv/55)*60;
//time sampling data pv //rumus perhitungan rps dimana 10 //didapatkan dari jumlah time sampling //dikali 10 agar mendapatkan waktu 1 //detik. //rumus perhitungan rpm
R
Pv = 0; delay_ms(100); pv = TCNT0*10;
AB
pengambilan feedback oleh sensor optocoupler :
sebagai berikut : 1.
Kontrol P
SU
Berikut merupakan cuplikan program kontrol P, kontrol I, dan kontrol D
//nilai kp didapatkan dari trial error //sp didapatkan dari inputan dari fuzzy
Kontrol I
O
2.
M
kp = 0.5; error = sp - pv; p = kp*error;
ST
IK
Ki = 0.00001; //nilai ki didaptkan dari trial error sn = sn_lm + error;//sn adalah jumlah keselutuhan dari error if (sn > 1023) { sn = 1023; } else if (sn < 0) { sn = 0; } pi = ki*sn;
3.
Kontrol D kd = 0.0001; //nilai kd didapatkan dari trial error delta_e = error - error_lm; if (delta_e > 1023)
60
{
Kontrol PID
ST
IK
O
M
SU
R
AB
pid = (kp*error)+(ki*sn)+(kd*delta_e); pwm = pwm_lm + pid; if (pwm > 1023) { pwm = 1023; } else if (pwm < 0) {pwm = 0;}
AY
4.
A
delta_e = 1023; } else if (delta_e < 0) { delta_e = 0; } d = kd*delta_e;