You are on page 1of 78

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 1. Ir. Ratna Adhil, MT


NIP. 132 303 762 NIP. 131 756 642

2. Bima Sena Bayu D, SST 2. Reesa Akbar, ST


NIP. 132 232 762 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, Agustus 2006

5
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.1 LATAR BELAKANG .................................... 1
1.2 TUJUAN ........................................................ 2
1.3 PERMASALAHAN........................................ 2
1.4 BATASAN MASALAH .................................. 2
1.5 RUANG LINGKUP......................................... 2
1.6 METODOLOGI............................................... 2
1.7 SISTEMATIKA PENULISAN ........................ 3

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


2.1 MIKROKONTROLLER AT89S51 .................. 5
2.1.1 Perlengkapan Dasar Mikrokontroller ...... 5
2.1.2 Struktur Memori..................................... 7
2.2.3 Konfigurasi Pin At89S51........................ 11
2.1.5 Reset...................................................... 12
2.1.6 Instruksi Set Dari At89S51..................... 12
2.1.7 Timer/Counter........................................ 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 ........... 32
BAB III PERENCANAAN DAN PEMBUATAN
PERANGKAT LUNAK ..................................... 33
3.1 UMUM............................................................ 33
3.2 PERANCANGAN PROGRAM
MIKROKONTROLLER................................. 34
3.3 PERANCANGAN PROGRAM VISUAL
BASIC ........................................................... 38

BAB IV PENGUJIAN DAN ANALISA........................... 40


4.1 PENGUJIAN PROGRAM PEMBACA
SENSOR ........................................................ 40
4.2 PENGUJIAN PROGRAM VISUAL BASIC .... 45
4.3 PENGUJIAN SISTEM KESELURUHAN........ 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 Alamat RAM internal dan FLASH PEROM ........... 7


Gambar 2.2 Konfigurasi bit pada PSW...................................... 8
Gambar 2.3 Konfigurasi pin AT89S51 ...................................... 11
Gambar 2.4 Program Status Word............................................. 13
Gambar 2.5 Konfigurasi bit pada register IE.............................. 22
Gambar 2.6 Konfigurasi bit pada register IP .............................. 23
Gambar 2.7 Konfigurasi bit register TCON ............................... 24
Gambar 2.8 Konfigirasi bit pada register TMOD ...................... 25
Gambar 2.9 Timer/Counter 1 bekerja dalam mode 0,
sebagai T/C 13-bit.................................................. 27
Gambar 2.10 Timer/Counter 1 pada mode 2, sebagai T/C 8-
bit auto-reload........................................................ 27
Gambar 2.11 Timer/Counter pada mode 3, sebagai 2
timer/counter 8 bit,................................................. 28
Gambar 2.12 Blok Diagram ADXL202E..................................... 28
Gambar 2.13 Output ADXL202E................................................ 29
Gambar 2.14 Tampilan dasar VB 6.0 .......................................... 30
Gambar 3.1 Konfigurasi sistem ................................................. 33
Gambar 3.2 Flowchart Program Mikrokontroller ....................... 34
Gambar 3.3 Timer mode 1 ........................................................ 35
Gambar 3.4 Flowchart Tindakan Robot. .................................... 37
Gambar 3.5 Flowchart Program Visual Basic ............................ 38
Gambar 3.6 Form Antarmuka Pada Visual Basic. ...................... 39
Gambar 4.1 Pengujian program pembaca sensor........................ 43
Gambar 4.2 Pengujian input pada Visual Basic.......................... 45
Gambar 4.3 Pengujian program penampil grafik........................ 46
Gambar 4.4 Pengujian program koneksi ke database.................. 46
Gambar 4.5 Mekanik dan hardware Robot Pemancing Ikan . ..... 47

10
DAFTAR TABEL

Hal

Tabel 2.1 Deskripsi Fungsi Alternatif Pin Port 3........................ 11


Tabel 2.2 Isi Register setelah Reset ........................................... 12
Tabel 2.3 Program Status Word ................................................ 13
Tabel 2.4 Pemilihan bank register ............................................. 14
Tabel 2.5 Instruksi Aritmatika .................................................. 16
Tabel 2.6 Instruksi Logika ........................................................ 16
Tabel 2.7 Instruksi Data Transfer yang mengakses Internal
Data Memory ............................................................ 17
Tabel 2.8 Instruksi Data Transfer Yang Mengakses External
Data Memory ............................................................ 18
Tabel 2.9 Instruksi Pembacaan Tabel ........................................ 18
Tabel 2.10 Instruksi-Instruksi Boolean ........................................ 19
Tabel 2.11 Jump Tanpa Syarat (Unconditional Jumps) ................ 21
Tabel 2.12 IE (Interrupt Enable).................................................. 23
Tabel 2.13 IP (Interrupt Priority)................................................. 24
Tabel 2.14 TCON (Timer Control).............................................. 25
Tabel 2.15 Mode Timer .............................................................. 26
Tabel 4.1 Pengujian Pembacaan Sensor..................................... 44
Tabel 4.2 Pengujian Robot keseluruhan..................................... 48

