Professional Documents
Culture Documents
AGUS PURWANTO
7103 030 038
Dosen Pembimbing :
Reesa Akbar, ST
NIP. 132 297 802
1
RANCANG BANGUN ROBOT PEMANCING IKAN
( SOFTWARE )
Oleh :
AGUS PURWANTO
7103 030 038
Disetujui oleh :
Tim Penguji Proyek Akhir Dosen Pembimbing
3. One Setiaji, ST
NIP. 132 232 765
2
Abstrak
3
Abstract
4
KATA PENGANTAR
5
UCAPAN TERIMA KASIH
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.
7
DAFTAR ISI
Hal
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
9
DAFTAR GAMBAR
Hal
10
DAFTAR TABEL
Hal
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:
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.
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
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.
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.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.
17
piranti untuk hubungan serial (UART) dan piranti untuk hubungan
paralel (PIO).
00
0
Gambar 2.1 Alamat RAM internal dan FLASH PEROM1
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 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.
21
2.1.3 KONFIGURASI PIN AT89S51
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
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.
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
Ø 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.
26
Tabel 2.5 Instruksi Aritmatika9
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.
.
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 :
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.
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.
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.
31
Tabel 2.11 Jump Tanpa Syarat (Unconditional Jumps) 15
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.
(MSB) (LSB)
16 Ibid, hal 24
33
Tabel 2.12 IE (Interrupt Enable) 17
(MSB) (LSB)
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)
19 Ibid, hal 25
20 Ibid, hal 26
35
Tabel 2.14 TCON (Timer
Control)21
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.
Ø 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.
Ø 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.
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.
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.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)
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.
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.
DESKRIPSI
SINYAL
KOMUNIKASI
SERIAL
PC
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.
Start
Baca Sensor
Konversi ke ASCII
Kirim ke PC
T Th > 2 ?
Proses
pemancingan
End
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.
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.
47
Th>2
Baca
Angkat kail sensor
Penggulungan
T selesai?
Turunkan kail
Y
Angkat kail
Putar Kiri
Putar kanan
End
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
49
3.3.1 Desain Form Antarmuka
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
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
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%
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.
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.
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.
58
7 ü 17 -
8 ü 18 ü
9 - 19 ü
10 ü 20 ü
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
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
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
70
Private Sub Text9_KeyPress(KeyAscii As Integer)
If KeyAscii <> 13 Then
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End If
End Sub
If no = 500 Then
no = 1
ReDim kolom(1 To 500)
End If
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)
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
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
Sub simpan()
J=J+1
Text8.Text = J
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
‘---------------------------------------------------------------------------------------
75
Gambar Mekanik Robot Dilihat Dari Samping
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
78