bab iv implementasi dan pengujian - · pdf filebab iv implementasi dan pengujian . 4. ......
TRANSCRIPT
51
BAB IV
IMPLEMENTASI DAN PENGUJIAN
4. 1. Implementasi
Pada sub bab ini, akan dibahas mengenai detail dari penerapan masing masing
perangkat keras dan algoritma yang telah dirancang pada bab sebelumnya.
4. 1. 1. Implementasi Perangkat Keras
Setelah dilakukan pemilihan semua perangkat keras yang dibutukan, dilakukan
implementasi ke dalam satu kesatuan skuter seimbang. Berikut ini adalah gambar
skuter seimbang yang telah dipasang semua komponen perangkat keras tersebut.
Gambar 45 Prototype Skuter Seimbang
Sensor giroskop dan akselerometer diletakkan di atas platform, sensor ini
diletakan sejajar dengan platform skuter. Tujuannya adalah agar sudut kemiringan
skuter ini sama dengan sudut yang dibaca oleh kedua sensor ini. Kedua sensor ini
dihubungkan ke mikrokontroller ATMega 16 dengan menggunakan kabel.
52
Kaki VCC pada kedua sensor ini dihubungkan dengan kaki VCC (5volt) pada
mikrokontroller, begitu pula dengan kaki ground yang dihubungkan dengan
ground mikrokontroller. Port Rate pada giroskop dihubungkan dengan port A0
pada mikrokontroller. Sedangkan pada akselerometer, port aksis Y dihubungkan
dengan port A1, dan port aksis X dihubungkan dengan port A2 pada
mikrokontroller.
Gambar 46 Sensor Akselerometer dan Giroskop
Mikrokontroller ATMega 16 yang diguakan dicatu dengan sebuah baterai 9 volt
yang terpisah dengan catu daya untuk motor. Pada desain awal, mikrokontroller
dicatu dengan catu daya yang didapat dari keluaran H-Bridge 5 volt. Namun
kemudian diubah dengan tujuan untuk menghindari adanya gangguan tegangan
ketika motor sedang berputar.
Port C0,C1,C2,C3 dan Port D4,D5 dari mikrokontroller kemudian dihubungkan
dengan kaki kaki H-Bridge menggunakan kabel. Port C0 dihubungkan dengan
kaki ke 5 (input 1), port C1 dihubungkan dengan kaki 7 (input 2) pada H bridge,
port C2 dengan kaki 10 (input 3), dan port C3 dihubungkan dengan kaki 12 (input
4). Sedangakan port D4 dan D5 dihubungkan ke kaki 6 dan 11 (enable).
53
Gambar 47 Mikrokontroller, Baterai 24 volt dan H-Bridge
Kaki ke-4 dari H-bridge disambungkan dengan sumber tegangan 24 volt yang
akan digunakan untuk mencatu motor DC. Sedangkan kaki ke-8 H-Bridge
dhubungkan dengan ground. Keluaran dari H-bridge pada kaki ke 2 & 3
dihubungkan ke motor 1, dan keluaran pada kaki ke 13 & 14 dihubungkan ke
motor 2. Kedua motor DC tersebut dipasang dibawah platfotm, yang kemudian
dihubungkan ke roda.
Gambar 48 Motor DC
4. 1. 2. Implementasi Perangkat Lunak
Dari hasil perancangan yang telah dilakukan, kemudian dilakukan implementasi
dari modul modul yang dibutuhkan ke dalam mikrokontroller. Implementasi
modul dan algoritma ini dituliskan ke dalam mikrokontroller menggunakan
bahasa C.
54
Implementasi Modul Timer Untuk Pencuplikan.
Modul Timer 0 digunakan sebagai sebagai pewaktu periode pencuplikan data dari
sensor. Pengaturan timer 0 dapat diatur sesuai kebutuhan melalui sebuah register
bernama TCCR0 dan TCNT0
Gambar 49 Register TCCR0 dan TCNT0
Untuk medapatkan prescaler sebesar 1024 sehingga register pencacah TCNT0
akan naik setiap 1024 siklus clock, nilai CS00 dan CS02 haruslah set. Sehingga
kami memberikan nilai 1 pada CS02 dan CS01 sebagai berikut.
#define CS0 (1 << CS02) | (0 << CS01) | (1 << CS00)
Untuk dapat membuat timer dengan periode 20ms, harus ditentukan nilai awal
register TCNT0 yang akan bertambah hingga mengalami overflow. Dari hasil
perhitungan pada bab perancangan, dibutuhkan sebanyak 216 siklus sebelum
terjadi overflow. Sehingga nilai awal yang harus selalu diberikan ke TCNT0
adalah 256 - 216= 40 atau 0x28. Untuk itu dibuatlah sebuah variabel RELOADT0
yang akan mengisi nilai awal TCNT0 setiap memulai pencuplikan. #define RELOADT0 40
Implementasi Modul PWM Menggunakan Timer 1
Timer 1 ini akan diprogram berdasarkan kebutuhan, yaitu untuk keperluan PWM.
Pada skuter seimbang ini, kami menggunakan PWM berjenis Phase Correct 10 bit.
Untuk memilih mode tersebut harus dilakukan pengaturan pada register TCCR1A
dan register TCCR1B.
55
Gambar 50 Register TCCR1A dan TCCR1B
Mode Phase Correct PWM 10 bit mengharuskan bit WGM13 dan WGM12 pada
register TCCR1B bernilai 0 sedangkan WGM11 dan WGM10 pada register
TCCR1A bernilai 1. Setelah pengaturan mode PWM, kami menginginkan
prescaler sebesar 1, maka pada register TCRR1B, bit CS12 dan CS11 bernilai 0
sedangkan CS10 bernilai 1. Setelah itu, pada register TCRR1A bit
COM1A1/COM1B1 diberi nilai 1 sedangkan COM1A0/COM1B0 diberi nilai 0
agar kita dapat menggunakan 2 pin OCRA dan OCRB dengan compare match.
Pada prosesnya nanti nilai pada TCNT1 akan dibandingkan dengan nilai pencacah
maksimum. Secara keseluruhan register TCCR1A dan TCCR1B dapat diatur
sebagai berikut. TCCR1A=0xA3;
TCCR1B=0x01;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
Implementasi Modul Komunikasi Serial
Pada perancangan, kita akan menggunakan baud prescale sebesar 5. Maka perlu
didefinisikan terlebihdahulu baudrate dan baudprescale yang digunakan. #define USART_BAUDRATE 115200
#define BAUD_PRESCALE 5
56
Untuk pengaturan komunikasi serial dengan PC ini, pada AVR ATMega16 ada 3
buah register yang harus diatur yaitu UCSRA, UCSRB dan UCSRC
Gambar 51 Register UCSRA, USCRB dan USCRC
Pengaturan pertama pada register USCRA dilakukan dengan memberi nilai 1 pada
bit UDRE untuk mengindikasikan jika buffer pengirim siap untuk menerima data.
Setalah itu dilakukan pengaturan pada register UCSRB. Pada register ini, kami
memberi nilai 1 pada bit TXEN. Dengan memberi nilai pada bit ini maka USART
transmitter akan berstatus enable.
Pengaturan berikutnya adalah pada register UCSRC. Pertama tama, bit USREL
harus bernilai satu pada saat menulis USCRC. Kemudian karena kami memilih
mode asynchronous dan tidak ada partisi,dan dengan 1 bit stop, maka bit USMEL,
UPM0 UPM1 dan USBS dibiarkan bernilai 0. Setelah itu, dengan diinginkannya
pengiriman data sebesar 8 bit, maka konfigurasinya adalah bit UCSZ2 bernilai 0
sedangkan bit UCSZ1 dan UCSZ0 bernilai 1.
Selanjutnya adalah pengisian terhadap UBBRH dan UBRRL sesuai denga baud
prescaler yang diinginkan. UBBRH merupakan 4 most significant bit dari baud
rate prescaler, sediangkan UBBRL merupakan 8 least significant bit dari baud rate
prescaler. {
UCSRB = (1 << TXEN); // enable UART transmitter
57
UCSRC = (1 << URSEL) | // select UCSRC
(3 << UCSZ0) | // 8 bit
(0 << UPM0) |
(0 << UPM1) | // no parity
(0 << USBS); // 1 stop bit
UBRRH = BAUD_PRESCALE >> 8;
UBRRL = BAUD_PRESCALE;
fdevopen(out, 0);
}
Pada PC, kami menggunakan program “Terminal” yang dapat dengan mudah
disesuaikan dengan sistem yang sudah disusun pada pengaturan USART pada
AVR ATMega16 di atas.
Gambar 52 Tampilan Perangkat Lunak Terminal
58
Implementasi Pengendali Fuzzy
Pada pengendali fuzzy ini, pertama tama dibuat fungsi keanggotaanny terlebih
dahulu. Fungsi keanggotaan ini meliputi fungsi keanggotaan error, delta error.
Dengan memasukkan nilai error dan delta error ke fungsi keanggotaannya masing
masing, maka akan didapat nilai derajat keanggotaannya dengan fuzzifikasi. Pada
penerapannya di mikrokontroller, pembuatan fungsi keanggotaan dan fuzzifikasi
dilakukan secara bersamaan sebagai berikut.
Batas batas dari fungsi keanggotaan dibuat seperti matriks dengan menggunakan
array. int e_mem_funcs[7][3]={ {-20,-15,-8},
{-15,-8,-4},
{-8,-4,0},
{-4, 0, 4},
{ 0, 4, 8},
{4,8,15},
{ 8, 15, 20}
};
int de_mem_funcs[3][3]= {{-300,-150, 0},
{-150, 0, 150},
{ 0,150, 300},
};
int pwm_matriks[3][7]={ {403, 313, 153,0,-147,-307,-397},
{403, 310, 153,0,-153,-313,-403},
{397, 307, 147,0,-153,-313,-403},
};
Untuk medapatkan nilai derajat keanggotaan pada setiap fungsi keanggotaan,
maka dilakukan fuzzifikasi dengan memasukkan nilai error dan delta error ke
fungsi keanggotaan yang dibangun sebagai berikut for(i=0; i< 7; i++)
{
if(i==0)
{
if(e >= e_mem_funcs[i][0] && e <= e_mem_funcs[i][2])
59
{
if(e < e_mem_funcs[i][1])
{
e_membership[i] = 1.00;
}
else
{
e_membership[i] = (float)(e_mem_funcs[i][2] - e) / (e_mem_funcs[i][2] -
e_mem_funcs[i][1]) ;
}
}
else
{
e_membership[i] = 0.00;
}
}
else if(i==6)
{
if(e >= e_mem_funcs[i][0] && e <= e_mem_funcs[i][2])
{
if(e < e_mem_funcs[i][1])
{
e_membership[i] = (float)(e - e_mem_funcs[i][0]) / (e_mem_funcs[i][1] -
e_mem_funcs[i][0]);
}
else
{
e_membership[i] = 1.00 ;
}
}
else
{
e_membership[i] = 0.00;
}
}
else
60
{
if(e >= e_mem_funcs[i][0] && e <= e_mem_funcs[i][2])
{
if(e < e_mem_funcs[i][1])
{
e_membership[i] = (float)(e - e_mem_funcs[i][0]) / (e_mem_funcs[i][1] - e_mem_funcs[i][0]);
}
else
{
e_membership[i] = (float)(e_mem_funcs[i][2] - e) / (e_mem_funcs[i][2] - e_mem_funcs[i][1]) ;
}
}
else
{
e_membership[i] = 0.00;
}
}
Program diatas berguna untuk membuat fungsi keanggotaan untuk error seperti
yang telah digambarkan pada bab perancangan. Pada fungsi keanggotaan delta
error, dilakukan hal yang serupa, hanya saja pada delta error hanya ada 3 buah
fungsi keanggotaan.
Setelah didapat derajat keanggotaannya masing masing untuk setiap fungsi
keanggotaan, dilakukan inferensi fuzzy dan defuzzifikasi. Pada implementasi di
mikrokontroller kedua proses ini dilakukan dalam satu rangkaian.
Pada proses defuzzifikasi, penulis digunakan metoda weighted average yang
persamaannya sebagai berikut.
(4.1.1)
Dimana z adalah nilai PWM, w adalah hasil kali derajat keanggotaan error (e) dan
derajat keanggotaan delta error (de)
Pertama tama, dibuat dahulu fungsi untuk membuat persamaan berikut
61
, , …………
, , …………
(4.1.2)
Dalam mikrokontroller, akan ditulis sebagai berikut }
total_e = 0.00;
for(i=0; i<7; i++)
{
total_e = total_e + e_membership[i];
}
total_de = 0.00;
for(i=0; i<3; i++)
{
total_de = total_de + de_membership[i];
}
for(i=0; i<7; i++)
{
e_membership[i] /= total_e;
}
for(i=0; i<3; i++)
{
de_membership[i] /= total_de;
}
Setelah itu, yang perlu dilakukan adalah mengalikan e_membership/total dengan
de_membership/total dan dengan nilai pwm sesuai dengan aturan fuzzynya seperti
pada program berikut.
for(i=0; i<3; i++)
{
last_de_mem = de_membership[i];
for(j=0; j<7; j++)
{
pwm_m[i][j] = pwm_matriks[i][j] * last_de_mem;
62
}
}
total_pwm = 0.00;
for(i=0; i<7; i++)
{
last_e_mem = e_membership[i];
for(j=0; j<3; j++)
{
total_pwm += pwm_m[j][i] * last_e_mem;
}
}
pwm = (short)total_pwm;
Pada akhirnya, didapat nilai pwm yang akan digunakan untuk memanggil fungsi
maju dan mundur pada modul motor. Jika pwm > 0 maka fungsi yang dipanggil
adalah fungsi maju, dan jika pwm < 0, fungsi yang dipanggil adalah fungsi
mundur.
Implementasi Pengendali PID
Implementasi pengendali PID dalam bentuk bahasa C pada mikrokontroller ini
pada dasarnya adalah menggunakan persamaan PID digital yang telah dibahas
pada bab 2. Pertama tama yang perlu dilakukan adalah pendeklarasian nilai
konstanta P I dan D yang akan digunakan #define Kp 1900
#define Ki 200
#define Kd 100
Selanjutnya dibuat program yang dibangun menerima masukan berupa galat, dan
akan menyimpan nilai galat lama, galat lama 2, pwm lama, dan akan memberikan
keluaran berupa pwm (v). Nilai keluaran ini kemudian akan digunakan untuk
memanggil fungsi maju dan mundur pada modul motor. Apabila v < 0 maka akan
dipanggil fungsi maju, dan sebaliknya apabila v > 0 akan dipanggil fungsi
mundur.
63
void PID (float galat)
{
// deklarasi variabel lokal
static float galat_lama;
static float galat_lama2;
static float v_lama;
//static float v;
v = v_lama + Kp*(galat - galat_lama) + Ki*(galat + galat_lama)/2 + Kd*(galat - 2*galat_lama +
galat_lama2);
//v = galat;
v_lama = v;
galat_lama2 = galat_lama;
galat_lama = galat;
printf("%i;", (int)v );
if (v < 0) //untuk galat positif
{
v = -v;
maju((unsigned int) v);
}
else //untuk galat negatif
{
mundur((unsigned int) v);
}
}
Implementasi Modul Pengendali Motor
Seperti yang telah dijelaskan sebelumnya, modul pengendali motor ini berfungsi
untuk menjalankan motor sesuai PWM dan arah yang diinginkan. Pertama tama,
untuk menjalankan 2 buah motor, digunakan 4 buat port C (port C0, C1, C2 dan
C3) untuk mengendalikan konfigurasi 8 buah trasistor pada H-bridge (4 untuk
masing masing motor), dan 2 port OCR yaitu prot D4 (OC1B) dan D5 (OC1A). DDRC |= ((1 << 0) | (1 << 1) |(1 << 2) |(1 << 3));
64
DDRD |= ((1 << 4) | (1 << 5));
Setelah itu, dibuat fungsi untuk maju dan untuk mundur. Pada saat ingin bergerak
maju, maka port C0 dan C2 harus bernilai 1 sedangkan port C1 dan C3 bernilai 0.
void maju (unsigned int v) {
PORTC |= (1 << 0);
PORTC &= ~(1 << 1);
PORTC |= (1 << 2);
PORTC &= ~(1 << 3);
}
Sebaliknya, jika diinginkan pergerakan skuter mundur, maka port C0 dan C2
harus bernilai 0 dan port C1 sedangkan port C1 dan C3 bernilai 1.
void mundur (unsigned int v) {
PORTC &= ~(1 << 0);
PORTC |= (1 << 1);
PORTC &= ~(1 << 2);
PORTC |= (1 << 3);
}
Setelah itu, untuk pemberian nilai PWM pada port OCR, perlu dilakukan
penambahan nilai PWM deadband motor terhadap nilai PWM yang dikeluarkan
oleh pengendali. Dan dilakukan juga pembatasan nilai PWM agar tidak melebihi
PWM maksimum yaitu 1023. Program yang dibangun adalah sebagai berikut if ((v + 555) < 1024)
{
OCR1A = v+555;//roda kanan
OCR1B = v+515;//roda kiri
}
else
{
OCR1A = 1023;//roda kanan
OCR1B = 1023;//roda kiri
Fungsi terakhir adalah fungsi untuk mengunci roda atau rem. Dalam keadaan ini,
semua port dari C0 hingga C3 bernilai 1, dan nilai PWM yang diberikan adalah 0. void rem (void)
65
{
PORTC |= (1 << 0);
PORTC |= (1 << 1);
PORTC |= (1 << 2);
PORTC |= (1 << 3);
OCR1A = 0;
OCR1B = 0;
}
4. 2. Pengujian
Setelah implementasi perangkat lunak maupun perangkat keras diselesaikan dan
menjadi sistem yang terintegrasi, maka dilakukan pengujian terhadap sistem ini.
Pengujian ini meliputi pengujian durasi program keseluruhan, pengujian nilai
deadband, pengujian dengan penggunaan pengendali logika fuzzy, dan pengujian
pada saat penggunaan pengedali PID.
4. 2. 1. Perhitungan Durasi Program
Pengujian pertama adalah pengujian durasi program. Pengujian ini dilakukan
untuk mengetahui berapa lama program pengendali berjalan dalam setiap lupnya.
Program ini harus berlangsung lebih cepat dari frekuensi pencuplikan masukan,
bila program berjalan lebih lambat, maka data yang dihasilkan tidak akan benar.
Dan jika waktu pencuplikan dan program ini dibuat terlalu lambat, maka
pengendali tidak bisa mengendalikan skuter secara real time. Pengujian lama
waktu program berjalan ini dilakukan dengan menggunakan timer 1 yang
dijalankan dengan prescaler 256. Dengan menggunakan kristal berfrekuensi
11059200, dan prescaler 256, didapat frekuensi clock sebesar
Dari hasil penghitungan, didapat lama waktu satu kali lup program dengan
menggunakan pengendali PID adalah selama 63 clock yang berarti
66
Sedangkan lama waktu satu kali lup program dengan menggunakan pengendali
fuzzy adalah selama 159 clock yang berarti
Dari kedua program yang menggunakan pengendali PID maupun fuzzy, dapat
dilihat bahwa waktu yang dibutuhkan untuk menjalankan satu kali lup jauh lebih
kecil dari waktu pencuplikan yaitu 20ms sehingga kedua program pengendali
tersebut dapat digunakan.
4. 2. 2. Pengujian Deadband Motor
Setiap motor DC memiliki deadband yang berbeda-beda. Deadband motor
membuat hubungan antara PWM yang diberikan kepada motor dengan kecepatan
yang dihasilkan motor menjadi tidak linear karena ada saat dimana ketika PWM
bernilai kecil, motor belum bisa berputar. Hal ini sangat dihindari dalam
implementasi pada skuter seimbang. Pada saat keimiringan sudut skuter kecil,
pengendali akan memberikan nilai PWM yang kecil juga. Dengan adanya
deadband ini, nilai PWM yang kecil belum dapat memutar motor, sehingga pada
sudut kemiringan kecil, motor tidak berputar untuk dapat memberikan akselerasi
pada skuter seimbang dan motor akan terjatuh atau tidak terkendali dengan baik
pada sudut kecil.
Pengujian nilai deadband pada motor ini dilakukan dengan cara menambah nilai
PWM setiap selang waktu dan nilai tersebut dikirim melalui komunikasi serial ke
komputer sehingga dapat dipantau nilainya. Dari hasil pemantauan tersebut
didapat nilai PWM pada saat motor mulai berputar. Nilai deadband yang
didapatkan adalah
Deadband motor 1: 555
Deadband motor 2 :515
Nilai PWM deadband motor tersebut kemudian ditambahkan dengan nilai PWM
yang dikeluarkan oleh pengendali.
67
4. 2. 3. Pengujian Penggunaan Pengendali Logika Fuzzy
Setelah dilakukan perancangan, dilakukan pengujian terhadap sistem yang telah
terintegrasi. Pada pengujian ini dilihat apakah pengendali logika fuzzy mampu
membuat skuter tetap seimbang sesusai dengan spesifikasi pada perancangan atau
tidak. Pengamatan ini dilakukan pada saat keadaan tanpa gangguan maupun
dengan diberikan gangguan. Pengujian ini dilakukan dengan menjalankan skuter
seimbang dan membiarkannya menyeimbangkan dirinya sendiri. Untuk
mempermudah pengamatan, dilakukan pengiriman data berupa sudut skuter dan
pwm yang dikeluarkan oleh pengendali menggunakan komunikasi serial ke
komputer. Data ini kemudian digambarkan dalam grafik hubungan sudut terhadap
waktu dan grafik hubugnan pwm terhadap waktu.
Berikut ini adalah hasil pengujian pengendali logika fuzzy ketika sudah
diimplementasikan pada skuter seimbang dan dijalankan.
68
Gambar 53 Grafik sudut skuter terhadap waktu dan PWM terhadap waktu dengan
pengendali logika fuzzy tanpa gangguan luar
Dari grafik diatas, dapat terlihat bahwa pengendali fuzzy telah mampu menjaga
keseimbangan skuter sesuai dengan spesifikasi yang diinginkan. Osilasi yang
terjadi pada skuter hanya berkisar antara sudut -1 derajat hingga 2 derajat saja.
Setelah itu, pengujian dilakukan dengan memberikan gangguan pada skuter
berupa gaya dorong yang mengakibatkan kemiringan sebesar mendekati 6 derajat
pada skuter. Hasilnya adalah sebagai berikut.
69
Gambar 54 Grafik sudut skuter terhadap waktu dan PWM terhadap waktu dengan
pengendali logika fuzzy dengan adanya gangguan luar
Dari grafik di atas, dapat dilihat dengan adanya pemberian gangguan pada skuter,
skuter masih dapat menjaga keseimbangannya sehingga tidak terjatuh. Skuter
mampu berdiri stabil dalam waktu sekitar 5 detik setelah diberikan gangguan.
Skuter ini dapat kembali ke posisi tegak dengan osilasi pada sudut -2 derajat
hingga sudut 2 derajat saja.
4. 2. 4. Pengujian Penggunaan Pengendali PID
Setelah dilakukan perancangan, dilakukan pengujian terhadap sistem yang telah
terintegrasi. Pada pengujian ini dilihat apakah pengendali PID mampu membuat
skuter tetap seimbang sesusai dengan spesifikasi pada perancangan atau tidak.
Pengamatan ini dilakukan pada saat keadaan tanpa gangguan maupun dengan
diberikan gangguan. Pengujian ini dilakukan dengan menjalankan skuter
seimbang dan membiarkannya menyeimbangkan dirinya sendiri. Untuk
mempermudah pengamatan, dilakukan pengiriman data berupa sudut skuter dan
pwm yang dikeluarkan oleh pengendali menggunakan komunikasi serial ke
komputer. Data ini kemudian digambarkan dalam grafik hubungan sudut terhadap
waktu dan grafik hubugnan pwm terhadap waktu. Pada pengujian pengendali PID
ini dilakukan 3 tahap, pertama tama, dilakukan pengujian terhadap penggunaan
pengendali proporsional saja. Kemudian pada pengendali ditambahkan konstanta
70
konstanta derivatif pada pengendali. Pengujian ini dilakukan dengan tahap ini
degan tujuan melakukan penalaan terhadap konstanta PID agar didapat hasil
kendali yang paling optimal.
Menggunakan Konstanta Proporsional Sebesar 1900
Dengan menggunakan pengendali Proporsional sebesar 1900, dan tanpa adanya
gangguan dari luar, didapat hubungan sudut skuter terhadap waktu dan pwm
terhadap waktu sebagai berikut.
Gambar 55 Grafik sudut skuter terhadap waktu dan PWM terhadap waktu dengan
pengendali proporsional tanpa gangguan luar
71
Dari grafik diatas, dapat terlihat bahwa pengendali proporsional telah mampu
menjaga keseimbangan skuter sesuai dengan spesifikasi yang diinginkan. Osilasi
yang terjadi pada skuter hanya berkisar antara sudut -2 derajat hingga 2 derajat.
Setelah itu, pengujian dilakukan dengan memberikan gangguan pada skuter
berupa gaya dorong yang menyebabkan adanya sudut kemiringan sebesar 4.5 pada
skuter. Hasilnya adalah sebagai berikut.
Gambar 56 Grafik sudut skuter terhadap waktu dan PWM terhadap waktu dengan
pengendali proporsional dengan adanya gangguan luar
72
Dari grafik di atas, dapat dilihat dengan pemberian gangguan kemiringan sebesar
4,5 derajat, skuter kurang mampu menjaga keseimbangannya hal ini dapat dilihat
dari osilasi skuter yang berkisar antara -4 derajat hingga 4 derajat. Oleh karena itu,
diperlukan penambahan pengendali integral untuk menghilangkan kesalahan pada
keadaan tunak.
Menggunakan Konstanta Proporsional Sebesar 1900 dan Konstanta Integral
Sebesar 200
Dengan menggunakan pengendali Proporsional sebesar 1900 dan integral sebesar
200, dilakukan pengjuan tanpa adanya gangguan dari luar, didapat hubungan
sudut skuter terhadap waktu dan pwm terhadap waktu sebagai berikut.
73
Gambar 57 Grafik sudut skuter terhadap waktu dan PWM terhadap waktu dengan
pengendali proporsional plus integral tanpa gangguan luar
Dari grafik diatas, dapat terlihat bahwa pengendali proporsional plus integral
mampu menjaga keseimbangan skuter dengan leibih baik lagi. Osilasi yang terjadi
pada skuter pada keadan tunak banyak berkisar pada sudut derajat hingga -1
derajat, hanya terjadi beberapa kali keadaan dimana skuter melewati sudut 1
derajat ataupun -1 derajat
Setelah itu, pengujian dilakukan dengan memberikan gangguan pada skuter
berupa gaya dorong yang menyebabkan kemiringan sebesar 4.5 derajat pada
skuter. Hasil pengamatannya adalah sebagai berikut.
74
Gambar 58 Grafik sudut skuter terhadap waktu dan PWM terhadap waktu dengan
pengendali proporsional plus integral dengan adanya gangguan luar
Dari grafik di atas, dapat dilihat dengan pemberian gangguan kemiringan sebesar
4,5 derajat, skuter mampu mengembalikan skuter ke keadaan seimbangnya seperti
pada kedaan tidak adanya gangguan. Hal ini sesuai dengan fungsi pengendali
integral yang mampu menghilangkan kesalahan pada keadaan tunak. Osilasi
skuter antara 2 derajat hingga -2 derajat ini dikarenakan pada keadaan fisiknya,
skuter tetap tidak akan seimbang walaupun sudah berada di titik 0 derajat,
sehingga memang mustahil untuk membuat skuter beridam tanpa osilasi pada
75
sudut 0 derajat. Hal lainnya adalah adanya celah pada sambungan gearbox pada
motor, sehingga putaran motor tidaklah terlalu halus.
Menggunakan Konstanta Proporsional Sebesar 1900, Konstanta Integral Sebesar
200 dan Konstanta Derivatif 100
Dengan menggunakan pengendali dengan konstanta Proporsional sebesar 1900,
konstanta integral sebesar 200, dan konstanta derivatif sebesar 100, dilakukan
pengjuan tanpa adanya gangguan dari luar, didapat hubungan sudut skuter
terhadap waktu dan pwm terhadap waktu sebagai berikut.
Gambar 59 Grafik sudut skuter terhadap waktu dan PWM terhadap waktu dengan
pengendali proporsional plus integral plus derivatif tanpa gangguan luar
76
Dari grafik diatas, dapat terlihat bahwa pengendali proporsional plus integral dan
derivatif mampu menjaga keseimbangan skuter dengan leibih baik lagi. Osilasi
yang terjadi pada skuter pada keadan tunak secara umum hanya berkisar 1 derajat
hingga -1. Hal ini disebabkan oleh adanya pengendali derivatif yang
memperhitungkan turunan dari error yang terjadi atau kecenderungan error yang
akan terjadi. Ketika error sudut sekarang lebih kecil dari error sudut sebelumnya,
maka kecenderungan error adalah mengecil dan pengendali derivatif akan
mengurangi aksi kendali proporsional, dan begitupula sebaliknya, ketika error
sudut cenderung membesar dan akan menambah aksi kendali proporsional.
Dengan demikian, osilasi akan lebih teredam dan skuter menjadi lebih stabil.
Setelah itu, pengujian dilakukan dengan memberikan gangguan pada skuter
berupa gaya dorongyang mengakibatkan kemiringan sebesar 4.5 derajat pada
skuter. Hasilnya adalah sebagai berikut.
77
Gambar 60 Grafik sudut skuter terhadap waktu dan PWM terhadap waktu dengan pengendali proporsional plus integral plus derivatif dengan adanya gangguan luar
Dari grafik di atas, dapat dilihat dengan pemberian gangguan kemiringan sebesar
4,5 derajat, skuter mampu mengembalikan skuter ke keadaan seimbangnya seperti
pada kedaan tidak adanya gangguan. Skuter mampu kembali ke keadaan seimbang
dengan waktu sekitar 2 detik saja. Skuter dapat berdiri seimbang dan berosilasi
pada sudut -1 derajat hingga 1 derajat. Hasil ini lebih baik dari pengendali yang
menggunakan konstanta proporsional saja maupun proporsional dan integral.
Hasil penalaan menunjukkan bahwa pengendali PID mampu menjaga
keseimbangan skuter.