• Tidak ada hasil yang ditemukan

BAB V: KESIMPULAN DAN SARAN

4.7 Hasil Implementasi Program

Dari hasil implementasi, uraian program adalah sebagai berikut: a. Inisialisasi

Blok ini berisi tentang pendefinisian fungsi, variabel, dan nilai awal yang diperlukan dalam proses, dengan uraian program sebagai berikut:

/*inisialisasi fungsi dan variabel*/ #define F_CPU 8000000UL #define BAUD 9600 void delay_lama(void); void USART_Init(void); void pwm_init(void); void start_pwm(void); void USART_Transmit8(char); /*include header*/ #include <avr/io.h> #include <util/fuzzy7_07.h> #include <avr/interrupt.h> #include <util/setbaud.h> #include<util/delay.h> #include <avr/pgmspace.h> void USART_Init(void); void USART_Transmit8( char ); long int SRF(void);

void kirim1(int); void pwm_init(void); void start_pwm(void); int sp1=400,sp2,input,k,sdt,T; int n;

long int h,t,sensor1,s,sensor2; char b,stop;

volatile int tt;

volatile char a,SP_pilih,sp; /*inisialisasi PORT*/

DDRD = 0b10110010; // definisi PWM & TX RX PORTD = 0b01001101;

PORTB = 0x00; // PORTB sebagai input DDRA = 0xff;

/*inisialisasi Variabel*/ long int e1,ce1,e1t,ab=45000,oc; long out1,out1t,out_1B; long out1t_temp;

b. Set Point

Blok ini berisi bagaimana program ini dapat mengetahui nilai set point. Uraian programnya dapat dilihat sebagai berikut:

ISR (USART_RXC_vect) // interupsi RX untuk menerimaset point

{

a=UDR; switch (a) {

case 'D': // data sp yang dikirim adalah ’D’ sp='D';

case 'C': // data sp yang dikirim adalah ’C’ sp='C';

break;

case 'B': // data sp yang dikirim adalah ’B’ sp='B';

break;

case 'E': // data sp yang dikirim adalah ’E’ sp='E';

break;

case 'F': // data sp yang dikirim adalah ’F’ sp='F';

break;

case 'G': // data sp yang dikirim adalah ’G’ sp='G';

break;

case 'H': // data sp yang dikirim adalah ’H’ sp='H';

break;

case 'I': // data sp yang dikirim adalah ’I’ sp='I';

break;

case 'J': // data sp yang dikirim adalah ’J’ sp='J';

break; } }

switch (sp) // untuk memilihset point

{

case 'D': // Jika data ’D’, maka sp = 90 cm. sp1= 900;

break;

case 'C': // Jika data ’C’, maka sp = 60 cm. sp1= 600;

break;

case 'B': // Jika data ’B’, maka sp = 40 cm. sp1= 400;

break;

case 'E': // Jika data ’E’, maka sp = 10 cm. sp1= 100;

break;

case 'F': // Jika data ’F’, maka sp = 20 cm. sp1= 200;

break;

case 'G': // Jika data ’G’, maka sp = 30 cm. sp1= 300;

break;

sp1= 500; break;

case 'I': // Jika data ’I’, maka sp = 70 cm. sp1= 700;

break;

case 'J': // Jika data ’J’, maka sp = 80 cm. sp1= 800;

break; }

