Pir Detector

Document Sample
Pir Detector Powered By Docstoc
					PEMBUATAN ROBOT BERODA PEMADAM API MENGGUNAKAN
   NAVIGASI PING))) ULTRASONIC RANGE FINDER DAN
               MAGNETIC COMPASS (Cmps03)




                        TUGAS AKHIR




             Diajukan Sebagai Salah Satu Syarat Untuk

    Menyelesaikan Pendidikan Di Program Studi Teknik Komputer

                   Jurusan Teknologi Informasi




                               Oleh

                        Achmad Suryono
                        NIM D3 407 003




      KEMENTERIAN PENDIDIKAN NASIONAL

            POLITEKNIK NEGERI JEMBER

                              2010
             KEMENTERIAN PENDIDIKAN NASIONAL
                  POLITEKNIK NEGERI JEMBER



 PEMBUATAN ROBOT BERODA PEMADAM API MENGGUNAKAN
    NAVIGASI PING))) ULTRASONIC RANGE FINDER DAN
             MAGNETIC COMPASS (Cmps03)


                 Telah Diuji pada Tanggal: 28 Juni 2010
                  Telah Dinyatakan Memenuhi Syarat

                               Tim Penguji :

                       Ketua




                     Denny Wijanarko, ST
                     N I P. 19780908 200501 1 001

Anggota                              Anggota




Adi Heru Utomo, S.Kom. M.kom         Yogiswara, ST
N I P. 19711115 199802 1 001         NIP. 19700929 200312 1 001



Mengesahkan,                         Menyetujui :
Direktur Politeknik Negeri Jember    Ketua Jurusan Teknologi Informasi




Ir.H. Asmuji, MM                     Wahyu Kurnia Dewanto, S.Kom
NIP. 19560222 198811 1 001           NIP. 19710408 200112 1 003




                                    ii
                      PERSEMBAHAN


     Karyaku ini kupersembahkan kepada            :

 ALLAH SWT. yang telah melimpahkan begitu banyak nikmat
   dan karunianya untukku, sehingga hamba-Mu ini dapat
   menyelesaikan Tugas Akhir beserta Laporannya dengan
                    sukses….. Amieen.

   Kedua orang tuaku yang selama ini sudah merawat aku
sampai sekarang, terima kasih atas segala perhatian dan
        kasih sayang serta dukungannya selama ini
           Dan telah membiayai Q sampek kuliah.

 Mbk nanik dan mbk hos yang udah jadi pendamping hidupku
sebagai saudara, terima kasih buat do’a dan dukungannya,
           Semoga semua sukses di masa depan..

 Terima kasih ma mas usup yang sudah memberikan nasihat,
                     dan doa kepadaq

              Terima kasih pada Ulya Zakiya
     kamu dah hadir dan menjadi bagian dalam hidup Q
      terima kasih atas do’a, semua dukungan darimu
                     I Love U 4 ever

                  Keluarga Besar Robotika
                      Team ROBOT IR64
   Deaddie (gocel), Chandra (Vespa), Dhidy (du2nk), Rian,
obonk,tahol dan aris terima kasih sudah menemani q, semua
 bantuannya dan masukannya walaupun seperti penjara Iman.
Trim’s to himawan meskipun satu2nya team rbt yg baru
tetep semangat trskan perjuangan kami y.
   Temen-temen seperjuangan yang udah aku anggep seperti
 saudara sendiri aan (om), Bambang, guntur(kribo), itok,
     dan masih banyak lagi yang ga bisa disebutin satu
 persatu.... Terima kasih atas segala bantuannya dan maaf
                jika aku sering merepotkan.

   Mas ali murtadlo sebagai pembimbing baru yang sudah
 ngajari q bahasa C n komunikasi serial makasaih banget
             mas lanjutkan y ilmu robotikanya
  Temen2 alumni 2005 dan 2006 makasih dah banyak kasih
 masukan & bantuin aku mas wawan (p.e), mas wa2n(ca2k),
 nges , aziez & khusus for Ucok (danny), makasih banget
                   atas ilmunya........




                           iii
Bapak Beni Widiawan S.ST selaku dosen pembimbing Terima
     kasih Atas Segala Ilmunya robotnya yang sangat
       bermanfaat, terima kasih buat bimbingan dan
 kesabarannya,terima kasih telah memberikan kobaran api
                   semangat buwat aku.
  Jangan bosan-bosan ya Pak ama anak-anak TKK dan juga
 sabar terus ngadepin anak-anak TKK. Smangat...!!! buat
                     IR64 sukses lagi


  Bapak Nurul Zainal Fanani S.ST Terima kasih banyak
buanget.... atas ide-ide dan Bimbingannya dalam bidang
                     elektronika.

Dosen-dosen TKK yang laen juga makasih buat dukungannya,
Khususnya buat p.yogi,bu nanik(bunda) dan p.aji, makasih
           banget udah support aq terus......

                 Almamaterku tercinta.




                           iv
                             SURAT PERNYATAAN


       Saya yang bertanda tangan di bawah ini:
Nama : Achmad Suryono
NIM    : D3 407 003
Menyatakan dengan sebenar-benarnya bahwa segala pernyataan dalam Tugas Akhir Saya
yang berjudul PEMBUATAN ROBOT BERODA PEMADAM API ENGGUNAKAN
NAVIGASI PING))) ULTRASONIC RANGE FINDER DAN MAGNETIC
COMPASS (Cmps03) merupakan gagasan dan hasil karya Saya sendiri dengan arahan
komisi pembimbing, dan belum pernah diajukan dalam bentuk apapun pada perguruan
tinggi manapun.
       Semua data dan informasi yang digunakan telah dinyatakan secara jelas dan dapat
diperiksa kebenarannya. Sumber informasi yang berasal atau dikutip dari karya yang
diterbitkan dari penulis lain telah disebutkan dalam naskah dan dicantumkan dalam
Daftar Pustaka di bagian akhir Tugas Akhir ini.



Jember, 28 Juni 2010




Achmad Suryono
NIM D3 407 003




                                           v
                                     ABSTRAK

Robot Pemadam Api dibuat untuk membantu manusia dalam mengerjakan pekerjaan
yang berbahaya. Robot ini berfungsi sebagai pencari sumber api dan kemudian
memadamkannya. Proses pencarian sumber api dengan cara memeriksa tiap ruangan
apakah terdapat sumber api atau tidak. Proses pencarian titik api dilakukan dengan
mendeteksi pancaran sinar Ultraviolet yang dipancarkan api dengan menggunakan
sensor pendeteksi sinar ultraviolet. Dalam melakukan         pencarian ruangan robot
menggunakan sensor Ultrasonic untuk memandu navigasi robot dalam pencarian
rungan, menghindari halangan, memandu arah gerak dan untuk kembali ke tempat
asal robot diberangkatkan. Diharapkan dengan proses penelitian di atas dapat
membuat robot otomatis untuk menyelesaikan beberapa tugas yang diambil dari tema
Kontes Robot Cerdas Indonesia 2010, yaitu “Robot Cerdas Pemadam Api”.


Kata kunci: Robot Beroda, Sensor, Motor DC

                                     ABSTRACT

Fire Extinguisher robot designed to assist humans in dangerous work. This robot
serves as a search and then extinguish the fire source. The process of finding the
source of fire by checking every room whether or not there is a source of fire. Search
process conducted by detecting hotspots Ultraviolet rays emitted by the fire by using
ultraviolet light detection sensor. In conducting the search space robot uses ultrasonic
sensors to guide robots in the search navigation struggle, avoid obstacles, guiding the
direction of motion and to return to their place of robots dispatched. It is expected
that with the above research process can create an automated robot to accomplish
several tasks taken from the theme of Intelligent Indonesian Robot Contest 2010,
namely            "Intelligent          Robot             Fire           Extinguisher."


Keywords: Robot on wheels, sensors, DC motors



                                           vi
                                    RINGKASAN


       Achmad Suryono, Jurusan Teknologi Informasi Politeknik Negeri Jember, 28 Juni
2010. PEMBUATAN ROBOT BERODA PEMADAM API MENGGUNAKAN
NAVIGASI PING))) ULTRASONIC RANGE FINDER DAN MAGNETIC COMPASS
(Cmps03). Komisi Pembimbing, Ketua: Beni Widiawan,S.ST, Anggota: Nurul Zainal
Fanani,S.ST.
       Robot pemadam api ini mampu bernavigasi di area yang nyata di mana robot
sendiri belum mengerti bentuk dari area tersebut. Untuk mengetahui dan mudah
bernavigasi di area itu robot di lengkapi dengan sensor ultrasonik, UVTron dan kompas.
Dimana sensor-sensor tersebut telah di pasang pada badan robot. Untuk sensor UVTron
khususx harus di tempatkan pada bagian paling atas supaya mudah mengetahui bahwa di
ruangan tersebut ada atau tidak sumber api pada ruangan tersebur. Untuk pemadam api
sendiri menggunakan kipas atau fan disini tidak menggunakn air. Sedangkan sensor
ultrasonik sendiri di pasang pada sisi depan dan samping kiri dan kanan pada badan robot
agar dapat mengetahui bahwa di depan atau samping ada halangan. Pada robot ini di
lengkapi juga denagn Sound Activation yang di gunakan sebagai pengaktifan robot.
Sedangkan kontroler yang igunakan adalah ATmega 8535 pada bagian robot ini terdapat
dua kontroler yang digunakan untuk kontroler yang pertama (Slave) digunakan sebagai
inputan dari sensor Sound Activation dan ultrasonik dan sebagai output pada LCD dan
mikrokontroler kedua (Master). Untuk mikrkontrler yang kedua (Master) sendiri di
gunakan sebagai komunikasi serial mikrokontroler yang pertama (Slave) dan input dari
Sound Acivation.Untuk output sendiri hanya        untuk menggerakkan motor motor.
Sedangkan untuk LCD digunakan mempermudah si pembuat untuk melihat nilai ADC
sensor dan mengetahui apakah benar ada api atau tidak. Robot ini akan aktif apabila
sudah mendapatkan input dari Sound Activation maka robot akan bergerak dan berjalan
untuk mencari sumber api dan akan memadamkannya dengan menggunakan kipas atau
fan.




                                          vii
                               KATA PENGANTAR

     Segala puja dan puji syukur kehadirat Allah SWT, yang telah melimpahkan rahmat
dan hidayah-Nya kepada seluruh makhluk-Nya dan hanya atas ijinNya Proyek Tugas
Akhir ini dapat terselesaikan sampai pelaksanaan pembuatan laporan dengan judul “
PEMBUATAN         ROBOT      BERODA       PEMADAM            API   MENGGUNAKAN
NAVIGASI PING))) ULTRASONIC RANGE FINDER DAN MAGNETIC
COMPASS (Cmps03)”. Pelaksanaan Proyek Tugas Akhir ini merupakan salah satu
syarat kelulusan dari Politeknik Negeri Jember, khususnya Program Studi Teknik
Komputer. dan rasa terima kasih diucapkan kepada seluruh pihak yang telah membantu
pelaksanaan dan pembuatan laporan Tugas Akhir Yang meliputi :
1. Direktur Politeknik Negeri Jember.
2. Ketua Jurusan Teknologi Informasi Politeknik Negeri Jember.
3. Ketua Program Studi Teknik Komputer Politeknik Negeri Jember
4. Dosen Pembimbing Tugas Akhir
5. Koordinator Tugas Akhir
6. Teknisi Program Studi Teknik Komputer yang telah banyak membantu.
7. Seluruh Staf Jurusan dan Program Studi teknik komputer.
8. Rekan-rekan seperjuangan yang telah bekerja sama.
     Penulis berupaya menyelesaikan Laporan ini sebaik-baiknya, namun segala bentuk
kekurangan yang ada senantiasa mengharapkan saran dan kritik dari pembaca. Semoga
laporan ini memberikan manfaat, Amin.




                                                       Jember, 28 Juni 2010


                                                       Penulis




                                        viii
                                                 DAFTAR ISI

                                                                                                          Halaman
HALAMAN JUDUL ........................................................................................... i
HALAMAN PENGESAHAN ............................................................................ ii
HALAMAN PERSEMBAHAN ........................................................................ iii
SURAT PERNYATAAN ................................................................................... v
ABSTRAK......................................................................................................... vi
RINGKASAN................................................................................................... vii
KATA PENGANTAR..................................................................................... viii
DAFTAR ISI ..................................................................................................... ix
DAFTAR GAMBAR........................................................................................ xii
DAFTAR TABEL ........................................................................................... xiv
DAFTAR LAMPIRAN .................................................................................... xv

BAB 1. PENDAHULUAN
        1.1 Latar Belakang................................................................................... 1
        1.2     Perumusan Masalah ........................................................................... 2
        1.3     Batasan Masalah ................................................................................ 2
        1.4     Tujuan................................................................................................ 2
        1.5     Manfaat.............................................................................................. 3

BAB 2. TINJAUAN PUSTAKA
        2.1     Kontes Robot Cerdas Indonesia (KRCI) ............................................. 4
        2.2     Modul Mikrokontroler AVR Atmega 8535........................................ 5
        2.3     Motor DC......................................................................................... 11
                2.3.1 Teori Motor DC ...................................................................... 11
                2.3.2 Bagian Motor DC.................................................................... 12
        2.4     Driver Motor.................................................................................... 13
       2.5     CMPS03 Modul Magnetic Compass ................................................. 15
       2.6     Sensor Ultrasonik ............................................................................. 16
       2.7     Sensor Uvtron................................................................................... 17
       2.8     LCD 2x16......................................................................................... 20


                                                          ix
   2.9    Codevision AVR C Compiler ........................................................... 21

BAB 3. METODE PENELITIAN
   3.1 Tempat Dan Waktu Penelitian............................................................ 25
   3.2 Bahan dan Alat yang Digunakan. ....................................................... 25
         3.2.1 Bahan....................................................................................... 25
         3.2.2 Alat ......................................................................................... 26
   3.3 Metode Penelitian .............................................................................. 26
         3.3.1 Metode Kepustakaan ................................................................. 27
         3.3.2 Perancangan Alat ...................................................................... 27
         3.3.3 Perancangan Perangkat Lunak................................................... 28
         3.3.4 Pengujian Alat........................................................................... 28
         3.3.5 Analisis Data............................................................................. 28
         3.3.5 Dokumentasi ............................................................................. 28
BAB 4. HASIL DAN PEMBAHASAN
   4.1 Perancangan Alat ............................................................................... 29
         4.1.1 Konfigurasi Sistem.................................................................... 29
         4.1.2 Perancangan dan Pembuatan Mikrokontroler............................. 30
         4.1.3 Rangkaian Clock Generator ...................................................... 31
         4.1.4 Perancangan Catu Daya............................................................. 32
         4.1.5 Perancangan Interfacing I/O ...................................................... 33
   4.2 Perancangan dan Pembuatan Perangkat Masukan (input) ................... 35
         4.2.1 Perancangan dan Pembuatan Sensor Ultrasonik ........................ 35
         4.2.2 Perancangan dan Pembuatan Kompas Elektronik ...................... 39
         4.2.3 Perancangan dan Pembuatan Uvtron ......................................... 43
         4.2.4 Perancangan dan Pembuatan Sound Aktifasi............................. 44
         4.2.5 Perancangan dan Pembuatan Sensor Garis ................................ 46
   4.3 Perancangan dan Pembuatan Perangkat Keluaran (output).................. 47
         4.3.1 Driver motor DC ....................................................................... 47
         4.3.2 Modul LCD 2*16 ...................................................................... 48
         4.3.3 Driver Motor Dc untuk Kipas.................................................... 49
   4.4 Perancangan Sistem Kontrol dan Mekanik ......................................... 49

                                                    x
              4.4.1 Sistem kontrol keseluruhan........................................................ 49
              4.4.2 Perancangan dan Pembuatan Mekanik....................................... 51
       4.5 Perancangan Perangkat Lunak ............................................................ 53
             4.5.1 Berjalan Mengikuti Dinding Kanan atau Dinding Kiri ............... 53
             4.5.2 Scanning Lilin ........................................................................... 55
       4.6 Pengujian Alat dan analisa.................................................................. 56
             4.6.1 Pengujian Perangkat Masukan ................................................... 57
             4.6.2 Pengujian Perangkat keluaran .................................................... 68
        4.7 Pengujian Strategi dan Algoritma........................................................ 75
             4.7.1 Pengujian berjalan mengikuti dinding kanan dan kiri.................. 75
             4.7.2 Pengujian Scanning Lilin............................................................ 76
        4.8 Pengujian Sistem secara keseluruhan ................................................. 78

BAB 5. PENUTUP
       5.1 Kesimpulan ......................................................................................... 80
       5.2 Saran ................................................................................................... 80
DAFTAR PUSTAKA ..................................................................................... 81
LAMPIRAN ..................................................................................................... 82




                                                         xi
                                           DAFTAR GAMBAR
                                                                                                          Halaman
2.1 Lapangan KRCI ......................................................................................             5
2.2 Skema ATmega 8535 ..............................................................................                 6
2.3 Konfigurasi pin pada mikrokontroler AVR ATMega 8535 ......................                                       8
2.4 IC Mikrokontroller Atmega 8535 ............................................................ 10
2.5 Motor DC........................................................................................................ 11
2.6 Kumparan Motor DC .............................................................................. 13
2.7 Struktur H-Bridge ................................................................................... 14
2.8 Magnetic Compas ................................................................................... 15
2.9 Prinsip Kerja Sensor Ultrasonic............................................................... 16
2.10 Prinsip Pemantulan Gelombang Ultrasonik ............................................. 17
2.11 Sudut Jangkauan UVTron ....................................................................... 18
2.12 UVTron dengan modul C3704 ................................................................ 18
2.13 Uvtron Dengan Pelindung....................................................................... 19
2.14 Pin IO C3704.......................................................................................... 19
2.15 LCD ....................................................................................................... 21
2.16 Pemilihan Chip Dan Frekwensi Xtall Yang Digunakan........................... 21
2.17 Inisialisasi port I/0 .................................................................................. 22
2.18 Tampilan program inisialisasi port I/0..................................................... 22
2.19 Inisialisasi Timer0 .................................................................................. 23
2.20 Vektor interupt Timer0............................................................................ 23
2.21 Inisialisai Enable Interupt Timer ............................................................ 24
2.22 Inisialisai I2C ......................................................................................... 24
2.23 Tampilan Program I2C............................................................................ 24
3.1     Metode Penelitian ................................................................................... 27
4.1 Blok Diagram Sistem Robot.................................................................... 29
4.2     Blok Diagram Sistem Sensor Robot........................................................ 30
4.3     Koneksi Kabel STK 200 ......................................................................... 31
4.4 Rangkaian Osilator.................................................................................. 32
4.5     Rangkaian Regulator ............................................................................... 32



                                                         xii
4.6     Komunikasi Antara 2 Mikrokontroler ..................................................... 34
4.7     PING))) Ultrasonic Range Finder............................................................ 35
4.8     Skematik Rangkaian Ping))) Ultrasonic Range Finder............................. 36
4.9     Flowchart Kontrol Sensor Ultrasonik...................................................... 37
4.10 Program Scanning Sebuah Sensor Ultrasonik.......................................... 37
4.11 Lebar Pulsa Ultrasonik ............................................................................ 38
4.12 Modul Kompas Elektronik ...................................................................... 39
4.13 Skematik Kompas Elektronik .................................................................. 39
4.14 Diagram Waktu I2c ................................................................................. 40
4.15 Program I2c Pembacaan Data Compas .................................................... 41
4.16 Program Belok Robot Menggunakan Compas ......................................... 41
4.17 Flowchart Belok Menggunakan Compas ................................................. 42
4.18 Hamamatsu Uvtron ................................................................................. 43
4.19 Pemasangan Jumper Dan Capasitor......................................................... 43
4.20 koneksi UVTron ke Mikrokontroler ........................................................ 44
4.21 Blok diagram pemancar sound aktifation................................................. 45
4.22 Ic Lm555 Sebagai Pulse Generator.......................................................... 45
4.23 Penerima Sound Actifation...................................................................... 45
4.24 Schematic Sensor Pembaca Garis ............................................................ 46
4.25 Driver Motor Menggunakan L298N ........................................................ 47
4.26 LCD 2 x 16 ............................................................................................. 48
4.27 Skematik Rangkaian LCD ....................................................................... 48
4.28 Skematik Rangkaian Driver Motor Tip 31............................................... 49
4.29 Skema Kontrol Elektronik Robot Penghindar .......................................... 50
4.30 Desain Robot .......................................................................................... 51
4.31 Posisi Sensor Ultrasonik.......................................................................... 52
4.32 Bentuk Roda Dengan Belt ....................................................................... 52
4.33 Flowchart Scaning Dan Pemadam Api .................................................... 56
4.34 Diagram Blok Pengujian Sensor Ultrasonic............................................. 58
4.35 Grafik Data Ultrasonik Terhadap Jarak Dengan Benda............................ 60
4.36 Diagram Blok Pengujian Kompas............................................................ 61




                                                     xiii
