Anda di halaman 1dari 74

PROYEK AKHIR

ROBOT SUMO

REJEKI AGUNG SAPUTRO


NRP. 7103 030 031

DOSEN PEMBIMBING :
AKHMAD HENDRIAWAN, ST.
NIP. 132 300 369

JURUSAN TEKNIK ELEKTRONIKA


POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA 2006
ROBOT SUMO
Oleh :

REJEKI AGUNG SAPUTRO


7103.030.031

Proyek Akhir Ini Diajukan Sebagai Salah Satu Syarat


Untuk Memeperoleh Gelar Ahli Madya (A.Md.)
di
Politeknik elektronika negeri Surabaya
Institut teknologi sepuluh nopember Surabaya

Disetujui oleh:
Tim Penguji Proyek Akhir Dosen Pembimbing

1. Agus Indra Gunawan, ST 1. Akhmad Hendriawan, ST


NIP:132.297.801 NIP: 132.300.369

2. Santi Anggraini, ST
NIP:132.300.370

3. Firman Arifin, ST
NIP: 132.296.743

Mengetahui :
Ketua Jurusan Teknik Elektronika

Ir. Dedid Cahya Happyanto, M.T


NIP. 131.694.603
ABSTRAK
Teknologi sekarang ini telah berkembang pesat dan sangat luas,
terutama dibidang robotika. Di beberapa negara maju, robot tidak
hanya digunakan pada bidang industri, namun teknologi robot juga
mengarah ke dalam dunia hiburan. Pada tugas akhir ini dibuat Robot
Sumo yang diadopsi dari pertandingan robot sumo. Robot sumo ini
harus mendorong lawannya hingga keluar arena, apabila robot tersebut
berhasil mendorong lawannya keluar arena maka robot tersebut
dinyatakan menang. Sensor yang digunakan pada robot sumo adalah
sensor inframerah, sensor ini berfungsi sebagai mata robot yang
bertugas mencari halangan. Ketika kedua sensor mendeteksi adanya
halangan didepan maka robot akan bergerak maju kemudian
mendorongnya hingga keluar arena. Sedangkan apabila hanya salah
satu sensor saja yang mendeteksi maka robot akan bergerak sesuai
dengan kondisi dimana sensor tersebut mendeteksi halangan. Selain itu
pada robot sumo juga terdapat sensor untuk mendeteksi adanya garis
putih yang merupakan batas tepi arena. Apabila sensor garis ini
mendeteksi adanya garis maka robot bergerak menjauh dari garis
tersebut agar tidak terjatuh. Hal yang paling penting dari robot sumo
ini adalah tidak terjatuh dari arena. Untuk otaknya digunakan
mikrokontroller sebagai pusat pengendali sistem secara keseluruhan,
sedangkan untuk penggeraknya digunakan motor DC. Seperti halnya
manusia, robot juga mempunyai keterbatasan seperti pandangan dan
sensor dari robot ini mempunyai batasan tentang jarak deteksi sejauh
100 cm tegak lurus dari sensor dan sudut elevasi sensor adalah 400.
Berdasarkan pengukuran pada jarak dibawah 10 cm sensor akan
mengalami error, karena jarak bidang pantul terlalu dekat dengan
sensor.

Kata Kunci : Robot, Mikrokontroller, Sensor


ABSTRACT
This time technology have expanded at full speed and very wide,
especially in robotic. In other country robots not only use for industry
field but also they also used for entertainment. This final project makes
the Robot Sumo which adopted from sumo competition. This robot must
push out the enemy until out of the ring, if the robot success push out the
enemy out of the ring, the robot can be the winner. The sensor that used
is infrared sensor, this sensor has function like human eyes to find an
obstacle. When both of sensors detect that there is an obstacle in front of
robot then the robot will move forward and push it until out of the ring.
When only one of the sensors detects an obstacle the robot will move
like the condition where the sensors detect an obstacle. Beside that in
robot sumo also have sensor to detect the white line on the ring. When
this sensor detects it the robot will move away from that line. The
important thing from this robot is not fall down from the ring. The brain
of this system used a microcontroller to control all of system, and for
moving the robot used motor DC. Like human, robot also has a limit
such as visualization of sensor. This robot has limit about range
detection, the maximum range detection of this sensor about 100 cm
forward from sensor and the elevation angle of sensor 400. Based on test
when the distance closer than 10 cm the sensor will error because the
obstacle is too close with sensor.

Keyword: Robot, Microcontroller, Sensor


KATA PENGANTAR

Alhamdulillah, segala puja dan puji syukur penulis panjatkan


kepada Allah S.W.T, karena atas limpahan rahmat dan hidayah-Nya
penulis diberikan kemudahan dan kelancaran dalam menyelesaikan
Proyek Akhir ini, serta tak terlupakan iringan salam dan sholawat bagi
junjungan kami nabi besar Muhammad SAW.
Dengan pengerahan segenap usaha kami akhirnya kami dapat
menyelesaikan Proyek Akhir kami yang berjudul:

ROBOT SUMO

Dengan terselesaikannya buku laporan Proyek Akhir ini, kami


berharap semoga buku ini dapat membawa manfaat pembaca pada
umumnya dan juga bagi kami pada khususnya serta semua pihak yang
berkepentingan. Kami juga berharap agar Proyek Akhir ini dapat
dikembangkan sehingga dapat digunakan untuk mendukung
perkembangan ilmu pengetahuan.
Dengan segala upaya kami telah berusaha sebaik mungkin
menyelesaikan proyek akhir ini, namun kami menyadari bahwa ”tak ada
yang sempurna didunia ini” sehingga mungkin masih banyak terdapat
kekurangan dalam penulisan Proyek Akhir ini. Untuk itu koreksi, kritik
dan saran yang bersifat membangun sangat diperlukan demi pendekatan
kesempurnaan dari Proyek Akhir ini.
Akhirnya tak lupa kami ucapkan terima kasih kepada semua pihak
yang telah memberikan bantuan sehingga terselesaikannya Proyek Akhir
ini.

Surabaya, 28 Juli 2006

Penulis
UCAPAN TERIMA KASIH
Dengan terselesaikannya proyek akhir ini penulis mengucapkan
banyak terima kasih atas bantuan semua pihak yang diberikan pada
penulis. Ucapan terima kasih ini kami berikan kepada :

1. Allah SWT yang telah memberikan rahmat dan berkah-Nya,


serta tak terlupakan iringan salam dan sholawat bagi junjungan
kami Nabi Muhammad SAW
2. Papa & Mama tercinta terima kasih atas doa dan saran yang
diberikan sehingga dapat menyelesaikan proyek akhir ini.
3. Bapak Prof. Dr.Ir. Muh. Nuh, DEA, Selaku Rektor ITS
4. Bapak Dr. Ir. Titon Dutono, M Eng , selaku direktur PENS-ITS
5. Bapak Ir. Dedid CH, MT selaku Ketua Jurusan Teknik
Elektronika.
6. Bapak Akhmad Hendriawan, ST yang telah memberikan
pengarahan dan bimbingan dengan penuh kesabaran untuk
menyelesaikan tugas akhir Ini
7. HoNey yang telah memberikanku Dukungan SpirIt dalam kondisi
SuSaH SeNanG, suKa Duka ditanggung bersama serta SemangaT
dalam mengerjakan TA, MakAsih Ya.... Honey_Q Chayank.
Miuu......2 KeEp YouR SmIle 4 Me.
8. Fuad Hasan selaku tim robot its yang telah banyak membantu
dalam penyelesaian proyek akhir ini.
9. Teman-teman yang ada di ”CRUSTY CRUB” yang telah banyak
membantu dalam penyelesaian TA_Q. Dan jangan lupa Keep Our
Friendship FoReVer, O.K. PrEnd!!
10. Seluruh pihak yang tak dapat kami sebut satu persatu terima
kasih atas bantuannya dalam penyelesaian tugas akhir ini
DAFTAR ISI

Hal
HALAMAN JUDUL…………………………………………….. i
HALAMAN PENGESAHAN…………………………………… ii
ABSTRAK……………………………………………………….. iii
ABSTRACT……………………………………………………… iv
KATA PENGANTAR…………………………………………… v
UCAPAN TERIMA KASIH……………………………………. vi
DAFTAR ISI.................................................................................. vii
DAFTAR GAMBAR…………………………………………….. ix
DAFTAR TABEL………………………………………………... xi

BAB I. PENDAHULUAN……………………………………... 1
1.1 Pendahuluan………………………………………… 1
1.2 Permasalahan……………………………………….. 2
1.3 Batasan Masalah……………………………………. 2
1.4 Tujuan & Manfaat…………………………………... 2
1.5 Metodologi………………………………………….. 3
1.6 Sistematika Pembahasan……………………………. 3

BAB II. TEORI PENUNJANG………………………………… 5


2.1 Pengertian Robot Sumo…………………………….. 5
2.2 Mikrokontroller Atmel AVR Atmega16.................... 5
2.2.1 Mikrokontroler AVR....................................... 5
2.2.2 Port Berfungsi Sebagai Input/Output ............. 10
2.2.3 Port Berfungsi Sebagai Analog Digital
Converter......................................................... 11
2.2.4 Interrupt........................................................... 15
2.2.5 Rutin-Rutin Standar ........................................ 16
2.3 Sensor Inframerah (SHARP GP2D12)....................... 18
2.4 Motor DC.................................................................... 20

BAB III. PERANCANGAN DAN PEMBUATAN ALAT.......... 23


3.1 Konfigurasi Sistem...................................................... 23
3.2 Perancangan dan Pembuatan Perangkat Keras ........... 26
3.2.1 Perencanaan dan Pembuatan Sensor Deteksi
Garis................................................................. 26
3.2.2 Perencanaan dan Pembuatan Sensor Deteksi
Lawan.............................................................. 27
3.2.3 Perancangan Mikrokontroller.......................... 28
3.2.3.1 Rangkaian Clock Generator.................. 28
3.2.3.2 Perencanaan dan Pembuatan
Rangkaian Power Supply...................... 28
3.2.3.3 Perancangan Interfacing I/O................. 29
3.2.4 Perencanaan dan Pembuatan Driver Motor...... 30
3.3 Perancangan dan Pembuatan Perangkat Lunak.......... 33