Fungsi “ISR (USART_RXC_vect” adalah untuk mengaktifkan interupsi RX agar jika terdapat perubahan nilaiset point(sp), program dapat langsung memproses interupsi tersebut. Sedangkan fungsi “switch (sp)” diperlukan program untuk mengetahui nilai sp yang diinginkan.

c. Baca Sensor

Blok ini berisi tentang pembacaan sensor, uraian programnya adalah sebagai berikut:

long int SRF(void) // fungsi sensor SRF {

h=0;

DDRB = 0xff; // PORTB sebagai output

PORTB |= (1<<PORTB0); // kirimkan trigger ke input SRF04 input _delay_us(2); // tunda selama 10us

PORTB &= ~(1<<PORTB0); // hilangkan trigger

DDRB = 0x00; // jadikan PORTB sebagai input while(bit_is_clear(PINB,PINB0)) // tunggu hingga pulsa output =1

{ ; } TCCR2 = 0x01; while(bit_is_set (PINB,PINB0)) { if(bit_is_set(TIFR,TOV2)) { TIFR=0b01000000; h++;

} } TCCR2 = 0x00; t = (h * 256) + TCNT2; s = 167 * t / 8000; // PORTD = s; _delay_ms(20); return (s); }

Dari uraian progam di atas, PORT B digunakan sebagai output trigger

sebesar 2us dan digunakan sebagai penerimainputdari keluaran sensor.

d. Perhitungan Fuzzy dan Keluaran PWM

Blok ini berisi tentang perhitungan selisih antara sp dengan keluaran sensor, perhitungan fuzzy yang keluarannya berupa pwm. Uraian programnya dapat dilihat sebagai berikut:

/* hitung error */

e1 = (sp1-sensor1); // perhitungan selisih antara sp dengan sensor ce1 = ((e1*10)-e1t);

e1t = e1;

/* hitung keluaran fuzzy dari error dan perubahan error*/ out1 = fuzzy7(e1,(ce1/10));

/* jumlahkan keluaran fuzzy sebelumnya dengan sekarang */ out_1B = (out1*10)+out1t;

/* simpan data out1_B */ out1t = out_1B; /* proteksi overflow */ if (out1t>=655350) { out1t= 655350; } else if (out1t<=-12800) { out1t= -12800; } out1t_temp = out1t/10; /* proteksi nilai minus*/

if (out1t_temp<=0) {

out1t_temp = 0; } /* keluarkan nilai PWM */ oc = out1t_temp + ab; if (oc >= 65535) { oc = 65535; } OCR1A = oc; OCR1B = out1t_temp;

Dari uraian program di atas, program akan menghitung selisih sp dengan sensor. Selanjutnya program akan menjalankan fungsifuzzy(fuzzy7) yang di dalamnya terdapat fungsi fusifikasi, inferensi, komposisi, dan defusifikasi. 65535 adalah nilai gabungan dari OCR1AL dan OCR1AH yang masing-masing bernilai 255. Kemudian program akan memproteksi agar nilai pwm yang dihasilkan tidak lebih dari 255.

e. Pengiriman Data

Blok ini berisi tentang cara pengiriman data. Data yang dikirim akan menggunakan komunikasi serial RS232.

kirim1(sensor1/10); // kirim data sensor

void kirim1(int _data) // fungsi pengiriman data sensor { int ratusan,puluhan,satuan,temp; ratusan = _data/100; temp = _data-(ratusan*100); puluhan = temp/10; temp = temp-(puluhan*10); satuan = temp;

USART_Transmit8('*'); // mengirim tanda bintang sebagai awalan USART_Transmit8(angka[ratusan]); // mengirim data ratusan

USART_Transmit8(angka[puluhan]); // mengirim data puluhan USART_Transmit8(angka[satuan]); // mengirim data satuan

USART_Transmit8('|'); // mengirim tanda ” | ” sebagai akhiran }

Dari uraian data di atas, program akan mengirmkan data sensor dalam bentuk karakter. Sebagai contoh, jika data sensor yang akan dikirim adalah 60, maka karakter yang akan dikirm adalah *060|.

75 5.1 Kesimpulan

Dari hasil perancangan dan pengamatan pada sistem model pengontrol gerak vertikal pada helikopter dengan pengendali logika fuzzy dapat diambil kesimpulan:

1 Kontroler fuzzy telah bekerja dengan cukup baik dan cukup stabil dalam mengendalikan ketinggian terbang helikopter dengan steady state errormaksimal sebesar 5 %.

2 Sistem yang dirancang telah berhasil mengatasi gangguan. Semakin besar ketinggian yang diinginkan maka waktu yang diperlukan untuk kembali stabil semakin lama.

3 Dari hasil pengujian, semakin tinggi nilai ketinggian yang diinginkan, waktu yang dibutuhkan sistem untuk mencapai tujuan semakin lama. 4 Ketinggian maksimal yang telah diuji adalah 90 cm.

5.2 Saran

Dari pengalaman selama mengerjakan tugas akhir penulis ingin menyarankan beberapa hal sebagai berikut :

1 Dapat membuat sistem model helikopter dapat terbang tanpa tiang penyeimbang sebagai penyangga.

2 Dapat dicoba untuk sistem kontrol yang berbeda, seperti kontroler PID.

3 Dapat memberikan nilai ketinggian yang lebih banyak kepada pemakai.

2. www.parallax.com, 18 Januari 2009

3. Wardhana Lingga, 2006, Belajar Sendiri Mikrokontroler AVR Seri ATMega8535, Simulasi, Hardware, dan Aplikasi, ANDI, Yogyakarta.

4. www.atmel.com/literature, 15 Maret 2008

5. Boylestad, Robert and Nashelsky, louis, 1996 , Electronic Devices and Circiut Theory, Prentice Hall, Englewood Cliffs, New Jersey, Sixth Edition

6. Susilo Frans,SJ, 2006, Himpunan dan Logika Kabur Serta Aplikasinya, Graha Ilmu, Yogyakarta, Edisi Kedua

7. www.datasheetcatalog.com, 17 Mei 2008

8. Zebua, Albert T. dan Wahidin Wahab

http://www.elektroindonesia.com/elektro/no4a.html 9. www.seikoinstrumentsGmbH.com, 18 Januari 2009

LAMPIRAN

Dokumen terkait