4.37 Diagram Blok Pengujian Uvtron ............................................................. 64
4.38 Pengujian Posisi Lilin Terhadap Flame Detektor ..................................... 64
4.39 Diagram Blok Pengujian Sound Activation ............................................. 66
4.40 Sensor Mengenai Garis Hitam................................................................ 67
4.41 Sensor Mengenai Garis Putih ................................................................. 68
4.42 Blok Diagram Pengujian L298N ............................................................. 69
4.43 Diagram Blok Pengujian LCD................................................................. 72
4.44 Tampilan Data Sensor Ultrasonic Dan Sound Activation......................... 72
4.45 Tampilan Data Sensor Uvtron Dan Compass........................................... 73
4.46 Diagram Blok Pengujian Driver Motor Kipas.......................................... 73
4.47 Blok Diagram Pengujian Motor Servo..................................................... 74
4.48 Pergerakan Robot Pada Belokan 90º........................................................ 76
4.49 Posisi Lilin.............................................................................................. 76
4.50 Arena Pengujian Robot ........................................................................... 78




                                                      xiv
                                         DAFTAR TABEL
                                                                                                  Halaman
2.1    Fungsi Pin Pada Port B ...........................................................................   9
2.2    Fungsi Pin Pada Port D........................................................................... 10
2.3    Operasi H-Bridge.................................................................................... 14
2.4    Fungsi Pin-Pin Lcd ................................................................................. 20
4.1    Input Ultrasonik us1 dan 2 Terhadap Pergerakan Motor.......................... 54
4.2    Input Data Ultrasonic Untuk Menghindar ............................................... 55
4.3 Data jarak sensor ultrasonik .................................................................... 59
4.4 Data Posisi Kompas ................................................................................ 62
4.5 Data Posisi Kompas Setelah Kalibrasi ..................................................... 63
4.6 Data Jenis Suara...................................................................................... 66
4.7 Hasil Pengukuran Tegangan Sensor Garis ............................................... 68
4.8 Data Input Untuk Motor Driver L298N ................................................... 70
4.9 Hasil Percobaan Pada Lintasan Lurus...................................................... 75
4.10 Hasil percobaan belokan 90 º................................................................... 75
4.11 Hasil percobaan scanning lilin................................................................. 77
4.12 Hasil Percobaan Pemadaman Lilin .......................................................... 79




                                                     xv
                                         DAFTAR LAMPIRAN


                                                                                                        Halaman
1. Program Mikrokontroler Slave ..................................................................... 83
2. Program Mikrokontroler Master................................................................... 92
3. Foto Robot................................................................................................... 108
4. Datasheet Ultrasonik .................................................................................... 109
5. Datasheet Magnetic Compass....................................................................... 115
6. Profil Penulis ............................................................................................... 120




                                                        xvi
                           BAB 1. PENDAHULUAN



1.1 Latar Belakang
     Dewasa ini perkembangan robot semakin pesat, bahkan robot bukanlah
benda yang hanya diam dan melakukan rutinitas sesuai program yang ditentukan
oleh pembuatnya. Kehadiran robot dalam kehidupan manusia makin hari makin
banyak manfaatnya. Robotik tidak lagi dipandang sebagai ilmu yang berkembang
hanya dalam konteks teknologi yang berupa fisik       saja, namun semakin hari
semakin banyak masalah yang berkaitan dengan lingkungan hidup manusia yang
perlu diambil perhatian.
       Robot berkembang berawal dari aplikasi-aplikasi di industri dalam struktur
lingkungan yang lebih dikondisikan sebagai kawasan pabrik, sehingga robot lebih
banyak didesain dalam bentuk relatif khas sesuai dengan kebutuhan pabrik, seperti
manipulator, dan kebanyakan tidak bersifat mobile atau otonomous. Namun
kehadiran robot dilingkungan yang bersifat lebih fleksibel, seperti misalnya rumah
sakit, rumah tangga, perkantoran, eksplorasi hutan, dan pembangunan kawasan-
kawasan berbahaya (plant nuklir, kimia, dsb), telah mebuat manusia harus menata
ulang definisi, konstruksi dan fungsi robot. Keadaan ini telah menempatkan robot
sebagai bagian dari kehidupan keseharian sehingga dikenal dengan istilah human-
robot interaction.
       Salah satu cara menambah tingkat kecerdasan sebuah robot adalah dengan
menambah sensor pada robot tersebut. Tulisan ini memaparkan salah satu sudut
teknologi robotika yaitu teknologi robot yang memiliki kemampuan menghindari
rintangan (obstacle avoidance robot). Kemampuan menghindari rintangan dapat
diberikan pada sebuah robot dengan berbagai cara seperti menggunakan kamera
atau menggunakan detektor rintangan.
       Penggunaan kamera sebagai sensor akan meningkatkan kemampuan robot
untuk menentukan posisi sebuah obyek. Namun penggunaan kamera dengan
sistem pengolahan citra secara digital akan menambah beban komputasi bagi




                                        1
                                                                              2




mikrokontroler sehingga kemampuan robot mengalami penurunan pada sisi yang
lain seperti pada kecepatan proses.
         Perancangan Rekayasa alat ini memaparkan penggunaan PING)))
Ultrasonic Range Finder sebagai detector rintangan dalam pengendalian sebuah
motor yang terpasang pada roda robot. Dan Magnetic Compass (Cmps03) sebagai
penentu arah robot saat bernavigasi pada kondisi yang sebenarnya, dimana kondisi
lingkungan selalu berubah dan belum dipetakan sebelumnya.

1.2      Perumusan Masalah
         Berdasarkan latar belakang tersebut, maka dapat diambil perumusan
masalah sebagai berikut:
1.     Bagaimana merancang           /   mendesain   robot pemadam api dengan
       menggunakan PING))) Ultrasonic Range finder dan Magnetic Compas
       (Cmps03) sebagai navigasi robot Sesuai Rule KRCI 2010
2.     Bagaimana memberikan perintah atau program kepada robot agar robot
       berjalan secara otomatis, menghindari halangan dan dapat memadamkan api.

1.3 Batasan Masalah
       Berdasarkan permasalahan diatas dapat dibuat suatu batasan masalah dalam
pembuatan proyek akhir ini. Batasan masalah yang dimaksud di antaranya :
1. Robot hanya dapat mendeteksi keberadaan rintangan yang ketinggiannya lebih
      tinggi dari posisi sensor ultrasonik.
2. Robot ini tidak dapat merekam posisi sebelumnya.
3. Pengujian robot dilakukan pada area dengan ukuran 248 cm x 248 cm x 30 cm
      di mana terdapat 4 ruang dengan posisi pintu acak.

1.4 Tujuan
       Adapun tujuan dari pembuatan tugas akhir ini adalah:
1.     Mampu merancang suatu sistem kendali navigasi robot pemadam api sesuai
        rule KRCI
2.     Mampu mengaplikasikan salah satu sensor PING))) Ultrasonic Range
       Finder ke dalam bentuk suatu sistem kendali otomatis.
                                                                        3




3.    Mampu mengaplikasikan Magnetic Compass (Cmps03) ke dalam bentuk
      suatu sistem kendali otomatis.
4.    Mengimplementasikan hasil rancangan suatu sistem kendali otomatis ke
      dalam bentuk teknologi sederhana yang bernilai guna.

1.5   MANFAAT
1. Manfaat Teknis
       •   Membantu / mempermudah tugas manusia untuk memadamkan api
           yang tidak dapat dijangkau oleh manusia.
       •   Kemampuan fleksibilitas dari perancangan sistem yang dapat di-
           aplikasikan pada sistem kendali yang nyata.
2. Manfaat Ekonomi
       •   Teknologi terapan yang memiliki nilai jual.
                         BAB 2. TINJAUAN PUSTAKA




2.1   Kontes Robot Cerdas Indonesia (KRCI)
      Kontes robot ini diadakan bertujuan untuk mengembangkan dan
meningkatkan kreatifitas mahasiswa din perguruan tinggi dalam pengembangan
dan penggunaan sistem kontrol yang lebih maju pada rancangan robot. KRCI ini
dibagi menjadi tiga divisi yaitu
1.    Divisi Beroda:
      Suatu divisi dimana robot menggunakan roda sebagai alat geraknya dengan
misi mencari dan memadamkan api pada arena lapangan. Pada divisi ini yang
diutamakan adalah kecepatan dan kemampuan robot dalam bernavigasi dan
bermanuver dalam mencari dan memadamkan api di suatu arena dengan peta
tertentu. Tim yang berhasil menemukan dan memadamkan api tercepat dinyatakan
sebagai pemenang.
2.    Divisi Berkaki:
      Sama halnya dengan Divisi Senior Beroda, hanya saja robot menggunakan
kaki sebagai alat geraknya.
3.    Divisi Battle:
      Divisi ini mempertandingkan 2 tim robot yang masing-masing terdiri dari 2
robot disatu arena. Pertandingan bertujuan mencari bola, membawa dan
memasukkannya kedalam suatu wadah. Tim yang memasukkan bola terbanyak
dan tercepat dinyatakan sebagai pemenang. Divisi ini merupakan peleburan dari 2
divisi tahun sebelumnya yaitu divisi expert single dan divisi Expert Battle.
      Format aturan pertandingan dalam KRCI dipilih dari aturan kontes robot
sejenis yang telah diselenggarakan secara teratur di negara maju yaitu Intelligent
Fire-Fighting Robot Contest yang diselenggarakan oleh Trinity College, Hartford,
Connecticut, Amerika Serikat dan telah berlangsung lebih dari empat belas tahun.
Dimana membuat suatu sistem dalam bentuk desain robot cerdas yang harus
menemukan dan memadamkan api lilin yang diletakkan dalam suatu bentuk




                                         4
                                                                               5



lapangan menyerupai bangunan rumah tinggal. Berikut lapangan tempat robot
KRCI bertanding:




                           Gambar 2.1 Lapangan KRCI


2.2   Modul Mikrokontroler AVR Atmega 8535
      Modul mikrokontroler terdiri dari dua komponen utama, yaitu             IC
Mikrokontroler AVR       Atmega 8535 serta downloader mikrokontroler untuk
mendownload program pada IC.
      Mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan
dan keluaran (I/O) serta kendali dengan program yang bisa ditulis dan dihapus
dengan cara khusus, cara kerja mikrokontroler sebenarnya membaca dan menulis
data. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk
mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya.
Secara harfiahnya bisa disebut "pengendali kecil" dimana sebuah sistem
elektronik   yang   sebelumnya     banyak    memerlukan    komponen-komponen
pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya
terpusat serta dikendalikan oleh mikrokontroler ini.
      Sedangkan Mikrokontroler AVR merupakan mikrokontroler berbasis
arsitektur RISC 8 Bit, sehingga semua instruksi dikemas dalam kode 16-bit (16-
bits word) dan sebagian besar instruksi dieksekusi dalam satu siklus instruksi
                                                                               6



clock. Dan ini sangat membedakan sekali dengan instruksi MCS-51 (Berarsitektur
CISC) yang membutuhkan siklus 12 clock. RISC adalah Reduced Instruction Set
Computing sedangkan CISC adalah Complex Instruction Set Computing. AVR
dikelompokkan kedalam 4 kelas, yaitu ATtiny, keluarga AT90Sxx, keluarga
ATMega, dan keluarga AT86RFxx. Dari kesemua kelas yang membedakan satu
sama lain adalah ukuran onboard memori, on-board peripheral dan fungsinya.
Dari segi arsitektur dan instruksi yang digunakan mereka bisa dikatakan hampir
sama. Berikut minimum system ATmega 8535:




Sumber : Heryanto, Ary dan Wisnu, Adi. 2008. pemrograman Bahasa C untuk
Mikrokontroler ATMEGA8535. Yogyakarta : Andi

                          Gambar 2.2 Skema ATmega 8535

1.    Arsitektur Mikrokontroler ATMega 8535 adalah sebagai berikut:
     a. Saluran IO sebanyak 32 buah, yaitu Port A, Port B, Port C dan Port D
     b. ADC 10 bit sebanyak 8 Channel
     c. Tiga buah timer / counter
     d. 32 register
     e. Watchdog Timer dengan oscilator internal
     f. SRAM sebanyak 512 byte
     g. Memori Flash sebesar 8 kb
     h. Sumber Interrupt internal dan eksternal
     i. Port SPI (Serial Pheriperal Interface)
     j. EEPROM on board sebanyak 512 byte
     k. Komparator analog
                                                                           7



l. Port USART (Universal Synchronous Asynchronous Receiver Transmitter)
2. IC mikrokontrler ATMega8535 juga memiliki fitur- fitur antara lain:

   a. Sistem processor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz.

   b. Ukuran memory flash 8KB, SRAM sebesar 512 byte, EEPROM sebesar
       512   byte.

   c. ADC internal dengan resolusi 10 bit sebanyak 8 channel

   d. Port komunikasi serial USART dengan kecepatan maksimal 2.5 Mbps

   e. Mode Sleep untuk penghematan penggunaan daya listrik

3. Konfigurasi Pin ATMega8535
   a. VCC merupakan Pin yang berfungsi sebagai pin masukan catu daya
   b. GND merupakan Pin Ground
   c. Port A (PA0...PA7) merupakan pin I/O dan pin masukan ADC
   d. Port B (PB0...PB7) merupakan pin I/O dan pin yang mempunyai fungsi
       khusus yaitu Timer/Counter, komparator Analog dan SPI
   e. Port C (PC0...PC7) merupakan port I/O dan pin yang mempunyai fungsi
       khusus, yaitu komparator analog dan Timer Oscillator
   f. Port D (PD0...PD1) merupakan port I/O dan pin fungsi khusus yaitu
       komparator analog dan interrupt eksternal serta komunikasi serial
   g. Reset merupakan pin yang digunakan untuk mereset mikrokontroler
   h. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal
   i. AVCC merupakan pin masukan untuk tegangan ADC
   j. AREF merupakan pin masukan tegangan referensi untuk ADC
                                                                                     8




      Gambar 2.3 Konfigurasi pin pada mikrokontroler AVR ATMega 8535

Keterangan Pin ATMega 8535
1.   Port A
     Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan
internal pull-up resistor (dapat diatur per bit). Output buffer Port A dapat memberi
arus 20 mA dan dapat mengendalikan display LED secara langsung. Data
Direction Register Port A (DDRA) harus diatur terlebih dahulu sebelum Port A
digunakan. Bit-bit DDRA diisi 0 jika ingin memfungsikan pin-pin port A yang
bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, kedelapan
pin port A juga digunakan untuk masukan sinyal analog bagi A/D converter.

2.   Port B
     Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan
internal pull-up resistor (dapat diatur per bit). Output Buffer Port B dapat
memberi arus 20 mA dan dapat mengendalikan display LED secara langsung.
Data Direction Register port B (DDRB) harus diatur terlebih dahulu sebelum Port
B digunakan. Bit-bit DDRB diisi 0 jika ingin memfungsikan pin-pin port B yang
bersesuaian sebagai input, atau diisi 1 jika sebagai output. Pin-pin port B juga
memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam
tabel berikut.
                                                                                   9



Tabel 2.1 Fungsi Pin Pada Port B

       Port Pin                          Fungsi Khusus

          PB0      T0 = timer/counter 0 external counter input

          PB1      T1 = timer/counter 0 external counter input

          PB2      AIN0 = analog comparator positive input

          PB3      AIN1 = analog comparator negative input

          PB4      SS = SPI slave select input

          PB5      MOSI = SPI bus master output / slave input

          PB6      MISO = SPI bus master input / slave output

          PB7      SCK = SPI bus serial clock


3.    Port C

     Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan
internal pull-up resistor (dapat diatur per bit). Output buffer Port C dapat memberi
arus 20 mA dan dapat mengendalikan display LED secara langsung. Data
Direction Register port C (DDRC) harus diatur terlebih dahulu sebelum Port C
digunakan. Bit-bit DDRC diisi 0 jika ingin memfungsikan pin-pin port C yang
bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, dua pin port
C (PC6 dan PC7) juga memiliki fungsi alternatif sebagai oscillator untuk
timer/counter.

4.    Port D

      Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan
internal pull-up resistor (dapat diatur per bit). Output buffer Port D dapat memberi
arus 20 mA dan dapat mengendalikan display LED secara langsung. Data
Direction Register port D (DDRD) harus diatur terlebih dahulu sebelum Port D
                                                                                  10



digunakan. Bit-bit DDRD diisi 0 jika ingin memfungsikan pin-pin port D yang
bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port
D juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat
dalam tabel berikut.

Tabel 2.2 Fungsi Pin Pada Port D

       Port Pin                        Fungsi Khusus

          PD0     RDX (UART input line)

          PD1     TDX (UART output line)

          PD2     INT0 ( external interrupt 0 input )

          PD3     INT1 ( external interrupt 1 input )

          PD4     OC1B (Timer/Counter1 output compare B match output)

          PD5     OC1A (Timer/Counter1 output compare A match output)

          PD6     ICP (Timer/Counter1 input capture pin)

          PD7     OC2 (Timer/Counter2 output compare match output)

Berikut adalah gambar fisik dari ATMega 8535




                Gambar 2.4 IC Mikrokontroller Atmega 8535
                                                                             11



2.3 Motor DC
     Motor DC biasanya digunakan dalam rangkaian yang memerlukan gerakan
dengan kepresisian yang tinggi untuk pengaturan kecepatan pada torsi yang
konstan. Tipe motor DC yang digunakan disini adalah tipe magnet permanen,
karena tipe ini lebih mudah pengontrolannya, disamping itu dimensinya yang
tidak terlalu besar. Jenis motor DC ini menggunakan magnet permanen untuk
menyuplai fluks magnet. Motor DC ini memiliki torsi strat dan regulasi kecepatan
yang bagus. Kekurangan dari motor DC jenis ini adalah keterbatsan dari besar
beban yang dapat ditarik




                                Gambar 2.5 Motor DC
2.3.1 Teori Motor DC
     Motor secara umum terbagi atas dua macam yaitu motor arus bolak-balik
(electromagmetic alternating current motor) yang biasa disebut dengan motor AC
dan motor arus searah (electromagnetic direct current motor) yang biasa disebut
dengan motor DC. Pekerjaan mekanik yang besar pada umumnya menggunakan
motor AC dan membutuhkan tegangan AC langsung. Sebaliknya motor DC yang
umumnya digunakan pada pekerjaan yang lebih kecil dan lebih cocok untuk
digunakan pada aplikasi-aplikasi elektronika misalnya mobile robot.
     Motor DC merupakan sebuah elektrik motor yang menggunakan tegangan
DC yang mengkonversi besaran mekanik. Motor DC berfungsi mengubah tenaga
listrik menjadi tenaga mekanis dimana gerak tersebut berupa putaran dari motor.
Semua motor DC beroperasi atas dasar arus yang melewati konduktor yang berada
dalam medan magnet. Motor DC ini mempunyai dua terminal elektrik. Dengan
                                                                                12



memberikan beda tegangan pada kedua terminal tersebut maka motor akan dapat
berputar pada satu arah dan apabila polaritas dari tegangan tersebut dibalik, maka
arah putaran motor akan terbalik pula. Hal ini berlaku pada motor DC dan tidak
berlaku pada motor AC, polaritas dari tegangan yang diberikan pada dua terminal
menentukan arah      putaran motor sedangkan beda tegangan yang diberikan
menentukan kecepatan motor tersebut.
     Pada interface motor DC memerlukan supply arus yang cukup besar, untuk
itu diperlukan suatu rangkaian interface antara mikrokontroler port dengan motor
untuk   mendapatkan      supply    arus    yang   cukup.    Interface   ini   dapat
diimplementasikan dengan berbagai macam komponen, antara lain : relay, bipolar
transistor, power mosfet, dan motor driver integrated circuit.
2.3.2 Bagian Motor DC
     Motor DC mempunyai dua bagian dasar yaitu :