BAB IV. PENGUJIAN DAN ANALISIS.................................... 35


4.1 Pengujian Sensor Inframerah (SHARP GP2D12)….. 35
4.1.1 Pengujian Jarak Deteksi Sensor Inframerah
(SHARP GP2D12) menggunakan LCD.......... 35
4.1.2 Pengujian Sudut Elevasi Sensor Inframerah
(SHARP GP2D12) menggunakan LED........... 37
4.2 Pengujian Sistem Minimum AVR.............................. 38
4.3 Pengujian Driver Motor DC....................................... 40
4.4 Pengujian Sistem Secara Keseluruhan........................ 41

BAB V. PENUTUP........................................................................ 49
5.1 Kesimpulan................................................................. 49
5.2 Saran………………………………………………... 49

DAFTAR PUSTAKA
LAMPIRAN
RIWAYAT PENULIS
DAFTAR GAMBAR

Hal
Gambar 2.1 Pin-pin Atmega16 dalam kemasan 40-pin DIP.... 7
Gambar 2.2 Blok Diagram Arsitektur CPU dari AVR............. 8
Gambar 2.3 Penentuan Port yang akan dipakai........................ 9
Gambar 2.4 Alur Pemrograman dan Proses Download............ 9
Gambar 2.5 Mengaktifkan ADC Internal dari
Mikrokontroller.................................................... 11
Gambar 2.6 Register ADMUX………………………………. 12
Gambar 2.7 Register ADCSRA……………………………… 13
Gambar 2.8 Register SFIOR…………………………………. 14
Gambar 2.9 Timing Diagram ADC Free Running Mode......... 15
Gambar 2.10 LCD pada Port B................................................. 17
Gambar 2.11 Rangkaian Internal dari Sensor Inframerah........ 18
Gambar 2.12 Kurva Perbandingan Antara Tegangan dan
Jarak.................................................................... 19
Gambar 3.1 Blok Diagram Sistem............................................ 23
Gambar 3.2 Mekanisme Gerak Robot Sumo............................ 24
Gambar 3.3 Rangkaian Sensor Deteksi Garis........................... 27
Gambar 3.4 Rangkaian Sensor Deteksi Serangan Lawan ........ 27
Gambar 3.5 Rangkaian osilator kristal...................................... 28
Gambar 3.6 Rangkaian power supply untuk mikrokontroler.... 29
Gambar 3.7 Rangkaian Driver Motor....................................... 31
Gambar 3.8 Gambar Robot Sumo Bagian Bawah.................... 31
Gambar 3.9 Gambar Robot Sumo Bagian Atas........................ 32
Gambar 3.10 Gambar Robot Sumo Keseluruhan..................... 33
Gambar 3.11 Flowchart Pembuatan Program........................... 34
Gambar 4.1 Listing Program Pengujian SHARP GP2D12
melalui LCD…………………………………. 36
Gambar 4.2 Listing Program Pengujian SHARP GP2D12
melalui ADC....................................................... 38
Gambar 4.3 Pengujian Sudut Elevasi Sensor............................ 38
Gambar 4.4 Pengujian Sistem Minimum Avr........................... 39
Gambar 4.5 Led Bergeser Ke Kiri............................................ 39
Gambar 4.6 Driver Motor DC................................................... 40
Gambar 4.7 Robot Sumo Bergerak Ke Kiri………………….. 41
Gambar 4.8 Robot Sumo Bergerak Ke Kanan.......................... 41
Gambar 4.9 Robot Sumo Menyerang………………………... 42
Gambar 4.10 Robot Sumo Menghindar dari Serangan Lawan. 43
Gambar 4.11 Robot Sumo Menghindar dari Serangan Lawan. 43
Gambar 4.12 Robot Sumo Menghindar dari Serangan Lawan. 44
Gambar 4.13 Robot Sumo Bergerak Menghindar dari Garis... 44
Gambar 4.14 Robot Sumo Bergerak Menghindar dari Garis... 45
Gambar 4.15 Robot Sumo Bergerak Menghindar dari Garis... 45
Gambar 4.16 Robot Sumo Bergerak Menghindar dari Garis... 46
DAFTAR TABEL

Hal
Tabel 2.1 Konfigurasi pin port................................................... 10
Tabel 2.2 Port A Sebagai Analog Digital Converter (ADC)…. 12
Tabel 2.3 Bit Pemilih Tegangan Ref.......................................... 12
Tabel 2.4 Pemilihan Auto Trigger ADC.................................... 14
Tabel 2.5 Prioritas Interrupt....................................................... 16
Tabel 3.1 Penjelasan dari Mekanisme Gerak Robot Sumo........ 24
Tabel 4.1 Tabel Pengujian Sensor SHARP GP2D12 dengan
LCD............................................................................ 36
Tabel 4.2 Tabel Pengujian Driver Motor DC............................ 40
Tabel 4.3 Pergerakan Robot Sumo Ketika Ada Lawan............. 42
Tabel 4.4 Pergerakan Robot Sumo Menghindar dari Serangan
Lawan......................................................................... 44
Tabel 4.5 Pergerakan Robot Sumo Ketika Mendeteksi Garis... 47
BAB I
PENDAHULUAN

I.1 PENDAHULUAN
Teknologi robot sudah berkembang dengan pesat pada saat ini,
mulai dari robot sederhana untuk aplikasi yang mudah sampai dengan
robot canggih dan kompleks yang digunakan dalam pabrik industri,
maupun dalam bidang-bidang yang lainnya.
Penggunaan piranti robot dewasa ini sudah tidak didominasi oleh
kepentingan industri, tetapi juga sudah mengarah pada dunia hiburan.
Salah satu robot yang sifatnya sebagai hiburan adalah Robot Sumo.
Robot Sumo telah dikenalkan pada dunia sejak tahun 1990 oleh
Perusahaan Fuji Software dari Jepang[3]. Seperti pertandingan sumo,
robot ini bertanding hanya dengan satu lawan. Di atas ring kedua robot
ini saling mendorong hingga salah satu dari robot keluar arena, apabila
salah satu robot telah berhasil mengeluarkan lawannya dari arena maka
robot tersebut dinyatakan menang[4].
Peraturan pertandingan dari Robot Sumo seperti pada pertandingan
sumo yang sebenarnya dimana masing-masing robot harus mempunyai
berat yang sama, setiap pertandingan sumo ada kelasnya masing-
masing[5]. Jadi berat dan tinggi dari robot akan menentukan kelas
bertandingnya.
Pada Robot Sumo digunakan sensor pendeteksi obyek sebagai
identifikasi posisi robot lawan. Sensor pendeteksi obyek ini berfungsi
sebagai pengendali robot dengan mengikuti pergerakan obyek jadi
seolah-olah robot ini mempunyai mata. Keseluruhan sistem ini dikontrol
oleh mikrokontroller dimana fungsi dari mikrokontroller adalah sebagai
pusat/otak dari keseluruhan suatu sistem untuk mengolah data yang
diambil dari berbagai macam sensor. Pada mikrokontroller ini kita dapat
menginisialisasi data yang dikirim dari sensor pendeteksi obyek
kemudian mikrokontroller itu sendiri mengirimkan instruksi untuk
menjalankan motor sesuai data yang diberikan oleh sensor. Robot ini
dapat bergerak secara otomatis karena robot memiliki beberapa
kemampuan untuk merespon beberapa informasi dari luar yang dibaca
oleh sensor. Kemampuan yang dimiliki robot ini adalah kemampuan
bergerak secara otomatis, kemampuan untuk menemukan objek yang
berupa robot lawan dan kemampuan menyerang lawan.
I.2 PERMASALAHAN
Permasalahan sistem yang akan dibuat dalam Proyek Akhir
adalah sebagai berikut :
a. Membuat perangkat lunak yang mampu mengontrol
pergerakan robot untuk menyerang lawan secara otomatis.
b. Membuat komunikasi data serial sehingga dapat
menyalurkan informasi yang telah diolah oleh software dari
komputer ke mikrokontroller.
c. Bagaimana robot dapat mengenali satu obyek benda yaitu
berupa robot lawan sehingga dapat menyerangnya.
d. Bagaimana robot dalam melakukan kinerja, berupa gerakan :
maju, menghindar, dan menyerang lawan setelah
mengetahui posisi robot lawan.

I.3 BATASAN MASALAH

Asumsi-asumsi berikut ini adalah sebagai batasan masalah yang


dipakai dalam penyelesaian tugas akhir:
a. Robot hanya mengenal satu obyek yaitu berupa robot lawan.
b. Robot lawan mempunyai ukuran yang sama.
c. Jarak maksimum yang dapat dijangkau oleh sensor adalah
100 cm tegak lurus dari sensor.
d. Mobilitas robot hanya pada lantai yang rata atau memiliki
ketinggian yang sama.
e. Robot hanya menyerang robot lawan dari depan.

I.4 TUJUAN DAN MANFAAT


Tujuan dari Proyek Akhir ini meliputi tujuan umum dan khusus
yaitu :
• Tujuan Umum :
Sebagai syarat kelulusan bagi mahasiswa Politeknik
Elektronika Surabaya.
• Tujuan Khusus :
Membuat sistem yang dapat mengidentifikasi suatu
obstacle/halangan yang berada didepan robot sehingga
didapatkan respon untuk menyerang halangan tersebut.
I.5 METODOLOGI

Dalam pengerjaan Proyek Akhir ini diperlukan suatu metode untuk


mendapatkan hasil yang maksimal. Untuk itu penulis merencanakan
suatu langkah-langkah yang dapat memaksimalkan dalam pelaksanaan
pengerjaan Tugas Akhir ini.
Langkah-langkah yang perlu dilakukan adalah sebagai berikut :
1.4.1 Studi Literatur
Mempelajari prinsip kerja dari sistem pengontrollan sensor
inframerah (SHARP GP2D12) sebagai sensor untuk
mengidentifikasi suatu halangan, sensor garis sebagai pendeteksi
garis, sensor lawan untuk mengidentifikasi ada atau tidak robot
lawan, mikrokontroller sebagai pusat pengolah data, motor
sebagai penggerak.

1.4.2 Perencanaan dan Pembuatan


Merencanakan dan membuat peralatan maupun program yang
dibutuhkan baik secara hardware, dan software.