11
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 7FF
SPECIAL
FUNCTION
RAM PROGRAM
80 FLASH ADDRESS
ADDRESS
7F RAM PEROM
INTERNAL
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 = Panjang pulsa on cycle
T2 = Panjang cycle /periode
Duty cycle = 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 masing-
masing 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 MIKROKONTROLLER AKSI


PERCEPATAN AT89S51 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 ?

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
Angkat kail sensor

Gulung Senar &


Turunkan kail
Pasang senar

Penggulungan
T selesai?
Turunkan kail
Y

Angkat kail

Putar Kiri
Putar kanan

Mancing Y Angkat Kail


lagi?

End

Gambar 3.4 Flowchart Tindakan Robot

48
3.3 PERANCANGAN PROGRAM VISUAL BASIC 6.0

Start

Deteksi sinyal

Proses sinyal

Tampilkan sinyal

Apakah ada
T 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:

G= (T1/T2-0g)/12.5%
0g = 50% Duty Cycle
Jika, Th1 > 2 maka no, waktu, dan nilai hentakan akan disimpan di
database

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 scon,#50h
MOV th1,#baudrate
MOV tmod,#29h
MOV tcon,#41h
MOV TH0,#00H
MOV TL0,#00H
SETB EA
SETB EX0
SETB TR0
ret
;
;---------------------------------
;PROGRAM UTAMA
;---------------------------------
start:
mov sp,#00h
lcall init

PUTER:

CALL SPASI
CALL PROSES
CALL SPASI
CALL PROSES1

MOV ValH,#00H
MOV ValL,#00H
CALL ENTER
ljmp PUTER
;RETI
;
PROSES:
MOV A,ValH
SWAP A
CALL ASCII
CALL KIRIM
MOV A,ValH
CALL ASCII
CALL KIRIM
RET

52
PROSES1:
MOV A,ValL
SWAP A
CALL ASCII
CALL KIRIM
MOV A,ValL
CALL ASCII
CALL KIRIM
RET

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 T1 Clock Pada Persen
Clock T1
No. Sensor Frekuensi Error
Sensor (Hek)
(Des) 1KHz (Des) (%)
1 0167 359 461 22
2 015C 348 461 25
3 0164 356 461 23
4 0166 358 461 22
5 0150 336 461 27
6 0168 360 461 23
7 015A 346 461 25
8 0162 354 461 23
9 0160 352 461 24
10 015E 350 461 24
11 0166 358 461 22
12 0158 344 461 25
13 0168 360 461 22
14 015A 346 461 25
15 0162 354 461 23
16 0164 356 461 23
17 0158 344 461 25
18 0168 360 461 22
19 0158 344 461 25
20 0163 355 461 23
21 0150 336 461 27
22 0162 354 461 23
23 0167 359 461 22
Rata – rata Clock per 0.5 periode input = 352

55
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 ü 17 -
8 ü 18 ü
9 - 19 ü
10 ü 20 ü

Jika tanda, - 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. Adinata, Wijaya,”Algoritma Robot Pemisah Hasil Tangkapan Ikan


dengan Metode Clusterring”,Proyek Akhir PENS-ITS, 2005.
2. Dewobroto, Wiryanto., Aplikasi Sain dan Teknik dengan Visual
Basic 6.0 , Penerbit PT.Elek Media Komputindo, 2003, Jakarta.
3. Malik, M.I.” Pengantar Membuat Robot ”, Gava Media, 2006,
Yogyakarta
4. Mangkulo, H.A., “ Pemrograman Visual Basic 6.0 dan Microsoft
Acces ”. Penerbit PT.Elek Media Komputindo Kelompok
Gramedia, 2004,. Malang.
5. Nalwan, P.A. “ Teknik Antar Muka dan Pemrograman
Mikrokontroller AT89C51”,Penerbit PT.Elek Media Komputindo,
2003, Jakarta.
6. Prasetia Retna, Widodo, C.E., 2004, Teori Dan Praktek Interfacing
Port Pararel Dan Port Serial Komputer Dengan Visual Basic 6.0,
ANDI OFFSET, Yogyakarta.
7. __________, “ADXL202”, www.analogdevice.com , 2006
8. __________, “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 R1,DELAY2
DJNZ R0,DELAY1
RET
;

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 : Agus Purwanto
Tempat/Tgl lahir : Nganjuk / 28 Desember 1985
Anak ke- : 4 dari 4 bersaudara
Alamat : Dsn. Magersari, Ds. Bajulan, Kec. Loceret
Nganjuk
Telp : (0358)7605304
Hp : 08563485457
Email : cupr3@plasa.com
Hobby : Camping

Riwayat Pendidikan Formal


2003 - 2006 : PENS - ITS ( Jurusan Teknik Elektronika )
2000 - 2003 : SMU Negeri 2 Kediri
1997 - 2000 : SLTP Negeri 1 Nganjuk
1991 - 1997 : SDN Bajulan 2

78

You might also like