1.   Bagian diam/tidak berputar (Stator)
     Stator ini menghasilkan medan magnet, baik yang dibangkitkan dari sebuah
koil (elektromagnetik) atau magnet permanen. Bagian stator terdiri dari bodi
motor yang memiliki magnet yang melekat padanya. Untuk motor kecil, magnet
tersebut adalah magnet permanen sedangkan untuk motor besar menggunakan
elektromagnetik. Kumparan yang dililitkan pada lempeng-lempeng magnet
disebut kumparan medan.
2.   Bagian berputar (Rotor)
     Rotor ini berupa sebuah koil dimana arus listrik mengalir. Suatu kumparan
motor akan berfungsi apabila mempunyai Kumparan medan, berfungsi sebagai
penghasil medan magnet. Kumparan jangkar, berfungsi sebagai pembangkit GGL
pada konduktor yang terletak pada laur-alur jangkar. Celah udara yang
memungkinkan berputarnya jangkar dalam medan magnet.
                                                                              13




                       Gambar 2.6 Kumparan Motor DC


2.4   Driver Motor
      Untuk menggerakkan motor DC dibutuhkan suatu rangkaian penggerak.
Rangkaian penggerak disini dibangun dari transistor yang dirangkai sebagai saklar
elektronik. Transistor adalah salah satu komponen yang dapat digunakan sebagai
saklar elektronik. Komponen ini memilliki impedansi rendah bila bersifat sebagai
penghantar. Transistor ini bekerja pada daerah jenuh (saturasi) sebagai saklar
tertutup (on) dan daerah mati (cut-off) sebagai saklar terbuka (off). Untuk
kebutuhan ini digunakan transistor TIP 3055 dan TIP 31 C dengan hubungan
Darlington.
      TIP 3055 didesain untuk tujuan umum, misalnya sebagai saklar maupun
penguat. Transistor ini mempunyai hfe antara 20 sampai 70, tegangan basis
kolektor 100 Volt, arus kolektor maksimal 15 Ampere, daya 90 Watt. Sedangkan
TIP 31 C merupakan transistor linier daya menengah untuk aplikasi pensaklaran.
Transistor ini mempunyai hfe antara 10 sampai 50, arus kolektor 3 Ampere.
      Motor yang umum digunakan mempunyai jangkauan langkah berputar
antara 0,9 derajat sampai 30 derajat. Motor-motor tersebut adalah motor langkah
dua atau empat fase. Secara teoritis, sebuah motor langkah berukuran kecil dapat
digerakkan langsung oleh mikroprosesor atau mikrokontroler. Dalam kenyataanya
arus dan tegangan yang dapat dikeluarkan oleh alat pemroses tadi masih terlalu
kecil. Sebagai perbandingan, gerbang-gerbang logika tipe TTL hanya mampu
mengeluarkan arus dalam orde mili-ampere dan tegangan antara 2 sampai 5 Volt.
                                                                               14



Sementara itu untuk menggerakkan motor langkah dibutuhkan arus yang cukup
besar (dalam orde ampere) dengan tegangan berkisar 5-24 Volt.
(Muhammad Supriadi, 2006).
        Selain rangkaian Darlington yang digunakan sebagai driver motor, ada
juga rangkaian H-Bridge yang digunakan sebagai driver motor dalam robot air
kali ini.
      H-Bridge adalah suatu rangkaian elektronik yang memungkinkan motor DC
dapat bergerak maju dan mundur. Rangkaian ini sering digunakan dalam robotika.
H-Bridge tersedia sebagai rangkaian terintegrasi atau dapat dibangun dari
komponen yang terpisah.
      Pengaturan H-Bridge biasanya digunakan untuk membalikkan polaritas
motor, tetapi juga dapat digunakan untuk mengerem motor.




                          Gambar 2.7 Struktur H-Bridge


Operasi pada H-Bridge secara singkat dapat dilihat pada tabel di bawah ini :
Tabel 2.3 Operasi H-Bridge




      H-Bridge pada dasarnya dibangun alat pembalik polaritas (contoh : PNP,
BJTs atau P-channel MOSFETs yang dihubungkan dengan voltase tinggi, NPN
BJTs or N-channel MOSFETs yang dihubungkan dengan voltase).
                                                                             15



2.5 CMPS03 Modul Magnetic Compass
     Dalam mengontrol sistem navigasi/pergerakan suatu robot, diperlukan suatu
sensor posisi untuk mengetahui dimana dan kemana arah robot yang akan kita
kendalikan. Jadi dengan penggunaan sensor posisi pada robot, diharapkan robot
tidak hanya bergerak maju, mundur, kanan, dan kiri saja tetapi juga harus
mengetahui arah dan posisi dari robot tersebut.
     Pada proyek akhir ini, sensor posisi yang digunakan adalah CMPS03 modul
magnetik kompas, modul kompas ini didesain khusus dalam bidang robotik untuk
tujuan navigasi robot. Kompas ini menggunakan dua sensor medan magnet
KMZ51 buatan Philips yang cukup peka untuk mendeteksi medan magnet bumi.
Dua sensor ini dipasang saling bersilangan. Pada modul kompas telah dipasang
rangkaian pengkondisi sinyal dan mikrokontroler. Sehingga kita dapat mengakses
berapa derajat posisi kompas secara langsung.
Hubungan pin-pin pada modul kompas




                             Gambar 2.8 Magnetic Compas
     Kompas elektronik digunakan untuk mengetahui posisi robot menghadap
dan untuk mengatur robot agar ketika belok posisi robot tepat sejajar dengan
dinding atau tepat 900 terhadap dinding. Kompas elektronik didesain untuk
navigasi robot. Modul ini cukup untuk mendeteksi magnetik bumi. Data yang
dihasilkan dari kompas berupa data biner yang       hasil dikonversi dari sudut
magnetik bumi ke data digital contohnya utara dihasilkan sama dengan data 0 dan
selatan sama dengan 7F dan data derajat yang lainnya secara linier. Koneksi dari
modul ke mikrokontroller dapat dilakukan dengan 2 cara. Satu mengunakan data
PWM (Pulse Width Modulation), 1 mS ( 00 ) sampai 36.99 mS (359.90) untuk
                                                                                    16



sinyal tinggi (High) dengan kata lain 100 S/ 0 dengan + 1mS offset. Dan sinyal
rendah (low) sekitar 65mS diantara pulsa. Cara yang kedua mengunakan I2C,
metode ini dapat digunakan langsung sehingga data yang dibaca tepat 00 – 3600
sama dengan 0-255.
2.6 Sensor Ultrasonik
      Sensor ultrasonik adalah sensor yang bekerja berdasarkan prinsip pantulan
gelombang suara dan digunakan untuk mendeteksi keberadaan suatu objek
tertentu di depannya, frekuensi kerjanya pada daerah diatas gelombang suara dari
40 KHz hingga 400 KHz.
2.6.1 Prinsip kerja Sensor Ultrasonik
      Sensor ultrasonik terdiri dari dari dua unit, yaitu unit pemancar dan unit
penerima. Struktur unit pemancar dan penerima sangatlah sederhana, sebuah
kristal    piezoelectric    dihubungkan      dengan mekanik      jangkar   dan    hanya
dihubungkan dengan diafragma penggetar. Tegangan bolak-balik yang memiliki
frekuensi kerja 40 KHz – 400 KHz diberikan pada plat logam. Struktur atom dari
kristal piezoelectric akan berkontraksi (mengikat), mengembang atau menyusut
terhadap     polaritas     tegangan   yang    diberikan,   dan   ini   disebut   dengan
efekpiezoelectric.




                           Gambar 2.9 Prinsip Kerja Sensor Ultrasonic
                                                                               17



     Besar amplitudo sinyal elekrik yang dihasilkan unit sensor penerima
tergantung dari jauh dekatnya objek yang dideteksi serta kualitas dari sensor
pemancar dan sensor penerima. Proses sensing yuang dilakukan pada sensor ini
menggunakan metode pantulan untuk menghitung jarak antara sensor dengan
obyek sasaran. Jarak antara sensor tersebut dihitung dengan cara mengalikan
setengah waktu yang digunakan oleh sinyal ultrasonik dalam perjalanannya dari
rangkaian Tx sampai diterima oleh rangkaian Rx, dengan kecepatan rambat dari
sinyal ultrasonik tersebut pada media rambat yang digunakannya, yaitu udara.
Prinsip pantulan dari sensor ulrasonik ini dapat dilihat pada gambar 2.2




             Gambar 2.10 Prinsip Pemantulan Gelombang Ultrasonik
     Waktu dihitung ketika pemencar aktif dan sampai ada input dari rangkaian
penerima dan bila pada melebihi batas waktu tertentu rangkaian penerima tidak
ada sinyal input maka dianggap tidak ada halangan didepannya.

2.7 Sensor Uvtron
     Sensor UVTron adalah sensor yang mendeteksi ultraviolet dari penggunaan
efek photoelektrik dari logam dikombinasikan dengan efek penggandaan gas.
Sensor   UVTron ini digunakan sebagai piranti            masukan (input) pada
mikrokontroller. Pada kali ini yang digunakan adalah sensor Hamamatsu UVTron
C3704. Nyala sebuah lilin dapat dideteksi oleh Sensor UVTron yang masih bagus
hingga jarak 5 meter, bahkan bara rokok juga dapat dideteksi dari jarak lebih dari
5 meter. Spektral cahaya yang dijangkau adalah 185 - 260 nm, jadi cahaya terlihat
                                                                        18



tidak mempengaruhi UV Tron.UVTron ini mempunyai sudut sensitivitas seperti
gambar di bawah. (Riyanto Sigit, 2007).




                     Gambar 2.11 Sudut Jangkauan UVTron




                   Gambar 2.12 UVTron dengan modul C3704

     Dengan jangkauan sudut seperti gambar 2.6, maka cukup sulit menentukan
posisi absolut sebuah lilin. Teknik yang lazim dilakukan adalah menggunakan
pelindung untuk mengurangi jangkauan sudut. Pelindung yang digunakan kurang
lebih nampak seperti ini:
                                                                             19




                     Gambar 2.13 Uvtron Dengan Pelindung

      Untuk pemasangan UVTron dengan modul C3704 dengan melihat kaki dari
UVTron dengan cara menghubungkan anoda UV Tron (yang kakinya lebih
panjang) dengan lubang di C3704 dengan tanda A dan katoda (kaki lebih pendek)
dengan lubang bertanda K. Untuk pin input tegangan ada yang menggunakan
tegangan 10-30V DC ada juga yang menggunakan 5V DC, tetapi untuk yang 10-
30V DC tetap diregulasi oleh C3704 menjadi 5V. tetap diregulasi oleh C3704
menjadi 5V. Regulator pada C3704 merupakan regulator 7805 dengan tanda ICI.
Ada 4 lubang (3 digunakan oleh regulator) dengan tanda O (output), G (ground),
I(input) dan 0 (output). Lubang ke-4 yang bertanda “0″ tidak digunakan dan bisa
digunakan sebagai input tegangan 5 V. Perhatikan gambar di bawah ini:




                           Gambar 2.14 Pin IO C3704

      Sensor di atas sangat presisi dan sangat rentan sekali. Dalam perlakuannya
sensor tersebut tidak boleh di pegang secara langsung oleh tangan manusia. Hal
ini disebabkan karena bisa mengurangi sensitivitas dari sensor tersebut.(Rianto
sigit, 2007).
                                                                                  20



2.8 Lcd 2X16
        LCD type M1632 adalah sebuah dot matrik Liquid Crystal Display yang
mampu menampilkan 16x2, membutuhkan daya kecil dan dilengkapi panel LCD
dengan tingkat kontras yang cukup tinggi serta pengendali LCD CMOS yang
telah terpasang dalam modul tersebut. Pengendali memiliki pembangkit karakter
ROM/RAM, sehingga modul LCD ini dengan mudah dapat disambungkan dengan
unit Mikroprosesor (MPU). LCD type ini memiliki penyemat (kaki) sebanyak 16
pin dengan fungsi tiap-tiap pin yang dapat dilihat pada tabel berikut:
Tabel 2.4 Fungsi Pin-Pin Lcd

   No       Simbol         Level                        Function

    1         Vss                              power supply,0 V (GND)

    2         Vcc                              power supply,5 V + 10%

    3         Vee                              power supply,LCD Drive

    4         RS           H/L             H : data input,L : instruction input

    5        R/W           H/L                    H : Read, L : Write

                         H,transisi
    6          E                                     Enable signal
                           turun

    7         Db0          H/L

    8         Db1          H/L

    9         Db2          H/L

   10         Db3          H/L                        DATA BUS

   11         Db4          H/L

   12         Db5          H/L

   13         Db6          H/L

   14         Db7          H/L

   15       V+ BL                      Back light supply 4 - 4.2 V, 50 - 200 mA

   16        V- BL                           Back light supply 0 V (GND)
                                                                          21




                             Gambar 2.15 LCD
2.9 Codevision AVR C Compiler
     Software yang digunakan dalam membuat program pada AVR disini adalah
CodevisionAVR C Compiler versi 1. 253 yang selanjutnya dalam pembahasan
disebut cvAVR. Pemrograman dengan menggunakan software ini lebih mudah
karena tersedia dengan bahasa pemrogrman C selain itu dengan cvAVR
dimudahkan dengan code wizad dimana pemakai tinggal meng-klik untuk
membuat inisialisasi ataupun fungsi-fungsi sesuai property yang tampil.

1.   Pemilihan Chip dan Frekwensi Xtall
     Langkah pertama dalam menggunakan cvAVR adalah membentuk sebuah
project baru, dengan click create new project, maka akan muncul pertanyaan
apakah anda ingin memanfaatkan bantuan code wizard, jika pilih ok maka akan
masuk pada code wizard. Langkah pertama yang harus dilakukan pada code
wizard adalah memilih jenis chip mikrokontroler yang digunakan dalam project
dan frekwensi xtall yang digunakan. Pemilihan chip dan frekwensi xtall dapat
dilihat seperti pada gambar dibawah ini




          Gambar 2.16 Pemilihan Chip Dan Frekwensi Xtall Yang Digunakan
                                                                                 22



2.   Inisialisasi port I/O
     Inisialisasi Port berfungsi untuk memilih fungsi port sebagai input atau
sebagai output. Pada konfigurasi port sebagai output dapat dipiloh pada saat awal
setelah reset kondisi port berlogika 1 atau 0, sedangaka pada konfigurasi port
sebagi input terdapat dua pilihan yaitu kondisi pin input toggle state atau pull-up,
maka sebaiknya dipilih pull-up untuk memberi default pada input selalu berlogika
1. setiap port berjumlah 8 bit, konfigurasi dari port dapat diatur sesuai dengan
kebutuhan. Pengaturan konfigurasi dapat dilakukan perbit, jadi dalam satu port
dapat difungsikan sebagi input dan output dengan nilai defaultnya berbeda-beda.
Gambar dibawah ini menunjukkan seting konfigurasi pada port A dengan
kombinasi input dan output yang berbeda-beda defaultnya.




                         Gambar 2.17 Inisialisasi port I/0

     Maka pada tampilan program akan terlihat register yang yang perlu diisi
untuk inisialisasi I/O. serperti pada gambar dibawah ini.




               Gambar 2.18 Tampilan program inisialisasi port I/0
                                                                                 23



3.   Inisialisasi timer 0

     Timer 0 digunakan sebagai counter untuk mendeteksi putaran roda kanan.
Karana timer 1 digunakan sebagai counter maka clock sourcedipilih rising Edge.
Timer 1 juga sebagai interupt karena timer1 adalah counter 8 bit. Mode yang
dipilih normal top=FFh jadi nilai maksimal dari counter sama dengan FFh.




                            Gambar 2.19 Inisialisasi Timer0




                         Gambar 2.20 Vektor interupt Timer0

4.   Inisialisasi enable interupt

     Untuk mengaktifkan interupt timer ada satu register yang harus diperhatikan
bila register ini tidak diisi maka interrupt timer tidak aktif meskipun inisialisisi
timer telah dilakukan.
                                                                            24




                 Gambar 2.21 Inisialisai Enable Interupt Timer

5.   Inisialisasi I2C

     I2C communication protocol dimulai dengan mengirimkan start bit, address
modul digital compass dengan read/write low (0xC0), kemudian nomor register
yang akan dibaca. Kemudian diikuti dengan start bit lagi, address modul digital
compass dengan read/write high (0xC1).




                              Gambar 2.22 Inisialisai I2C




                        Gambar 2.23 Tampilan Program I2C
                         BAB 3. METODE PENELITIAN



3.1      Tempat Dan Waktu Penelitian
         Penelitian mengenai tugas akhir ini dikerjakan selama 6 bulan, yaitu mulai
bulan Januari 2010 hingga bulan juni 2010. Penelitian dilakukan di Politeknik Negeri
Jember dengan menggunakan peralatan yang tersedia di bengkel Robotika.

3.2      Bahan dan Alat yang Digunakan
3.2.1 Bahan

         Bahan-bahan yang diperlukan untuk kegiatan penelitian tugas akhir ini antara
lain :

1.    PCB fiber 20 x 30 cm
2.    Acrylic 3 mm 100 x 50 cm
3.    Aluminium (headsing) 1.5 mm
4.    Mur (baut)
5.    Gear plastik
6.    Kipas
7.    Baterai 12 V
8.    Motor DC
9.    Motor Servo
10. Matras
11. Sensor PING))) Ultrasonik
12. Sensor UVTron
13. Magnetic compass
14. Sensor Garis
15. Kabel
16. Sistem minimum mikrokontroler AVR ATMega 8535
17. Komponen elektronika



                                          25
                                                                                  26




3.2.2     Alat

          Alat-alat yang dibutuhkan untuk Kegiatan penelitian Tugas Akhir ini ada dua
macam yaitu perangkat lunak dan perangkat keras.
1.    Perangkat Keras
      Perangkat keras yang digunakan adalah :
      a. Solder
      b. Bor tangan dan bor PCB
      c. Gergaji
      d. Gerinda
      e. Tang, obeng, dan perlengkapan lainya
      f. PC pentium 4 dengan port pararel
      g. Monitor
2.    Perangkat Lunak
      Perangkat lunak yang digunakan adalah :
      a. Aplikasi Program Express PCB dan Express SCH
      b. Aplikasi Program Code AVR

3.3     Metode Penelitian
        Metode perancangan dan pembuatan karya rekayasa Pembuatan Robot Beroda
Pemadam Api Menggunakan Navigasi PING))) Ultrasonic Range Finder Dan
Magnetic Compass ( Cmps03 ) yang di gunakan pada tugas akhir ini, untuk
memperoleh hasil yang sesuai dengan yang diharapkan maka yang penulis
menggunakan suatu metode yaitu: metode kepustakaan, perancangan alat,
perancangan perangkat lunak, pengujian Alat, analisis data, dan dokumentasi. Urutan
dari metode diatas dapat dilihat pada gambar berikut :
                                                                                27




                              Metode Kepustakaan

                               Perancangan Alat

                             Perancangan Perangkat

                                 Pengujian alat

                                 Analisis data

                                 Dokumentasi

                            Gambar 3.1 Metode Penelitian

         Pelaksanaan penelitian pada tugas akhir ini dilakukan dengan mengikuti
langkah-langkah yang telah ditentukan pada metode penelitian diantarannya :

3.3.1    Metode kepustakaan
        Dalam metode ini, penulis mencari referensi dan literatur yang ada untuk
dijadikan acuan bagi penulis. Tidak hanya referensi saja, penulis juga memanfaatkan
catatan kuliah yang telah didapat sesuai dengan materi yang berhubungan dengan
masalah yang akan dibahas.

3.3.2    Perancangan alat
1. Merancang rangkaian regulator sebagai catu daya yang di gunakan untuk penurun
   tegangan .
2. Merancang sistem Mikrokontroler AVR sebagai pengendali sistem secara
   keseluruhan.
3. Merancang serta menguji rangkaian sound activation sebagai sistem kendali
   menggunakan inputan suara.
                                                                                   28




3.3.3    Perancangan Perangkat Lunak
        Perancangan perangkat lunak disini dilakukan dengan membuat program
menggunakan bahasa C dan bertujuan untuk merancang dan mengaplikasikan
perangkat lunak yang berfungsi untuk menerima input yang dikirim oleh user pada
chip mikrokontroler. Serta untuk mengendalikan gerakan robot secara keseluruhan.

