Perancangan Sistem Kendali Dan Algoritma Mobile Robot Untuk Studi Kasus Maze Solving

(1)

iv

The development of mobile robot technology has been growing rapidly, especially in artificial intelligent robot which is used to accomplish a maze. In robotics area there is two kinds of maze that commonly used, there are wall maze and lines maze. Commonly wall maze known as labyrinth terms that means a way web which is built in tunnel with wall without a roof. In line maze a way web that shaped made which is using line. If the lines is white colored so that the background is black colored or reversed. The problem appears in line maze that is the way for getting a shorten way from the line maze.

In this final paper, the problem in line maze has been finished with using depth first search algorithm which is available in artificial intelligent field. The searching process of depth-first search it is done to one level node. The searching begins from root node to higher level. This process is repeated continue until find the solution.

The robot moving arranged from dual mode, there are search mode and return mode. In search mode, the robot is doing a journey from the start to finish position with the rule that the robot will use mainly turned left if it is facing a crossing way. In return mode, the robot have moved from the start to finish with his shorten way. The shorten way is reached from the unique codes that have been converted. Refer to conversion trial program that have been done in whole system testing, is reached 70% well done. The failure caused of the battery condition that is getting weak and the robot control systems are not done well.


(2)

iii

ABSTRAK

Perkembangan teknologi mobile robot telah berkembang pesat, terutama pada bidang kecerdasan buatan robot yang digunakan untuk menyelesaikan suatu maze. Pada bidang robotika ada dua jenismazeyang umum digunakan, yaituwall maze dan line maze. Wall maze pada umumnya dikenal dengan istilah labirin, yakni suatu jaringan jalan yang terbentuk atas lorong-lorong dengan dinding tanpa atap. Pada line maze, jaringan jalan yang terbentuk dibuat dengan menggunakan garis. Jika garis berwarna putih maka background berwarna hitam atau sebaliknya. Permasalahan yang timbul pada line maze adalah cara untuk mendapatkan jalur terpendek dariline maze.

Pada tugas akhir ini, permasalahan pada line maze diselesaikan dengan memanfaatkan algoritma depth first search yang terdapat pada ilmu kecerdasan buatan. Proses pencarian depth-First Search dilakukan ke node - node yang selevel. Pencarian dimulai dari node akar ke level yang lebih tinggi. Proses ini diulangi terus hingga ditemukannya solusi.

Pergerakan robot terdiri dari dua mode, yaitu mode search dan mode return. Pada mode search, robot melakukan perjalanan dari posisi start menuju finishdengan aturan bahwa robot akan mengutamakan belok kiri bila menjumpai persimpangan. Kode-kode unik dibangkitkan setiap robot berjumpa dengan persimpangan. Pada mode return, robot sudah berjalan dari start menuju finish dengan jalur tependeknya. Jalur terpendek diperoleh dari kode-kode unik yang telah dikonversi. Berdasarkan percobaan program konversi yang telah dilakukan, maka dibutuhkan formulasi yang handal agar diperoleh hasil yang diinginkan. Pada pengujian keseluruhan sistem, diperoleh tingkat keberhasilan 70 %. Kesalahan ini disebabkan kondisi baterai yang semakin melemah dan sistem kendali robot yang kurang baik.


(3)

1

PENDAHULUAN

1.1. Latar Belakang

Perkembangan teknologi sekarang ini telah menciptakan berbagai kemajuan dibidang teknologi, khususnya teknologi dibidang robotika. Perkembangan elektronika juga memberikan kemajuan dalam mengontrol robot itu sendiri. Sekarang ini, ilmu pengetahuan dan teknologi sangat diperlukan untuk membantu aktivitas manusia yang semakin berkembang. Perkembangan ilmu dan teknologi ini didasari oleh pola pikir manusia yang semakin cerdas serta keinginannya untuk mencari segala sesuatu yang lebih mudah, praktis dan ekonomis. Salah satu teknologi yang banyak digunakan pada sekarang ini adalah teknologi mikrokontoler. Robot merupakan salah satu perkembangan dalam bidang teknologi mikrokontroler.

Jenis robot yang banyak ditemui pada saat ini adalah mobile robot yang dapat mengikuti garis (line follower) yang berjalan dari titik start ke titik tujuan atau target dengan beragam macam bentuk track, tetapi pada kebanyakannya robot hanya dapat mengikuti garis saja tanpa bisa menghafal trackdan melakukan pemetaan terhadap jalur yang dilewati serta sistem kendali yang digunakan kurang kokoh.

Dengan adanya mobile robot yang mempunyai sistem kendali yang kokoh, dapat menghafal track, dan dapat melakukan pemetaan terhadap track yang dilewati tentu dapat menciptakan suatu mobilerobot yang dapat berjalan di track yang rumit secara efektif dan efisien dengan memanfaatkan ilmu di bidang intelegensi buatan dan mikrokontroler. Berdasarkan permasalahan tersebut, penulis mempunyai gagasan untuk membuat suatu perancangan sistem kendali dan algoritmamobilerobot untuk studi kasusmaze Solving.

Mazeadalah suatu jaringan jalan yang rumit. Pada bidang robotika ada dua jenismazeyang umum digunakan, yaituwall mazedanline maze.Wall mazepada umumnya dikenal dengan istilah labirin, yakni suatu jaringan jalan yang terbentuk atas lorong-lorong dengan dinding tanpa atap. Padaline maze, jaringan jalan yang


(4)

2

terbentuk dibuat dengan menggunakan garis. Jika garis berwarna putih maka background berwarna hitam atau sebaliknya. Jadi, Maze solving adalah pemecahan masalah untuk mendapatkan jalur terpendek dari line maze (suatu jaringan jalan yang rumit). Pada tugas akhir ini, permasalahan pada line maze diselesaikan dengan algoritma Depth First Searchyang terdapat pada bidang ilmu intelegensi buatan. Algoritma ini akan mencari semua kemungkinan track yang akan dilewati dengan lebih mengutamakan belok kiri pada saat berjumpa simpangan sekaligus robot akan mengkonversi track tersebut menjadi suatu jalur terpendek dan menyimpan jalur terpendek tersebut ke memori robot.

1.2. Maksud dan Tujuan

Maksud dari tugas akhir ini adalah merancang sistem kendali dan algoritma mobilerobot untuk studi kasusmaze solving.

Sedangkan tujuan perancangan sistem pada tugas akhir ini yaitu agar sebuah mobile robot dapat mencapai titik finish pada sebuah maze dan memiliki kemampuan untuk memilih jalur yang lebih efektif dan efisien.

1.3. Rumusan Masalah

Permasalahan yang akan dibahas pada tugas akhir ini adalah:

1. Bagaimana merancang sistem kendali mobile robot agar dapat menyelesaikan sebualmaze line.

2. Bagaimana merancang algoritma agar dapat melakukan pencarian jalur yang lebih efektif dan efisien untuk mencapai titikfinish.

1.4. Batasan Masalah

Pada perancangan mobile robot yang dibuat ini terdapat beberapa batasan masalah yaitu:

1. Menggunakan mikrokontroler ATmega32.

2. Program dibuat dengan menggunakan bahasa C/C++.

3. Algoritma yang digunakan untuk penelusuran dan pencariantrackyaitu Depth first Search.


(5)

4. Alat yang akan dibuat menggunakan motor DC sebagai kendali putaran roda mobil yang dikendalikan oleh mikrokontroler.

5. Bentuk robot maksimal 20 cm x 20 cm.

6. Bentuk track ± 206 cm x 86 cm dan jalurnya hanya berbentuk garis hitam.

1.5. Metode Penelitian

Metodologi penelitian yang dilakukan dalam penyelesaian tugas akhir ini meliputi:

1. Studi literatur

2. Suatu metode pengumpulan data dengan membaca atau mempelajari buku yang berhubungan dengan masalah yang menjadi topik tugas akhir.

3. Perancangan

4. Mengaplikasikan teori yang didapat dalam perancangan sistem untuk perangkat keras, perangkat lunak dan pengujian sistem.

5. Eksperimen

6. Melakukan eksperimen atau uji coba alat, komponen dan kerja robot. 7. Analisa data

8. Analisa yang dilakukan dari pengujian sistem dan mengambil sebuah simpulan dari penelitian ini.

1.6. Sistematika Penulisan

Sistematika penulisan laporan Tugas Akhir ini adalah sebagai berikut: BAB I : Pendahuluan

Bab ini berisi tentang latar belakang, maksud dan tujuan, batasan masalah, metodologi penelitian dan sistematika penulisan.

BAB II : Landasan Teori

Bab ini membahas tentang teori-teori pendukung yang digunakan dalam perencanaan dan pembuatan tugas akhir.


(6)

4

BAB III : Perancangan Sistem

Bab ini berisikan tentang perancangan alat yang dibuat untuk tugas akhir ini, meliputi garis besar sistem, perancangan perangkat keras dan perancangansoftwareyang digunakan.

BAB IV : Pengujian dan Analisa Sistem

Bab ini berisi tentang pengujian-pengujian dan analisa data pada tugas akhir ini.

BAB V : Simpulan dan Saran


(7)

5

DASAR TEORI

2.1. Sejarah Robot [12]

Robot adalah sebuah alat mekanik yang dapat melakukan tugas fisik, baik menggunakan pengawasan dan kontrol manusia, atau pun menggunakan program yang telah didefinisikan terlebih dulu (kecerdasan buatan).

Kata robot sendiri, diperkenalkan oleh seorang penulis sains-fiksi berkebangsaan Ceko (Czech), Karel Capek (9 Januari 1890-25 Desember 1938) pada tahun 1920an. Robot sendiri, menurut Karel Capek, bukanlah pengertian "robot" yang seperti kita kenal sekarang ini. Robot menurut dia adalah sesuatu yang lebih mengarah kepada "monoton", dan "pekerja". Karel Capek memperkenalkan istilah robot (robota, bahasa Ceko-Ensiklopedia Indonesia) dalam sebuah karya sandiwaranya, Rossum's Universal Robot.

Penciptaan robot yang sesunguhnya (bukan robot dalam sandiwara Karel Capek), bermula dari keinginan manusia untuk membuat tiruan binatang atau manusia itu sendiri. Namun fasilitas pengetahuan pada masa itu nampaknya menjadi kendala terbesar dalam terwujudnya proyek tersebut. Akhirnya, dibuatlah robot sederhana beroda yang digunakan untuk keperluan navigasi, pengamatan tingkah laku, sampai dengan perencanaan jalur. Berkembanglah robot dengan konsep heksapoda (konsep kaki enam) dan beberapa platformkaki banyak lainya. Pada pada masa itu, serangga menjadi inpirasi dalam pembuatan robot.


(8)

6

2.2. Perkembangan Robot [12]

Adapun contoh perkembangan hebat robot belakangan ini yaitu robot medis dengan dua perusahaan khusus yaitu Computer Motion dan Intuitive Surgical, yang menerima pengesahan pengaturan di Amerika Utara, Eropa dan Asia atas robot-robotnya untuk digunakan dalam prosedur pembedahan minimal. Otomasi laboratorium juga merupakan area yang berkembang. Di sini, robot benchtop digunakan untuk memindahkan sampel biologis atau kimiawi antar perangkat seperti inkubator, berupa pemegang dan pembaca cairan. Tempat lain dimana robot disukai untuk menggantikan pekerjaan manusia adalah dalam eksplorasi laut dalam dan eksplorasi antariksa. Untuk tugas-tugas ini, bentuk tubuh artropoda umumnya disukai. Mark W. Tilden dahulunya spesialis Laboratorium Nasional Los Alamos membuat robot murah dengan kaki bengkok tetapi tidak menyambung, sementara orang lain mencoba membuat kaki kepiting yang dapat bergerak dan tersambung penuh. Berdasarkan perkembangannya, saat ini robot memiliki berbagai macam konstruksi. Diantaranya adalah:

1. Robot Mobile ( bergerak ) 2. Robot Manipulator ( tangan ) 3. Robot Humanoid

4. Flying Robot 5. Robot Berkaki 6. Robot jaringan 7. Robot Animalia

2.3. Robot Maze Solving

Robot maze solvingadalah mobile robot yang dapat menelusuri jalur yang rumit, mengingat jalur tersebut dan mengambil jalur terpendek. Jalur yang dilewati dapat berupa garis (line) atau dinding (wall).

Robotmaze solvingyang pertama dibuat oleh seorang yang bernama Claude Elwood Shannon pada tahun 1950. Pada saat itu robot maze solvingdikendalikan oleh suatu rangkaian relay, robot tersebut menyerupai tikus yang berukuran sama dengan tikus yang sesungguhnya. Robot tersebut mengembara pada lorong (


(9)

dinding) rumit dengan 25 penyiku. Lorong tersebut bisa di ubah sesuka hati dan robot tersebut kemudian memeriksa secara menyeluruh jalan yang harus ditempuh untuk menemukan titik tujuan. Setelah melalui lorong tersebut, robot bisa ditempatkan di manapun dan akan bergerak secara langsung sampai tujuan. Hal ini nampak sebagai alat yang bisa belajar untuk pertama kalinya.

Robot maze solving pada saat ini tidak hanya dikenal di kalangan ilmuan tetapi telah di kenal di kalangan siswa SD, SMP, sampai universitas bahkan saat ini sering dilakukan perlombaan robot maze solving. Contoh momentperlombaan yaitu ROBOTIC COMPETITION STMIK LIKMI tingkat SMA pada tanggal 15 April 2010. Berikut contoh robotmaze solving:

2.4. Perangkat Keras (Hardware)

2.5.1. Mikrokontroler (ATmega32) [1]

Mikrokontroler adalah piranti elektronik berupa IC (Integrated Circuit) yang memiliki kemampuan manipulasi data (informasi) berdasarkan suatu urutan instruksi (program). Dalam sebuah struktur

Gambar 2.2 Jalur Berupa Garis dan Jalur Berupa Dinding


(10)

8

mikrokontroller akan kita temukan juga komponen-komponen seperti: processor,memory,clock, dll.

Salah satu arsitektur mikrokontroler yang terdapat di pasaran adalah jenis AVR (Advanced Virtual RISC). Arsitektur mikrokontroler jenis AVR ini pertama kali dikembangkan pada tahun 1996 oleh dua orang mahasiswa Norwegian Institute of Technology yaitu Alf-Egil Bogen dan Vegard Wollan.

Dalam perkembangannya, AVR dibagi menjadi beberapa varian yaitu AT90Sxx, ATmega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing varian adalah kapasitas memori dan beberapa fitur tambahan saja.

Pemrograman mikrokontroler AVR dapat menggunakan low level language (assembly) dan high level language (C, Basic, Pascal, JAVA, dll) tergantungcompileryang digunakan.

Salah satu yang banyak dijumpai di pasaran adalah AVR tipe ATmega, yang tediri dari beberapa versi, yaitu ATmega8535, ATmega16, ATmega162, ATmega32, ATmega324P, ATmega644, ATmega644P dan ATmega128. Mikrokontroler yang digunakan adalah AVR ATmega32. Berikut ini adalah tampilan ATmega32.

Fitur-fitur yang dimiliki ATmega32 sebagai berikut: 1. Frekuensi clock maksimum 16 MHz

2. Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan PortD Gambar 2.4 Modul AVR ATmega32


(11)

3. Analog to Digital Converter 10 bit sebanyak 8 input, 4 chanel PWM 4. Timer/Counter sebanyak 3 buah

5. CPU 8 bit yang terdiri dari 32 register 6. Watchdog Timer dengan osilator internal 7. SRAM sebesar 2K Byte

8. Memori Flash sebesar 32K Byte dengan kemampuanread while write 9. Interrupt internal maupun eksternal

10. Port komunikasi SPI

11. EEPROM sebesar 512 byte yang dapat diprogram saat operasi 12. Analog Comparator

13. Komunikasi serial standar USART dengan kecepatan maksimal 2,5 Mbps

2.5.2. Konfigurasi Pin AVR ATmega32 [1]

Konfigurasi pin pada mikrokontroler ATmega32 dapat dilihat pada gambar 2.5. Dari gambar tersebut dapat terlihat jumlah pin ATmega32 adalah 40pinyang memiliki fungsi yang berbeda-beda yaitu:

1. Vcc merupakanpinyang berfungsi sebagai masukan catu daya. 2. GND merupakanpinground.


(12)

10

3. Port A(PA0-PA7) merupakanpin input/outputdua arah dan pin masukan ADC.

4. Port B(PB0-PB7) merupakan pin input/outputdua arah dan pin fungsi khusus, seperti yang dapat dilihat pada tabel 2.1.

Tabel 2.1 Fungsi Khusus Port B

Pin Fungsi Khusus

PB0 T0 T1 (Timer/Counter0 External Counter input) XCK (USARTExternal Clock Input/Output) PB1 T1 (Timer/Counter0 External Counter Input) PB2 AIN0 (Analog Comparator Positive Input)

INT2 (External Interrupt 2 Input)

PB3 AIN0 (Analog Comparator Positive Input)

OC0 (Timer/Counter0 Output Compare Match Output) PB4 SS (SPISlave Select Input)

PB5 MOSI (SPIBus Master Output/Slave Input) PB6 MISO (SPIBus Master Input/Slave Output) PB7 SCK (SPIBus Serial Clock)

5. Port B(PB0-PB7) merupakan pin input/outputdua arah dan pin fungsi khusus, seperti yang dapat dilihat pada tabel 2.2.

Tabel 2.2 Fungsi Khusus Port C

Pin Fungsi Khusus

PC0 SCL (Two-wire Serial Bus Clock Line)

PC1 SDA (Two-wire Serial Bus Data Input/Output Line) PC2 TCK (JTAGTest Clock)

PC3 TMS (JTAGTest Mode Select) PC4 TDO (JTAGTest Data Out) PC5 TDI (JTAGTest Data In) PC6 TOSC1 (Timer OscillatorPIN1) PC7 TOSC2 (Timer OscillatorPIN2)

6. Port B(PB0-PB7) merupakan pin input/outputdua arah dan pin fungsi khusus, seperti yang dapat dilihat pada tabel 2.3.


(13)

Tabel 2.3 Fungsi Khusus Port D

Pin Fungsi Khusus

PD0 RXD (USARTInput Pin) PD1 TXD (USARTOutput Pin) PD2 INT0 (External / Interupt0 Input) PD3 INT1 (External / Interupt1 Input)

PD4 OC1B OC1A (Timer / Counter2 Output Compare B Match Output)

PD5 OC1A (Timer / Counter2 Output Compare A Match Output)

PD6 ICP (Timer / Counter1 Input Capture Pin) PD7 OC2 (Timer / Counter2 Output Compare Match

Output)

7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.

8. XTAL1 dan XTAL2 merupakanpinmasukanclockeksternal. 9. AVCC merupakanpinmasukan tegangan ADC.

10. AREF merupakanpinmasukan referensi ADC.

2.5.3. Sensor Garis

Sensor garis dalam sebuah robotline follower ibarat mata yang dapat menentukan arah geraknya. Sensor garis adalah sensor yang berfungsi mendeteksi garis yang berwarna hitam atau putih.

Sensor garis terdiri dari komponen yang berfungsi sebagai pemancar cahaya yaitu infrared, led superbright, dll. Komponen yang berfungsi penerima cahaya yaitu phototransistor, photodiode, LDR (light defendant Resistor). Dengan memanfatkan fitur ADC (Analog to Digital Converter) yang terdapat pada mikrokontroler sebagai pembanding tegangan, yang nantinya akan menghasilkanoutputdigital dari sensor.

2.5.2.1. Phototransistor [3]

Phototransistor adalah sebuah benda padat pendeteksi cahaya yang memiliki gain internal. Hal ini yang membuat phototransistor memiliki sensitivitas yang lebih tinggi dibandingkan photodioda,


(14)

12

dalam ukuran yang sama. Cara kerja phototransistor yaitu ketika basis menangkap cahaya maka collector akan terhubung dengan emitter dalam hal ini transistor bekerja.

Phototransistormemiliki karakteristik: 1. Pendeteksi jarak dekat Infra merah. 2. Bisa dikuatkan sampai 100 sampai 1500. 3. Respon waktu cukup cepat.

4. Bisa digunakan dalam jarak lebar.

5. Bisa dipasangkan dengan (hampir) semua penghasil cahaya atau cahaya yang dekat dengan inframerah, seperti Neon, Fluorescent, lampu bohlam, cahaya laser dan api.

6. Mempunyai karakteristik seperti transistor, kecuali bagian basis digantikan oleh besar cahaya yang diterima.

Bentuk fisik dan simbol phototransistor dapat dilihat pada gambar 2.6.

2.5.4. Aktuator (Penggerak Robot) 2.5.2.1. Motor DC

Motor DC merupakan perangkat yang berfungsi merubah besaran listrik menjadi besaran mekanik. Prinsip kerja motor didasarkan pada gaya elektromagnetik. Motor DC bekerja bila mendapatkan tegangan searah yang cukup pada kedua kutubnya. Tegangan ini akan menimbulkan induksi elektromagnetik yang menyebabkan motor berputar. Secara umum, kecepatan putaran poros motor DC akan meningkat seiring dengan meningkatnya tegangan yang diberikan. Dengan demikian, putaran motor DC akan berbalik


(15)

arah jika polaritas tegangan yang diberkan juga dirubah. Bentuk fisik motor DC dapat dilihat pada gambar 2.7.

Motor DC tidak dapat dikendalikan langsung oleh mikrokontroler, karena kebutuhan arus yang besar sedangkan keluaran arus dari mikrokontroler sangat kecil. Driver motor merupakan alternatif yang dapat digunakan untuk menggerakkan motor DC.

2.5.2.2. Driver Motor

Driver motor adalah sirkuit elektronika yang memungkinkan tegangan dan arus mengalir ke arah beban atau motor DC secara benar artinya dapat mengatur arah putaran motor DC sesuai dengan keinginan. Di dalam IC driver motor berisi empat buah driver-H yang berfungsi sebagai pengatur arus listrik secara dua arah karena dalam pembuatan robot membutuhkan dua motor DC. Berikut jenis IC yang berfungsi sebagaidrivermotor.

1. IC L298D 2. IC L293D

Pada gambar 2.8 dapat dilihat bentuk fisik IC L293D dan IC L298D. Gambar 2.7 Motor DC


(16)

14

2.5.2.3. PWM (Pulse Width Modulation)

Salah satu cara untuk mengirimkan informasi analog adalah menggunakan pulsa-pulsa arus. Dengan modulasi pulsa, pembawa informasi terdiri dari pulsa-pulsa persegi yang berulang-ulang. Salah satu teknik modulasi pulsa yang digunakan adalah teknik modulasi durasi atau lebar dari waktu tunda negatif pulsa-pulsa persegi tersebut. Metode tersebut dikenal dengan nama Pulse Width Modulation (PWM).