1.4.3 Pengujian dan Analisis


Mengintegrasikan sistem antara hardware dengan software,
kemudian dilakukan pengujian dan analisis terhadap hasil yang
telah didapatkan

I.6 SISTEMATIKA PEMBAHASAN


Untuk mempermudah dalam penyelesaian proyek akhir ini, maka
kami membuat urutan pembahasan sebagai berikut :

BAB I PENDAHULUAN
Dalam bab ini akan dibahas latar belakang, maksud dan tujuan,
batasan masalah, metodologi, dan sistematika pembahasan.

BAB II TEORI PENUNJANG


Dalam bab ini kami menuliskan beberapa teori dasar yang
diperlukan dalam penyelesaian pembuatan sistem rangkaian
“ROBOT SUMO”.
BAB III PERENCANAAN DAN PEMBUATAN ALAT
Bab ini membahas tentang perencanaan dan pembuatan alat
berupa sensor, driver motor, dan rangkaian yang mendukung
sistem ini, serta realisasi program, dimana mencakup blok
diagram rangkaian dan flowchart dari perencanaan sistem
secara lengkap beserta penjelasan cara kerja dari sistem.

BAB IV PENGUJIAN DAN ANALISA


Pada bab ini merupakan bagian pengujian alat, serta
menganalisa akurasi dari sistem yang telah dibuat.

BAB V PENUTUP
Berisi kesimpulan dari keseluruhan proyek akhir yang diambil
berdasarkan data yang ada, juga berisi tentang saran serta
petunjuk untuk pengembangan serta penyempurnaan alat.
BAB II
TEORI PENUNJANG
2.1 PENGERTIAN ROBOT SUMO
Robot sumo dirancang mempunyai kemampuan untuk mendeteksi
suatu objek kemudian menyerang objek tersebut dengan mendorongnya.
Untuk mendeteksi ada atau tidak halangan didepan robot maka pada
bagian robot diberikan suatu sensor yang dapat mendeteksi halangan.
Robot sumo akan menyerang halangan apabila halangan tersebut benar-
benar berada didepan robot sumo. Jika halangan belum berada tepat
didepan robot atau belum ada halangan maka robot akan melakukan
pencarian. Apabila halangan tersebut berada didepan namun posisinya
agak kesamping kiri maupun kekanan maka robot sumo akan
mengikutinya terus sampai halangan tersebut tepat berada didepan robot
sumo. Jika halangan berada tepat didepan robot maka robot sumo akan
mendorongnya hingga keluar arena.
Pada bab ini akan diberikan teori penunjang yang mendukung
pembuatan keseluruhan dari robot sumo, terdiri antara lain :
• Mikrokontroller ATMEGA 16
• Sensor Inframerah (SHARP GP2D12)
• Motor DC

2.2 MIKROKONTROLLER ATMEL AVR ATMEGA16


2.2.1 Mikrokontroller AVR
AVR merupakan bagian dari keluarga mikrokontroller CMOS 8-bit
buatan Atmel. AVR mempunyai 32 register general-purpose,
timer/counter fleksibel dengan mode compare, interrupt internal dan
eksternal, serial UART, programmable Watchdog Timer, dan mode
power saving. Beberapa dari mikrokontroller atmel AVR mempunyai
ADC internal dan PWM internal. AVR juga mempunyai In-Sistem
Programmable Flash on-chip yang mengijinkan memori program untuk
diprogram berulang-ulang dalam sistem menggunakan hubungan serial
SPI. Mikrokontroller AVR yang digunakan pada robot sumo ini adalah
ATMega16.
Beberapa keistimewaan dari ATMEGA 16 antara lain :
• High-performance, Low-power AVR® 8-bit Microcontroller
• Advanced RISC Architecture
– 131 Powerful Instructions – Most Single-clock Cycle
Execution
– 32 x 8 General Purpose Working Registers
– Fully Static Operation
– Up to 16 MIPS Throughput at 16 MHz
– On-chip 2-cycle Multiplier
• Nonvolatile Program and Data Memories
– 16K Bytes of In-System Self-Programmable Flash
Endurance: 1,000 Write/Erase Cycles
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation
– 512 Bytes EEPROM
Endurance: 100,000 Write/Erase Cycles
– 1K Byte Internal SRAM
– Programming Lock for Software Security
• JTAG (IEEE std. 1149.1 Compliant) Interface
– Boundary-scan Capabilities According to the JTAG Standard
– Extensive On-chip Debug Support
– Programming of Flash, EEPROM, Fuses, and Lock Bits
through the JTAG Interface
• Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescalers and
Compare Modes
– One 16-bit Timer/Counter with Separate Prescaler, Compare
Mode, and Capture Mode
– Real Time Counter with Separate Oscillator
– Four PWM Channels
– 8-channel, 10-bit ADC
8 Single-ended Channels
7 Differential Channels in TQFP Package Only
2 Differential Channels with Programmable Gain at 1x,
10x, or 200x
– Byte-oriented Two-wire Serial Interface
– Programmable Serial USART
– Master/Slave SPI Serial Interface
– Programmable Watchdog Timer with Separate On-chip
Oscillator
– On-chip Analog Comparator
• Special Microcontroller Features
– Power-on Reset and Programmable Brown-out Detection
– Internal Calibrated RC Oscillator
– External and Internal Interrupt Sources
– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save,
Power-down, Standby and Extended Standby
• I/O dan Packages
– 32 Programmable I/O Lines
– 40-pin PDIP, 44-lead TQFP, and 44-pad MLF
• Tegangan Kerja
– 2.7 - 5.5V untuk ATmega16L
– 4.5 - 5.5V untuk ATmega16
• Kecepatan
– 0 - 8 MHz untuk ATmega16L
– 0 - 16 MHz untuk ATmega16

Gambar 2.1 Pin-pin Atmega16 dalam kemasan 40-pin DIP8

Pin-pin pada Atmega16 dengan kemasan 40-pin DIP (dual in-line


package) ditunjukkan oleh Gambar 2.1. untuk memaksimalkan performa
dari mikrokontroller, AVR menggunakan arsitektur Harvard (dengan
memori dan bus terpisah untuk program dan data). Sedangkan untuk
blok diagram arsitektur CPU dari AVR ditunjukkan oleh gambar 2.2.
Gambar 2.2 Blok Diagram Arsitektur CPU dari AVR8

Pemrograman yang digunakan untuk mengisi program pada


mikrokontroller AVR ini digunakan CodeVision AVR dan bahasa
pemrograman yang digunakan adalah bahasa C. Pada CodeVision AVR
ini bisa ditentukan port-port dari mikrokontroller AVR yang berfungsi
sebagai input maupun output, serta bisa juga ditentukan tentang
penggunaan fungsi-fungsi internal dari AVR. Sebelum menentukan
port-port dan fungsi-fungsi internal yang akan digunakan, harus
ditentukan terlebih dahulu mikrokontroller yang akan dipakai. Masing-
masing mikrokontroller mempunyai perbedaan dalam fungsi-fungsi
internal. Untuk menentukan mikrokontroller dan port-port yang akan
digunakan sebagai input maupun output ditunjukkan oleh gambar 2.3.
Gambar 2.3 Penentuan Port yang akan dipakai2

Setelah jenis chip mikrokontroller dan port dari AVR ditentukan sebagai
input atau output maka program ditulis dalam bahasa C, kemudian
program dapat didownload ke dalam mikrokontroller AVR, namun
sebelum didownload kedalam mikrokontroller program harus dicompile
terlebih dahulu untuk mengetahui apakah ada error atau tidak, jika tidak
ada error maka program siap didownload dengan alur seperti yang
ditunjukkan oleh gambar 2.4.

Gambar 2.4 Alur Pemrograman dan Proses Download2


2.2.2 Port Berfungsi Sebagai Input/Output
Atmega16 mempunyai empat buah port yang bernama PortA,
PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur bi-
directional dengan pilihan internal pull-up. Tiap port mempunyai tiga
buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’ untuk
mewakili nama huruf dari port sedangkan huruf ‘n’ mewakili nomor bit.
Bit DDxn terdapat pada I/O address DDRx, bit PORTxn terdapat pada
I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit
DDxn dalam regiter DDRx (Data Direction Register) menentukan arah
pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila
DDxn diset 0 maka Px berfungsi sebagai pin input. Sebaliknya bila
DDxn diset F maka Px berfungsi sebagai pin output. Bila PORTxn diset
1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up
akan diaktifkan.
Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin
dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi
reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin
output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada
saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika
0. Saat mengubah kondisi port dari kondisi tri-state (DDxn=0,
PORTxn=0) ke kondisi output high (DDxn=1, PORTxn=1) maka harus
ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0,
PORTxn=1)atau kondisi output low (DDxn=1, PORTxn=0). Untuk lebih
detail mengenai port ini dapat dilihat pada datasheet dari Atmega16.

Tabel 2.1 Konfigurasi pin port 8


2.2.3 Port Berfungsi Sebagai Analog Digital Converter (ADC)
Pada port ATMEGA 16 terdapat Analog Digital Coverter (ADC)
internal dimana letak dari ADC internal tersebut berada di Port A.
Dimana fitur dari ADC internal dari ATMEGA 16 disebutkan sebagai
berikut :
10-bit Resolution
65 - 260 µs Conversion Time
Up to 15 kSPS at Maximum Resolution
8 Multiplexed Single Ended Input Channels
Optional Left Adjustment for ADC Result Readout
0 - VCC ADC Input Voltage Range
Selectable 2.56V ADC Reference Voltage
Free Running or Single Conversion Mode
ADC Start Conversion by Auto Triggering on Interrupt Sources
Interrupt on ADC Conversion Complete
Sleep Mode Noise Canceler

Apabila Port A tersebut digunakan sebagai Analog Digital Converter


(ADC) maka pada CodeVision AVR harus diset seperti yang
ditunjukkan oleh gambar berikut.

Gambar 2.5 Mengaktifkan ADC Internal dari Mikrokontroller2


Pada gambar tersebut ADC Internal dari Mikrokontroller diaktifkan.
ADC tersebut diset dengan Auto Trigger Source dipilih yang Free
Running. Untuk bit pada Port A yang digunakan sebanyak dua bit yaitu
bit 0 dan bit 1.