3.3.4    Pengujian Alat
        Pengujian alat disini bertujuan untuk mengetahui apakah rancangan yang dibuat
dengan metode-metode yang telah ditentukan berjalan dengan baik dan juga untuk
mendapatkan data-data yang dibutuhkan sebagai bahan dokumentasi. Pengujian disini
meliputi pengujian perangkat input dan output.

3.3.5    Analisis data
    Analisis data dilakukan untuk mengetahui hasil, dan kesimpulan dari beberapa
pengujian yang telah dilakukan. Dari analisis ini akan diketahui tentang kekurangan
dan kelebihan pada penerapan sensor dan pergerakan pada rekayasa alat ini.

3.3.6    Dokumentasi
   Pada tahap ini penulis melakukan pendokumentasian perancangan dan pembuatan
karya rekayasa alat yang telah dibuat dengan tujuan untuk membantu dan
memudahkan di dalam pengembangan alat ini kedepannya nanti.
                             BAB 4. HASIL DAN PEMBAHASAN



4.1   Perancangan Alat
4.1.1 Konfigurasi Sistem

      Secara umum, Robot Otomatis terdiri dari tiga bagian dasar, yaitu bagian
perangkat keras (hardware), bagian perangkat lunak (software), dan bagian
mekanik. Sistem tersebut akan menyediakan data bagi sistem kontrol untuk
mengatur jalannya robot. Sensor yang digunakan berupa Sensor PING))) ultrasnic
Range Finder, Magnetic Compas dan sensor UVTron.
      Perangkat keras yang digunakan sebagai sistem pengendali sensor PING)))
ultrasnic Range Finder, Magnetic Compas dan sensor UVTron disini adalah
rangkaian minimum sistem mikrokontroler AVR ATMega 8535. Data masukan
dari sensor akan diolah pada chanel mikrokontroler AVR berupa pulse sehingga
menghasilkan data yang akan diolah dan diproses menjadi sebuah instruksi pada
aktuator robot.
                                           6 sensor
                                            Ping)))



                                     Mikrokontroler
                                         8535                     Sound
                   Lcd                                           Activation

                                                                    Motor Dc
                  Servo              Mikrokontroler                   fan
                                         8535
                                                                 2 sensor
                  Lcd
                                                                 UVTron

                     Magnetic                               Sensor
                                      Driver motor
                     compas                                proxymty



                              Motor kiri           Motor kanan

                          Gambar 4.1 Blok Diagram Sistem Robot



                                              29
                                                                              30




                  PING)))                           Mikrokontroler

                                    Pulse out       ATMega 8535
                                    Analog

                                   Data digital
                 UVTRon             Analog



                                                              Puilse out
                                                              Analog
                                                  Magnetic compas



                Gambar 4.2 Blok Diagram Sistem Sensor Robot
4.1.2 Perancangan dan Pembuatan Mikrokontroler
      Dalam membuat rangkaian mikrokontroler memerlukan pemahaman
mengenai sistem minimum dari mikrokontroler yang akan dirancang itu sendiri.
Sistem rangkaian yang dirancang diusahakan menggunakan rangkaian yang
seringkas mungkin dan dengan pengkabelan yang baik, karena biasanya rangkaian
tersebut bekerja pada frekuensi yang relatif tinggi, sehingga peka terhadap noise
dari luar.
        Mikrokontroler membutuhkan rangkaian untuk memasukkan program ke
chip Mikrokontroler. Rangkaian tersusun atas chip ATMega8535 sebagai IC
Mikrokontroler kemudian dihubungkan dengan port parallel, hal ini disebut
STK200 sebagai penghubung antara Mikrokontroler melalui port parallel. Port
Mikrokontroler yang dibutuhkan adalah Port B.5 (MOSI), Port B.6 (MISO), Port
B.7 (SCK), Port B.8 (SCK), Port B.9 (RESET), dan Port B.10 (Ground).
                                                                        31




                      Gambar 4.3 Koneksi Kabel STK 200
       AVR ATMega8535 mempunyai rangkaian tambahan yang relatif sedikit
dibanding dengan mikrokontoler yang lain.
       Dalam pembuatan minimum sistem ATMega 8535, diperlukan rangkaian
penunjang untuk menjamin kehandalan dari minimum sistem tersebut. Rangkaian
penunjang yang dibutuhkan antara lain :
1. clock generator CPU
2. regulator dan noise filter
3. interfacing ke rangkaian luar (tergantung kebutuhan pemakai)

4.1.3 Rangkaian Clock Generator
       Mikrokontroler ATMega 8535 memiliki osilator internal (on chip
oscillator) yang dapat digunakan sebagai sumber clock bagi CPU. Untuk
mengunakan osilator internal diperlukan sebuah kristal antara pin XTAL1 dan
XTAL2 dan kapasitor ke ground. Untuk kristalnya digunakan kristal 12 MHz.
Sedangkan untuk kapasitor dapat bernilai 27 pF sampai 33 pF.
                                                                              32




                        Gambar 4.4 Rangkaian Osilator

4.1.4 Perancangan Catu Daya
      Rangkaian catu daya berfungsi untuk memberikan catuan arus dan tegangan
kepada rangkaian-rangkaian yang membutuhkan supply daya. Setiap alat-alat
listrik atau alat-alat elektronik membutuhkan catu daya agar dapat beroperasi
dengan baik. Sumber catu daya tersebut dapat diambil dari baterai. Baterai dengan
tegangan    tertentu membutuhkan suatu rangkaian regulator yang            dapat
menstabilkan tegangan dengan ukuran tertentu dibawah tegangan sesungguhnya.
Untuk hal tersebut, dibutuhkan regulator 7805 untuk mendapatkan tegangan 5
Volt dengan tegangan murni 12 Volt.

      Rangkaian lengkap regulator pada robot ini dapat dilihat pada gambar
berikut .




                        Gambar 4.5 Rangkaian Regulator
                                                                               33




4.1.5 Perancangan Interfacing I/O
1. Perancangan interfacing I/O mikro slave
      Rangkaian I/O dari mikrokontroler mempunyai kontrol direksi yang tiap
bitnya dapat dikonfigurasikan secara individual, maka dalam pengkonfigurasian
I/O yang digunakan ada yang berupa operasi port ada pula yang dikonfigurasi tiap
bit I/O. Berikut ini akan diberikan konfigurasi dari I/O mikrokontroler tiap bit
yang digunakan pada rangkaian kontroler ATMega 8535 :
a. Port A
   Port A adalah port yang dapat digunakan untuk input maupun output. Port A
juga memiliki kelebihan yaitu dapat digunakan sebagai channel ADC (analog to
digital converter).Port A.0 sebagai input sound activation yang menggunakan
ADC

b. Port B
   Port B adalah port yang dapat digunakan untuk input maupun output. Port ini
digunakan sebagai output yang digunakan untuk tampilan LCD.

c. Port C
   Port C adalah port yang dapat digunakan untuk input maupun output. Pada
port ini digunakan sebagai output yang digunakan untuk mengatur aktuator robot
1) Port C.0 sebagai input sensor PING)))
2) Port C.1 sebagai input sensor PING)))
3) Port C.2 sebagai input sensor PING)))
4) Port C.3 sebagai input sensor PING)))
5) Port C.4 sebagai input sensor PING)))
6) Port C.5 sebagai input sensor PING)))

d. Port D
   Port D adalah port yang dapat digunakan untuk input maupun output. Pada
port ini terdapat 2 buah port yang dapat digunakan sebagai komunikasi serial port
D.0 (RX) , port D.1 (TX).
                                                                                34




     Pada mikro slave terdapat 6 buah ping yang data dikirim ke mikro master
menggunakan komunikasi USART (Universal Synchronous Asynchronous serial
Receiver and Transmitter). Mikro slave bertindak sebagai pengirim(transmitter).



                                                     Atmega
                             Atmega                   8535
                               8535                   Mikro
                                          Tx to Rx
                            Mikro slave              master




                      Gambar 4.6 Komunikasi Antara 2 Mikrokontroler
2. Perancangan interfacing I/O mikro master
a.    Port A
      Port A adalah port yang dapat digunakan untuk input maupun output. Port A
juga memiliki kelebihan yaitu dapat digunakan sebagai chanel ADC (analog to
digital converter).

1) Port A.2 sebagai input proxymty
2) Port A.3 sebagai input proxymty
3) Port A.4 sebagai input dari Port D.5 (mikro slave)
4) Port A.5 sebagai input Uv tron1
5) Port A.7 sebagai input dari Uv Tron2

b.    Port B
      Port B adalah port yang dapat digunakan untuk input maupun output. Port
ini digunakan sebagai output yang digunakan untuk tampilan LCD.

c.    Port C
      Port C adalah port yang dapat digunakan untuk input maupun output. Pada
port ini digunakan sebagai output yang digunakan untuk mengatur aktuator robot
1) Port C.0 digunakan untuk komunikasi dengan pin SDA pada modul CMPS03
2) Port C.1 digunakan untuk komunikasi dengan pin SCL pada modul CMPS03
3) Port C.4 sebagai input aktivasi robot
                                                                               35




4) Port C.5 sebagai output motor kipas
5) Port C.6 sebagai output motor servo

d.    Port D
      Port D adalah port yang dapat digunakan untuk input maupun output. Pada
port ini terdapat 2 buah port yang dapat digunakan sebagai komunikasi serial port
D.0 (RX) , port D.1 (TX). Mikro master bertindak sebagai penerima(receiver) jadi
data PING dapat ditampilkan dan diproses di mikro master.
4.2 Perancangan dan Pembuatan Perangkat Masukan (input)
      Sistem perangkat masukan yang digunakan di sini antara lain sensor dan
kontroller yang berfungsi menghasilkan data sensor tersebut.Sehingga data
tersebut adalah data jadi 8 bit yang bisa langsung diakses oleh mikrokontroler
utama.
4.2.1 Perancangan dan Pembuatan Sensor Ultrasonik
      Sistem sensor untrasonik digunakan sebagai masukan dari proses
pengontrolan robot terbagi atas dua bagian, yaitu untuk perangkat keras dan lunak
(kontroller).
1.    Sensor ultrasonik (hardware)
      Sensor ultrasonik menggunakan modul jadi dari PARALLAX. Dengan 1
buah pin kontrol yaitu sebuah pin I/O.




                  Gambar 4.7 PING))) Ultrasonic Range Finder
                                                                             36




        Gambar 4.8 Skematik Rangkaian Ping))) Ultrasonic Range Finder

     Terdapat 6 sensor pada badan robot. Scanning sensor dilakukan secara
bergantian agar data yang didapat valid. Output dari modul ini berupa data pulse
I/O. Untuk mengaktifkan ultrasonic Kontroler mengirimkan sinyal start kemudian
PING))) memancarkan sinyal brush pendek dan mengirim pulsa echo. Kontroler
menghitung lebar pulsa echo.

2.   Sensor ultrasonik (software)
     Mikrokontroller memberikan sinyal pulsa high pada pin triger pulse input
dari sensor untuk mengaktifkan sensor ultrasonik. Untuk menghitung lebar pulse
mengunakan timer0. Timer0 aktif ketika register TCCR0B diisi dengan nilai 4H
yang berarti bahwa timer berjalan dengan frekuensi 43,2 KHz. Pin echo pulse
output terhubung dengan pin-pin pada mikrokontroler. Ketika pin echo pulse
output high maka timer0 aktif dan ketika pin echo kembali bernilai low maka
timer0 dimatikan dan data TCNT0 diambil sebagai data jarak. Sementara jika
timer menghitung sampai terjadi overflow dan masuk ke dalam interrupt overflow,
maka jarak dianggap maksimal, yaitu 255.
                                                                   37




                                          1
      start

                                      Start timer

 Inisialisasi Timer
 Timer/counter=0


                                       Echo=0



   Set kirim=1

                                        Timer
                                                      Stop timer
                                      overflow??


    Delay 5us

                                      Stop timer
                                   Timer conter=255


   Set kirim =0

                                    Data_us=timer/
                                       counter


     Echo=1

                                        Kirim
                                       data_us

         1

                                        start

      Gambar 4.9 Flowchart Kontrol Sensor Ultrasonik




Gambar 4.10 Program Scanning Sebuah Sensor Ultrasonik
                                                                           38




      Pin trigger dan echo dari modul ultrasonik dihubungkan dengan PORTC.6
pada mikrokontroler ATMega 8535. Pin trigger diberi sinyal ”high” minimal
selama 5us. Selanjutnya ditunggu sampai pin echo menjadi ”high”, yang
menunjukkan bahwa modul sensor telah memancarkan gelombang ultrasonik.
Saat pin echo berubah menjadi ”high”, timer0 yang digunakan untuk menghitung
lebar pulsa dijalankan. Selanjutnya ditunggu sampai pin echo kembali
menjadi ”low” atau timer0 overflow. Data jarak dapat diambil pada register
TCNT0 yang merupakan register counter untuk timer0. Bila timer0 menghitung
sampai terjadi overflow tetapi pin echo tetap high, maka akan dianggap sebagai
jarak maksimal, dan program akan masuk ke dalam subrutin interrupt timer0
overflow. Di dalam subrutin tersebut, timer akan dihentikan dan data dianggap
maksimal, yaitu 255. Selanjutnya data sensor dikirimkan melalui komunikasi
serial.

Perhitungan Pengukuran:

a. Jarak = (Lebar Pulsa / 29.034uS)/2 (dalam cm),

b. Dimana : 1/29.034 = 0.34442, sehingga :

c. Jarak = (Lebar Pulsa x 0.034442)/2 (dalam cm)




                          Gambar 4.11 Lebar Pulsa Ultrasonik
                                                                             39




4.2.2 Perancangan dan Pembuatan Kompas Elektronik
1.      Kompas elektronik (hardware)
        Kompas elektronik yang digunakan adalah modul cmps03 produksi
Devantech. Kompas elektronik digunakan untuk mengetahui arah hadap robot
ketika bergerak dan menghasilkan gerakan yang baik ketika berputar 180º.




                      Gambar 4.12 Modul Kompas Elektronik
         Koneksi kompas elektronik menggunakan I2C pin SCL (serial clock)
terhubung dengan pin mikrokontroller yang berfungsi sebagai serial clock dan pin
SDA (serial data) terhubung dengan mikrokontroller yang berfungsi sebagai serial
data.




                    Gambar 4.13 Skematik Kompas Elektronik
                                                                               40




2.   Kompas elektronik (software)

     Modul kompas dengan komunikasi protokol I2C sama dengan eeprom's
24C04. Pertama mengirimkan suatu start bit. Kondisi start bit adalah ketika SCL
high dan SDA transisi dari high ke low. Start bit berfungsi untuk menentukan
awal data. Selanjutnya mikrokontroller mengirimkan data 0xC0, data 0xC0 adalah
alamat fix dari kompas. Dan bit berfungsi untuk read/write yang artinya jika bit
terakhir bernilai low (“0”) maka mikrokontroller membaca data dari modul
kompas dan jika bit terakhir high (“1”) maka mikrokontroller menulis atau
mengisisi data ke modul kompas. Salanjutnya mengirimkan data 0x01 untuk
membaca isi register 1 dari modul kompas. Isi dari register 1 adalah data sudut
kompas yang telah dikonversi 0-255. Modul kompas mempunyai 15 register yang
mempunyai fungsi masing-masing untuk lebih jelasnya dapat dilihat pada
lampiran data sheet modul kompas. Setelah mengirim data 0x01 selanjutnya
mikrokontroller membaca data dari madul kompas. Data kompas berupa data 1
byte yaitu dari 0 sampai 255. dan akhir dari paket data di akhiri dengan stop bit.
Stop bit yaitu ketika SCL high dan SDA transisi dari low ke high. Ini berfungsi
untuk mengetahui akhir kiriman data. Untuk siklus komunikasi dari I2C dapat
dilihat pada gambar dibawah ini. Fungsi dari ACK(acknowledge) untuk memas-
tikan bahwa data yang dibaca adalah benar. Untuk mengetahui benar atau salah
dari sebuah data dapat dilihat dari kondisi ACK yaitu ketika selesai mengirimkan
1 byte data maka sinyal dari SDA harus low(“0”) jika tidak low.




                        Gambar 4.14 Diagram Waktu I2c
                                                                            41




     Untuk komunikasi dengan I2C modul kompas tidak mempunyai resistor pull
up, ini harus diberikan tambahan. Resistor digunakan pada pin SCL dan SDA, jika
mengunakan lebih dari satu     modul kompas maka resisitor pull up cukup
diberikan satu kali saja untuk keseluruhan bus bukan dipasang pada tiap modul.
Dengan nilai R=1.8k digunakan jika sedang bekerja sampai 400KHz dan 1.2K
atau 1k jika bekerja mencapai 1MHz. Kompas dirancang untuk bekerja sampai
kecepatan clock start ( SCL) sampai 100KHz, kecepatan clock dapat naikkan ke
1MHz tetapi perlu diperhatikan jika mengunakan clock 1 MHz yaitu pada
kecepatan di atas 160KHz CPU tidak bisa merespon untuk membaca I2C data.
Oleh karena itu perlu diberikan penundaan 50µS saat menulis alamat program.
Resisitor pull up pada pin 50/60 Hz berfungsi untuk memilih 60Hz. Berikut ini
adalah potongan program pembacaan kompas elektronik dengan menggunakan
protokol I2C, dimana pada CodeVisionAVR telah ada fungsi-fungsi yang dapat
digunakan untuk membangkitkan sinyal- sinyal yang diperlukan dalam
komunikasi dengan I2C.




              Gambar 4.15 Program I2c Pembacaan Data Compas




           Gambar 4.16 Program Belok Robot Menggunakan Compas
                                                                            42




                                     start




                                   Input data
                                    compas




                                 Belok kanan /
                                   belok kiri




                                -3=>Compas<=3




                                     stop




                                     start


             Gambar 4.17 Flowchart Belok Menggunakan Compas

       Diagram alir diatas menjelaskan bahwa robot dapat diatur beloknya hingga
data compas yang diinginkan. Jika data compas yang diinginkan tidak terpenuh
maka robot terus saja berputar hingga data compas yang diinginkan kurang 3 atau
lebih dari sama dengan 3 maka robot akan berhenti berbelok. Data compas
tersebut diatur pada perogram pada code avr sesuai arah mata angin.
                                                                               43




4.2.3 Perancangan dan Pembuatan Uvtron

          Sensor UVTron flame detector ini digunakan untuk mendeteksi adanya api
lilin.




                          Gambar 4.18 Hamamatsu Uvtron

         Dalam pembuatan dan perancangan pendeteksi lilin menggunakan sensor
Uvtron disini kami hanya perlu menambahkan jumper pada pin jumper dan
kapasitor 1F. Penambahan jumper seperti gambar 3.9. Hal ini berfungsi untuk
mengatur sensitifitas dari sensor. Dan penambahan kapasitor berfungsi untuk
memperlebar sinyal output bila sensor dapat mendeteksi adanya lilin, seperti
tampak pada gambar 3.9. Peletakan posisi dari tabung UV tron yaitu berdiri hal ini
dikarenakan jarak jangkauan dari sensor lebih jauh dibandingkan dengan posisi
tidur dan posisi anoda dari tabung berada didepan hal ini karena ketika kutub
anoda menerima cahaya maka kutub anoda akan mengeksitasi kutub katoda
sehingga sensor aktif.




                  Gambar 4.19 Pemasangan Jumper Dan Capasitor

         Koneksi UVTron menggunakan data digital terhubung dengan pin
mikrokontroller yang berfungsi sebagai pengirim data bit high low (1 dan 0). Jika
                                                                            44




UVTron mendeteksi adanya api maka akan mengirim data high bernilai 1 dan 0
jika tidak ada api.




                 Gambar 4.20 koneksi UVTron ke Mikrokontroler

4.2.4 Perancangan dan Pembuatan Sound Aktifasi

      Untuk rangakaian sound aktifasi terdiri dari 2 bagian yaitu pemancar dan
penerima. Rangkaian pemancar berfungsi membangkitkan sinyal suara dengan
frekuensi tertentu.   Rangkaian pemancar terdiri atas rangkaian pembangkit
gelombang dengan frekuensi tertentu dan rangkaian penguat agar suara yang
dihasilkan mempunyai daya yang tinggi selanjutnya adalah speaker sebagai output
yang berfungsi untuk mengeluarkan suara.
                                                                             45




           Pembangkit                 amplifire                speaker
           gelombang


             Gambar 4.21 Blok Diagram Pemancar Sound Aktifation

     Pembangkit gelombang yang digunakan adalah IC LM555 yang diatur