Untuk membangkitkan sinyap PWM, digunakan komparator untuk membandingkan dua buah masukan yaitu generator sinyal dan sinyal referensi. Hasil dari keluaran dari komparator dalah sinyal PWM yang berupa pulsa-pulsa persegi yang berulang-ulang. Durasi atau lebar pulsa dapat dimodulasi dengan cara mengubah sinyal referensi.

Metode PWM digunakan untuk mengatur kecepatan putaran motor, informasi yang dibawa oleh pulsa-pulsa persegi merupakan tegangan rata-rata. Besarnya tegangan rata-rata tersebut dapat diperoleh dari: Vout = (Vref * duty cycle) / periode. Semakin lebar durasi waktu tunda positif pulsa dari sinyal PWM yang dihasilkan, maka perputaran motor akan semakin cepat, demikian sebaliknya.


(17)

2.5.5. Catu Daya

Catu daya memegang peranan yang sangat penting dalam hal perancangan sebuah robot. Tanpa bagian ini robot tidak akan berfungsi. Begitu juga bila pemilihan catu daya tidak tepat, maka robot tidak akan bekerja dengan baik.

Penentuan sistem catu daya yang akan digunakan ditentukan oleh banyak faktor, diantaranya :

1. Tegangan

Setiap aktuator tidak memiliki tegangan yang sama. Hal ini akan berpengaruh terhadap disain catu daya. Tegangan tertinggi dari salah satu aktuator akan menentukan nilai tegangan catu daya. 2. Arus

Arus memiliki satuan Ah (Ampere-hour). Semakin besar Ah, semakin lama daya tahan baterai bila digunakan pada beban yang sama.

3. Teknologi Baterai

Baterai isi ulang ada yang dapat diisi hanya apabila benar-benar kosong, dan ada pula yang dapat diisi ulang kapan saja tanpa harus menunggu baterai tersebut benar-benar kosong.

Baterai yang digunakan pada mobile robot ini adalah baterai berjenis Lithium polymer. Hal ini karena jenis baterai ini merupakan jenis baterai yang dapat diisi ulang (rechargeable). Baterai ini memiliki tegangan kerja 7,4 Volt. Gambar 2.10 memperlihatkan bentuk baterai Lithium polymer 1300 mAh.

Untuk pengisian baterai ini dapat dilakukan kapan saja, selain jenis baterai Lithium polymer, masih banyak lagi jenis baterai yang tersedia di pasaran dengan spesifikasi yang beragam dan dapat digunakan untuk catu


(18)

16

daya pada sebuah robot. Diantaranya baterai Ni-cd, Alkaline,Lithium,Lead Acid dan sebagainya, yang masing-masing mempunyai kelebihan dan kekurangannya.

2.5. Perangkat Lunak (Software)

Perangkat lunak merupakan faktor penting dalam tahap perancangan robot. Perangkat lunak ini merupakan algoritma gerak dan tugas robot dalam bentuk listing program yang ditanamkan kedalam mikrokontroler. Program dapat bermacam - macam bentuk versi dan bahasa pemrogramannya, sesuai dengan spesifikasi dari mikrokontroler yang digunakan.

Mikrokontroler AVR (ATmega32) dapat menggunakan bahasa pemrogramanbasic, assembly, pascal, c++. Beberapa contohSoftware editordan compiler yang dapat digunakan adalah CodeVisionAVR, BASCOM-AVR, Programmers Notepad [AVR], mikroBasic PRO for AVR, Arduino. Software ini memungkinkan penggunanya memprogram AVR dengan bahasa tingkat tinggi yang relatif ringan dibandingkan bahasa pemrograman lainnya. Software downloaderyang dapat digunakan adalahAVRprog versi 1.40.

2.5.1. Pengenalan Arduino IDE

Arduino IDE adalah sebuah editor yang digunakan untuk menulis program, mengcompile ke mikrokontroler keluarga AVR. Program ini memungkinkan penggunanya memprogram AVR dengan bahasa C/C++ yang relatif lebih familiar dibandingkan bahasa pemrograman lainnya. Dalam penggunaan, arduino hanya perlu mendefinisikan dua fungsi untuk membuat programrunable, yaitu:

1. Setup () : fungsi dijalankan sekali pada awal program yang dapat menginisialisasi pengaturan.

2. Loop (): fungsi yang disebut berulang-ulang sampai mikrokontoler off.

Arduino IDE menggunakan GNU toolchain dan AVR libc untuk mengkompilasi program-program, dan menggunakan avrdude untuk meng-uploadprogram. [9]


(19)

Menu utama

Berikut dapat dilihat pada tabel 2.4 beberapa instruksi-instruksi dasar yang dapat digunakan pada mikrokontroler ATmega32.

Tabel 2.4 Beberapa instruksi dasar Arduino IDE

Instruksi Keterangan

do...while Perulangan

pinMode() Mengatur, apakah sebuah pin berfungsi sebagai input atau output.

If()...else Percabangan for()... Perulangan

delay() Waktu tunda milidetik

digitalWrire() Digunakan untuk memberikan nilai digital (High atau Low) pada pin output

digitalRead() Digunakan untuk memberikan nilai digital (High atau Low) pada pin input

analogWrite() Digunakan untuk memberikan nilai analog pada pin output tertentu

analogRead() Digunakan untuk memberikan nilai analog pada pin inputtertentu

Pada gambar 2.11 memperlihatkan bentuk tampilan Arduino IDE.

Contohsyntaxbahasa pemrogramanC/C++

Letak keterangan error dan memperlihatkan besar memori yang digunakan


(20)

18

2.5.2. Membuat program pada Arduino IDE

Dalam pembuatan program pada Arduino IDE ada beberapa langkah yang harus dilakukan yaitu:

1. Mendeklarasikan Variable, konstanta.

2. Mendefinisikan beberapa fungsi yang akan digunakan pada program utama.

3. Mendefinisikan fungsi setup. 4. Mendefinisikan fungsi loop.

2.5.2.1. Mendeklarasikan Variabel, Konstanta

Pada langkah ini, bertujuan mendeklarasikan variabel, konstanta dan tipe data yang akan digunakan pada program yang akan dibuat. Beberapa tipe data yang digunakan yaitu int (integer), char (character), byte. Pada gambar 2.12 memperlihatkan tampilan pendeklarasian pada arduino IDE.

2.5.2.2. Mendefinisikan Beberapa Fungsi

Pada langkah ini, bertujuan untuk pendefinisian beberapa fungsi yang nantinya akan dipanggil atau digunakan pada bagian program utama. Seperti halnya pada mobile robot ini dibutuhkan fungsi mundur, belok kiri, belok kanan, berhenti dan lain-lain. Pada gambar 2.13 memperlihatkan tampilan pendefinisian fungsi pada arduino IDE.


(21)

2.5.2.3. Mendefinisikan fungsi setup

Langkah ini merupakan salah satu langkah terpenting dalam pembuatan program pada Arduino IDE karena fungsi ini yang akan membuat program runable, jadi fungsi ini jangan sampai dilewatkan. Pada fungsi ini terdapat beberapa instruksi pengaturan komunikasi serial, pin input/output dan lain-lain. Pada gambar 2.14 memperlihatkan tampilan pendefinisian fungsi setup pada arduino IDE.

Gambar 2.13 Tampilan pendefinisian fungsi


(22)

20

2.5.2.4. Mendefinisikan fungsi loop

Pada langkah ini bertujuan mendefinisikan fungsi loop yang berisi program utama yang akan dieksekusu terus menerus. Fungsi ini juga merupakan fungsi yang terpenting dan jangan sampai dilewatkan. Pada gambar 2.15 memperlihatkan tampilan pendefinisian fungsiloop pada arduino IDE.

2.5.3. Memeriksa Sintaks dan Mengcompile Program

Sangat penting untuk memeriksa sintaks program, hal ini kita lakukan untuk memastikan semua sintaks sudah benar. Untuk memeriksa sintaks sekaligus mengcompile bisa pilih menu Verify yang iconnya mirip tombol play.

Tampilan sintaks program yang sudah benar dapat terlihat pada gambar 2.16.


(23)

Menu Verify

2.5.4. Upload Program

Setelah program dicompile menggunakan, selanjutnya program di upload ke mikrokontroler dengan cara menclick menu upload. Tetapi sebelumnya kabel data harus dalam keadaan terhubung ke PC (Personal Computer). Pada gambar 2.17 memperlihatkan tampilan mengupload program ke mikrokontroler.

Gambar 2.17 Tampilan Upload program ke Mikrokontroler

(a)

(b)

Gambar 2.16 (a)Tampilan Menu untuk check sintaks dan untuk mengkompile (b)Tampilan sintaks program yang sudah benar dan proses

compile berhasil


(24)

22

2.6. Depth-First Search (Pencarian Kedalam Pertama) [2]

Depth-first search adalah salah satu metode atau algoritma pencarian.. Metode pencarian dikatakan penting untuk menyelesaikan permasalahan karena setiapstate (keadaan) menggambarkan langkah - langkah untuk menyelesa ikan permasalahan dan setiap state juga akan menggambarkan kemungkinan posisi setiap saat.

Jadi, metode pencarian adalah bagian dari kesimpulan, dimana setiapstate menggambarkan hipotesis dalam sebuah rangkaian dedukt if.

Proses pencarian Depth-First Search dilakukan ke node -node yang selevel. Pencarian dimulai dari node akar ke level yang lebih tinggi. Proses ini diulangi terus hingga ditemukannya solusi. Berikut adalah treedaridepth -first search :

Gambar 2.18 Bentuk tree Depth - first Search

Berikut algoritmanya:

1. Buat sebuah antrian atau stack, inisialisasi node pertama dengan root daritree.

2. Bila node pertama, jika bukanfinish, node dihapus diganti dengan anak-anaknya dengan urutan langkah baru.


(25)

Keuntungan dari algoritmaDept First Seacrh:

1. Membutuhkan memori yangrelativekecil, karena hanya node-node pada lintasan yang aktif saja.

2.

Secara kebetulan, metode depth-first search akan menemukan solusi tanpa harus menguji lebih banyak lagi keadaan.

Kelemahan dari algoritmaDepth First Seacrh:

1. Memungkinkan tidak ditemukannya tujuan yang diharapkan. 2. Hanya akan menemukan satu solusi pada setiap pencarian.


(26)

24

BAB III

PERANCANGAN SISTEM

3.1. Diagram Blok Sistem

Bab ini menjelaskan mengenai komponen yang membangun suatu sistem kendali dan algoritma mobile robot untuk studi kasus maze solving berdasarkan landasan teori. Gambar 3.1 merupakan gambar diagram blok keseluruhan dari sistem.

Gambar 3.1 Diagram Blok Sistem

Fungsi dan cara kerja masing-masing blok sistem:

1. Blok Sensor Garis: blok ini berfungsi mendeteksi garis yang berwarna hitam atau putih. Pada blok ini terdiri dari 2 komponen yang berfungsi sebagai pemancar dan penerima. Komponen yang berfungsi sebagai pemancar yaitu led superbright, dan komponen yang berfungsi sebagai penerima yaitu phototransistor. Cara kerjanya yaitu led akan di pancarkan ke garis hitam atau putih selanjutnya cahaya yang dipantulkan tersebut akan diterima oleh phototransistor, ketika led dipancarkan ke garis hitam maka cahaya akan diserap sedangkan pada garis putih cahaya akan dipantulkan.