Tabel 2.2 Port A Sebagai Analog Digital Converter (ADC)8

Register-register yang dipakai untuk mengakses ADC adalah:


ADMUX – ADC Multiplexer Selection Register

Gambar 2.6 register ADMUX8

Bit 7:6 – REFS1:0 : Bit Pemilih tegangan referensi


Bit ini berfungsi untuk memilih tegangan referensi ADC untuk lebih
jelasnya terdapat pada tabel dibawah ini.

Tabel 2.3 Bit Pemilih Tegangan Ref8


Bit 5 – ADLAR : ADC Left Adjust Result
Bit 4:0 – MUX 4:0 : Bit pemilih Analog Channel dan Gain

ADCSRA – ADC Control and Status Register

Gambar 2.7 register ADCSRA8

Bit 7 – ADEN : ADC Enable


Diisi 1 untuk mengaktifkan ADC, diisi 0 untuk mematikan ADC
sekaligus memberhentikan konversi yang sedang berlangsung.

Bit 6 – ADSC : ADC Start Conversion


Pada mode single-conversion, set bit ini untuk memulai tiap konversi.
Pada mode free-running, set bit ini untuk konversi pertama kalinya.
Bit ADSC bila dibaca akan bernilai 1 selama proses konversi, dan
bernilai 0 bila konversi selesai. Mengisi bit ini dengan nilai 0 tidak
akan mempunyai dampak.

Bit 5 – ADATE : ADC Auto Trigger Enable


Bila bit ini diisi 1 maka auto trigger ADC akan diaktifkan. ADC akan
memulai konversi pada saat tepi positif dari sumber sinyal trigger
yang dipilih. Sumber sinyal trigger ditentukan dengan menseting bit
ADTS pada register SFIOR.

Bit 4 – ADIF : ADC Interrupt Flag


Bit ini akan bernilai 1 pada saat ADC selesai mengkonversi dan Data
register telah diupdate. ADC Conversion Complete Interrupt akan
dijalankan bila bit ADIE dan bit-I pada register SREG diset 1. ADIF
akan di-clear secara hardware bila mengerjakan penanganan vektor
interrupt yang bersesuaian. Alternatifnya, ADIF dapat di-clear dengan
menuliskan 1. Hati-hati bila bekerja dengan Read-Modify-Write pada
ADCSRA, interrupt yang tertunda dapat dinonaktifkan/batal. Hal ini
juga berakibat sama bila instruksi SBI dan CBI digunakan.
Bit 3 – ADIE : ADC Interrupt Enable
Mengisi bit ini dan bit-I pada register SREG menjadi 1 akan
mengaktifkan ADC Conversion Complete Interrupt.

Bit 2:0 – ADPS2:0 – Bit pemilih ADC Prescaler


Menentukan bilangan pembagi antara sumber clock XTAL ke clock
ADC.

• SFIOR – Special Function I/O Register untuk sumber auto


trigger

Gambar 2.8 Register SFIOR8

Bit 4 –ADHSM : ADC High Speed Mode


Bila bit ini diset 1 maka akan mengaktifkan ADC High Speed Mode.

Mode start ADC ditunjukkan pada tabel konfigurasi dibawah.


Sesuai dengan konfigurasi tersebut maka dapat dipilih mode start ADC,
ADC akan konversi ketika berdasarkan mode yang dipilih.

Tabel 2.4 Pemilihan Auto Trigger ADC8

Pada mikrokontroller ini digunakan ADC Internal dimana dalam


pemilihan Auto Trigger ADC digunakan Free Running Mode. Untuk
Timing Diagramnya ditunjukkan oleh gambar 2.9.
Gambar 2.9 Timing Diagram ADC Free Running Mode8

2.2.4 Interrupt
Interrupt merupakan suatu peristiwa yang menyebabkan
mikrokontroller menghentikan program sejenak untuk mengerjakan
proses interrupt tersebut. Setelah interrupt yang dikerjakan tersebut telah
selesai maka mikrokontroller akan kembali ke rutin program yang telah
dihentikan sejenak.
Interrupt yang mempunyai prioritas tertinggi tidak dapat diganggu
oleh program yang lain maupun interrupt yang mempunyai prioritas
lebih rendah. Selama proses interrupt dijalankan maka Program Counter
(alamat dari instruksi yang sedang berjalan) disimpan ke stack. Berikut
merupakan prioritas interrupt dari prioritas tinggi sampai prioritas
rendah.
Tabel 2.5 Prioritas Interrupt8

2.2.5 Rutin-Rutin Standar


Pada CodeVision AVR telah disediakan beberapa rutin-rutin yang
siap diisi dengan program. Setelah mengeset port AVR yang berfungsi
sebagai input maupun output maka program disesuaikan dengan
penentuan port yang telah ditentukan. Beberapa contoh fungsi yang
telah disediakan pada CodeVision AVR seperti berikut :

Fungsi Delay
Untuk menghasilkan delay pada pemrograman AVR maka sebelum
dipanggil pada subrutin program maka fungsi delay harus
dideklarasikan pada header. Setelah dideklarasikan maka program
akan menjalankan rutin untuk memanggil delay. Letaknya pada
header dari program, dituliskan sebagai berikut :
#include <atmega16.h>
#include <delay.h>
Pada bagian atas sendiri merupakan inisialisasi jenis tipe AVR yang
akan digunakan. Karena yang digunakan adalah AVR ATMEGA 16
maka pada header paling atas sendiri terdapat keterangan bahwa
program ini khusus digunakan untuk AVR ATMEGA 16.
Pada CodeVision AVR juga terdapat fungsi untuk memanggil delay
selain cara diatas yaitu
• void delay_us(unsigned int n)
menghasilkan delay selama n µ-detik, n adalah nilai konstan.
• void delay_ms(unsigned int n)
menghasilkan delay selama n mili-detik, n adalah nilai konstan.

Fungsi LCD
Fungsi LCD harus dideklarasikan terlebih dahulu pada header
program apabila fungsi LCD tersebut jika dipanggil. Selain itu
fungsi LCD harus diaktifkan terlebih dahulu pada CodeVision
Wizard, misal jika LCD tersebut diletakkan pada Port B dari
mikrokontroller, ditunjukkan seperti berikut:

Gambar 2.10 LCD pada Port B2


Untuk menghapus karakter yang tampil di layar LCD dan posisi karakter
kembali ke posisi semula.
• void lcd_clear(unsigned char x, unsigned char y)
Untuk meletakkan posisi karakter c pada layar LCD pada kolom ke-x
dan baris ke-y maka pada program harus dituliskan:
• void lcd_gotoxy(unsigned char x, unsigned char y)
• void lcd_putchar(char c)

2.3 Sensor Inframerah (SHARP GP2D12)


Sensor inframerah adalah sensor yang bekerja berdasarkan cahaya
dan digunakan untuk mendeteksi ada atau tidak suatu objek yang berada
didepan. Sensor inframerah ini digunakan sebagai piranti masukan
(input) pada mikrokontroller. Pada kali ini digunakan sensor inframerah
dengan tipe SHARP GP2D12 dimana pada bagian pengirim
(transmitter) terdapat osilator dan bagian penerima (receiver) terdapat
filter cahaya, dimana filter tersebut hanya menyaring frekuensi yang
dipancarkan inframerah bagian pengirim (transmitter). Selain itu warna
dari obyek tidak berpengaruh terhadap sensor ini. Berikut ini adalah
gambar rangkaian dari sensor inframerah.

Gambar 2.11 Rangkaian Internal dari Sensor Inframerah7


Dari gambar tersebut dapat diketahui bahwa sensor inframerah,
osilator, regulator tegangan, dan filter sudah dalam satu kemasan.
Output dari sensor inframerah ini adalah data analog, karena data output
berupa data analog maka pada mikrokontroller terletak pada port yang
memiliki fungsi sebagai ADC internal yaitu PortA. Berikut merupakan
data analog yang dikeluarkan oleh sensor inframerah.

Gambar 2.12 Kurva Perbandingan Antara Tegangan dan Jarak7

Dari kurva perbandingan tersebut dapat diketahui bahwa semakin


jauh jarak suatu benda yang dideteksi maka semakin kecil juga nilai
tegangan yang dihasilkan dari sensor, begitu juga sebaliknya semakin
dekat jarak suatu benda maka semakin besar nilai tegangan. Kurva
tersebut menunjukkan bahwa jarak terjauh yang dapat dideteksi oleh
sensor adalah 100 cm, sedangkan untuk jarak terdekat adalah 10 cm
2.4 Motor DC

Motor DC adalah suatu mesin yang berfungsi merubah tenaga