sebagai pembangkit gelombang kotak. Frekuensi yang diinginkan adalah sebesar
3 – 4 Khz sesuai dengan aturan pada pertandingan.




                Gambar 4.22 Ic Lm555 Sebagai Pulse Generator

     Pada rangkaian penerima terdiri atas mic sebagai input dan juga menerima
gelombang suara dari pemancar. Selanjutnya rangkain amplifire untuk
menguatkan    input    dari   mic.   Sedangkan    untuk   rangkaian amplifiernya
menggunakan penguat tone decoder yaitu IC 386 untuk memperbesar sinyal yang
ditangkap oleh microphone yang selanjutnya diproses oleh microkontroler dalam
bentuk data ADC. Berikut gambar rangkaian penerima:




                      Gambar 4.23 Penerima Sound Actifation
                                                                              46




4.2.5 Perancangan dan Pembuatan Sensor Garis

      Sensor garis yang digunakan yaitu photodioda yang peka terhadap
 intensitas cahaya. Rangkaian sensor terdiri dari 2 bagian, yaitu bagian pemancar
 cahaya dan penerima cahaya. Rangkaian pemancar terdiri dari resistor sebagai
 pembatas arus serta LED sebagai          piranti yang memancarkan cahaya.
 Sedangkan rangkaian penerima terdiri dari resistor sebagai pull-up tegangan
 dan photodioda sebagai piranti yang akan menerima pantulan cahaya LED
 obyek. Rangkaian komparator akan membandingkan tegangan input dari sensor
 dengan tegangan referensi untuk menghasilkan logika ‘0” dan “1” untuk
 membaca garis putih. Gambar berikut ini adalah rangkaian sensor sebagai
 pembaca garis putih:




                    Gambar 4.24 Schematic Sensor Pembaca Garis
                                                                              47




       LED akan memancarkan cahaya ke obyek dan photodioda akan menerima
cahaya yang dipantulkan oleh obyek tersebut. Intensitas cahaya yang diterima
oleh photodioda akan mempengaruhi nilai resistasinya. Obyek berupa garis putih
akan memantulkan cahaya dengan intensitas tertentu sehingga photodioda
mempunyai nilai resistansi tertentu

       Nilai tegangan output dari photodioda saat menerima cahaya pantulan dari
garis putih akan dideteksi oleh rangkaian komparator yaitu LM324. Tegangan
referensi dapat diatur dengan mengatur variabel resistor.

4.3 Perancangan dan Pembuatan Perangkat Keluaran (output)

4.3.1 Driver motor DC

     Driver motor digunakan sebagai penghubung antara mikrokontroler ke
motor DC. Digunakan driver motor karena arus yang keluar dari mikrokontroler
tidak mampu mencukupi kebutuhan dari motor DC maka digunakan driver motor
L298N. IC L298N ini merupakan rangkaian H-brige yang dirancang untuk
memudahkan dalam memberikan arus dua arah hingga 1 A dengan tegangan 4,5
volt hingga 36 volt kepada motor DC. IC L298N dapat digunakan untuk
mengerakan motor dc Half-Brige sebanyak empat buah atau dua motor dc full-
brige. IC ini mempunyai 4 pin input yang bersesuaian dengan 4 pin outputnya.
Selain itu juga terdapat 2 pin enable/disable untuk pin output 1,2 dan pin output
3,4. Berikut skematik rangakaian driver motor menggunakan L298N:




                Gambar 4.25 Driver Motor Menggunakan L298N
                                                                     48




4.3.2 Modul LCD 2*16
     Komunikasi yang digunakan bisa 8 bit atau 4 bit. Jika menggunakan
komunikasi 4 bit, maka pin LCD untuk data yang digunakan adalah DB4-DB7.
Lcd 2 * 16 ditunjukan pada gambar 3.6.




                                Gambar 4.26 LCD 2 x 16




                   Gambar 4.27 Skematik Rangkaian LCD
                                                                               49




4.3.3 Driver Motor Dc untuk Kipas
        Driver motor digunakan sebagai penghubung antara mikrokontroler ke
motor DC. Driver motor TIP 31 sebagai trigger input, untuk menghidupkan motor
DC tanpa mengatur PWM nya karena untuk mematikan api membutuhkan
kecepatan maksimal dari motor DC tersebut. Jika TIP 31 menerima logika 1
(high) dari mikrokontroler motor. Berikut skematik rangkaian driver motor TIP
31:




                 Gambar 4.28 Skematik Rangkaian Driver Motor Tip 31

4.4      Perancangan Sistem Kontrol dan Mekanik
4.4.1 Sistem kontrol keseluruhan
         Pembuatan Robot otomatis ini memerlukan perancangan hardware yang
dapat     menghubungkan   antara    mikrokontroler   dan   sensor,   serta   dapat
menginstruksikan motor driver yang instruksinya didapat dari mikrokontroler
AVR. Terdapat dua buah motor driver yang berfungsi untuk mengatur arah gerak
motor dan sensor sharp yang berfungsi sebagai navigasi robot.
                                                        50




Gambar 4.29 Skema Kontrol Elektronik Robot Penghindar
                                                                               51




4.4.2 Perancangan dan Pembuatan Mekanik
1.   Kerangka utama robot

     Kerangka robot berbentuk tank dengan panjang 25 cm, lebar 20 cm dan
tinggi 25 cm. Dengan body berbentuk persegi panjang menggunakan 2 roda
dikanan dan kiri berfungsi agar ketika robot berputar maka robot berputar pada
titik tengah dari robot. Peletakan baterai terdapat di bagian bawah hal ini
berfungsi agar titik berat robot terdapat pada bagian bawah sehingga robot tidak
mudah terguling. Terdapat Uvtron yang terletak pada bagian depan robot, hal ini
berfungsi untuk memudahkan pendeteksian lilin secara luas. Untuk memfokuskan
deteksi lilin dipakai UVTron yang ditutup dan dibagian uvtron terdapat slot.




                           Gambar 4.30 Desain Robot

2.   Posisi sensor ultrasonik

     Terdapat 6 pasang sensor ultrasonik dan semuanya terdapat pada bagian
depan. Hal ini untuk menjangkau semua halangan yang ada disekitar robot.
Ultrasonik bagian sisi kiri dan kanan bertugas menjaga jarak antar dinding, sedang
ultrasonik depan menjaga dari tabrakan dengan dinding depan.
                                                                                52




                     Gambar 4.31 Posisi Sensor Ultrasonik

3.   Roda
     Roda dirancang dengan menggunakan belt seperti pada tank, seperti tampak
pada gambar 3.14. Desain seperti ini dimaksudkan supaya memudahkan robot
untuk berjalan dan saat melalui rintangan seperti uneven floor yang berupa
gundukan di jalan.




                     Gambar 4.32 Bentuk Roda Dengan Belt

     Bentuk roda seperti ini tidak memerlukan roda bebas, akan tetapi gesekan
antara roda dengan lantai lebih besar sehingga akan mengganggu saat melakukan
manuver belokan. Roda tersebut dibuat dengan menggunakan 4 buah gir yang
dihubungkan dengan sebuah timing belt yang dilapisi dengan karet sebagai ban.
Tebal dari belt adalah ±1 cm. Ketebalan dari belt ini juga akan mempengaruhi
pergerakan dari robot. Semakin tebal belt, maka manuver atau pergerakan akan
semakin sulit karena luas bidang yang bergesekan dengan lantai akan semakin
besar.

     Torsi dari motor juga berpengaruh pada perancangan roda. Dengan bentuk
roda seperti gambar di atas, yaitu dengan lebar belt sebesar 1 cm, diperlukan torsi
motor yang cukup sehingga robot dapat bergerak dengan baik.
                                                                            53




4.5 Perancangan Perangkat Lunak

     Algoritma yang digunakan pada robot ini menggunakan metode jelajah
lapangan, dimana gerak robot ditentukan berdasarkan arena yang ada. Program ini
dibuat untuk menjelajah semua ruangan yang ada diarena yaitu menggunakan
metode telusur dinding(wall following). Pada saat di start robot akan berusaha
mencari dinding baik kanan maupun kiri.

4.5.1 Berjalan Mengikuti Dinding Kanan atau Dinding Kiri
     Maju mengikuti dinding kanan (right wall following) digunakan ketika
robot bergerak maju dengan mengikuti dinding kanan. Robot akan berusaha
menjaga jarak dengan dinding kanan. Ketika jauh dari dinding kanan maka robot
akan mendekat dan sebaliknya ketika jarak terlalu dekat maka robot akan menjauh
sampai jarak yang dikehendaki maka robot bergerak maju. Karena hanya bagian
kanan saja maka sensor yang digunakan hanya sensor yang berada pada bagian
kanan yaitu US4 dan US5 serta US3 digunakan untuk mengetahui jarak robot
dengan halangan yang berada didepan.

     Maju mengikuti dinding kiri (left wall following)digunakan ketika robot
bergerak maju dengan mengikuti diding kiri. Robot akan berusaha menjaga jarak
dengan didinding kiri. Ketika jauh dari dinding kiri maka robot akan mendekat
dan sebaliknya ketika jarak terlalu dekat maka robot akan menjauh sampai jarak
yang dikehendaki maka robot bergerak maju. Karena hanya bagian kiri saja maka
sensor yang digunakan hanya sensor yang berada pada bagian kiri yaitu US1 dan
US2, serta sensor US6 digunakan untuk mengetahui jarak robot dengan halangan
yang berada didepan. Berikut tabel perbandingan data ultrasonic terhadap
pergerakan motor robot:
                                                                 54




Tabel 4.1 Input Ultrasonik us1 dan 2 Terhadap Pergerakan Motor

                  no   Scan_L=Us1+Us2         Pwm motor

                            Data Bit       Lpwm      Rpwm

                   1           3             100       5

                   2           4             100       10

                   3           5             100       20

                   4           6             100       30

                   5           8             100       70

                   6           9             100       80

                   7           11            100       90

                   8           12            100      100

                   9           14            60       100

                  10           15            40       100

                  11           16            25       100

                  12           17            20       100

                  13           18            15       100

                  14           19            10       100

                  15          >20             5       100
                                                                               55




       Data diatas merupakan scanning dinding kiri dimana robot selalu mengikuti
dinding. Sedangkan untuk rintangan didepan robot dapat menghindar bila us6 dan
us7 mendapat rintangan. Berikut table robot dapat menghindari atau berbelok:

Tabel 4.2 Input Data Ultrasonic Untuk Menghindar

 Robot       Data Us6   Data Us7         Data motor            Pwm Motor
berbelok
                                      Kiri       Kanan      Lpwm        Rpwm

 Kanan          10          15        maju      mundur        100        100

   Kiri          8          10       mundur      Maju         100        100



4.5.2 Scanning Lilin
       proses memasuki ruangan dan scanning lilin, dan pada ruangan tersebut
terdapat lilin, maka robot akan bergerak mendekati lilin dengan memperhatikan
kondisi lingkungan sekitar. Pada proses ini sensor yang digunakan antara lain
sensor UVTron terbuka,UVTron tertutup dan sensor Ultrasonik. UVTron terbuka
digunakan untuk mengetahui ada tidaknya lilin. Sedangkan sensor ultrasonik
digunakan untuk panduan bergerak supaya tidak menabrak atau menggores
dinding di depan ataupun disampingnya serta tidak menabrak lilin. UVTron
tertutup digunakan untuk meluruskan robot terhadap titik api lilin. Bila sensor
ultrasonik depan telah mendeteksi jarak kurang dari 20 cm maka robot akan
berhenti dan mamadamkan api. Berikut flowchar scaning lilin dan pemadaman
api:
                                                                                                             56




                                                 s ta r t



                                      T e lu s u r d in d in g k ir i




                                        S e n g a r1 = 1 a ta u               N
                                           S en ga r2 = 1


                                                            Y

                                                  s to p




                                                                                  N
                                                U v1=1



                                                            Y

                                             M a ju lu r u s




                                                                        N   B e lo k k ir i d a n b e lo k
                                         U v 2 l u r u s a p i?
                                                                                      kanan


                                                        Y

                                             M a ju lu r u s




                               N        S e n g a r1 = 1 a ta u
                                           S en ga r2 = 1
                                               U v2=1




                                                            Y

                                         M A T IK A N A P I




                                                 END




               Gambar 4.33 Flowchart Scaning Dan Pemadam Api

4.6 Pengujian Alat dan analisa

     Pengujian merupakan salah satu langkah penting yang harus dilakukan
untuk mengetahui apakah sistem yang dibuat telah sesuai dengan yang
direncanakan, hal itu dapat dilihat dari hasil-hasil yang dicapai selama pengujian
sistem. Selain untuk mengetahui apakah sistem sudah bekerja dengan baik sesuai
dengan yang diharapkan, pengujian juga bertujuan untuk mengetahui kelebihan
dan kekurangan dari sistem yang dibuat. Hasil-hasil pengujian tersebut nantinya
akan dianalisa agar dapat diketahui mengapa terjadi kekurangan. Pengujian
pertama-tama dilakukan secara terpisah, dan kemudian dilakukan kedalam sistem
yang telah terintegrasi.Pengujian yang dilakukan pada bab ini antara lain:
                                                                            57




1. Perangkat masukan
     a. Ultrasonic Sensor( PING))) )
     b. Electric Compass (CMPS 03)
     c. Flame detector (Hamamatsu UVtron)
     d. Sound activation (audio amplifier LM386)
     e.proxymty (sensor garis)
2. Perangkat keluaran
     a. Driver Motor DC
     b. LCD
     c. Driver Motor DC kipas
     d. Motor Servo
3. Strategi dan algoritma
     a. Navigasi jelajah lapangan
     b. Scaning lilin
4. Pengujian dilapangan

4.6.1 Pengujian Perangkat Masukan
1.      Sensor Ultrasonik
        Pengujian sensor ini bertujuan untuk mengetahui data jarak objek dengan
sensor dan linearitas data.

Peralatan:
a. Sensor ultrasonic
b. Minimum sistem mikrokontroller ATMega 8535
c. LCD 2 * 16 Character
d. Seperangkat downloader Atmel ISP dan program editor CodeVisionAVR.
                                                                           58




Rangkaian:

                          Mikrokontroler          Mikrokontroler
          Sensor
                          Atmega 8535             Atmega 8535      LCD
         ultrasonic
                           Mikro slave            Mikro master


                                     Komunikasi serial

              Gambar 4.34 Diagram Blok Pengujian Sensor Ultrasonic
Persiapan :
1) Memasang rangkaian seperti yang ditunjukkan pada gambar
2) Mengetik program pengujian pada CodeVisionAVR bahasa C untuk program
   pada ATMega 8535
3) Mengompile program pada CodeVisionAVR.
4) Mendownload program dengan ISP Programmer CodeVisionAVR.
5) Menjalankan program uji.
6) Mengamati data jarak yang dihasilkan sensor.
Hasil dan analisa:

     Pada LCD akan tampil data jarak yang dihasilkan sensor. Semakin jauh
objek maka data yang dihasikan semakin besar. Tabel dibawah adalah data sensor
ultrasonik untuk jarak dari 0-20 cm. Model scaning yang digunakan secara
bergantian, meskipun hal ini dapat memperlambat proses scaning. Tetapi dalam
kasus ini waktu yang dibutuhkan sudah memenuhi.
                                                                               59




Tabel 4.3 Data jarak sensor ultrasonik

                     Jarak dengan              Data ultrasonik
                      benda (cm)
                           0                        255
                           1                         2
                           2                         4
                           3                         6
                           4                         7
                           5                         8
                           6                         9
                           7                         10
                           8                         11
                           9                         12
                          10                         13
                          11                         14
                          12                         15
                          13                         16
                          14                         18
                          15                         20
                          16                         22
                          17                         23
                          18                         24
                          19                         25
                          20                         27


     Bila data pada tabel 4.3 dibandingkan dengan datasheet dari sensor, maka
semestinya pada jarak kurang dari 3 cm tidak dapat terdeteksi, atau tidak ada data
yang dihasilkan (255, jarak maksimal). Tetapi pada pengujian ini, terdapat data
pada jarak 1 dan 2 cm. Hal ini dapat terjadi dikarenakan oleh adanya pantulan dari
gelombang ultrasonik oleh permukaan obyek. Obyek yang digunakan berupa
bidang datar, sehingga pancaran ultrasonik dapat terpantulkan tidak lurus terhadap
pemancar dan terjadi pantulan, sehingga receiver menerima sinyal yang
seharusnya tidak ada. Dari data yang diperoleh pada tabel 4.3, dapat dibuat grafik
pada gambar 4.35 antara data ultrasonik dengan jarak ultrasonik dengan obyek
sebagai berikut.
                                                                                60




        Gambar 4.35 Grafik Data Ultrasonik Terhadap Jarak Dengan Benda

       Dari grafik diatas dapat diamati linearitas data ultrasonik. Grafik yang
dihasilkan tidak benar-benar lurus. Hal ini bisa terjadi akibat pengaruh lingkungan
sekitar, dimana terjadi pemantulan gelombang ultrasonik, dan jarak benda dengan
ultrasonik yang tidak benar-benar akurat. Akan tetapi, secara umum data yang
dihasilkan adalah linier, dimana perubahan datanya sebanding dengan perubahan
jarak benda.

2.     Kompas elektrik
       Pengujian sensor ini bertujuan untuk mengetahui data kompas dari koneksi
I2C.

Peralatan :
a. Modul sensor kompas elektrik

b. Minimum system mikrokontroller ATMega8535
                                                                          61




c. LCD

d. DC power supply + 5 volt

e. Seperangkat downloader Atmel ISP dan program editor CodeVisionAVR

Rangkaian:


                                      Mikrokontroler
                  Cmps03              Atmega 8535      LCD
                                      Mikro master


                           Komunikasi I2C
                 Gambar 4.36 Diagram Blok Pengujian Kompas

Persiapan :

1) Memasang rangkaian seperti yang ditunjukkan pada gambar 4.36

2) Mengetik program pengujian pada CodeVisionAVR dalam bahasa C untuk
   program pada ATMega8535.

3) Mengompile program pada CodeVisionAVR

4) Mendownload program dengan ISP Programmer melaluiCodeVisionAVR

5) Menjalankan program.

6) Memutar kompas pada empat arah mata angin

7) Mengamati dan mencatat data yang ditampilkan pada LCD

8) Mengkalibrasi kompas sesuai dengan prosedur pada datasheet

9) Mengambil lagi data kompas untuk keempat arah mata angin

Hasil dan Analisa :

     Data yang dihasilkan dari output dari kompas yaitu 0-255, seperti tampak
pada tabel 4.4 dibawah ini:
                                                                             62




Tabel 4.4 Data Posisi Kompas

                   Data kompas (desimal)             Posisi

                            201                      Utara

                             0                      Timur

                             64                     Selatan

                            141                      Barat



     Dari data tabel diatas, dapat dianalisa linearitas data terhadap sudut arah
mata angin. Selisih data antara posisi yang saling berurutan antara lain adalah
sebagai berikut.

                   Utara – timur : 60

                   Timur – selatan : 58

                   Selatan – barat : 77

                   Barat – utara : 60

     Tampak bahwa data tidak linier, hal ini dapat disebabkan oleh adanya
benda-benda yang memiliki medan magnet atau benda-bendatertentu yang
mempengaruhi kompas pada lingkungan sekitar. Dengan kata lain noise dari luar
mengganggu integritas data sensor kompas, sehingga menjadi tidak linier. Untuk
meredam noise ini dapat dilakukan dengan cara menempatkan kompas pada posisi
yang jauh dari benda-benda yang menghasilkan noise seperti motor yang
menghasilkan medan magnet. Untuk mendapat data yang lebih baik dapat
dilakukan kalibrasi pada kompas, dimana prosedur kalibrasi dapat dilihat pada
datasheet spesifikasi sensor kompas. Setelah dilakukan kalibrasi, diperoleh data
pada tabel 4.5 sebagai berikut.
                                                                              63




Tabel 4.5 Data Posisi Kompas Setelah Kalibrasi

                Data kompas (desimal)                  Posisi

                            0                          Utara

                           63                          Timur

                          127                          Selatan

                          191                           Barat


     Resolusi dari modul kompas ini adalah 360/255 = 1.40 . Jadi pergeseran 1
