PROYEK AKHIR
ROBOT SUMO
REJEKI AGUNG SAPUTRO NRP. 7103 030 031
DOSEN PEMBIMBING : AKHMAD HENDRIAWAN, ST. NIP. 132 300 369
JURUSAN TEKNIK ELEKTRONIKA POLITEKNIK ELEKTRONIKA NEGERI SURABAYA SURABAYA 2006
ROBOT SUMO Oleh : REJEKI AGUNG SAPUTRO 7103.030.031 Proyek Akhir Ini Diajukan Sebagai Salah Satu Syarat Untuk Memeperoleh Gelar Ahli Madya (A.Md.) di Politeknik elektronika negeri Surabaya Institut teknologi sepuluh nopember Surabaya Disetujui oleh: Tim Penguji Proyek Akhir
1.
Agus Indra Gunawan, ST NIP:132.297.801
2.
Santi Anggraini, ST NIP:132.300.370
3.
Firman Arifin, ST NIP: 132.296.743
Dosen Pembimbing
1.
Akhmad Hendriawan, ST NIP: 132.300.369
Mengetahui : Ketua Jurusan Teknik Elektronika
Ir. Dedid Cahya Happyanto, M.T NIP. 131.694.603
ABSTRAK Teknologi sekarang ini telah berkembang pesat dan sangat luas, terutama dibidang robotika. Di beberapa negara maju, robot tidak hanya digunakan pada bidang industri, namun teknologi robot juga mengarah ke dalam dunia hiburan. Pada tugas akhir ini dibuat Robot Sumo yang diadopsi dari pertandingan robot sumo. Robot sumo ini harus mendorong lawannya hingga keluar arena, apabila robot tersebut berhasil mendorong lawannya keluar arena maka robot tersebut dinyatakan menang. Sensor yang digunakan pada robot sumo adalah sensor inframerah, sensor ini berfungsi sebagai mata robot yang bertugas mencari halangan. Ketika kedua sensor mendeteksi adanya halangan didepan maka robot akan bergerak maju kemudian mendorongnya hingga keluar arena. Sedangkan apabila hanya salah satu sensor saja yang mendeteksi maka robot akan bergerak sesuai dengan kondisi dimana sensor tersebut mendeteksi halangan. Selain itu pada robot sumo juga terdapat sensor untuk mendeteksi adanya garis putih yang merupakan batas tepi arena. Apabila sensor garis ini mendeteksi adanya garis maka robot bergerak menjauh dari garis tersebut agar tidak terjatuh. Hal yang paling penting dari robot sumo ini adalah tidak terjatuh dari arena. Untuk otaknya digunakan mikrokontroller sebagai pusat pengendali sistem secara keseluruhan, sedangkan untuk penggeraknya digunakan motor DC. Seperti halnya manusia, robot juga mempunyai keterbatasan seperti pandangan dan sensor dari robot ini mempunyai batasan tentang jarak deteksi sejauh 100 cm tegak lurus dari sensor dan sudut elevasi sensor adalah 400. Berdasarkan pengukuran pada jarak dibawah 10 cm sensor akan mengalami error, karena jarak bidang pantul terlalu dekat dengan sensor. Kata Kunci : Robot, Mikrokontroller, Sensor
ABSTRACT This time technology have expanded at full speed and very wide, especially in robotic. In other country robots not only use for industry field but also they also used for entertainment. This final project makes the Robot Sumo which adopted from sumo competition. This robot must push out the enemy until out of the ring, if the robot success push out the enemy out of the ring, the robot can be the winner. The sensor that used is infrared sensor, this sensor has function like human eyes to find an obstacle. When both of sensors detect that there is an obstacle in front of robot then the robot will move forward and push it until out of the ring. When only one of the sensors detects an obstacle the robot will move like the condition where the sensors detect an obstacle. Beside that in robot sumo also have sensor to detect the white line on the ring. When this sensor detects it the robot will move away from that line. The important thing from this robot is not fall down from the ring. The brain of this system used a microcontroller to control all of system, and for moving the robot used motor DC. Like human, robot also has a limit such as visualization of sensor. This robot has limit about range detection, the maximum range detection of this sensor about 100 cm forward from sensor and the elevation angle of sensor 400. Based on test when the distance closer than 10 cm the sensor will error because the obstacle is too close with sensor.
Keyword: Robot, Microcontroller, Sensor
KATA PENGANTAR Alhamdulillah, segala puja dan puji syukur penulis panjatkan kepada Allah S.W.T, karena atas limpahan rahmat dan hidayah-Nya penulis diberikan kemudahan dan kelancaran dalam menyelesaikan Proyek Akhir ini, serta tak terlupakan iringan salam dan sholawat bagi junjungan kami nabi besar Muhammad SAW. Dengan pengerahan segenap usaha kami akhirnya kami dapat menyelesaikan Proyek Akhir kami yang berjudul: ROBOT SUMO Dengan terselesaikannya buku laporan Proyek Akhir ini, kami berharap semoga buku ini dapat membawa manfaat pembaca pada umumnya dan juga bagi kami pada khususnya serta semua pihak yang berkepentingan. Kami juga berharap agar Proyek Akhir ini dapat dikembangkan sehingga dapat digunakan untuk mendukung perkembangan ilmu pengetahuan. Dengan segala upaya kami telah berusaha sebaik mungkin menyelesaikan proyek akhir ini, namun kami menyadari bahwa ”tak ada yang sempurna didunia ini” sehingga mungkin masih banyak terdapat kekurangan dalam penulisan Proyek Akhir ini. Untuk itu koreksi, kritik dan saran yang bersifat membangun sangat diperlukan demi pendekatan kesempurnaan dari Proyek Akhir ini. Akhirnya tak lupa kami ucapkan terima kasih kepada semua pihak yang telah memberikan bantuan sehingga terselesaikannya Proyek Akhir ini.
Surabaya, 28 Juli 2006
Penulis
UCAPAN TERIMA KASIH Dengan terselesaikannya proyek akhir ini penulis mengucapkan banyak terima kasih atas bantuan semua pihak yang diberikan pada penulis. Ucapan terima kasih ini kami berikan kepada : 1. Allah SWT yang telah memberikan rahmat dan berkah-Nya, serta tak terlupakan iringan salam dan sholawat bagi junjungan kami Nabi Muhammad SAW 2. Papa & Mama tercinta terima kasih atas doa dan saran yang diberikan sehingga dapat menyelesaikan proyek akhir ini. 3. Bapak Prof. Dr.Ir. Muh. Nuh, DEA, Selaku Rektor ITS 4. Bapak Dr. Ir. Titon Dutono, M Eng , selaku direktur PENS-ITS 5. Bapak Ir. Dedid CH, MT selaku Ketua Jurusan Teknik Elektronika. 6. Bapak Akhmad Hendriawan, ST yang telah memberikan pengarahan dan bimbingan dengan penuh kesabaran untuk menyelesaikan tugas akhir Ini 7. HoNey yang telah memberikanku Dukungan SpirIt dalam kondisi SuSaH SeNanG, suKa Duka ditanggung bersama serta SemangaT dalam mengerjakan TA, MakAsih Ya.... Honey_Q Chayank. Miuu......2 KeEp YouR SmIle 4 Me. 8. Fuad Hasan selaku tim robot its yang telah banyak membantu dalam penyelesaian proyek akhir ini. 9. Teman-teman yang ada di ”CRUSTY CRUB” yang telah banyak membantu dalam penyelesaian TA_Q. Dan jangan lupa Keep Our Friendship FoReVer, O.K. PrEnd!! 10. Seluruh pihak yang tak dapat kami sebut satu persatu terima kasih atas bantuannya dalam penyelesaian tugas akhir ini
DAFTAR ISI HALAMAN JUDUL…………………………………………….. HALAMAN PENGESAHAN…………………………………… ABSTRAK……………………………………………………….. ABSTRACT……………………………………………………… KATA PENGANTAR…………………………………………… UCAPAN TERIMA KASIH……………………………………. DAFTAR ISI.................................................................................. DAFTAR GAMBAR…………………………………………….. DAFTAR TABEL………………………………………………...
Hal i ii iii iv v vi vii ix xi
BAB I. PENDAHULUAN……………………………………... 1.1 Pendahuluan………………………………………… 1.2 Permasalahan……………………………………….. 1.3 Batasan Masalah……………………………………. 1.4 Tujuan & Manfaat…………………………………... 1.5 Metodologi………………………………………….. 1.6 Sistematika Pembahasan…………………………….
1 1 2 2 2 3 3
BAB II. TEORI PENUNJANG………………………………… 2.1 Pengertian Robot Sumo…………………………….. 2.2 Mikrokontroller Atmel AVR Atmega16.................... 2.2.1 Mikrokontroler AVR....................................... 2.2.2 Port Berfungsi Sebagai Input/Output ............. 2.2.3 Port Berfungsi Sebagai Analog Digital Converter......................................................... 2.2.4 Interrupt........................................................... 2.2.5 Rutin-Rutin Standar ........................................ 2.3 Sensor Inframerah (SHARP GP2D12)....................... 2.4 Motor DC....................................................................
5 5 5 5 10
BAB III. PERANCANGAN DAN PEMBUATAN ALAT.......... 3.1 Konfigurasi Sistem...................................................... 3.2 Perancangan dan Pembuatan Perangkat Keras ........... 3.2.1 Perencanaan dan Pembuatan Sensor Deteksi Garis................................................................. 3.2.2 Perencanaan dan Pembuatan Sensor Deteksi Lawan..............................................................
11 15 16 18 20 23 23 26 26 27
3.2.3 Perancangan Mikrokontroller..........................
28
3.2.3.1 Rangkaian Clock Generator.................. 3.2.3.2 Perencanaan dan Pembuatan Rangkaian Power Supply...................... 3.2.3.3 Perancangan Interfacing I/O................. 3.2.4 Perencanaan dan Pembuatan Driver Motor...... 3.3 Perancangan dan Pembuatan Perangkat Lunak..........
28 28 29 30 33
BAB IV. PENGUJIAN DAN ANALISIS.................................... 4.1 Pengujian Sensor Inframerah (SHARP GP2D12)….. 4.1.1 Pengujian Jarak Deteksi Sensor Inframerah (SHARP GP2D12) menggunakan LCD.......... 4.1.2 Pengujian Sudut Elevasi Sensor Inframerah (SHARP GP2D12) menggunakan LED........... 4.2 Pengujian Sistem Minimum AVR.............................. 4.3 Pengujian Driver Motor DC....................................... 4.4 Pengujian Sistem Secara Keseluruhan........................
37 38 40 41
BAB V. PENUTUP........................................................................ 5.1 Kesimpulan................................................................. 5.2 Saran………………………………………………...
49 49 49
DAFTAR PUSTAKA LAMPIRAN RIWAYAT PENULIS
35 35 35
DAFTAR GAMBAR Gambar 2.1 Gambar 2.2 Gambar 2.3 Gambar 2.4 Gambar 2.5
Pin-pin Atmega16 dalam kemasan 40-pin DIP.... Blok Diagram Arsitektur CPU dari AVR............. Penentuan Port yang akan dipakai........................ Alur Pemrograman dan Proses Download............ Mengaktifkan ADC Internal dari Mikrokontroller.................................................... Gambar 2.6 Register ADMUX………………………………. Gambar 2.7 Register ADCSRA……………………………… Gambar 2.8 Register SFIOR…………………………………. Gambar 2.9 Timing Diagram ADC Free Running Mode......... Gambar 2.10 LCD pada Port B................................................. Gambar 2.11 Rangkaian Internal dari Sensor Inframerah........ Gambar 2.12 Kurva Perbandingan Antara Tegangan dan Jarak.................................................................... Gambar 3.1 Blok Diagram Sistem............................................ Gambar 3.2 Mekanisme Gerak Robot Sumo............................ Gambar 3.3 Rangkaian Sensor Deteksi Garis........................... Gambar 3.4 Rangkaian Sensor Deteksi Serangan Lawan ........ Gambar 3.5 Rangkaian osilator kristal...................................... Gambar 3.6 Rangkaian power supply untuk mikrokontroler.... Gambar 3.7 Rangkaian Driver Motor....................................... Gambar 3.8 Gambar Robot Sumo Bagian Bawah.................... Gambar 3.9 Gambar Robot Sumo Bagian Atas........................ Gambar 3.10 Gambar Robot Sumo Keseluruhan..................... Gambar 3.11 Flowchart Pembuatan Program........................... Gambar 4.1 Listing Program Pengujian SHARP GP2D12 melalui LCD…………………………………. Gambar 4.2 Listing Program Pengujian SHARP GP2D12 melalui ADC....................................................... Gambar 4.3 Pengujian Sudut Elevasi Sensor............................ Gambar 4.4 Pengujian Sistem Minimum Avr........................... Gambar 4.5 Led Bergeser Ke Kiri............................................ Gambar 4.6 Driver Motor DC................................................... Gambar 4.7 Robot Sumo Bergerak Ke Kiri………………….. Gambar 4.8 Robot Sumo Bergerak Ke Kanan.......................... Gambar 4.9 Robot Sumo Menyerang………………………... Gambar 4.10 Robot Sumo Menghindar dari Serangan Lawan.
Hal 7 8 9 9 11 12 13 14 15 17 18 19 23 24 27 27 28 29 31 31 32 33 34 36 38 38 39 39 40 41 41 42 43
Gambar 4.11 Gambar 4.12 Gambar 4.13 Gambar 4.14 Gambar 4.15 Gambar 4.16
Robot Sumo Menghindar dari Serangan Lawan. Robot Sumo Menghindar dari Serangan Lawan. Robot Sumo Bergerak Menghindar dari Garis... Robot Sumo Bergerak Menghindar dari Garis... Robot Sumo Bergerak Menghindar dari Garis... Robot Sumo Bergerak Menghindar dari Garis...
43 44 44 45 45 46
DAFTAR TABEL Tabel 2.1 Konfigurasi pin port................................................... Tabel 2.2 Port A Sebagai Analog Digital Converter (ADC)…. Tabel 2.3 Bit Pemilih Tegangan Ref.......................................... Tabel 2.4 Pemilihan Auto Trigger ADC.................................... Tabel 2.5 Prioritas Interrupt....................................................... Tabel 3.1 Penjelasan dari Mekanisme Gerak Robot Sumo........ Tabel 4.1 Tabel Pengujian Sensor SHARP GP2D12 dengan LCD............................................................................ Tabel 4.2 Tabel Pengujian Driver Motor DC............................ Tabel 4.3 Pergerakan Robot Sumo Ketika Ada Lawan............. Tabel 4.4 Pergerakan Robot Sumo Menghindar dari Serangan Lawan......................................................................... Tabel 4.5 Pergerakan Robot Sumo Ketika Mendeteksi Garis...
Hal 10 12 12 14 16 24 36 40 42 44 47
BAB I PENDAHULUAN I.1 PENDAHULUAN Teknologi robot sudah berkembang dengan pesat pada saat ini, mulai dari robot sederhana untuk aplikasi yang mudah sampai dengan robot canggih dan kompleks yang digunakan dalam pabrik industri, maupun dalam bidang-bidang yang lainnya. Penggunaan piranti robot dewasa ini sudah tidak didominasi oleh kepentingan industri, tetapi juga sudah mengarah pada dunia hiburan. Salah satu robot yang sifatnya sebagai hiburan adalah Robot Sumo. Robot Sumo telah dikenalkan pada dunia sejak tahun 1990 oleh Perusahaan Fuji Software dari Jepang[3]. Seperti pertandingan sumo, robot ini bertanding hanya dengan satu lawan. Di atas ring kedua robot ini saling mendorong hingga salah satu dari robot keluar arena, apabila salah satu robot telah berhasil mengeluarkan lawannya dari arena maka robot tersebut dinyatakan menang[4]. Peraturan pertandingan dari Robot Sumo seperti pada pertandingan sumo yang sebenarnya dimana masing-masing robot harus mempunyai berat yang sama, setiap pertandingan sumo ada kelasnya masingmasing[5]. Jadi berat dan tinggi dari robot akan menentukan kelas bertandingnya. Pada Robot Sumo digunakan sensor pendeteksi obyek sebagai identifikasi posisi robot lawan. Sensor pendeteksi obyek ini berfungsi sebagai pengendali robot dengan mengikuti pergerakan obyek jadi seolah-olah robot ini mempunyai mata. Keseluruhan sistem ini dikontrol oleh mikrokontroller dimana fungsi dari mikrokontroller adalah sebagai pusat/otak dari keseluruhan suatu sistem untuk mengolah data yang diambil dari berbagai macam sensor. Pada mikrokontroller ini kita dapat menginisialisasi data yang dikirim dari sensor pendeteksi obyek kemudian mikrokontroller itu sendiri mengirimkan instruksi untuk menjalankan motor sesuai data yang diberikan oleh sensor. Robot ini dapat bergerak secara otomatis karena robot memiliki beberapa kemampuan untuk merespon beberapa informasi dari luar yang dibaca oleh sensor. Kemampuan yang dimiliki robot ini adalah kemampuan bergerak secara otomatis, kemampuan untuk menemukan objek yang berupa robot lawan dan kemampuan menyerang lawan.
I.2 PERMASALAHAN Permasalahan sistem yang akan dibuat dalam Proyek Akhir adalah sebagai berikut : a. b.
c. d.
Membuat perangkat lunak yang mampu mengontrol pergerakan robot untuk menyerang lawan secara otomatis. Membuat komunikasi data serial sehingga dapat menyalurkan informasi yang telah diolah oleh software dari komputer ke mikrokontroller. Bagaimana robot dapat mengenali satu obyek benda yaitu berupa robot lawan sehingga dapat menyerangnya. Bagaimana robot dalam melakukan kinerja, berupa gerakan : maju, menghindar, dan menyerang lawan setelah mengetahui posisi robot lawan.
I.3 BATASAN MASALAH Asumsi-asumsi berikut ini adalah sebagai batasan masalah yang dipakai dalam penyelesaian tugas akhir: a. Robot hanya mengenal satu obyek yaitu berupa robot lawan. b. Robot lawan mempunyai ukuran yang sama. c. Jarak maksimum yang dapat dijangkau oleh sensor adalah 100 cm tegak lurus dari sensor. d. Mobilitas robot hanya pada lantai yang rata atau memiliki ketinggian yang sama. e. Robot hanya menyerang robot lawan dari depan. I.4 TUJUAN DAN MANFAAT Tujuan dari Proyek Akhir ini meliputi tujuan umum dan khusus yaitu : • Tujuan Umum : Sebagai syarat kelulusan bagi mahasiswa Politeknik Elektronika Surabaya. • Tujuan Khusus : Membuat sistem yang dapat mengidentifikasi suatu obstacle/halangan yang berada didepan robot sehingga didapatkan respon untuk menyerang halangan tersebut.
I.5 METODOLOGI Dalam pengerjaan Proyek Akhir ini diperlukan suatu metode untuk mendapatkan hasil yang maksimal. Untuk itu penulis merencanakan suatu langkah-langkah yang dapat memaksimalkan dalam pelaksanaan pengerjaan Tugas Akhir ini. Langkah-langkah yang perlu dilakukan adalah sebagai berikut : 1.4.1 Studi Literatur Mempelajari prinsip kerja dari sistem pengontrollan sensor inframerah (SHARP GP2D12) sebagai sensor untuk mengidentifikasi suatu halangan, sensor garis sebagai pendeteksi garis, sensor lawan untuk mengidentifikasi ada atau tidak robot lawan, mikrokontroller sebagai pusat pengolah data, motor sebagai penggerak. 1.4.2 Perencanaan dan Pembuatan Merencanakan dan membuat peralatan maupun program yang dibutuhkan baik secara hardware, dan software. 1.4.3 Pengujian dan Analisis Mengintegrasikan sistem antara hardware dengan software, kemudian dilakukan pengujian dan analisis terhadap hasil yang telah didapatkan I.6 SISTEMATIKA PEMBAHASAN Untuk mempermudah dalam penyelesaian proyek akhir ini, maka kami membuat urutan pembahasan sebagai berikut : BAB I PENDAHULUAN Dalam bab ini akan dibahas latar belakang, maksud dan tujuan, batasan masalah, metodologi, dan sistematika pembahasan. BAB II TEORI PENUNJANG Dalam bab ini kami menuliskan beberapa teori dasar yang diperlukan dalam penyelesaian pembuatan sistem rangkaian “ROBOT SUMO”.
BAB III PERENCANAAN DAN PEMBUATAN ALAT Bab ini membahas tentang perencanaan dan pembuatan alat berupa sensor, driver motor, dan rangkaian yang mendukung sistem ini, serta realisasi program, dimana mencakup blok diagram rangkaian dan flowchart dari perencanaan sistem secara lengkap beserta penjelasan cara kerja dari sistem. BAB IV PENGUJIAN DAN ANALISA Pada bab ini merupakan bagian pengujian alat, serta menganalisa akurasi dari sistem yang telah dibuat. BAB V PENUTUP Berisi kesimpulan dari keseluruhan proyek akhir yang diambil berdasarkan data yang ada, juga berisi tentang saran serta petunjuk untuk pengembangan serta penyempurnaan alat.
BAB II TEORI PENUNJANG 2.1 PENGERTIAN ROBOT SUMO Robot sumo dirancang mempunyai kemampuan untuk mendeteksi suatu objek kemudian menyerang objek tersebut dengan mendorongnya. Untuk mendeteksi ada atau tidak halangan didepan robot maka pada bagian robot diberikan suatu sensor yang dapat mendeteksi halangan. Robot sumo akan menyerang halangan apabila halangan tersebut benarbenar berada didepan robot sumo. Jika halangan belum berada tepat didepan robot atau belum ada halangan maka robot akan melakukan pencarian. Apabila halangan tersebut berada didepan namun posisinya agak kesamping kiri maupun kekanan maka robot sumo akan mengikutinya terus sampai halangan tersebut tepat berada didepan robot sumo. Jika halangan berada tepat didepan robot maka robot sumo akan mendorongnya hingga keluar arena. Pada bab ini akan diberikan teori penunjang yang mendukung pembuatan keseluruhan dari robot sumo, terdiri antara lain : • Mikrokontroller ATMEGA 16 • Sensor Inframerah (SHARP GP2D12) • Motor DC 2.2 MIKROKONTROLLER ATMEL AVR ATMEGA16 2.2.1 Mikrokontroller AVR AVR merupakan bagian dari keluarga mikrokontroller CMOS 8-bit buatan Atmel. AVR mempunyai 32 register general-purpose, timer/counter fleksibel dengan mode compare, interrupt internal dan eksternal, serial UART, programmable Watchdog Timer, dan mode power saving. Beberapa dari mikrokontroller atmel AVR mempunyai ADC internal dan PWM internal. AVR juga mempunyai In-Sistem Programmable Flash on-chip yang mengijinkan memori program untuk diprogram berulang-ulang dalam sistem menggunakan hubungan serial SPI. Mikrokontroller AVR yang digunakan pada robot sumo ini adalah ATMega16. Beberapa keistimewaan dari ATMEGA 16 antara lain : • High-performance, Low-power AVR® 8-bit Microcontroller • Advanced RISC Architecture – 131 Powerful Instructions – Most Single-clock Cycle Execution – 32 x 8 General Purpose Working Registers
– Fully Static Operation – Up to 16 MIPS Throughput at 16 MHz – On-chip 2-cycle Multiplier • Nonvolatile Program and Data Memories – 16K Bytes of In-System Self-Programmable Flash Endurance: 1,000 Write/Erase Cycles – Optional Boot Code Section with Independent Lock Bits In-System Programming by On-chip Boot Program True Read-While-Write Operation – 512 Bytes EEPROM Endurance: 100,000 Write/Erase Cycles – 1K Byte Internal SRAM – Programming Lock for Software Security • JTAG (IEEE std. 1149.1 Compliant) Interface – Boundary-scan Capabilities According to the JTAG Standard – Extensive On-chip Debug Support – Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface • Peripheral Features – Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode – Real Time Counter with Separate Oscillator – Four PWM Channels – 8-channel, 10-bit ADC 8 Single-ended Channels 7 Differential Channels in TQFP Package Only 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x – Byte-oriented Two-wire Serial Interface – Programmable Serial USART – Master/Slave SPI Serial Interface – Programmable Watchdog Timer with Separate On-chip Oscillator – On-chip Analog Comparator • Special Microcontroller Features – Power-on Reset and Programmable Brown-out Detection – Internal Calibrated RC Oscillator – External and Internal Interrupt Sources
– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby and Extended Standby • I/O dan Packages – 32 Programmable I/O Lines – 40-pin PDIP, 44-lead TQFP, and 44-pad MLF • Tegangan Kerja – 2.7 - 5.5V untuk ATmega16L – 4.5 - 5.5V untuk ATmega16 • Kecepatan – 0 - 8 MHz untuk ATmega16L – 0 - 16 MHz untuk ATmega16
Gambar 2.1 Pin-pin Atmega16 dalam kemasan 40-pin DIP8 Pin-pin pada Atmega16 dengan kemasan 40-pin DIP (dual in-line package) ditunjukkan oleh Gambar 2.1. untuk memaksimalkan performa dari mikrokontroller, AVR menggunakan arsitektur Harvard (dengan memori dan bus terpisah untuk program dan data). Sedangkan untuk blok diagram arsitektur CPU dari AVR ditunjukkan oleh gambar 2.2.
Gambar 2.2 Blok Diagram Arsitektur CPU dari AVR8 Pemrograman yang digunakan untuk mengisi program pada mikrokontroller AVR ini digunakan CodeVision AVR dan bahasa pemrograman yang digunakan adalah bahasa C. Pada CodeVision AVR ini bisa ditentukan port-port dari mikrokontroller AVR yang berfungsi sebagai input maupun output, serta bisa juga ditentukan tentang penggunaan fungsi-fungsi internal dari AVR. Sebelum menentukan port-port dan fungsi-fungsi internal yang akan digunakan, harus ditentukan terlebih dahulu mikrokontroller yang akan dipakai. Masingmasing mikrokontroller mempunyai perbedaan dalam fungsi-fungsi internal. Untuk menentukan mikrokontroller dan port-port yang akan digunakan sebagai input maupun output ditunjukkan oleh gambar 2.3.
Gambar 2.3 Penentuan Port yang akan dipakai2 Setelah jenis chip mikrokontroller dan port dari AVR ditentukan sebagai input atau output maka program ditulis dalam bahasa C, kemudian program dapat didownload ke dalam mikrokontroller AVR, namun sebelum didownload kedalam mikrokontroller program harus dicompile terlebih dahulu untuk mengetahui apakah ada error atau tidak, jika tidak ada error maka program siap didownload dengan alur seperti yang ditunjukkan oleh gambar 2.4.
Gambar 2.4 Alur Pemrograman dan Proses Download2
2.2.2 Port Berfungsi Sebagai Input/Output Atmega16 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur bidirectional dengan pilihan internal pull-up. Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’ untuk mewakili nama huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit DDxn dalam regiter DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Sebaliknya bila DDxn diset F maka Px berfungsi sebagai pin output. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0. Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1)atau kondisi output low (DDxn=1, PORTxn=0). Untuk lebih detail mengenai port ini dapat dilihat pada datasheet dari Atmega16. Tabel 2.1 Konfigurasi pin port 8
2.2.3 Port Berfungsi Sebagai Analog Digital Converter (ADC) Pada port ATMEGA 16 terdapat Analog Digital Coverter (ADC) internal dimana letak dari ADC internal tersebut berada di Port A. Dimana fitur dari ADC internal dari ATMEGA 16 disebutkan sebagai berikut : 10-bit Resolution 65 - 260 µs Conversion Time Up to 15 kSPS at Maximum Resolution 8 Multiplexed Single Ended Input Channels Optional Left Adjustment for ADC Result Readout 0 - VCC ADC Input Voltage Range Selectable 2.56V ADC Reference Voltage Free Running or Single Conversion Mode ADC Start Conversion by Auto Triggering on Interrupt Sources Interrupt on ADC Conversion Complete Sleep Mode Noise Canceler Apabila Port A tersebut digunakan sebagai Analog Digital Converter (ADC) maka pada CodeVision AVR harus diset seperti yang ditunjukkan oleh gambar berikut.
Gambar 2.5 Mengaktifkan ADC Internal dari Mikrokontroller2
Pada gambar tersebut ADC Internal dari Mikrokontroller diaktifkan. ADC tersebut diset dengan Auto Trigger Source dipilih yang Free Running. Untuk bit pada Port A yang digunakan sebanyak dua bit yaitu bit 0 dan bit 1. Tabel 2.2 Port A Sebagai Analog Digital Converter (ADC)8
Register-register yang dipakai untuk mengakses ADC adalah: ADMUX – ADC Multiplexer Selection Register
Gambar 2.6 register ADMUX8
Bit 7:6 – REFS1:0 : Bit Pemilih tegangan referensi Bit ini berfungsi untuk memilih tegangan referensi ADC untuk lebih jelasnya terdapat pada tabel dibawah ini. Tabel 2.3 Bit Pemilih Tegangan Ref8
Bit 5 – ADLAR : ADC Left Adjust Result Bit 4:0 – MUX 4:0 : Bit pemilih Analog Channel dan Gain ADCSRA – ADC Control and Status Register
Gambar 2.7 register ADCSRA8 Bit 7 – ADEN : ADC Enable Diisi 1 untuk mengaktifkan ADC, diisi 0 untuk mematikan ADC sekaligus memberhentikan konversi yang sedang berlangsung. Bit 6 – ADSC : ADC Start Conversion Pada mode single-conversion, set bit ini untuk memulai tiap konversi. Pada mode free-running, set bit ini untuk konversi pertama kalinya. Bit ADSC bila dibaca akan bernilai 1 selama proses konversi, dan bernilai 0 bila konversi selesai. Mengisi bit ini dengan nilai 0 tidak akan mempunyai dampak. Bit 5 – ADATE : ADC Auto Trigger Enable Bila bit ini diisi 1 maka auto trigger ADC akan diaktifkan. ADC akan memulai konversi pada saat tepi positif dari sumber sinyal trigger yang dipilih. Sumber sinyal trigger ditentukan dengan menseting bit ADTS pada register SFIOR. Bit 4 – ADIF : ADC Interrupt Flag Bit ini akan bernilai 1 pada saat ADC selesai mengkonversi dan Data register telah diupdate. ADC Conversion Complete Interrupt akan dijalankan bila bit ADIE dan bit-I pada register SREG diset 1. ADIF akan di-clear secara hardware bila mengerjakan penanganan vektor interrupt yang bersesuaian. Alternatifnya, ADIF dapat di-clear dengan menuliskan 1. Hati-hati bila bekerja dengan Read-Modify-Write pada ADCSRA, interrupt yang tertunda dapat dinonaktifkan/batal. Hal ini juga berakibat sama bila instruksi SBI dan CBI digunakan.
Bit 3 – ADIE : ADC Interrupt Enable Mengisi bit ini dan bit-I pada register SREG menjadi 1 akan mengaktifkan ADC Conversion Complete Interrupt. Bit 2:0 – ADPS2:0 – Bit pemilih ADC Prescaler Menentukan bilangan pembagi antara sumber clock XTAL ke clock ADC. •
SFIOR – Special Function I/O Register untuk sumber auto trigger
Gambar 2.8 Register SFIOR8 Bit 4 –ADHSM : ADC High Speed Mode Bila bit ini diset 1 maka akan mengaktifkan ADC High Speed Mode. Mode start ADC ditunjukkan pada tabel konfigurasi dibawah. Sesuai dengan konfigurasi tersebut maka dapat dipilih mode start ADC, ADC akan konversi ketika berdasarkan mode yang dipilih. Tabel 2.4 Pemilihan Auto Trigger ADC8
Pada mikrokontroller ini digunakan ADC Internal dimana dalam pemilihan Auto Trigger ADC digunakan Free Running Mode. Untuk Timing Diagramnya ditunjukkan oleh gambar 2.9.
Gambar 2.9 Timing Diagram ADC Free Running Mode8 2.2.4 Interrupt Interrupt merupakan suatu peristiwa yang menyebabkan mikrokontroller menghentikan program sejenak untuk mengerjakan proses interrupt tersebut. Setelah interrupt yang dikerjakan tersebut telah selesai maka mikrokontroller akan kembali ke rutin program yang telah dihentikan sejenak. Interrupt yang mempunyai prioritas tertinggi tidak dapat diganggu oleh program yang lain maupun interrupt yang mempunyai prioritas lebih rendah. Selama proses interrupt dijalankan maka Program Counter (alamat dari instruksi yang sedang berjalan) disimpan ke stack. Berikut merupakan prioritas interrupt dari prioritas tinggi sampai prioritas rendah.
Tabel 2.5 Prioritas Interrupt8
2.2.5 Rutin-Rutin Standar Pada CodeVision AVR telah disediakan beberapa rutin-rutin yang siap diisi dengan program. Setelah mengeset port AVR yang berfungsi sebagai input maupun output maka program disesuaikan dengan penentuan port yang telah ditentukan. Beberapa contoh fungsi yang telah disediakan pada CodeVision AVR seperti berikut : Fungsi Delay Untuk menghasilkan delay pada pemrograman AVR maka sebelum dipanggil pada subrutin program maka fungsi delay harus dideklarasikan pada header. Setelah dideklarasikan maka program
akan menjalankan rutin untuk memanggil delay. Letaknya pada header dari program, dituliskan sebagai berikut : #include
#include <delay.h> Pada bagian atas sendiri merupakan inisialisasi jenis tipe AVR yang akan digunakan. Karena yang digunakan adalah AVR ATMEGA 16 maka pada header paling atas sendiri terdapat keterangan bahwa program ini khusus digunakan untuk AVR ATMEGA 16. Pada CodeVision AVR juga terdapat fungsi untuk memanggil delay selain cara diatas yaitu • void delay_us(unsigned int n) menghasilkan delay selama n µ-detik, n adalah nilai konstan. • void delay_ms(unsigned int n) menghasilkan delay selama n mili-detik, n adalah nilai konstan. Fungsi LCD Fungsi LCD harus dideklarasikan terlebih dahulu pada header program apabila fungsi LCD tersebut jika dipanggil. Selain itu fungsi LCD harus diaktifkan terlebih dahulu pada CodeVision Wizard, misal jika LCD tersebut diletakkan pada Port B dari mikrokontroller, ditunjukkan seperti berikut:
Gambar 2.10 LCD pada Port B2
Untuk menghapus karakter yang tampil di layar LCD dan posisi karakter kembali ke posisi semula. • void lcd_clear(unsigned char x, unsigned char y) Untuk meletakkan posisi karakter c pada layar LCD pada kolom ke-x dan baris ke-y maka pada program harus dituliskan: • void lcd_gotoxy(unsigned char x, unsigned char y) • void lcd_putchar(char c) 2.3 Sensor Inframerah (SHARP GP2D12) Sensor inframerah adalah sensor yang bekerja berdasarkan cahaya dan digunakan untuk mendeteksi ada atau tidak suatu objek yang berada didepan. Sensor inframerah ini digunakan sebagai piranti masukan (input) pada mikrokontroller. Pada kali ini digunakan sensor inframerah dengan tipe SHARP GP2D12 dimana pada bagian pengirim (transmitter) terdapat osilator dan bagian penerima (receiver) terdapat filter cahaya, dimana filter tersebut hanya menyaring frekuensi yang dipancarkan inframerah bagian pengirim (transmitter). Selain itu warna dari obyek tidak berpengaruh terhadap sensor ini. Berikut ini adalah gambar rangkaian dari sensor inframerah.
Gambar 2.11 Rangkaian Internal dari Sensor Inframerah7
Dari gambar tersebut dapat diketahui bahwa sensor inframerah, osilator, regulator tegangan, dan filter sudah dalam satu kemasan. Output dari sensor inframerah ini adalah data analog, karena data output berupa data analog maka pada mikrokontroller terletak pada port yang memiliki fungsi sebagai ADC internal yaitu PortA. Berikut merupakan data analog yang dikeluarkan oleh sensor inframerah.
Gambar 2.12 Kurva Perbandingan Antara Tegangan dan Jarak7 Dari kurva perbandingan tersebut dapat diketahui bahwa semakin jauh jarak suatu benda yang dideteksi maka semakin kecil juga nilai tegangan yang dihasilkan dari sensor, begitu juga sebaliknya semakin dekat jarak suatu benda maka semakin besar nilai tegangan. Kurva tersebut menunjukkan bahwa jarak terjauh yang dapat dideteksi oleh sensor adalah 100 cm, sedangkan untuk jarak terdekat adalah 10 cm
2.4 Motor DC Motor DC adalah suatu mesin yang berfungsi merubah tenaga listrik arus searah menjadi tenaga gerak, dimana tenaga gerak tersebut berupa putaran motor. Pada prinsipnya mesin listrik dapat berlaku sebagai motor atau generator. Perbedaan hanya terletak pada konversi dayanya, jika generator merubah daya mekanik menjadi daya listrik sedangkan motor merubah daya listrik menjadi daya mekanik. Dasar kerja motor DC adalah atas prinsip bahwa suatu penghantar yang membawa arus listrik diletakkan didalammedan magnet, maka akan timbul gaya mekanik yang mempunyai arah sesuai dengan hukum tangan kiri dan besarnya adalah: F = B I L (Newton) Untuk suatu kebutuhan yang menghendaki adanya variasi putaran motor yang dapat diatur maka penggunaan motor DC lebih menguntungkan apabila dibandingkan dengan motor jenis lain karena motor DC lebih mudah diatur kecepatannya dalam rentang yang lebar dan karakteristik kopel putaran yang baik. Pada umumnya mesin dinamik terdiri dari bagian yang berputar disebut rotor dan bagian yang diam disebut stator. Pada motor DC, rotor merupakan kumparan jangkar dengan belitan konduktor, dan stator merupakan kumparan medan berbentuk katup sepatu.Terdapat dua tipe motor DC berdasarkan prinsip medan yaitu: 1. Motor DC dengan magnet permanent 2. Motor DC dengan lilitan yang terdapat pada stator Sedangkan tipe motor DC yang digunakan pada proyek akhir ini adalah tipe magnet permanen, karena tipe ini lebih mudah dalam pengontrolannya, disamping itu dimensi yang tidak terlalu besar. Motor DC pada saat ini banyak digunakan pada industri yang memerlukan gerakan dengan kepresisian yang sangat tinggi untuk pengaturan kecepatan pada torsi yang konstan. Motor DC berfungsi mengubah tenaga listrik menjadi tenaga mekanis dimana gerak tersebut berupa putaran. Prinsip dasar dari motor arus searah adalah “kalau sebuah kawat berarus diletakkan antara kutub-kutub magnet (U– S), maka pada kawat tersebut akan bekerja suatu gaya yang menggerakkan kawat tersebut”. Arah gerakan kawat dapat ditentukan dengan kaidah tangan kiri yang berbunyi sebagai berikut. ”Apabila pada tangan kiri yang terbuka diletakkan diantara kutub U dan S pada sebuah magnet, maka garis-garis gaya yang keluar dari kutub utara menembus telapak tangan
kiri dan arus didalam kawat mengalir searah dengan arah keempat jari, maka kawat tersebut akan mendapatkan gaya yang searah dengan arah ibu jari “. Pada motor arus searah rotor mempunyai kumparan tidak hanya satu, namun terdiri dari kumparan dan komutator yang banyak untuk mendapatkan torsi yang terus menerus. Rotor terdiri dari jangkar yang inti terbuat dari lempengan-lempengan yang ditaktik. Susunan lempengan membentuk celah-celah, dan celah-celah tersebut terdapat konduktor kumparan jangkar. Ujung tiap-tiap kumparan dihubungkan pada satu segmen komutator. Tiap segmen merupakan pertemuan dua ujung kumparan yang terhubung. Kumparan penguat dihubungkan secara seri, jangkar merupakan bagian bergerak yang dibuat dari besi berluminasi untuk mengurangi rugi-rugi arus Eddy. Kumparan jangkar diletakkan pada slot besi pada bagian luar permukaan jangkar. Pada jangkar terdapat komutator yang berbentuk silinder dan masing-masing di isolasi. Sisi kumparan dihubungkan dengan segmen komutator pada beberapa bagian yang berbeda, tergantung dari tipe belitan yang diperlukan.
BAB III PERANCANGAN DAN PEMBUATAN ALAT 3.1 KONFIGURASI SISTEM Secara umum konfigurasi sistem dari Robot Sumo ini terdiri dari input, kontroler dan output. Dari sisi masukan (input) terdiri dari sensor inframerah, kontroler yang digunakan adalah mikrokontroller ATMEGA 16, dan pada sisi keluaran (output) digunakan driver motor .
Gambar 3.1 Blok Diagram Sistem Pada robot sumo diperlukan teknik agar didapatkan pergerakan yang baik. Pada robot sumo ini hal yang paling penting adalah posisi bertahan. Untuk mendapatkan teknik tersebut maka diperlukan metode yang digambarkan sebagai berikut ini.
Gambar 3.2 Mekanisme Gerak Robot Sumo5 Untuk penjelasan dari mekanisme gerak tersebut dijelaskan pada tabel berikut ini. Tabel 3.1 Penjelasan dari Mekanisme Gerak Robot Sumo5 Status Deskripsi Tindakan BERTAHAN Robot masuk kedalam kategori ini ketika mendeteksi adanya garis tepi arena. Robot akan dinyatakan menang apabila robot tidak keluar arena. Robot segera berputar menjauh dari garis tepi apabila mendeteksi garis tepi arena.
1.
Berputar menjauh dari garis tepi arena
2.
Beralih ke posisi Mencari setelah berputar selesai
MENCARI
TARGET
Robot tidak berada di tepi arena dan 1. tidak mendeteksi adanya lawan. Robot terus berputar didalam arena dengan harapan menemukan lawan.
Kembali ke status bertahan apabila garis tepi terdeteksi.
2.
Beralih ke posisi Target apabila sensor mendeteksi adanya robot lawan.
3.
Tetap mencari apabila robot lawan belum ditemukan.
1.
Kembali ke status bertahan apabila garis arena terdeteksi.
2.
Jika robot lawan berada didepan langsung dan posisi robot lawan dekat maka alihkan ke posisi Serang.
3.
Jika robot lawan berada didepan namun
Robot lawan telah terdeteksi berada didepan.
posisinya cukup jauh, kendalikan robot bergerak maju.
SERANG
4.
Kembali ke posisi Mencari apabila robot lawan belum ditemukan.
Robot lawan telah ditemukan. 1. Kendalikan robot bergerak lurus kedepan dengan kekuatan penuh untuk mendorong lawan keluar arena.
Kembali keposisi Bertahan apabila garis arena terdeteksi.
2.
Kendalikan robot bergerak lurus kedepan.
3.2 PERANCANGAN DAN PEMBUATAN PERANGKAT KERAS Sistem perangkat keras disini terdiri dari sensor inframerah, sensor garis, perangkat komparator, perangkat mikrokontroller, dan driver motor. 3.2.1 Perencanaan dan pembuatan sensor deteksi garis Pada sensor garis ini digunakan led dan photodiode, dimana led sebagai pengirim (transmitter) dan photodiode sebagai penerima (receciver). Sensor garis ini mendeteksi warna putih, apabila terdeteksi adanya warna putih maka nilai dari output komparator juga akan berubah. Karena output dari komparator berupa nilai digital 0 atau 1 maka nilai komparator akan merubah nilai yang sebelumnya. Misal nilai yang sebelumnya bernilai 0 maka setelah terdeteksi adanya warna
putih nilai komparator akan berubah menjadi 1. Untuk rangkaian dari sensor garis ditunjukkan oleh gambar berikut.
Gambar 3.3 Rangkaian Sensor Deteksi Garis Karena kondisi tiap ruangan berbeda maka kepekaan sensor juga perlu diperhatikan. Untuk merubah kepekaan sensor garis ini dapat diatur pada VR (Variable Resistor), nilai dari VR dapat diubah sesuai dengan kondisi ruangan. 3.2.2 Perencanaan dan pembuatan sensor deteksi lawan Pada sensor deteksi lawan ini hampir sama prinsipnya seperti sensor deteksi garis, hanya saja yang digunakan untuk bagian pengirim (transmitter) digunakan inframerah, sedangkan untuk bagian penerima (receiver) photodiode. Sensor ini mendeteksi ada atau tidak lawan dibagian samping kiri, kanan, dan bagian belakang robot. Apabila sensor ini mendeteksi adanya lawan dibagian samping kiri, kanan, dan bagian belakang robot maka sensor akan memberikan data kepada mikrokontroller untuk menggerakkan motor supaya robot menghindar.
Gambar 3.4 Rangkaian Sensor Deteksi Serangan Lawan
3.2.3 Perancangan mikrokontroller Dalam membuat rangkaian mikrokontroller diperlukan pemahaman mengenai sistem minimum dari mikrokontroller yang akan dirancang. Sistem rangkaian yang akan dirancang diusahakan menggunakan rangkaian yang seringkas mungkin dan dengan sistem penataan kabel yang baik. ATMEGA16 mempunyai rangkaian eksternal yang relatif sedikit dibanding dengan mikrokontoler yang lain. Rangkaian eksternal yang dibutuhkan adalah sebagai berikut : 3 4 5 6
Rangkaian Clock Generator CPU Rangkaian Eksternal Reset Rangkaian Regulator Interfacing ke rangkaian luar (tergantung kebutuhan pemakai)
3.2.3.1 Rangkaian Clock Generator Mikrokontroller ATMEGA16 memiliki osilator internal (on chip oscillator) yang dapat digunakan sebagai sumber clock bagi CPU. Untuk mengunakan osilator internal diperlukan sebuah kristal antara pin XTAL1 dan XTAL2 serta kapasitor ke ground seperti gambar.
Gambar 3.5 Rangkaian osilator kristal Untuk kristal dapat digunakan frekuensi dari 6 sampai 12 MHz. Namun pada rangkaian kali ini digunakan kristal dengan frekuensi 11.0562 MHz. Sedangkan untuk kapasitor dapat digunakan kapasitor dengan nilai 27 pF sampai 33 pF.
3.2.3.2 Perencanaan dan Pembuatan Rangkaian Power Supply Rangkaian power supply yang digunakan untuk memberi tegangan pada mikrokontroller harus stabil, dan mempunyai arus yang cukup sehingga tidak terjadi drop tegangan pada mikrokontroller dan rangkaian yang lain. Supply tunggal yang dibutuhkan mikrokontroller sebesar +5 Volt. Pada pemilihan baterai dipilih yang relatif kecil sehingga tidak terlalu membebani daya dari motor penggerak, disamping itu diperlukan baterai yang mempunyai kapasitas daya yang cukup besar untuk mensupply rangkaian secara keseluruhan. Tegangan yang digunakan untuk mensupply mikrokontroller diambilkan dari baterai yang terpasang pada badan robot. Supaya tegangan dari baterai tersebut sesuai dengan tegangan kerja dari mikrokontroller, maka perlu diberikan rangkaian regulator tegangan yang berfungsi menurunkan tegangan baterai dari 12 Volt atau 9 Volt menjadi 5 Volt. Regulator yang digunakan adalah IC 7805 seperti yang ditunjukkan oleh gambar berikut:
Gambar 3.6 Rangkaian power supply untuk mikrokontroller Pemasangan kapasitor juga diperlukan, karena power supply dari baterai biasanya mendapatkan noise dari rangkaian. Untuk menghindari kerusakan supply yang disebabkan oleh hubungan singkat, maka perlu diberi kapasitor polar dengan nilai besar. 3.2.3.3 Perancangan Interfacing I/O Rangkaian I/O dari mikrokontroller mempunyai kontrol direksi yang tiap bit dapat dikonfigurasikan secara individual, maka dalam pengkonfigurasian I/O yang digunakan ada yang berupa operasi port ada pula yang dikonfigurasi tiap bit I/O. Berikut ini akan diberikan
konfigurasi dari I/O mikrokontroller tiap bit yang ada pada masingmasing port yang terdapat pada mikrokontroller. 1.
Port A
Pada PortA ini berfungsi sebagai ADC internal dari mikrokontroller, dimana dua bit awal dari PortA yaitu PortA.0 dan PortA.1 difungsikan sebagai input dari sensor inframerah (SHARP GP2D12). 2 Port B Port B digunakan sebagai input dari sensor garis dan sensor inframerah pendeteksi ada tidaknya lawan yang berada di sebelah kiri, dan belakang robot. 3. Port C Port C digunakan sebagai input dari sensor garis dan sensor inframerah pendeteksi ada tidaknya lawan yang berada di sebelah kanan robot. 4. Port D Port yang digunakan pada Port D ini antara lain : Port D.0 sebagai arah motor kanan Port D.1 sebagai PWM untuk motor kanan Port D.2 sebagai PWM untuk motor kiri Port D.3 sebagai arah motor kiri 3.2.3
Perencanaan dan Pembuatan Driver Motor
Driver motor digunakan sebagai penghubung antara mikrokontroller ke motor DC. Digunakan driver motor karena arus yang keluar dari mirokontroller tidak mampu mencukupi kebutuhan dari motor DC. Rangkaian utama dari driver motor DC ini terdiri dari mosfet, motor, dan optocoupler. Untuk rangkaian motor DC ditunjukkan pada gambar dibawah ini:
Gambar 3.7 Rangkaian Driver Motor
3.2.4
Gambar Desain Robot Sumo
Gambar 3.8 Gambar Robot Sumo Bagian Bawah Pada robot sumo ini menggunakan roda belakang yang cukup besar agar didapatkan daya dorong serta torsi yang cukup kuat untuk mendorong lawan. Masing-masing dari roda belakang ini digerakkan dengan motor DC. Pada bagian depan bawah digunakan satu roda depan
yang berfungsi sebagai roda bebas agar bisa bergerak kemana saja. Untuk mendeteksi adanya garis digunakan empat sensor deteksi garis, dimana dua sensor garis terletak pada bagian bawah depan dan dua yang lain terletak pada bagian bawah belakang .
Gambar 3.9 Gambar Robot Sumo Bagian Atas Untuk robot sumo bagian atas terdapat enam sensor deteksi serangan lawan dari belakang samping kiri maupun samping kanan. Masing-masing sisi robot terdapat dua sensor. Sedangkan untuk bagian depan sensor juga terdapat dua sensor untuk mendeteksi pergerakan lawan. Sensor tersebut mengikuti robot lawan kemanapun robot lawan pergi. Selain sensor, pada bagian atas robot juga terdapat mikrokontroller dan buzzer. Robot sumo ini menggunakan pelindung bagi sensor depan agar terhindar dari kemungkinan tumbukan yang terjadi dengan robot lawan. Kemudian robot ini dikemas seperti yang ditunjukkan oleh gambar berikut ini.
Gambar 3.10 Gambar Robot Sumo Keseluruhan
3.3 PERANCANGAN DAN PEMBUATAN PERANGKAT LUNAK Sistem perangkat lunak pada proyek akhir ini adalah mengaktifkan sensor dan menggerakkan motor dengan menggunakan CodeVision AVR. Flowchart pembuatan software ditunjukkan pada gambar berikut:
START
Init sensor, init motor,init pwm
Start scan
Ada garis?
T
Y
Menghindar
Ada lawan?
Y Serang
Y Ada garis?
Y
T T
Ada lawan?
Y Menang
Gambar 3.11 Flowchart Pembuatan Program
BAB IV PENGUJIAN DAN ANALISIS Dalam Bab ini akan dibahas tentang pengujian berdasarkan perencanaan dari sistem yang dibuat. Pengujian ini dilaksanakan untuk mengetahui kehandalan dari sistem dan untuk mengetahui apakah sudah sesuai dengan perencanaan: 1. Pengujian Sensor Inframerah (SHARP GP2D12) 2. Pengujian Sistem Minimum AVR 3. Pengujian Driver Motor DC 4.1 Pengujian Sensor Inframerah (SHARP GP2D12) 4.1.1 Pengujian Jarak Deteksi Sensor Inframerah (SHARP GP2D12) menggunakan LCD Pada bagian ini diuji tentang jarak minimum dan maksimum yang dapat dijangkau oleh sensor inframerah (SHARP GP2D12). Robot ini menggunakan dua buah sensor inframerah (SHARP GP2D12). Untuk mengetahui jarak yang dapat dijangkau oleh sensor ini digunakan LCD. Dari LCD dapat diketahui data yang dikeluarkan oleh sensor. Berikut merupakan potongan program untuk menguji sensor tersebut melalui LCD. #include // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x12 #endasm #include convert(unsigned char b) { unsigned char adc; adc=b/100; lcd_putchar(48+adc); b%=100; adc=b/10; lcd_putchar(48+adc); b%=10; lcd_putchar(48+b); }
void tampil_adc() { lcd_gotoxy(0,0); lcd_putsf("ired 0="); convert(adc_data[0]); lcd_gotoxy(0,1); lcd_putsf("ired 1="); convert(adc_data[1]); } while (1) { tampil_adc(); // Place your code here }; Gambar 4.1 Listing Program Pengujian SHARP GP2D12 melaui LCD Setelah program diatas didownload dan diuji, karena tipe sensor yang digunakan sama maka dapat diambil salah satu dari kedua sensor tersebut. Data dari sensor tersebut ditunjukkan pada tabel berikut. Tabel 4.1 Tabel Pengujian Sensor SHARP GP2D12 dengan LCD Jarak (Cm) 3 5 7 10 15 20 25 30 35 40 45 50 55
Data (Dec) 54 85 100 132 95 72 60 50 46 38 34 31 28
60 65 70 75 80 85 90 95 100 105
26 25 22 20 19 17 10 8 5 1
Dari tabel tersebut dapat diketahui bahwa pada jarak 10 cm sensor ini berada pada nilai yang tertinggi yaitu 132, sedangkan sebelum jarak 10 cm data yang ditunjukkan oleh sensor ini turun lagi ini dapat diartikan bahwa data yang ditunjukkan sebelum jarak 10 cm kacau. Ini berarti bahwa sensor ini dapat mendeteksi suatu objek dimulai dari 10 cm. 4.1.2 Pengujian Sudut Elevasi Sensor Inframerah (SHARP GP2D12) menggunakan LED Pada bagian ini sensor inframerah (SHARP GP2D12) akan diuji seberapa besar sudut elevasi yang dapat dijangkau oleh sensor ini. Untuk mengetahui pelebaran sudut elevasi digunakan simulasi led, apabila diberi suatu halangan dan halangan tersebut digeser kekiri maupun kekanan akan diketahui bahwa halangan tersebut masih terdeteksi oleh sensor atau tidak, hal tersebut bisa diketahui dari nyala led. Berikut merupakan potongan program untuk mengetahui sudut elevasi sensor. #include <mega16.h> unsigned char sens; flash unsigned char xx[2]={0x01,0x02}; flash unsigned char yy[2]={0xfe,0xfd}; flash unsigned char zz[2]={23,23};
if(adc_data[input_index] < zz[input_index]) sens|=xx[input_index]; else sens&=yy[input_index]; while (1) { // Place your code here PORTD=(((sens>>1)|(sens<<1))&3); //PORTD=sens&0x03; } Gambar 4.2 Listing Program Pengujian SHARP GP2D12 melaui ADC
y x
x
Masih didalam range deteksi sensor Diluar range deteksi sensor
SHARP GP2D12
Gambar 4.3 Pengujian Sudut Elevasi Sensor Bila suatu objek masih berada didalam range deteksi sensor maka led masih menyala, namun bila objek berada diluar range deteksi sensor maka led mati. Ternyata setelah dilakukan percobaan ini dapat diketahui bahwa sudut elevasi (y) dari sensor ini adalah 400 dan jarak maksimum yang dapat dijangkau oleh sensor adalah 100 cm tegak lurus dari sensor. 4.2 Pengujian Sistem Minimum AVR Pada pengujian sistem minimum AVR digunakan led sebagai output. Pada sistem minimum ini diberikan program tentang nyala led yang bergeser. Bila program ini didownload kedalam sistem minimum dan sistem tersebut bisa menjalankan program yang diberikan maka bisa dikatakan sistem minimum tersebut bisa digunakan untuk rangkaian selanjutnya. Berikut merupakan potongan program untuk menguji sistem minimum AVR.
#include <mega16.h> #include <delay.h> // Declare your global variables here void main(void) { unsigned char led; while (1) { // Place your code here led=0x01; while(led!=0x80) { led<<=1; PORTD=~led; delay_ms(500); } led=0x01; //PORTB=0; };
Gambar 4.4 Pengujian Sistem Minimum Avr
Gambar 4.5 Led Bergeser Ke Kiri
4.3 Pengujian Driver Motor DC Pada pengujian driver motor DC ini akan diketahui apakah motor tersebut mengalami suatu masalah (error) atau tidak. Tabel berikut merupakan arah pergerakan dari motor DC:
Mosfet 1
Mosfet 2
Mosfet 3
Mosfet 4
A
B
Gambar 4.6 Driver Motor DC Pada point A dan B akan diberi logika 1 atau 0 untuk mengetahui arak pergerakan dari motor. Tabel berikut menunjukkan pergerakan dari motor. Tabel 4.2 Tabel Pengujian Driver Motor DC A B Gerakan Motor 0 0 Tidak bergerak 0 1 Maju 1 0 Mundur 1 1 x (Short) Dari tabel diatas dapat diketahui bahwa motor akan bergerak apabila nilai dari A atau B adalah 1, sedangkan motor tidak bergerak apabila nilai A dan B adalah 0. Apabila A bernilai 1 maka mosfet 1 dan mosfet 4 on sehingga motor bergerak mundur, sedangkan B bernilai 1 maka mosfet 2 dan mosfet 3 on sehingga motor bergerak maju. Bila nilai A dan B bernilai 1 maka keempat mosfet on dan dapat terjadi short sehingga motor bisa bergerak maju atau mundur tergantung pada program yang dibuat.
4.4 Pengujian Sistem Secara Keseluruhan Pada pengujian sistem secara keseluruhan ini akan diuji bagaimana sensor bekerja bila ada halangan didepan robot. Pada gambar berikut menunjukkan pergerakan robot bila ada halangan didepan kiri robot.
(a)
(b)
Gambar 4.7 Robot Sumo Bergerak Ke Kiri Bila robot mendeteksi halangan berada disebelah kiri seperti yang ditunjukkan oleh gambar 4.7 (a) maka robot akan bergerak kekiri seperti ditunjukkan oleh gambar 4.7 (b).
(a)
(b)
Gambar 4.8 Robot Sumo Bergerak Ke Kanan Bila robot mendeteksi halangan berada disebelah kanan seperti yang ditunjukkan oleh gambar 4.8 (a) maka robot akan bergerak kekanan seperti ditunjukkan oleh gambar 4.8 (b).
Robot mendeteksi adanya halangan yang berada didepan atau bisa dikatakan juga bahwa kedua sensor yang berada dibagian depan robot mendeteksi adanya halangan maka robot akan bergerak maju dengan cepat hingga mendorongnya keluar arena. Gambar 4.9 (a) menunjukkan kedua sensor mendeteksi adanya halangan yang berada didepan robot. Gambar 4.9 (b) menunjukkan bahwa robot bergerak maju dengan cepat.
(a)
(b) Gambar 4.9 Robot Sumo Menyerang
Tabel berikut menunjukkan sensor yang aktif dan tindakan yang harus dilakukan Robot Sumo. Tabel 4.3 Pergerakan Robot Sumo Ketika Ada Lawan Sensor Kiri Sensor Kanan Pergerakan Robot 0 0 Scan 0 1 Bergerak Ke Kiri 1 0 Bergerak Ke Kanan 1 1 Serang Jika halangan masih berada didalam range pendeteksian sensor, maka halangan tersebut masih dapat terdeteksi, namun jika halangan sudah berada diluar range pendeteksian sensor maka halangan tidak dapat terdeteksi. Dengan menggunakan dua sensor yang berada dibagian depan robot, maka robot dapat mendeteksi dimana halangan tersebut berada. Apabila sensor yang terletak sebelah kiri yang mendeteksi adanya suatu halangan maka robot akan bergerak kekiri, begitu juga bila sensor yang terletak disebelah kanan robot mendeteksi adanya halangan maka robot akan bergerak kekanan. Apabila halangan yang berada disebelah kanan maupun kiri robot terdeteksi maka robot akan bergerak
tidak terlalu cepat untuk mendekati halangan tersebut, namun bila robot mendeteksi bahwa halangan sudah berada didepan robot (kedua sensor mendeteksi adanya halangan) maka robot akan bergerak cepat kemudian mendorongnya hingga keluar arena. Apabila robot lawan berada disebelah kanan maupun disebelah kiri maka hanya diikuti (tidak diserang), robot lawan akan diserang ketika robot lawan berada tepat didepan.
Robot Lawan
(a)
(b)
Gambar 4.10 Robot Sumo Menghindar dari Serangan Lawan Apabila robot diserang dari sebelah kanan seperti yang ditunjukkan oleh gambar 4.10 (a) maka robot akan menghindar dengan bergerak maju kemudian bergerak kekanan. Sedangkan apabila robot diserang dari sebelah kiri ditunjukkan oleh gambar 4.11 (a) maka robot juga akan menjauh dari serangan lawan dengan bergerak maju kemudian bergerak ke kekiri seperti yang ditunjukkan oleh gambar 4.11 (b).
Robot Lawan
(a)
(b)
Gambar 4.11 Robot Sumo Menghindar dari Serangan Lawan
Namun bila robot diserang dari belakang maka robot akan bergerak maju kemudian robot tersebut berputar.
(a)
Robot Lawan
(b)
Gambar 4.12 Robot Sumo Menghindar dari Serangan Lawan Apabila robot diserang oleh robot lawan dari sisi belakang, samping kiri dan kanan, maka robot tersebut akan menghindar dengan menjauh dari robot lawan. Tabel berikut menunjukkan pergerakan dari Robot Sumo ketika diserang oleh robot lawan dari sebelah kiri, kanan, dan belakang.
Tabel 4.4 Pergerakan Robot Sumo Menghindar dari Serangan Lawan Sensor yang Aktif Pergerakan Robot Sensor Kiri Maju, Putar Ke Kiri Sensor Kanan Maju, Putar Ke Kanan Sensor Belakang Maju Untuk pergerakan robot sumo dalam mendeteksi adanya garis maka robot tersebut akan bergerak seperti yang ditunjukkan oleh gambar berikut. Pada gambar 4.13 (a) sensor garis yang terletak disebelah kiri robot mendeteksi adanya garis, maka robot akan bergerak seperti yang ditunjukkan oleh gambar 4.13 (b). Robot tersebut bergerak mundur kemudian robot tersebut berputar serong kekanan kemudian kembali ke tengah arena.
(a)
(b)
Gambar 4.13 Robot Sumo Bergerak Menghindar dari Garis Begitu juga untuk sensor yang terletak disebelah kanan depan robot bila mendeteksi adanya garis seperti yang ditunjukkan oleh gambar 4.14 (a) maka robot akan bergerak mundur kemudian berputar serong ke kiri dan akhirnya bergerak ke tengah arena seperti yang ditunjukkan oleh gambar 4.14 (b).
(a)
(b)
Gambar 4.14 Robot Sumo Bergerak Menghindar dari Garis
Apabila kedua sensor garis depan mendeteksi adanya garis maka robot akan bergerak mundur kemudian robot akan berputar dan kembali ke tengah arena seperti yang ditunjukkan oleh gambar dibawah ini.
(a)
(b)
Gambar 4.15 Robot Sumo Bergerak Menghindar dari Garis
(a)
(b)
Gambar 4.16 Robot Sumo Bergerak Menghindar dari Garis
Pada gambar tersebut menunjukkan bahwa apabila sensor garis yang berada dibelakang robot mendeteksi adanya garis maka robot akan bergerak maju ketengah arena.
Tabel 4.5 Pergerakan Robot Sumo Ketika Mendeteksi Garis Sensor yang Aktif Pergerakan Robot Sensor Garis Depan Kiri Mundur, Putar Kanan Sensor Garis Depan Kanan Mundur, Putar Kiri Kedua Sensor Garis Depan Mundur, Putar Balik Sensor Garis Belakang Maju Jadi bila robot mendeteksi adanya garis maka robot akan bergerak sejauh mungkin agar robot tidak keluar arena. Sensor garis ini berfungsi sebagai prioritas utama dari sensor-sensor yang lainnya. Apabila sensor lain mendeteksi adanya halangan maka robot akan bergerak menghindar, namun apabila sensor lain mendeteksi adanya halangan dan pada saat yang sama sensor garis mendeksi adanya garis maka robot diperintahkan untuk menghindar dari garis terlebih dahulu. Karena posisi yang paling utama adalah bertahan di atas arena.
BAB V PENUTUP 5.1 KESIMPULAN Setelah melakukan perencanaan dan pembuatan sistem kemudian dilakukan pengujian dan analisis, maka dapat diambil beberapa kesimpulan tentang sistem kerja dari rangkaian. Yaitu sebagai berikut: 1. Berdasarkan pengukuran pada jarak dibawah 10 cm sensor akan mengalami error, karena bidang pantul terlalu dekat dengan sensor. 2. Sudut elevasi yang dapat dijangkau oleh sensor inframerah adalah 400, dengan jarak maksimum 100 cm lurus dari sensor. Sedangkan jarak minimum yang dijangkau oleh sensor inframerah adalah 10 cm. 3. Posisi robot lawan yang berada disebelah kanan maupun disebelah kiri hanya diikuti (tidak diserang). Robot akan menyerang robot lawan ketika posisi robot lawan tepat didepan (saat kedua sensor mendeteksi). 5.2 SARAN Dalam pembuatan Robot Sumo berbasis mikokotroller ATMega masih banyak kekurangan yang perlu diperbaiki. Untuk menyempurnakan alat sehingga pengguna memanfaatkan alat ini dengan baik. Ada beberapa bagian dari sistem yang perlu dilakukan penyempurnaan: 1. Untuk mendapatkan torsi cukup kuat untuk mendorong robot lawan maka dapat digunakan gear yang mempunyai kapasitas isi lebih banyak. 2. Agar robot dapat bergerak lebih cepat maka dapat digunakan ukuran ban yang lebih besar.
DAFTAR PUSTAKA [1] Eddo Mahardika,“ Alat Ukur Jarak dengan Metode Pergeseran Fase Berbasis Mikrokontroller ”, Politeknik Elektronika Negeri Surabaya-ITS, Surabaya, 2004. [2] Yusman Hakim Akhmadi,“ Robot Pengukur Jarak ”, Politeknik Elektronika Negeri Surabaya-ITS, Surabaya, 2002. [3] ……,”AVR ATMEGA 16”, www.alldatasheet.com [4] .........,”Building a Mini-Sumo Robot”, David Cook, www.robotroom.com [5] ........,”Robot project”, Cherry Blossom, www.seattlerobotics.org [6] .........,”Robot Sumo Rules”, David Cook, www.robotroom.com [7] ……,”Sharp GP2D12”, www.parallax.com [8] ........,”Sumo Robot Wrestling”, Dr. Mato Hattori, www.ridgesoft.com
LAMPIRAN A /********************************************************* This program was produced by the CodeWizardAVR V1.24.0 Standard Automatic Program Generator © Copyright 1998-2003 HP InfoTech s.r.l. http://www.hpinfotech.ro e-mail:[email protected] Project : Version : Date : 6/19/2006 Author : BEE Company : Comments : Chip type : ATmega16 Program type : Application Clock frequency : 11.059200 MHz Memory model : Small External SRAM size : 0 Data Stack size : 256 *********************************************************/ #include <mega16.h> #include <delay.h> /************SENSOR GARIS DEPAN & BELAKANG************/ #define belakang_kanan_garis #define depan_kanan_garis #define belakang_kiri_garis #define depan_kiri_garis
PINC.2 PINC.3 PINB.5 PINB.4
/*****SENSOR DETEKSI LAWAN KIRI+KANAN+BELAKANG*****/ #define kiri_belakang_ired #define kiri_depan_ired #define belakang_kiri_ired
PINB.7 PINB.6 PINB.3
#define belakang_kanan_ired #define kanan_belakang_ired #define kanan_depan_ired
PINB.0 PINC.0 PINC.1
/********************TURN ON BUZZER*********************/ #define buzzer
PORTC.7
/************AKTIFKAN MOTOR KIRI & KANAN***************/ #define out_pwmr #define out_pwml #define dir_kanan #define dir_kiri
PORTD.1 PORTD.2 PORTD.0 PORTD.3
unsigned char se,x=0,pwmr,pwml,sensor; flash unsigned char aa[2]={0x01,0x02}; flash unsigned char bb[2]={0xfe,0xfd}; flash unsigned char cc[2]={60,60}; // Alphanumeric LCD Module functions /*#asm .equ __lcd_port=0x15 #endasm #include */ // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Reinitialize Timer 0 value TCNT0=0xC0; x++; // Place your code here //if(x==255){x=0;} if(x>=pwmr)out_pwmr=1; else out_pwmr=0; if(x>=pwml)out_pwml=1; else out_pwml=0; }
#define FIRST_ADC_INPUT 0 #define LAST_ADC_INPUT 1 unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1]; #define ADC_VREF_TYPE 0x20 // ADC interrupt service routine // with auto input scanning #pragma savereginterrupt [ADC_INT] void adc_isr(void) { #asm push r26 push r27 push r30 push r31 in r30,sreg push r30 #endasm register static unsigned char input_index=0; // Read the 8 most significant bits // of the AD conversion result adc_data[input_index]=ADCH; // Select next ADC input if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT)) input_index=0; ADMUX=(FIRST_ADC_INPUT|ADC_VREF_TYPE)+input_index; // Start the AD conversion ADCSRA|=0x40; if (adc_data[input_index]>cc[input_index]) se|=aa[input_index]; else se&=bb[input_index]; #asm pop r30 out sreg,r30 pop r31 pop r30 pop r27 pop r26 #endasm }
#pragma savereg+ // Declare your global variables here /* void mundur_serong_ka() { dir_kanan=0;dir_kiri=0;pwmr=100;pwml=200; delay_ms(100); } void mundur_serong_ki() { dir_kanan=0;dir_kiri=1;pwmr=200;pwml=100; delay_ms(100); } */ void maju_kiri_putar() { dir_kanan=1;dir_kiri=1;pwmr=200;pwml=200; delay_ms(100); dir_kanan=1;dir_kiri=0;pwmr=150;pwml=100; delay_ms(100); } void maju_kanan_putar() { dir_kanan=1;dir_kiri=0;pwmr=200;pwml=200; delay_ms(100); dir_kanan=0;dir_kiri=0;pwmr=100;pwml=150; delay_ms(100); } void maju_putar_ki() { dir_kanan=1;dir_kiri=1;pwmr=200;pwml=200; delay_ms(100); dir_kanan=1;dir_kiri=0;pwmr=150;pwml=100; delay_ms(100); }
void maju_putar_ka() { dir_kanan=1;dir_kiri=1;pwmr=200;pwml=200; delay_ms(100); dir_kanan=0;dir_kiri=1;pwmr=100;pwml=150; delay_ms(100); } void mundur_banting_ka() { dir_kanan=0;dir_kiri=1;pwmr=150;pwml=150; delay_ms(100); dir_kanan=0;dir_kiri=0;pwmr=100;pwml=150; delay_ms(100); } void maju_dikit() { dir_kanan=1;dir_kiri=0;pwmr=200;pwml=200; delay_ms(100); } void mundur_banting_ki() { dir_kanan=0;dir_kiri=1;pwmr=150;pwml=150; delay_ms(100); dir_kanan=1;dir_kiri=1;pwmr=150;pwml=100; delay_ms(100); }
void serang() { sensor=((se>>1)|(se<<1))&3; //PORTD=~(((se>>1)|(se<<1))&3);//sensor; while(sensor==3) { sensor=((se>>1)|(se<<1))&3; dir_kanan=1;dir_kiri=0;pwmr=255;pwml=255; if(!belakang_kanan_garis){maju_dikit();}
else if(!depan_kanan_garis){mundur_banting_ki();} else if(!belakang_kiri_garis){maju_dikit();} else if(!depan_kiri_garis){mundur_banting_ka();} } } void banting_kiri() { int i; for(i=0;i<=100;i++) { sensor=((se>>1)|(se<<1))&3; //PORTD=~(((se>>1)|(se<<1))&3);//sensor; dir_kanan=1;dir_kiri=1;pwmr=60;pwml=100; if(!belakang_kanan_garis){maju_dikit();} else if(!depan_kanan_garis){mundur_banting_ki();} else if(!belakang_kiri_garis){maju_dikit();} else if(!depan_kiri_garis){mundur_banting_ka();} if(sensor==3)serang(); delay_ms(1); } } void banting_kanan() { int i; for(i=0;i<=100;i++) { sensor=((se>>1)|(se<<1))&3; //PORTD=~(((se>>1)|(se<<1))&3);//sensor; dir_kanan=0;dir_kiri=0;pwmr=100;pwml=60; if(!belakang_kanan_garis){maju_dikit();} else if(!depan_kanan_garis){mundur_banting_ki();} else if(!belakang_kiri_garis){maju_dikit();} else if(!depan_kiri_garis){mundur_banting_ka();} if(sensor==3)serang(); delay_ms(1); } }
void scan_sensor_ired() { if (!kiri_belakang_ired){maju_kiri_putar();} else if (!kiri_depan_ired){maju_kiri_putar();} else if (!kanan_belakang_ired){maju_kanan_putar();} else if (!kanan_depan_ired){maju_kanan_putar();} else if (!belakang_kiri_ired){maju_putar_ka();} else if (!belakang_kanan_ired){maju_putar_ka();} else if (!belakang_kiri_garis){maju_dikit();} else if (!depan_kiri_garis){mundur_banting_ka();} else if (!belakang_kanan_garis){maju_dikit();} else if (!depan_kanan_garis){mundur_banting_ki();} //else if((kiri_belakang_ired==kiri_depan_ired)==0) {mundur_serong_ki();} //else if((kanan_belakang_ired==kanan_depan_ired)==0) {mundur_serong_ka();} //else if((belakang_kanan_ired==belakang_kiri_ired)==0) {maju_putar_ka();} //else if((belakang_kanan_garis==belakang_kiri_garis)==0) {maju_dikit();} //elseif((depan_kanan_garis==depan_kiri_garis)==0) {mundur_banting_ka();} } void scan() { //if(!belakang_kanan_garis){maju_dikit();} //else if(!depan_kanan_garis){mundur_banting_ki();} //if(!belakang_kiri_garis){maju_dikit();} //else if(!depan_kiri_garis){mundur_banting_ka();} //{ int i; for(i=0;i<=60;i++) //for 120 trus delay 1 = 1 detik { sensor=((se>>1)|(se<<1))&3; //scan maju //PORTB=~(((se>>1)|(se<<1))&3);//sensor; dir_kanan=1;dir_kiri=0;pwmr=100;pwml=100; if(!belakang_kanan_garis){maju_dikit();} else if(!depan_kanan_garis){mundur_banting_ki();}
else if(!belakang_kiri_garis){maju_dikit();} else if(!depan_kiri_garis){mundur_banting_ka();} if(sensor==1)banting_kiri(); if(sensor==2)banting_kanan(); if(sensor==3)serang(); scan_sensor_ired(); delay_ms(1); } for(i=0;i<=150;i++) { sensor=((se>>1)|(se<<1))&3; //scan kanan //PORTB=~(((se>>1)|(se<<1))&3);//sensor; dir_kanan=0;dir_kiri=0;pwmr=60;pwml=80; if(!belakang_kanan_garis){maju_dikit();} else if(!depan_kanan_garis){mundur_banting_ki();} else if(!belakang_kiri_garis){maju_dikit();} else if(!depan_kiri_garis){mundur_banting_ka();} if(sensor==1)banting_kiri(); if(sensor==2)banting_kanan(); if(sensor==3)serang(); scan_sensor_ired(); delay_ms(1); } for(i=0;i<=200;i++) { sensor=((se>>1)|(se<<1))&3; //scan kiri //PORTB=~(((se>>1)|(se<<1))&3);//sensor; dir_kanan=1;dir_kiri=1;pwmr=100;pwml=60; if(!belakang_kanan_garis){maju_dikit();} else if(!depan_kanan_garis){mundur_banting_ki();} else if(!belakang_kiri_garis){maju_dikit();} else if(! depan_kiri_garis){mundur_banting_ka();} if(sensor==1)banting_kiri(); if(sensor==2)banting_kanan(); if(sensor==3)serang(); scan_sensor_ired(); delay_ms(1); }
for(i=0;i<=150;i++) { sensor=((se>>1)|(se<<1))&3; //scan balik kanan //PORTB=~(((se>>1)|(se<<1))&3);//sensor; dir_kanan=0;dir_kiri=0;pwmr=60;pwml=80; if(!belakang_kanan_garis){maju_dikit();} else if(!depan_kanan_garis){mundur_banting_ki();} else if(!belakang_kiri_garis){maju_dikit();} else if(!depan_kiri_garis){mundur_banting_ka();} if(sensor==1)banting_kiri(); if(sensor==2)banting_kanan(); if(sensor==3)serang(); scan_sensor_ired(); delay_ms(1); } //} } void main(void) { //int i; // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTB=0xFF; DDRB=0x00;
// Port C initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTC=0x7F; DDRC=0x80; // Port D initialization // Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T PORTD=0x09; DDRD=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 11059.200 kHz // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x01; TCNT0=0xC0; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00;
OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 172.800 kHz // ADC Voltage Reference: AREF pin // ADC High Speed Mode: On // ADC Auto Trigger Source: Free Running // Only the 8 most significant bits of // the AD conversion result are used ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE; ADCSRA=0xEE; SFIOR&=0x0F; SFIOR|=0x10;
// LCD module initialization //lcd_init(16); // Global enable interrupts #asm ("sei") while (1) { // Place your code here scan(); //tampil_lcd(); //PORTB=~(((se>>1)|(se<<1))&3);//sensor; //pwmr=100; //for(i=0;i<=120;i++){PORTB=0;delay_ms(1);} //for(i=0;i<=120;i++){PORTB=1;delay_ms(1);} //pwml=0; //dir_kanan=1; } }
LAMPIRAN B
Tampak Kiri Atas
Tampak Kanan Atas
Tampak Belakang
Tampak Bawah
Tampak Depan
RIWAYAT PENULIS
Nama Alamat
: :
Hobby Email Telepon
: : :
Rejeki Agung Saputro Jarsongo I/1 Gunungsari Surabaya ( 60229 ) Jawa Timur Jalan2, sepak bola, nge-game, n.….. [email protected] +6285646234485 ( 031 ) - 5670938
( .. ^_^.. !)v
Riwayat pendidikan formal yang pernah ditempuh : SD Negeri Jajartunggal Surabaya ( 1991 - 1997 ) SLTP Negeri 16 Surabaya ( 1997 - 2000 ) SMU Negeri 13 Surabaya ( 2000 - 2003 ) D3 Jurusan Teknik Elektronika, Politeknik Elektronika Negeri Surabaya, Institut Teknologi Sepuluh Nopember Surabaya (ITS).