2. Blok Mikrokontroler: blok ini berfungsi sebagai kendali yang akan mengatur jalannyamobilerobot. Cara kerjanya yaitu mikrokontroler akan mendapatkan data dari sensor garis berupa sinyal analog selanjutnya data tersebut akan di konfersi ke sinyal digital melalui fitur ADC (Analog to Digital Converter)


(27)

internalyang terdapat di mikrokontroler. Setelah dikonversi ke sinyal digital, mikrokontroler akan memerintahkandriver motor untuk menggerakan motor DC melalui bahasa pemrograman tingkat tinggi yang menyebabkan robot bergerak.

3. Blok Driver Motor: blok ini berfungsi untuk mengatur arah putaran motor DC, baik secara one-directional (satu arah) ataupun bidirectional (dua arah/bolak-balik). Cara kerjanya yaitu motor akan berputar searah jarum jam ataupun kebalikannya tergantung dari intruksi yang diberikan mikrokontroler dengan cara memberikan logikahighataulowpada pin ICdrivermotor. 4. Blok Motor DC: blok ini berfungsi untuk memutarkan roda pada mobile

robot.

3.2. Perangkat Keras (Hardware) 3.3.1. Sistem Mekanik Robot

Berikut ini adalah robot yang dipakai dengan spesifikasi sebagai berikut:

1. Jenis robot merupakan robot beroda yang memiliki 1 buah roda caster di depan dan 2 buah roda belakang yang digerakkan dengan 2 motor dc di roda bagian kiri dan kanan.

2. Bodyrobot berdimensi 12,2 cm x13 cm yang terbuat dari akrilik. 3. Sensor garis dipasang di bawah bagian depan.

4. Roda belakang terbuat dari karet dan berdimensi diameter 4,5 cm, lebar 3 cm.

Pada gambar 3.2 memperlihatkan bentuk desain robot yang akan dibuat.


(28)

26


(29)

3.3.2. Mikrokontroler (ATmega32)

Mikrokontroler yang digunakan adalah mikrokontroler jenis AVR Atmega32 dengan dilengkapi 32 pinyang bisa digunakan sebagi inputatau pinoutput,pintersebut dibagi menjadi 4 port yaitu

1. Port A terdiri dari A.0 sampai A.7 2. Port B terdiri dari B.0 sampai B.7 3. Port C terdiri dari C.0 sampai C.7 4. Port D terdiri dari D.0 sampai D.7

Port yang digunakan pada perancangan sistem ini adalah port A, port B, Port D.

Pemilihan mikrokontroler jenis ini didasari kemampuannya yang cukup handal, permrograman yang tidak terlalu sulit dan harganya yang relatif tidak terlalu mahal. Konfigurasi port yang digunakan dapat dilihat pada tabel 3.2.

Tabel 3.1 Konfigurasi port yang digunakan pada ATmega32

Nama Pin No. Pin Fungsi Keterangan

PORT A 0 Input / ADC 0 Sensor garis 1

PORT A 1 Input / ADC 1 Sensor garis 2

PORT A 2 Input / ADC 2 Sensor garis 3

PORT A 3 Input / ADC 3 Sensor garis 4

PORT A 4 Input / ADC 4 Sensor garis 5

PORT A 5 Input / ADC 5 Sensor garis 6

PORT B 2 Output Driver motor (A +)

PORT B 3 Output Driver motor (A -)

PORT B 4 Output Driver motor (EN B)

PORT B 5 Output Driver motor (EN A)


(30)

28

PORT D 7 Output Driver motor (B -)

3.3.3. Sensor Garis

Sensor garis berfungsi untuk mendeteksi warna dari permukaan yang berada dibawah robot line follower dengan maksud agar sensor garis ini dapat mengasilkan logika posisi dari robotline followerterhadap garis tepat berada dibawah robot.

Logika posisi yang dihasilkan oleh sensor garis ini kemudian akan dijadikan inputke mikrokontroler pada robot. Pada sensor garis, komponen yang digunakan yaituphototransistorsebagai pendeteksi garis hitam dengan dasar putih yang menjadi jalur robot dan LED ( Light Emitting Diode ) superbright sebagai pemancar cahaya ke lantai yang kemudian dipantulkan dan diterima oleh phototransistor. Untuk lebih jelasnya memahami prinsip kerja sensor garis dapat dilihat pada gambar 3.5.

Gambar 3.3 Prinsip Kerja Sensor Garis

Phototransistor bekerja dengan cara menangkap emisi cahaya yang dikeluarkan oleh LED. Prinsip kerja dari phototransistoradalah ketika basis menangkap cahaya makacollectorakan terhubung denganemitterdalam hal ini transistor bekerja.Phototransistor memilikimodeaktif artinya transistor akan menghasilkan reaksi yang sebanding dengan besaran cahaya yang diterima sampai dengan tingkatan tertentu.

Output dari phototransistor yaitu berupa tegangan. Semakin besar intensitas cahaya yang didapat maka makin besar pula tegangan yang dihasilkan. Dengan memanfaatkan fitur internal ADC (Analog to Digital


(31)

Converter) yang terdapat pada IC ATmega32, sinyal analog yang berasal dari sensor garis dapat dibubah menjadi sinyal digital. Hal ini dilakukan karena mikrokontroler hanya bisa bekerja dengan datadigital. ADC tersebut terdiri dari 8 chanel yang terletak pada port A0 sampai port A7 pada IC ATmega32. Pada gambar 3.4 yang memperlihatkan rangkaian sensor garis yang digunakan.

Jumlah sensor yang digunakan adalah 7 sensor yang masing-masing output sensornya dihubungkan ke port A pada mikrokontroler. Tegangan yang menuju led dihubungkan dengan resistor 150Ω yang dihubungkan dari

Vcc dan kaki anoda led, pemilihan resistor tersebut bertujuan untuk menghasilkan intensitas cahaya yang cukup yang nantinya cahaya tersebut akan ditangkap oleh phototransistor. Untuk mendapatkan nilai resistor pada led dapat menggunakan rumus 3.1.

...3.1 [4, 11] Gambar 3.4 Rangkaian Sensor Garis


(32)

30

Keterangan:

RLED = Resistor LED Vin = Tegangan input

Vf = Tegangan pada saat forward bias (0,5 Volt)

If = Arus pada saat forward bias (dapat dilihat di datasheet)

Selain itu, tegangan juga dihubungkan ke resistor 10 KΩ yang

selanjutnya dihubungkan ke phototransistor, fungsi resistor tersebut yaitu sebagai penghambat arus yang akan mengalir ke mikrokontroler pada saat kondisiphototransistor OFF(tidak terkena cahaya) sehingga didapat logika highyang tepat pada keluaran sensor (Vce) yaitu sebesar 4 volt dan tegangan ini akan dikonversi oleh ADC yang terdapat pada mikrokontroler. Untuk mendapatkan nilai resistor pada led dapat menggunakan rumus 3.2

...3.2 [4, 10]

Keterangan:

RPhototransistor = Resistor Phototransistor

Vin = Tegangan input

VCE = Tegangancollector emiter

IC = Aruscollector(dapat dilihat di datasheet)

Tujuh sensor yang digunakan memiliki fungsi masing-masing, yaitu: 1. Sensor 0 dan sensor 1 berfungsi untuk mendeteksi adanya belok

kanan.


(33)

3. Sensor 5 dan sensor 6 berfungsi untuk mendeteksi adanya belok kiri.

Jarak antar sensor pun tidak sama, hal ini bertujuan agar memudahkan dalam mengenali bentuk persimpangan. Untuk lebih jelasnya dapat dilihat pada gambar 3.5.

Gambar 3.5 Design Bord Sensor Garis

3.3.4. Aktuator (Penggerak Robot) 3.3.3.1. Driver Motor

Driver motor berfungsi untuk mengatur kecepatan dan arah putaran motor DC. IC drivermotor yang digunakan adalah IC L293D, pemilihan IC jenis ini selain karena ukurannya yang lebih kecil dan lebih murah, IC L293D juga berisi empat buah driver-H berarus tinggi. IC ini didesain guna menyediakan pengaturan (driver) arus listrik secara dua arah (bidirectional) hingga mencapai lebih dari 1 A pada tegangan dari 4,5 V sampai dengan 36 V. Selain itu, IC L293D juga didesain untuk mengendalikan beban induktif seperti relay, solenoid, motor DC, dan motor stepper bipolar.

Satu motor dapat dikontrol dengan 3 pin yaitu Aenable, A+ dan A-. Berikut ini adalah tabel kebenaran untuk salah satu motor.


(34)

32

Tabel 3.2 Tabel Kebenaran untuk Salah Satu Motor

AEN A+ A- Reaksi Motor

L L L Motor off

L L H Motor off

L H L Motor off

L H H Motor off

H L L Stop

H H L Berputar searah jarum jam

H L H Berputar berlawanan arah jarum jam

H H H Stop

Ket:H =High= 1 dan L =Low= 0

Pengontrolan kedua motor kiri dan kanan dibutuhkan 6 pin yaitu untuk motor kiri masing-masing AEN,A+ , A-dan motor kanan BEN, B+, B-. Pinoutputyang menuju motor DC dihubungkan dengan dioda 1N4002 yang dihubungkan ke sumber Vcc dan ground motor DC. Pemilihan dioda ini berdasarkan kemampuannya untuk menangani arus tinggi yang mampu mengurangi spike yang terjadi akibat perubahan arah gerak robot. Berikut gambar 3.6 yang memperlihatkan gambar rangkaianmotor driver.


(35)

3.3.3.2. Motor DC

Motor DC berfungsi untuk memutarkan roda pada sebuah mobile robot. Motor DC kebanyakan memiliki bentuk fisik bulat,


(36)

34

sehingga tidak mudah untuk memasangnya pada chassis. Kecepatan putarnya (RPM) tinggi, namun torsinya rendah sehingga perlu dilengkapi dengan gearbox. Gearbox yang digunakan adalah jenis double gearbox yang sudah terpaket dengan satu pasang motor DC yang dapat bekerja pada tegangan 3 Volt hingga 6 Volt. Pemilihan gearbox ini didasarkan karena kecepatan maksimum yang dapat dihasilkan adalah 1.040 rpm dan torsi maksimum hingga 2,3 kgf.cm. Kecepatan dan torsi dapat diatur dengan mengatur gear ratio. Pada gambar 3.7 memperlihatkan bentuk fisikgearboxyang digunakan.

3.3.3.3. Catu Daya

Catu daya merupakan faktor pendukung terpenting, karena hampir keseluruhan komponen hardware pada robot membutuhkan tegangan untuk mengoperasikannya. Catu daya yang dibutuhkan sebanyak 2 buah, pertama untuk mencatu mikrokontroler dan sensor garis. Kedua, tegangan actuator berupa motor dc.

Tegangan yang digunakan berasal dari 1 buah baterai rechargeable berjenis Lithium polymer yang mempunyai nilai tegangan 7,4 volt dengan arus 1300 mAh. Untuk supply tegangan ke aktuator berupa motor dc, baterai dihungkan langsung ke motor dc sedangkan untuk supply tegangan ke mikrokontroler dan sensor garis diperlukan IC regulator untuk mendapatkan tegangan 5 volt, IC tersebut yaitu IC LM2940.


(37)