bit sama dengan 1,40. Nilai data 0-255 dikonversikan kedalam posisi karena ada 4
posisi sudut yang diharapkan jadi yang diambil hanya 4 posisi dan data yang
dihasilkan cukup linier. Karena kompas terpengaruh terhadap medan magnet
maka dalam pemasangan kompas harus dijauhkan dari benda yang yang
mengandung medan magnet seperti motor. Lapangan lomba tidak selalu
menghadap utara sehingga perlu dikalibrasi terlebih dahulu. Peletakan kompas
sebaiknya terletak pada pusat dari badan robot agar sudut yang dihasilkan seperti
yang diharapkan.

3. Flame detector / Hamamatsu Uvtron

     Pengujian sensor ini bertujuan untuk mengetahui sejauh mana sensor dapat
mendeteksi lilin data jarak objek dengan sensor dan linearitas data.

Peralatan
a. Modul sensor Hamamatsu Uvtron
b. LCD
c. Minimum system mikrokontroller ATMega8535
d. Seperangkat downloader Atmel ISP dan program editor CodeVisionAVR
                                                                             64




Rangkaian:

          jumper                             Mikrokontroler
                             Hamamatsu
                                             Atmega 8535           LCD
                               UV tron
         capasitor                           Mikro master



                     Gambar 4.37 Diagram Blok Pengujian Uvtron

Persiapan:
1) Memasang jumper dan capasitor pada tempat yang ditentukan
2) Menguji sensitifitas dari sensor

Hasil dan analisa

     UVtron ini terletak pada bagian atas robot dan tidak diberi tutup karena
sensor ini berfungsi untuk mengetahui ada tidaknya lilin di ruangan tanpa tahu
tepatnya posisi lilin. Peletakan sensor hendaknya pada tempat yang terbuka dan
diposisi depan, hal ini dimaksudkan untuk mempercepat proses deteksi karena
hanya cukup bagian depan robot saja yang masuk ruangan robot sudah dapat
mendeteksi seluruh ruangan. Pengujian dilakukan dengan radius maksimal 3
meter hal ini karena radius jarak terjauh dalam satu ruangan tidak lebih dari 3
meter.




             Gambar 4.5 Pengujian posisi lilin terhadap sensor Uvtron

          Gambar 4.38 Pengujian Posisi Lilin Terhadap Flame Detektor

     Pada gambar diatas titik yang berwarna merah adalah posisi lilin yang dapat
terdeteksi oleh sensor dan warna biru adalah posisi lilin yang tidak dapat
                                                                                65




terdeteksi sensor. Ada lokasi yang menurut data sheet tidak terdeteksi tapi pada
prakteknya terdeteksi hal ini karena jarak yang penulis gunakan untuk pengujian
hanya 3 meter sedangkan pada data sheet 5 meter.

     UVtron 1 terletak pada bagian tengah robot dan diberi tutup karena sensor
ini berfungsi untuk mengetahui posisi lilin. Pengujian dilakukan dengan radius
maksimal 3 meter hal ini karena jarak terjauh dari ruangan tidak lebih dari 3 meter.
Untuk mengatur sensitifitas dari sensor dapat diatur dengan mengubah posisi dari
jumper. semakin kecil nilai posisi jumper semakin sensitif tetapi ada juga hal yang
perlu diperhatikan yaitu bila semakin sensitif maka lingkungan sangat
mempengaruhi misalnya cahaya matahari, blitz dari kamera, sehingga hal ini yang
dapat menggangu dari data yang kita harapkan. Untuk memperlebar pulsa maka
cukup dengan memperbesar nilai capasitor tetapi jika nilai kapasitor terlalu besar
maka respon yang dihasilkan juga lambat jadi ketika lilin seharusnya sudah tidak
terdeteksi tapi karena lebar pulsa yang masih lebar maka hasil output akan masih
dianggap ada lilin.

4.   Pengujian Sound activation (Tone decoder LM386)

     Pengujian sensor ini bertujuan untuk mengetahui sound activation dapat
bekerja pada suara yang ditentukan dimana gelombang suara yang diterima
diubah dalam bentuk data ADC

Peralatan
a. Modul sound aktivation
b. LCD
c. Minimum system mikrokontroller ATMega8535
d. Seperangkat downloader Atmel ISP dan program editor CodeVisionAVR
                                                                              66




Rangkaian:


      Tone decoder                  Mikrokontroler
                                                                   LCD
         LM386                      Atmega 8535
                          ADC



              Buzzer


              Gambar 4.39 Diagram Blok Pengujian Sound Activation

Hasil dan Analisa:

     Data yang dihasilkan dari input suara frekuensi tertentu maka ditangkap oleh
mic, jadi suara yang diterima akan berupa data ADC 0-1024 berikut data yang
diambil:

Tabel 4.6 Data Jenis Suara

                             Jenis suara          Nilai ADC

                       Sound activation(buzzer)      655

                             Suara tenang            0

                             Suara ramai             20



     Dari data diatas dapat disimpulkan bahwa suara buzzer lebih memungkinkan
untuk mengaktifkan robot. hal ini disebabkan karena suara yang ditangkap
merupakan suara yang berbunyi nyaring(mengadung trebel) atau frekuesi suara
yang kecil.

5.   Pengujian Sensor Garis

     Pengujian sensor dilakukan untuk mengetahui apakah sensor telah bekerja
sesuai seperti yang di harapkan. Dapat mendeteksi garis putih yang ada pada
                                                                              67




setiap pintu masuk ruangan dan tempat lilin yang berbentuk lingkaran dan
berwarna putih.

Peralatan
a. Modul Sensor garis
b. voltmeter
Hasil dan analisa:
     Sensor proximity ini digunakan untuk mendeteksi garis dan robot sudah
berada pada ruangan tertentu yang dibuat menggunakan pasangan LED / Infrared
dan phototransistor. Bila cahaya LED memantul pada garis dan diterima oleh
basis phototransistor maka phototransistor menjadi saturasi(on) sehingga tegangan
output akan mendekati 2sampai dengan 5 volt. Sebaliknya jika tidak terdapat
pantulan maka basis phototransistor tidak mendapat arus bias sehingga menjadi
cut-off, dengan demikian tegangan output sama dengan tegangan Induk (Vcc).
Pengujian sensor dengan memberi garis / warna putih pada sensor kemudian ukur
tegangan yang keluar pada pin keluaran sensor.




     a. Sensor mendeteksi garis hitam       b. LED Indikator proxymty mati
                     Gambar 4.40 Sensor Mengenai Garis Hitam
                                                                               68




     a. Sensor mendeteksi garis putih       b. LED Indikator proxymty hidup

                    Gambar 4.41 Sensor Mengenai Garis Putih

      Jika sensor diberi garis putih maka pin output sensor akan mengeluarkan
tegangan sebagai data. Sebagai isyarat bahwa terdapat tegangan adalah LED
sinyal akan menyala seperti gambar di atas. Berikut ini adalah hasil ukur tegangan
output pada sensor :

Tabel 4.7 Hasil Pengukuran Tegangan Sensor Garis

                                 PIN    V OUT

                                  1      3,8 V

                                  2      3,8 V


      Tegangan yang keluar dari sensor antara 2,4 Vsamapai 5V maka dalam
mikrokontroler dibaca 1 dan sebaliknya apabila tegangan dibawah 2,4V maka
nilainya 0 (nol).

4.6.2 Pengujian Perangkat keluaran

1.    Driver motor DC

      Pengujian ini untuk mengetahui respon rangkaian untuk pengaturan
kecepatan motor. cara kerja H-Bridge yang dihubungkan pada motor kiri dan
kanan yang dikendalikan oleh Mikrokontroler.
                                                                                   69




Peralatan:

a. Modul driver L298N

b. Motor dc 24 V

c. Minimum system mikrokontroller ATMega8535
d. Seperangkat downloader Atmel ISP dan program editor CodeVisionAVR

Rangkaian:
                                                            Motor
                                                             Kiri


          Mikrokontroler              L298N

                                     H-Bridge                Motor
                                                             Kanan



                     Gambar 4.42 Blok Diagram Pengujian L298N

Persiapan

     Aktifkan IC dengan memberi tegangan +5 V pada port Vss serta berikan
tegangan +10V- +12V pada port Vs. Hubungkan port output pada motor serta port
input pada modul Mikrokontroler.

Hasil dan analisa:
     Pada pengujian motor DC, ATMega8535 diisi dengan program control
motor DC. Program ini digunakan untuk mengatur arah motor DC agar gerak
robot baik berjalan maju, mundur, belok kanan dan kiri dapat sesuai dengan
perancangan sistem. Sebelum program dibuat inisialisasikan setiap port terlebih
dahulu.

#define dirA_Ki         PORTD.4                 // Direction A untuk motor kiri
#define dirB_Ki         PORTD.5                 // Direction B untuk motor kiri
#define EnKi           PORTD.6                  // Enable L298 untuk motor kiri
#define EnKa           PORTD.7                  // Enable L298 untuk motor kanan
#define dirC_Ka            PORTD.2              // Direction C untuk motor kanan
                                                                                    70




#define dirD_Ka            PORTD.3              // Direction D untuk motor kanan
        Untuk dapat menjalankan motor DC sesuai dengan arah maka dapat dilihat
pada tabel berikut.

Tabel 4.8 Data Input Untuk Motor Driver L298N
     Arah         Port D2       Port D3   Port D7    Port D4    Port D5   Port D6

                   (In 1)       (In 2)    (En 1)      (In 3)     (In 4)    (En 2)

 Maju                  1            0       1           1          0         1

 Mundur                0            1       1           0          1         1

 Kiri                  0            0       0           1          0         1

 Kanan                 1            0       1           0          0         0

 Motor OFF             0            0       0           0          0         0

1) Program untuk mengatur arah pergerakan motor maju adalah

                      void maju()
                            {
                           dirA_Ki=1; dirB_Ki=0;
                           dirC_Ka=1; dirD_Ka=0;
                            lpwm=100;rpwm=110;
                            }
2) Program untuk mengatur arah pergerakan motor belok kiri adalah

                      void belok_kiri()
                            {
                            dirA_Ki=0;dirB_Ki=1;
                            dirC_Ka=1;dirD_Ka=0;
                            }
                                                                              71




3) Program untuk mengatur arah pergerakan motor belok kanan adalah

                  void belok_kanan()
                       {
                       dirA_Ki=1; dirB_Ki=0;
                       dirC_Ka=0;dirD_Ka=1;
                       }
4) Program untuk mengatur arah pergerakan motor mundur adalah

                  void mundur()
                  {
                      dirA_Ki=0;dirB_Ki=1;
                      dirC_Ka=0;dirD_Ka=1;
                  }
5) Program untuk mengatur arah pergerakan motor stop adalah

                  void stop()
                  {
                       dirA_Ki=0;dirB_Ki=0;
                       dirC_Ka=0;dirD_Ka=0;
                       lpwm=0;rpwm=0;
                  }
     Setelah dilakukan pengujian seperti yang dilakukan diatas robot dapat
bergerak sesuai yg diharapkan seperti pada program. Berarti driver motor bekserja
sesuai yang diharapkan.

2.   Pengujian LCD

     Pengujian ini dimaksudkan untuk mengetahui bahwa modul lcd ini dapat
bekerja dengan baik yaitu menampilkan data sensor yang terdapat pada robot.
                                                                            72




Peralatan:

a. Modul LCD

b. Minimum system mikrokontroller ATMega8535
c. Seperangkat downloader Atmel ISP dan program editor CodeVisionAVR

Rangkaian:

                        Mikrokontroler      Mikrokontroler
     LCD slave                                                  LCD master
                            slave              master


                                Komunikasi serial
                     Gambar 4.43 Diagram Blok Pengujian LCD

Persiapan:

1) Program Mikrokontoler Slave untuk menampilkan data sensor ultrasonic dan
     sound activation

2) Program mikrokontroler master untuk menampilkan data sensor kompas dan
     UVTron

3) Lihat hasil yang keluar pada LCD

hasil dan analisa:

a)     Pada LCD slave dapat menampilkan 6 data ultrasonic berupa data biner 0 –
       255 sedangkan sensor sound activation berupa data ADC 0 – 1024




       Gambar 4.44 Tampilan Data Sensor Ultrasonic Dan Sound Activation
                                                                          73




b)   Pada LCD master dapat menampilkan data sensor kompas berupa data biner
     0-255 sedangkan sensor UVTron hanya menampilkan karakter yaitu bila
     sensor UVTron menemukan api muncul karakter “API” jika tidak ada
     muncul karakter “NO”.




                Gambar 4.45 Tampilan Data Sensor Uvtron Dan Compass

     Jadi LCD berperan penting untuk mengetahui bahwa sensor bekerja atau
tidak dan berperan penting dalam pengambilan data pada lapangan

3.   Pengujian Driver motor DC Kipas

     Pengujian ini untuk mengetahui respon rangkaian untuk pengaturan
kecepatan motor dimana motor DC kipas mengunakan trigger high low dalam
penggunaannya. Driver ini menggunakan transistor TIP31 yang diberi tegangan
12 volt. Hubungkan port output pada motor serta port input pada modul
Mikrokontroler. Berikut ini adalah blok diagram pengujian mikrokontroler dan
transistor TIP31.

                    Mikrokontroler
                    Atmega 8535      TIP31            Motor DC
                    Mikro master


           Gambar 4.46 Diagram Blok Pengujian Driver Motor Kipas

     Kipas akan aktif jika mikrokontroler memberi logika 1 dan logika 0 untuk
mematikan motor dc kipas. jika robot menemukan api maka akan mengaktifkan
kipas dengan cara memberikan perintah dengan logika 1 dan sebaliknya.
                                                                              74




4.    Driver motor servo
      Aktifkan Motor servo dengan memberi tegangan +5V pada VCC serta
berikan juga output pada port C.6 . Hubungkan port output pada motor servo.


                                                Tegangan 5 volt




                           Mikrokontroler
                           Atmega 8535              servo
                           Mikro master



               Gambar 4.47 Blok Diagram Pengujian Motor Servo

      Pada pengujian motor Servo, ATMega8535 diisi dengan program control
motor Servo. Program ini digunakan untuk mengatur arah motor Servo kipas
bergerak baik belok kanan dan kiri dapat sesuai dengan perancangan sistem.
Sebelum program dibuat inisialisasikan setiap port terlebih dahulu

      #define kipas          PORTC.5

a.   Program untuk mengatur arah servo ke kanan 90 derajat adalah
               for(i=0;i<50;i++)
                  {
                  PORTC.6=1;
                  delay_us(1200); //2000
                  PORTC.6=0;
                  delay_us(18100);
                  }
b.   Program untuk mengatur arah servo ke kiri 90 derajat adalah
               for(i=0;i<50;i++)
                      {
                      PORTC.6=1;
                      delay_us(1200);
                      PORTC.6=0;
                      delay_us(18900);      }
                                                                                   75




4.7   Pengujian Strategi dan Algoritma
4.7.1 Pengujian berjalan mengikuti dinding kanan dan kiri
      Pengujian dilakukan dengan menguji rule kanan dan kiri pada lintasan lurus,
belokan 90º, belokan 180º, dan menguji sudut datang robot terhadap dinding.
Pengujian dilakukan dengan melihat performa dari robot selama melalui lintasan-
lintasan tersebut. Tujuan utama dari kontrol tersebut adalah supaya robot tidak
menabrak ataupun bergesekan dengan dinding. Karena rule kiri dan rule kanan
sebenarnya adalah sama maka pengujian hanya dilakukan pada rule kiri saja.

Hasil pengujian pada lintasan lurus

Tabel 4.9 Hasil Percobaan Pada Lintasan Lurus

            percobaan     1    2    3    4    5    6    7    8    9    10

              Hasil       √   √    √    √    √    √    √    √    √    √

          Keterangan : √ = berhasil melewati tanpa menabrak dinding

                         X= menabrak dinding
      Dari hasil pengujian diatas, tampak tidak terjadi error sama sekali, ini berarti
robot dapat bergerak dengan baik tanpa menabrak dinding. Pada lintasan lurus ini,
metode kontrol dapat bekerja dengan baik dan dapat memenuhi kebutuhan untuk
berjalan lurus mengikuti dinding. Dengan demikian robot memiliki nilai error 0 %
dan tingkat kepresisian 100 %.

Tabel 4.10 Hasil percobaan belokan 90 º

           percobaan      1    2    3    4    5    6    7    8    9    10

              Hasil       √    X    √   √    √    √     X    √    √    √

         Keterangan : √ = berhasil melewati tanpa menabrak dinding

                        X= menabrak dinding
                                                                             76




     Dari 10 kali percobaan ternyata terjadi error sebanyak 2 kali. Error dalam
hal ini robot menyentuh dinding atau sudut belokannya terlalu besar, sehingga
sangat jauh dari dinding

.




             a) haluan terlalu besar        b) Rotasi 90º

                Gambar 4.48 Pergerakan Robot Pada Belokan 90º

4.7.2 Pengujian Scanning Lilin

     Pengujian dilakukan dengan meletakkan lilin pada suatu posisi didalam
ruangan, dan robot melakukan proses scanning dari pintu masuk ruangan. Robot
akan bergerak mendekati lilin dan memadamkan.



                                         TEPI




                                        TENGAH




                                                        SUDUT


                             Gambar 4.49 Posisi Lilin
                                                                                  77




      Lilin dapat ditentukan pada suatu ruangan berdasarkan program pengacak
ruangan yang ada pada KRCI. Kemungkinan Posisi lilin sendiri dalam suatu
ruangan terdapat pada titik-titik pada gambar. Pada pengujian robot ini diambil
kemungkinan lilin berada pada tengah ruangan, sudut ruangan dan tepi ruangan.

Tabel 4.11 Hasil percobaan scanning lilin

Posisi lilin                                  Percobaan

                 1      2       3      4       5     6      7       8     9      10

 Tengah         X       √       √      X      X      √      √       X     X      √
 ruangan

  Sudut          √      √              √       √     √              √     √      √
 ruangan

Salah satu       √      √       √      √      X      √              √     X      √
sisi ruang

Keterangan: √ : berhasil mendeteksi dan memadamkan

               x : mendeteksi tetapi menabrak dan tidak berhasil memadamkan

                 : mendeteksi dan memadamkan tetapi menyentuh dinding ruangan

               Ø : tidak mendeteksi posisi lilin.

      Dari hasil pengujian diatas, terdapat 3 macam hasil. Yang pertama adalah
robot berhasil mendeteksi, menemukan dan memadamkan api lilin. Yang kedua
adalah robot berhasil mendeteksi tetapi menabrak dan tidak berhasil memadamkan.
Yang ketiga adalah robot berhasil            mendeteksi dan memadamkan tetapi
menyentuh dinding ruangan Sedangkan yang keempat adalah robot tidak dapat
mendeteksi posisi llilin karena jarak robot terhadap lilin jauh .

      Saat lilin berada di tengah ruangan, terjadi 5 kali error dimana robot berhasil
mendeteksi posisi lilin dan bergerak mendekati tetapi menabrak dan tidak berhasil
memadamkan. Robot menabrak lilin karena sensor ultrasonik depan tiadak
mendeteksi adanya lilin. Pada saat posisi lilin berada disudut ruangan atau dekat
dengan salah satu sisi ruangan robot berhasil mematikan tapi menyentuh diding
                                                                                78




karena peletakan lilin pada posisi yang terlalu dekat dengan dinding, tetapi pada
posisi lilin di sudut ruangan, error saat robot menabrak lilin tidak terjadi karena
pada proses scanning lilin, robot juga akan mendeteksi sudut ruangan.

      Secara keseluruhan, dari 30 kali percobaan pemadaman lilin, 10 kali erjadi
error. Sehingga dapat dikatakan proses scanning lilin memiliki nilai error sebesar
33.33 % dan tingkat keberhasilan sebesar 66.67 %. Secara umum dapat dikatakan
proses scanning ini sedikit berhasil mancapai hasil yang diharapkan.

4.8   Pengujian Sistem secara keseluruhan

      Pengujian robot ini diambil berdasarkan lapangan pertandingan KRCI.
Berikut gambar pengujian lapangan robot:




                      Gambar 4.50 Arena Pengujian Robot
Keterangan:        1 = Ruangan 1
                   2 = Ruangan 2
                   3 = Ruangan 3
                   4 = Ruangan 4
                   H = posisi start robot
                                                                               79




     Pada pengujian ini robot akan melakukan navigasi menggunakan telusur
