PROYEK AKHIR
RANCANG BANGUN ROBOT PEMANCING IKAN ( SOFTWARE )
AGUS PURWANTO 7103 030 038
Dosen Pembimbing : Ir. Ratna Adhil, MT NIP. 131 756 642 Reesa Akbar, ST NIP. 132 297 802
JURUSAN TEKNIK ELEKTRONIKA POLITEKNIK ELEKTRONIKA NEGERI SURABAYA SURABAYA 2006 1
RANCANG BANGUN ROBOT PEMANCING IKAN ( SOFTWARE ) Oleh : AGUS PURWANTO 7103 030 038 Proyek Akhir Ini Diajukan Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Ahli Madya (A.Md.) di Politeknik Elektronika Negeri Surabaya Institut Teknologi Sepuluh Nopember Surabaya Disetujui oleh : Tim Penguji Proyek Akhir
Dosen Pembimbing
1. Bambang Sumantri, ST NIP. 132 303 762
1. Ir. Ratna Adhil, MT NIP. 131 756 642
2. Bima Sena Bayu D, SST NIP. 132 232 762
2. Reesa Akbar, ST NIP. 132 297 802
3. One Setiaji, ST NIP. 132 232 765 Surabaya, Agustus 2006 Mengetahui Ketua Jurusan Teknik Elektronika
Ir. Dedid Cahya H, MT NIP. 131 694 603
2
Abstrak
Teknologi robot saat ini sudah berkembang sangat pesat. Hal ini ditunjukkan dengan munculnya robot – robot dengan berbagai keperluan seperti robot serangga, robot ular, dan robot laba – laba yang digunakan untuk keperluan mata–mata. Selain itu di negara Jepang perkembangan teknologi menghasilkan robot–robot yang bersifat atraktif dan menghibur. Robot yang dihasilkan di Jepang antara lain robot yang menyerupai manusia ( Humanid Robot ) seperti Asimo, Qrio, dan robot binatang peliharaan ( pet robot ) seperti robot Anjing ( Aibo ), robot Kucing. Pada proyek akhir kali ini kami akan membuat robot pemancing ikan yang dapat memancing ikan yang berada di dalam air. Besarnya ikan dapat diprediksi dari besarnya hentakan pada ujung kail. Kami menggunakan sensor accelerometer ADXL202 untuk mendeteksi adanya hentakan kail yang disebabkan oleh tarikan ikan. Accelerometer ADXL202 mampu mengukur nilai hentakan antara -2 gravitasi sampai 2 gravitasi. Jika nilai hentakan lebih besar dari 1 gravitasi atau lebih kecil dari -1 gravitasi maka robot akan melakukan tindakan pemancingan dan nilai hentakan kail, no, serta waktu akan disimpan di database. Mikrokontroller AT89S51 berfungsi sebagai pusat kontrol robot yang terhubung dengan driver motor untuk memberikan tanggapan berupa penggulungan senar dan penarikan ikan ke tepi. Kata kunci :Robot Pemancing Ikan, AT89S51, Accelerometer ADXL202
3
Abstract
Nowdays robot technologies has been developing rapidly. We can see this from the appearances of many kind robots likes insect robots, snake robots, and spider robots that’s used for spy needed. Beside that’s in Japan country developing of technology has result robots that’s has attractive character and entertaint. Robot thas’s result in Japan is humanoid robots likes asimo, Qrio, and pet robots likes dog robots (aibo), cat robots. In this final project we will make fisher robot that it’s can to angle fish in the water. The size of fish can be predicted from vibration of the fishing-rod. This robots is completed by accelerometer ADXL202 sensor to detect vibration of fishing-rod that it’s coused by pulling of fish. ADXL202 capable to measure value of vibrations between -2 gravitation to 2 gravitation. If the value of vibration more than 1 gravitatiton or less than -1 gravitation the robot will roll the string and pull the stick to the edge. Value of the fishing-rod vibration will be sent to the database. Vibration will be sent to the microcontroller AT89S51 as a center of the robot control that it’s connected to the motor drivers to get response as a rolling of the string and pulling of the fish to the edge. Key Word: Fisher Robot, AT89S51, Accelerometer ADXL 202
4
KATA PENGANTAR
Puji syukur ke hadirat Allah SWT atas segala nikmat dan hidayahnya selama ini sehingga penulis bisa menyelesaikan proyek akhir yang berjudul: Rancang Bangun Robot Pemancing Ikan (Software) Pembuatan Proyek Akhir ini merupakan salah satu syarat untuk memperoleh gelar Ahli Madya (A. Md.) di Politeknik Elektronika Negeri Surabaya – Institut Teknologi Sepuluh Nopember. Harapan kami sebagai penulis semoga karya ini dapat memberikan manfaat dimasa kini dan yang akan datang bagi perkembangan ilmu pengetahuan, riset dan teknologi pada umumnya dan politeknik khususnya. Penyusun menyadari bahwa karya ini masih jauh dari sempurna karena keterbatasan-keterbatasan dan hambatan yang ada, dan semoga dapat dikembangkan lagi guna meraih hasil yang jauh lebih optimal lagi. Oleh karena itu karya proyek akhir ini masih perlu untuk dikembangkan lagi pada masa mendatang.
Surabaya,
5
Agustus 2006
UCAPAN TERIMA KASIH Bahwa terselesaikannya Proyek Akhir ini bukanlah kerja individu penulis sendiri, tetapi mendapatkan banyak bantuan dari berbagai pihak, untuk itu penulis menyampaikan terima kasih kepada: 1. Allah SWT, atas segala nikmat yang dikaruniakanNya untuk bisa menyelesaikan Proyek Akhir ini. 2. Rasullah SAW, sehingga dalam mengerjakan nProyek Akhir ini penulis dapat tetap menahan diri walaupun agak futur dalam melaksanakan sunnah beliau. 3. Keluargaku tercinta: • Pak dan Mak yang telah membimbing, memberikan dukungan, dan kasih sayang yang besar kepadaku. Apa jadinya anakmu ini tanpa bimbinganmu. I love You .. • Kakak-kakakku,yang selalu memberikan nasehat, dukungan dan do’a kepadaku, Mas Wi, Mbak Mi, Mbak Eni, Mas Anam, dan Mas Iwan, Jazakillah . 4. Dr.Ir Titon Dutono, M.Eng. selaku direktur Politeknik Elektronika Negeri Surabaya-ITS. 5. Ibu Ratna Adhil, MT dan Bapak Reesa Akbar, ST selaku pembimbing dari penulis yang telah banyak memberikan masukan dan dorongan hingga terselesaikanya Proyek Akhir ini. 6. Bapak Paulus, ST dan Bapak Hari Oktaviano, ST yang telah banyak memberikan bantuan berupa materi dan telah meminjamkan alat – alat lab untuk keperluan riset kami. 7. Bang Udin Harun Al Rasyid, ST yang telah membimbing dan memberikan taujih selama tiga tahun di PENS-ITS 8. Seluruh staf pengajar dan karyawan Politeknik Elektronika Negeri Surabaya-ITS 9. Partner TA ku, Muhammad Muslim yang telah banyak membantu 10. Teman – teman kontrakan yang telah menjadi partnerku baik dalam suka maupun duka, Gay, Ho ho, Gemboel, dan Mbah Udin 11. Semua penghuni lab Ogrish, yang selalu menghiburku 12. Rekan- rekan Alhamra yang telah menjadi rekan seperjuanganku selama di ITS
6
13. Seluruh pengurus UKKI periode 2004/2005 dan periode 2005/2006 yang telah menjadi rekan seperjuanganku dalam berda’wah di PENS-ITS. 14. Staf tim buletin periode 2005/2006 yang telah banyak membantu dalam penerbitan buletin di PENS-ITS. 15. Semua pihak yang telah membantu penulis dan tidak dapat disebutkan semuanya satu persatu. Semoga Allah SWT memberikan limpahan rahmat dan hidayahnya atas segala kebaikan dan semoga kita semua selalu dalam lindungan serta tuntunan-Nya.
7
DAFTAR ISI Hal HALAMAN JUDUL ....................................................... i LEMBAR PENGESAHAN ............................................. ii ABSTRAK ...................................................................... iii ABSTRACT .................................................................... iv KATA PENGANTAR ..................................................... v UCAPAN TERIMA KASIH ........................................... vi DAFTAR ISI .................................................................. viii DAFTAR GAMBAR ...................................................... x DAFTAR TABEL .......................................................... xi
BAB I PENDAHULUAN ................................................ 1.1 LATAR BELAKANG .................................... 1.2 TUJUAN ........................................................ 1.3 PERMASALAHAN........................................ 1.4 BATASAN MASALAH .................................. 1.5 RUANG LINGKUP......................................... 1.6 METODOLOGI............................................... 1.7 SISTEMATIKA PENULISAN ........................
1 1 2 2 2 2 2 3
BAB II TEORI PENUNJANG ......................................... 2.1 MIKROKONTROLLER AT89S51 .................. 2.1.1 Perlengkapan Dasar Mikrokontroller ...... 2.1.2 Struktur Memori..................................... 2.2.3 Konfigurasi Pin At89S51........................ 2.1.5 Reset...................................................... 2.1.6 Instruksi Set Dari At89S51..................... 2.1.7 Timer/Counter........................................
5 5 5 7 11 12 12 24
2.2 ACCELEROMETER ADXL202...................... 28 2.3 MICROSOFT VISUAL BASIC ....................... 30 2.3.1 Pemrograman Visual Basic 6.0 ............... 30 2.3.2 Komponen MS-Visual Basic 6.0............. 30 2.4 KOMUNIKASI SERIAL ................................. 31
8
2.4.1 Pengaksesan Port Serial pada VB ........... BAB III PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK ..................................... 3.1 UMUM............................................................ 3.2 PERANCANGAN PROGRAM MIKROKONTROLLER................................. 3.3 PERANCANGAN PROGRAM VISUAL BASIC ........................................................... BAB IV PENGUJIAN DAN ANALISA........................... 4.1 PENGUJIAN PROGRAM PEMBACA SENSOR ........................................................ 4.2 PENGUJIAN PROGRAM VISUAL BASIC .... 4.3 PENGUJIAN SISTEM KESELURUHAN........
32 33 33 34 38 40 40 45 47
BAB V PENUTUP .......................................................... 49 5.1 KESIMPULAN ............................................... 49 5.2 SARAN.......................................................... 49 DAFTAR PUSTAKA ...................................................... 50 LAMPIRAN 1 LAMPIRAN 2 LAMPIRAN 3 DAFTAR RIWAYAT HIDUP
9
DAFTAR GAMBAR Hal Gambar 2.1 Gambar 2.2 Gambar 2.3 Gambar 2.4 Gambar 2.5 Gambar 2.6 Gambar 2.7 Gambar 2.8 Gambar 2.9 Gambar 2.10 Gambar 2.11 Gambar 2.12 Gambar 2.13 Gambar 2.14 Gambar 3.1 Gambar 3.2 Gambar 3.3 Gambar 3.4 Gambar 3.5 Gambar 3.6 Gambar 4.1 Gambar 4.2 Gambar 4.3 Gambar 4.4 Gambar 4.5
Alamat RAM internal dan FLASH PEROM ........... Konfigurasi bit pada PSW...................................... Konfigurasi pin AT89S51 ...................................... Program Status Word............................................. Konfigurasi bit pada register IE.............................. Konfigurasi bit pada register IP .............................. Konfigurasi bit register TCON ............................... Konfigirasi bit pada register TMOD ...................... Timer/Counter 1 bekerja dalam mode 0, sebagai T/C 13-bit.................................................. Timer/Counter 1 pada mode 2, sebagai T/C 8bit auto-reload........................................................ Timer/Counter pada mode 3, sebagai 2 timer/counter 8 bit,................................................. Blok Diagram ADXL202E..................................... Output ADXL202E................................................ Tampilan dasar VB 6.0 .......................................... Konfigurasi sistem ................................................. Flowchart Program Mikrokontroller ....................... Timer mode 1 ........................................................ Flowchart Tindakan Robot. .................................... Flowchart Program Visual Basic ............................ Form Antarmuka Pada Visual Basic. ...................... Pengujian program pembaca sensor........................ Pengujian input pada Visual Basic.......................... Pengujian program penampil grafik........................ Pengujian program koneksi ke database.................. Mekanik dan hardware Robot Pemancing Ikan . .....
10
7 8 11 13 22 23 24 25 27 27 28 28 29 30 33 34 35 37 38 39 43 45 46 46 47
DAFTAR TABEL Hal Tabel 2.1 Tabel 2.2 Tabel 2.3 Tabel 2.4 Tabel 2.5 Tabel 2.6 Tabel 2.7 Tabel 2.8 Tabel 2.9 Tabel 2.10 Tabel 2.11 Tabel 2.12 Tabel 2.13 Tabel 2.14 Tabel 2.15 Tabel 4.1 Tabel 4.2
Deskripsi Fungsi Alternatif Pin Port 3........................ Isi Register setelah Reset ........................................... Program Status Word ................................................ Pemilihan bank register ............................................. Instruksi Aritmatika .................................................. Instruksi Logika ........................................................ Instruksi Data Transfer yang mengakses Internal Data Memory ............................................................ Instruksi Data Transfer Yang Mengakses External Data Memory ............................................................ Instruksi Pembacaan Tabel ........................................ Instruksi-Instruksi Boolean ........................................ Jump Tanpa Syarat (Unconditional Jumps) ................ IE (Interrupt Enable).................................................. IP (Interrupt Priority)................................................. TCON (Timer Control).............................................. Mode Timer .............................................................. Pengujian Pembacaan Sensor..................................... Pengujian Robot keseluruhan.....................................
11
11 12 13 14 16 16 17 18 18 19 21 23 24 25 26 44 48
BAB I PENDAHULUAN 1. 1 LATAR BELAKANG Teknologi robot saat ini sudah berkembang sangat pesat. Hal ini ditunjukkan dengan munculnya robot – robot dengan berbagai keperluan seperti robot serangga, robot ular, dan robot laba – laba yang digunakan untuk keperluan mata–mata. Selain itu di negara Jepang perkembangan teknologi menghasilkan robot–robot yang bersifat atraktif dan menghibur. Robot yng dihasilkan di jepang antara lain robot yang menyerupai manusia ( Humanid Robot ) seperti Asimo, Qrio, dan robot binatang peliharaan ( pet robot ) seperti robot Anjing ( Aibo ), robot Kucing. Wijaya Adinata sudah mengembangkan robot pemisah hasil tangkapan ikan yang dapat mengenali karakteristik ikan berupa warna, luas, dan posisi ikan. Robot pemisah hasil tangkapan ikan tersebut digunakan untuk mengelompokkan ikan – ikan yang sudah tertangkap, sedangkan untuk menangkap ikan masih menggunakan cara tradisional yaitu memancing ikan dengan pancing tradisional. Pada proyek akhir kami ini, kami akan mengembangkan ’ Robot Pemancing Ikan’. Bentuk nyata dari robot tersebut adalah robot yang dilengkapi sensor percepatan (accelerometerADXL202) sebagai alat pengindera robot sehingga robot dapat mengetahui jika ada ikan yang terpancing. Robot pemancing ikan digunakan untuk memancing ikan di dalam air secara otomatis, sehingga dapat membantu manusia untuk melakukan suatu pekerjaan memancing. Dengan adanya robot ini maka orang yang memancing tidak perlu menunggu pancingnya, karena secara otomatis robot akan memancing ikan dan menarik ikan ke tepi. 1.2 TUJUAN Adapun tujuan dari pembuatan tugas akhir ini dapat dibedakan menjadi tujuan umum dan tujuan khusus, yaitu: 1.2.1 TUJUAN UMUM Yaitu untuk memenuhi persyaratan akademis menyelesaikan studi pada jurusan D3 Teknik Elektronika di Politeknik Elektronika Negeri Surabaya. 1.2.2 TUJUAN KHUSUS
12
Tujuan dari proyek akhir ini adalah untuk membuat sebuah robot yang dapat membantu pekerjaan manusia. Dalam hal ini adalah robot pemancing ikan. Perancangan ini meliputi bagian perangkat lunak (software) dan perangakat keras (hardware) dimana untuk subjudul ini membahas bagian algoritma dan softwarenya saja. Diharapkan robot ini mampu memancing ikan yang berada di dalam kolam. 1.3 PERMASALAHAN Robot yang dapat memancing ikan harus memiliki kemampuan mengetahui besar gaya tarik ikan yang terpancing untuk selanjutnya diambil suatu tindakan penarikan ikan ke tepi kolam. Oleh karena itu robot dilengkapi dengan sensor percepatan dimana hasil dari deteksi sensor akan diproses dengan menggunakan mikrokontroller AT89S51. Output dari mikrokontroller berupa deskripsi percepatan hentakan kail. Nilai percepatan tersebut kemudian akan dibandingkan dengan data base, dimana hasil dari perbandingan tersebut berupa aksi penarikan kail. 1.4 BATASAN MASALAH Robot pemancing ikan adalah robot yang memiliki fungsi memancing ikan di dalam air. Robot berupa robot statis dengan sistem gerak mikrokontroller AT89S51 dan sensor berupa accelerometer. Lingkup yang menjadi batasan masalah adalah : - Air kolam tidak terlalu deras - Kolam bersih / tidak ada yang menghambat mata kail - Tidak ada benda yang menghambat pergerakan robot 1.5 RUANG LINGKUP Pembahasan yang berkenan dengan pembuatan proyek akhir ini adalah materi – materi yang berhubungan dengan teori – teori yang terdapat pada : a. Microsoft Visual Basic 6.0 b. Mikrokontroller AT89S51 Dimana cabang – cabang ilmu diatas saling berkaitan sehingga akan terlihat sebagai system yang saling berhubungan, oleh karena itu sangat diperlukan pemahaman yang dalam dan pengertian yang baik pada cabang – cabang ilmu diatas.
13
1.6 METODOLOGI Untuk mendapatkan hasil yang maksimal maka diperlukan langkah – langkah dan metode pengerjaan Tugas Akhir secara terperinci. Langkah – langkah tersebut adalah sebagai berikut: Ø Study literatur § Pada tahap ini pekerjaan yang dilakukan adalah study tentang sensor accelerometer, Mikrokontroller AT89S51, interfacing komunikasi serial RS 232, dan Visual Basic. Ø Perancangan Dan Implementasi Perangkat Lunak § Pada tahap ini dilakukan perancangan program baik pada mikrokontroller AT89S51 maupun pada Visual Basic 6.0. § Evaluasi dan pengukuran kinerja § Pengujian dan analisa data-data dengan situasi sebenarnya pada robot § Penulisan laporan tugas akhir 1.7 SISTEMATIKA PEMBAHASAN Sistematika pembahasan dari penyusunan proyek akhir ini direncanakan sebagai berikut : BAB I
PENDAHULUAN Bab ini berisi tentang pendahuluan yang terdiri dari latar belakang, permasalahan, batasan masalah, maksud dan tujuan serta sitematika pembahasan dari proyek akhir ini.
BAB II
TEORI PENUNJANG Bab ini membahas mengenai teori – teori yang berkaitan dengan penyelesaian proyek akhir ini.
BAB III
PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK Pengerjaan Proyek Akhir ini dibagi menjadi dua bagian yaitu: bagian perancangan Program Visual Basic 6.0 (Aplikasi) dan perancangan program asembly AT89S51.
BAB IV
PENGUJIAN DAN ANALISA
14
Dari program yang telah dibuat maka dilakukan pengujian dan analisa terhadap masing – masing fungsi dari blok diagram, pada bab ini diuraikan mengenai kinerja dari masing – masing blok serta flowchart dan listing program tersebut. BAB V
PENUTUP Bab ini berisi kesimpulan dari pembahasan pada perencanaan serta analisa pengujian perangkat lunak atau program yang diperoleh. Untuk lebih meningkatkan hasil akhir yang lebih baik maka diberikan juga saran – saran untuk perbaikan serta penyempurnaan tugas akhir ini.
15
BAB II TEORI PENUNJANG 2.1 MIKROKONTROLLER AT89S51 Sering kita mendengar istilah mikrokomputer, mikroprosesor, dan mikrokontroler. Mikroprosesor adalah bagian CPU (central processing unit) dari sebuah komputer, tanpa memori, I/O, dan periferal yang dibutuhkan oleh suatu sistem lengkap. Supaya dapat bekerja, mikroprosesor memerlukan perangkat pendukung seperti RAM, ROM dan I/O. Bila sebuah miroprosesor dikombinasi dengan I/O dan memori (RAM/ROM) akan dihasilkan sebuah mikrokomputer. Sebagai terobosan mikrokomputer ini dapat juga dibuat dalam bentuk single chip yaitu Single Chip Microcomputer (SCM) yang selanjutnya disebut sebagai mikrokontroler. Perbedaan yang menonjol antara mikrokomputer dengan mikrokontroler (SCM) adalah pada penggunaan perangkat I/O dan media penyimpan program. Bila mikrokomputer menggunakan disket atau harddrive lainnya, maka mikrokontroler menggunakan EPROM sebagai penyimpan programnya. Sedangkan keuntungan mikrokontroler dibandingkan dengan mikroprosesor adalah pada mikrokontroler sudah terdapat RAM dan peralatan I/O pendukung sehingga tidak perlu menambahkannya. 2.1.1 PERLENGKAPAN DASAR MIKROKONTROLER 2.1.1.1 CPU Unit pengolah pusat (CPU) terdiri atas dua bagian yaitu unit pengendali (CU) serta unit aritmatika dan logika (ALU). Fungsi utama unit pengendali adalah untuk mengambil, mengkode, dan melaksanakan urutan instruksi sebuah program yang tersimpan dalam memori. Sedangkan unit aritmatika dan perhitungan bertugas untuk menangani operasi perhitungan maupun bolean dalam program. 2.1.1.2 Alamat Pada mikroprosesor/mikrokontroler, apabila suatu alat dihubungkan Dengan mikrokontroler maka harus ditetapkan terlebih dahulu alamat (address) dari alat tersebut. Untuk menghindari terjadinya dua alat bekerja secara ersamaan yang mungkin akan meyebabkan kerusakan.
16
2.1.1.3 Data CPU mikrokontroler AT89S51 mempunyai lebar bus data 8 bit. Pena data 8 bit (D0…D7) ini terletak didalam chip karena jumlah pena luar pada mikrokontroler terbatas. Pena untuk bus data dimultipleks dengan alamat A0…A7 pada port 0, sehingga sering juga disebut sebagai AD0…AD7. 2.1.1.4 Pengendali Selain bus alamat dan bus data mikroprosesor/mikrokontroler dilengkapi juga dengan bus pengendali (control bus), yang fungsinya untuk Menyerempakkan operasi mikroprosesor/mikrokontroler dengan operasi rangkaian luar. 2.1.1.5 Memori Mikroprosesor/mikrokontroler memerlukan memori untuk menyimpan program/data. Ada beberapa tingkatan memori, diantaranya register internal, memori utama, dan memory massal. Sesuai dengan urutan tersebut waktu aksesnya dari yang lebih cepat ke yang lebih lambat. 2.1.1.5.1 RAM RAM (Random Acces Memory) adalah memori yang dapat dibaca atau ditulisi. Data dalam RAM akan terhapus bila catu daya dihilangkan. Oleh karena itu program mikrokontroller tidak disimpan dalam RAM. Ada dua teknologi yang dipakai untuk membuat RAM, yaitu RAM static dan RAM dynamic. 2.1.1.5.2 ROM ROM (Read Only Memory) merupakan memori yang hanya dapat dibaca. Data dalam ROM tidak akan terhapus meskipun catu daya dimatikan. Oleh karena itu ROM dapat digunakan untuk menyimpan program. Ada beberapa jenis ROM antara lain ROM murni, PROM, EPROM, EAPROM. ROM adalah memori yang sudah diprogram oleh pabrik, PROM dapat diprogram oleh pemakai sekali saja. Sedangkan EPROM merupakan PROM yang dapat diprogram ulang. 2.1.1.6 Input / Output I/O dibutuhkan untuk melakukan hubungan dengan piranti di luar sistem. I/O dapat menerima data dari alat lain dan dapat pula mengirim data ke alat lain. Ada dua perantara I/O yang dipakai, yaitu
17
piranti untuk hubungan serial (UART) dan piranti untuk hubungan paralel (PIO). 2.1.2 TRUKTUR MEMORI FF RAM ADDRESS
80 7F
7FF
SPECIAL FUNCTION
RAM INTERNAL
PROGRAM ADDRESS
FLASH PEROM
00 00 0
Gambar 2.1 Alamat RAM internal dan FLASH PEROM1 Struktur memori AT89S51 terdiri atas: Ø RAM Internal, memori sebesar 128 byte yang biasa digunakan untuk menyimpan variabel atau data yang bersifat sementara. Ø Special Function Register (register fungsi khusus), memori yang berisi register-register yang mempunyai fungsi – fungsi khusus yang disediakan oleh mikrokontroller tersebut ,seperti timer, serial dan lain-lain. Ø Flash PEROM,memori yang digunakan untuk menyimpan intruksi – intruksi MCS51. AT89S51 mempunyai struktur memori yang terpisah antara RAM internal dan Flash PEROM-nya. Seperti tampak pada gambar 2.2, RAM internal dialamati oleh RAM address register (register alamat RAM) sedangkan flash PEROM dialamati oleh program address register (register alamat program). Sehingga walaupun RAM internal dan flash PEROM mempunyai alamat awal yang sama namun secara fisik kedua memori tersebut tidak saling berhubungan. 2.1.2.1 RAM Internal RAM internal terdiri atas: Ø Register Bank AT89S51 mempunyai delapan buah register yang terdiri atas R0 hingga R7. Kedelapan buah register ini selalu terletak pada alamat 00h hingga 07h pada setiap kali system direset. Namun 1 Datasheet AT89S51, www.atmel.com, hal 2
18
posisi R0 hingga R7 dapat dipindah ke bank 1 (08sampai dengan 0fh) bank 2 (10h sampai dengan 17h) atau bank 3 (18h sampai dengan 1fh) dengan mengatur bit rs0 dan rs1. Ø Bit Addressable RAM RAM pada alamat 20h hingga 2fh dapat diakses secara pengalamatan bit. Setiap bit dalam area ini dapat diset, clear, AND dan OR. Ø RAM Keperluan Umum RAM keperluan umum dimulai dari alamat 30h hingga 7fh dan dapat diakses dengan pengalamatan langsung maupun tak langsung. 2.1.2.2 Register Fungsi Khusus AT89S51 mempunyai 21 special function register (Register Fungsi Khusus) yang terletak diantara alamat 80h hingga FFh. Register ini terdiri dari : Ø Accumulator Register ini terletak pada alamat E0H. hampir semua operasi aritmatik dan operasi logika selalu menggunakan register ini. Untuk proses pengambilan dan pengiriman data ke memori eksternal juga diperlukan register ini. Ø Port AT89S51 mempunyai empat buah port, yaitu port 0, port 1, port 2, dan port 3 yang terletak pada 80h, 90h, A0h dan B0h. Semua port ini dapat diakses dengan pengalamatan secara bit sehingga dapat dilakukan perubahan output pada tiap-tiap pin dari port ini tanpa mempengaruhi pin-pin yang lainnya. Ø Program Status Word Program sttus word (PSW) terletak pada alamat D0H yang terdiri atas beberapa bit sebagai berikut : PSW.7………………………………………...PSW.0
•
Gambar 2.2 konfigurasi bit pada PSW2 Flag Carry Flag carry terletak di alamat D7H yang mempunyai fungsi sebagai pendeteksi kelebihan pada operasi penjumlahan atau pengurangan.
2 Ibid, hal
19
•
Ø Ø
Ø
Ø
Ø
Flag Auxiliary Carry Flag auxiliary carry akan selalu diset pada saat proses penjumlahan terjadi carry dari bit 3 sampai 4. • Flag 0 Flag 0 digunakan untuk tujuan umum sesuai dengan kebutuhan pemakai. • Bit Pemilih Register Bank Digunakan untuk menentukan lokasi dari register bank (R0 hingga R7) pada memori. • Flag Overflow Flag overflow diset apabila pada operasi aritmatik menghasilkan bilangan yang lebih besar daripada 128 atau lebih kecil dari -128. • Bit Pariti Diset jika jumlah bit 1 dalam accumulator adalah ganjil dan akan clear jika jumlah bit 1 dalam accumulator adalah genap. Register B Digunakan bersama accumulator untuk proses aritmatik, selain digunakan untuk register biasa. Stack Pointer Merupakan sebuah register 8 bit yang terletak dialamat 81H. Isi dari stack pointer ini merupakan alamat dari data yang disimpan di stack. Proses-proses yang berhubungan dengan stack ini dilakukan oleh instruksi-instruksi PUSH, POP, CALL, LCALL. Data Pointer Data pointer (DPTR) merupakan register 16 bit yang terletak pada alamat 82H untuk DPL dan 83H untuk DPH. DPTR biasa digunakan untuk mengakses source code ataupun data yang terletak di memori eksternal. Register Timer AT89S51 mempunyai dua buah 16 bit Timer / Counter, yaitu Timer 0 dan Timer 1. Timer 0 terletak di alamat 8AH untuk TL0 dan 8CH untuk TH0 dan Timer 1 terletak dialamat 8BH untuk TL1 dan 8DH untuk TH1. Register Port Serial AT89S51 mempunyai sebuah on chip serial port yang dapat digunakan untuk berkomunikasi secara serial. Buffer untuk proses pengiriman maupun pengambilan data terletak pada
20
register SBUF pada alamat 99H. Sedangkan untuk mengaturmode serial dilakukan dengan mengatur isi dari register SCON di alamat 98H. Ø Register Interrupsi AT89S51 mempunyai lima buah interupsi dengan dua level prioritas interupsi. Interupsi akan selalu nonaktif setiap kali sistem direset. Register yang berhubungan dengan interrupt adalah Interrupt Enable Register (IE) untuk mengatur keaktifan tiap-tiap interrupt dan Interrupt Priority Register (IP) pada alamat B8H Ø Register Kontrol Power Terdiri atas SMOD yang digunakan untuk melipat dua baudrate dari port serial, dua buah bit untuk flag fungsi umum pada bit ketiga dan kedua , Power Down (PD) bit dan Idle (IDL) bit. 2.1.2.3 FLASH PEROM AT89S51 mempunyai 4 Kb Flash PEROM (Progammable and Erasable Read Only Memory), yaitu ROM yang dapat ditulis ulang. Flash PEROM dalam AT89S51 menggunakan Atmel’s High-Density Non Volatile Technology yang mempunyai kemampuan untuk ditulis ulang hingga 1000 kali dan berisikan perintah standart MCS51. Program yang ada pada FLASH PEROM akan dijalankan jika pada saat sistem di-reset, pin EA/VP berlogika satu sehingga mikrokontroler aktif berdasarkan program yang ada pada FLASH PEROMnya. Namun jika pin EA/VP berlogika 0,mikrokontroller aktif berdasakan program yang ada memori eksternal.
21
2.1.3 KONFIGURASI PIN AT89S51 Tabel 2.1 Deskripsi Fungsi Alternatif Pin Port 33
Gambar 2.3 Konfigurasi pin AT89S514
3 Ibid, hal 5
4 Ibid, hal 2
22
2.1.4 RESET Reset dapat dilakukan secara manual maupun otomatis saat power diaktifkan (Power on Reset). Saat terjadi reset isi dari register akan berubah sesuai yang ada pada Tabel 2.2 Tabel 2.2 Isi Register setelah Reset 5
Reset terjadi dengan adanya logika 1 selama minimal 2 cycle pada kaki RST. Setelah kondisi pin RST kembali low, mikrokontroler akan mulai menjalankan program dari alamat 0000H. Kondisi pada Internal RAM tidak terjadi perubahan selama reset. 2.1.5 INSTRUKSI SET DARI AT89S51 Instruksi set dari MCS-51 dioptimasi untuk aplikasi kontroler 8 bit. Instruksi set menghasilkan berbagai macam mode pengalamatan yang cepat saat mengakses internal RAM untuk melengkapi fasilitas byte Operasi pada data struktur yang kecil. Instruksi set menunjang operasioperasi bit seperti operasi Boolean. 2.1.5.1 Program Status Word Program Status Word (PSW) berisi beberapa status bit yang menunjukkan keadaan dari CPU. PSW, yang terlihat pada Gambar 2.4 berada pada SFR. PSW berisi Carry bit, Auxiliary Carry (untuk operasi BCD), dua buah bit select untuk bank register, Overflow flag, Parity bit 5 Paulus Andi Nalwan, teknik Antar Muka dan Pemrograman, hal. 5
23
dan dua buah flag yang dapat didefinisikan apa saja. Selain untuk melayani fungsi sebagai Carry pada proses aritmatika, bit Carry pada PSW juga juga bisa digunakan sebagai “akumulator” pada beberapa operasi Boolean.
Gambar 2.4 Program Status Word6 Tabel 2.3 Program Status Word7
Bit RS0 dan RS1 digunakan untuk memilih salah satu dari bank register. Lokasinya pada awal 32 byte RAM internal yang memiliki alamat dari 00H sampai 1FH. Register ini dapat diakses melalui symbol assembler (R0, R1, R2, R3, R4, R5, R6, dan R7). Pemilihan bank register diperlihatkan pada Tabel 2.4. Register R0 dan R1 dapat digunakan untuk pengalamatan tak langsung pada RAM internal. Sisa register lainya tidak dapat digunakan untuk pengalamatan tak langsung. Bit Parity akan selalu mengacu pada isi dari akumulator, apabila P=1 maka akumulator sedang berisi bilangan ganjil, sedangkan apabila P=0 maka akumulator sedang berisi bilangan genap. Isi Akumulator apabila dijumlahkan dengan bit Parity akan selalu menghasilkanbilangan genap. Dua buah bit pada PSW yang tidak terdefinisi, dapat digunakan sebagai “general purpose status flag”.
6 Ibid, hal 6
7 Ibid, hal 7
24
Tabel 2.4 Pemilihan bank register8
2.1.5.2 Mode Pengalamatan (Addressing Modes) Pada MCS-51 terdapat beberapa Mode Pengalamatan, yaitu : Ø Direct Addressing Pada direct addressing instruksi yang dikeluarkan secara spesifik akan menyebutkan alamat dari operand yang diproses. Hanya internal Data RAM dan SFR yang dapat diproses dengan menggunakan direct addressing ini. Ø Indirect Addressing Pada indirect addressing instruksi yang dikeluarkan akan menyebutkan sebuah register yang berisi alamat dari operand yang akan diproses. Baik internal maupun eksternal RAM dapat diakses menggunakan indirect addressing ini. Register alamat untuk 8 bit yang dapat dipakai adalah R0 dan R1 dari bank register, atau Stack Pointer. Pada pengalamatan 16 bit dapat menggunakan register DPTR (Data Pointer). Ø Register Instruction Bank register berisi register R0 sampai R7 yang dapat diakses dengan instruksi-instruksi tertentu dimana hanya akan melibatkan 3 bit register spesifik yang berisi opcode dari instruksi. Instruksi yang mengakses register dengan cara ini akan lebih efisien, karena mode ini akan menghilangkan bagian byte alamat. Saat instruksi ini dieksekusi, satu dari delapan register dari bank register akan diakses. Ø Register-Specific Instructions Beberapa instruksi secara spesifik menunjuk sebuah register, sebagai contoh, beberapa instruksi selalu mengoperasikan 8 Ibid, hal 8
25
akumulator, atau Data Pointer, jadi tidak ada bagian byte alamatyang langsung menunjuk register yang dibutuhkan. Ø Immediate Constants Sebuah konstanta dapat mengikuti opcode pada Program Memori, sebagai Contoh : MOV A,#100. Perintah di atas akan mengisi Akumulator dengan sebuah konstanta dengan nilai desimal 100, sedangkan untuk nilai Hexadesimalnya adalah 64H. Ø Indexed Addressing Hanya Program Memori yang dapat diakses secara indexed addressing dan operasi yang dilakukan hanyalah membaca. Mode pengalamatan ini dimaksudkan untuk membaca tabel pada Program Memori. Sebuah register berbasis 16 bit (dapat DPTR atau Program Counter) menunjuk awal dari tabel dan akumulator akan diset dengan entry dari tabel. Alamat dari tabel entry pada Program Memori dibentuk dengan menambahkan data dari Akumulator ke dalam basis pointer. 2.1.5.3 Instruksi-Instruksi Aritmatika Tabel 2.5 menunjukkan daftar instruksi-instruksi aritmatika yang dapat digunakan dalam MCS-51. Waktu Eksekusi pada tabel di bawah adalah dengan menggunakan asumsi frekuensi clock yang digunakan adalah 12 MHz. Pada operasi MUL AB, yang terjadi adalah hasil dari perkalian akan dianggap sebagai 16 bit, dimana 8 bit teratas diletakkan pada B, sedangkan 8 bit yang lain diletakkan pada ACC. Pada operasi DIV AB, data pada akumulator akan dibagi oleh bilangan pada B, kemudian hasil bagi dari operasi akan ditulis pada A, sedangkan sisa baginya akan ditulis pada B. Contoh penulisan operasi aritmatika ADD adalah sbb: ADD A,7FH (direct addressing) ADD A,@R0 (indirect addressing) ADD A,R7 (register addressing) ADD A,#127 (immediate constant)
26
Tabel 2.5 Instruksi Aritmatika9
2.1.5.4 Instruksi-Instruksi Logika Tabel 2.6 Instruksi Logika10
Pada tabel 2.6 ditunjukkan daftar intruksi-intruksi logika, yaitu instruksi yang digunakan pada operasi Boolean.
9 Ibid, hal 11
10 Ibid, hal 12
27
a) Internal RAM Tabel 2.7 menunjukkan perintah-perintah untuk memindahkan data di dalam internal memory. Transfer data di dalam SFR dan Internal RAM dapat dilakukan tanpa melalui Akumulator, untuk Upper 128 hanya dapat ditransfer melalui indirect addressing, sedangkan untuk transfer data melalui SFR hanya dapat dilakukan dengan direct addressing. Perhatikan bahwa pada semua piranti MCS-51, stack yang berada di dalam memory bergerak dari bawah ke atas. Instruksi PUSH mula-mula akan menaikkan nilai dari SP (Stack Pointer), kemudian akan mengkopi isi data ke dalam stack. Instruksi PUSH dan POP hanya digunakan dengan direct addressing untuk mengidentifikasi byte yang disimpan ataupun dikeluarkan. Namun demikian stack itu sendiri dapat diakses menggunakan indirect addressing dengan perantaraan register SP. Hal ini berarti stack dapat sampai pada Upper 128 jika dibutuhkan, namun tidak dapat masuk ke dalam daerah SFR Pada piranti yang tidak menggunakan Upper 128, bila SP menunjuk pada daerah Upper 128, maka data yang diberi operasi PUSH akan hilang begitu saja, sedangkan data yang dikenakan operasi POP akan tidak terdeteksi. Instruksi-instruksi Data Transfer meliputi sebuah perintah MOV 16 bit yang dapat digunakan untuk menginisialisasi Data Pinter (DPTR) untuk memeriksa tabel-tabel pada Program Memori, atau untuk akses 16 bit pada external Data Memory. Tabel 2.7 Instruksi Data Transfer yang mengakses Internal Data Memory11
. b) External RAM 11 Ibid, hal 14
28
Tabel 2.8 akan menunjukkan daftar dari instruksi-instruksi Data Transfer untuk mengakses external Data Memory. Pada instruksiinstruksi ini hanya digunakan mode Indirect addressing : Tabel 2.8 Instruksi Data Transfer Yang Mengakses External Data Memory12
Pada mode pengalamatan indirect di atas, Ri dapat berupa R1 ataupun R0 dari bank register. Kerugian dari menggunakan alamat 16 bit ini adalah jika hanya beberapa Kilo byte dari external RAM yang terlibat, sedangkan seluruh Port 2 akan digunakan sebagai bus alamat (bukan sebagai I/O Port). Perlu diperhatikan pada akses external Data RAM selalu menggunakan Akumulator baik sebagai source ataupun tujuan dari data. Untuk membaca dan menulis pada external RAM, sinyal baca/tulis hanya aktif pada saat pengeksekusian instruksi MOVX. Biasanya sinyal-sinyal ini tidak aktif dan jika dalam suatu program pin ini tidak diaktifkan sama sekali, maka pin ini dapat digunakan sebagai pin I/O ekstra. c) Look-up Tables Tabel 2.9 menunjukkan dua buah instruksi yang dapat memeriksa tabel pada Program Memori. Instruksi ini hanya dapat mengakses Program Memori. Jika tabel akan mengakses Program Memori eksternal, maka sinyal yang akan dikirim adalah PSEN. Tabel 2.9 Instruksi Pembacaan Tabel1313
12 Ibid, hal 17 13 Ibid, hal 18
29
Pada instruksi MOVC yang pertama pada tabel di atas dapat mengakomodasi tabel sampai dengan 256 entri, dengan nomor 0 sampai dengan 255. Nomor yang d2nginkan sebagai entry akan dimasukkan ke dalam Akumulator dan Data Pointer akan diset untuk menunjung pada awal dari tabel. MOVC A,@A+DPTR Perintah di atas akan mengkopi tabel entri yang d2nginkan ke dalam akumulator. Perintah MOVC yang lain bekerja dengan cara yang sama, kecuali PC (Program Counter) yang digunakan sebagai basis dari table dan tabel akan diakses melalui sebuah subrutin. 2.1.5.5 Instruksi-Instruksi Boolean Piranti-piranti MCS-51 berisi instruksi-instruksi Boolean yang cukup lengkap, instruksi-instruksi untuk prosesor Boolean yang diperlihatkan pada tabel 2.10 menyertakan operasi ANL dan ORL, tapi tidak XRL. Tabel 2.10 Instruksi-Instruksi Boolean14
Sebuah operasi XRL dapat dengan mudah d2mplementasikan ke dalam software, sebagai contoh untuk membentuk Exclusive OR 2 bit : C= Bit1. XRL . Bit2 Secara software dapat dilakukan sbb: MOV C, Bit1 JNB Bit2,OVER 14 Ibid, hal 19
30
CPL C OVER: ………… Mula-mula, bit1 akan dipindahkan ke Carry. Jika bit2=0 maka C sekarang berisi dari hasil akhir. Sebaliknya apabila bit2=1 maka C akan berisi hasil akhir. Semua bit pada PSW pengaksesannya adalah hanya dengan direct addressing, jadi Parity bit, atau flag-flag yang lain juga dapat digunakan untuk instruksi-instruksi bit test seperti di atas. 2.1.5.6 Relative Offset Alamat tujuan untuk lompatan ini dinyatakan oleh asembler dengan sebuah label atau dengan alamat dari program (subrutin) ini pada Program Memori. Bagaimanapun juga, alamat dari tujuan diproses dengan menggunakan byte Relative Offset. Hal ini ditandai dengan dijumlahkannya komplemen dua dari offset byte yang dijumlahkan ke Program Counter (PC) jika instruksi Jump dijalankan. Range dari perintah jump adalah dari -128 sampai 127 dihitung dari perintah Jump yang dijalankan itu. 2.1.5.7 Instruksi-Instruksi Jump Tabel 2.11 menunjukkan daftar dari perintah-perintah Jump tak bersyarat : Pada tabel hanya terdapat perintah “JMP addr”, padahal secara fakta terdapat tiga buah perintah lain, yakni : SJMP, LJMP dan AJMP, dimana memiliki perbedaan pada format dan alamat tujuan. Ø JMP adalah mnemonic umum yang biasa digunakan pada program, user biasanya tidak peduli lagi dengan bagaimana suatu perintah Jump itu dikodekan. Ø Perintah SJMP mengkodekan alamat tujuan sebagai relative offset, seperti yang telah dijelaskan di atas. Instruksi ini memiliki lebar 2 byte, berisi opcode dan byte relative offset. Perintah ini memiliki batas range dari -128 sampai 128 byte dihitung dari perintah SJMP itu dieksekusi.
31
Tabel 2.11 Jump Tanpa Syarat (Unconditional Jumps) 15
Ø Perintah LJMP mengkodekan alamat tujuan sebagai sebuah konstanta 16 bit. Instruksi ini terdiri atas 3 byte, berisi opcode dari instruksi serta dua byte alamat. Alamat tujuan dapat diletakkan di mana saja di dalam Program Memori yang 64 KB tersebut. Ø Perintah AJMP mengkodekan alamat tujuan sebagai konstanta 11 bit. Instruksi ini terdiri atas 2 byte, yang berisi opcode, dimana opcode itu sendiri berisi 3 bit yang merupakan bagian dari konstanta yang 11 bit itu, serta 1 byte alamat. Saat instruksi ini dieksekusi, 11 bit ini akan menggantikan 11 bit terendah dari PC, sedangkan 5 bit Teratas dari PC tetap pada tempatnya. Sehingga alamat tujuan paling tidak adalah masuk dalam range 2K dari instruksi AJMP. Pada semua kasus Jump, programmer mendefinisikan alamat tujuan dengan cara yang sama yaitu dengan label atau dengan konstanta 16 bit. Jika format yang diberikan oleh instruksi tidak mensupport jarak dari alamat tujuan, maka pesan “Destination out of Range” akan muncul di dalam file List pada saat kita mengkompilasi. Perintah ‘JMP @ A+DPTR’ juga menunjang instruksi-instruksi jump bersyarat. Alamat tujuan diproses pada saat penjumlahan antara DPTR 16 bit dengan Akumulator. Biasanya, DPTR diset dengan d2si alamat basis (acuan) , sedangkan akumulator d2si dengan index dari tabel. Pada pencabangan 5 jalur, sebagai contoh, sebuah integer 0 sampai 4 dapat dieksekusi seperti berikut: MOV DPTR,#JUMP_TABLE MOV A,INDEX_NUMBER 15 Ibid, hal 22
32
RL A JMP @A+DPTR Instruksi RL A mengkonversikan nomor index (0 sampai 4) menjadi bilangan ganjil dari 0 sampai 8, karena tiap entri pada tabel Jump memiliki lebar 2 byte : JUMP_TABLE: AJMP CASE_0 AJMP CASE_1 AJMP CASE_2 AJMP CASE_3 AJMP CASE_4 Pada Tabel 2.11 disebutkan sebuah instruksi tunggal “CALL addr”, namun Sebenarnya terdiri atas dua instruksi, yakni LCALL dan ACALL, dengan perbedaan format dari alamat subrutin yang diberikan oleh CPU. Ø CALL adalah mnemonic umum yang dapat digunakan oleh programmer tanpa mempedulikan bagaimana alamat tersebut dikodekan. Ø Instruksi LCALL menggunakan format alamat 16 bit dan subrutin yang dipanggil dapat terletak di mana saja di dalam Program Memori yang 64 KB. 2.1.5.8 Struktur Interupsi Inti dari 89S51 menyediakan 5 buah interupsi, yakni : 2 adalah interupsi eksternal, 2 adalah interupsi timer dan sebuah serial port interupsi. Di bawah akan dijelaskan lebih mendalam bagaimana memanfaatkan interupsi-interupsi ini: a. Interrupt Enable Tiap interupsi dapat secara individu dimatikan ataupun diaktifkan dengan menset bit yang sesuai pada SFR yang disebut IE (Interrupt Enable). (MSB)
(LSB) Gambar 2.5 Konfigurasi bit pada register IE16
16 Ibid, hal 24
33
Tabel 2.12 IE (Interrupt Enable) 17
Perlu d2ngat juga bahwa apabila bit EA pada IE diberi nilai 0, maka seluruh interupsi yang ada tak dapat digunakan. Enable bit =1 , enable semua interupsi Enable bit =0 , semua interupsi tak dapat digunakan (disable) b.
Interupsi Prioritas (Interrupt Priority) Tiap interupsi juga dapat secara individu diprogram untuk satu atau dua prioritas level dengan menset bit pada SFR yang bernama IP (Interrupt Priority). Sebuah Interupsi yang memiliki level Interupsi Prioritas yang rendah (low priority interrupt) dapat diganggu/d2nterupsi oleh interupsi yang memiliki prioritas yang tinggi (high priority interrupt). Sebuah high priority interrupt tidak dapat diganggu oleh interupsi manapun. (MSB)
(LSB)
Gambar 2.6 Konfigurasi bit pada register IP18 Priority bit = 1 dianggap high priority Priority bit = 0 dianggap low priority
17 Ibid, hal 24 18 Ibid, hal 25
34
Tabel 2.13 IP (Interrupt Priority)19
Jika dua buah interupsi diterima oleh kontroler secara bersamaan maka interupsi yang memiliki level prioritas yang lebih tinggilah yang akan dilaksanakan, namun apabila kedua interupsi tersebut memiliki level interupsi yang sama, maka urutan internal polling yang akan menentukan interupsi manakah yang akan dilayani. 2.1.6 TIMER/COUNTER Mikrokontroler 8051 mempunyai dua buah register Timer/Counter 16 bit , Timer 0 dan Timer 1. Pada saat sebagai Timer, register naik satu (increment) setiap satu cycle. Jika digunakan osilator 12 Mhz, maka satu cycle sama dengan 1/12 frekuensi osilator = 1_s. Pada saat sebagai counter, register naik satu (increment) pada saat transisi 1 ke 0 dari input eksternal , T0 atau T1. Pengontrol kerja Timer/Counter ada pada register timer control (TCON). Adapun definisi dari bit-bit pada timer control adalah sebagai berikut: (MSB)
(LSB)
Gambar 2.7 Konfigurasi bit register TCON20
19 Ibid, hal 25 20 Ibid, hal 26
35
Tabel 2.14 TCON (Timer Control)21
Apabila periode tertentu telah dilampaui, Timer/Counter segera menginterupsi mikrokontroler untuk memberitahukan bahwa perhitungan periode waktu telah selesai dilaksanakan. Periode waktu Timer/Counter secara umum ditentukan oleh persamaan berikut: a. Sebagai T/C 8 bit T = (255 – TLx) * 1_s Dimana TLx adalah isi register TL0 atau TL1. b. Sebagai T/C 16 bit T = (65535 – THx TLx) * 1_s THx = isi register TH0 atau TH1 TLx = isi register TL0 atau TL1 Pengontrol pemilihan mode operasi Timer/Counter ada pada register timer mode (TMOD) . Definisi bit-bitnya adalah sebagai berikut: MSB LSB
Gambar 2.8 Konfigirasi bit pada register TMOD22 21 Ibid, hal 27
36
Keterangan : • GATE Gate control set. Timer/Counter “x” akan aktif jika pin “INTx” high dan kondisi pin “TRx” sedang set. Gate control clear. Timer”x” akan aktif jika “TRx” set • C / T Timer/Counter Selector. Clear untuk mode Timer ( input dari internal clock ) dan set untuk mode Counter (input dari pin “Tx” ) • M1 Bit untuk memilih mode timer/counter • M0 Bit untuk memilih mode timer/counter • x = 0 atau 1. Tabel 2.15 Mode Timer23
Jika GATE = 1, timer dapat dikontrol oleh input dari luar (INT1), untuk fasilitas pengukuran lebar pulsa. Register 13 bit yang digunakan terdiri dari 8 bit dari TH1 dan 5 bit bawah dari TL1 ( bit 6,7,8 tidak digunakan ). Mengeset TR1 tidak akan menghapus isi register. Operasi pada mode 0 untuk Timer 0 dan Timer 1 adalah sama. Gambar 2.10 Timer/Counter 1 bekerja dalam mode 0, sebagai T/C 13- bit. Ø Mode 1 Mode 1 sama dengan mode 0 kecuali register timer akan bekerja dalam mode 16 bit.
22 Ibid, hal 29 23 Ibid, hal 30
37
Gambar 2.9 Timer/Counter 1 bekerja dalam mode 0, sebagai T/C 13-bit24 Ø Mode 2 Mode 2 menyusun register timer sebagai 8 bit counter (TL1) dengan kemampuan reload otomatis seperti yang ditunjukkan pada gambar 2.11. Overflow dari TL1 tidak hanya menset TF1 tetapi juga mengisi TL1 dengan isi TH1 yang d2si sebelumnya oleh software. Pengisian ulang ini tidak mengubah nilai TH1.
Gambar 2.10 Timer/Counter 1 pada mode 2, sebagai T/C 8-bit auto-reload25 Ø Mode 3 Dalam operasi mode 3 Timer 1 akan berhenti, hitungan yang sedang berjalan dipegang. Efeknya sama seperti mengatur TR1 = 0. Timer 0 dalam mode 3 membuat TL0 dan TH0 sebagai dua 24 Ibid, hal 32 25 Ibid, hal 33
38
counter terpisah. TL0 menggunakan kontrol bit timer 0 yaitu C/T, GATE, TR0, INT 0, dan TF0. TH0 berfungsi hanya sebagai timer dan mengambil alih penggunaan TR1 dan TF1 dari Timer1 dan sekarang TH0 mengontrol interupsi Timer 1.
Gambar 2.11 Timer/Counter pada mode 3, sebagai 2 timer/counter 8 bit26 2.2 ACCELEROMETER ADXL202E
Gambar 2.12 Blok Diagram ADXL202E27 26 Ibid, hal 33 27 Datasheet ADXL202E, www.analogdevice.com, hal 1
39
Adxl 202 memiliki harga murah, daya kecil, komplet dua arah percepatan dengan output digital. Berada dalam satu IC monolitik. Ini adalah pengembangan dari ADXL versi 202AQC/JQC. ADXL202E akan dapat mengukur percepatan dengan range +/-2 g pada skala penuh. Adxl 202e dapat mengukur percepatan dinamis (getaran) dan percepatan statis (gravitasi). Outputnya berupa tegangan analog atau signal digital yang memiliki duty cycle proporsional dengan percepatan. Output adxl dapat diukur langsung menggunakan mikroprosesor counter tanpa adc/dac atau logika lem. Periode duty cycle berkisar antara 5ms -10ms dengan single resistor(Rset). Noise ,mutlak dasar adalah 200 mikroakar Hz, mengijinkan signal dibawah 2g (bandwidth 60Hz) untuk dipecahkan. Bandwitdh accelerometer di atur oleh kapasitor Cx dan Cy pada pin kemiringan X dan Y. Analog output dapat dibentuk dengan menyaring output duty cycle. ADXL202 akan beroperasi pada tegangan supply 3-5.25V. Untuk lebih jelasnya berikut adalah gambar output dari accelerometer ADXL202E.
Gambar 2.13 Output ADXL202E28 Keterangan ‚ T1 T2 Duty cycle
= Panjang pulsa on cycle = Panjang cycle /periode = Rasio “on” cycle per total cycle.
28 Ibid, hal 8
40
2.3 MICROSOFT VISUAL BASIC 2.3.1 Pemrograman Visual Basic 6.0 MS Visual Basic 6.0 adalah bahasa pemrograman yang bekerja dalam lingkup MS-Windows secara optimal. Kemampuannya dapat dipakai untuk merancang program aplikasi yang berpenampilan seperti program lainnya berbasis MS-Windows. MS-Visual Basic 6.0 dapat memanfaatkan hamper semua kemudahan dan kecanggihan yang disediakan sistem operasi MS-Windows. Kemampuan MS-Visual Basic 6.0 secara umum adalah menyediakan komponen-komponen yang memungkinkan membuat program aplikasi yang sesuai dengan tampilan dan cara kerja MS-Windows. 2.3.2 Beberapa Komponen MS-Visual Basic 6.0 2.3.2.1 Project Project adalah program aplikasi itu sendiri yang berisi sekumpulan modul yang disimpan dalam file berakhiran .VBP. Pada jendela proyek terdapat 3 icon, yaitu View Code (digunakan untuk menampilkan jendela editor kode program), View Object (untuk menampilkan Form) dan Toggle Folders (untuk menampilkan folder tempat menyimpan file)
Gambar 2.14 Tampilan dasar VB 6.0
41
2.3.2.2 Form Form adalah suatu objek yang dipakai sebagai tempat bekerja program aplikasi. Form berbentuk jendela yang dapat diletakkan ke dalamnya objek-objek lain. 2.3.2.3 Toolbox Toolbox adalah kotak alat yang berisi icon-icon untuk memasukkan objek tertentu ke dalam jendela form. Toolbox ini otomatis akan tersedia ketika membuka aplikasi baru sesuai dengan kategori yang dipakai antara lain VB Enterprise Edition, Standard EXE, ActiveX EXE, ActiveX DLL, Data Project dan lain-lain 2.3.2.4 Properties Propereties digunakan untuk menentukan setting suatu objek. Suatu objek biasanya mempunyai beberapa property yang dapat diatur langsung dari jendela Properties atau melalui kode program. Setting property akan menentukan cara kerja dari objek yang bersangkutan saat program aplikasi dijalankan, misalnya menentukan warna objek, bingkai objek, pengambilan data dan lain-lain. 2.4 KOMUNIKASI SERIAL RS232 Komunikasi serial digunakan untuk mengirim data dari mikrokontroller ke PC dan sebaliknya dari PC ke mikrokontroller. Data dikirim secara bit per bit. Komunikasi ini dibagi menjadi dua yaitu komunikasi data serial secara sinkron dan secara asinkron. Pada komunikasi data secara sinkron pengiriman data ditandai dengan adanya clock, sedangkan komunikasi secara asinkron pengiriman data tidak disertai transfer clock. Pada PC komunikasi melalui port serial adalah asinkron dengan standart RS 232, dengan demikian harus terdapat suatu bautrate yang dibangkitkan oleh osilator yang terdapat pada masingmasing peripheral yang melakukan komunikasi yaitu pada sisi transmitter dan sisi receiver harus sama, bautrate adalah kecepatan pengiriman data pada komunikasi serial asinkron dengan satuan bit per second (bps). Komunikasi serial pada PC dikerjakan oleh UART (Universal Asynchronous Receiver/Transmiter), UART mengubah data paralel menjadi data serial dan menerima data serial yang kemudian diubah kembali menjadi data parallel.
42
2.4.1 Pengaksesan Port Serial Pada Visual Basic Pada Visual Basic pengaksesan dapat dilakukan secara langsung melalui register UART atau menggunakan kontrol MSComm. Pada proyek akhir ini Pengaksesan menggunakan kontrol MSComm. Montrol MSComm menyediakan fasilitas komunikasi antara program aplikasi yang telah dibuat dengan port serial untuk mengirim atau menerima data melalui port serial. Setiap MSComm hanya menangani satu port serial. Properti MSComm Berikut ini adalah beberapa properti MSComm yang sering digunakan : CommPort : Digunakan untuk menentukan nomor port serial yang akan dipakai. Setting : Digunakan untuk menentukan baut rate, parity, jumlah bit data dan jumlah bit stop. PortOpen : Digunakan untuk membuka ataupun menutup port serial yang dihubungkan dengan MSComm. Input : Digunakan untuk mengambil data string yang ada pada buffer penerima. Output : Digunakan untuk menulis data string pada buffer kirim.
43
BAB III PERANCANGAN DAN PEMBUATAN PERANGKAT LUNAK 3.1 UMUM Pada bab ini akan dibahas secara rinci tentang perancangan perangkat lunak agar didapatkan identifikasi ikan yang akurat sehingga dapat diambil tindakan pemancingan yang sesuai. Secara teknis proyek akhir ini membahas pengolahan data baik data yang ada pada mikrokontroller maupun data yang diterima oleh PC. Berikut blok diagram system secara global. SENSOR PERCEPATAN
MIKROKONTROLLER AT89S51
AKSI ROBOT
DESKRIPSI SINYAL
KOMUNIKASI SERIAL
PC
Gambar 3.1 Konfigurasi Sistem Terdapat dua bagian program pada proyek akhir kali ini yaitu program pada mikrokontroller dan program pada PC. 1. Program mikrokontroller Mikrokontroler berfungsi untuk mengolah data dari sensor, mengirim data ke PC melalui komunikasi serial, dan mengontrol pergerakan robot. 2. Program VB
44
Visual basic berfungsi untuk mengolah data dari mikrokontroller menjadi nilai percepatan, menampilkannya pada grafik, dan menyimpan ke data base. Pemancingan dalam proyek akhir ini kami simulasikan dengan memberikan hentakan pada ujung kail secara manual. Sedangkan ikan kami simulasikan dengan memberikan beban pada senar pancing. 3.2 PERANCANGAN PROGRAM MIKROKONTROLLER Start
Baca Sensor
Konversi ke ASCII
Kirim ke PC
T
Th > 2 ? Y Proses pemancingan
End Gambar 3.2 Flowchart Program Mikrokontroller
45
Jalannya program pada mikrokontroller pertama-tama adalah menghitung lebar pulsa input dari sensor percepatan untuk mendapatkan percepatan hentakan kail. Perhitungan lebar pulsa input menggunakan fasilitas timer yang telah disediakan oleh mikrokontroller AT89S51. Dalam program kami timer yang digunakan yaitu timer 0. Input mikrokontroller adalah pin no 12 yaitu pin interupt external 0. Setelah didapatkan nilai lebar pulsa maka nilai tersebut harus diubah terlebih dahulu ke ASCII agar dapat dikirim ke PC. Hal ini karena PC tidak bisa menerima data kecuali data ASCII. Data ASCII yang didapatkan selanjutnya dikirim ke PC menggunakan komuniksai serial RS232. Jika nilai hentakan lebih besar dar 1.5 maka robot akan melakukan tindakan pemancingan. 3.2.1 Menghitung lebar pulsa
Gambar 3.3 Timer mode 1 Output dari sensor memiliki frekuensi 1 kHz dan kristal mikrokontroller memiliki frekuensi 11,0592Mz. Sehingga: Pada frekuensi kristal 11,592 MHz maka: Frekuensi Osilasi = 11,0592 MHz / 12 = 921600 Hz Periode Osilasi = 1 / 921600 = 1,08506944 Mikro detik Jika frekuensi Sensor 1khz, maka: Periode sensor = 1/1000 =1mili detik Jumlah Clock tiap perode = 0.5ms / 0,001085ms = 461 clock
46
Untuk dapat membaca sensor maka timer sepenuhnya harus dikendalikan oleh interrupt external, oleh karena itu Gate harus berlogika ”1” dan TR juga harus berlogika “1”. Pada timer mode 1 maka register TL adalah 8 bit dan register TH juga 8 bit sehingga mikrokontroller dapat menghitung maksimal 65535 clock. Pada saat sensor mengirim sinyal high maka interrupt eksternal nol mendapat logika “1” sehingga timer mulai menghitung. Ketika input berlogika “0” maka control timer akan open dan timer berhenti. Pada kondisi peralihan dari lohika “1” ke logika”0” terjadi interupt external nol. Interupt ini berfungsi untuk menyimpan nilai dari register th dan Tl yang selanjutnya akan diproses menjadi nilai duty cycle. 3.2.2 Konversi Hex ke ASCII Data yang tersimpan pada register Thx dan Tlx berupa data hexadesiaml. Untuk dapat dikirim ke PC bilangan hex yang didapat dari perhitungan timer harus diubah ke bilangan ASCII. Jika kita ingin mendapatkan bilangan ASCII dari bilangan HEX maka harus ditambah dengan 30 hex untuk angka dan ditambah 40 hex untuk huruf. 3.2.3 Komunikasi serial dengan PC Program pengiriman data dari mikrokontroller ke PC menggunakan komunikasi serial RS232. Boudrate yang digunakan adalah 9600, oleh karena itu TH1 harus di isi 0FDH. 3.2.4 Tindakan Robot Robot akan melakukan proses penarikan ikan jika nilai Th lebih besar dari 2. Agar lebih jelas proses penarikan ikan dapat dilihat pada Gambar 3.4
47
Th>2
Baca sensor
Angkat kail
Gulung Senar & Turunkan kail Pasang senar
T
Penggulungan selesai? Turunkan kail Y Angkat kail
Putar Kiri Putar kanan
Mancing lagi?
Y
Angkat Kail
T End
Gambar 3.4 Flowchart Tindakan Robot
48
3.3 PERANCANGAN PROGRAM VISUAL BASIC 6.0 Start
Deteksi sinyal
Proses sinyal
Tampilkan sinyal
T
Apakah ada hentakan?
Y Simpan nilai waktu & hentakan di data base
Gambar 3.5 Flowchart Program Visual Basic Program akan menampilkan nilai percepatan jika ada input dari komunikasi serial RS232. Jika tidak ada input dari MSComm1. nilai percepatan tidak akan ditampilkan. Database dalam perancangan ini menggunakan Microsoft Acces 2003. Data yang disimpan di database adalah nomor untuk mengetahui urutan hentakan, waktu terjadi hentakan, dan nilai hentakan.
49
3.3.1 Desain Form Antarmuka
Gambar 3.6 Form Antarmuka Pada Visual Basic 3.3.2 Komunikasi Serial Dengan Visual Basic Komunikasi serial pada visual basic menggunakan MSComm1. Private Sub Form_Load() MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True End Sub String koneksi diatas berfungsi untuk mengaktifkan komunikasi serial. 3.3.3 Perhitungan Nilai Hentakan Nilai hentakan adalah nilai percepatan gerakan ujung kail saat ditarik oleh ikan. Nilai percepatan ini dirumuskan dengan:
Jika, database
G= (T1/T2-0g)/12.5% 0g = 50% Duty Cycle Th1 > 2 maka no, waktu, dan nilai hentakan akan disimpan di
50
BAB IV PENGUJIAN DAN ANALISA Pada bab ini akan dibahas pengujian system berdasarkan perencanaan yang telah dibuat. Pengujian ini selain bertujuan untuk menguji ketahanan sytem yang telah dibuat juga bertujuan untuk mengetahui apakah system sudah sesuai dengan perencanaan. Pengujian dilakukan dua tahap, pertama dilakukan secara terpisah sedangkan kedua dilakukan secara keseluruhan ke dalam system yang terintegrasi. Pengujian yang dilakukan pada bab ini antara lain : 1.Pengujian pembacaan sensor 2. Pengujian Visual Basic 3. Pengujian keseluruhan Tiap-tiap tahap dalam pengujian saling berhubungan satu dengan yang lain. Maksudnya apabila tahap pertama belum berhasil maka pengujian berikutnya akan tertunda sampai pengujian tahap pertama selesai dilakukan.
4.1 PENGUJIAN PROGRAM PEMBACA SENSOR Pengujian pembacaan sensor ini bertujuan untuk mengetahui keberhasilan pembacaan program. Hal yang paling penting adalah untuk mengetahui kelemahan dan kelebihan program yang telah dibuat serta mengetahui apakah data sensor yang terbaca sudah sesuai dengan apa yang kita harapkan. Berikut program pengujian pembacaan sensor: ;-----------------------------------;AWAL PROGRAM ;-----------------------------------ValH equ 21h ValL equ 22h baudrate equ 0fDh code_seg equ 0000h org code_seg ljmp start ORG CODE_SEG+03H LJMP HITUNG ;-------------------------------;INISIALISASI BOUDRATE ;-------------------------------init:
51
MOV MOV MOV MOV MOV MOV SETB SETB SETB ret
scon,#50h th1,#baudrate tmod,#29h tcon,#41h TH0,#00H TL0,#00H EA EX0 TR0
; ;--------------------------------;PROGRAM UTAMA ;--------------------------------start: mov sp,#00h lcall init PUTER: CALL CALL CALL CALL
SPASI PROSES SPASI PROSES1
MOV MOV CALL ljmp ;RETI
ValH,#00H ValL,#00H ENTER PUTER
; PROSES: MOV SWAP CALL CALL MOV CALL CALL RET
A,ValH A ASCII KIRIM A,ValH ASCII KIRIM
52
PROSES1: MOV SWAP CALL CALL MOV CALL CALL RET
A,ValL A ASCII KIRIM A,ValL ASCII KIRIM
SPASI: mov a,#09h CALL KIRIM RET ENTER: mov a,#0Ah CALL KIRIM mov a,#0Dh CALL KIRIM RET ;---------------------------------;KONVERSI HEX TO ASCII ;---------------------------------ASCII: Anl A,#0FH Cjne A,#10,ANGKA ANGKA: Jnc Bukan_Angka Add A,#30H Ret Bukan_Angka: Add A,#37H RET ;---------------------------------;PENGIRIMAN MELALUI PORT SERIAL ;---------------------------------KIRIM: MOV SBUF,A
53
LAGI: JNB TI,LAGI CLR TI RET ;---------------------------------;MENGHITUNG PULSA ;---------------------------------HITUNG: CLR TR0 MOV ValH,TH0 MOV ValL,TL0 MOV TH0,#00H MOV TL0,#00H SETB TR0 RETI End Hasil dan analisa Pada pengujian hasil pembacaan sensor menunjukkan nilai sensor berubah-ubah antara 336 clock sampai 360 clock. Hal ini disebabkan oleh bentuk sinyal yang tidak membentuk kotak sempurna. Nilai perhitungan sensor berubah secara dratis jika sensor digerakkan dengan percepatan tertentu. Hal ini menunjukkan sensor sudah berjalan sesuai rencana
Gambar 4.1 Pengujian program pembaca sensor
54
Pada frekuensi kristal 11.592 MHz maka: Frekuensi Osilasi = 11.0592 MHz / 12 = 921600 Hz Periode Osilasi = 1 / 921600 = 1.08506944 Mikro detik Jika frekuensi Sensor 1khz, maka: Periode sensor = 1/1000 =1mili detik Jumlah Clock tiap perode = 0.5ms / 0.001085ms = 461 clock Tabel 4.1 Pengujian Pembacaan Sensor Clock Pada Clock T1 Clock T1 Frekuensi Sensor No. Sensor (Hek) 1KHz (Des) (Des) 1 0167 359 461 2 015C 348 461 3 0164 356 461 4 0166 358 461 5 0150 336 461 6 0168 360 461 7 015A 346 461 8 0162 354 461 9 0160 352 461 10 015E 350 461 11 0166 358 461 12 0158 344 461 13 0168 360 461 14 015A 346 461 15 0162 354 461 16 0164 356 461 17 0158 344 461 18 0168 360 461 19 0158 344 461 20 0163 355 461 21 0150 336 461 22 0162 354 461 23 0167 359 461 Rata – rata Clock per 0.5 periode input = 352
55
Persen Error (%) 22 25 23 22 27 23 25 23 24 24 22 25 22 25 23 23 25 22 25 23 27 23 22
Persen error
= ((461-352)/461)*100% = 24%
3.2 PENGUJIAN PROGRAM VISUAL BASIC Visual Basic menerima data dari mikrokontroller dan menampilkannya di text. Data yang diterima berupa lebar pulsa dalam clock. Nilai clock tersebut kemudian akan di terjemahkan menjadi nilai duty cycle. Perubahan duty cycle tersebut kemudian diterjemahkan menjadi nilai percepatan. Nilai percepatan ini ditampilkan dalam bentuk grafik. Jika percepatan lebih besar dari 1.5g maka No. Pemancingan, waktu, dan nilai hentakan akan disimpan didalam database. Hasil dan analisa a. Pengujian Input Serial Input serial menerima data dari mikrokontroller berupa nilai Heksa desimal dimana nilai ini diubah terlebih dahulu menjadi nilai desimal sebelum diproses menjadi nilai percepatan.
Gambar 4.2 Pengujian input pada Visual Basic b Pengujian Perhitungan Nilai Percepatan Percepatan didapatkan dari nilai duty cycle yang dirumuskan sebagai berikut : G= (T1/T2-0g)/12.5% 0g = 50% Duty Cycle Pada kondisi diam nilai G mendekati nol namun jika sensor digerakkan dengan percepatan tertentu maka nilai G akan berubah proporsional
56
dengan nilai input dimana nilai maksimal G adalah 4 g dan nilai minimal G adalah -4g. Dari data tersebut menunjukkan program perhitungan percepatan sudah berjalan dengan baik.
Gambar 4.3 Pengujian program penampil grafik c. Pengujian database Visual basic akan menyimpan no, waktu, dan hentakan ke dalam database secara otomatis jika ada ikan yang terpancing. Selain itu User juga bisa menyimpan No, waktu, dan hentakan di dalam database secara manual melalui form yang sudah kami sediakan.
Gambar 4.4 Pengujian program koneksi ke database 57
4.4 PENGUJIAN SISTEM KESELURUHAN Pengujian keseluruhan disini maksudnya adalah pengujian seluruh sistem baik mekanik, hardware, program pada mikrokontroller maupun program pada PC. Pada pengujian sistem keseluruhan ini digunakan simulasi dimana untuk hentakan ikan kami simulasikan dengan memberikan hentakan pada ujung kail, sedangkan ikan kami simulasikan dengan memberikan beban pada ujung senar dengan berat maksimal 150 gram. Hasil dan Analisa
Gambar 4.5 Mekanik dan hardware Robot Pemancing Ikan Tabel 4.2 Pengujian Robot keseluruhan Tindakan Tindakan No. No. Robot Robot 1 11 ü 2 ü 12 ü 3 ü 13 ü 4 ü 14 ü 5 ü 15 6 ü 16 -
58
7 8 9 10 Jika tanda,
ü
ü ü ü
17 18 19 20
ü ü ü
Robot tidak bergerak Robot melakukan tindakan seperti yang diharapkan
Dari 20 kali percobaan robot dapat bergerak dengan sempurna sebanyak 15 kali. Sehingga persen error dapat dihitung dengan rumus : Persen error = ( robot tidak bergerak / banyak pengujian ) * 100% = ( 5 / 20 ) * 100% = 25 % Persen error robot adalah 25%. Kesalahan robot disebabkan karena adanya pemasangan mur dan baut yang kurang presisi sehingga putaran motor terhambat.
59
BAB V KESIMPULAN DAN SARAN 5.1 KESIMPULAN Dari hasil analisa dan pembahasan pada bab 4 serta dari data-data yang telah diperoleh maka dapat disimpulkan beberapa hal sebagai berikut: 1. Robot pemancing ikan hanya dapat memancing dan memindahkan ikan ke tepi, dalam hal ini ikan memiliki berat maksimum 150 gram sedangkan hentakan ikan disimulasikan dengan memberikan hentakan pada ujung kail. 2. Bentuk mekanik robot berpengaruh terhadap kemampuan robot mengangkat beban. Pada mekanik ini beban maksimal yang mampu di angkat adalah 150 gram 3. Posisi x dan y sensor berpengaruh terhadap ketepatan baca sensor. Posisi y sensor harus tegak lurus gravitasi bumi sedangkan posisi x sensor harus sejajar gravitasi bumi. 5.2 SARAN Adapun saran yang bisa diberikan dalam pengembangan robot pemancing ikan lebih lanjut adalah sebagai berikut : 1. Untuk mendapatkan pergerakan robot yang baik maka pemasangan sensor, baik sensor hentakan maupun limit switch harus tepat. Hal ini berpengaruh terhadap kontrol gerakan robot. 2. Pengaturan posisi rangkaian sangat berpengaruh terhadap kelancaran gerakan robot, posisi rangkaian harus rapi sehingga gerakan tidak terganggu oleh rangkaian yang ruwet. 3. Proses pemancingan hanya dapat disimulasikan karena robot tidak mampu mengangkat beban berat, sehingga untuk meningkatkan kemampuan robot maka torsi motor harus ditingkatkan.
60
DAFTAR PUSTAKA
1. 2. 3. 4.
5.
6.
7. 8.
Adinata, Wijaya,”Algoritma Robot Pemisah Hasil Tangkapan Ikan dengan Metode Clusterring”,Proyek Akhir PENS-ITS, 2005. Dewobroto, Wiryanto., Aplikasi Sain dan Teknik dengan Visual Basic 6.0 , Penerbit PT.Elek Media Komputindo, 2003, Jakarta. Malik, M.I.” Pengantar Membuat Robot ”, Gava Media, 2006, Yogyakarta Mangkulo, H.A., “ Pemrograman Visual Basic 6.0 dan Microsoft Acces ”. Penerbit PT.Elek Media Komputindo Kelompok Gramedia, 2004,. Malang. Nalwan, P.A. “ Teknik Antar Muka dan Pemrograman Mikrokontroller AT89C51”,Penerbit PT.Elek Media Komputindo, 2003, Jakarta. Prasetia Retna, Widodo, C.E., 2004, Teori Dan Praktek Interfacing Port Pararel Dan Port Serial Komputer Dengan Visual Basic 6.0, ANDI OFFSET, Yogyakarta. __________, “ADXL202”, www.analogdevice.com , 2006 __________, “AT89S51”, www.atmel.com , 2006
61
LAMPIRAN 1 ;-------------------------------------------------------------------------------------; LISTING PROGRAM MIKROKONTROLLER ; By:Agus Purwanto / 7103 030 038 ; Politeknik Elektronika Negeri Surabaya ;-------------------------------------------------------------------------------------VAlH EQU 21H VAlL EQU 22H SMPN EQU 31H ORG 00H LJMP MAIN ORG 03H LJMP HITUNG ORG 23H LJMP SERINT ORG 30H ;=============================== ;INISIALISASI ;=============================== INIT: MOV SCON,#50H MOV TH1,#0FDH MOV TMOD,#29H MOV TCON,#45H MOV TH0,#00H MOV TL0,#00H SETB ES SETB EA SETB EX0 SETB TR0 RET ;=============================== ;PROGRAM UTAMA ;=============================== MAIN: MOV SP,#10H MOV P1,#00000000B MOV R4,0H CALL MULAI
62
LP_MAIN: LCALL
INIT
CALL PROSES CALL PROSES1 CALL PROSES2 MOV VAlH,#00H MOV VAlL,#00H LJMP LP_MAIN ;=============================== ;POSISI AWAL PANCING ;=============================== MULAI: JNB P0.6,TRN_PANCING SJMP MULAI TRN_PANCING: SETB P1.3 JNB P0.2,KAIL1 SJMP TRN_PANCING KAIL1: CLR P1.3 SETB P1.1 CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CLR P1.1 RET ;=============================== ;HITUNG PULSA ;=============================== HITUNG: CLR TR0 MOV VAlH,TH0 MOV VAlL,TL0 MOV TH0,#00H
63
MOV TL0,#00H SETB TR0 RETI ;=============================== ;SUBRUTIN PROSES PENGIRIMAN ;=============================== PROSES: MOV A,VAlH SWAP A CALL ASCII CALL KIRIM MOV A,VAlH CALL ASCII CALL KIRIM RET ; PROSES1: MOV A,VAlL SWAP A CALL ASCII CALL KIRIM MOV A,VAlL CALL ASCII CALL KIRIM RET PROSES2: MOV A,VAlH ANL A,#0FH SUBB A,#02H JNC PROSES3 CLR C RET ; PROSES3: CLR C INC R4 MOV A,R4 SUBB A,#015H JNC ANGKAT CLR C
64
RET ;=============================== ;KONVERSI HEKSA KE ASCII ;=============================== ASCII: ANL A,#0FH CJNE A,#10,ANGKA ANGKA: JNC BUKAN_ANGKA ADD A,#30H RET BUKAN_ANGKA: ADD A,#37H RET ;=============================== ;PENGIRIMAN SERIAL ;=============================== KIRIM: CLR ES MOV SBUF,A LAGI: JNB TI,LAGI CLR TI SETB ES RET ;=============================== ;SUBRUTIN PENERIMAAN SERIAL ;=============================== SERINT: PUSH PSW PUSH ACC TUNGGU: JNB RI,TUNGGU MOV A,SBUF CLR RI CJNE A,#'A',EXIT MOV P1,#00000000B ;================================ ;TINDAKAN ROBOT
65
;================================ ANGKAT: CLR P1.3 CLR P1.0 LP_ANGKAT1: SETB P1.2 JNB P0.1,TURUN SJMP LP_ANGKAT1 TURUN: CLR P1.2 LP_TURUN: SETB P1.3 SETB P1.0 JNB P0.2,ANGKAT JNB P0.0,STP_SENAR SJMP LP_TURUN STP_SENAR: CLR P1.0 CLR P1.3 LP_ANGKAT: SETB P1.2 JNB P0.1,PUTER_KANAN SJMP LP_ANGKAT PUTER_KANAN: CLR P1.2 LP_PUTER_KN: SETB P1.4 JNB P0.3,STP_PUTER_KN SJMP LP_PUTER_KN STP_PUTER_KN: CLR P1.4 SETB P1.3 JNB P0.2,PNC_LG SJMP STP_PUTER_KN PNC_LG: CLR P1.3 JNB P2.1,LP_NAIK JMP PNC_LG LP_NAIK:
66
SETB P1.2 JNB P0.1,PUTER_KIRI SJMP LP_NAIK PUTER_KIRI: CLR P1.2 SETB P1.5 JNB P0.4,TURUN_LG SJMP PUTER_KIRI TURUN_LG: CLR P1.5 LP_TURUN_LG: SETB P1.3 JNB P0.2,KAIL2 SJMP LP_TURUN_LG KAIL2: CLR P1.3 SETB P1.1 CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CLR P1.1 EXIT: POP ACC POP PSW LJMP LP_MAIN RET ;================================ ;DELAY ;================================ DELAY: MOV R0,#04H DELAY1: MOV R1,#00H DELAY2: MOV R2,#00H DELAY3: DJNZ R2,DELAY3
67
DJNZ DJNZ RET
R1,DELAY2 R0,DELAY1
; END
68
LAMPIRAN 2 ‘-------------------------------------------------------------------------------------‘ LISTING PROGRAM VISUAL BASIC By:Agus Purwanto / 7103 030 038 Politeknik Elektronika Negeri Surabaya ‘--------------------------------------------------------------------------------------Dim Data As String Dim masukan As String Dim i As Integer Dim J As Integer Dim k As Integer Dim no As Integer Dim tabel(1 To 500) Dim Tha As Integer Dim Tha1 As Integer Dim Thb As Integer Dim Thb1 As Integer Dim Tla As Integer Dim Tla1 As Integer Dim Tlb As Integer Dim Tlb1 As Integer Dim clock As Long Dim grafik As Long Dim cnn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim tanda As Integer Private Sub Command1_Click() End End Sub Private Sub Command2_Click() Form2.Show End Sub Private Sub Command3_Click() Form3.Show End Sub Private Sub Form_Load()
69
Dim KoneksiData As String KoneksiData = "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=dbAplikasi.mdb;" & _ "DefaultDir=D:\Rak_Data\tutorial\tip & trik pemrograman database;" & _ "Uid=Admin;Pwd=123;" cnn.Open KoneksiData MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.PortOpen = True no = 0 J=0 k=0 End Sub Private Sub Form_Unload(Cancel As Integer) cnn.Close Set cnn = Nothing 'cnn.ConnectionString = "" End Sub Private Sub MSComm1_OnComm() Dim buffer As Variant buffer = CInt(MSComm1.Input) End Sub Private Sub Text4_KeyPress(KeyAscii As Integer) 'Merubah teks menjadi huruf besar If KeyAscii <> 13 Then KeyAscii = Asc(UCase(Chr(KeyAscii))) End If End Sub Private Sub Text8_KeyPress(KeyAscii As Integer) 'Merubah teks menjadi huruf besar If KeyAscii <> 13 Then KeyAscii = Asc(UCase(Chr(KeyAscii))) End If End Sub
70
Private Sub Text9_KeyPress(KeyAscii As Integer) If KeyAscii <> 13 Then KeyAscii = Asc(UCase(Chr(KeyAscii))) End If End Sub Private Sub Timer1_Timer() ' 'menerima data serial ' i=1 inp_serial: masukan = MSComm1.Input no = no + 1 Data = Mid(masukan, i, 4) If no = 500 Then no = 1 ReDim kolom(1 To 500) End If If Data = "" Then Exit Sub Else Data = Mid(masukan, i, 1) Tha = Asc(Data) Data = Mid(masukan, i + 1, 1) Thb = Asc(Data) Data = Mid(masukan, i + 2, 1) Tla = Asc(Data) Data = Mid(masukan, i + 3, 1) Tlb = Asc(Data) If Tha > 47 Then If Tha < 57 Then Tha1 = (Tha - 48) * 16 Else Tha1 = (Tha - 55) * 16 End If
71
End If If Thb > 47 Then If Thb < 57 Then Thb1 = (Thb - 48) + Tha1 Else Thb1 = (Thb - 55) + Tha1 End If End If If Tla > 47 Then If Tla < 57 Then Tla1 = (Tla - 48) * 16 Else Tla1 = (Tla - 55) * 16 End If End If If Tlb > 47 Then If Tlb < 57 Then Tlb1 = (Tlb - 48) + Tla1 Else Tlb1 = (Tlb - 55) + Tla1 End If End If End If ' 'Hitung percepatan' ’ clock = (Thb1 * 255) + Tlb1 waktu# = (1.08506944444444 * clock) / 1000 T1# = (waktu / 1) - 0.5 percepatan# = T1 / 0.125 grafik = clock / 50 Text1.Text = Thb1 Text2.Text = Tlb1 Text3.Text = waktu# Text4.Text = percepatan# Text5.Text = clock MSChart1.Refresh tabel(no) = percepatan
72
MSChart1.Visible = True MSChart1.ChartData = tabel If percepatan > 1 Then 'ElseIf percepatan < -2 Then k=k+1 Text10.Text = k 'If k = 5 Then Call simpan 'k = 0 'MSComm1.Output = "A" MsgBox "selamat anda dapat ikan!", vbInformation + vbOKOnly 'End If End If i=i+4 'clock = 0 GoTo inp_serial End Sub Private Sub Timer2_Timer() Label7.Caption = Now Text9.Text = Label7.Caption End Sub
Sub simpan() Dim msql As String J=J+1 Text8.Text = J If Text8.Text <> "" Then cnn.BeginTrans If Text8.Enabled = True Then msql = " insert into tbdata(no," & _ " waktu,hentakan)" & _ " VALUES('" & Text8.Text & "'," & _
73
" '" & Text9.Text & "'," & _ " '" & Text4.Text & "')" cnn.Execute (msql) End If 'Menghapus teks Text8.Text = "" Text4.Text = "" End If cnn.CommitTrans End Sub
74
LAMPIRAN 3 ‘-------------------------------------------------------------------------------------‘ Gambar Mekanik Robot By:Agus Purwanto / 7103 030 038 Politeknik Elektronika Negeri Surabaya ‘---------------------------------------------------------------------------------------
Gambar Mekanik Robot Dilihat Dari Depan
75
Gambar Mekanik Robot Dilihat Dari Samping
Gambar Mekanik Robot Dilihat Dari Belakang
76
Gambar Makanik Robot Dilihat Dari Atas
77
RIWAYAT HIDUP PENULIS
Data Penulis Nama Tempat/Tgl lahir Anak keAlamat Telp Hp Email Hobby
: : : :
Agus Purwanto Nganjuk / 28 Desember 1985 4 dari 4 bersaudara Dsn. Magersari, Ds. Bajulan, Kec. Loceret Nganjuk : (0358)7605304 : 08563485457 :
[email protected] : Camping
Riwayat Pendidikan Formal 2003 2000 1997 1991
-
2006 2003 2000 1997
: : : :
PENS - ITS ( Jurusan Teknik Elektronika ) SMU Negeri 2 Kediri SLTP Negeri 1 Nganjuk SDN Bajulan 2
78