39
Metode penelitian yang digunakan pada pembuatan perangkat keras dan perangkat lunak adalah studi kepustakaan dan penelitian laboratorium. Dengan cara ini penulis berusaha untuk mendapatkan dan mengumpulkan data-data, 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 dan perangkat lunak, kemudian melakukan pengujian terhadap perangkat keras dan perangkat lunak. Langkah berikutnya adalah mengambil atau mengumpulkan data hasil percobaan. Langkah terakhir adalah melakukan evaluasi dan analisis terhadap hasil data yang dikumpulkan.
Diagram blok yang digunakan dalam sistem dengan menggunakan kendali PID dan fuzzy untuk optimalisasi kecepatan mobile robot menggunakan komunikasi SPI (Serial Peripheral Interface), dapat dilihat pada Gambar 3.1 :
STIKOM
Input : jarak dan waktu Motor kanan Motor kiri Minimum sistem slave Proses PID Minimum sistem slave Proses PID Minimum sistem master Proses Fuzzy Feedback kecepatan Feedback kecepatan spi spi Feedback jarak Sensor jarak
Gambar 3.1 Diagram blok sistem keseluruhan
Dari blok diagram pada Gambar 3.1 dapat dilihat porsi untuk masing-masing sistem kendali PID dan fuzzy. Pada sistem ini memiliki input berupa jarak dan waktu yang kemudian akan menjadi input fuzzy yang diproses oleh microcontroller ATmega16 sebagai Master. Metode fuzzy yang digunakan adalah 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
STIKOM
kali ini berfungsi sebagai pengontrol motor kanan dan motor kiri yang satu sama lain tidak berkomunikasi secara langsung.
Pada microcontroller Slave dilakukan proses kendali PID yang digunakan untuk mengontrol motor kanan dan motor kiri. Di mana proses PID mendapatkan input berasal dari microcontroller Master yang mengirimkan kecepatan yang selalu berubah-ubah sesuai dengan output fuzzy yang dihasilkan.
3.1 Perancangan Perangkat Keras 3.1.1 Perancangan Mekanik Robot
Robot yang digunakan penulis terdiri atas 2 buah roda disertai motor yang terletak disisi kiri dan kanan bagian base robot digunakan untuk menjalankan robot. Berikut arsitektur robot secara detail adalah sebagai berikut.
Ukuran dimensi
Ukuran Robot : 500 mm x 600 mm x 100 mm
Struktur Material
Bahan Material yang digunakan : a. Bagian Rangka
1. Aluminium Profile. 2. Aluminium Sheet. 3. Bearing.
4. Mur dan Baut.
b. Bagian dari Penggerak Robot : 1. Motor DC 12 Volt.
2. Aluminium.
STIKOM
3. Roda dari karet Silikon. 4. Roda Bebas.
5. Belt. 6. Gear.
Berikut arsitektur robot secara detail adalah sebagai berikut :
Gambar 3.2 Desain robot keseluruhan
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.
STIKOM
Microchip berfungsi sebagai otak dalam mengolah semua instruksi baik input maupun output seperti halnya pemroses data input fuzzy maupun PID yang kemudian menghasilkan output yang digunakan untuk menjalankan motor.
Minimum system yang dirancang penulis dalam tugas akhir kali ini menggunakan minimum system dengan komunikasi SPI (Serial Peripheral Interface) yang terdiri dari satu buah microcontroller ATmega16 sebagai microcontroller Master dan dua buah ATmega8 sebagai microcontroller Slave. Dalam komunikasi SPI terdapat satu Minimum system sebagai Master dan dua minimum system sebagai Slave.
Pada rangkaian minimum system ini penulis memberikan pin VCC 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 Output), dan SCK (Signal Clock) digunakan untuk keperluan pemrograman microcontroller dan sebagai komunikasi antara Master dan Slave (komunikasi SPI), sedangkan pin SS (Slave Select) digunakan oleh Master sebagai selektor antara Slave 1 dan slave 2. Untuk melakukan proses downloading program dari komputer ke microcontroller harus dilakukan secara terpisah antara Master dan Slave.
STIKOM
Minimum sistem master (Proses fuzzy) Minimum sistem slave (proses PID) Minimum sistem slave (proses PID) SPI SPI Driver motor Driver motor Motor DC Motor DC Rotary encoder Rotary encoder Rotary encoder
Gambar 3.3 Diagram blok rancangan Minimum system keseluruhan
A. Minimum System Master
Gambar 3.2 Rangkaian skematik minimum system Master cap 100u ss ATMega16 1 2 3 4 5 6 7 8 9 12 13 14 15 16 17 18 19 20 21 10 11 31 33 34 35 36 37 38 39 40 22 23 24 25 26 27 28 29 30 32 PB0/(XCK/T0) PB1/(T1) PB2/(INT2/AIN0) PB3/(OC0/AIN1) PB4/(SS) PB5/(MOSI) PB6/(MISO) PB7/(SCK) RESET XTAL2 XTAL1 PD0/(RXD) PD1/(TXD) PD2/(INT0) PD3/(INT1) PD4/(OC1B) PD5/(OC1A) PD6/(ICP) PD7/(OC2) VC C GN D GN D PA7/(ADC7) PA6/(ADC6) PA5/(ADC5) PA4/(ADC4) PA3/(ADC3) PA2/(ADC2) PA1/(ADC1) PA0/(ADC0) PC0/(SCL) PC1/(SDA) PC2/(TCK) PC3/(TMS) PC4/(TDO) PC5/(TDI) PC6/(TOSC1) PC7/(TOSC2) AVCC AREF cap 10uF/16v R 330 reset cry stal 11.0952.000 ss1 5v
<Doc> <Rev Code>
<Title>
A
1 1
Saturday , August 11, 2012 Title
Size Document Number Rev
Date: Sheet of DIODE 5v T1 M pus hbut ton 5v mosi f use 1 2 sck R 10k cap 30pf reset LED R 100 2200uF/25v miso 12v regulator LM7805 1 2 3 VI GN D VO 12v 470uf /16v cap 30pf sumber tegangan 12v 1 2 5 V
STIKOM
SURABAYA
Minimum system Master menggunakan microcontroller ATmega16 yang mempunyai 40 pin I/O dan salah satunya terdapat fasilitas untuk berkomunikasi antar microcontroller yaitu komunikasi SPI. Dalam komunikasi SPI minimum system Master merupakan salah satu komponen penting, dimana dalam tugas akhir ini Minimum system Master digunakan sebagai pemroses fuzzy yang mempunyai input berupa jarak dan waktu seperti yang telah digambarkan pada 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.
Tabel 3.1 Pin I/O Minimum system Master
Pin I/O Fungsi
Vcc Power 5v
Gnd Ground
PA0-PA7 LCD
PB2 Sebagai slave select (selektor) ke microcontrollerkontroler slave 1
PD2 Sebagai slave select (selektor) ke microcontrollerkontroler slave 2
T1/PB1 Sebagai counter 16 bit nilai jarak dari rotary encoder Mosi/PB5 Master out, slave in (digunakan dalam komunikasi SPI) Miso/PB6 Master in, salve out (digunakan dalam komunikasi SPI) Sck/PB7 Serial Clock (digunakan dalam komunikasi SPI)
Reset Mereset program
PC0-PC7 Digunakan sebagai keypad
STIKOM
B. Minimum System Slave
Gambar 3.3 Rangkaian skematik Minimum system slave
Pada Gambar 3.3 merupakan rangkaian skematik minimum system slave, minimum system Slave disini menggunakan microcontroller ATmega8 yang mempunyai 28 pin I/O dan salah satunya terdapat fasilitas untuk berkomunikasi antar microcontroller yaitu komunikasi SPI. Dalam komunikasi SPI minimum system Slave merupakan salah satu komponen penting, dimana dalam tugas akhir ini Minimum system Slave digunakan sebagai pemroses kendali PID yang mempunyai input berupa kecepatan yang berasal dari minimum system Master dan 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.
miso LED 12v pu s hb ut ton 100 reset 12v Cap 2200uF/25v pwm1
<Doc> <Rev Code>
<Title>
A
1 1
Tuesday , August 14, 2012 Title
Size Document Number Rev
Date: Sheet of 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 (XCK/T0) VCC GND PB6 (XT1/TOSC1) PB7 (XT2/TOSC2) PD5 (T1) PD6 (AIN0) PD7 (AIN1) PB0 (ICP) (OC1A) PB1 (SS/OC1B) PB2 (OC2/MOSI) PB3 (MISO) PB4 (SCK) PB5 AVCC AREF AGND (ADC0) PC0 (ADC1) PC1 (ADC2) PC2 (ADC3) PC3 (SDA/ADC4) PC4 (SCL/ADC5) 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 10uF/16v dir1 dir2 cap 30 pF
STIKOM
SURABAYA
Tabel 3.2 Pin I/O Minimum system slave
Pin I/O Fungsi
Vcc Power 5v
Gnd Ground
PB1/OR1A Sebagai output pwm 8 bit atau 10 bit
T0/PC4 Sebagai counter 8 bit nilai rpm dari rotary encoder Mosi/PB3 Master out, slave in (digunakan dalam komunikasi SPI) Miso/PB4 Master in, salve out (digunakan dalam komunikasi SPI) Sck/PB5 Serial clock (digunakan dalam komunikasi SPI)
Reset Mereset program
PB2/SS 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
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 2200uF/25v pwm1
<Doc> <Rev Code>
<Title>
A
1 1
Tuesday , August 14, 2012 Title
Size Document Number Rev
Date: Sheet of 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 (XCK/T0) VCC GND PB6 (XT1/TOSC1) PB7 (XT2/TOSC2) PD5 (T1) PD6 (AIN0) PD7 (AIN1) PB0 (ICP) (OC1A) PB1 (SS/OC1B) PB2 (OC2/MOSI) PB3 (MISO) PB4 (SCK) PB5 AVCC AREF AGND (ADC0) PC0 (ADC1) PC1 (ADC2) PC2 (ADC3) PC3 (SDA/ADC4) PC4 (SCL/ADC5) 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 10uF/16v dir1 dir2 cap 30 pF
STIKOM
SURABAYA
Gambar 3.5 Flowchart Logika Fuzzy
STIKOM
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_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);
STIKOM
SURABAYA
} else if(tanda == 1) { temp_hasil1[itung++] = buffer; lcd_gotoxy(x++,1); lcd_putchar(buffer); } else{ temp_hasil[itung++] = buffer; } } } exit: lcd_gotoxy(x,0); lcd_putchar(' '); if(tanda == 1) { hasil = atoi(temp_hasil1); } else { hasil = atoi(temp_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
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. u(x) adalah nilai derajat keanggotaan 2. x adalah nilai input crisp atau nilai tegas
STIKOM
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_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);
/*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; }
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
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_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);
STIKOM
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
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)
Dalam pengontrolan PID dapat dinyatakan dengan persamaan differensial sebagai berikut :
( )
* ( )
∫ ( )
( )
+
(3.2)
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 ke bentuk diskrit. Dengan melihat bahwa :
( )
∫ ( ) ∑
(3.3)
Maka persamaan diatas menjadi persamaan PID diskrit :
( )
*
(
)
∑
+
(3.4)
Dimana m(n) menyatakan nilai m pada suatu interval n∆t, dengan n bilangan bulat. Dengan memperkenalkan parameter :
(
)
(3.5)
(
)
(3.6)
STIKOM
Dimana Ts = ∆t = waktu sampling dari input, maka persamaan PID diskrit di atas dapat dinyatakan dalam sebuah algoritma perumusan sebagai berikut :
(3.7)
( )
(
)
(3.8)
Dimana Sn = jumlah seluruh nilai error pada interval 0 sampai nTs
Pada desain tugas akhir kali ini kontrol PID mendapat input yang berasal dari metode fuzzy yang sebelumnya melakukan proses perhitungan fuzzification yang menghasilkan output berupa kecepatan (Rpm). Gambar 3.9 merupakan formula kendali kontrol PID yang digambarkan melalui sebuah flowchart adalah sebagai berikut :
STIKOM
Start Error = sp - pv P = kp*error Sn = Sn_lm + error Over flow Y Sn = 1023 N I = ki*Sn
D_error = error – error_lm
Over flow Y D_error = 1023
N D = kd*D_error PID = P + I + D error_lm = error pwm = pwm + PID Input : sp=output fuzzy Inisialisasi : kp,ki,kd Sn < 0 Sn = 0 Y N D_error < 0 D_error = 0 N Y Sn_lm = Sn
Gambar 3.9 Flowchart Kontrol PID
STIKOM
Dari program flowchart di atas dapat dilihat bahwa input kontrol PID berasal dari output fuzzy berupa kecepatan yang kemudian diolah melalui perumusan kontrol PID.
Pada kontrol PID terdapat feedback atau yang disebut dengan PV (present value) dari motor DC yang telah diolah oleh sensor rotary encoder yang akan digunakan sebagai perhitungan kontrol PID. Berikut merupakan cuplikan program pengambilan feedback oleh sensor optocoupler :
Pv = 0;
delay_ms(100); //time sampling data pv
pv = TCNT0*10; //rumus perhitungan rps dimana 10
//didapatkan dari jumlah time sampling //dikali 10 agar mendapatkan waktu 1 //detik.
pv = (pv/55)*60; //rumus perhitungan rpm
Berikut merupakan cuplikan program kontrol P, kontrol I, dan kontrol D sebagai berikut :
1. Kontrol P
kp = 0.5; //nilai kp didapatkan dari trial error
error = sp - pv; //sp didapatkan dari inputan dari fuzzy p = kp*error;
2. Kontrol I
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)
STIKOM
{ delta_e = 1023; } else if (delta_e < 0) { delta_e = 0; } d = kd*delta_e; 4. Kontrol PID pid = (kp*error)+(ki*sn)+(kd*delta_e); pwm = pwm_lm + pid; if (pwm > 1023) { pwm = 1023; } else if (pwm < 0) {pwm = 0;}