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 : Engineering
b. Jenis penelitian 2. Peneliti Jumlah peneliti
: 4 orang
Ketua peneliti Nama lengkap dan gelar Pangkat/Golongan/NIK Fakultas/Jurusan Pusat/Bidang Studi
: Yonatan Hutama, ST. MT. : Asisten Ahli/III A/2200930 : Teknik/Teknik Elektro : Robotika
Anggota peneliti a) Nama lengkap dan gelar Pangkat/Golongan/NIK b) Nama lengkap dan gelar Pangkat/Golongan/NIK c) Nama lengkap dan gelar Pangkat/Golongan/NIK
: Muliady, ST. MT. : Lektor/IV A /220147 : Innocentio Aloysius Loe : Mahasiswa/0922045 : Rafles Purba : Mahasiswa/0922071
3. Lokasi penelitian 4. Sumber dana penelitian 5. Biaya penelitian 6. Lama Penelitian
Menyetujui, Dekan Fakultas Teknik UK Maranatha
Ir. Aan Darmawan, MT
: Laboratorium Robotika, Teknik Elektro, UKM : Universitas Kristen Maranatha : Rp 20.750.000,00 : Agustus 2011 sampai dengan Agustus 2012
Bandung, 9 Agustus 2012 Ketua Peneliti,
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 sensorsensor 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 KRCILEGGED 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 : KRCIWheeled 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 SRF01
Motor 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 ruanganruangan tertentu, sesuai konfigurasi perlombaan. Berikut data keberhasilan robot menyelesaikan misi. Tabel 4.7 Data keberhasilan robot menyelesaikan misi
Memasuki Ruang No.
Home
Api
Api? I
II
III
Ya
Ya
Memadamkan Api? I
II
III
1
Lorong
Ruang I
Ya
2
Lorong
Ruang II
Ya
3
Lorong
Ruang III
Ya
Ya
4
Lorong
Ruang IV
Ya
Ya
5
Ruang I
Ruang II
Tidak
Ya
6
Ruang II
Ruang III
Tidak Tidak Tidak Tidak Tidak Tidak
7
Ruang III
Ruang IV
Tidak
Ya
Ya
Tidak
8
Ruang IV
Ruang I
Ya
Tidak
Ya
Tidak Tidak
Tidak Tidak
Tidak Tidak Tidak Ya
Tidak Tidak
Tidak
Ya
Tidak Tidak
Ya
Ya
Ya
Ya
Tidak Tidak Tidak Tidak
Ya
Ya 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
5.
g.
RC oscillator internal terkalibrasi
h.
Sumber interupsi eksternal dan internal
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
// I2C Bus functions #asm .equ __i2c_port=0x12 ;PORTD .equ __sda_bit=1 .equ __scl_bit=0 #endasm #include
#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 (ldrldr_white)&&(putih==1) ) { home = 0; ruang = 0; putih = 0; } readSensor(); moving(); } while (ruang==0) { //Deteksi Garis Ruangan if (ldrldr_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
{ 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 (ldrldr_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<
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
// 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
//-------------------------------------------------// }
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 pullup 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
Address 0 Access
Action
Decimal
Hex
80
0x50
Yes
Real Ranging Mode ‐ Result in inches
81
0x51
Yes
Real Ranging Mode ‐ Result in centimeters
83
84
0x53
0x54
No
Real Ranging Mode ‐ Result in inches, automatically Tx range back to controller as soon as ranging is complete.
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. Fake Ranging Mode ‐ Result in centimeters, automatically Tx range back to controller as soon as ranging is complete.
90
0x5A
No
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).
Yes
Unlock. Causes the SRF01 to release and re‐ acquire its "Transducer lock". Used by our factory test routines.
97
0x61
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
Long Flash
Short flashes
Decimal
Hex
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 (06meters). 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 reacquire 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.