dinding kiri dan scaning lilin pada arena yang telah ditentukan dimana lilin di
tempatkan pada 4 ruang secara acak.. Pengujian robot diambil data dalam 4 kali
percobaan dalam melakukan navigasi untuk memadamkan api.

Table 4.12 Hasil Percobaan Pemadaman Lilin

  Percobaan     Lilin ruang 1    Lilin ruang 2    Lilin ruang 3    Lilin ruang 4

      1               √                √                √                √

      2               √                X                √                X

      3               √                √                X                √

      4               √                √                √                X

Keterangan:   √ : berhasil mendeteksi dan memadamkan

              x : mendeteksi tetapi menabrak dan tidak berhasil memadamkan

     Berdasarkan percobaan diatas robot berhasil memadamkan 12 api lilin dan
gagal 4 kali dari 16 kali percobaan. Jadi nilai error robot dalam memadamkan lilin
adalah 25 ℅ dan berhasil memadamkan api sebesar 75% persen.
                               BAB 5. PENUTUP


5.1 Kesimpulan

     Setelah melakukan perencanaan dan pembuatan system kemudian dilakukan
pengujian dan analisa dari robot, maka diperoleh beberapa kesimpulan dan saran
yang diharapkan berguna bagi kelanjutan dalam rangka penyempurnaan robot
yang akan datang.Beberapa kesimpulan tentang sistem kerja dari dari sistem yang
dibuat.
1.   Pengujian sensor UVTron menggunakan pembungkus dapat memperkecil
     radius mendeteksi api sampai 200 hasilnya lebih efektif dari pada sensor
     dengan keadaan terbuka.
2.   Penggunaan mikrokontroler AVR 8535 kapasitas memorinya sudah
     mencukupi untuk kalangan dunia robotika.
3.   Penggunaan sensor compass pada robot ini berpengaruh penting untuk
     berbelok 900 ke kanan mau pun ke kiri.
4.   Penggunaan sensor Ping Ultrasonic Range Finder lebih baik untuk
     melakukan navigasi pada robot karena data yang di ambil cukup stabil.
5.   Penggunaan 2 sensor uvtron masih kurang efektif dalam pencarian lilin
     dalam ruangan yang terbukti pada percobaan scaning lilin dengan tingkat
     keberhasilan memadamkan 66,67%.
6.   Penggunan metode telusur dinding masih kurang efektif dalam navigasi
     robot pemadam api
5.2 Saran
     Robot ini masih membutuhkan sensor untuk menambahkan tingkat
kecerdasannya yaitu Sensor Thermal Array karena dapat memudahkan dalam
pencarian titik fokus lilin. Untuk pengembang tugas akhir ini dianjurkan untuk
menggunakan motor rotary encoder untuk memudah navigasi robot untuk mencari
lilin. Dan algoritma yang digunakan sebaiknya menggunakan algoritma mapping
yaitu memetakan setiap arena dalam arena.




                                      80
                           DAFTAR PUSTAKA

Budiharto, Widodo, 2006, Membuat Robot Cerdas Panduan Utama Untuk
      Mengikuti Kontes Robot, Jakarta: PT Elex Media Komputindo.

Budhiharto, Widodo . 2008 . Mikrokontroler AVR ATmega 16 . Jakarta : PT Elex
      Media Komputindo.

Budiharto, Widodo, 2008, 10 Proyek Robot Spektakuler, Jakarta: PT Elex Media
      Komputindo.

Heryanto, M.ary, 2008. Pemrograman Bahasa C Untuk Mikrokontroler AVR
          ATmega 8535. Yogyakarta : Penerbit ANDI

Wardhana, Lingga, 2007, Belajar Sendiri Mikrokontroler AVR Seri ATmega 8535,
      Yogyakarta : Penerbit ANDI




                                    81
LAMPIRAN




   82
                                                                              83




Lampiran 1 Program Mikrokontroler Slave

/********************************         #define set_ping1 DDRC.0     //ping set
*********************                     sbg in-out
This program was produced by the          #define set_ping2 DDRC.1     //ping set
                                          sbg in-out
CodeWizardAVR V1.25.3 Standard
                                          #define set_ping3 DDRC.2     //ping set
Automatic Program Generator               sbg in-out
© Copyright 1998-2007 Pavel Haiduc,       #define set_ping4 DDRC.3     //ping set
HP InfoTech s.r.l.                        sbg in-out
http://www.hpinfotech.com                 #define set_ping5 DDRC.4     //ping set
                                          sbg in-out
Project :
                                          #define set_ping6 DDRC.5     //ping set
Version :
                                          sbg in-out
Date : 5/18/2010
                                          #define set_ping7 DDRC.6     //ping set
Author : F4CG                             sbg in-out

Company : F4CG
Comments:                                 #define port_ping1 PORTC.0      //ping
                                          kirim
Chip type         : ATmega8535
                                          #define port_ping2 PORTC.1      //ping
Program type       : Application          kirim
Clock frequency      : 4.000000 MHz       #define port_ping3 PORTC.2      //ping
                                          kirim
Memory model         : Small
                                          #define port_ping4 PORTC.3      //ping
External SRAM size : 0                    kirim
Data Stack size    : 128                  #define port_ping5 PORTC.4      //ping
*********************************         kirim
********************/                     #define port_ping6 PORTC.5      //ping
#include <mega8535.h>                     kirim

#include <delay.h>                        #define port_ping7 PORTC.6      //ping
                                          kirim
                                                                                      84




#define input_ping1 PINC.0           //ping   // Place your code here
ambil
                                                   TCCR2=0x00;
#define input_ping2 PINC.1           //ping
ambil                                              TCNT2=253;

#define input_ping3 PINC.2           //ping   }
ambil
                                              #define ADC_VREF_TYPE 0x00
#define input_ping4 PINC.3           //ping
                                              // Read the AD conversion result
ambil
                                              unsigned int read_adc(unsigned char
#define input_ping5 PINC.4           //ping
                                              adc_input)
ambil
                                              {
#define input_ping6 PINC.5           //ping
ambil                                         ADMUX=adc_input                          |
                                              (ADC_VREF_TYPE & 0xff);
#define input_ping7 PINC.6           //ping
ambil                                         // Start the AD conversion
// Alphanumeric LCD Module functions          ADCSRA|=0x40;
#asm                                          delay_ms(1);
    .equ __lcd_port=0x18 ;PORTB               // Wait for the AD conversion to
                                              complete
#endasm
                                              while ((ADCSRA & 0x10)==0);
#include <lcd.h>
                                              ADCSRA|=0x10;
                                              return ADCW;
// Standard Input/Output functions
                                              }
#include <stdio.h>
int data,adc;
                                              // Declare your global variables here
unsigned char sound[5];
// Timer 2 overflow interrupt service
routine                                       void main(void)
interrupt      [TIM2_OVF]             void    {
timer2_ovf_isr(void)
                                              // Declare your local variables here
{
                                                                              85




// Input/Output Ports initialization     // Func7=In Func6=Out Func5=In
                                         Func4=In Func3=In Func2=In Func1=In
// Port A initialization                 Func0=In
// Func7=In Func6=In Func5=In            // State7=T State6=0 State5=T State4=T
Func4=In Func3=In Func2=In Func1=In      State3=T State2=T State1=T State0=T
Func0=In
                                         PORTD=0x00;
// State7=T State6=T State5=T State4=T
State3=T State2=T State1=T State0=T      DDRD=0x40;
PORTA=0x00;
DDRA=0x00;                               // Timer/Counter 0 initialization
                                         // Clock source: System Clock
// Port B initialization                 // Clock value: Timer 0 Stopped
// Func7=In Func6=In Func5=In            // Mode: Normal top=FFh
Func4=In Func3=In Func2=In Func1=In
Func0=In                                 // OC0 output: Disconnected

// State7=T State6=T State5=T State4=T   TCCR0=0x00;
State3=T State2=T State1=T State0=T
                                         TCNT0=0x00;
PORTB=0x00;
                                         OCR0=0x00;
DDRB=0x00;

                                         // Timer/Counter 1 initialization
// Port C initialization
                                         // Clock source: System Clock
// Func7=In Func6=In Func5=In
                                         // Clock value: Timer 1 Stopped
Func4=In Func3=In Func2=In Func1=In
Func0=In                                 // Mode: Normal top=FFFFh
// State7=T State6=T State5=T State4=T   // OC1A output: Discon.
State3=T State2=T State1=T State0=T
                                         // OC1B output: Discon.
PORTC=0x00;
                                         // Noise Canceler: Off
DDRC=0x00;
                                         // Input Capture on Falling Edge
// Port D initialization
                                         // Timer 1 Overflow Interrupt: Off
                                                                                 86




// Input Capture Interrupt: Off           // INT0: Off
// Compare A Match Interrupt: Off         // INT1: Off
// Compare B Match Interrupt: Off         // INT2: Off
TCCR1A=0x00;                              MCUCR=0x00;
TCCR1B=0x00;                              MCUCSR=0x00;
TCNT1H=0x00;
TCNT1L=0x00;                              //     Timer(s)/Counter(s)    Interrupt(s)
                                          initialization
ICR1H=0x00;
                                          TIMSK=0x40;
ICR1L=0x00;
OCR1AH=0x00;
                                          // USART initialization
OCR1AL=0x00;
                                          // Communication Parameters: 8 Data, 1
OCR1BH=0x00;                              Stop, No Parity
OCR1BL=0x00;                              // USART Receiver: Off
                                          // USART Transmitter: On
// Timer/Counter 2 initialization         // USART Mode: Asynchronous
// Clock source: System Clock             // USART Baud rate: 9600 (Double
                                          Speed Mode)
// Clock value: Timer 2 Stopped
                                          UCSRA=0x02;
// Mode: Normal top=FFh
                                          UCSRB=0x08;
// OC2 output: Disconnected
                                          UCSRC=0x86;
ASSR=0x00;
                                          UBRRH=0x00;
TCCR2=0x00;
                                          UBRRL=0x33;
TCNT2=0x00;
OCR2=0x00;
                                          // Analog Comparator initialization
                                          // Analog Comparator: Off
// External Interrupt(s) initialization
                                                                              87




// Analog Comparator Input Capture by      if(adc>=500)
Timer/Counter 1: Off
                                           {
ACSR=0x80;
                                                 PORTD.6=1;
SFIOR=0x00;
                                           }


// ADC initialization
                                          // Place your code here
// ADC Clock frequency: 1000.000 kHz
                                           set_ping1=1;     //set as output
// ADC Voltage Reference: AREF pin
                                           delay_us(100);
// ADC High Speed Mode: Off
                                           port_ping1=0;    //set low
// ADC Auto Trigger Source: None
                                           delay_us(10);
ADMUX=ADC_VREF_TYPE & 0xff;
                                           port_ping1=1;    //set high
ADCSRA=0x85;
                                           delay_us(5);
SFIOR&=0xEF;
                                           port_ping1=0;    //set low
                                           delay_us(10);
// LCD module initialization
                                           set_ping1=0;     //set as input
lcd_init(16);
                                           while (input_ping1==0)
                                           {
// Global enable interrupts
                                           };
#asm("sei")
                                           #asm ("sei");
while (1)
                                           TCCR2=0x06;
   {
                                           while(input_ping1==1)
   lcd_clear();
                                           {};
       adc=read_adc(6);
                                           TCCR2=0x00;

sprintf(sound,"%3d",adc);lcd_gotoxy(0,0    data=TCNT2;
);lcd_puts(sound);
                                           putchar(data);
                                                                         88




     //sprintf(sonic,"%d",data1);       // sprintf(sonic," %d",data5);
     //lcd_gotoxy(0,0);                  //lcd_gotoxy(12,0);
    // lcd_puts(sonic);                  //lcd_puts(sonic);
     TCNT2=0x00;                         TCNT2=0;
     data=0x00;                          data=0;
     delay_ms(10);                      delay_ms(10);


set_ping5=1;//set as output         set_ping2=1;//set as output
     delay_us(100);                      delay_us(100);
     port_ping5=0;//set low              port_ping2=0;//set low
     delay_us(10);                       delay_us(10);
     port_ping5=1;//set high             port_ping2=1;//set high
     delay_us(5);                        delay_us(5);
     port_ping5=0;//set low              port_ping2=0;//set low
     delay_us(10);                       delay_us(10);
     set_ping5=0;//set as input          set_ping2=0;//set as input
     while (input_ping5==0)              while (input_ping2==0)
     {};                                 {};
     #asm ("sei");                       #asm ("sei");
     TCCR2=0x06;                         TCCR2=0x06;
     while(input_ping5==1)               while(input_ping2==1)
     {};                                 {};
     TCCR2=0x00;                         TCCR2=0x00;
     data=TCNT2;                         data=TCNT2;
    putchar(data);                       putchar(data);
                                                                      89




     //sprintf(sonic,"%d",data2);      //lcd_gotoxy(10,0);
    // lcd_gotoxy(4,0);               // lcd_puts(sonic);
    // lcd_puts(sonic);                TCNT2=0;
     TCNT2=0;                          data=0;
     data=0;                           delay_ms(10);
     delay_ms(10);
set_ping4=1;//set as output         set_ping3=1;//set as output
     delay_us(100);                    delay_us(100);
     port_ping4=0;//set low            port_ping3=0;//set low
     delay_us(10);                     delay_us(10);
     port_ping4=1;//set high           port_ping3=1;//set high
     delay_us(5);                      delay_us(5);
     port_ping4=0;//set low            port_ping3=0;//set low
     delay_us(10);                     delay_us(10);
     set_ping4=0;//set as input        set_ping3=0;//set as input
     while (input_ping4==0)            while (input_ping3==0)
     {};                               {};
     #asm ("sei");                     #asm ("sei");
     TCCR2=0x06;                       TCCR2=0x06;
     while(input_ping4==1)             while(input_ping3==1)
     {};                               {};
     TCCR2=0x00;                       TCCR2=0x00;
     data=TCNT2;                       data=TCNT2;
     putchar(data);                    putchar(data);
     //sprintf(sonic,"%d",data4);      //sprintf(sonic,"%d",data3);
                                                                                90




 //lcd_gotoxy(7,0);                     //sprintf(sonic,"%d",data1);
 //lcd_puts(sonic);                     //lcd_gotoxy(0,0);
 TCNT2=0;                               // lcd_puts(sonic);
 data=0;                                TCNT2=0x00;
 delay_ms(10);                          data=0x00;
                                        delay_ms(10);
set_ping6=1;          //set as output
 delay_us(100);                         set_ping7=1;          //set as output
 port_ping6=0;        //set low         delay_us(100);
 delay_us(10);                          port_ping7=0;         //set low
 port_ping6=1;        //set high        delay_us(10);
 delay_us(5);                           port_ping7=1;         //set high
 port_ping6=0;        //set low         delay_us(5);
 delay_us(10);                          port_ping7=0;         //set low
 set_ping6=0;         //set as input    delay_us(10);
 while (input_ping6==0)                 set_ping7=0;          //set as input
 {                                      while (input_ping7==0)
 };                                     {
 #asm ("sei");                          };
 TCCR2=0x06;                            #asm ("sei");
 while(input_ping6==1)                  TCCR2=0x06;
 {};                                    while(input_ping7==1)
 TCCR2=0x00;                            {};
 data=TCNT2;                            TCCR2=0x00;
 putchar(data);                         data=TCNT2;
                                         91




     putchar(data);
     //sprintf(sonic,"%d",data1);
     //lcd_gotoxy(0,0);
    // lcd_puts(sonic);
     TCNT2=0x00;
     data=0x00;
     delay_ms(10);


   if             (data)PORTD.0=1;else
PORTD.0=0;
         delay_ms(10);
     putchar(255);
     delay_ms(10);
    };
}
                                                                                  92




Lampiran 2 Program Mikrokontroler Master
/********************************           tanpa ridhoMu, niscaya langkah kaki
*********************                      kami semakin berat.
This program was produced by the                          amin
CodeWizardAVR V1.25.3 Standard
Automatic Program Generator                Chip type         : ATmega8535
© Copyright 1998-2007 Pavel Haiduc,        Program type       : Application
HP InfoTech s.r.l.
                                           Clock frequency       : 4,000000 MHz
http://www.hpinfotech.com
                                           Memory model           : Small
                                           External SRAM size : 0
Project :
                                           Data Stack size    : 128
Version :
                                           *********************************
Date : 21/04/2010                          ********************/
Author : F4CG                              /************************
                                           Bismillahirrahmanirrahim
Company : F4CG                             *******************************/
Comments: ya       Allah,     sepertinya   #include <mega8535.h>
hambaMu ini jauh dariMu...
                                           #include <delay.h>
apakah karena itu Engkau berikan beban
yg amat berat bagi kami                    #include <stdlib.h>
sepertinya amanah yg Kau berikan ini       // I2C Bus functions
tiada kuat kami menanggungnya
                                           #asm
tapi kuingat Engkau pernah berkata
bahwa                                       .equ __i2c_port=0x15 ;PORTC

Engkau tidak membebani seseorang            .equ __sda_bit=1
melainkan       sesuai    dengan
                                            .equ __scl_bit=0
kesanggupannya.
                                           #endasm
Lapangkanlah hati kami ...
                                           #define compas_address 0xC0
mudahkan atas segala kesulitan yang
kami hadapi                                #include <i2c.h>
                                                                           93




                                          #define ccw_utara   0
// Alphanumeric LCD Module functions      #define ccw_timur   62
#asm
 .equ __lcd_port=0x18 ;PORTB              //#define urip      PINC.4
#endasm                                   #define ser_kip      PORTC.6
#include <lcd.h>                          #define kipas       PORTC.5
                                          #define sen_gar1        PINA.2
#define dirA_Ki       PORTD.4             #define sen_gar2        PINA.3
       // Direction A untuk motor kiri
                                          #define uv1         PINA.7
#define dirB_Ki       PORTD.5
       // Direction B untuk motor kiri    #define uv2         PINA.5

#define EnKi        PORTD.6               #define RXB8 1
       // Enable L298 untuk motor kiri
                                          #define TXB8 0
#define EnKa      PORTD.7
                                          #define UPE 2
       // Enable L298 untuk motor
kanan                                     #define OVR 3
#define dirC_Ka       PORTD.2             #define FE 4
       // Direction C untuk motor kanan
                                          #define UDRE 5
#define dirD_Ka       PORTD.3
       // Direction D untuk motor kanan   #define RXC 7



#define cw_barat      192    //120        #define FRAMING_ERROR (1<<FE)

#define cw_selatan    124    //58         #define PARITY_ERROR (1<<UPE)

#define cw_utara      0     //190         #define DATA_OVERRUN (1<<OVR)

#define cw_timur      62      //0         #define DATA_REGISTER_EMPTY
                                          (1<<UDRE)
                                          #define RX_COMPLETE (1<<RXC)
#define ccw_barat     192
#define ccw_selatan 124
                                                                               94




unsigned char     komp_U=                  interrupt      [USART_RXC]         void
       228, //239                          usart_rx_isr(void)
                komp_T=       128,         {
       //130
                                           char status,data;
                          komp_S=
       158,    //148,                      #asm

                          komp_B=              push r26
       192;
                                               push r27
unsigned char buff[16],padam,panas;
                                               push r30
char kompas[20];
                                               push r31
unsigned int cmp;
                                               in r26,sreg
int status,scan_R,scan_L,blk_L,blk_R;
                                               push r26
// USART Receiver buffer
                                           #endasm
#define RX_BUFFER_SIZE 8
                                           status=UCSRA;
char rx_buffer[RX_BUFFER_SIZE];
                                           data=UDR;
unsigned                          char
                                           if ((status & (FRAMING_ERROR |
rx_wr_index,rx_rd_index,rx_counter;        PARITY_ERROR                 |
unsigned char set1,set2;                   DATA_OVERRUN))==0)

// This flag is set on USART Receiver          {
buffer overflow
                                               rx_buffer[rx_wr_index]=data;
bit rx_buffer_overflow;
                                            if (data==255||++rx_wr_index ==
unsigned                             int   RX_BUFFER_SIZE) rx_wr_index=0;
us1,us2,us3,us4,us5,us6,us7,fuzz_L1,fuz
                                            if      (++rx_counter              ==
z_R1,i;
                                           RX_BUFFER_SIZE)
                                                   {
// USART Receiver interrupt service
                                                   rx_counter=0;
routine
                                                   rx_buffer_overflow=1;
#pragma savereg-
                                                   };
                                                                          95




                                    char getchar(void)
     us1=rx_buffer[0];              {
     us5=rx_buffer[1];              char data;
     us7=rx_buffer[6];              while (rx_counter==0);
     us2=rx_buffer[2];              data=rx_buffer[rx_rd_index];
     us4=rx_buffer[3];              if      (++rx_rd_index         ==
                                    RX_BUFFER_SIZE) rx_rd_index=0;
     us3=rx_buffer[4];
                                    #asm("cli")
     us6=rx_buffer[5];
                                    --rx_counter;
                                    #asm("sei")
     };
                                    return data;
     #asm
                                    }
    pop r26
                                    #pragma used-
    out sreg,r26
                                    #endif
    pop r31
                                    // Standard Input/Output functions
    pop r30
                                    #include <stdio.h>
    pop r27
                                    unsigned char a,lpwm,rpwm;
    pop r26
                                    // Timer 0 overflow interrupt service
#endasm                             routine
}                                   interrupt      [TIM0_OVF]            void
                                    timer0_ovf_isr(void)