Gambar 3.8 (a) menunjukkan gambar IC regulator untuk tegangan output 5 Vdc (yang terukur 4,9 volt) yang dihasilkan dari tegangan sumber Vin sebesar 7,4 volt. Pada Gambar 3.10 (b) terdapat kapasitor, digunakan untuk menghilangkan ripple yang berasal dari tegangan.

3.3. Perangkat Lunak (Software)

3.3.1. Perancangan Pohon Penelusuran Berdasarkan Algoritma Depth First Search

Berdasarkan teori algoritma depth first search dan bentuk track yang dirancang, maka dapat dirancang sebuah pohon penelusuran untuk mengetahui jalur mana sajakah yang akan ditelusuri robot dan jalur yang ditelusuri tersebut akan disederhanakan menjadi rangkaian jalur yang lebih efektif dan efisien. Gambar 3.9 memperlihatkan bentuk track yang digunakan dan arah jalur yang akan ditelusuri robot.

Finish

Start

1 2 3

4 5

6 7

8 9

10

11 12

Gambar 3.9 Bentuk track dan arah jalur yang dilewati Gambar 3.8 (a) IC LM2940 (b) Skematik regulator 5 volt


(38)

36

Pada gambar track di atas terdapat beberapa bentuk persimpangan yang terdapat pada tabel 3.3.

Tabel 3.3 Bentuk-bentuk persimpangan Nama Bentuk track Data Yang

tersimpan

Keterangan

Left

junction Karekter “L” Belok kiri

T-junction

Karakter “L” Belok kiri

Right

junction Karakter “S” Lurus

Cross

junction Karakter “L” Belok kiri

Dead End Karakter “B” Putar kiri

Berdasarkan gambar 3.9 maka dapat dibuat sebuah pohon penelusurannya yang diperlihatkan pada gambar 3.10.


(39)

1 2

3 9

4 5 10 11

6 7 12

8 Start

Finish Gambar 3.10 Pohon penelusuran

Berikut penjelasan pohon penelusuran:

1. Awalnya robot bergerak dari titik start selanjutnya saat robot menemui bentuk persimpangan right junction,robot akan bergerak lurus ke arah

nomer 1 maka akan disimpan karekter “S” yang artinya robot bergerak

lurus, setelah bergerak lurus ternyata jalur tersebut merupakan jalur buntu dan robot akan berputar kembali ke persimpangan sebelumnya.

Pada saat berputar akan sisimpan karakter “B” yang berarti robot telah

menemui jalur buntu. Maka :

Data langkah yang tersimpan = “SB”

2. Selanjutnya robot bertemu bentuk persimpangan left junction, robot

akan bergerak ke arah nomer 2 maka akan disimpan karakter “L” yang

artinya robot belok kiri, pada tahap ini sudah 3 langkah yang tersimpan

pada ingatan robot yaitu “SBL”. Dari 3 data langkah tersebut akan di

konversi menjadi karakter “R”. Maka Data langkah yang tersimpan = “SBL” Dikonversi menjadi = “R”


(40)

38

3. Selanjutnya robot bertemu bentuk persimpangan right junction, robot akan bergerak ke arah nomer 3 maka akan disimpan karekter “S” yang

artinya robot bergerak lurus. Maka :

Data langkah yang tersimpan = “RS”

4. Robot bertemu bentuk persimpangan left junction, robot bergerak ke

arah nomer 4 maka akan disimpan karakter “L” yang artinya robot

belok kiri, setelah belok kiri ternyata jalur tersebut merupakan jalur buntu dan robot akan berputar kembali ke persimpangan sebelumnya.

Pada saat berputar akan disimpan karakter “B” yang berarti robot telah

menemui jalur buntu. Maka :

Data langkah yang tersimpan = “RSLB”

5. Selanjutnya robot bertemu bentuk persimpanganT-junction,robot akan

bergerak ke arah nomer 5 maka akan disimpan karekter “L” yang

artinya robot belok kiri. Maka :

Data langkah yang tersimpan = “RSLBL” Dikonversi menjadi = “RSS”

6. Selanjutnya robot bertemu bentuk persimpangan cross junction, robot

akan bergerak ke arah nomer 6 maka akan disimpan karekter “L” yang

artinya robot belok kiri. Setelah belok kiri ternyata jalur tersebut merupakan jalur buntu maka robot akan berputar kembali ke persimpangan sebelumnya. Pada saat berputar akan sisimpan karakter

“B” yang berarti robot telah menemui jalur buntu. Maka : Data langkah yang tersimpan = “RSSLB”

7. Selanjutnya robot bertemu bentuk persimpangan cross junction, robot

akan bergerak ke arah nomer 7 maka akan disimpan karekter “L” yang artinya robot belok kiri. Setelah bergerak lurus ternyata jalur tersebut merupakan jalur buntu dan robot akan berputar kembali ke persimpangan sebelumnya. Pada saat berputar akan sisimpan karakter

“B” yang berarti robot telah menemui jalur buntu. Maka : Data langkah yang tersimpan = “RSSLBLB”


(41)

8. Selanjutnya robot bertemu bentuk persimpangan cross junction, robot

akan bergerak ke arah nomer 8 maka akan disimpan karekter “L” yang

artinya robot belok kiri. setelah bergerak lurus ternyata jalur tersebut merupakan jalur buntu dan robot akan berputar kembali ke persimpangan sebelumnya. Pada saat berputar akan disimpan karakter

“B” yang berarti robot telah menemui jalur buntu. Setelah berputar

kembali ke persimpangan sebelumnya robot bertemu bentuk persimpangan cross junction, robot akan belok ke kiri maka akan

disimpan karekter “L”. Selanjutnya robot kembali ke persimpang

sebelumnya lagi dan pada titik ini robot bertemu bentuk persimpangan right junction, robot akan bergerak lurus dan karakter yang disimpan

yaitu “S” Maka :

Data langkah yang tersimpan = “RSSSBLBLS” Dikonversi menjadi = “RSSRBL”

Dikonversi lagi menjadi = “RSSBS” Dikonversi lagi menjadi = “RSB

9. Pada titik ini robot bertemu bentuk persimpangan left junction, robot bergerak ke arah nomer 9 maka akan disimpan karakter “L” yang

artinya robot belok kiri,. Maka :

Data langkah yang tersimpan = “RSBL” Dikonversi menjadi = “RR”

10. Selanjutnya robot bertemu bentuk persimpangan right junction, robot akan bergerak ke arah nomer 10 maka akan disimpan karekter “S” yang

artinya robot bergerak lurus. Setelah bergerak lurus ternyata jalur tersebut merupakan jalur buntu dan robot akan berputar kembali ke persimpangan sebelumnya. Pada saat berputar akan sisimpan karakter

“B” yang berartirobot telah menemui jalur buntu.Maka :

Data langkah yang tersimpan = “RRSB”

11. Selanjutnya robot bertemu bentuk persimpangan left junction, robot

akan bergerak ke arah nomer 11 maka akan disimpan karakter “L” yang

artinya robot belok kiri. Maka:


(42)

40

Dikonversi menjadi = “RRR”

12. Selanjutnya robot bertemu bentuk persimpangan left junction, robot

akan bergerak ke arah nomer 11 maka akan disimpan karakter “L” yang

artinya robot belok kiri. Maka:

Data langkah yang tersimpan = “RRRL” (right, right, right, left)

Dari hasil penelusuran jalur maka didapat rangkangkaian jalur yang lebih efektif dan efisien yaituright(kanan), right(kanan), right(kanan), left(kiri). Jika diambil dari pohon penelusuran, jalur yang efektif dan efisien yaitu 2, 9, 12, 11.

3.3.2. Perancangan Prosedural

Perancangan prosedural merupakan salah satu bagian terpenting dalam proses perancangan robot, karena pada perancangan prosedural terdiri beberapa algoritma yang disusun secara terprosedur.

Pada perancangan prosedural ini terdiri dari 2 algoritma yang digunakan untuk pergerakan robot dan penelusurantrackyaitu:

1. Algoritma pemetaan (maping)

2. Algoritma penyederhanaan (simplifikasi)

3.3.3.1. Algoritma Pemetaan (Maping)

Algoritma ini bertujuan agar robot dapat bergerak dari titikstart ke finish sambil melakukan penyimpanan data setiap langkah dan algoritma ini juga merupakan program utama. Data langkah tersebut akan dikonversikan menjadi sebuah kode berupa karakter.

Pada algoritma ini, terdapat beberapa proses yaitu proses pencatatan data langkah, penyimpanan data langkah, penyederhanaan data langkah (simplifikasi). Masing-masing proses tersebut akan diwakili oleh suatu subroutine agar memudahkan dalam pembuatan program. Tetapi sebelumnya harus ditentukan kode data langkah dan sensor mana yang digunakan karena ada beberapa bentuk belokan dan persimpangan, tetapi hanya persimpangan saja yang datanya


(43)

disimpan. Adapun kode data langkah yang digunakan pada algoritma pemetaan ini adalah :

1. “L” berarti left.Ini menandakan robot telah melakukan belok kiri karena melewati persimpangan.

2. “S” berarti Straight. Ini menandakan robot telah melakukan jalan terus karena bertemu dengan persimpangan tiga dengan pilihan lurus atau belok kanan.

3. “B” berarti back. Ini menandakan robot berjumpa jalur buntu dan berjalan kembali ke persimpangan yang terakhir.

Untuk lebih jelasnya dapat dilihat pada tabel 3.4.

Tabel 3.4 Bentuk belokan dan persimpangan

Nama Bentuk track Sensor yang digunakan Data Yang disimpan

Left Sensor 5

-Left

junction Sensor 5 Karekter “L”

T-junction Sensor 5 dan Sensor 1 Karakter “L”

Right Sensor 1

-Right

junction Sensor 1 Karakter “S”

Cross

junction Sensor 5 dan Sensor 1 Karakter “L”

Straight Sensor 2 sampai sensor 4

-Dead end Buntu Sensor 2 sampai sensor 4 Karakter “B”

Dari tabel di atas maka dapat dirancang sebuah algoritma pemetaannya. Algoritma pemetaan dapat dilihat pada gambar 3.11 sampai gambar 3.12.


(44)

42


(45)

Sensor[5] > 400 ?

lFound = 0; timeStart = millis();

millis() – timeStart < 150

analogRead(1) > 400 ?

berhenti ya tidak ya ya bacaSensor

Sensor[1] > 400 && Sensor[5] > 400?

finish

Sensor[2] || Sensor[3] || Sensor[4] > 400?

Left

Selesai

leftJunction

c_t_Junction lFound = 1

ya ya tidak tidak ya tidak tidak berhenti bacaSensor

Sensor[1] > 400 && Sensor[5] > 400?

finish Selesai ya tidak B A deadEnd maju y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as simplifikasi C

Gambar 3.12 Diagram alir pemetaan (lanjutan)

Berikut ini penjelasan algoritma pemetaan: a. Memulai awal program.

b. Pendeklarasian program. Deklarasi variabel, konstanta, array. c. Panggilsubroutinesetup.

d. PanggilsubroutinelineFollow agar robot bergerak lurus

e. Periksa apakah sensor 1 lebih besar dari 400 (berada pada garis hitam).


(46)

44

f. Jika ya, isi nilai 0 pada variabel lFound, isi variabel time start dengan nilai millis.

g. Periksa apakah nilai hasil pengurangan millis dengan variabel time start lebih kecil dari 150.

h. Jika ya, apakah sensor 5 juga lebih besar dari 400 (berada pada garis hitam).

i. Isi nilai 1 pada variabel lFound.