listrik arus searah menjadi tenaga gerak, dimana tenaga gerak tersebut
berupa putaran motor. Pada prinsipnya mesin listrik dapat berlaku se-
bagai motor atau generator. Perbedaan hanya terletak pada konversi
dayanya, jika generator merubah daya mekanik menjadi daya listrik
sedangkan motor merubah daya listrik menjadi daya mekanik. Dasar
kerja motor DC adalah atas prinsip bahwa suatu penghantar yang
membawa arus listrik diletakkan didalammedan magnet, maka akan
timbul gaya mekanik yang mempunyai arah sesuai dengan hukum
tangan kiri dan besarnya adalah:
F = B I L (Newton)
Untuk suatu kebutuhan yang menghendaki adanya variasi
putaran motor yang dapat diatur maka penggunaan motor DC lebih
menguntungkan apabila dibandingkan dengan motor jenis lain karena
motor DC lebih mudah diatur kecepatannya dalam rentang yang lebar
dan karakteristik kopel putaran yang baik. Pada umumnya mesin
dinamik terdiri dari bagian yang berputar disebut rotor dan bagian yang
diam disebut stator. Pada motor DC, rotor merupakan kumparan
jangkar dengan belitan konduktor, dan stator merupakan kumparan
medan berbentuk katup sepatu.Terdapat dua tipe motor DC berdasarkan
prinsip medan yaitu:
1. Motor DC dengan magnet permanent
2. Motor DC dengan lilitan yang terdapat pada stator
Sedangkan tipe motor DC yang digunakan pada proyek akhir ini adalah
tipe magnet permanen, karena tipe ini lebih mudah dalam
pengontrolannya, disamping itu dimensi yang tidak terlalu besar.
Motor DC pada saat ini banyak digunakan pada industri yang
memerlukan gerakan dengan kepresisian yang sangat tinggi untuk
pengaturan kecepatan pada torsi yang konstan. Motor DC berfungsi
mengubah tenaga listrik menjadi tenaga mekanis dimana gerak tersebut
berupa putaran.
Prinsip dasar dari motor arus searah adalah “kalau sebuah
kawat berarus diletakkan antara kutub-kutub magnet (U– S), maka pada
kawat tersebut akan bekerja suatu gaya yang menggerakkan kawat
tersebut”. Arah gerakan kawat dapat ditentukan dengan kaidah tangan
kiri yang berbunyi sebagai berikut. ”Apabila pada tangan kiri yang
terbuka diletakkan diantara kutub U dan S pada sebuah magnet, maka
garis-garis gaya yang keluar dari kutub utara menembus telapak tangan
kiri dan arus didalam kawat mengalir searah dengan arah keempat jari,
maka kawat tersebut akan mendapatkan gaya yang searah dengan arah
ibu jari “.
Pada motor arus searah rotor mempunyai kumparan tidak
hanya satu, namun terdiri dari kumparan dan komutator yang banyak
untuk mendapatkan torsi yang terus menerus. Rotor terdiri dari jangkar
yang inti terbuat dari lempengan-lempengan yang ditaktik. Susunan
lempengan membentuk celah-celah, dan celah-celah tersebut terdapat
konduktor kumparan jangkar. Ujung tiap-tiap kumparan dihubungkan
pada satu segmen komutator. Tiap segmen merupakan pertemuan dua
ujung kumparan yang terhubung. Kumparan penguat dihubungkan
secara seri, jangkar merupakan bagian bergerak yang dibuat dari besi
berluminasi untuk mengurangi rugi-rugi arus Eddy. Kumparan jangkar
diletakkan pada slot besi pada bagian luar permukaan jangkar. Pada
jangkar terdapat komutator yang berbentuk silinder dan masing-masing
di isolasi. Sisi kumparan dihubungkan dengan segmen komutator pada
beberapa bagian yang berbeda, tergantung dari tipe belitan yang
diperlukan.
BAB III
PERANCANGAN DAN PEMBUATAN ALAT
3.1 KONFIGURASI SISTEM
Secara umum konfigurasi sistem dari Robot Sumo ini terdiri dari
input, kontroler dan output. Dari sisi masukan (input) terdiri dari sensor
inframerah, kontroler yang digunakan adalah mikrokontroller ATMEGA
16, dan pada sisi keluaran (output) digunakan driver motor .

Gambar 3.1 Blok Diagram Sistem

Pada robot sumo diperlukan teknik agar didapatkan pergerakan


yang baik. Pada robot sumo ini hal yang paling penting adalah posisi
bertahan. Untuk mendapatkan teknik tersebut maka diperlukan metode
yang digambarkan sebagai berikut ini.
Gambar 3.2 Mekanisme Gerak Robot Sumo5

Untuk penjelasan dari mekanisme gerak tersebut dijelaskan pada


tabel berikut ini.

Tabel 3.1 Penjelasan dari Mekanisme Gerak Robot Sumo5


Status Deskripsi Tindakan
BERTAHAN Robot masuk kedalam kategori ini 1. Berputar
ketika mendeteksi adanya garis tepi menjauh
arena. Robot akan dinyatakan dari garis
menang apabila robot tidak keluar tepi arena
arena. Robot segera berputar
2. Beralih ke
menjauh dari garis tepi apabila
posisi
mendeteksi garis tepi arena.
Mencari
setelah
berputar
selesai
MENCARI Robot tidak berada di tepi arena dan 1. Kembali ke
tidak mendeteksi adanya lawan. status
Robot terus berputar didalam arena bertahan
dengan harapan menemukan lawan. apabila garis
tepi
terdeteksi.
2. Beralih ke
posisi Target
apabila
sensor
mendeteksi
adanya robot
lawan.
3. Tetap
mencari
apabila robot
lawan belum
ditemukan.
TARGET Robot lawan telah terdeteksi berada 1. Kembali ke
didepan. status
bertahan
apabila garis
arena
terdeteksi.
2. Jika robot
lawan berada
didepan
langsung dan
posisi robot
lawan dekat
maka alihkan
ke posisi
Serang.
3. Jika robot
lawan berada
didepan
namun
posisinya
cukup jauh,
kendalikan
robot
bergerak
maju.
4. Kembali ke
posisi
Mencari
apabila robot
lawan belum
ditemukan.
SERANG Robot lawan telah ditemukan. 1. Kembali
Kendalikan robot bergerak lurus keposisi
kedepan dengan kekuatan penuh Bertahan
untuk mendorong lawan keluar apabila garis
arena. arena
terdeteksi.
2. Kendalikan
robot
bergerak
lurus
kedepan.

3.2 PERANCANGAN DAN PEMBUATAN PERANGKAT KERAS


Sistem perangkat keras disini terdiri dari sensor inframerah, sensor
garis, perangkat komparator, perangkat mikrokontroller, dan driver
motor.
3.2.1 Perencanaan dan pembuatan sensor deteksi garis
Pada sensor garis ini digunakan led dan photodiode, dimana led
sebagai pengirim (transmitter) dan photodiode sebagai penerima
(receciver). Sensor garis ini mendeteksi warna putih, apabila terdeteksi
adanya warna putih maka nilai dari output komparator juga akan
berubah. Karena output dari komparator berupa nilai digital 0 atau 1
maka nilai komparator akan merubah nilai yang sebelumnya. Misal
nilai yang sebelumnya bernilai 0 maka setelah terdeteksi adanya warna
putih nilai komparator akan berubah menjadi 1. Untuk rangkaian dari
sensor garis ditunjukkan oleh gambar berikut.

Gambar 3.3 Rangkaian Sensor Deteksi Garis

Karena kondisi tiap ruangan berbeda maka kepekaan sensor juga


perlu diperhatikan. Untuk merubah kepekaan sensor garis ini dapat
diatur pada VR (Variable Resistor), nilai dari VR dapat diubah sesuai
dengan kondisi ruangan.

3.2.2 Perencanaan dan pembuatan sensor deteksi lawan


Pada sensor deteksi lawan ini hampir sama prinsipnya seperti sensor
deteksi garis, hanya saja yang digunakan untuk bagian pengirim
(transmitter) digunakan inframerah, sedangkan untuk bagian penerima
(receiver) photodiode. Sensor ini mendeteksi ada atau tidak lawan
dibagian samping kiri, kanan, dan bagian belakang robot. Apabila sensor
ini mendeteksi adanya lawan dibagian samping kiri, kanan, dan bagian
belakang robot maka sensor akan memberikan data kepada
mikrokontroller untuk menggerakkan motor supaya robot menghindar.

Gambar 3.4 Rangkaian Sensor Deteksi Serangan Lawan


3.2.3 Perancangan mikrokontroller
Dalam membuat rangkaian mikrokontroller diperlukan pemahaman
mengenai sistem minimum dari mikrokontroller yang akan dirancang.
Sistem rangkaian yang akan dirancang diusahakan menggunakan
rangkaian yang seringkas mungkin dan dengan sistem penataan kabel
yang baik.
ATMEGA16 mempunyai rangkaian eksternal yang relatif sedikit
dibanding dengan mikrokontoler yang lain. Rangkaian eksternal yang
dibutuhkan adalah sebagai berikut :
3 Rangkaian Clock Generator CPU
4 Rangkaian Eksternal Reset
5 Rangkaian Regulator
6 Interfacing ke rangkaian luar (tergantung kebutuhan pemakai)

3.2.3.1 Rangkaian Clock Generator


Mikrokontroller ATMEGA16 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 serta kapasitor ke ground seperti gambar.

Gambar 3.5 Rangkaian osilator kristal


Untuk kristal dapat digunakan frekuensi dari 6 sampai 12 MHz.
Namun pada rangkaian kali ini digunakan kristal dengan frekuensi
11.0562 MHz. Sedangkan untuk kapasitor dapat digunakan kapasitor
dengan nilai 27 pF sampai 33 pF.
3.2.3.2 Perencanaan dan Pembuatan Rangkaian Power Supply
Rangkaian power supply yang digunakan untuk memberi tegangan
pada mikrokontroller harus stabil, dan mempunyai arus yang cukup
sehingga tidak terjadi drop tegangan pada mikrokontroller dan rangkaian
yang lain. Supply tunggal yang dibutuhkan mikrokontroller sebesar +5
Volt. Pada pemilihan baterai dipilih yang relatif kecil sehingga tidak
terlalu membebani daya dari motor penggerak, disamping itu diperlukan
baterai yang mempunyai kapasitas daya yang cukup besar untuk
mensupply rangkaian secara keseluruhan.
Tegangan yang digunakan untuk mensupply mikrokontroller
diambilkan dari baterai yang terpasang pada badan robot. Supaya
tegangan dari baterai tersebut sesuai dengan tegangan kerja dari
mikrokontroller, maka perlu diberikan rangkaian regulator tegangan
yang berfungsi menurunkan tegangan baterai dari 12 Volt atau 9 Volt
menjadi 5 Volt. Regulator yang digunakan adalah IC 7805 seperti yang
ditunjukkan oleh gambar berikut:

Gambar 3.6 Rangkaian power supply untuk mikrokontroller

Pemasangan kapasitor juga diperlukan, karena power supply dari


baterai biasanya mendapatkan noise dari rangkaian. Untuk menghindari
kerusakan supply yang disebabkan oleh hubungan singkat, maka perlu
diberi kapasitor polar dengan nilai besar.

3.2.3.3 Perancangan Interfacing I/O


Rangkaian I/O dari mikrokontroller mempunyai kontrol direksi
yang tiap bit 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 mikrokontroller tiap bit yang ada pada masing-
masing port yang terdapat pada mikrokontroller.
1. Port A
Pada PortA ini berfungsi sebagai ADC internal dari
mikrokontroller, dimana dua bit awal dari PortA yaitu PortA.0 dan
PortA.1 difungsikan sebagai input dari sensor inframerah (SHARP
GP2D12).
2 Port B
Port B digunakan sebagai input dari sensor garis dan sensor
inframerah pendeteksi ada tidaknya lawan yang berada di sebelah kiri,
dan belakang robot.
3. Port C
Port C digunakan sebagai input dari sensor garis dan sensor
inframerah pendeteksi ada tidaknya lawan yang berada di sebelah kanan
robot.
4. Port D
Port yang digunakan pada Port D ini antara lain :
Port D.0 sebagai arah motor kanan
Port D.1 sebagai PWM untuk motor kanan
Port D.2 sebagai PWM untuk motor kiri
Port D.3 sebagai arah motor kiri

