realisasi robot firefighting berkaki untuk … robot... · rekan-rekan laboratorium fisika dan...
TRANSCRIPT
REALISASI ROBOT FIREFIGHTING BERKAKI UNTUK PERLOMBAAN
KRCI BERKAKI 2012
REALIZATION OF LEGGED FIREFIGHTING ROBOT FOR KRCI LEGGED
COMPETITION 2012
Laporan Penelitian
Diajukan sebagai Kewajiban Penelitian kepada Lembaga Penelitian dan
Pengabdian kepada Masyarakat
Universitas Kristen Maranatha
Bandung
Disusun oleh :
Yonatan Hutama, ST. MT.
Muliady, ST. MT.
Innocentio Aloysius Loe
Rafles Purba
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS KRISTEN MARANATHA
BANDUNG
2012
LEMBAR IDENTITAS DAN PENGESAHAN LAPORAN PENELITIAN
1. a. Judul penelitian : Realisasi Robot Firefighting Berkaki untuk
Perlombaan KRCI Berkaki 2012 b. Jenis penelitian : Engineering
2. Peneliti Jumlah peneliti : 4 orang Ketua peneliti Nama lengkap dan gelar : Yonatan Hutama, ST. MT. Pangkat/Golongan/NIK : Asisten Ahli/III A/2200930 Fakultas/Jurusan : Teknik/Teknik Elektro
Pusat/Bidang Studi : Robotika Anggota peneliti a) Nama lengkap dan gelar : Muliady, ST. MT. Pangkat/Golongan/NIK : Lektor/IV A /220147 b) Nama lengkap dan gelar : Innocentio Aloysius Loe
Pangkat/Golongan/NIK : Mahasiswa/0922045 c) Nama lengkap dan gelar : Rafles Purba
Pangkat/Golongan/NIK : Mahasiswa/0922071
3. Lokasi penelitian : Laboratorium Robotika, Teknik Elektro, UKM 4. Sumber dana penelitian : Universitas Kristen Maranatha 5. Biaya penelitian : Rp 20.750.000,00 6. Lama Penelitian : Agustus 2011 sampai dengan Agustus 2012
Bandung, 9 Agustus 2012 Menyetujui, Ketua Peneliti, Dekan Fakultas Teknik UK Maranatha Ir. Aan Darmawan, MT Yonatan Hutama, ST. MT.
Mengetahui, Ketua LPPM UK Maranatha,
Prof. Dr. Ir. Benjamin Soenarko, MSME.
REALISASI ROBOT FIREFIGHTING BERKAKI UNTUK KRCI
BERKAKI 2012
Disusun Oleh :
Yonatan Hutama, Muliady, Innocentio Aloysius Loe, Rafles Purba
Jurusan Teknik Elektro, Fakultas Teknik
Universitas Kristen Maranatha
Jl. Prof. Drg. Suria Sumantri 65, Bandung 40164, Indonesia
ABSTRAK
Kontes Robot Cerdas Indonesia (KRCI) adalah acara yang digelar
pemerintah Indonesia setiap tahun. Salah satu divisi KRCI adalah KRCI
Firefighting Robot yang terbagi menjadi dua kategori, yaitu KRCI Beroda dan
KRCI Berkaki. Robot berkaki merupakan jenis robot yang sulit dibentuk karena
kesulitan pembentukan struktur dan mekanisme pergerakan kakinya.
Penelitan ini merealisasikan robot firefighting bekaki menggunakan
mikrokontroler ATMEGA128 dan unit kontrol CM-510. Tujuan desain robot
adalah untuk menyelesaikan misi yang diberikan dalam perlombaan KRCI 2012.
Dalam perancangan yang diperhatikan adalah pemilihan dan penggunaan sensor-
sensor secara tepat serta sistem kontrol navigasi robot yang memungkinkan robot
menyelesaikan misi tersebut. Adapun misi yang diberikan memiliki beragam
kombinasi, mulai dari posisi awal robot, letak api yang harus dipadamkan, serta
peletakan halangan-halangan yang mengganggu navigasi robot.
Hasilnya memperlihatkan bahwa robot dapat melakukan navigasi pada
kondisi-kondisi misi tertentu, terutama jika posisi awal terletak pada lorong
lintasan dan api terletak pada ruangan yang sempit.
Kata kunci : Robot Firefighting, ATMEGA128, CM-510, KRCI Berkaki 2012
i Universitas Kristen Maranatha
REALIZATION OF FIREFIGHTING LEGGED ROBOT FOR KRCI-
LEGGED 2012
Composed By :
Yonatan Hutama, Muliady, Innocentio Aloysius Loe, Rafles Purba
Department of Electrical Engineering, Faculty of Engineering
Maranatha Christian University
Jl. Prof. Drg. Suria Sumantri 65, Bandung 40164, Indonesia
ABSTRACT
Kontes Robot Cerdas Indonesia (KRCI) was an event which held by
Indonesian government every year. KRCI Firefighting Robot was a part of many
divisions available in KRCI, which was separated into two categories : KRCI-
Wheeled and KRCI-Legged. Legged robot was a kind of robot which was hard to
make because of its structure complexity and the complex mechanisms of the
movement of the legs.
This research realize a firefighting legged robot using ATMEGA128
microcontroller and a control unit CM-510. The design purpose of the robot was
to complete missions which was given in KRCI 2012 competition. The way to
choose and to use sensors accurately, and the control system of the robot
navigation which allows robot to complete the missions were the main context of
the design. The given missions had plenty of combinations, e.g. the starting point,
position of the flame source to be extinguished, and placements of obstacles which
disturbs navigation of the robot.
The result showed that the robot able to navigate in certain condition of the
mission, mostly if the starting point was placed at the corridor of the track and
when the flame source was placed in a narrow room.
Keywords : Firefighting Robot, ATMEGA128, CM-510, KRCI Legged 2012
ii Universitas Kristen Maranatha
KATA PENGANTAR
Puji syukur kepada Tuhan Yang Maha Esa karena berkat rahmat dan kasih
karunia-Nya, laporan penelitian ini dapat diselesaikan.
Laporan berjudul “REALISASI ROBOT FIREFIGHTING BERKAKI
UNTUK KRCI BERKAKI 2012” diajukan untuk laporan penelitian di Jurusan
Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha, Bandung.
Selama pelaksanaan penelitian, penulis telah mendapat banyak dorongan,
bimbingan, dan bantuan dari berbagai pihak. Menyadari bahwa tanpa campur
tangan Tuhan, laporan ini tidak dapat diselesaikan. Selain itu kami juga berterima
kasih kepada pihak-pihak yang telah membantu dalam menyelesaikan laporan ini.
1. Prof. Dr. Ir. Benjamin Soenarko, MSME. selaku ketua LPPM Universitas
Kristen Maranatha yang membantu terlaksananya penelitian ini.
2. Yonatan Hutama, ST. MT. dan Muliady, ST. MT. selaku dosen pembimbing
dalam penelitian.
3. Muliady, ST. MT. selaku kepala Laboratorium Fisika dan Instrumentasi
Universitas Kristen Maranatha yang telah banyak membantu penelitian.
4. Keluarga yang member dukungan baik doa dan moral.
5. Rekan-rekan Laboratorium Fisika dan Instrumentasi Universitas Kristen
Maranatha yang telah banyak membantu.
Penulis menyadari bahwa laporan ini masih jauh dari sempurna, sehingga
penulis sangat mengharapkan saran dan kritik dari setiap pembaca untuk menjadi
bahan evaluasi agar lebih baik lagi di masa yang akan datang.
Akhir kata, semoga laporan ini bisa memberi manfaat dan kontribusi bagi
kemajuan almamater dan menambah pengetahuan bagi semua pihak.
Bandung, 9 Agustus 2012
Yonatan Hutama
iii
DAFTAR ISI
COVER
LEMBAR IDENTITAS DAN PENGESAHAN
ABSTRAK .........................................................................................................i
ABSTRACT.......................................................................................................ii
KATA PENGANTAR DAN UCAPAN TERIMA KASIH............................iii
DAFTAR ISI......................................................................................................iv
DAFTAR TABEL .............................................................................................vi
DAFTAR GAMBAR.........................................................................................vii
BAB 1. PENDAHULUAN
1.1. Latar Belakang ...............................................................................................1
1.2. Identifikasi Masalah.......................................................................................2
1.3. Pembatasan Masalah ......................................................................................2
1.4. Perumusan Masalah .......................................................................................2
1.5. Tujuan dan Manfaat Penelitian ......................................................................2
1.6. Sistematika Penulisan ....................................................................................2
1.7. Metodologi Penelitian ....................................................................................3
BAB 2. LANDASAN TEORI
2.1. Panduan Peraturan KRCI Firefighting Divisi Berkaki ..................................4
2.2. Pengantar Robotika ........................................................................................9
2.3. ATMEGA128.................................................................................................10
2.4. ROBOTIS CM-510 ........................................................................................11
2.5. Sensor Photoresistance ..................................................................................11
2.6. Sensor Ultrasonik SRF01...............................................................................12
2.7. Sensor UVTron Hamamatsu C10807.............................................................13
2.8. Sensor Thermal Array TPA81 .......................................................................14
iv
BAB 3. PERANCANGAN DAN REALISASI
3.1. Analisa Blok Diagram....................................................................................15
3.2. Mikrokontroler ATMEGA128.......................................................................16
3.3. Unit Pengontrol CM-510 ...............................................................................18
3.4. Rangkaian Sensor Photoresistance ................................................................18
3.5. Konfigurasi Ultrasonik SRF01.......................................................................19
3.6. Rangkaian Sensor UVTron C10807 ..............................................................19
3.7. Konfigurasi Sensor Thermal Array TPA81 ...................................................20
3.8. Struktur Robot................................................................................................20
3.9. Algoritma Program ........................................................................................21
3.10. Diagram Alir Pemrograman.........................................................................22
BAB 4. PERANCANGAN DAN REALISASI
4.1. Data Sensor ....................................................................................................25
4.2. Data Gerak Robot...........................................................................................26
BAB 5. KESIMPULAN DAN SARAN
5.1. Kesimpulan ....................................................................................................29
5.2. Saran...............................................................................................................29
DAFTAR PUSTAKA
LAMPIRAN
v
DAFTAR TABEL
Tabel 4.1 Data pembacaan sensor photoresistive LDR ....................................25
Tabel 4.2 Data pembacaan sensor ultrasonik SRF01 ......................................25
Tabel 4.3 Data pembacaan sensor Thermal Array TPA81 ..............................26
Tabel 4.4 Data hasil gerakan jalan lurus robot................................................26
Tabel 4.5 Data hasil gerakan berputar robot ...................................................27
Tabel 4.6 Data keberhasilan robot memadamkan api.....................................27
Tabel 4.7 Data keberhasilan robot menyelesaikan misi ..................................28
vi
DAFTAR GAMBAR
Gambar 2.1 Bentuk dan Ukuran Lapangan Dilihat dari Atas .......................4
Gambar 2.2 Bentuk dan ukuran lapangan dilihat dari samping ...................5
Gambar 2.3 Bentuk dan ukuran lilin ................................................................5
Gambar 2.4 Bentuk dan ukuran furniture........................................................6
Gambar 2.5 Bentuk dan Ukuran Sound Damper .............................................7
Gambar 2.6 Bentuk dan Ukuran Cermin .........................................................8
Gambar 2.7 Bentuk dan Ukuran Uneven Floor ...............................................8
Gambar 2.8 Ilustrasi Pergerakan Kaki Hexapod dalam Berbagai Metode ..10
Gambar 2.9 Respon Spektral LDR ...................................................................11
Gambar 2.10 Sensor Photoresistive LDR ..........................................................12
Gambar 2.11 SRF01............................................................................................12
Gambar 2.12 UVTron .........................................................................................13
Gambar 2.13 TPA81 ...........................................................................................14
Gambar 2.14 Sudut pandang TPA81 ................................................................14
Gambar 3.1 Blok diagram robot firefighting berkaki ......................................15
Gambar 3.2 Skematik Modul ATMEGA128....................................................17
Gambar 3.3 Realisasi PCB Modul ATMEGA128............................................17
Gambar 3.4 Detail unit pengontrol CM-510 ....................................................18
Gambar 3.5 Rangkaian sensor photoresistive LDR..........................................18
Gambar 3.6 Konfigurasi sensor ultrasonik SRF01 ..........................................19
Gambar 3.7 Rangkaian sensor UVTron C10807 .............................................19
Gambar 3.8 Konfigurasi pin sensor Thermal Array TPA81............................20
Gambar 3.9 Desain awal robot ..........................................................................20
Gambar 3.10 Realisasi struktur robot ..............................................................21
Gambar 3.11 Diagram alir bagian 1..................................................................23
Gambar 3.12 Diagram alir bagian 2..................................................................24
vii
BAB I
PENDAHULUAN
1.1. Latar Belakang
Kontes Robot Cerdas Indonesia (KRCI) diselenggarakan oleh
Direktorat Penelitian dan Pengabdian kepada Masyarakat Direktorat Jendral
Pendidikan Tinggi Kementerian Pendidikan Nasional dengan tujuan
menumbuhkembangkan dan meningkatkan kreatifitas mahasiswa. Acara ini
diselenggarakan setiap tahun.
Pada tahun 2012, KRCI dipertandingkan kembali dan dibagi dalam tiga
divisi, yaitu :
1. Divisi Beroda
Divisi di mana robot menggunakan roda sebagai alat geraknya
dalam misi mencari dan memadamkan api (firefighting) pada arena
lapangan.
2. Divisi Berkaki
Sama dengan divisi beroda, hanya saja robot menggunakan kaki
sebagai alat geraknya.
3. Divisi Battle
Divisi ini mempertandingkan 2 robot humanoid bermain
sepakbola. Pertandingan bertujuan mencari, membawa dan menendang
bola ke dalam gawang lawan.
Jurusan Teknik Elektro Universitas Kristen Maranatha (JTE-UKM)
sudah memiliki beberapa prestasi dalam ajang tersebut KRCI Beroda, antara
lain meraih Juara 2 pada KRCI Beroda 2009, Juara 3 pada KRCI Beroda
2010, Juara 3 pada KRCI Beroda 2011, dan Penghargaan Desain Terbaik
pada KRCI Beroda 2012.
Dalam kategori KRCI Berkaki, JTE-UKM baru berhasil meraih
Penghargaan Desain Terbaik pada KRCI Berkaki 2010 dan Penghargaan
1 Universitas Kristen Maranatha
Strategi Terbaik pada KRCI Berkaki 2011. Penghargaan juara belum pernah
didapat dari kategori ini. Pada penelitian kali ini akan dirancang suatu robot
firefighting berkaki yang diharapkan memiliki kemampuan menyelesaikan
misi pada perlombaan KRCI Berkaki.
1.2. Identifikasi Masalah
Identifikasi masalah penelitian adalah merealisasikan robot berkaki
pemadam api untuk perlombaan KRCI Berkaki
1.3. Pembatasan Masalah
Dalam penelitian ini batasan masalah mencakup hal-hal berikut :
1. Robot dirancang agar dapat menyelesaikan misi yang tertera pada
peraturan KRCI Berkaki 2012.
2. Bentuk dasar robot yang digunakan adalah hexapoda (berkaki enam).
1.4. Perumusan Masalah
Bagaimana merealisasikan robot berkaki hexapoda pemadam api yang
dapat menyelesaikan misi perlombaan KRCI Berkaki 2012?
1.5. Tujuan dan Manfaat Penelitian
Tujuan dari penelitian ini adalah merealisasikan robot berkaki pemadam
api untuk perlombaan KRCI Berkaki, dengan manfaat mengembangkan lebih
lanjut robotika Teknik Elektro Maranatha.
1.6. Sistematika Penulisan
Sistematika penulisan laporan ini disusun menjadi beberapa bab.
BAB I : PENDAHULUAN
Pada bab ini dibahas mengenai latar belakang penulisan, rumusan
masalah, tujuan pembahasan, batasan masalah, spesifikasi alat, dan sistematik
penulisan.
2 Universitas Kristen Maranatha
BAB II : LANDASAN TEORI
Pada bab ini dibahas teori-teori yang digunakan dalam perancangan
robot firefighting berkaki untuk KRCI Berkaki 2012.
BAB III : PERANCANGAN & REALISASI
Pada bab ini dibahas struktur robot, cara penggunaan sensor-sensor,
penggunaan kontroler, dan algoritma serta flowchart pemrograman robot.
BAB IV : PENGUJIAN
Pada bab ini dibahas data-data pengamatan dan analisa terhadap
masing-masing komponen inti dari robot dan kemampuan robot dalam
menyelesaikan misi KRCI Berkaki 2012.
BAB V : PENUTUP
Pada bab ini akan diuraikan kesimpulan mengenai hasil penelitian dan
saran yang perlu dilakukan untuk perbaikan di masa yang akan datang.
1.7. Metodologi Penelitian
Penelitian dilakukan dengan metode penelitian dan pengembangan
secara eksperimen. Robot dirancang sendiri dan pengambilan data dilakukan
secara bertahap pada berbagai komponen robot terlebih dahulu kemudian
dijalankan untuk melakukan misi secara penuh.
3 Universitas Kristen Maranatha
BAB 2
LANDASAN TEORI
2.1. Panduan Peraturan KRCI Firefighting Divisi Berkaki
Peraturan untuk divisi beroda dan berkaki KRCI 2011 mengacu pada
peraturan yang dikeluarkan oleh Trinity College Fire Fighting Robot Contest
(TCFFRC) 2011, Connecticut, Hartford, Amerika Serikat.
Robot diberi tugas untuk menelusuri maze, mencari api dan
memadamkan api dengan kondisi ruang yang berubah-ubah. Api yang dipakai
sebagai tujuan pemadaman menggunakan api lilin dengan ketinggian lilin
antara 15 cm – 20 cm. Proses pemadaman api harus dilakukan dalam radius
30 cm dari posisi api lilin.
2.1.1. LAPANGAN
Lapangan / arena mensimulasikan interior dari sebuah rumah dengan 4
ruang. Lapangan terbuat dari papan multipleks dengan ketebalan 1,8 s.d. 2 cm
dan berukuran 248 cm x 248 cm x 30 cm. Di dalam lapangan terdapat 4 ruang
dengan posisi tetap namun dua diantaranya (ruang 1 dan 4) memiliki pintu
yang dapat digeser posisinya. Bentuk dan ukuran lapangan dilihat dari atas
ditunjukkan oleh Gambar 2.1. sedangkan bentuk dan ukuran lapangan dilihat
dari samping ditunjukkan oleh Gambar 2.2.
Gambar 2.1 Bentuk dan Ukuran Lapangan Dilihat dari Atas
4 Universitas Kristen Maranatha
Gambar 2.2 Bentuk dan ukuran lapangan dilihat dari samping
Untuk KRCI 2011, penomoran ruang adalah sebagai berikut: ruang 1
(Room 1) adalah ruang dengan ukuran terbesar, berturut-turut ruang 2 (Room
2), ruang 3 (Room 3) dan ruang 4 (Room 4) adalah ruang yang berada searah
jarum jam dengan ruang 1. Setiap pintu ruangan ditandai garis putih selebar 2
cm. Lapangan memiliki roda agar dapat dipindah atau diputar dengan mudah.
2.1.2. LILIN
Lilin digunakan sebagai simulasi titik api dalam suatu ruang. Tinggi lilin
berkisar antara 15 s.d. 20 cm dengan diameter 2 s.d. 3 cm. Lilin berjumlah
satu buah yang diletakkan di salah satu ruang dari 4 ruang yang ada. Bila lilin
telah diletakan di dudukannya, maka yang dimaksud dengan tinggi lilin
adalah antara 15 s.d. 20 cm terhitung dari lantai sampai dengan bagian bahan
lilin yang tertinggi (bukan sumbu apinya). Bentuk dan ukuran lilin dapat
dilihat pada Gambar 2.3.
Gambar 2.3 Bentuk dan ukuran lilin
Lilin diletakkan acak pada titik-titik tertentu di grid ruang yang berjarak
10 s.d. 15 cm antar titik (lihat bahasan tentang grid). Posisi ini ditentukan
5 Universitas Kristen Maranatha
melalui undian komputer. Kemungkinan posisi lilin untuk Divisi Beroda
maupun Divisi Berkaki adalah sama.
2.1.3. FURNITURE
Furniture berfungsi sebagai simulasi benda-benda yang berada di suatu
ruang dan bertujuan untuk menguji kemampuan bermanuver robot di dalam
suatu ruang dalam pergerakan mendekati api.
Furniture berbentuk silinder berwarna kuning terang (R:255, G:255, B:0)
terbuat dari potongan pipa PVC / paralon berdiameter 11 cm dengan tinggi 30
cm. Silinder paralon ini kemudian dicor dengan adukan semen dan pasir
supaya menjadi berat dan agar tidak mudah tergeser / jatuh jika tertabrak
robot. Bentuk dan ukuran furniture dapat dilihat pada Gambar 2.4.
Gambar 2.4 Bentuk dan ukuran furniture
Furniture berjumlah 4 buah yang masing-masing diletakkan di setiap
ruang, baik yang terdapat lilin maupun yang tidak. Posisi furniture adalah
acak pada titik-titik tertentu di grid ruang melalui undian komputer.
2.1.4. SOUND DAMPER
Sound damper adalah bagian dari hanging objects (objek yang tergantung
di dinding) yang berfungsi untuk mengganggu dan menguji sistem navigasi
berbasis ultrasonik. Sound damper berukuran tinggi 25 cm dan panjang 45 cm
terbuat dari kertas karton berwarna merah (R:255,G:0,B:0). Sisi panjang
6 Universitas Kristen Maranatha
sound damper berbentuk lipatan-lipatan 1 cm dengan sudut 60 derajat
sehingga berbentuk seperti gelombang.
Agar tidak melengkung maka kertas karton yang sudah dibentuk ini
ditempelkan pada sepotong papan tripleks dengan ketebalan 3 mm berukuran
45 cm x 25 cm. Detil bentuk dan ukuran sound damper lihat Gambar 2.5.
Gambar 2.5 Bentuk dan Ukuran Sound Damper
Sound damper memiliki 2 pengait di ujung-ujung atasnya sehingga dia
dapat dengan mudah digantungkan di dinding dan mudah dipindah-pindah.
Sound damper tidak memiliki pengunci khusus di dinding sehingga dia
dengan mudah dapat tergeser di sepanjang dinding, hal ini harus diantisipasi
oleh robot. Sound damper berjumlah 4 buah diletakkan secara acak pada
tempat-tempat tertentu di dinding melalui undian komputer.
2.1.5. CERMIN
Cermin adalah bagian dari hanging yang berfungsi untuk menguji sistem
navigasi berbasis cahaya (misal infra-merah). Cermin berukuran tebal 5 mm,
panjang 45 cm dan tinggi 30 cm. Cermin diberi dudukan tripleks 3 mm
dengan ukuran panjang dan tinggi yang sama dengan cermin. Ketebalan
maksimum cermin dan tripleks adalah 1,5 cm. Detil bentuk dan ukuran
cermin dapat dilihat pada Gambar 2.6.
7 Universitas Kristen Maranatha
Gambar 2.6 Bentuk dan Ukuran Cermin
Cermin memiliki 2 pengait di ujung-ujungnya sehingga dia dapat dengan
mudah digantungkan di dinding dan mudah dipindah-pindah. Cermin tidak
memiliki pengunci khusus di dinding sehingga dengan mudah dapat bergeser
di sepanjang dinding, hal ini harus diantisipasi oleh robot. Cermin berjumlah
4 buah diletakkan secara acak pada tempat-tempat tertentu di dinding melalui
undian komputer.
2.1.6. UNEVEN FLOOR
Uneven floor merupakan halangan di lantai lorong yang fungsinya seperti
‘polisi tidur’. Uneven floor bertujuan untuk menghalangi laju robot dan
menguji kestabilan sistem gerak robot.
Uneven floor berbentuk segitiga pyramid yang terbuat dari kayu dan
dicat sama seperti warna lantai yaitu hitam (R:0, G:0, B:0). Detil bentuk dan
ukuran uneven floor dapat dilihat pada Gambar 2.7.
Gambar 2.7 Bentuk dan Ukuran Uneven Floor
8 Universitas Kristen Maranatha
2.2. Pengantar Robotika
Sebelum merancang dan merealisasikan robot pemadam api diperlukan
beberapa pengertian tentang robot. Pada bagian ini akan dijelaskan beberapa
hal yang berhubungan dengan robotika.
2.2.1 Klasifikasi Robot Berdasarkan Mobilitasnya
Klasifikasi robot berdasarkan mobilitasnya dapat dibagi menjadi
beberapa bagian, yaitu :
1. Fixed Type
Robot ini berada dalam kondisi diam atau kondisi beroperasi pada
jalur gerak yang pendek.
2. Mobile Robots
Robot ini dilengkapi dengan roda, dapat bergerak pada daerah yang
luas dan tidak terlalu sulit atau ekstrim.
3. Walking Robots
Robot ini mempunyai kaki yang dapat bergerak pada daerah yang
sulit. Masalah utama dari walking robot adalah titik keseimbangan yang
berbeda dalam melakukan beragam tugas.
Pada penelitian kali ini kita membuat robot kategori Walking Robots.
2.2.2. METODA PERGERAKAN KAKI
Terdapat beberapa metode pergerakan kaki robot hexapoda, di antaranya
adalah ripple gait, wave gait, dan tripod gait.
1. Ripple Gait
Pada metoda ini robot berjalan dengan menggerakan 2 buah kaki
dalam satu waktu. Pada metoda ini kaki-kaki yang bergerak berada pada
sisi yang berbeda. Penggunaan metoda ini membuat gerakan lebih stabil
dari metoda tripod gait dan lebih cepat dari metoda wave gait.
9 Universitas Kristen Maranatha
2. Wave Gait
Pada metoda ini robot menggerakan kaki satu demi satu dalam
menghasilkan gerakan. Dengan menggunakan metoda ini pada suatu
waktu hanya ada satu kaki yang terangkat sehingga dengan menggunakan
metoda ini robot lebih stabil ketika bergerak namun lambat.
3. Tripod Gait
Pada metoda ini robot berjalan dengan mengangkat 3 buah kaki pada
satu waktu dan meninggalkan 3 kaki lainnya sebagai pijakan. Dengan
menggunakan metoda ini 1 siklus dapat diselesaikan dalam 2 langkah
sehingga memungkinkan robot dapat bergerak cepat.
Gambar 2.8 Ilustrasi Pergerakan Kaki Hexapod dalam Berbagai Metode
Pada penelitian kali ini digunakan metoda Tripod Gait.
2.3. ATMEGA128
Mikrokontroler ATMEGA128 adalah alat untuk mengontrol kerja dari
suatu rangkaian elektronika menggunakan program yang terintegrasi.
ATMEGA128 terdiri dari sebuah microprocessor serta beberapa peripheral
interface untuk menghubungkan pengontrol dengan rangkaian elektronik
lainnya. Pada penelitian unit ini digunakan sebagai logic controller, yaitu
10 Universitas Kristen Maranatha
yang mengatur gerakan robot berdasarkan algoritma-algoritma yang sudah
dibuat. Penjelasan lebih jauh mikrokontroler ini dapat dilihat pada bagian
Lampiran A.
2.4. ROBOTIS CM-510
CM-510 adalah suatu unit pengontrol buatan ROBOTIS berbasis
mikrokontroler ATMEGA2561 yang dapat digunakan sebagai servo
controller maupun logic controller. Pada penelitian unit ini digunakan
sebagai servo controller. Penjelasan lebih jauh mikrokontroler ini dapat
dilihat pada bagian Lampiran B.
2.5. Sensor Photoresistance
Sensor photoresistance adalah sensor yang mendeteksi intensitas
cahaya. Sensor ini terdiri dari satu LED putih dan satu LDR (Light Dependent
Resistor).
LDR pada dasarnya adalah resistor yang nilai hambatanya berubah
terhadap intensitas cahaya yang diterima. Hambatannya maksimal pada
keadaan gelap dan minimal pada keadaan terang, tergantung dari spesifikasi
LDR itu sendiri.
Gambar 2.9 Respon Spektral LDR
LED putih digunakan sebagai transmitter cahaya, sedangkan LDR
bertindak sebagai receiver yang menerima pantulan sinar LED dari alas
11 Universitas Kristen Maranatha
lapangan. LDR dipasang secara seri pada suatu resistor yang nilainya
menentukan sensitivitas sensor tersebut.
Gambar 2.10 Sensor Photoresistive LDR
Semakin terang warna alas pemantul maka semakin banyak cahaya
LED yang dipantulkan, sehingga hambatan LDR semakin kecil dan tegangan
sinyal semakin mendekati 0 V. Sensor ini digunakan untuk mendeteksi
adanya pintu ruangan berupa garis putih pada lantai.
2.6. Sensor Ultrasonik SRF01
SRF01 adalah sensor pengukur jarak yang menggunakan komunikasi
serial half-duplex dengan level TTL. Format frame data serial berupa 8 data
bit, 1 stop bit, dan tanpa parity bit. Kecepatan transfer data (baud rate)
standar adalah 9600 bps, namun dapat diprogram mencapai 38400 bps.
Gambar 2.11 SRF01
Untuk mengganti fungsi kanal komunikasi sensor menjadi transmitter
atau receiver, kanal tersebut harus di pull-up selama kurang lebih 1 milidetik,
yang disebut dengan break.
Setiap SRF01 memiliki address yang dapat diprogram sehingga pada
satu bus serial dapat digunakan 16 SRF01 sekaligus, dengan catatan setiap
SRF01 memiliki address yang berbeda.
12 Universitas Kristen Maranatha
Keunggulan sensor ini adalah kemampuan kalibrasi otomatis, serta
dapat mengukur jarak 0 cm. Umumnya sensor ultrasonik memiliki batas ukur
minimal 1-2 cm saja. Pemrograman SRF01 dapat dilihat pada Lampiran C.
2.7. Sensor UVTron Hamamatsu C10807
Sensor UVTron digunakan untuk mendeteksi sinar ultraviolet yang
dihasilkan sumber panas. Prinsipnya adalah sifat fotoelektrik pada logam, di
mana intensitas cahaya tertentu akan menghasilkan tegangan. Sensor ini
terdiri dari bagian driver serta bulb, di mana driver menghasilkan tegangan
tinggi (± 350 V/ 100 μA) agar bulb dapat mendeteksi panas. Sensitivitas
spektral sensor ini sangat kecil (185 nm - 260 nm) sehingga hanya sensitif
terhadap panas dari sumber api.
(a) (b)
Gambar 2.12 (a) Driver UVTron (b) UVTron bulb
Catu daya yang dibutuhkan sensor ini rendah (12 V) dan arus yang
digunakan pun sedikit. Output sensor berupa transistor NPN Open-Collector
sehingga dapat diaplikasikan pada banyak rangkaian logika dengan batas catu
daya output 50 V / 80 mA. Sensor ini digunakan untuk mendeteksi ada atau
tidaknya api ketika robot memasuki suatu ruangan.
2.8. Sensor Thermal Array TPA-81
13 Universitas Kristen Maranatha
TPA81 dapat mendeteksi sinar infra merah dengan panjang gelombang
2μm-22μm. Panjang gelombang ini dihasilkan oleh benda-benda panas.
Karena yang dideteksi adalah radiasi panasnya saja, maka TPA81 dapat
mengukur suhu tanpa harus menyentuh sumber panas. Sensor ini digunakan
untuk mendeteksi letak api terhadap robot.
Gambar 2.13 TPA81
TPA81 dapat mendeteksi suhu pada 8 titik sekaligus. Karena didalam
TPA81 terdapat 8 buah sensor thermopile yang masing-masing memiliki
sudut pandang (Field of View) 5.12o terhadap sumbu horizontal dan 6o
terhadap sumbu vertikal. Jadi total sudut pandangnya adalah 41o horizontal
dan 6o vertikal. Sistem komunikasi TPA81 menggunakan protokol I2C.
Gambar 2.14 Sudut pandang TPA81 (kiri : horizontal, kanan : vertical)
Sensor ini dapat digunakan secara langsung untuk mengontrol posisi
motor servo dengan cara mengirimkan perintah-perintah tertentu, sehingga
memudahkan pemrograman mikrokontroler. Pemrograman lengkap sensor
TPA81 dapat dilihat pada Lampiran C.
14 Universitas Kristen Maranatha
BAB 3
PERANCANGAN DAN REALISASI
3.1. Analisa Blok Diagram
Blok diagram sistem kerja robot adalah seperti tertera pada gambar 3.1
berikut.
Gambar 3.1 Blok diagram robot firefighting berkaki
Delapan belas motor servo AX-12A digunakan sebagai motor kaki-kaki
robot. Servo-servo tersebut terhubung pada unit pengontrol CM-510 melalui
komunikasi serial. Pergerakan-pergerakan servo diprogram pada CM-510
sementara perintah pemanggilan suatu gerakan diatur oleh mikrokontroler
ATMEGA128 melalui kanal komunikasi serial terpisah.
Sensor Photoresistive digunakan untuk mendeteksi adanya garis putih
pada pintu ruang dan juring putih posisi home maupun lilin. Keluaran
tegangan analog sensor akan dibaca mikrokontroler melalui pheriperal ADC.
Tujuh sensor ultrasonik SRF01 digunakan sebagai detektor dinding
lapangan sehingga robot mengetahui jarak tiap sisinya dari dinding. Satu
sensor SRF01 digunakan sebagai pendeteksi uneven floor. Hasil pengukuran
sensor-sensor ini dibaca oleh mikrokontroler melalui pheriperal USART.
15 Universitas Kristen Maranatha
Sensor UVTron mendeteksi ada tidaknya api ketika robot sudah
memasuki ruangan. Sinyal dari sensor dibaca melalui salah satu port input
mikrokontroler.
Sensor TPA81 mendeteksi lokasi api ketika robot sudah mendeteksi
juring lilin. Sensor ini akan memutar motor servo propeller selama titik api
yang tepat belum ditemukan. Komunikasi sensor dengan mikrokontroler
menggunakan pheriperal I2C.
Satu port output mikrokontroler digunakan untuk member sinyal PWM
pada ESC yang akan memutar motor Brushless untuk menggerakkan
propeller ketika titik api telah ditemukan.
Satu blok port mikrokontroler (PORTC) digunakan untuk komunikasi
dengan LCD display yang digunakan untuk menampilkan nilai-nilai sensor
tertentu serta kode status perintah yang diberikan pada robot.
3.2. Mikrokontroler ATMEGA128
Pada rancangan robot digunakan ATMEGA128 kemasan TQFP (Thin
Quad Flat-Pack) dengan external clock 11,0592 MHz. PORTA difungsikan
sebagai I/O digital. PORTC digunakan untuk komunikasi dengan LCD
Display. Fitur Dual USART dan I2C pada PORTD diaktifkan, sehingga
didapat dua kanal komunikasi serial dan satu kanal I2C. PORTF difungsikan
sebagai input ADC 10 bit, dengan tegangan referensi 5 V yang diberikan pada
pin AVCC.
Catu daya mikrokontroler sebesar 5 V didapat dari baterai LiPo 7,4 V
yang diturunkan tegangannya melalui dua voltage regulator NE7805 yang
diparalel untuk memperkuat arus outputnya. Baterai dihubungkan terlebih
dahulu pada saklar SPST dan dioda proteksi sebelum masuk ke regulator.
Output regulator dihubungkan paralel pada suatu LED sebagai indikator
bahwa mikrokontroler dalam kondisi On atau Off serta kapasitor untuk
mengurangi ripple pada output sehingga kerja mikrokontroler lebih stabil.
Rangkaian lengkap modul mikrokontroler ATMEGA128 dapat dilihat
pada gambar 3.2.
16 Universitas Kristen Maranatha
Gambar 3.2 Skematik Modul ATMEGA128
Gambar 3.3 Realisasi PCB Modul ATMEGA128
17 Universitas Kristen Maranatha
3.3. Unit Pengontrol CM-510
CM-510 digunakan sebagai servo controller yang menggunakan
komunikasi serial. Semua servo AX-12A dihubungkan pada unit ini, tepatnya
pada Port Dynamixel 3 pin. Komunikasi serial dengan modul ATMEGA128
melalui Port Communication Device. Catu daya 11,1 V dihubungkan pada
Battery Jack yang sekaligus mencatu daya semua servo.
Gambar 3.4 Detail unit pengontrol CM-510
3.4. Rangkaian Sensor Photoresistance
Transmitter sensor berupa LED putih Super Bright yang diseri pada
resisitor 330 Ω sebagai pembatas arus. Receiver berupa LDR diserikan pada
resistor 47 kΩ sebagai pembagi tegangan. Catu daya yang digunakan sebesar
5 V. Tegangan pada LDR dijadikan sinyal analog yang dibaca mikrokontroler.
(a) (b)
Gambar 3.5 (a) Rangkain sensor photoresistive LDR (b) Realisasi PCB
18 Universitas Kristen Maranatha
3.5. Konfigurasi Sensor Ultrasonik SRF01
Sistem komunikasi serial half-duplex sensor SRF01 memungkinkan
delapan sensor yang digunakan terhubung pada satu kanal komunikasi serial
secara langsung. Selain itu kanal receiver dan transmitter dapat dihubungkan
menjadi satu, dengan satu dioda proteksi untuk menghindari ada sinyal yang
masuk ke sensor ketika sedang difungsikan sebagai transmitter.
(a) (b)
Gambar 3.6 (a) Konfigurasi sensor ultrasonik SRF01 (b) Realisasi PCB
3.6. Rangkaian Sensor UVTron C10807
Catu daya 12 V untuk rangkaian driver UVTron diambil dari baterai
LiPo 3 Sel. Output sensor ini berupa transistor NPN Open-Collector,
sehingga untuk membuat sinyal outputnya stabil diberikan resistor pull-up 10
kΩ yang terhubung ke catu daya 5V. Dengan demikian jika bulb UVTron
mendeteksi api, maka transistor akan konduksi, sehingga nilai sinyal output
mendekati ground (logic 0), sedangkan jika api tidak dideteksi, transistor
akan off, sehingga nilai sinyal output mendekati 5 V (logic 1).
Gambar 3.7 Rangkaian sensor UVTron C10807
19 Universitas Kristen Maranatha
3.7. Konfigurasi Sensor Thermal Array TPA81
TPA81 cukup dihubungkan langsung ke port I2C dari modul
ATMEGA128. Pin kontrol servo dihubungkan langsung ke motor servo
pengarah propeller, sesuai dengan warna kabel servo tersebut (kuning, merah,
dan hitam).
Gambar 3.8 Konfigurasi pin sensor Thermal Array TPA81
3.8. Struktur Robot
Desain awal robot berbentuk sebagai berikut
UVTron
SRF01Motor Brushless dan Propeller
AX‐12A
LDR
Gambar 3.9 Desain awal robot
Desain ini tidak jadi dipergunakan untuk bentuk akhir robot karena
pemborosan ruang di antara dudukan SRF01 dan badan utama robotterlalu
banyak. Peletakkan sensor-sensor serta unit-unit pengontrol dimodifikasi
sehingga bentuk akhir robot yang didapat adalah sebagai berikut
20 Universitas Kristen Maranatha
Gambar 3.10 Realisasi struktur robot
Dengan bentuk demikian robot mampu bergerak bebas dalam lintasan
serta mampu menghindari halangan seperti uneven floor dan furniture.
Penggunaan ruang untuk sensor-sensor juga menjadi lebih efisien.
3.9. Algoritma Program
Sistem navigasi robot dikontrol oleh banyak sensor, terutama sensor
SRF01 yang diletakkan di sekeliling badan robot. Algoritma pergerakkan
robot adalah sebagai berikut :
Pertama, robot diletakkan pada posisi awal (home), lalu switch power
supply ditekan untuk mengaktifkan robot secara keseluruhan.
Robot ini akan menyusuri ruangan dengan bantuan sensorSRF01. Jika
sensor SRF01 di bawah mendeteksi Uneven Floor, maka dilakukan
routine “Lompat”
Jika LDR mendeteksi garis putih di pintu ruangan, robot akan berhenti
berjalan, dan nilai counter ruangan ditambah 1.
Jika UVTron mendeteksi ada api, robot melanjutkan berjalan masuk
ruangan. Jika tidak ada api, robot akan mundur dan menyusuri arena lagi.
Jika robot memasuki ruangan, UVTron mendeteksi api, dan mendeteksi
juring putih, maka sensor TPA81 akan melakukan scanning titik api.
21 Universitas Kristen Maranatha
Scanning titik api dilakukan dengan menggerakan servo propeller.
Jika titik api telah ditemukan, servo propeller berhenti dan motor
brushless dinyalakan.
Jika setelah dua kali motor brushless berputar api masih terdeteksi, maka
motor brushless akan dinyalakan terus-menerus sembari servo propeller
bergerak dari kiri ke kanan.
Jika UVTron tidak mendeteksi api lagi, maka robot akan meninggalkan
ruangan.
Robot melanjutkan berjalan keluar ruangan. Ketika LDR mendeteksi
garis putih, counter berkurang nilai menjadi nol, menandakan robot
keluar ruangan.
Robot melanjutkan menyusuri maze. Setiap kali LDR mendeteksi garis
putih, suatu nilai counter ditambah.
Selama nilai counter tersebut belum tiga, robot akan selalu mundur dan
mencari jalan lain.
Jika nilai counter sudah tiga, robot melanjutkan berjalan hingga LDR
mendeteksi bidang putih, menandakan robot tiba di home.
3.10. Diagram Alir Pemrograman
Diagram alir program berikut dibuat sesuai dengan algoritma program
yang telah dibuat dapat dilihat pada halaman-halaman berikut.
22 Universitas Kristen Maranatha
Gambar 3.11 Diagram alir bagian 1
23 Universitas Kristen Maranatha
Gambar 3.12 Diagram alir bagian 2
24 Universitas Kristen Maranatha
BAB 4
PENGUJIAN
4.1. Data Sensor
4.1.1 Sensor Photoresistive LDR
Berikut adalah data pembacaan sensor LDR dengan kondisi sensor tegak
lurus pada lantai lintasan. Tabel 4.1 Data pembacaan sensor photoresistive LDR
No. Garis Putih Karpet Abu-abu Lantai/Karpet Hitam
1 186 356 483
2 184 358 481
3 153 364 486
4 190 354 478
5 191 356 476
Bisa dilihat bahwa sensor ini dapat membedakan warna terang dan gelap
dengan baik.
4.1.2 Sensor Ultrasonik SRF01
Berikut adalah data pembacaan sensor SRF01 dengan posisi sensor
menghadap tegak lurus ke dinding lintasan. Tabel 4.2 Data pembacaan sensor ultrasonik sensor SRF01
No. Jarak Sesungguhnya Jarak Terbaca
1 0 cm 0 cm
2 5 cm 5 cm
3 10 cm 12 cm
4 20 cm 19 cm
5 30 cm 28 cm
Dari data-data tersebut bisa dikatakan sensor SRF01 akurat untuk
pembacaan jarak dekat, namun kurang akurat untuk pembacaan jarak jauh.
25 Universitas Kristen Maranatha
4.1.3. Sensor UV-Tron Hamamatsu C10807
Saat api menyala, UV-Tron menghasilkan output logika 0. Saat tidak ada
api, UV-Tron menghasilkan output logika 1. Ada jeda waktu kurang lebih
200 ms saat logika berubah dari logika 0 ke logika 1.
4.1.4 Sensor Thermal Array TPA81
Tiap pixel sensor thermal ray membaca intensitas panas. Berikut data
pembacaan rata-rata dari semua pixel pada jarak tertentu dengan api. Tabel 4.3 Data pembacaan sensor Thermal Array TPA81
No. Jarak Hasil Pembacaan
1 0 cm 210
2 5 cm 194
3 10 cm 140
4 20 cm 90
5 30 cm 65
Dari data bisa dikatakan sensor mendeteksi adanya api paling baik waktu
berada dalam jarak dekat.
4.2. Data Gerak Robot
4.2.1 Jalan Lurus
Robot diletakkan pada lorong tengah kemudian bergerak maju dengan
target titik tengah lapangan. Tabel 4.4 Data hasil gerakan jalan lurus robot
No. Mencapai Target Waktu (detik)
1 Ya 27
2 Ya 28
3 Ya 27
4 Ya 28
5 Ya 27
Dari data bisa dikatakan robot mampu bergerak lurus dengan stabil.
26 Universitas Kristen Maranatha
4.2.2 Berputar
Robot diletakkan di depan dinding. Pertama-tama tidak ada penghalang
di sisi kanan robot agar robot berputar ke kanan, Hal yang sama dilakukan
untuk sisi kiri robot.
Tabel 4.5 Data hasil gerakan berputar robot
No. Berputar ke Kiri Berputar ke Kanan
1 Ya Ya
2 Ya Ya
3 Ya Ya
4 Ya Ya
5 Ya Ya
Dari data bisa dikatakan robot dapat berputar dengan stabil, baik ke kiri
maupun ke kanan.
4.2.3 Memadamkan Api
Robot memasuki pintu ruangan dan mendeteksi garis putih kemudian
berhenti. Jika sensor UVTron mendeteksi ada api, maka robot akan
melanjutkan memasuki ruangan. Jika tidak ada api maka robot akan berputar
balik dan keluar dari pintu ruangan. Tabel 4.6 Data keberhasilan robot memadamkan api
No. Ada Api Memasuki Ruangan? Memadamkan Api?
1 Ya Ya Ya
2 Ya Ya Tidak
3 Ya Ya Ya
4 Tidak Ya Tidak
5 Tidak Tidak Tidak
6 Tidak Tidak Tidak
Dari data bisa dikatakan robot masih memiliki kesulitan mendeteksi api
maupun mendeteksi lokasi ruangan.
27 Universitas Kristen Maranatha
4.2.4 Kombinasi Gerakan
Robot diposisikan pada berbagai posisi home dan titik api di ruangan-
ruangan tertentu, sesuai konfigurasi perlombaan. Berikut data keberhasilan
robot menyelesaikan misi. Tabel 4.7 Data keberhasilan robot menyelesaikan misi
Memasuki Ruang
Api? Memadamkan Api?
No. Home Api
I II III I II III
1 Lorong Ruang I Ya Ya Ya Tidak Tidak Tidak
2 Lorong Ruang II Ya Tidak Tidak Ya Tidak Tidak
3 Lorong Ruang III Ya Ya Tidak Ya Tidak Tidak
4 Lorong Ruang IV Ya Ya Ya Ya Ya Ya
5 Ruang I Ruang II Tidak Ya Tidak Tidak Tidak Tidak
6 Ruang II Ruang III Tidak Tidak Tidak Tidak Tidak Tidak
7 Ruang III Ruang IV Tidak Ya Ya Tidak Ya Ya
8 Ruang IV Ruang I Ya Tidak Ya Tidak Tidak Ya
Dari data bisa dikatakan robot lebih mudah menyelesaikan misi ketika
posisi awal berada pada lorong. Robot masih kesulitan melakukan navigasi
jika posisi awal berada pada ruang tertentu.
Tingkat keberhasilan paling tinggi didapat saat api terletak pada Ruang
IV. Tingkat keberhasilan paling rendah didapat saat api terletak pada Ruang
II, karena untuk memasuki ruang tersebut robot sangat kesulitan, baik ketika
posisi awal pada lorong maupun pada ruang tertentu.
Salah satu masalah navigasi terletak pada struktur robot yang cukup
besar, sehingga kemungkinan terjadinya tabrakan lebih besar dan
mengganggu pergerakan robot.
28 Universitas Kristen Maranatha
BAB 5
PENUTUP
5.1. Kesimpulan
Berdasarkan penelitian yang telah dilakukan, diambil kesimpulan sebagai
berikut :
1. Pemilihan sensor-sensor untuk robot sudah tepat karena robot sudah
mampu melakukan navigasi. Selain itu pembacaan nilai-nilai sensor
cukup signifikan untuk menjaga akurasi gerak robot.
2. Algoritma pemrograman robot masih memiliki banyak kelemahan
sehingga robot kesulitan menyelesaikan misi.
3. Kemampuan robot menyelesaikan misi terbatas pada kondisi-kondisi
tertentu, terutama posisi awal dan posisi api.
5.2. Saran
Saran berikut dapat dijadikan acuan untuk penelitian lebih lanjut.
1. Algoritma robot dapat diperbaiki sehingga semua ruang dapat dijelajahi di
mana pun posisi awal dan letak titik api.
2. Struktur robot dapat diperkecil sehingga tidak terlalu menyulitkan
pergerakan robot.
3. Penempatan posisi sensor yang lebih terukur.
29 Universitas Kristen Maranatha
DAFTAR PUSTAKA
• Koren, Yoram. Robotics for Engineers. Singapore: McGRAW-HILL, 1987.
• http://www.robot-electronics.co.uk/htm/srf01tech.htm
• http://www.robot‐electronics.co.uk/htm/tpa81tech.htm
• http://sales.hamamatsu.com/en/products/electron‐tube‐division/detectors/flame‐
sensors‐uvtron/part‐c10807.php
• http://kontesrobot.dinus.ac.id/main/getfile/45995a092943974008d195461202fe0c
• http://www.atmel.com/Images/doc2467.pdf
• User Manual ROBOPLUS for CM‐510
Lampiran A Struktur Mikrokontroler ATMEGA128
ATMEGA128 memiliki memory 128 kilobyte, dilengkapi dengan flash
memory, EEPROM (Electrically Erasable Programmable Read Only Memory),
timer, clock, modul ADC (Analog to Digital Converter), communication interface
seperti I2C, serial port, dan parallel port, serta modul input output sebanyak 53 pin
yang terbagi ke dalam 7 blok. Pemrograman menggunakan bahasa assembler atau
menggunakan bahasa tingkat tinggi seperti bahasa C.
Spesifikasi mikrokontroler ATMEGA128 adalah sebagai berikut :
1. Arsitektur RISC (Reduced Instruction Set Computing)
a. 32 x 8 bit register
b. Kemampuan eksekusi instruksi sampai 16 MIPS (Million Instruction
Per Second) pada frekuensi kerja 16 MHz
2. Memory
a. 128 kilobyte flash memory program
b. 4 kilobyte EEPROM
c. 4 kilobyte SRAM
d. Siklus baca-tulis flash/EEPROM : 10.000/100.000
3. In-System Programming
4. Fitur Pheriperal
a. 2 Timer 8 bit
b. 2 Timer 16 bit
c. 6 kanal PWM
d. 8 kanal ADC 10 bit
e. Analog Comparator
f. 2 kanal komunikasi serial USART
g. RC oscillator internal terkalibrasi
h. Sumber interupsi eksternal dan internal
5. Programmable Port Input / Output, 53 buah dalam 7 blok
Pengontrol ATMEGA128 memiliki 64 kaki yang secara keseluruhan dapat
dilihat pada Gambar A.1. Kaki-kaki tersebut diberi nama sesuai dengan
fungsinya.
Keterangan kaki :
1 : Kaki yang digunakan untuk mengaktifkan mode pemrogramman
secara serial dengan memberikan tegangan 0V selama power-on
reset.
2-9 : Kaki-kaki ini sebagai PORTE, digunakan sebagai input/output. Kaki
2 dan 3 juga digunakan untuk komunikasi serial.
10-17: Kaki-kaki ini sebagai PORTB, digunakan sebagai input/output.
18-19: Kaki-kaki ini sebagai PORTG, digunakan sebagai input/output.
20 : Kaki input untuk me-reset pengontrol mikro secara manual dengan
memberikan tegangan 0V selama waktu tertentu.
21,52 : Input catu daya positif dari sumber tegangan.
22,53 : Input catu daya negatif dari sumber tegangan.
23,24 : Kaki-kaki ini digunakan sebagai input/output oscillator.
25-32: Kaki-kaki ini sebagai PORTD, digunakan sebagai input/output. Kaki
27 dan 28 juga digunakan untuk komunikasi serial.
33,34 : Kaki-kaki ini sebagai PORTG, digunakan sebagai input/output.
35-42: Kaki-kaki ini sebagai PORTC, digunakan sebagai input/output.
43 : Kaki ini sebagai PORTG, digunakan sebagai input/output.
44-51: Kaki-kaki ini sebagai PORTA, digunakan sebagai input/output.
54-61: Kaki-kaki ini sebagai PORTF, digunakan sebagai input/output.
62 : Kaki ini digunakan sebagai referensi analog untuk ADC.
63 : Input catu daya negatif dari sumber tegangan.
64 : Input catu daya positif analog dari sumber tegangan.
Gambar A.1 Konfigurasi Kaki ATMEGA128
Struktur pengontrol mikro ATMEGA128 digambarkan dalam diagram
blok pada Gambar 2.10. ATMEGA128 disusun dari beberapa bagian seperti
central processing unit, input/output, analog to digital converter, analog
comparator, SPI (Serial Peripheral Interface), TWI (Two-Wired Interface),
rangkaian pewaktu (timer), rangkaian clocking, kontrol interupsi, EEPROM dan
USART (Universal Synchronous and Asynchronous serial Receiver and
Transmitter).
Gambar A.2 Diagram Blok ATMEGA128
Lampiran B Struktur ROBOTIS CM-510
Gambar B.1 Struktur CM-510
CM-510 adalah unit pengontrol dari kit ROBOTIS BIOLOID Premium
berbasis ATMEGA2561. Unit ini memiliki dua memori terpisah untuk servo
control dan logic control yang terintegrasi dengan software ROBOPLUS. Adapun
komponen-komponen CM-510 adalah :
• PC Link (Kabel Serial) : Menghubungkan CM-510 dengan PC melalui port
serial. Digunakan untuk komunikasi atau download program.
• Communication Device Connection : Untuk komunikasi dengan pheriperal
lain secara serial.
• Battery Jack : Konektor baterai
• Power Jack : Konektor adaptor tegangan
• Power LED : Penanda kondisi On/Off dari unit CM-510
• Power Switch : Mengaktifkan atau menonaktifkan unit CM-510
• Tombol MODE : Mengganti mode operasi CM-510
• Tombol START : Memulai mode operasi terpilih
• Tombol U / L / D / R: Tombol-tombol input
• Port AX-12+ BUS: Koneksi servo AX-12+ dengan topologi daisy chain
• Peripheral Devices Connection : Menghubungkan sensor-sensor lain dalam
set BIOLOID.
• Mode Display LED : LED penanda mode operasi terpilih
• Status Display LED : Menandakan status CM-510
• TxD : Menyala ketika CM-510 mengirim data keluar .
• RxD : Menyala ketika CM-510 menerima data dari luar.
• AUX : Dapat dikontrol melalui program yang dibuat pengguna.
[ MODE MANAGE ]
• Menandakan pengaturan servo sedang berlangsung.
• Digunakan untuk mengetes atau mengatur operasi CM-510 dan AX-12
menggunakan ROBOPLUS Manager.
• Otomatis tereksekusi ketika CM-510 dan ROBOPLUS Manager terhubung
melalui PC-Link.
[ MODE PROGRAM ]
• Menandakan pengaturan gerakan (motion) sedang berlangsung.
• Digunakan ketika pergerakan diatur dengan ROBOPLUS Motion.
• Otomatis terekseksi ketika CM-510 dan ROBOPLUS Motion terhubung.
[ MODE PLAY ]
• Menandakan pengaturan algoritma sedang berlangsung.
• Digunakan untuk download program dari ROBOPLUS Task.
• Tombol Start harus ditekan ketika LED berkedip untuk menjalankan program.
Spesifikasi Lainnya :
• Berat : 51.3g
• Mikrokontroler : ATMega2561
• Tegangan Kerja
o Batas Tegangan : 6.5V ~ 15V
o Tegangan yang Dianjurkan : 11.1V (LiPo 3 sel)
• Konsumsi Arus
o Saat diam : 50mA
o Arus Maksimum I/O Eksternal : 0.9A
o Total Arus Maksimum : 10A (Batas Sekring)
• Suhu Kerja : -5 ~70
• Alat I/O Internal
o Tombol : 5 (Reset 1, Port 5)
o Mic (untuk deteksi suara) : 1
o Sensor Suhu : 1
o Sensor Tegangan : 1
Lampiran C Pemrograman Robot
C.1.Pemrograman ATMEGA128
Pemrograman ATMEGA128 mencakup logic control serta pemrograman
fungsi sensor-sensor yang digunakan. Pemrograman sensor-sensor yang
membutuhkan protokol khusus dipisahkan pada suatu library tersendiri dalam
bentuk header. Pemrograman sepenuhnya menggunakan software
CodeVisionAVR 2.03.4 Standard Edition.
#include <mega128.h>
#include <delay.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x12 ;PORTD
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include "srf01.h"
#include "tpa.h"
#include "main.h"
#define ldr_white 300
//----------------GLOBAL VARIABLES-----------------//
unsigned int range_data[9];
unsigned int start, retry, ldr, ruang, ruang_count, juring, api, bio_stat,
home, putih, cal, out_home, i, j;
unsigned int blk_kiri, blk_kanan;
unsigned char lcd_text[32], pixel[8];
//-------------------------------------------------//
void main(void)
// ESC Input Port Definition
PORTA = 0x00;
DDRA = 0x02;
// Config Button Pull-Up
PORTD = 0x80;
DDRD = 0x00;
// USART0 Initialization
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x47;
// USART1 Initialization
UCSR1A=0x00;
UCSR1B=0x18;
UCSR1C=0x06;
UBRR1H=0x00;
UBRR1L=0x0B;
// I2C Bus initialization
i2c_init();
// Alphanumeric LCD initialization
lcd_init(16);
// ADC initialization
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
//----------------CALIBRATE SENSORS----------------//
//cal_sensor();
//-------------------------------------------------//
//------------------INITIAL START------------------//
robot_init();
//-------------------------------------------------//
//------------------COMMAND LIST-------------------//
/*
1 --> Start
2 --> Retry
3 --> Lurus
4 --> Mepet Kiri
5 --> Mepet Kanan
6 --> Belok Kanan
7 --> Belok Kiri
8 --> Belok Kanan Pelan
9 --> Belok Kiri Pelan
10--> Lompat
11--> Putar Balik
*/
//-------------------------------------------------//
//------------------MAIN PROGRAM-------------------//
while (1)
//---------------SOUND ACT & RETRY-----------------//
while (start!=1)
readSensor();
start = sound_act();
if (start==1)
sendBioloid(1,0);
bio_stat = 1;
blk_kiri = 0;
blk_kanan = 0;
//-------------------------------------------------//
//----------------START MOVEMENT-------------------//
while (start==1)
//---------------DETEKSI GARIS PUTIH---------------//
while (home==1)
//Deteksi Lingkar Home
if (ldr<ldr_white) putih = 1;
if ( (ldr>ldr_white)&&(putih==1) )
home = 0;
ruang = 0;
putih = 0;
readSensor();
moving();
while (ruang==0)
//Deteksi Garis Ruangan
if (ldr<ldr_white) putih = 1;
if ( (ldr>ldr_white)&&(putih==1) )
ruang_count--;
ruang = 1;
putih = 0;
readSensor();
moving();
//-------------------------------------------------//
//---------------CEK API DI RUANGAN----------------//
while (ruang==1)
readSensor();
forceForward();
sendBioloid(0,0);
bio_stat = 0;
delay_ms(1500);
readSensor();
if (api==1)
sendBioloid(1,0);
bio_stat = 1;
ruang = 2;
else if (api==0)
sendBioloid(11,0);
bio_stat = 11;
ruang = 3;
//-------------------------------------------------//
//---------------ADA API DI RUANGAN----------------//
while (ruang==2)
while(juring==0)
if (ldr<ldr_white)
sendBioloid(0,0);
bio_stat = 0;
tpa_servo_scan();
api = 0;
juring = 1;
else
readSensor();
moving();
while( (api==0)&&(juring==1) )
delay_ms(1000);
sendBioloid(11,0);
bio_stat = 11;
out_home = 1;
ruang = 4;
juring = 0;
//-------------------------------------------------//
//-------------TAK ADA API DI RUANGAN--------------//
while (ruang==3)
goOut();
while (ruang==4)
//Deteksi Garis Ruangan
if (ldr<ldr_white)
putih = 1;
readSensor();
moving();
if ( (ldr>ldr_white)&&(putih==1) )
ruang_count--;
ruang = 0;
putih = 0;
readSensor();
moving();
//-------------------------------------------------//
//-------------------------------------------------//
Pemrograman sensor SRF01 dipisahkan dalam header srf01.h sebagai
berikut :
#ifndef RXB8
#define RXB8 1
#endif
#ifndef TXB8
#define TXB8 0
#endif
#ifndef UPE
#define UPE 2
#endif
#ifndef DOR
#define DOR 3
#endif
#ifndef FE
#define FE 4
#endif
#ifndef UDRE
#define UDRE 5
#endif
#ifndef RXC
#define RXC 7
#endif
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<DOR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
unsigned char rx_buf[8];
extern unsigned int i, j, range_data[9];
extern unsigned char lcd_text[32];
#define b_kiri range_data[1]
#define kiri range_data[2]
#define f_kiri range_data[3]
#define f_kanan range_data[4]
#define kanan range_data[5]
#define b_kanan range_data[6]
#define blakang range_data[7]
#define bawah range_data[8]
// Kirim Data Serial
void serialTX(unsigned char data)
while (( UCSR0A & DATA_REGISTER_EMPTY)==0);
UDR0 = data;
// Terima Data Serial
void serialRX(unsigned char nByte)
unsigned char x;
for(x=0 ; x<nByte ; x++)
while ((UCSR0A & RX_COMPLETE)==0);
rx_buf[x] = UDR0;
// Mengosongkan buffer array receiver
void clearRXBuf(void)
char junk;
while ((UCSR0A & RX_COMPLETE)==0);
junk = UDR0;
while ((UCSR0A & RX_COMPLETE)==0);
junk = UDR0;
// Melaukan ‘Break’
void sendBrk(void)
UCSR0B = 0x00;
DDRE = 0x02;
PORTE.1 = 1;
PORTE.1 = 0;
delay_ms(1);
PORTE.1 = 1;
UCSR0B = 0x18;
// Pengukuran dengan hasil dalam satuan cm ke seluruh address
void startRangeAll()
sendBrk();
serialTX(0x00);
serialTX(0x51);
// Membaca hasil pengukuran
unsigned int getRange(unsigned char address)
unsigned int data;
sendBrk();
serialTX(address);
serialTX(0x5E);
clearRXBuf();
serialRX(2);
data = (rx_buf[0] << 8) + rx_buf[1];
return(data);
// Routine pengukuran dan pembacaan hasil
void rangingAll()
startRangeAll();
delay_ms(70);
// Mengganti address salah satu sensor SRF01
void setAddress(unsigned char curAddress, unsigned char newAddress)
sendBrk();
serialTX(curAddress);
serialTX(0xA0);
delay_ms(70);
sendBrk();
serialTX(curAddress);
serialTX(0xAA);
delay_ms(70);
sendBrk();
serialTX(curAddress);
serialTX(0xA5);
delay_ms(70);
sendBrk();
serialTX(curAddress);
serialTX(newAddress);
delay_ms(70);
// Mengganti baud rate / kecepatan transfer data serial
void setBaudRate(unsigned char baudRate)
sendBrk();
serialTX(0);
serialTX(baudRate);
delay_ms(70);
// Menampilkan hasil pengukuran kedelapan SRF01
void lcd_srf01()
extern unsigned int range_data[9];
extern unsigned char lcd_text[32];
lcd_clear();
lcd_gotoxy(0,0);
sprintf(lcd_text,"%3d %3d %3d %3d\n%3d %3d %3d %3d",b_kiri,kiri,f_kiri,
f_kanan,kanan,b_kanan,blakang,bawah);
lcd_puts(lcd_text);
delay_ms(50);
// Kalibrasi SRF01
void cal_srf01()
rangingAll();
for (i=1;i<=8;i++)
range_data[i] = getRange(i);
lcd_srf01();
Pemrograman sensor TPA81 dipisahkan dalam header tpa.h sebagai
berikut : extern unsigned int i, j;
extern unsigned char lcd_text[32], pixel[8];
#define kipas PORTA.1
// Membaca data dari register tertentu TPA81
unsigned int tpa_read(unsigned char reg)
unsigned int data;
delay_ms(40);
i2c_start();
i2c_write(0xD0);
i2c_write(reg);
i2c_start();
i2c_write(0xD1);
data=i2c_read(0);
i2c_stop();
return(data);
// Memberi perintah ke command register TPA81
void tpa_write(unsigned char reg, unsigned char value)
i2c_start();
i2c_write(0xD0);
i2c_write(reg);
i2c_write(value);
i2c_stop();
delay_ms(10);
// Membaca nilai tiap pixel thermal array
void tpa_data()
for (j=2;j<=9;j++)
pixel[j-2] = tpa_read(j);
// Menjalankan motor brushless
void motor_start()
unsigned int i, j;
kipas = 1;
for(j=0;j<=20;j++)
kipas = 1;
delay_us(500);
kipas = 0;
delay_us(19500);
for(i=0;i<=100;i++)
kipas = 1;
delay_us(1500);
kipas = 0;
delay_us(18500);
for(i=0;i<=100;i++)
kipas = 1;
delay_us(1800);
kipas = 0;
delay_us(18200);
// Menggerakkan servo ke seluruh arah sembari memutar kipas
void tpa_servo_all()
unsigned int loop;
loop = 3;
while(loop--)
tpa_write(0,16);
motor_start();
// Mencari titik api, lalu menjalankan motor bila titik api sudah ditemukan
void tpa_servo_scan()
unsigned int place, blow;
blow = 0;
for(i=14;i<=20;i++)
tpa_write(0,i);
tpa_data();
for(j=0;j<=7;j++)
if (pixel[j]>50)
blow = 1;
place = i;
j = 8;
i = 26;
if (blow!=1)
for(i=20;i>=14;i--)
tpa_write(0,i);
tpa_data();
for(j=0;j<=7;j++)
if (pixel[j]>50)
place = i;
blow = 1;
j = 8;
i = 6;
if (blow==1)
tpa_write(0,place);
motor_start();
else
tpa_servo_all();
// Menampilkan hasil pembacaan seluruh pixel ke LCD
void lcd_tpa()
sprintf(lcd_text,"%3d %3d %3d %3d %3d %3d %3d %3d",pixel[0],pixel[1],
pixel[2],pixel[3],pixel[4],pixel[5],pixel[6],pixel[7]);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(lcd_text);
delay_ms(50);
// Kalibrasi TPA81
void cal_tpa81()
tpa_data();
lcd_tpa();
Terakhir adalah pemrograman routine-routine yang digunakan dalam
navigasi robot yang disimpan pada header main.h sebagai berikut :
extern unsigned int range_data[9];
extern unsigned int start, retry, ldr, ruang, ruang_count, juring, api,
bio_stat, home, putih, cal, out_home, i, j;
extern unsigned int blk_kiri, blk_kanan;
extern unsigned char lcd_text[32], pixel[8];
#define ADC_VREF_TYPE 0x40
#define uvtron PINA.0
#define emergency PIND.7
// Pembacaan nilai ADC
unsigned int read_adc(unsigned char adc_input)
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
// Kirim data ke USART1
void serialTX1(unsigned char data)
while (( UCSR1A & DATA_REGISTER_EMPTY)==0);
UDR1 = data;
// Kirim data ke CM-510
void sendBioloid(unsigned char lsb, unsigned char msb)
serialTX1(0xFF);
serialTX1(0x55);
serialTX1(lsb);
serialTX1(~lsb);
serialTX1(msb);
serialTX1(~msb);
// Menampilkan data tertentu ke LCD
void lcd_main()
lcd_clear();
lcd_gotoxy(0,0);
if (home!=2)
sprintf(lcd_text,"Bio: %2d LDR: %3d\nRoom: %d Api:
%d",bio_stat,ldr,ruang,api);
lcd_puts(lcd_text);
if (home==2)
sprintf(lcd_text," SI ITEM MANIS \n PULANG KE RUMAH");
lcd_puts(lcd_text);
void lcd_cal()
lcd_clear();
lcd_gotoxy(0,0);
if (home!=2)
sprintf(lcd_text,"Bio: %2d LDR: %3d\nCal: %3d Api:
%d",bio_stat,ldr,cal,api);
lcd_puts(lcd_text);
if (home==2)
sprintf(lcd_text," SI ITEM MANIS \n PULANG KE RUMAH");
lcd_puts(lcd_text);
void readSensor()
//-----------------SRF01 READINGS------------------//
rangingAll();
for (i=1;i<=8;i++)
range_data[i] = getRange(i);
//-------------------------------------------------//
//-----------------SENSOR READINGS-----------------//
ldr = read_adc(0);
api = ~uvtron;
//-------------------------------------------------//
lcd_main();
void forceForward()
//Belum Rata Kiri
if ( ((kiri<12)&&(kiri>9))||(((kiri>30)&&(b_kiri>30))&&(kiri<35)) )
sendBioloid(8,0); bio_stat = 8;
//Belum Rata Kanan
else if
( ((kanan<12)&&(kanan>9))||(((kanan>30)&&(b_kanan>30))&&(kanan<35)) )
sendBioloid(9,0); bio_stat = 9;
//Sudah Rata
else
//Lurus
sendBioloid(3,0); bio_stat = 3;
void moving()
extern unsigned int blk_kiri, blk_kanan;
//----------------MOVING CONDITIONS----------------//
//Depan Jauh
if ( (f_kiri>15)||(f_kanan>15) )
//Belum Rata Kiri
if (((kiri<12)&&(kiri>9))||(((kiri>30)&&(b_kiri>30))&&(kiri<35)))
sendBioloid(8,0); bio_stat = 8;
//Belum Rata Kanan
else if
(((kanan<12)&&(kanan>9))||(((kanan>30)&&(b_kanan>30))&&(kanan<35)))
sendBioloid(9,0); bio_stat = 9;
//Sudah Rata
else
//Kiri Jauh, Belok Kiri
if ( (b_kiri>40)&&(kiri>40)&&(blakang>72) ) sendBioloid(7,0);
bio_stat = 7; blk_kiri = 1; blk_kanan = 0;
//Kanan Jauh, Belok Kanan
else if ( (b_kanan>40)&&(kanan>40)&&(blakang>72) )
sendBioloid(6,0); bio_stat = 6; blk_kiri = 0; blk_kanan = 1;
//Lurus
else sendBioloid(3,0); bio_stat = 3;
//Uneven Floor
if ( (bawah>16)&&(bawah<25) )
//Belum Rata Kiri
if (((kiri<12)&&(kiri>9))||(((kiri>30)&&(b_kiri>30))&&(kiri<35)))
sendBioloid(8,0); bio_stat = 8;
//Belum Rata Kanan
else if (((kanan<12)&&(kanan>9))||(((kanan>30)&&(b_kanan>30))&&(kanan<35)))
sendBioloid(9,0); bio_stat = 9;
//Sudah Rata
else sendBioloid(10,0); bio_stat = 10;
//Depan Dekat
else if ( ((f_kiri<15)&&(f_kanan<15)) )
//Belum Rata Kiri
if ( ((kiri<12)&&(kiri>9))||(((kiri>30)&&(b_kiri>30))&&(kiri<35)) )
sendBioloid(8,0); bio_stat = 8;
//Belum Rata Kanan
else if
( ((kanan<12)&&(kanan>9))||(((kanan>30)&&(b_kanan>30))&&(kanan<35)) )
sendBioloid(9,0); bio_stat = 9;
//Sudah Rata
else
//Kiri>Kanan, Belok Kiri
if( (b_kiri>b_kanan)&&(kiri>kanan) ) sendBioloid(7,0); bio_stat
= 7; blk_kiri = 0; blk_kanan = 0;
//Kiri<Kanan, Belok Kanan
else if( (b_kiri<b_kanan)&&(kiri<kanan) ) sendBioloid(6,0);
bio_stat = 6; blk_kanan = 0; blk_kiri = 0;
//Lurus
else sendBioloid(3,0); bio_stat = 3;
//-------------------------------------------------//
void goOut()
while ( (f_kiri>=15)||(f_kanan>=15) )
readSensor();
forceForward();
//Tadi Kiri, Kiri Jauh, Belok Kiri
if ( (((b_kiri>40)&&(kiri>40))&&(blk_kiri==1)) ) sendBioloid(7,0);
bio_stat = 7; blk_kiri = 1; blk_kanan = 0; ruang = 0;
//Tadi Kiri, Kiri Deket, Belok Kanan
else if ( (((b_kiri<20)&&(kiri<20))&&(blk_kiri==1)) ) sendBioloid(6,0);
bio_stat = 6; blk_kiri = 0; blk_kanan = 1; ruang = 0;
//Tadi Kanan, Kanan Jauh, Belok Kanan
else if ( (((b_kanan>40)&&(kanan>40))&&(blk_kanan==1)) )
sendBioloid(6,0); bio_stat = 6; blk_kiri = 0; blk_kanan = 1; ruang = 0;
//Tadi Kanan, Kanan Deket, Belok Kiri
else if ( (((b_kanan<20)&&(kanan<20))&&(blk_kanan==1)) )
sendBioloid(7,0); bio_stat = 7; blk_kiri = 1; blk_kanan = 0; ruang = 0;
// Start Awal
void robot_init()
tpa_write(0,16);
lcd_clear();
lcd_gotoxy(1,0);
lcd_putsf("SI ITEM MANIS\nPERGI DARI RUMAH");
setBaudRate(0x65);
UBRR0L=0x11;
start = 0;
retry = 0;
ruang = 5;
ruang_count = 4;
juring = 0;
home = 1;
blk_kiri = 0;
blk_kanan = 0;
delay_ms(100);
for (i=0;i<20;i++)
rangingAll();
// Home Dari Mana
void setHome()
//Belum Rata Kiri
readSensor();
if ( ~((b_kiri<16)&&(kiri<16)) )
readSensor();
sendBioloid(8,0);
bio_stat = 8;
else
readSensor();
cal =
((b_kiri+kiri)/2)+((f_kiri+f_kanan)/2)+((kanan+b_kanan/2))+blakang;
if (cal>210) ruang=0; home = 1;
else ruang=0; home = 2;
// Kalibrasi Sensor-sensor
void cal_sensor()
unsigned int cal_count, stat;
setBaudRate(0x65);
UBRR0L=0x11;
cal_count=0;
while(1)
if (cal_count==0)
readSensor();
cal =
((b_kiri+kiri)/2)+((f_kiri+f_kanan)/2)+(kanan+b_kanan/2)+blakang;
lcd_cal();
else if (cal_count==1)
cal_srf01();
else if (cal_count==2)
cal_tpa81();
if (emergency==0) stat = 1;
if ( (emergency==1)&&(stat==1) )
stat = 0;
cal_count++;
if (cal_count>2) cal_count=0;
C.2.Pemrograman CM-510
Pemrograman CM-510 mencakup servo control serta penerimaan
instruksi dari ATMEGA128 beserta eksekusi instruksi yang diminta dalam
proses navigasi. Pemrograman menggunaan program yang sudah terintegrasi
dengan unit ini, yaitu software ROBOPLUS, sebagai berikut :
Lampiran D Datasheet Sensor-sensor
SRF01 Ultrasonic range finder Technical Documentation
Overview The SRF01 is a single transducer ultrasonic rangefinder in a very small footprint PCB. Connection is to a single pin Serial interface. The serial interface is a standard TTL level UART format of 1 start, 1 stop and no parity bits, and may be connected directly to many controllers, such as the Basic Stamps or the PICAXE. Baud rate at power-up is always 9600, there is a command to change this to 19200 or 38400 baud if preferred. Up to 16 SRF01's may be connected together on a single bus. Like all our rangefinders, the SRF01 can measure in Cm or Inches.
Power Requirements The SRF01 accepts any voltage between 3.3v and 12v, however the recommended maximum is 5.5v. Internally, it operates at 3.3v and there is a low dropout regulator already on the SRF01 to provide this. The serial I/O pin operates at 3.3v and also 5v tolerant, so you can connect it directly to 3.3v or 5v signals. Operating current during ranging is 25mA, 11mA in standby (waiting for a command) and around 55uA in sleep mode (shutdown).
Single Pin Serial Communication Serial data is 1 start, 1 stop and no parity bits. Serial data is a TTL level signal - It is NOT RS232. Do not connect the SRF01 to an RS232 port - you will destroy
the module! Communication with the SRF01 is with both serial input and serial output on a single pin. The SRF01 will be listening at all times except when it is actually sending data, and will go back to listening as soon as its finished. To communicate with the SRF01, you simply need to send a "break", followed by two bytes, the address of the SRF01 (factory default is 1) and the command. A "break" is just a low level for 12 bit times or longer. 1.5mS or more will be fine. It is used to synchronize transfers on the 1-wire serial bus. The default shipped address can be changed by the user to any of 16 addresses 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 or 16, and therefore up to 16 sonar's can be used. Note - this range is different to the SRF02 which has addresses 0-15. The reason is that for specific commands only all SRF01's regardless of their programmed address, will respond to address 0. This makes it easy to start all SRF01s ranging at the same time.
Baud Rate The serial baud rate on the SRF01 always starts at 9600 on power up. It can be changed to 19200 or 38400 if you wish. It will revert to 9600 at the next power up. To change the baud rate, just send a "break" followed by the general call address of zero (not the module address), then command 0x64 for 19200 or command 0x65 for 38400. You can only send the command to address zero to change all SRF01's at the same time.
Connections The connections to the SRF01 are shown below. If you're using multiple SRF01's, you can connect them all up to the same serial port on your controller. Just make sure all the SRF01's are programmed to different addresses. There is a weak pull-up resistor (47k) to 3.3v on the module, to pull the Tx line up to a logic high level when none of the SRF01's are transmitting. Our 3-way JST connectors are suitable for connecting the SRF01.
Commands To send a command to the SRF01, you need to send a "break" followed by two bytes. The first is the SRF01's address 1 to 16, (0x01 to 0x10) and then the actual command itself - see below. There are two commands to initiate a ranging (80 to 81) giving results in inches and centimeters. These two commands don't Transmit the result back to your controller. You should wait 70mS and then use command 94 to get the result of the ranging.
Another set of two commands (83 to 84) do the same, but also transmits the result of the ranging back to your controller as soon as it is available. Together, these four commands (80,81,84 & 84) are called "Real" because they perform a complete ranging. There is another set of four commands (86, 87, 89 & 90) called "Fake". They are the same as the "Real" commands except that they do not send the 8-cycle ultrasonic burst out. These are used where the burst has been transmitted by another sonar. It is up to you to synchronize the commands to the two sonar's. There is a command (92) to transmit a burst without doing the ranging.
Command 93 is used to get the firmware revision of the SRF01. Command 94 gets returns two bytes (high byte first) from the most recent ranging. Put them together to make a 16-bit result. Command 95 gets the status byte. Bit 0 is the "Lock" bit. it is low (0) after power up, after the "Unlock" command is executed and after the module exits sleep mode. It goes high after 6 rangings have been completed with at least 30cm of free space in front of the sonar. See Advanced Mode for more details. Command 96 is used to place the SRF01 in a low power sleep mode. See Sleep Mode for more details. Commands 98 & 99 are used to enable/disable Advanced Mode.
Command
Decimal Hex
Address 0 Access
Action
80 0x50 Yes Real Ranging Mode ‐ Result in inches
81 0x51 Yes Real Ranging Mode ‐ Result in centimeters
83 0x53 No Real Ranging Mode ‐ Result in inches, automatically Tx range back to controller as soon as ranging is complete.
84 0x54 No Real Ranging Mode ‐ Result in centimeters, automatically Tx range back to controller as soon as ranging is complete.
86 0x56 Yes Fake Ranging Mode ‐ Result in inches
87 0x57 Yes Fake Ranging Mode ‐ Result in centimeters
89 0x59 No Fake Ranging Mode ‐ Result in inches, automatically Tx range back to controller as soon as ranging is complete.
90 0x5A No Fake Ranging Mode ‐ Result in centimeters, automatically Tx range back to controller as soon as ranging is complete.
92 0x5C Yes Transmit an 8 cycle 40khz burst ‐ no ranging takes place
93 0x5D No Get software version ‐ sends a single byte back to the controller
94 0x5E No Get Range, returns two bytes (high byte first) from the most recent ranging.
95 0x5F No Get Status, returns a single byte. Bit 0 indicates "Transducer locked", Bit 1 indicates "Advanced Mode"
96 0x60 Yes Sleep, shuts down the SRF01 so that it uses very low power (55uA).
97 0x61 Yes Unlock. Causes the SRF01 to release and re‐acquire its "Transducer lock". Used by our factory test routines.
98 0x62 Yes Set Advanced Mode (Factory default) ‐ When locked, SRF01 will range down to zero.
99 0x63 Yes Clear Advanced Mode ‐ SRF01 will range down to approx. 12cm/5in,
100 0x64 Yes Changes the baud rate to 19200
101 0x65 Yes Changes the baud rate to 38400
160 0xA0 No 1st in sequence to change I2C address
165 0xA5 No 3rd in sequence to change I2C address
170 0xAA No 2nd in sequence to change I2C address
None of the commands which return data can use address 0. That would mean SRF01's trying to transmit data at the same time, and is prevented. Most commands which do not return data are allowed to use address 0. Exceptions are address change commands. The advantage of allowing address 0 access is that by sending a ranging command such as 0x51 (81 decimal), all SRF01s will start ranging at the same time. After 70mS, you can then get the results from each SRF01 at its own address.
LED The Led gives a brief flash during the "ping" whilst ranging. If the transducer has not locked, the Led is on with a brief flash off. If the transducer is locked, the Led is off with a brief flash on. If you power up the SRF01 without sending any commands, it will flash its address out on the LED. One long flash followed by a number of shorter flashes indicating its address. The flashing is terminated immediately on sending a command sequence to the SRF01.
Address
Decimal Hex
Long Flash
Short flashes
1 01 1 0
2 02 1 1
3 03 1 2
4 04 1 3
5 05 1 4
6 06 1 5
7 07 1 6
8 08 1 7
9 09 1 8
10 0A 1 9
11 0B 1 10
12 0C 1 11
13 0D 1 12
13 0E 1 13
15 0F 1 14
16 10 1 15
Changing the SRF01 Address
To change the address of the SRF01 you must have only one sonar connected. Write the sequence of three commands in the correct order followed by the address. Example; to change the address of a sonar currently at 1 (the default shipped address) to 5, write the following to address 1; (0xA0, 0xAA, 0xA5, 0x05 ). These commands must be sent in the correct sequence to change the address, additionally, No other command may be issued in the middle of the sequence. The sequence must be sent as four separate commands to the current address of the sonar. i.e. "break" 0x01, 0xA0 then "break" 0x01, 0xAA, then "break" 0x01, 0xA5 and finally "break" 0x01, 0x05. When done, you should label the sonar with its new address. Take care not to set more than one sonar to the same address, there will be a bus collision and very unpredictable results. The new address is stored in flash memory on the SRF01 and will remain, even if power is removed, until deliberately changed.
Standard Mode
In standard mode the SRF01 measures from approx 18cm (7 inches) to 600cm (19ft). It requires no calibration or tuning to achieve this range. Standard mode is recommended for commercial applications where the requirements of advanced mode cannot be met. To set standard mode send the Clear Advanced Mode command, 99 decimal or 0x63.
Advanced Mode
This is the factory default mode. In this mode it is possible for the SRF01 to measure range all the way down to zero. Initially, the minimum range the SRF01 can detect is around 18cm or 7 inches. For the SRF01 to be able to measure all the way down to 0cm, it acquires a precision crystal lock on the transducer's characteristics. This happens after 5 rangings have been completed with 30cm or more of free space in front of the sensor. When this happens the "lock" bit is set (bit 0 in the status byte) and the SRF01 can measure from 0 to 600cm (0-6meters).
During operation the SRF01 maintains the transducer lock automatically, provided it gets an occasional (every few minutes) set of 5 consecutive rangings of greater than 30cm. The "lock" state of the SRF01 can be checked in by reading the "Lock" bit, which is bit 0 in the status register. A high (or logic 1) indicates transducer lock has been achieved and the SRF01 will work down to 0cm. Where the SRF01 is not able to maintain its lock, it will release it (lock bit = zero) and re-acquire it as soon as possible.
Sleep Mode When placed in sleep mode, all activity on the SRF01's processor ceases. The module shuts down and power consumption is reduced to a minimum. This is just a combination of quiescent current in the regulator and leakage current of the processor. Typically 55uA. To wake the SRF01 up from sleep mode send 0xFF. Don't send anything else - no "break", no address, because the 0xFF byte is not a command, it's really just a single transition on the Rx line that wakes up all SRF01's on the serial bus. After waking up the SRF01, you should wait 2mS for the processor clocks to stabilise before sending commands. In advanced mode, on wake-up from sleep the SRF01 will need to re-establish its lock. This means it needs at least 5 rangings with 30cm or more clear distance
Mounting the SRF01 A rubber grommet is supplied to mount the SRF01. To use this make a 20mm cutout in your panel and fit the grommet. The SRF01 will then snuggly push into the hole in the grommet. Maximum panel thickness is 1.7mm.
HAMAMATSU UV TRON DRIVING CIRCUIT C10807
Features
C10807 was developed for UV Tron driving circuit as alternative to C3704, that is also used as signal processing circuits. By using a double-sided printed circuit board we cut the area size to half of conventional drive circuits (C3704 series).
Since the high-voltage supply and signal processor are mounted on the same circuit board, the C10807 can operate as a high-sensitivity UV sensor just by connecting a UV Tron and supplying a low DC voltage. The signal processing circuit cancels out background discharges which may occur in the UV Tron due to natural excitation light (cosmic rays, solar UV rays, etc.). This minimizes erroneous detection so the C10807 output signal can be used without additional filtering.
Combining the C10807 with a high-sensitivity “UV Tron R9533, R2868” (sold separately) for use as a flame detector yields sensitivity capable of detecting the flame from a cigarette lighter (flame length 25 mm) even at a distances up to 5 meters away.