#pragma savereg+
                                    {
#ifndef _DEBUG_TERMINAL_IO_
                                         a++;
// Get a character from the USART
Receiver buffer                              if(a<=lpwm)
#define _ALTERNATE_GETCHAR_                  {
#pragma used+                                EnKi=1;
                                                                                 96




      }                                     {
      else                                  unsigned char data_komp;
      {                                     i2c_start();
      EnKi=0;                               i2c_write(compas_address);
      }                                     i2c_write(address);
      if(a<=rpwm)                           i2c_start();
      {EnKa=1;                              i2c_write(compas_address | 1);
      }                                     data_komp=i2c_read(0);
      else                                  i2c_stop();
      {                                     return data_komp;
      EnKa=0;                               }
      }
}                                           void tampil()
                                            {
void     compas_write(unsigned    char           lcd_clear();
address, unsigned char data_komp)
{                                           sprintf(buff,"%3d",us1);lcd_gotoxy(0,0);
                                            lcd_puts(buff);
      i2c_start();
      i2c_write(compas_address);            sprintf(buff,"%3d",us2);lcd_gotoxy(4,0);
                                            lcd_puts(buff);
      i2c_write(address);
      i2c_write(data_komp);
                                                   sprintf(buff,"%3d",us3);lcd_goto
      i2c_stop();                           xy(8,0);lcd_puts(buff);

}
                                                   sprintf(buff,"%3d",us4);lcd_goto
                                            xy(12,0);lcd_puts(buff);
unsigned char        read_compas(unsigned
char address)
                                                                           97




                                               dirA_Ki=1;
       sprintf(buff,"%3d",us5);lcd_goto
xy(16,0);lcd_puts(buff);                       dirB_Ki=0;
                                               dirC_Ka=1;
       sprintf(buff,"%3d",us6);lcd_goto
                                               dirD_Ka=0;
xy(4,1);lcd_puts(buff);
                                               maju();lpwm=100;rpwm=110;
sprintf(buff,"%3d",us7);lcd_gotoxy(8,1);       }
lcd_puts(buff);
                                           void maju_cpt()

       sprintf(kompas,"%3d",read_com           {
pas(0x01));lcd_gotoxy(12,1);lcd_puts(ko
mpas);
                                               dirA_Ki=1;

         delay_ms(10);                         dirB_Ki=0;

}                                              dirC_Ka=1;

// Declare your global variables here          dirD_Ka=0;
                                               maju();lpwm=120;rpwm=130;

void maju()                                    }

     {                                     void maju_scan()
                                           {

     dirA_Ki=1;                                dirA_Ki=1;

     dirB_Ki=0;                                dirB_Ki=0;

     dirC_Ka=1;                                dirC_Ka=1;

     dirD_Ka=0;                                dirD_Ka=0;

     }                                         maju();lpwm=60;rpwm=70;

void maju_lrs()                            }

     {                                     void belok_kiri()
                                               {
                                                                             98




                                        void Turnka_1(unsigned char torki,
                                        unsigned char torka, unsigned char t)
    dirA_Ki=0;
                                        {
    dirB_Ki=1;
                                             unsigned int i;
    dirC_Ka=1;
                                             belok_kanan();
    dirD_Ka=0;
                                             rpwm=torka;       lpwm=torki;
    }
                                             delay_ms(t);
void Turnki_1(unsigned char torki,
unsigned char torka, unsigned char t)        for(i=0;i<200;i++) while(!uv1){};
{                                            for(i=0;i<200;i++) while(uv1){};
    unsigned int i;
    belok_kiri();                       }
    rpwm=torka;       lpwm=torki;       void stop()
    delay_ms(t);                        {
    for(i=0;i<200;i++) while(!uv1){};        dirA_Ki=0;
    for(i=0;i<200;i++) while(uv1){};         dirB_Ki=0;
                                             dirC_Ka=0;
}                                            dirD_Ka=0;
void belok_kanan()                           lpwm=0;rpwm=0;
    {                                   }
                                        void mandeg()
    dirA_Ki=1;                          {
    dirB_Ki=0;                          lpwm=0;rpwm=0;
    dirC_Ka=0;                          }
    dirD_Ka=1;                          void mundur()
    }                                   {     dirA_Ki=0;
                                                              99




        dirB_Ki=1;                    delay_us(18100);
        dirC_Ka=0;                    }
        dirD_Ka=1;
                                      for(i=0;i<50;i++)
}                                     {
                                      PORTC.6=1;
void put_kipas()                      delay_us(600); //2000
{                                     PORTC.6=0;
if(uv1==1&&(sen_gar1==1||sen_gar2==   delay_us(18100);
1))
                                      }
    {
                                      for(i=0;i<50;i++)
        mundur();lpwm=80;rpwm=80;
                                      {
        delay_ms(100);
                                      PORTC.6=1;
        stop();
                                      delay_us(1200);
        delay_ms(500);
                                      PORTC.6=0;
        kipas=1;
                                      delay_us(18900);
                                      }
        lcd_clear();
                                          for(i=0;i<50;i++)
        lcd_gotoxy(0,0);
                                      {
        lcd_putsf("api");
                                      PORTC.6=1;
        for(i=0;i<50;i++)
                                      delay_us(2000);
    {
                                      PORTC.6=0;
    PORTC.6=1;
                                      delay_us(18900);
    delay_us(1200); //2000
                                      }
    PORTC.6=0;
                                      kipas=0;
                                                                         100




     delay_ms(300);                                    else
                                          if(scan_L==6){rpwm=20;lpwm=120;}
     stop();
                                                       else
     delay_ms(100);                       if(scan_L==8){rpwm=25;lpwm=120;}
                                                       else
                                          if(scan_L==9){rpwm=30;lpwm=120;}
      }
                                                       else
     else
                                          if(scan_L==11){rpwm=40;lpwm=120;}
      if(PINA.7==0){
                                                     else
      PORTC.5=0;                          if(scan_L==12){rpwm=50;lpwm=120;}

     }                                                 else
                                          if(scan_L==14){rpwm=60;lpwm=120;}
}
                                                       else
void go_ki_pelan()                        if(scan_L==15){rpwm=70;lpwm=120;}
{     maju_lrs();                                      else
                                          if(scan_L==16){rpwm=80;lpwm=120;}
if(us1<=1){rpwm=50;lpwm=100;}
                                                       else
          else if(us1<=10)                if(scan_L==17){rpwm=90;lpwm=120;}
          {                                            else
                 status=us1-us2;          if(scan_L==18){rpwm=100;lpwm=120;}

                 scan_L=us1+(us2*2);                   else
                                          if(scan_L==19){rpwm=110;lpwm=120;}

          if(status>0){rpwm=20;lpwm=130                else
;}                                        if(scan_L==20){rpwm=130;lpwm=120;}

             else                                      else
if(scan_R==3){rpwm=5;lpwm=120;}           if(scan_L==22){rpwm=130;lpwm=120;}

             else                                      else
if(scan_L==4){rpwm=10;lpwm=120;}          if(scan_L==24){rpwm=130;lpwm=110;}

             else                                      else
if(scan_L==5){rpwm=15;lpwm=120;}          if(scan_L==26){rpwm=130;lpwm=100;}
                                                       else
                                          if(scan_L==28){rpwm=130;lpwm=90;}
                                                                       101




             else                    }
if(scan_L==29){rpwm=130;lpwm=80;}
                                     void go_ki_lon()
             else
if(scan_L==31){rpwm=130;lpwm=70;}    {   maju_lrs();

           else                      if(us1<=1){rpwm=50;lpwm=100;}
if(scan_L==32){rpwm=130;lpwm=60;}
                                           else if(us1<=10)
             else
                                           {
if(scan_L==34){rpwm=130;lpwm=50;}
                                                  status=us1-us2;
             else
if(scan_L==35){rpwm=130;lpwm=40;}                 scan_L=us1+us2;
             else
if(scan_L==36){rpwm=130;lpwm=30;}          if(status>0){rpwm=0;lpwm=150;
                                     }
             else
if(scan_L==37){rpwm=130;lpwm=20;}                 else
                                     if(scan_R==3){rpwm=5;lpwm=100;}
             else
if(scan_L==38){rpwm=130;lpwm=10;}                 else
                                     if(scan_L==4){rpwm=10;lpwm=100;}
             else
if(scan_L==39){rpwm=130;lpwm=5;}                  else
                                     if(scan_L==5){rpwm=20;lpwm=100;}
             else
if(scan_L>=40){rpwm=130;lpwm=0;}                  else
                                     if(scan_L==6){rpwm=30;lpwm=100;}
      }
                                                  else
              else
                                     if(scan_L==8){rpwm=70;lpwm=100;}
if(us2>=8){rpwm=150;lpwm=10;}
                                                  else
            else
                                     if(scan_L==9){rpwm=80;lpwm=100;}
if(us2<=6){rpwm=20;lpwm=100;}
                                                  else
            //else
                                     if(scan_L==11){rpwm=90;lpwm=100;}
if(us6<=20||us5<=20){rpwm=0;lpwm=2
00;}                                            else
                                     if(scan_L==12){rpwm=100;lpwm=100;}
                                                  else
                                     if(scan_L==14){rpwm=100;lpwm=60;}
                                                                       102




             else                                scan_R=us5+(us4*2);
if(scan_L==15){rpwm=100;lpwm=40;}
             else                          if(status>0){rpwm=20;lpwm=130
if(scan_L==16){rpwm=100;lpwm=25;}    ;}
             else                                 else
if(scan_L==17){rpwm=100;lpwm=20;}    if(scan_R==3){lpwm=5;rpwm=130;}
             else                                 else
if(scan_L==18){rpwm=100;lpwm=15;}    if(scan_R==4){lpwm=10;rpwm=130;}
             else                                 else
if(scan_L==19){rpwm=100;lpwm=10;}    if(scan_R==5){lpwm=15;rpwm=130;}
        else                                      else
if(scan_L>=20){rpwm=100;lpwm=5;}     if(scan_R==6){lpwm=20;rpwm=130;}
                                                  else
                                     if(scan_R==8){lpwm=25;rpwm=130;}
       }
                                                  else
              else                   if(scan_R==9){lpwm=30;rpwm=130;}
if(us2>=8){rpwm=120;lpwm=10;}
                                                  else
            else                     if(scan_R==11){lpwm=40;rpwm=130;}
if(us2<=6){rpwm=20;lpwm=100;}
                                                else
            //else                   if(scan_R==12){lpwm=50;rpwm=130;}
if(us6<=20||us5<=20){rpwm=0;lpwm=2
00;}                                              else
                                     if(scan_R==14){lpwm=60;rpwm=130;}
                                                  else
}                                    if(scan_R==15){lpwm=70;rpwm=130;}
void go_ka_pelan()                                else
                                     if(scan_R==16){lpwm=80;rpwm=130;}
{    maju_lrs();
                                                  else
if(us5<=1){rpwm=80;lpwm=150;}
                                     if(scan_R==17){lpwm=90;rpwm=130;}
      else if(us5<=10)
                                                  else
      {                              if(scan_R==18){lpwm=100;rpwm=150;}

              status=us5-us4;                     else
                                     if(scan_R==19){lpwm=110;rpwm=150;}
                                                                        103




             else                                  else
if(scan_R==20){lpwm=150;rpwm=130;}   if(us4>=8){lpwm=145;rpwm=20;}
             else                                else
if(scan_R==22){lpwm=150;rpwm=130;}   if(us4<=6){lpwm=20;rpwm=120;}
             else
if(scan_R==24){lpwm=150;rpwm=130;}
                                     }
             else
if(scan_R==26){lpwm=150;rpwm=110;}   void cw(unsigned int comp)

             else                    {
if(scan_R==28){lpwm=150;rpwm=100;}
                                              belok_kanan();lpwm=100;rpwm=
             else                    100;
if(scan_R==29){lpwm=150;rpwm=90;}
                                              while(1)
             else
                                              {cmp=read_compas(1);
if(scan_R==31){lpwm=150;rpwm=80;}
                                            if((cmp==comp-
           else
                                     3)||(cmp==comp-2)||(cmp==comp-
if(scan_R==32){lpwm=150;rpwm=70;}
                                     1)||(cmp==comp)||(cmp==comp+1)||(cmp
             else                    ==comp+2)||(cmp==comp+3))
if(scan_R==34){lpwm=150;rpwm=60;}
                                              break;}
             else
                                     }
if(scan_R==35){lpwm=150;rpwm=50;}
             else
if(scan_R==36){lpwm=150;rpwm=40;}    void ccw(unsigned int comp)
             else                    {
if(scan_R==37){lpwm=150;rpwm=30;}
                                              belok_kiri();lpwm=80;rpwm=80;
             else
if(scan_R==38){lpwm=150;rpwm=20;}             while(1)

             else                           {cmp=read_compas(1);
if(scan_R==39){lpwm=150;rpwm=10;}
                                           if((cmp==comp-3)||(cmp==comp-
             else                    2)||(cmp==comp-
if(scan_R>=40){lpwm=150;rpwm=5;}     1)||(cmp==comp)||(cmp==comp+1)||(cmp
                                     ==comp+2)||(cmp==comp+3))
      }
                                            break;}
                                                                              104




}                                                }
void cek_api1()                          }
{                                        void mlaku()
    maju_scan();                         {
    if(sen_gar1==1||sen_gar2==1)             go_ki_lon();


{stop();delay_ms(100);maju_scan();dela   while(us6<12||us7<12){belok_kanan();rp
y_ms(500);                               wm=100;lpwm=100;}
    while(uv2==1)
                                         //while(us3<8&&us7<10){belok_kiri();r
     {                                   pwm=80;lpwm=80;}
belok_kanan();lpwm=80;rpwm=80;delay
_ms(500);
                                         while(uv2==1&&(sen_gar1==1||sen_gar
    while(uv1==1)                        2==1))
    maju_lrs();                                  {
                                                     maju_scan();delay_ms(500);
while(uv1==1&&(sen_gar1==1||sen_gar
2==1))
                                         belok_kanan();rpwm=60;lpwm=60;delay
         {put_kipas();}                  _ms(500);
    }
                                         belok_kiri();rpwm=60;lpwm=60;delay_
    }
                                         ms(500);
    else if(uv2==0){
                                                     while(uv1==1)
    cw(cw_barat);
                                                     {
    maju_lrs();
                                                            maju_scan();
    while(us6<15||us3<15)
                                                            put_kipas();
    {
                                                     }
    go_ki_lon();
                                                 }
    }
                                             }
                                                                             105




void main(void)                          PORTC=0x00;
{//float adc;                            DDRC=0xff;
// Declare your local variables here
                                         // Port D initialization
// Input/Output Ports initialization     // Func7=In Func6=In Func5=In
                                         Func4=In Func3=In Func2=In Func1=In
// Port A initialization                 Func0=In
// Func7=In Func6=In Func5=In            // State7=T State6=T State5=T State4=T
Func4=In Func3=In Func2=In Func1=In      State3=T State2=T State1=T State0=T
Func0=In
                                         PORTD=0x00;
// State7=T State6=T State5=T State4=T
State3=T State2=T State1=T State0=T      DDRD=0x00;
PORTA=0x00;
DDRA=0x00;                               // Timer/Counter 0 initialization
                                         // Clock source: System Clock
// Port B initialization                 // Clock value: Timer 0 Stopped
// Func7=In Func6=In Func5=In            // Mode: Normal top=FFh
Func4=In Func3=In Func2=In Func1=In
Func0=In                                 // OC0 output: Disconnected

// State7=T State6=T State5=T State4=T   TCCR0=0x01;
State3=T State2=T State1=T State0=T
                                         TCNT0=0x00;
PORTB=0x00;
                                         OCR0=0x00;
DDRB=0x00;

                                         // Timer/Counter 1 initialization
// Port C initialization
                                         // Clock source: System Clock
// Func7=Out Func6=Out Func5=In
                                         // Clock value: Timer 1 Stopped
Func4=In Func3=In Func2=In Func1=In
Func0=In                                 // Mode: Normal top=FFFFh
// State7=0 State6=0 State5=T State4=T   // OC1A output: Discon.
State3=T State2=T State1=T State0=T
                                                                               106




// OC1B output: Discon.              TCNT2=0x00;
// Noise Canceler: Off               OCR2=0x00;
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off   // External Interrupt(s) initialization
// Input Capture Interrupt: Off      // INT0: Off
// Compare A Match Interrupt: Off    // INT1: Off
// Compare B Match Interrupt: Off    // INT2: Off
TCCR1A=0x00;                         MCUCR=0x00;
TCCR1B=0x00;                         MCUCSR=0x00;
TCNT1H=0x00;
TCNT1L=0x00;                         //     Timer(s)/Counter(s)      Interrupt(s)
                                     initialization
ICR1H=0x00;
                                     TIMSK=0x01;
ICR1L=0x00;
OCR1AH=0x00;
                                     // USART initialization
OCR1AL=0x00;
                                     // Communication Parameters: 8 Data, 1
OCR1BH=0x00;                         Stop, No Parity
OCR1BL=0x00;                         // USART Receiver: On
                                     // USART Transmitter: Off
// Timer/Counter 2 initialization    // USART Mode: Asynchronous
// Clock source: System Clock        // USART Baud rate: 9600 (Double
                                     Speed Mode)
// Clock value: Timer 2 Stopped
                                     UCSRA=0x02;
// Mode: Normal top=FFh
                                     UCSRB=0x90;
// OC2 output: Disconnected
                                     UCSRC=0x86;
ASSR=0x00;
                                     UBRRH=0x00;
TCCR2=0x00;
                                                                           107




UBRRL=0x33;                                  {
                                             stop();
// Analog Comparator initialization          lcd_clear();
// Analog Comparator: Off
                                         sprintf(kompas,"%3d",read_compas(0x0
// Analog Comparator Input Capture by    1));lcd_gotoxy(8,1);lcd_puts(kompas);
Timer/Counter 1: Off
                                             if(uv1==1)
ACSR=0x80;
                                             {
SFIOR=0x00;
                                                 lcd_gotoxy(0,0);
                                                 lcd_putsf("api");
// I2C Bus initialization
                                             }
i2c_init();
                                             else if(uv2==1)
                                             {
// LCD module initialization
                                                 lcd_gotoxy(0,1);
lcd_init(16);
                                                 lcd_putsf("api");

// Global enable interrupts
                                             }
#asm("sei")
                                             if(uv1==0){
while (1)
                                                  lcd_gotoxy(0,0);
    {
                                                 lcd_putsf("no");}
                                             if(uv2==0){
   if(PINC.4==1||PINA.4==1){ tampil();
                                                  lcd_gotoxy(0,1);
    mlaku();
                                                 lcd_putsf("no");}
    //cek_api1();
                                                      }
   }
                                                 };
  else if(PINC.4==0||PINA.4==0)
                                         }
                                                108




Lampiran 3. Foto Robot




                         Robot Tampak Depan




                         Robot Tampak Samping
                                   109




Lampiran 4. Datasheet Ultrasonik
110
111
112
113
114
                                         115




Lampiran 5. Datasheet Magnetic Compass
116
117
118
119
                                       120




Lampiran 6. Profil Penulis




Nama       : Achmad Suryono

TTL        : Banyuwangi, 25 Mei 1989

Alamat     : Singojuruh - Alasmalang

Telp       : 085236585461

Email      : hrs_yoyon@plasa.com

            yon_surya@yahoo.com

Hobi       : bola, riset elektronika