3.2.3 Perencanaan dan Pembuatan Driver Motor


Driver motor digunakan sebagai penghubung antara mikrokontroller
ke motor DC. Digunakan driver motor karena arus yang keluar dari
mirokontroller tidak mampu mencukupi kebutuhan dari motor DC.
Rangkaian utama dari driver motor DC ini terdiri dari mosfet, motor,
dan optocoupler. Untuk rangkaian motor DC ditunjukkan pada gambar
dibawah ini:
Gambar 3.7 Rangkaian Driver Motor

3.2.4 Gambar Desain Robot Sumo

Gambar 3.8 Gambar Robot Sumo Bagian Bawah

Pada robot sumo ini menggunakan roda belakang yang cukup besar
agar didapatkan daya dorong serta torsi yang cukup kuat untuk
mendorong lawan. Masing-masing dari roda belakang ini digerakkan
dengan motor DC. Pada bagian depan bawah digunakan satu roda depan
yang berfungsi sebagai roda bebas agar bisa bergerak kemana saja.
Untuk mendeteksi adanya garis digunakan empat sensor deteksi garis,
dimana dua sensor garis terletak pada bagian bawah depan dan dua yang
lain terletak pada bagian bawah belakang .

Gambar 3.9 Gambar Robot Sumo Bagian Atas

Untuk robot sumo bagian atas terdapat enam sensor deteksi


serangan lawan dari belakang samping kiri maupun samping kanan.
Masing-masing sisi robot terdapat dua sensor. Sedangkan untuk bagian
depan sensor juga terdapat dua sensor untuk mendeteksi pergerakan
lawan. Sensor tersebut mengikuti robot lawan kemanapun robot lawan
pergi. Selain sensor, pada bagian atas robot juga terdapat
mikrokontroller dan buzzer. Robot sumo ini menggunakan pelindung
bagi sensor depan agar terhindar dari kemungkinan tumbukan yang
terjadi dengan robot lawan. Kemudian robot ini dikemas seperti yang
ditunjukkan oleh gambar berikut ini.
Gambar 3.10 Gambar Robot Sumo Keseluruhan

3.3 PERANCANGAN DAN PEMBUATAN PERANGKAT


LUNAK

Sistem perangkat lunak pada proyek akhir ini adalah mengaktifkan


sensor dan menggerakkan motor dengan menggunakan CodeVision
AVR. Flowchart pembuatan software ditunjukkan pada gambar berikut:
START

Init sensor, init motor,init pwm

Start scan

Ada garis?
Y
Menghindar

T Ada lawan?

Y
Serang
Y

Y
Ada garis?

T
T Ada lawan?

Y
Menang

Gambar 3.11 Flowchart Pembuatan Program


BAB IV
PENGUJIAN DAN ANALISIS
Dalam Bab ini akan dibahas tentang pengujian berdasarkan
perencanaan dari sistem yang dibuat.
Pengujian ini dilaksanakan untuk mengetahui kehandalan dari
sistem dan untuk mengetahui apakah sudah sesuai dengan perencanaan:
1. Pengujian Sensor Inframerah (SHARP GP2D12)
2. Pengujian Sistem Minimum AVR
3. Pengujian Driver Motor DC

4.1 Pengujian Sensor Inframerah (SHARP GP2D12)


4.1.1 Pengujian Jarak Deteksi Sensor Inframerah (SHARP
GP2D12) menggunakan LCD
Pada bagian ini diuji tentang jarak minimum dan maksimum yang
dapat dijangkau oleh sensor inframerah (SHARP GP2D12). Robot ini
menggunakan dua buah sensor inframerah (SHARP GP2D12). Untuk
mengetahui jarak yang dapat dijangkau oleh sensor ini digunakan LCD.
Dari LCD dapat diketahui data yang dikeluarkan oleh sensor. Berikut
merupakan potongan program untuk menguji sensor tersebut melalui
LCD.
#include <atmega16.h>

// Alphanumeric LCD Module functions


#asm
.equ __lcd_port=0x12
#endasm
#include <lcd.h>

convert(unsigned char b)
{
unsigned char adc;
adc=b/100;
lcd_putchar(48+adc);
b%=100;
adc=b/10;
lcd_putchar(48+adc);
b%=10;
lcd_putchar(48+b);
}
void tampil_adc()
{
lcd_gotoxy(0,0);
lcd_putsf("ired 0=");
convert(adc_data[0]);
lcd_gotoxy(0,1);
lcd_putsf("ired 1=");
convert(adc_data[1]);
}

while (1)
{
tampil_adc();
// Place your code here

};

Gambar 4.1 Listing Program Pengujian SHARP GP2D12 melaui LCD

Setelah program diatas didownload dan diuji, karena tipe sensor


yang digunakan sama maka dapat diambil salah satu dari kedua sensor
tersebut. Data dari sensor tersebut ditunjukkan pada tabel berikut.

Tabel 4.1 Tabel Pengujian Sensor SHARP GP2D12 dengan LCD

Jarak (Cm) Data (Dec)


3 54
5 85
7 100
10 132
15 95
20 72
25 60
30 50
35 46
40 38
45 34
50 31
55 28
60 26
65 25
70 22
75 20
80 19
85 17
90 10
95 8
100 5
105 1

Dari tabel tersebut dapat diketahui bahwa pada jarak 10 cm sensor


ini berada pada nilai yang tertinggi yaitu 132, sedangkan sebelum jarak
10 cm data yang ditunjukkan oleh sensor ini turun lagi ini dapat
diartikan bahwa data yang ditunjukkan sebelum jarak 10 cm kacau. Ini
berarti bahwa sensor ini dapat mendeteksi suatu objek dimulai dari 10
cm.

4.1.2 Pengujian Sudut Elevasi Sensor Inframerah (SHARP


GP2D12) menggunakan LED
Pada bagian ini sensor inframerah (SHARP GP2D12) akan diuji
seberapa besar sudut elevasi yang dapat dijangkau oleh sensor ini. Untuk
mengetahui pelebaran sudut elevasi digunakan simulasi led, apabila
diberi suatu halangan dan halangan tersebut digeser kekiri maupun
kekanan akan diketahui bahwa halangan tersebut masih terdeteksi oleh
sensor atau tidak, hal tersebut bisa diketahui dari nyala led.
Berikut merupakan potongan program untuk mengetahui sudut
elevasi sensor.

#include <mega16.h>

unsigned char sens;


flash unsigned char xx[2]={0x01,0x02};
flash unsigned char yy[2]={0xfe,0xfd};
flash unsigned char zz[2]={23,23};
if(adc_data[input_index] < zz[input_index])
sens|=xx[input_index];
else
sens&=yy[input_index];

while (1)
{
// Place your code here
PORTD=(((sens>>1)|(sens<<1))&3);
//PORTD=sens&0x03;
}
Gambar 4.2 Listing Program Pengujian SHARP GP2D12 melaui ADC
y

x x Masih didalam
range deteksi sensor

Diluar range deteksi


sensor

SHARP GP2D12

Gambar 4.3 Pengujian Sudut Elevasi Sensor

Bila suatu objek masih berada didalam range deteksi sensor maka
led masih menyala, namun bila objek berada diluar range deteksi sensor
maka led mati. Ternyata setelah dilakukan percobaan ini dapat diketahui
bahwa sudut elevasi (y) dari sensor ini adalah 400 dan jarak maksimum
yang dapat dijangkau oleh sensor adalah 100 cm tegak lurus dari sensor.

4.2 Pengujian Sistem Minimum AVR


Pada pengujian sistem minimum AVR digunakan led sebagai
output. Pada sistem minimum ini diberikan program tentang nyala led
yang bergeser. Bila program ini didownload kedalam sistem minimum
dan sistem tersebut bisa menjalankan program yang diberikan maka bisa
dikatakan sistem minimum tersebut bisa digunakan untuk rangkaian
selanjutnya. Berikut merupakan potongan program untuk menguji
sistem minimum AVR.
#include <mega16.h>
#include <delay.h>

// Declare your global variables here