j. Jika ya, panggil subroutine maju (robot akan bergerak maju sedikit).

k. Panggilsubroutineberhenti (robot berhenti selama 100 ms). l. Panggilsubroutinebaca sensor.

m. Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. n. Jika ya, panggilsubroutine finish.

o. Program selesai.

p. Jika sensor 1 dan sensor 5 tidak berada pada garis hitam, panggil subroutine c_t_junction, selanjutnya panggil subroutine simplifikasi dan kembali ke langkah d.

q. Panggilsubroutineberhenti (robot berhenti selama 100 ms). r. Panggilsubroutinebaca sensor.

s. Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. t. Jika ya, panggilsubroutine finish.

u. Program selesai.

v. Jika sensor 1 dan sensor 5 tidak berada pada garis hitam, periksa apakah sensor 2 sampai sensor 4 lebih kecil dari 400 (berada pada garis putih).

w.Jika ya, panggil subroutine Right, selanjutnya panggil subroutine simplifikasi dan kembali ke langkah d.

x. Jika tidak, panggil subroutine rightJunction, selanjutnya panggil subroutinesimplifikasi dan kembali ke langkah d.

y. Periksa apakah sensor 5 lebih besar dari 400 (berada pada garis hitam).


(47)

z. Jika ya, isi nilai 0 pada variabel lFound, isi variabel time start dengan nilai millis.

a.a Periksa apakah nilai hasil pengurangan millis dengan variabel time start lebih kecil dari 150.

a.b Jika ya, apakah sensor 1 juga lebih besar dari 400 (berada pada garis hitam).

a.c Isi nilai 1 pada variabel lFound.

a.d Jika ya, panggil subroutine maju (robot akan bergerak maju sedikit).

a.e Panggilsubroutineberhenti (robot berhenti selama 100 ms). a.f Panggilsubroutinebaca sensor.

a.g Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. a.h Jika ya, panggilsubroutine finish.

a.i Program selesai.

a.j Jika sensor 1 dan sensor 5 tidak berada pada garis hitam, subroutine prosedur c_t_junction, selanjutnya panggil subroutine simplifikasi dan kembali ke langkah d.

a.k Panggilsubroutineberhenti (robot berhenti selama 100 ms). a.l Panggilsubroutinebaca sensor.

a.m Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. a.n Jika ya, panggilsubroutine finish.

a.o Program selesai.

a.p Jika sensor 1 dan sensor 5 tidak berada pada garis hitam, periksa apakah sensor 2 atau sensor 3 atau sensor 3 lebih besar dari 400 (berada pada garis hitam).

a.q Jika ya, panggil subroutine Left, selanjutnya panggil subroutine simplifikasi dan kembali ke langkah d.

a.r Jika tidak, panggil subroutine leftJunction, selanjutnya panggil subroutinesimplifikasi dan kembali ke langkah d.

a.s Jika sensor 5 tidak lebih besar dari 400 panggil subroutine dedEnd dan kembali ke langkah d.


(48)

46

3.3.3.2. Algoritma penyederhanaan (simplifikasi)

Algoritma ini merupakan bagian dari algoritma pemetaan. Setiap instruksi yang terdapat pada algoritma pemetaan ini, akan diwakili oleh satu nama subroutine yang nantinya akan di panggil ketika banyaknya data langkah yang tersimpan pada array lebih besar atau sama dengan 3 dan data kedua dari data langkah terakhir array

adalah karakter ‘B’, ketika syarat tersebut terpenuhi maka data

tersebut akan dikonversi menjadi satu karakter tertentu.

Dari proses pemetaan maka akan kode-kode akan tersusun, kode-kode tersebut akan disederhanakan menggunakan formulasi sebagai berikut:

1. Setiap karakter data langkah dikonversi ke sebuah nilai, yaitu

“L” = 270, “R” = 90, “S” = 0, “B” = 180.

