Anda di halaman 1dari 136

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

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

s to p

N
U v1=1

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

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

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