void main(void)
{
unsigned char led;

while (1)
{
// Place your code here
led=0x01;
while(led!=0x80)
{
led<<=1;
PORTD=~led;
delay_ms(500);
}
led=0x01;
//PORTB=0;
};

Gambar 4.4 Pengujian Sistem Minimum Avr

Gambar 4.5 Led Bergeser Ke Kiri


4.3 Pengujian Driver Motor DC
Pada pengujian driver motor DC ini akan diketahui apakah motor
tersebut mengalami suatu masalah (error) atau tidak. Tabel berikut
merupakan arah pergerakan dari motor DC:

Mosfet 1 Mosfet 2

A B
Mosfet 3 Mosfet 4

Gambar 4.6 Driver Motor DC

Pada point A dan B akan diberi logika 1 atau 0 untuk mengetahui


arak pergerakan dari motor. Tabel berikut menunjukkan pergerakan dari
motor.
Tabel 4.2 Tabel Pengujian Driver Motor DC
A B Gerakan Motor
0 0 Tidak bergerak
0 1 Maju
1 0 Mundur
1 1 x (Short)

Dari tabel diatas dapat diketahui bahwa motor akan bergerak


apabila nilai dari A atau B adalah 1, sedangkan motor tidak bergerak
apabila nilai A dan B adalah 0. Apabila A bernilai 1 maka mosfet 1 dan
mosfet 4 on sehingga motor bergerak mundur, sedangkan B bernilai 1
maka mosfet 2 dan mosfet 3 on sehingga motor bergerak maju. Bila nilai
A dan B bernilai 1 maka keempat mosfet on dan dapat terjadi short
sehingga motor bisa bergerak maju atau mundur tergantung pada
program yang dibuat.
4.4 Pengujian Sistem Secara Keseluruhan

Pada pengujian sistem secara keseluruhan ini akan diuji bagaimana


sensor bekerja bila ada halangan didepan robot. Pada gambar
berikut menunjukkan pergerakan robot bila ada halangan didepan
kiri robot.

(a) (b)

Gambar 4.7 Robot Sumo Bergerak Ke Kiri

Bila robot mendeteksi halangan berada disebelah kiri seperti yang


ditunjukkan oleh gambar 4.7 (a) maka robot akan bergerak kekiri seperti
ditunjukkan oleh gambar 4.7 (b).

(a) (b)

Gambar 4.8 Robot Sumo Bergerak Ke Kanan

Bila robot mendeteksi halangan berada disebelah kanan seperti yang


ditunjukkan oleh gambar 4.8 (a) maka robot akan bergerak kekanan
seperti ditunjukkan oleh gambar 4.8 (b).
Robot mendeteksi adanya halangan yang berada didepan atau bisa
dikatakan juga bahwa kedua sensor yang berada dibagian depan robot
mendeteksi adanya halangan maka robot akan bergerak maju dengan
cepat hingga mendorongnya keluar arena. Gambar 4.9 (a) menunjukkan
kedua sensor mendeteksi adanya halangan yang berada didepan robot.
Gambar 4.9 (b) menunjukkan bahwa robot bergerak maju dengan cepat.

(a) (b)

Gambar 4.9 Robot Sumo Menyerang

Tabel berikut menunjukkan sensor yang aktif dan tindakan yang


harus dilakukan Robot Sumo.

Tabel 4.3 Pergerakan Robot Sumo Ketika Ada Lawan


Sensor Kiri Sensor Kanan Pergerakan Robot
0 0 Scan
0 1 Bergerak Ke Kiri
1 0 Bergerak Ke Kanan
1 1 Serang

Jika halangan masih berada didalam range pendeteksian sensor,


maka halangan tersebut masih dapat terdeteksi, namun jika halangan
sudah berada diluar range pendeteksian sensor maka halangan tidak
dapat terdeteksi. Dengan menggunakan dua sensor yang berada dibagian
depan robot, maka robot dapat mendeteksi dimana halangan tersebut
berada. Apabila sensor yang terletak sebelah kiri yang mendeteksi
adanya suatu halangan maka robot akan bergerak kekiri, begitu juga bila
sensor yang terletak disebelah kanan robot mendeteksi adanya halangan
maka robot akan bergerak kekanan. Apabila halangan yang berada
disebelah kanan maupun kiri robot terdeteksi maka robot akan bergerak
tidak terlalu cepat untuk mendekati halangan tersebut, namun bila robot
mendeteksi bahwa halangan sudah berada didepan robot (kedua sensor
mendeteksi adanya halangan) maka robot akan bergerak cepat kemudian
mendorongnya hingga keluar arena. Apabila robot lawan berada
disebelah kanan maupun disebelah kiri maka hanya diikuti (tidak
diserang), robot lawan akan diserang ketika robot lawan berada tepat
didepan.

Robot Lawan
(a) (b)

Gambar 4.10 Robot Sumo Menghindar dari Serangan Lawan

Apabila robot diserang dari sebelah kanan seperti yang ditunjukkan


oleh gambar 4.10 (a) maka robot akan menghindar dengan bergerak
maju kemudian bergerak kekanan. Sedangkan apabila robot diserang
dari sebelah kiri ditunjukkan oleh gambar 4.11 (a) maka robot juga akan
menjauh dari serangan lawan dengan bergerak maju kemudian bergerak
ke kekiri seperti yang ditunjukkan oleh gambar 4.11 (b).

Robot Lawan

(a) (b)

Gambar 4.11 Robot Sumo Menghindar dari Serangan Lawan


Namun bila robot diserang dari belakang maka robot akan bergerak
maju kemudian robot tersebut berputar.

(a) Robot Lawan


(b)

Gambar 4.12 Robot Sumo Menghindar dari Serangan Lawan

Apabila robot diserang oleh robot lawan dari sisi belakang, samping
kiri dan kanan, maka robot tersebut akan menghindar dengan
menjauh dari robot lawan.
Tabel berikut menunjukkan pergerakan dari Robot Sumo ketika
diserang oleh robot lawan dari sebelah kiri, kanan, dan belakang.

Tabel 4.4 Pergerakan Robot Sumo Menghindar dari Serangan Lawan


Sensor yang Aktif Pergerakan Robot
Sensor Kiri Maju, Putar Ke Kiri
Sensor Kanan Maju, Putar Ke Kanan
Sensor Belakang Maju

Untuk pergerakan robot sumo dalam mendeteksi adanya garis maka


robot tersebut akan bergerak seperti yang ditunjukkan oleh gambar
berikut. Pada gambar 4.13 (a) sensor garis yang terletak disebelah kiri
robot mendeteksi adanya garis, maka robot akan bergerak seperti yang
ditunjukkan oleh gambar 4.13 (b). Robot tersebut bergerak mundur
kemudian robot tersebut berputar serong kekanan kemudian kembali ke
tengah arena.
(a) (b)

Gambar 4.13 Robot Sumo Bergerak Menghindar dari Garis

Begitu juga untuk sensor yang terletak disebelah kanan depan robot
bila mendeteksi adanya garis seperti yang ditunjukkan oleh gambar
4.14 (a) maka robot akan bergerak mundur kemudian berputar serong ke
kiri dan akhirnya bergerak ke tengah arena seperti yang ditunjukkan
oleh gambar 4.14 (b).

(a) (b)

Gambar 4.14 Robot Sumo Bergerak Menghindar dari Garis


Apabila kedua sensor garis depan mendeteksi adanya garis maka
robot akan bergerak mundur kemudian robot akan berputar dan kembali
ke tengah arena seperti yang ditunjukkan oleh gambar dibawah ini.

(a) (b)

Gambar 4.15 Robot Sumo Bergerak Menghindar dari Garis

(a) (b)

Gambar 4.16 Robot Sumo Bergerak Menghindar dari Garis


Pada gambar tersebut menunjukkan bahwa apabila sensor garis
yang berada dibelakang robot mendeteksi adanya garis maka robot akan
bergerak maju ketengah arena.

Tabel 4.5 Pergerakan Robot Sumo Ketika Mendeteksi Garis


Sensor yang Aktif Pergerakan Robot
Sensor Garis Depan Kiri Mundur, Putar Kanan
Sensor Garis Depan Kanan Mundur, Putar Kiri
Kedua Sensor Garis Depan Mundur, Putar Balik
Sensor Garis Belakang Maju

Jadi bila robot mendeteksi adanya garis maka robot akan bergerak
sejauh mungkin agar robot tidak keluar arena. Sensor garis ini berfungsi
sebagai prioritas utama dari sensor-sensor yang lainnya. Apabila sensor
lain mendeteksi adanya halangan maka robot akan bergerak menghindar,
namun apabila sensor lain mendeteksi adanya halangan dan pada saat
yang sama sensor garis mendeksi adanya garis maka robot diperintahkan
untuk menghindar dari garis terlebih dahulu. Karena posisi yang paling
utama adalah bertahan di atas arena.
BAB V
PENUTUP
5.1 KESIMPULAN
Setelah melakukan perencanaan dan pembuatan sistem kemudian
dilakukan pengujian dan analisis, maka dapat diambil beberapa
kesimpulan tentang sistem kerja dari rangkaian. Yaitu sebagai berikut:
1. Berdasarkan pengukuran pada jarak dibawah 10 cm sensor
akan mengalami error, karena bidang pantul terlalu dekat
dengan sensor.
2. Sudut elevasi yang dapat dijangkau oleh sensor inframerah
adalah 400, dengan jarak maksimum 100 cm lurus dari sensor.
Sedangkan jarak minimum yang dijangkau oleh sensor
inframerah adalah 10 cm.
3. Posisi robot lawan yang berada disebelah kanan maupun
disebelah kiri hanya diikuti (tidak diserang). Robot akan
menyerang robot lawan ketika posisi robot lawan tepat
didepan (saat kedua sensor mendeteksi).

5.2 SARAN
Dalam pembuatan Robot Sumo berbasis mikokotroller ATMega
masih banyak kekurangan yang perlu diperbaiki.
Untuk menyempurnakan alat sehingga pengguna memanfaatkan alat
ini dengan baik. Ada beberapa bagian dari sistem yang perlu dilakukan
penyempurnaan:
1. Untuk mendapatkan torsi cukup kuat untuk mendorong robot
lawan maka dapat digunakan gear yang mempunyai kapasitas
isi lebih banyak.
2. Agar robot dapat bergerak lebih cepat maka dapat digunakan
ukuran ban yang lebih besar.
DAFTAR PUSTAKA

[1] Eddo Mahardika,“ Alat Ukur Jarak dengan Metode


Pergeseran Fase Berbasis Mikrokontroller ”, Politeknik
Elektronika Negeri Surabaya-ITS, Surabaya, 2004.

[2] Yusman Hakim Akhmadi,“ Robot Pengukur Jarak ”,


Politeknik Elektronika Negeri Surabaya-ITS, Surabaya, 2002.

[3] ……,”AVR ATMEGA 16”, www.alldatasheet.com

[4] .........,”Building a Mini-Sumo Robot”, David Cook,


www.robotroom.com

[5] ........,”Robot project”, Cherry Blossom,


www.seattlerobotics.org

[6] .........,”Robot Sumo Rules”, David Cook, www.robotroom.com

[7] ……,”Sharp GP2D12”, www.parallax.com


[8] ........,”Sumo Robot Wrestling”, Dr. Mato Hattori,
www.ridgesoft.com
LAMPIRAN A
/*********************************************************
This program was produced by the
CodeWizardAVR V1.24.0 Standard
Automatic Program Generator
© Copyright 1998-2003 HP InfoTech s.r.l.
http://www.hpinfotech.ro
e-mail:office@hpinfotech.ro

Project :
Version :
Date : 6/19/2006
Author : BEE
Company :
Comments :

Chip type : ATmega16


Program type : Application
Clock frequency : 11.059200 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*********************************************************/

#include <mega16.h>
#include <delay.h>

/************SENSOR GARIS DEPAN & BELAKANG************/

#define belakang_kanan_garis PINC.2


#define depan_kanan_garis PINC.3
#define belakang_kiri_garis PINB.5
#define depan_kiri_garis PINB.4

/*****SENSOR DETEKSI LAWAN KIRI+KANAN+BELAKANG*****/

#define kiri_belakang_ired PINB.7


#define kiri_depan_ired PINB.6
#define belakang_kiri_ired PINB.3
#define belakang_kanan_ired PINB.0
#define kanan_belakang_ired PINC.0
#define kanan_depan_ired PINC.1

/********************TURN ON BUZZER*********************/

#define buzzer PORTC.7

/************AKTIFKAN MOTOR KIRI & KANAN***************/

#define out_pwmr PORTD.1


#define out_pwml PORTD.2
#define dir_kanan PORTD.0
#define dir_kiri PORTD.3

unsigned char se,x=0,pwmr,pwml,sensor;


flash unsigned char aa[2]={0x01,0x02};
flash unsigned char bb[2]={0xfe,0xfd};
flash unsigned char cc[2]={60,60};

// Alphanumeric LCD Module functions


/*#asm
.equ __lcd_port=0x15
#endasm
#include <lcd.h>
*/

// Timer 0 overflow interrupt service routine


interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0xC0;
x++;
// Place your code here
//if(x==255){x=0;}
if(x>=pwmr)out_pwmr=1;
else out_pwmr=0;
if(x>=pwml)out_pwml=1;
else out_pwml=0;
}
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 1
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x20
// ADC interrupt service routine
// with auto input scanning
#pragma savereg-
interrupt [ADC_INT] void adc_isr(void)
{
#asm
push r26
push r27
push r30
push r31
in r30,sreg
push r30
#endasm
register static unsigned char input_index=0;
// Read the 8 most significant bits
// of the AD conversion result
adc_data[input_index]=ADCH;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index;
// Start the AD conversion
ADCSRA|=0x40;
if (adc_data[input_index]>cc[input_index])
se|=aa[input_index];
else
se&=bb[input_index];
#asm
pop r30
out sreg,r30
pop r31
pop r30
pop r27
pop r26
#endasm
}
#pragma savereg+