2. Nilai tersebut akan dijumlahkan dan akan dibagi dengan 360, sisa pembagiannya akan dikonversi menjadi karakter data langkah (Hasil penyederhanaannya.

Berikut adalah proses pemberian kode dan cara penyederhanaannya berdasarkan bentuk persimpangan:

Data yang tersimpan = “LBL” = 270 + 180 + 270 = 720

Hasil penyederhannya = 720 mod 360 = 0


(49)

Data yang tersimpan = “LBS” = 270 + 180 + 0 = 450

Hasil penyederhannya = 450 mod 360 = 90

90 dikonversi menjadi “R”.

“S” “B” 3

“L”

Data yang tersimpan = “SBL” = 0 + 180 + 270 = 450

Hasil penyederhannya = 450 mod 360 = 90

90 dikonversi menjadi “R”.

Berdasarkan cara di atas maka dapat dirancang sebuah algoritma penyederhanaan (simplifikasi). Algoritma simplifikasi dapat dilihat pada gambar 3.13.


(50)

48

Gambar 3.13 Diagram alir simplifikasi

Berikut ini penjelasan algoritma simplifikasi: a. Memulai awal simplifikasi.

b. Periksa apakah banyak array lebih besar sama dengan 3 atau data


(51)

c. Jika ya, isi variabel i dengan 1.

d. Periksa apakahdata pada array karakter ”S”. e. Jika ya, jumlahkan variabel total_angle dengan 0. f. Increment variabel i.

g. Perikasa apakah variabel i lebih kecil sama dengan 3, jika tidak kembali ke langkah c.

h. Jika ya, isi variabel total_angle dengan sisa pembagian dari variabel total_angle dengan 360.

i. Periksa apakah variabel total_angle sama dengan 0.

j. Jika ya, ganti data ketiga dari terakhir dengan array dengan

karakter ”S”.

k. Kurangi jumlah array dengan 2 selanjutnya kembali ke langkah b.

l. Periksa apakah variabel total_angle sama dengan 90.

m. Jika ya, ganti data ketiga dari terakhir dengan array dengan

karakter ”R”.

n. Kurangi jumlah array dengan 2 selanjutnya kembali ke langkah b. o. Periksa apakah variabel total_angle sama dengan 180.

p. Jika ya, ganti data ketiga dari terakhir dengan array dengan

karakter ”B”.

q. Kurangi jumlah array dengan 2 selanjutnya kembali ke langkah b. r. Jika variabel total_angle nilainya selain 0, 90, 180 maka lanjutkan

ke langkah yang terdapat pada algoritma pemetaan. s. Periksa apakah data pada array karakter ”B”.

t. Jika ya, jumlahkan variabel total_angle dengan 180 dilanjukan ke langkah f.

u. Periksa apakah data pada array karakter ”L”.

v. Jika ya, jumlahkan variabel total_angle dengan 270 dilanjukan ke langkah f.

w. Periksa apakah banyak array tidak lebih besar sama dengan 3 atau

data ke dua dari terakhir tidak sama dengan “B”, maka


(52)

50

3.3.3.3. Algoritma Bergerak Berdasarkan Peta (Running Map) Algoritma ini akan dikerjakan setelah proses penyederhanaan data langkah selesai dan robot dapat bergerak dari titik start ke titik finish beserta penyimpanan data langkah yang sesuai dengan bentuk persimpangan yang dihadapi.

Algoritma ini bertujuan untuk meninstruksikan robot agar bergerak berdasarkan peta yang telah disederhanakan, maka dalam algoritma ini hanya memanggil data langkah yang tersimpan dalam sebuah array. Untuk lebih jelasnya lihat gambar 3.14.


(53)

Gambar 3.14 Diagram alir Run map

Berikut ini penjelasan algoritma pemetaan: a. Memulai awal program.

b. Pendeklarasian program. Deklarasi variabel. c. Isi variabel xpath dengan nilai 0.

d. PanggilsubroutinelineFollow agar robot bergerak lurus.

e. Periksa apakah sensor 1 lebih besar dari 400 (berada pada garis hitam).


(54)

52

f. Jika ya, panggilsubroutinemaju.

g. Panggilsubroutineberhenti (robot berhenti selama 100 ms). h. Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. i. Jika ya, robot berhenti.

j. Program selesai.

k. Periksa apakah sensor 1 sampai 5 berada pada garis putih. l. Jika ya, panggilsubroutine right.

m. Jika ya, keluar dari subroutinedan kembali mengeksekusi instruksi d.

n. Jika tidak, ambil data pada array, periksa apakah data array adalah

karakter ’L’.

o. Jika ya, panggilsubroutine left. p. Incrementvariabel array xpath.

q. Keluar darisubroutinedan kembali mengeksekusi instruksi d. r. Jika tidak, ambil data pada array, periksa apakah data array adalah

karakter ’R’.

s. Jika ya, panggilsubroutine right. t. Incrementvariabel array xpath.

u. Keluar darisubroutinedan kembali mengeksekusi instruksi d. v. Jika tidak, ambil data pada array, periksa apakah data array adalah

karakter ’S’.

w. Incrementvariabel array xpath.

x. Keluar darisubroutinedan kembali mengeksekusi instruksi d. y. Periksa apakah sensor 5 lebih besar dari 400 (berada pada garis

hitam).

z. Jika ya, panggilsubroutinemaju.

a.a. Panggilsubroutineberhenti (robot berhenti selama 100 ms). a.b. Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. a.c. Jika ya, robot berhenti.

a.d. Program selesai.


(55)

a.f. Jika ya, panggil subroutine left, keluar dari subroutine dan kembali mengeksekusi instruksi d.

a.g. Jika tidak, ambil data pada array, periksa apakah data array adalah

karakter ’L’.

a.h. Jika ya, panggilsubroutine left. a.i.Incrementvariabel array xpath.

a.j.Keluar darisubroutinedan kembali mengeksekusi instruksi d. a.k. Jika tidak, ambil data pada array, periksa apakah data array adalah

karakter ’R’.

a.l.Jika ya, panggilsubroutine right. a.m.Incrementvariabel array xpath.

a.n. Keluar darisubroutinedan kembali mengeksekusi instruksi d. a.o. Jika tidak, ambil data pada array, periksa apakah data array adalah

karakter ’S’.

a.p. Incrementvariabel array xpath.

a.q. Keluar darisubroutinedan kembali mengeksekusi instruksi d. a.r. Jika sensor 5 tidak berada pada garis hitam kembali

mengeksekusi instruksi d.

3.3.3. Perancangan Subroutine

Perancangan subroutine bertujuan agar program lebih terstruktur dan sederhana.Subroutine - Subroutineini akan dipanggil pada algoritma utama karena dalam suatusubroutineterdapat beberapa instruksi program.

Perancangan subroutine pada tugas akhir ini dibagi menjadi 3 bagian, yaitu:

1. Subroutine utama

2. Subroutine penyimpanan data langkah 3. Subroutine pergerakan robot


(56)

54

3.3.3.1. Subroutine Utama

Subroutine ini memegang peran penting karena didalamnya terdapat instruksi yang fatal jika terlewat. Berikut yang termasuk pada subroutineutama:

1. Setup

Pada subroutine ini terdapat instruksi untuk inisialisasi pin, boudrate, tombol start. Gambar 3.15 memperlihatkan diagram alirsubroutinesetup.

Awal Subroutine Setup

Tombol start (Pin 8) = Low? Inisialisasi Pin Inisialisasi Boudrate

ya tidak

a

b

c Tunggu penekanan tombol start (pin 8)

d

Return e

Gambar 3.15 Diagram alir subroutine setup

Berikut ini penjelasan diagram alirsubroutine setup: a Memulai diagram alir subroutine setup.

b Inisialisasi pin, inisialisasi boudrate. c Tunggu penekanan tombol start.


(57)

e Jika ya, keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama dan robot akan mulai bergerak.

2. Baca Sensor

Pada subroutine bertujuan untuk pembacaan sensor melalui pembacaan ADC. Gambar 3.16 memperlihatkan diagram alir subroutinebaca sensor.

Awal Subroutine bacaSensor

i=0 a

sensor[i] = analogRead(i)

ya

i<7

Inc i

Return

tidak

b

c

d

e

f

Gambar 3.16 Diagram alir subroutine baca sensor

Berikut ini penjelasan diagram alirsubroutine baca sensor: a. Memulai diagram alir subroutine baca sensor.

b. Isi variabel i dengan 0. c. apakah i kurang dari 7.

d. Periksa Periksa apakah isi variabel sensor ke i sama dengan ADC ke i.

e. Jika ya, increment variabel i dan kembali ke langkah c. f. Jika tidak, keluar dari subroutine dan kembali


(58)

56

3.3.3.2. Subroutine Penyimpanan Data Langkah

Pada subroutine ini terdiri dari dua proses yaitu pergerakan dan penyimpanan bentuk pergerakan tersebut, jadisubroutineini dipanggil ketika robot menemui salah satu bentuk persimpangan. Berikut yang termasuk subroutine penyimpanan data langkah:

1. Cross, T, Left junction

Subroutine ini dipanggil ketika robot menemui cross junction, left junction, dan T-juntion. Data langkah yang tersimpan pada array adalah karakter ‘L’. Gambar 3.17

memperlihatkan diagram alirsubroutineini.

Gambar 3.17 Diagram alir subroutine cross junction, left junction, dan T-juntion

Berikut ini penjelasan diagram alir subroutine cross, T, left junction:

a. Memulai diagram alir subroutine c_t_l_junction. a. Putar kiri sampai sensor 4 berada pada garis hitam. b. Simpan karakter ‘L’ pada array.


(59)

d. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

2. Right Junction

Subroutine ini dipanggil ketika robot menemui left junction. Data langkah yang tersimpan pada array adalah karakter ‘L’.

Gambar 3.18 memperlihatkan diagram alirsubroutineini.

Gambar 3.18 Diagram alir subroutine righ junction

Berikut ini penjelasan diagram alirright junction: a. Memulai diagram alir subroutine right junction. b. Simpan karakter ‘L’ pada array.

c. Increment array.

d. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

3. Dead End

Subroutine ini dipanggil ketika robot menemui track buntu. Data langkah yang tersimpan pada array adalah karakter ‘B’.


(60)

58

Gambar 3.19 Diagram subroutine dead end

Berikut ini penjelasan diagram alirsubroutine dead end: a. Memulai diagram alir subroutine left junction. b. Putar kiri sampai sensor 4 berada pada garis hitam. c. Simpan karakter ‘B’ pada array.

d. Increment array.

e. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

3.3.3.3. Subroutine Pergerakan robot

Pada Subroutine ini terdiri beberapa instuksi agar robot dapat berputar atau belok, maju dan berhenti. Subroutine ini dipanggil ketika robot menemui belokan dan persimpangan. Berikut yang termasuksubroutinepergerakan robot:

1. Left

Subroutine left berfungsi untuk memberi instruksi putar kiri. Subroutine ini dipanggil ketika robot menemui belokan kiri 90 derajat, cross junction, left junction, T-junction, dan dead end (buntu). Pada saat pemanggilan subroutine ini, putaran atau belokannya dapat dibatasi dengan menggunakan sensor


(61)

pembatas dan sensor pembatasnya dapat dipilih sesuai dengan pergerakan robotnya. Untuk pemilihan sensor pembatasnya dapat digunakan sebuah variabel yang nilainya dapat diganti. Gambar 3.20 memperlihatkan diagram alir subroutineini.

Awal Subroutine left

analogRead(x) < 400 ? Baca nilai variabel x

Kecepatan () Pin 2 = high (pin A+ = high)

Pin 3 = low (pin A- = low) Pin 6 = low (pin B+ = low) Pin 7 = high (pin B- = high)

Return

ya

tidak a

b

e c

d

g

f

Gambar 3.20 Diagram alir subroutine left

Berikut ini penjelasan diagram alirsubroutine left: a. Memulai diagram alirsubroutine left.

b. Baca nilai variabel x.

c. Periksa apakah ADC ke x lebih kecil dari 400.

d. Inisialisasi pin yang dihubungkan ke A+ dan A- agar roda berputar maju dan Inisialisasi pin yang dihubungkan ke B+ dan B- agar roda berputar dengan arah berlawanan sehingga robot berputar ke kiri.

e. Panggil subroutine kecepatan untuk memberi nilai PWM kiri dan kanan.


(62)

60

f. Jika ya, kembali ke langkah c.

g. Jika tidak, lanjutkan ke langkah yang terdapat pada algoritma pemetaan.

2. Right

Subroutine right berfungsi untuk memberi instruksi putar kanan. Subroutine ini dipanggil ketika robot menemui belokan kanan 90 derajat. Pada saat pemanggilan subroutine ini, putaran atau belokannya dapat dibatasi dengan menggunakan sensor pembatas dan sensor pembatasnya dapat dipilih sesuai dengan pergerakan robotnya. Untuk pemilihan sensor pembatasnya dapat digunakan sebuah variabel yang nilainya dapat diganti. Gambar 3.21 memperlihatkan diagram alirsubroutineini.

Awal Subroutine right

analogRead(x) < 400 ? Baca nilai variabel x

Kecepatan () Pin 2 = high (pin A+ = low)

Pin 3 = low (pin A- = high) Pin 6 = low (pin B+ = high) Pin 7 = high (pin B- = low)

Return

ya

tidak a

b

e c

d

g

f


(63)

Berikut ini penjelasan diagram alirsubroutine right: a. Memulai diagram alirsubroutine right.

b. Baca nilai variabel x.

c. Periksa apakah ADC ke x lebih kecil dari 400.

d. Inisialisasi pin yang dihubungkan ke A+ dan A- agar roda berputar maju dan Inisialisasi pin yang dihubungkan ke B+ dan B- agar roda berputar dengan arah berlawanan sehingga robot berputar ke kanan.

e. Panggil subroutine kecepatan untuk memberi nilai PWM kiri dan kanan.

f. Jika ya, kembali ke langkah c.

g. Jika tidak, lanjutkan ke langkah yang terdapat pada algoritma pemetaan.

3. Berhenti

Subroutine berhenti berfungsi untuk memberi instruksi berhenti selama 100 ms kepada robot. Setelah robot berhenti, robot akan melanjutkan instrusi selanjutnya. Gambar 3.22 memperlihatkan diagram alirsubroutineini.


(64)

62

Berikut ini penjelasan diagram alirsubroutine berhenti: a. Memulai diagram alirsubroutine berhenti

b. Inisialisasi pin yang dihubungkan ke A+ dan A- agar roda berputar mundur dan Inisialisasi pin yang dihubungkan ke B+ dan B- agar roda berputar mundur sehingga robot berhenti.

c. Delay 100milisecond.

d. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

4. Maju

Subroutine maju berfungsi untuk memberi instruksi maju selama 100 ms kepada robot. Setelah robot maju, robot akan melanjutkan instrusi selanjutnya. Gambar 3.23 memperlihatkan diagram alirsubroutineini.


(65)

Berikut ini penjelasan diagram alirsubroutine maju: a. Memulai diagram alirsubroutine maju

b. Inisialisasi pin yang dihubungkan ke A+ dan A- agar roda berputar maju dan Inisialisasi pin yang dihubungkan ke B+ dan B- agar roda berputar maju sehingga robot maju. c. Delay 100milisecond.

d. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

2. Finish

Subroutine finish berfungsi untuk memberi instruksi maju berhenti sampai ada penekanan tombol start. Setelah tombol start ditekan maka, robot akan mengeksekusi instruksi yang ada pada subroutine run map. Gambar 3.24 memperlihatkan diagram alirsubroutineini.


(66)

64

Gambar 3.24 Diagram alir subroutine finish

Berikut ini penjelasan diagram alirsubroutine finish: a. Memulai diagram alirsubroutine finish.

b. Robot berhenti.

c. Set pin 8low(tombolstart) pada high. d. Tunggu penekanan tombol start.

e. Jika ya, panggilsubroutine displayPath. f. Tunggu penekanan tombol start.

g. Jika ya, panggilsubroutine Run_map.

h. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.


(67)

3. Line Follow

Subroutine line follow berfungsi untuk menelusuri garis lurus. Gambar 3.25 memperlihatkan diagram alir subroutine ini.

Gambar 3.25 Diagram alir subroutine line follow

Berikut ini penjelasan diagram alirsubroutine line follow: a. Memulai diagram alirsubroutine line follow.

b. Panggilsubroutinemaju. c. Panggilsubroutinebaca sensor.

d. Periksa apakah sensor 3 lebih besar dari 400 (berada pada garis hitam).

e. Jika ya, periksa apakah sensor 2 lebih besar dari 400 (berada pada garis hitam).


(68)

66

g. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

h. Jika ya, periksa apakah sensor 4 lebih besar dari 400 (berada pada garis hitam).

i. Jika ya, nilai PWM kiri 80, nilai PWM kanan 100

j. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

k. Jika sensor 3 saja yang lebih besar dari 400 (berada pada garis hitam), nilai PWM kiri 100, nilai PWM kanan 100. l. Keluar dari subroutine dan kembali mengeksekusi

instruksi berikutnya pada program utama.

m. Periksa apakah sensor 2 lebih besar dari 400 (berada pada garis hitam).

n. Jika ya, nilai PWM kiri 100, nilai PWM kanan 50.

o. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

p. Periksa apakah sensor 4 lebih besar dari 400 (berada pada garis hitam).

q. Jika ya, nilai PWM kiri 50, nilai PWM kanan 100.

r. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

s. Jika sensor 2, 3, 4, tidak ada yang lebih besar dari 400 (berada pada garis hitam) Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

4. Kecepatan

Subroutine kecepatan berfungsi member nilai PWM atau member nilai kecepatan motor. Gambar 3.26 memperlihatkan diagram alirsubroutineini.


(69)

Gambar 3.26 Diagram alir subroutine kecepatan

Berikut ini penjelasan diagram alirsubroutinekecepatan: a. Memulai diagram alirsubroutine finish

b. Deklarasi variabel.

c. Inisialisasi pin 4 (kanan) dan nilai PWM yang diwkili oleh variabel rspeed, Inisialisasi pin 5 (kiri) dan nilai PWM yang diwkili oleh variabel lspeed.

d. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

3.3.3.4. Subroutine displayPath

Subroutine ini berfungsi untuk menampilkan data langkah robot setelah disimplifikasi (disederhanakan) pada monitor. Data langkah tersebut disimpan pada sebuah array berupa karakter (L, R, S) yang akan mewakili pergerakan robot pada saat robot melakukan running pada mode ke 2.


(70)

68

Gambar 3.27 Diagram alir subroutine displayPath

Berikut ini penjelasan diagram alirsubroutinekecepatan: a. Memulai diagram alirsubroutine displayPath. b. Deklarasi variabel i.

c. Cetak kalimat “Data Path (“ pada monitor.

d. Cetak nilai yang terdapat pada variabel pathlength pada monitor.

e. Cetak karakter “):” padamonitor.

f. Isi variabel I dengan nilai 0.

g. Periksa apakah nilai variabel i lebih kecil daripada variabel pathlength.


(71)

h. Cetak karakter yang terdapat padaarraypath ke i.

i. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.

3.4. Maket Lapangan

Berikut ini adalah bentuk track yang akan digunakan dengan spesifikasi sebagai berikut:

1. Bentuk track berdimensi 206 cm x 86 cm yang bahannya terbuat dari papan putih.

2. Lebar garisnya 2 cm yang terbuat dari isolasi warna hitam. Gambar 3.25 memperlihatkan miniaturtrackyang digunakan.


(72)

70

BAB IV

PENGUJIAN DAN ANALISA SISTEM

Untuk mengetahui kehandalan dan keberhasilan dari sistem yang dibuat, maka dilakukan pengujian terhadap komponen-komponen pembangun sistem terutama sensor-sensor.

4.1. Pengujian Sistem

4.2.1. Pengujian Sensor Garis

Sensor garis yang digunakan hanya dapat mendeteksi dua warna yaitu hitam dan putih.Outputdari sensor ini adalah berupa tegangan analog, agar sensor dapat berhubungan dengan mikrokontroler diperlukan ADC (Analog to Digital Converter) yang berfungsi untuk mengkonversi output sensor menjadi data digital, dalam hal ini ADC yang digunakan adalah ADC internal yang disediakan oleh mikrokontroler ATmega32, ADC ini merupakan ADC yang memiliki 10 bit konversi data dengan 8 kanal input, untuk mendapatkan data dari ADC menggunakan rumus:

ADC =

...4.1

Hasil pengukuran yang didapat oleh mikrokontroler dapat ditampilkan pada layar monitor, gambar 4.1 merupakan tampilan monitor dari hasil pengukuran yang didapat.


(73)

Gambar 4.1 Tampilan hasil pembacaan sensor terhadap garis

Pengujian dilakukan pada tanggal 26 Mei 2011 pukul 6.43 AM di sebuah ruangan (kamar) yang di dalamnya dipengaruhi oleh cahaya lampu tetapi tanpa ada pengaruh cahaya matahari karena saat diuji di tempat yang dipengaruhi cahaya matahari baik ketika pembacaan warna putih maupun hitam dan pada jarak 5 mm nilai ADC yang terbaca adalah ±50.

Hasil pengujian sensor garis secara keseluruhan terhadap jarak ketika pembacaan warna putih dan hitam terdapat pada tabel 4.1 dan tabel 4.2.

Tabel 4.1 Hasil pengujian sensor terhadap jarak ketika pembacaan warna putih Jarak

(mm)

Nilai ADC Sensor Garis Ketika Baca Putih

S0 S1 S2 S3 S4 S5 S6

2 53 53 61 72 65 55 58

4 53 53 61 58 63 58 63

6 60 56 62 58 65 59 64

8 117 63 63 58 67 59 63

10 410 262 154 71 182 287 345


(74)

72

Tabel 4.2 Hasil pengujian sensor terhadap jarak ketika pembacaan warna hitam Jarak

(mm)

Nilai ADC Sensor Garis Ketika Baca Hitam

S0 S1 S2 S3 S4 S5 S6

2 851 847 913 915 923 861 816

4 826 807 895 863 906 836 802

6 772 747 817 738 850 761 756

8 792 755 843 784 855 761 752

10 870 859 872 832 901 816 858

12 842 834 874 855 860 817 860

Pengujian yang dilakukan hanya sampai pada jarak 12 mm, karena jika diatas 12 mm data pembacaan garisnya tidak terlalu bagus dan sudah tidak bisa membedakan garis hitam dan garis putih.

4.2.2. Pengujian Motor Driver L293D

Pengujian dilakukan pada tanggal 26 Mei 2011 pukul 7.00 PM di sebuah ruangan (kamar) di lintasan track yang terbuat dari kertas duplek berwarna putih dan garis hitam yang terbuat dari selotip.

Pengujian motor driver dilakukan untuk mengetahui tingkat keberhasilan dalam menggerakan dan mengatur putaran motor. Hasil pengujian dapat dilihat pada tabel 4.3.

Tabel 4.3 Hasil pengujian driver motor

Enable IN+ IN- Kondisi Motor Keterangan

0 X X Tidak Berputar Berhasil

1

0 0 Tidak Berputar Berhasil

0 1 Berputar Berhasil

1 0 Berputar Berlawanan Arah Berhasil

1 1 Tidak Berputar Berhasil

Keterangan:

a. Jika enable bernilai nol (Low), maka berapapun inputnya motor tidak akan berputar.

b. Jika enable bernilai satu, maka kondisi motor sesuai dengan inputan. Kondisi motor dapat terlihat pada tabel 4.3.


(1)

84

kurang baik dan mekanik robot yang kurang sesuai dengan luas track yang dirancang.


(2)

BAB V

SIMPULAN DAN SARAN

5.1. Simpulan

Dari pembahasan pada bab-bab sebelumnya, maka akhirnya penelitian pada tugas akhir ini dapat diambil beberapa simpulan antara lain:

1. Berdasarkan tabel 4.1 dan 4.2 luaran dari pembacaan sensor oleh ADC pada warna putih adalah lebih kecil dari 50 dan pada warna hitam lebih besar dari 700, sehingga dapat diambil nilai referensi 400. Dapat disimpulkan bahwa kinerja sensor telah bekerja dengan baik pada lapangan yang digunakan.

2. Berdasarkan tabel 4.3 motordriveryang telah dirancang dapat berfungsi dengan baik karena dapat mengatur arah putaran motor dc dengan benar, tetapi IC L293D akan mengalami panas jika terdapat beban yang besar dari motor dc.

3. Berdasarkan tabel 4.5 sampai 4.12 keberhasilan sistem mencapai 70 . Kegagalan yang terjadi karena sistem kendali robot yang kurang baik.

5.2. Saran

Penulis memberikan saran bagi yang akan mengembangkan tugas akhir ini. Adapun saran dari penulis adalah sebagai berikut:

1. Merancang sistem kendali robot yang lebih cepat dan handal, baik di bagian hardware atau software agar tidak terlalu terpengaruh oleh catu daya.

2. Merancang mekanik robot yang lebih kecil agar dapat menyelesaikan bentuk lapangan yang lebih kecil dan bentuk maze yang lebih rumit secara lincah dan cepat.


(3)

PERANCANGAN SISTEM KENDALI DAN ALGORITMA MOBILE ROBOT UNTUK STUDI KASUS MAZE SOLVING

TUGAS AKHIR

Disusun untuk memenuhi syarat kelulusan pada Program Studi Strata Satu di Jurusan Teknik Komputer

Disusun Oleh:

HILMAN JAKA KUNCARA 10206072

Pembimbing: Agus Mulyana, M.T

Sri Nurhayati, M.T


(4)

DAFTAR PUSTAKA

[1]. Andrianto, H. (2008). Pemrograman Mikrokontroler AVR ATMEGA16 Menggunakan Bahasa C [Code Vision AVR]. Bandung: Informatika Bandung.

[2]. Dewi, S. K.Artificial Intelligence (Teknik dan Aplikasi).

[3]. Iswanto. MIKROKONTROLER AT90S2313 dengan BASIC Compiler.

Penerbit Andi.

[4]. Malvino, A. P. (2003). PRINSIP-PRINSIP ELEKTRONIKA. Jakarta: Salemba Teknika.

[5]. Mulyana, A. (2009).Modul Praktikum Elektronika Lanjut.Bandung. [6]. Suryadhi, T. D.build your own LINE FOLLOWER ROBOT.Penerbit Andi. [7]. Walpole, R. E. (1995). Pengantar Statistika.Jakarta: PT Gramedia Pustaka

Utama.

[8]. ATMEL. Microcontroller with 32K Bytes In-System Programmable Flash.

Diakses 7 Juli 2010, dari www.atmel.com.

[9]. ARDUINO.Arduino. Diakses 7 Juli 2010, dari www.arduino.cc.

[10]. Electronics, E. (20 Juli 2005). Technical Datasheet. Diakses 19 Agustus 2010, dari http://www.everlight.com/upload/product_pdf/PT204_6C.pdf. [11]. light, T. l. Ultra Bright Blue LED Lamp. Diakses 19 Agustus 2010, dari

http://www.theledlight.com/pdf/042004/YM-B_3mm_bu.pdf.

[12] STROTOV. (27 Juli 2010). Sejarah Robot. Diakses 22 September 2010, dari http://www.strov.co.cc/2010/07/sejarah-robot.html.


(5)

KATA PENGANTAR

Bismillahirrahmaannirrahhim, Assalaamu’alaikum Wr.wb.

Segala puji bagi Allah SWT. Pencipta dan pemelihara alam semesta, shalawat serta salam semoga terlimpah bagi Muhammad SAW, keluarga dan para pengikutnya yang setia hingga akhir masa.

Atas rahmat Allah SWT, akhirnya penulis dapat menyelesaikan tugas akhir ini, meskipun proses belajar sesungguhnya tak akan pernah berhenti. Tugas akhir ini sesungguhnya bukanlah sebuah kerja individual dan akan sulit terlaksana tanpa bantuan banyak pihak yang tak mungkin penulis sebutkan satu persatu, namun dengan segala kerendahan hati, penulis mengucapkan terima kasih kepada:

1. Sri Nurhayati, M.T selaku Ketua Jurusan Teknik Komputer Universitas Komputer Indonesia dan dosen pembimbing II.

2. Agus Mulyana, M.T selaku dosen pembimbing I, yang telah banyak membantu penulis selama melaksanakan studi dan menyelesaikan tugas akhir ini.

3. Asep Solih Awalluddin M.Si dan John Adler, M.Si selaku dosen wali. Terima kasih banyak atas bimbingannya selama penulis menjalani masa perkuliahan.

4. Ir. Christianto Tjahyadi selaku managing director NEXT SYSTEM, terima kasih banyak atas bimbingannya.

5. Orang tua, adik dan keluarga besar tercinta yang senantiasa tidak henti-hentinya berdo’a, mencurahkan cinta, kasih sayang, perhatian, nasihat, serta motivasi sehingga penulis dapat menyelesaikan tugas akhir ini. 6. Bapak dan Ibu seluruh staff dosen Jurusan Teknik Komputer yang telah

banyak memberikan ilmu, motivasi dan bantuan kepada penulis.

7. Teman-teman seperjuangan, Santi Noviani, Liling Saputra JM, Bambang Ismoyo Jati, Andriyana Subhan, Hidayat Abdullah, Acep


(6)

Kang Syamsul Syam, Teh Susan. Semua teman-teman di angkatan 2005, 2006 dan 2007. Semua teman-teman asisten laboratorium elektronika yang tidak dapat disebutkan satu persatu.

8. Teman-teman di Majalaya, khususnya kepada Taufik Khairil Anshor , Dadang Wandani, Muksin Nuryadin yang selalu mendukung dan memberi semangat.

9. Teman-teman kosan Vega 2, khususnya Fadhilah dan Tom yang sudah banyak memberi bantuan.

10. Seluruh pihak yang mungkin terlupakan oleh penulis, namun telah banyak membantu penulis. Terima kasih sebanyak-banyaknya.

Akhirnya, penulis berharap semoga penelitian ini menjadi sumbangsih yang bermanfaat bagi dunia ilmu pengetahuan dan teknologi di Indonesia, khususnya disiplin keilmuan yang penulis dalami.

Wassalamu’alikum Wr.Wb.

Bandung, Agustus 2011