AVR merupakan bagian dari keluarga mikrokontroler CMOS 8-bit buatan Atmel. AVR mempunyai 32 register general-purpose, timer/counter fleksibel dengan mode compare, interrupt internal dan eksternal, serial UART, programmable Watchdog Timer, dan mode power saving. Beberapa dari mikrokontroller Atmel AVR mempunyai ADC internal dan PWM internal. AVR juga mempunyai In-Sistem
PENDAHULUAN Latar Belakang
Perkembangan teknologi di bidang robotika saat ini menjadi perhatian yang sangat serius, terutama pada peran robot. Robot mampu menggantikan pekerjaan manusia terutama pada lingkungan yang sangat berbahaya seperti: penjelajahan ruang angkasa, penjinak bom, dan lain-lain. Salah satu jenis robot yang banyak digunakan adalah robot penghindar halangan yang mampu bergerak secara otonom, yang dirancang khusus untuk mengidentifikasi rintangan dan menentukan gerakan robot.
Rintangan dengan beberapa buah objek tertentu, tidak cukup ditangani dengan aturan biasa seperti aturan nilai kebenaran. Nilai kebenaran hanya mendeteksi ada atau tidak adanya objek, tidak mendefinisikan dekat atau jauhnya posisi objek yang dideteksi. Sebagai contoh, robot penghindar halangan yang menggunakan aturan nilai kebenaran, akan sulit mengakselerasikan gerakan dengan posisi rintangan di sekitarnya, karena gerakan dibatasi dengan gerak maju, mundur atau berhenti. Dengan demikian, diperlukan aturan yang dapat meningkatkan kinerja robot. Salah satu solusi
yang dapat digunakan adalah dengan
menggunakan logika fuzzy yang bersifat samar terhadap objek yang dapat digunakan untuk mendefinisikan nilai jarak seperti: dekat, sedang dan jauh.
Logika fuzzy merupakan bagian sekaligus perluasan dari logika Boolean. Perbedaannya terletak pada derajat kebenaran, Boolean 0 atau 1 sedangkan logika fuzzy 0 sampai dengan 1. Logika fuzzy sering menggunakan informasi linguistik dan verbal (Marimin 2002). Dengan
menggunakan konsep logika fuzzy,
dimungkinkan pembuatan sistem kendali yang
cerdas. Hal ini dikarenakan perumusan
matematika yang cukup sederhana pada pendekatan sistem pengendalian fuzzy, sehingga rumusan matematis yang kompleks tidak perlu dilibatkan dan tidak terlalu dititikberatkan pada ketepatan angka karena logika fuzzy bersifat nonlinear. Selain itu, logika fuzzy dapat dengan mudah disusun dan dikembangkan dengan berdasarkan representasi dari pengetahuan manusia.
Penelitian tentang sistem kendali fuzzy telah dilakukan sebelumnya oleh Rizki Baihaqi (2010) dengan memodelkan sistem driver
assistent pada gerak mobil. Baihaqi
memanfaatkan logika fuzzy pada gerak
mobilnya untuk tetap pada jalur sesuai dengan jalan yang akan ditempuh. Namun, nilai masukan masih terbatas pada nilai 0 atau 1. Pada penelitian ini diimplementasikan logika fuzzy pada pengendali Robot Penghindar Halangan.
Tujuan
Tujuan penelitian ini adalah untuk
merancang dan mengimplementasikan
pengendali sistem berbasiskan logika fuzzy dengan nilai parameter yang dapat diubah-ubah pada robot penghindar halangan berdasarkan human expert.
Ruang Lingkup
Ruang lingkup penelitian ini difokuskan pada :
1. Masukan diterima melalui tiga buah sensor ultrasonik sebagai pengukur jarak.
2. Jarak sebuah objek atau halangan yang dapat dideteksi dalam rentang 2 cm sampai dengan 18 cm.
3. Keluaran kecepatan dan sudut belok robot diproses di dalam sistem mikrokontroler ATMega16.
4. Pengujian dilakukan pada lingkungan sebenarnya dengan menggunakan rintangan pada samping kiri, depan, dan samping kanan pada jarak tertentu.
Manfaat Penelitian
Logika fuzzy yang dirancang dan
diimplementasikan pada Mikrokontroler
ATMega16 diharapkan dapat memberikan informasi yang dapat digunakan oleh robot penghindar untuk melewati rintangan yang ada di sekitarnya, sehingga robot dapat menghindari halangan dengan lebih akurat.
TINJAUAN PUSTAKA Mikrokontroler AVR ATMega16
AVR merupakan bagian dari keluarga mikrokontroler CMOS 8-bit buatan Atmel. AVR mempunyai 32 register general-purpose, timer/counter fleksibel dengan mode compare, interrupt internal dan eksternal, serial UART, programmable Watchdog Timer, dan mode power saving. Beberapa dari mikrokontroller Atmel AVR mempunyai ADC internal dan PWM internal. AVR juga mempunyai In-Sistem
mengizinkan memori program untuk diprogram berulang-ulang dalam sistem menggunakan
hubungan serial SPI (Wiyono 2007).
Mikrokontroller AVR yang digunakan pada
penelitian ini adalah ATMega16.
Mikrokontroler terdiri atas pin input dan output yang berbeda. Adapun konfigurasinya dapat dilihat pada Gambar 1.
Gambar 1 Konfigurasi pin ATMega16 [Atmel 2004]
Fitur dari Gambar 1 antara lain:
1. Serial In-System Programming (Serial ISP) 2. Reprogrramming capability
3. 32 x 8 General Purpose Working Register 4. Two 8 bit Timer/Counter with Compare
Modes
5. One bit Timer/Counter with Compare Modes compare dan capture
6. Real Time Counter with Separate Occillator 7. Four Pulse Widht Modulation (PWM) Cha 8. 8 channel, 10 bit Analog Digital Converter
(ADC)
9. Master/Slave interface
10.Interface serial Two-Wire (TWI) 11.On-chip Analog Comparator
12.Programmable Watchdog Timer Separate On-chip Occillator
13.External and internal Interrupt Sources 14.External and internal Clock
15.Port USART
16.16 KB Flash, 512 Byte EEPEROM, and 1 KB SRAM internal.
Sensor Ultrasonik
Sensor ultrasonik merupakan sensor yang
bekerja berdasarkan prinsip pantulan
gelombang suara, di mana sensor menghasilkan
gelombang suara yang kemudian
menangkapnya kembali dengan perbedaan waktu sebagai dasar pengindraannya.
Ping))) Ultrasonic Range Finder, adalah modul pengukur jarak dengan ultrasonik buatan
Paralax Inc. yang didesain khusus untuk teknologi robotika. Dengan ukurannya yang cukup kecil (2,1cm x 4,5cm), sensor dapat mengukur jarak antara 3 cm sampai 300 cm. Keluaran dari Ping))) berupa pulsa yang lebarnya merepresentasikan jarak. Lebar pulsanya bervariasi dari 115 uS sampai 18500 uS. Ping))) mendeteksi objek dengan cara mengirimkan suara ultrasonik dan kemudian “mendengarkan” pantulan suara tersebut.
Ping))) hanya akan mengirimkan suara
ultrasonik ketika ada pulsa trigger dari mikrokontroler (Pulsa high selama 5uS). Suara ultrasonik dengan frekuensi sebesar 40KHz akan dipancarkan selama 200uS. Suara ini akan
merambat di udara dengan kecepatan
344.424m/detik (atau 1cm setiap 29.034uS), mengenai objek untuk kemudian terpantul
kembali ke Ping))). Selama menunggu
pantulan, Ping))) akan menghasilkan sebuah pulsa. Pulsa ini akan berhenti (low) ketika suara pantulan terdeteksi oleh Ping))). Oleh karena
itulah lebar pulsa tersebut dapat
merepresentasikan jarak antara Ping))) dengan objek. Selanjutnya mikrokontroler cukup
mengukur lebar pulsa tersebut dan
mengkonversinya dalam bentuk jarak. (Parallax 2009). Ilustrasi cara kerja sensor PING dapat
dilihat pada Gambar 2 dan untuk
perhitungannya dapat dilihat pada Persamaan 1. Perhitungan untuk mendapatkan jarak adalah sebagai berikut:
L = ½ . TOF . v (1)
keterangan:
L = jarak ke objek (m)
TOF = lebar pulsa waktu pengukuran yang diperoleh (s)
v = cepat rambat suara di udara (m/s)
Gambar 2 Ilustrasi cara kerja sensor PING Bentuk fisik dari sensor PING dapat dilihat pada Gambar 3.
Gambar 3 Ping))) Paralax Ultrasonic Range Finder
Robot
Istilah robot berasal dari Rusia, yaitu dari kata robota yang berarti tenaga kerja/buruh. Kemudian di awal abad ke 20 ilmuwan
Cekoslowakia, Karel Capek (1890-1938)
memperkenalkan istilah robot dengan membuat seperangkat mesin yang diberi nama Rosum’s Universal Robots (RUR). Menurut National Bureau of Standard, robot adalah bentuk aplikasi yang sebagian besar pada bidang
industri bertujuan untuk meningkatkan
produktivitas produksi. Robot dapat digunakan secara rutin terus menerus tanpa merasakan kebosanan atau digunakan pada lingkungan yang sangat berbahaya. Sebagai contoh dalam industri nuklir, robot harus digunakan karena radiasi nuklir sangat berbahaya bagi manusia. Robot digunakan pada industri perakitan, pengelasan, peleburan, pengecatan dan telah
digunakan pada bidang militer sebagai
peralatan penjinak bom, dan pada bidang kedokteran sebagai peralatan operasi otomatis. Pada bidang sosial robot banyak membantu
sebagai pengganti bagian tubuh yang
mengalami kecacatan (Shircliff 2002).
Menurut David R. Shircliff (2002), sistem robot memiliki tiga komponen dasar, yaitu : manipulator, kontroler, dan power (daya). Efektor sering ditemukan pada bebrapa sistem robot, tetapi sifatnya tidak harus ada.
a. Manipulator
Manipuator digerakkan oleh aktuator atau disebut sistem drive. Aktuator atau sistem drive menyebabkan gerakan yang bervariasi dari
manipulator. Aktuator bisa menggunakan
elektrik, hidrolik ataupun pneumatik (Shircliff
2002). Aktuator pada robot penghindar
halangan berupa roda yang digerakan oleh sebuah motor DC. Namun, pada penelitian
hanya menggunakan display LCD sebagai
aktuator elektrik. b. Pengendali
Pengendali merupakan jantung dari sistem robot sehingga keberadaannya sangat penting.
Pengendali menyimpan informasi yang
berkaitan dengan data data robot, dalam hal ini data gerakan robot yang telah diprogram sebelumnya (Shircliff 2002). Pada penelitian ini digunakan mikrokontroler sebagai pengendali yang telah diprogram dengan rancangan logika fuzzy.
c. Power supply (daya)
Power supply adalah sebuah unit yang menyediakan tenaga pada pengendali dan manipulator sehingga dapat bekerja. Power supply dalam suatu sistem robot dibagi menjadi dua bagian, yaitu bagian untuk kontroler dan bagian untuk manipulator. Bagian kontroler
menggunakan elektrik sedangkan bagian
manipulator bisa menggunakan elektrik,
pneumatik, hidrolik ataupun ketiganya
(Shircliff 2002).
Penghasil detak (Clock Generator)
[Atmel 2004] Penghasil detak atau Clock Generator tergantung pada mode data transfer, yaitu terdapat empat mode penghasil detak, yaitu:
1. Normal asynchronous 2. Double Speed asynchronous 3. Master synchronous 4. Slave synchronous
Pada Gambar 4 ditunjukkan diagram blok logika penghasil detak yang terkait dengan beberapa register seperti USART Baud Rate
Register (UBRR) (16-bit: UBRRL dan
UBRRH) dan lain-lain.
Gambar 4 Diagram blok logika penghasil detak untuk komunikasi serial Deskripsi sinyal pada Gambar 4 adalah sebagai berikut:
txclk : Transmitter clock (internal signal) rxclk : Receiver base clock (internal signal) xckl : Input from xck pin (slave operation) xcko : Clock output to xck (master operation) fosc : XTAL pin frequency
Umumnya Clock Generator yang digunakan digunakan adalah Asynchronous Internal Clock Generator. Register penentuan baudrate atau kecepatan komunikasi serial atau UBRR digunakan dimana nilai yang diberikan adalah untuk down-counter. Setiap kali nilai
down-counter mendekati nol, maka sebuah clock dibangkitkan.
Nilai UBRR yang sesuai dengan baudrate yang diinginkan mengacu pada osilator atau kristal yang digunakan oleh mikrokontroler. Perhitungan Asynchronous Internal Clock Generator adalah sebagai berikut:
BAUD = fclk/(16(UBRR+1)) (2)
keterangan: BAUD : Baudrate fclk : frekuensi clock
UBRR : USART Baud Rate Register
Untuk waktu eksekusi setiap instruksi pada program pada mikrokontroler dihitung dengan fungsi sebagai berikut:
= / (3)
keterangan:
T : waktu proses fuzzy pada embedded system mikrokontroler (ms)
fclk : frekuensi osilator (clock)
Logika Fuzzy
Logika fuzzy merupakan bagian dari logika boolean, yang digunakan untuk menangani konsep derajat kebenaran, yaitu nilai kebenaran
benar dan salah. Logika fuzzy sering
menggunakan informasi linguistik dan verbal. Dalam logika fuzzy terdapat beberapa proses, yaitu penentuan gugus fuzzy, penerapan aturan if-then, serta proses inferensi fuzzy (Marimin 2002).
Himpunan Fuzzy
Himpunan fuzzy didasarkan pada gagasan
untuk memperluas jangkauan fungsi
karakteristik sedemikian hingga fungsi tersebut akan mencakup bilangan real pada interval [0,1]. Nilai keanggotaannya menunjukkan bahwa suatu item dalam semesta pembicaraan tidak hanya berada pada 0 atau 1 (Kusumadewi 2002).
Semesta Pembicaraan
Suatu model variabel fuzzy seringkali dideskripsikan dalam syarat-syarat ruang fuzzy-nya. Ruang ini biasanya tersusun atas beberapa himpunan fuzzy, himpunan-himpunan fuzzy mendeskripsikan suatu arti tertentu dari
variabel-variabel yang diizinkan dalam
permasalahan (Kusumadewi 2002).
Semesta pembicaraan adalah keseluruhan nilai yang diperbolehkan untuk dioperasikan
dalam suatu variabel fuzzy. Semesta
pembicaraan merupakan himpunan bilangan real yang senantiasa naik secara monoton dari kiri ke kanan atau bilangan positif maupun negatif. Contoh :
- Semesta pembicaraan untuk variabel umur : [0 +~]
- Semesta pembicaraan unutk variabel
temperatur : [0 40] [2].
Pada semesta pembicaraan terdapat fungsi
keanggotaan himpunan fuzzy. Fungsi
keanggotaan bervariasi, yaitu gaussian segitiga, dan trapesium.
Gaussian terdiri atas dua buah parameter, yaitu dan c. Kurva gaussian berbentuk sigmoid yang berhubungan dengan kenaikan dan penurunan permukaan secara tak linear, sehingga perubahnnya sangat halus dengan perumusan matematika yang cukup sulit.
Kurva segitiga terdiri atas tiga buah parameter yaitu a, b, dan c, sedangkan trapesium terdiri dari empat buah parameter yaitu a, b, c, dan d. Keduanya merupakan fungsi keanggotaan yang paling sederhana, karena hanya tersusun dari beberapa garis lurus yang berhubungan dengan kenaikan dan penurunan
permukaan secara linear sehingga
perubahannya kasar dengan perumusan
matematika yang sederhana.
Pada penelitian ini digunakan dua fungsi keanggotaan, yaitu bentuk kurva segitiga dan trapesium karena perumusan matematika yang sederhana. Bentuk dari kurva tersebut dapat dilihat pada Gambar 5.
segitiga trapesium
Gambar 5 Bentuk fungsi keanggotaan fuzzy Fungsi keanggotaan untuk representasi kurva segitiga adalah sebagai berikut:
Fungsi keanggotaan untuk representasi kurva trapesium adalah sebagai berikut:
Sistem Inferensi Fuzzy
Sistem inferensi fuzzy (FIS) merupakan penduga numerik yang terstruktur dan dinamik. Sistem ini mempunyai kemampuan untuk
mengembangkan sistem intelijen dalam
lingkungan yang tidak pasti dan tidak tepat. Sistem ini menduga suatu fungsi dengan logika fuzzy (Marimin 2002).
Sistem inferensi fuzzy telah berhasil diaplikasikan dalam berbagai bidang, seperti kontrol otomatis, klasifikasi data, analisis keputusan, dan sistem pakar. Karena itu, sistem inferensi fuzzy biasa dikenal dengan nama fuzzy-rule-based system, fuzzy expert system, fuzzy modelling, fuzzy assosiative memory, dan fuzzy logic controllers ([MathWorks] 2008).
Inferensi merupakan bagian penentuan aturan dari sistem logika fuzzy. Sejumlah aturan dapat dibuat untuk pengendali logika fuzzy yang menghubungkan aksi keluaran pengendali terhadap kondisi masukannya. Sejumlah aturan dapat dibuat untuk pengendali logika samar.
Contoh berikut ini, merupakan perlakuan pada pengendali sistem yang akan dibahas:
If (SensorKiri is dekat) and (SensorTengah is dekat) and (SensorKanan is dekat) then (kecepatan is berhenti) and (sudut_belok is lurus).
Model Fuzzy Mamdani
Model fuzzy Mamdani telah diperkenalkan oleh Ebrahim Mamdani pada tahun 1975. Metode ini memiliki beberapa kelebihan yang berdasarkan penalaran manusia, yaitu: intuitif, diterima oleh banyak pihak, dan masukan berasal dari manusia (Kusumadewi 2002).
Proses perhitungan fuzzy Mamdani dibagi ke dalam empat tahap (Negnevitsky 2002) : 1. Fuzzifikasi variabel masukan. Pada tahap ini
masukan yang bersifat crisp dihitung derajat
keanggotaanya terhadap setiap himpunan fuzzy input.
2. Evaluasi aturan-aturan (rules)
3. Agregasi pada masing-masing aturan untuk menghasilkan suatu kesimpulan.
4. Defuzzifikasi himpunan fuzzy output
menjadi nilai tunggal (crisp).
Fuzzifikasi
Fuzzifikasi adalah proses pemetaan dari input menjadi sekumpulan data samar dalam berbagai semesta pembicaraan output (Sri Kusumadewi 2002).
Nilai input merupakan besaran analog yang diubah menjadi fuzzy input. Besaran analog atau crisp input dipetakan pada domain membership function yang sesuai dengan nilainya. Crisp input yang masuk ke domain label (Linguistic Value) akan menjadi fuzzy input.
Defuzzifikasi
Defuzzifikasi merupakan suatu proses pengubahan fuzzy output ke output yang bernilai tunggal (crisp). Terdapat beberapa metode defuzzifikasi, namun yang sering
digunakan adalah metode centroid dan
maksimum. Perhitungan untuk mendapatkan nilai titik pusat adalah sebagai berikut (Marimin 2002):
keterangan:
z = domain himpunan fuzzy = derajat keanggotaan
Metode Kuadrat Terkecil
Metode kuadrat terkecil adalah salah satu metode pendekatan yang paling penting dalam dunia keteknikan untuk regresi ataupun pembentukan persamaan dari titik-titik data diskretnya (dalam pemodelan), dan analisis sesatan pengukuran (dalam validasi model). Persamaan yang dihasilkan berupa persamaan pada garis lurus yang terdiri atas kelandaian (slove) kurva garis lurus dan perpotongan (intercept) kurva dengan ordinat. Perhitungan untuk mendapatkan nilai kelandaian (slove)
atau gradien adalah sebagai berikut
Tidak Ya Perancangan Implementasi Pengujian Percobaan
Analisis Hasil Percobaan Perancangan Percobaan Berhasil ? Mulai Analisis Permasalahan Selesai keterangan:
m : gradien persamaan garis lurus n : banyaknya data
x : data x (pengukuran) y : data y (valid)
Galat Relatif Hampiran dan Akurasi
Galat suatu hampiran disebabkan oleh kekurangtelitian model matematika dan oleh galat bawaan dari data masukan bersifat warisan/bawaan (inherent). Galat ini mungkin tetap ada sekalipun penyelesaiannya diperoleh dengan menggunakan metode eksak (Sahid 2005).
Galat berasosiasi dengan seberapa dekat solusi hampiran terhadap solusi sejatinya. Semakin kecil nilai galatnya, semakin kecil solusi numerik yang didapatkan. Perhitungan untuk mendapatkan galat adalah sebagai berikut (Munir 2003):
= 100% (8)
keterangan:
: galat relatif mutlak a : nilai sejati a’ : nilai hampiran
Akurasi mengacu pada seberapa dekat angka pendekatan/pengukuran terhadap harga sebenarnya. Akurasi merupakan kebalikan dari error. Perhitungan untuk mendapatkan akurasi adalah sebagai berikut ([MathWorks]):
= 100%− (9)
keterangan:
: galat relatif mutlak