// Declare your global variables here


/*
void mundur_serong_ka()
{
dir_kanan=0;dir_kiri=0;pwmr=100;pwml=200;
delay_ms(100);
}

void mundur_serong_ki()
{
dir_kanan=0;dir_kiri=1;pwmr=200;pwml=100;
delay_ms(100);
}
*/
void maju_kiri_putar()
{
dir_kanan=1;dir_kiri=1;pwmr=200;pwml=200;
delay_ms(100);
dir_kanan=1;dir_kiri=0;pwmr=150;pwml=100;
delay_ms(100);
}

void maju_kanan_putar()
{
dir_kanan=1;dir_kiri=0;pwmr=200;pwml=200;
delay_ms(100);
dir_kanan=0;dir_kiri=0;pwmr=100;pwml=150;
delay_ms(100);
}

void maju_putar_ki()
{
dir_kanan=1;dir_kiri=1;pwmr=200;pwml=200;
delay_ms(100);
dir_kanan=1;dir_kiri=0;pwmr=150;pwml=100;
delay_ms(100);
}
void maju_putar_ka()
{
dir_kanan=1;dir_kiri=1;pwmr=200;pwml=200;
delay_ms(100);
dir_kanan=0;dir_kiri=1;pwmr=100;pwml=150;
delay_ms(100);
}

void mundur_banting_ka()
{
dir_kanan=0;dir_kiri=1;pwmr=150;pwml=150;
delay_ms(100);
dir_kanan=0;dir_kiri=0;pwmr=100;pwml=150;
delay_ms(100);
}

void maju_dikit()
{
dir_kanan=1;dir_kiri=0;pwmr=200;pwml=200;
delay_ms(100);
}

void mundur_banting_ki()
{
dir_kanan=0;dir_kiri=1;pwmr=150;pwml=150;
delay_ms(100);
dir_kanan=1;dir_kiri=1;pwmr=150;pwml=100;
delay_ms(100);
}

void serang()
{
sensor=((se>>1)|(se<<1))&3;
//PORTD=~(((se>>1)|(se<<1))&3);//sensor;
while(sensor==3)
{
sensor=((se>>1)|(se<<1))&3;
dir_kanan=1;dir_kiri=0;pwmr=255;pwml=255;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
}
}

void banting_kiri()
{
int i;
for(i=0;i<=100;i++)
{
sensor=((se>>1)|(se<<1))&3;
//PORTD=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=1;dir_kiri=1;pwmr=60;pwml=100;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
if(sensor==3)serang();
delay_ms(1);
}
}

void banting_kanan()
{
int i;
for(i=0;i<=100;i++)
{
sensor=((se>>1)|(se<<1))&3;
//PORTD=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=0;dir_kiri=0;pwmr=100;pwml=60;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
if(sensor==3)serang();
delay_ms(1);
}

}
void scan_sensor_ired()
{
if (!kiri_belakang_ired){maju_kiri_putar();}
else if (!kiri_depan_ired){maju_kiri_putar();}
else if (!kanan_belakang_ired){maju_kanan_putar();}
else if (!kanan_depan_ired){maju_kanan_putar();}
else if (!belakang_kiri_ired){maju_putar_ka();}
else if (!belakang_kanan_ired){maju_putar_ka();}
else if (!belakang_kiri_garis){maju_dikit();}
else if (!depan_kiri_garis){mundur_banting_ka();}
else if (!belakang_kanan_garis){maju_dikit();}
else if (!depan_kanan_garis){mundur_banting_ki();}
//else if((kiri_belakang_ired==kiri_depan_ired)==0)
{mundur_serong_ki();}
//else if((kanan_belakang_ired==kanan_depan_ired)==0)
{mundur_serong_ka();}
//else if((belakang_kanan_ired==belakang_kiri_ired)==0)
{maju_putar_ka();}
//else if((belakang_kanan_garis==belakang_kiri_garis)==0)
{maju_dikit();}
//elseif((depan_kanan_garis==depan_kiri_garis)==0)
{mundur_banting_ka();}
}

void scan()
{
//if(!belakang_kanan_garis){maju_dikit();}
//else if(!depan_kanan_garis){mundur_banting_ki();}
//if(!belakang_kiri_garis){maju_dikit();}
//else if(!depan_kiri_garis){mundur_banting_ka();}
//{
int i;
for(i=0;i<=60;i++) //for 120 trus delay 1 = 1 detik
{
sensor=((se>>1)|(se<<1))&3; //scan maju
//PORTB=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=1;dir_kiri=0;pwmr=100;pwml=100;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
if(sensor==1)banting_kiri();
if(sensor==2)banting_kanan();
if(sensor==3)serang();
scan_sensor_ired();
delay_ms(1);
}

for(i=0;i<=150;i++)
{
sensor=((se>>1)|(se<<1))&3; //scan kanan
//PORTB=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=0;dir_kiri=0;pwmr=60;pwml=80;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
if(sensor==1)banting_kiri();
if(sensor==2)banting_kanan();
if(sensor==3)serang();
scan_sensor_ired();
delay_ms(1);
}

for(i=0;i<=200;i++)
{
sensor=((se>>1)|(se<<1))&3; //scan kiri
//PORTB=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=1;dir_kiri=1;pwmr=100;pwml=60;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(! depan_kiri_garis){mundur_banting_ka();}
if(sensor==1)banting_kiri();
if(sensor==2)banting_kanan();
if(sensor==3)serang();
scan_sensor_ired();
delay_ms(1);
}
for(i=0;i<=150;i++)
{
sensor=((se>>1)|(se<<1))&3; //scan balik kanan
//PORTB=~(((se>>1)|(se<<1))&3);//sensor;
dir_kanan=0;dir_kiri=0;pwmr=60;pwml=80;
if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();}
else if(!depan_kiri_garis){mundur_banting_ka();}
if(sensor==1)banting_kiri();
if(sensor==2)banting_kanan();
if(sensor==3)serang();
scan_sensor_ired();
delay_ms(1);
}
//}
}

void main(void)
{
//int i;
// Declare your local variables here

// Input/Output Ports initialization


// Port A initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
State7=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
State7=T
PORTB=0xFF;
DDRB=0x00;
// Port C initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
State7=T
PORTC=0x7F;
DDRC=0x80;

// Port D initialization
// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In
Func6=In Func7=In
// State0=T State1=T State2=T State3=T State4=T State5=T State6=T
State7=T
PORTD=0x09;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 11059.200 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x01;
TCNT0=0xC0;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization


// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization


TIMSK=0x01;

// Analog Comparator initialization


// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 172.800 kHz
// ADC Voltage Reference: AREF pin
// ADC High Speed Mode: On
// ADC Auto Trigger Source: Free Running
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
ADCSRA=0xEE;
SFIOR&=0x0F;
SFIOR|=0x10;
// LCD module initialization
//lcd_init(16);

// Global enable interrupts


#asm ("sei")

while (1)
{
// Place your code here

scan();
//tampil_lcd();
//PORTB=~(((se>>1)|(se<<1))&3);//sensor;
//pwmr=100;
//for(i=0;i<=120;i++){PORTB=0;delay_ms(1);}
//for(i=0;i<=120;i++){PORTB=1;delay_ms(1);}
//pwml=0;
//dir_kanan=1;
}
}
LAMPIRAN B

Tampak Kiri Atas

Tampak Kanan Atas


Tampak Belakang Tampak Depan

Tampak Bawah
RIWAYAT PENULIS

Nama : Rejeki Agung Saputro


Alamat : Jarsongo I/1 Gunungsari
Surabaya ( 60229 )
Jawa Timur
Hobby : Jalan2, sepak bola, nge-game, n.….. ( .. ^_^.. !)v
Email : riskibee@yahoo.com
Telepon : +6285646234485
( 031 ) - 5670938

Riwayat pendidikan formal yang pernah ditempuh :


SD Negeri Jajartunggal Surabaya ( 1991 - 1997 )
SLTP Negeri 16 Surabaya ( 1997 - 2000 )
SMU Negeri 13 Surabaya ( 2000 - 2003 )
D3 Jurusan Teknik Elektronika, Politeknik Elektronika Negeri
Surabaya, Institut Teknologi Sepuluh Nopember Surabaya (ITS).

Anda mungkin juga menyukai