4. HASIL DAN PEMBAHASAN Hasil penelitian ini adalah mini ROV yang diberi nama RJ45 V2 yang berfungsi melihat kondisi lingkungan bawah air secara visual. RJ45 V2 dapat diklasifikasikan ke dalam mini ROV (EVS-380, 2007), kelas observasi (Christ dan Wernli, 2007), kelas 1 – Murni Observasi dan kelas v Prototipe atau wahana yang dalam pengembangan (Norsok Standard, 2003). Pada laporan hasil penelitian ini disampaikan data pengukuran yang dilakukan pada proses pengujian alat. Pengujian alat yang dilakukan menunjukkan kemampuan alat dalam beroperasi di dalam air dalam bentuk pergerakannya dan sikap (attitude) dari RJ45 V2 berfungsi dengan baik. Proses pengiriman data dari unit mekanik ke unit display berjalan dengan cepat sehingga attitude mini ROV ini dapat langsung diamati pada laptop serta terekam dan disimpan datanya pada laptop. Pengiriman data ini berjalan secara real time.
4.1.
Desain RJ45 V2 Desain RJ45 V2 (Gambar 45) dibuat dengan memperhatikan bentuk dari
ROV RJ45 (Rizki, 2008; Prihandono, 2008). Desain alat ini dibedakan ke dalam beberapa bagian yaitu, bagian mekanik, dan kompartemen elektronik. Bagian belakang desain mekanik ini terdapat desain tersendiri yaitu desain koneksi kabel (Gambar 46). Konektor ditempatkan di bagian atas agar apabila terjadi kebocoran tidak mencapai bagian ini dan tidak mengganggu pergerakan motor. Apabila terjadi kebocoran maka air akan merembes ke bawah dan tidak mengenai konektor ini terlebih dahulu.
52
53
komparttemen utam ma
Rangka
Kaamera CCD M Motor pengggerak m RJ445 V2 Gambar 455. Desain mekanik Koneektor supplyy kameera
Konekktor supply R RJ 45 V2 Konnektor videoo kamera Konekttor 8 pin Konnektor motoor samping
Konektor motorr belaakang
Gambar 466. Desain ko onektor RJ445 V2
Koompartemenn elektronikk (Gambar 47) dirancaang memilikki lebar 15 cm c dan panjanng 55 cm. KomponenK -komponen elekronik ditempatkan d n pada akriliik dan mengggunakan baaut sebagai penahan p kom mponen. Modul mikrokontrroler
EMS 5A H-BR RIDGE
ADAPTOR R 5A
ADAPTOR R 2A ADAPT TOR 1A Sensor H48C H
D H-BRIDGE EMS 2A DUAL Sensor DS1820 D Sennsor CMP10
Gambaar 47. Desaiin komparteemen elektroonik RJ45 V V2
54
4.2.
Peerangkat Keras K
4.2.1.
R Rangka Raangka dibuaat dengan menggunakan m n pipa besi ukuran u 1 innci. Bentuk
rangka RJJ45 V2 (Gam mbar 48) mengikuti m beentuk rangkka dari RJ455. Bentuk kerangka disesuaikan d n dengan komponen yan ng akan diteempatkan. Bagian kan nan dan kiri keerangka diteempatkan motor m pengg gerak yang berfungsi b unntuk menaik kkan dan menurrunkan minni ROV. Baagian belakaang ditempaatkan dua buuah motor penggerakk untuk mennggerakkan mini ROV maju, munddur, belok kkanan dan belok b kiri.
Gambbar 48. Rang gka RJ45 V2 V
R V2 dib buat lebih maju m agar daapat melindu ungi Baagian depann kerangka RJ45 dome kam mera yang teerbuat dari akrilik a dari benturan. b T Tabung kom mpartemen elektronikk ditempatkaan pada baggian tengah. Tabung inni dihubungkkan ke rang gka dengan meenggunakann klem sebaanyak 3 buah h (Gambarr 49). Klem m berfungsi untuk mennahan berat tabung ini. Bentuk len ngkap dari RJ45 R V2 daapat dilihat pada p Gambar 50. 5
Gambar 49. Pemasaangan klem (tanda panaah) pada ranngka
55
Gambar 50. Bentuk fisik lengkap RJ45 V2
4.2.2.
Tabung kompartemen elektronik Tabung kompartemen elektronik terbuat dari PVC dengan diameter 6 inci,
panjang 60 cm dan tebal 3 mm. Pemilihan PVC dikarenakan dapat menahan tekanan, ringan, tidak mahal, dan tidak berat (Hoong, 2010). Pada RJ45, pembuatan kompartemen elektronik menggunakan aluminium dengan ketebalan 5 mm dan diameter 3 inci. Penggunaan aluminium ternyata memberikan efek pada RJ45 untuk cenderung tenggelam. Tabung PVC berfungsi sebagai tempat penyimpanan komponen elektronik dan sebagai tempat peletakan kamera pada bagian bawah dengan menggunakan klem gantung. Tabung ditutup dengan menggunakan dop pipa diameter 6 inci. Pada dop bagian depan ditempatkan kamera. Pada dop bagian belakang, konektor-konektor ditempatkan dan dipasang permanen sesuai dengan rancangan pada Gambar 51. Seluruh bagian luar tabung dibuat kedap air. Pengkedapan tabung ini menggunakan lem pipa PVC dan lem epoxy. Dari hasil percobaan, tabung ini tidak mengalami kebocoran. Hal ini terlihat dari tidak adanya gelembung udara yang keluar dari bagian yang dilem.
56
Konektor VAC
Konektor VDC kamera
Konektor video Konektor thruster belakang
Konektor thruster samping
Konektor transmisi data Gambar 51. Konektor kabel (tanda panah)
4.2.3.
Kamera CCD Kamera yang digunakan pada RJ45 V2 berjumlah dua. Kamera ini
ditempatkan pada bagian depan dan bawah RJ45 V2 (Gambar 52). Kamera ini sudah dilengkapi dengan dome. Kedua kamera dilem menggunakan lem epoxy agar kedap air (Gambar 53).
Gambar 52. Kamera depan dan kamera bawah
Gambar 53. Pemberian lem epoxy pada kompartemen kamera
Hasil pengujian video memperlihatkan adanya pengaruh warna infra merah apabila cahaya yang ada di lingkungan kurang. Pengaruh ini dikarenakan sistem detektor infra merah yang terdapat pada kamera CCD tetap diaktifkan. Pengaktifan sistem detektor infra merah memberikan keuntungan dan kerugian
57
bagi pengguna. Keuntungan yang didapat adalah operator tetap dapat mengoperasikan mini ROV ini walaupun cahaya yang masuk ke dalam kamera kurang. Kerugiannya ialah hasil video yang dihasilkan menjadi Black-White (BW).
4.2.4.
Thruster Thruster ditempatkan pada bagian samping dan belakang dari rangka.
Setiap thruster diberikan nomor. Penomoran ini digunakan untuk mempermudah dalam pemograman mikrokontroler pada bagian pengendalian gerak thruster. Penomoran thruster (Gambar 54) adalah thruster 1 untuk thruster belakang bagian kiri, thruster 2 untuk thruster belakang bagian kanan, thruster 3 untuk thruster samping bagian kiri, dan thruster 4 untuk thruster samping bagian kanan.
Thruster 4
Thruster 2
Thruster 3 Thruster 1 Gambar 54. Penempatan thruster
4.2.5.
Rangkaian kendali operator Rangkaian kendali operator terdiri dari rangkaian komunikasi digital,
joystick dan laptop. Rangkaian komunikasi digital menggunakan PC-Link USBer dan DT-I/O USB I/O MODULE sebagai pengubah logika serial USB ke logika serial RS-232 mikrokontroler. Komunikasi digital dibagi menjadi transmisi data dari laptop ke mikrokontroler dan transmisi data dari mikrokontroler ke laptop. Transmisi data
58
dari laptop berupa karakter yang akan mengaktifkan atau menonaktifkan transmisi data dari mikrokontroler dan karakter untuk mengaktifkan motor penggerak. Transmisi data dari mikrokontroler adalah data sensor CMPS10 dan H48C yang telah disusun formatnya. Penjelasan mengenai format dan penyusunan datanya akan dijelaskan pada sub bab berikutnya.
4.2.6.
Rangkaian pengendali on board Sistem kendali on board (Gambar 55) terdiri dari modul DT-AVR Low
Cost Micro System, modul sensor CMP10, modul sensor H48C, sensor suhu DS1820, pengendali motor yang terdiri dari EMS 2A Dual H-Bridge dan EMS 5A H-Bridge, dan catu daya yang terdiri dari adaptor 1A, adaptor 2A, dan adaptor 5A. Modul DT-AVR Low Cost Micro System berfungsi sebagai pengendali utama sistem elektronik. Modul sensor CMPS10 berfungsi untuk mengukur arah, pitch, dan roll. Modul sensor H48C berfungsi untuk mengukur akselerasi. Sensor suhu DS1820 berfungsi untuk mengukur suhu di dalam tabung kompartemen elektronik. EMS 2A Dual H-Bridge berfungsi sebagai saklar motor naik turun. EMS 5A H-Bridge berfungsi sebagai saklar motor maju, mundur, belok kanan dan kiri. Adaptor 12V 5A
Adaptor 12V 1A
EMS 2A DUAL H-BRIDGE CMPS 10
Adaptor 12V 2A
EMS 5A H-BRIDGE
MODUL MIKROKONTROLER
Gambar 55. Penempatan komponen elektronik
59
Masing-masing komponen dihubungkan dengan kabel. Kabel yang masuk ke dalam rangkaian ini adalah kabel VAC yang berfungsi sebagai catu daya. Kabel yang keluar dari rangkaian ini adalah kabel TX-RX (pengiriman dan penerimaan data), Ground, kabel video 1 dan kabel video 2 (Gambar 50).
4.3.
Program Mikrokontroler Program mikrokontroler ini dibuat sesuai dengan spesifikasi
mikrokontroler ATmega32A. Kode program yang disusun menggunakan Code Vision AVR 2.05 (Lampiran 11).
4.3.1.
Inisialisasi dan konfigurasi mikrokontroler ATmega32A Inisialisasi mikrokontroler merupakan hal pertama yang harus dilakukan
agar program dapat diunduh pada mikrokontroler dan dapat bekerja sesuai dengan jenis mikrokontrolernya. Inisialisasi terdiri dari pemberian header files dari fungsi library yang sesuai kebutuhan dengan diawali “#include”. “#include <mega32a.h>” berfungsi untuk mendefinisikan register input dan output (I/O) untuk mikrokontroler ATmega32A. “#include
” digunakan sebagai bentuk dasar untuk fungsi I2C bus master. Fungsi ini dimasukkan setelah mendeklarasikan alamat I/O dari Register Data Port dimana I2C Bus terkoneksi dan Data Bits yang digunakan untuk SDA dan SCL. “#include <math.h>” digunakan sebagai bentuk dasar untuk fungsi matematika. “#include <delay.h>” digunakan sebagai bentuk dasar dari penundaan waktu. “include <1wire.h>” digunakan sebagai bentuk dasar untuk fungsi 1-Wire. “include ” digunakan sebagai bentuk dasar untuk menggunakan fungsi pengambilan data suhu dari sensor DS1820.
60
Konfigurasi mikrokontroler dilakukan untuk mengaktifkan fitur-fitur yang akan dipakai seperti komunikasi antarmuka I2C, 1-Wire dan USART untuk proses pengiriman dan penerimaan data. Konfigurasi komunikasi I2C ditulis dalam kode program berikut: #asm .equ __i2c_port=0x1B ;PORTA .equ __sda_bit=6 .equ __scl_bit=7 #endasm
Konfigurasi komunikasi 1-Wire ditulis dalam kode program berikut: #asm .equ __w1_port=0x18;PORTB .equ __w1_bit=1 #endasm
“#asm” merupakan salah satu C prepocessor seperti “#include”. “#asm” ini diikutkan untuk mendefinisikan PORT dan bit yang digunakan untuk komunikasi I2C dan 1-Wire. Konfigurasi fungsi USART terdiri dari beberapa bagian seperti USART Receiver Buffer, USART Receiver Interrupt Service Routine, fungsi getchar (fungsi untuk mendapatkan satu karakter dari laptop), fungsi putchar (fungsi untuk memberikan satu karakter ke laptop), USART Transmitter Buffer, dan USART Transmitter Interrupt Service Routine. Pengaktifan fitur-fitur mikrokontroler seperti PORT I/O dan USART dilakukan di dalam bagian utama program yaitu “void main ()”. Pengaktifan PORT dilakukan dengan menentukan lokasi alamat memori I/O yaitu Data Direction Register (DDRx), Data Register (PORTx), dan Port Input Pins (PINx). DDxn bit pada DDRx Register menentukan fungsi pin tersebut. Logika 1 mengartikan bahwa pin pada PORT tersebut dikonfigurasikan sebagai output. Logika 0 berarti pin dikonfigurasikan sebagai input. Jika PORTxn ditulis dengan
61
logika 1 ketika pin dikonfigurasikan sebagai input, maka pull up resistor akan aktif. Pull up resistor akan tidak aktif jika PORTxn ditulis dengan logika 0. Jika PORTxn ditulis dengan logika 1 ketika pin dikonfigurasikan sebagai output, maka PORT tersebut akan mengeluarkan tegangan sebesar 5 Volt (tegangan kerja mikrokontroler). Penulisan logika 0 akan menyebabkan PORT menjadi Ground. Pada program mini ROV ini, tiap-tiap PORT dikonfigurasikan sebagai berikut: PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0xFF; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0x00;
DDRA dan DDRD dikonfigurasikan sebagai input karena pada penelitian ini tidak digunakan. DDR PORTB dan PORTC bernilai 0xFF mengartikan bahwa semua pin pada PORT ini bertindak sebagai output. Hal ini dikarenakan pada kedua PORT ini digunakan untuk konfigurasi switching thruster. Inisialisasi fitur USART ditulis pada kode berikut: UCSRA=0x00; UCSRB=0xD8; UCSRC=0x06; UBRRH=0x00; UBRRL=0x19;
Inisialisasi ini memiliki arti bahwa mikrokontroler ini berkomunikasi dengan laptop pada baudrate 9600 kbps (kilobyte per second) dengan parameter komunikasi: •
8 Data, 1 Stop, No Parity
•
Penerima USART: aktif
62
•
Pengirim USART : aktif
•
Mode USART: Asynchronous
4.3.2.
Transmisi Data Pentransmisian data pada mini ROV ini dapat diaktifkan dan
dinonaktifkan. Kode program diletakkan di dalam fungsi “while” sehingga selalu diulang. Pengaktifan transmisi dilakukan apabila karakter “a” dikirim ke mikrokontroler. Transmisi dinonaktifkan dengan mengirimkan karakter “s”. Karakter ini akan diterima oleh mikrokontroler dengan perintah “tele=getchar()”. Pada saat karakter “a” dikirim maka transmisi akan aktif dan akan melakukan pengiriman data accelerometer, arah, pitch, roll, dan suhu. Format pengiriman data akan dibahas pada sub sub bab berikutnya. Kodenya seperti berikut: while (1) { tele=getchar(); if(tele=='a') { #asm("cli"); transmisi=1; #asm("sei"); } if(tele=='s') { #asm ("cli"); transmisi=0; putchar(13); putchar(10); #asm("sei"); } }
4.3.3.
Pengambilan Nilai Arah, Pitch, dan Roll dari CMPS10 Kompas CMP10 dihubungkan dengan mikrokontroler ATmega32A
menggunakan komunikasi I2C. Pengambilan data CMPS10 untuk arah menggunakan kode program berikut:
63
unsigned char cmps10(char reg) {int nilai; i2c_start(); i2c_write(0xC0); i2c_write(reg); i2c_start(); i2c_write(0xC1); nilai=i2c_read(0); i2c_stop(); return nilai; }
Proses pengambilan data CMPS10 dimulai dengan kode “i2c_start()”. Kode ini memerintahkan mikrokontroler untuk memulai komunikasi I2C. “i2c_write(0xC0)” akan memerintahkan mikrokontroler untuk menulis kode heksadesimal C0 pada alamat modul kompas, kemudian menulis register yang diinginkan pada kode “i2c_write(reg)”. Register ini sesuai dengan Tabel 1. Selanjutnya diikuti dengan start bit lagi. Penulisan alamat modul kompas dilakukan dengan kode heksadesimal C1 yang berarti read/write high. Perintah berikutnya ialah “i2c_read(0)”. Mikrokontroler akan membaca data yang keluar dari modul kompas CMPS10 tanpa adanya ack (acknowledgement). “i2c_stop()” memerintahkan mikrokontroler untuk menghentikan komunikasi I2C. Data yang terbaca akan tersimpan pada variabel “nilai”.
4.3.4.
Pengambilan Nilai Accelerometer dari H48C H48C dihubungkan ke mikrokontroler pada PORT yang telah ditentukan.
Pendefinisian kaki-kaki H48C yang terhubung dengan mikrokontroler perlu dilakukan. Kode programnya sebagai berikut: #define #define #define #define
CLK PORTA.0 Di PINA.1 Do PORTA.1 CS PORTA.2
64
“#define” merupakan C preprocessor yang digunakan untuk mendefinisikan macro. “#define CLK PORTA.0” menandakan bahwa variabel CLK (clock H48C) dihubungkan ke PORT A.0. Clock ini berfungsi untuk menginisialisasi konversi dan clock out tiap bit konversi yang dilakukan. “#define Di PINA.1” menandakan bahwa variabel Di (Data In) dihubungkan ke PIN A.1. Data In digunakan untuk mengisi kanal konfigurasi data ke dalam alat. “#define Do PORTA.1” berarti Do (Data Out) dihubungkan ke PORT A.1. Data Out befungsi untuk mengatur perubahan hasil keluaran konversi AD (analog digital). “#define CS PORTA.2” berarti kaki CS H48C dihubungkan ke PORTA.2. CS berfungsi untuk menginisialisasi komunikasi dengan alat dimana ketika berlogika 0 akan menghentikan konversi dan berlogika 1 akan melakukan konversi. Selain mendefisinikan kaki-kaki H48C yang terhubung ke mikrokontroler juga perlu didefinisikan Data In dan Data Out dengan kode berikut: #define DATA_IN #define DATA_OUT
0b11111101 0b11111111
Kode di atas mengartikan bahwa “DATA_IN” bernilai 11111101 (biner) atau FD (heksadesimal) atau 253 (desimal). Bilangan ini digunakan untuk mengubah sinyal dari kondisi high/tinggi ke low/rendah. Pemberian nilai 0 dilakukan pada bit 1 dikarenakan Data In didefinisikan pada PINA.1. “DATA_OUT” bernilai FF yang berarti sinyal dibuat ke dalam kondisi high. Komunikasi antara mikrokontroler dengan H48C dilakukan dengan menggunakan beberapa kode program di bawah ini. Langkah pertama ialah membuat fungsi clock yang digunakan untuk mengubah sinyal dari high ke low dengan periode tidak lebih dari 0,1 mikrodetik. Hal ini dikarenakan komponen ADC MCP3204 yang berada di dalam H48C memiliki spesifikasi untuk
65
mengeluarkan 12 data bits dalam waktu maksimum 1,2 milidetik. Kegagalan untuk memenuhi kriteria ini menyebabkan galat linearitas pada konversi. Hal yang perlu menjadi catatan adalah pada seluruh siklus konversi data H48C, ADC MCP3204 tidak membutuhkan kecepatan yang konstan selama spesifikasi timing terpenuhi. Kodenya seperti berikut: void clock() { CLK=0; delay_us(5); CLK=1; delay_us(5); }
Kode di atas berfungsi untuk membuat sinyal clock dan mengakibatkan sinyal yang dimasukkan ke dalam H48C seperti Gambar 56.
Gambar 56. Sinyal CLK pada H48C
Langkah berikutnya ialah membaca data dari H48C. Kodenya seperti berikut: int read_HC(unsigned char axis) { int looping, hc; DDRA=DATA_OUT; CS=0; Do=1; clock(); Do=1; clock(); for(looping=3;looping>0;looping--) { Do=(axis>>(looping-1)) & 0x01; clock(); } DDRA=DATA_IN; Do=1; clock();
66
clock(); hc=0; for(looping=0;looping<12;looping++) { CLK=0; delay_us(1); hc<<=1; hc|=Di; CLK=1; delay_us(1); } CS=1; return hc; }
Pada kode di atas ada inisialisasi variabel “looping” dan “hc” dengan tipe integer. Variabel “looping” digunakan untuk melakukan perulangan. Variabel “hc” digunakan sebagai penyimpan sementara dari nilai accelerometer yang diterima mikrokontroler dari H48C. DDRA=DATA_OUT berarti DDRA difungsikan sebagai DATA_OUT. CS diberi logika 0 untuk menginisialisasi komunikasi antara mikrokontroler dengan H48C. Start bit dimulai saat CS berlogika 0 dan Do dibuat high. Kemudian diberi perintah clock untuk membuat satu sinyal high and low dengan periode 5 mikrodetik. Do dibuat high untuk memilih mode control bit selection pada single input. Kemudian diberi perintah clock lagi (Gambar 57).
Gambar 57. Sinyal untuk memulai start bit dan pemilihan mode input (Biru: start bit; Merah: pemilihan mode input)
67
Langkah berikutnya ialah pemilihan kanal konversi, kanal ini dipilih dengan menggunakan fungsi “for”. Fungsi ini melakukan pemilihan kanal dimana kanal yang digunakan adalah kanal 0 untuk variabel axisnya bernilai 0, kanal 1 untuk axis 1, kanal 2 untuk axis 2, kanal 3 untuk axis 3. Pemilihan kanal ini digunakan untuk mengeluarkan data voltase dari tiap axis dimana nilai variabel axis-nya 0 berarti nilai voltase pada axis x, 1 untuk axis y, 2 untuk axis z dan 3 untuk tegangan referensi. Pemilihan kanal ini sesuai dengan Tabel 8.
Tabel 8. Pemilihan kanal pengambilan data accelerometer Control Bit Selections Single/ Diff 1 1 1 1
D2 X X X X
D1 0 0 1 1
D0 0 1 0 1
Konfigurasi Input
Pemilihan Kanal
Single ended Single ended Single ended Single ended
CH0 CH1 CH2 CH3
Keterangan : X = tidak dihiraukan
Setelah pemilihan kanal, DDRA difungsikan sebagai DATA_IN yang akan menerima data dari H48C. Do=1 diberi logika 1 untuk membuat dalam keadaan high. Setelah itu dilakukan clocking sebanyak 2 kali untuk memberitahukan H48C akan waktu pengambilan sampel dan pemberian null bit dengan kode hc=0. Pengambilan data dari H48C dilakukan dengan fungsi “for (looping=0; looping<12; looping++)”. Perulangan dilakukan sebanyak 12 kali dikarenakan bit Data Out dari MCP3204 hasil konversi ada 12 bit dimulai dari bit 0 hingga bit 11. Fungsi ini dimulai dengan membuat CLK berlogika 0. Penundaan waktu CLK dilakukan agar tetap low sebanyak 1 mikrodetik. Kemudian nilai hc sebelumnya digeser ke kiri 1 kali. Nilai hc baru diisi dari nilai Di. CLK diberi logika 1 untuk mengakhiri pengambilan data bit ini dan ditunda 1
68
mikrodetik. Setelah semua data diambil, CS diberi logika 1 untuk mengakhiri konversi. Pengambilan data accelerometer dari H48C belum memberikan nilai accelerometer yang sesungguhnya. Data ini perlu dikonversi sehingga menjadi nilai g-force. Kode ini didapat dari persamaan 14. Pengkonversian dilakukan oleh fungsi berikut: float konversi(int vRef,int vAxis) { float f; if (vAxis>=vRef)f=(vAxis-vRef)*0.0022; if(vAxis
4.3.5.
Pengambilan data suhu dari sensor DS1820 Sensor suhu DS1820 berkomunikasi dengan mikrokontroler menggunakan
komunikasi 1-Wire. Komunikasi ini hanya membutuhkan satu kabel yang terhubung pada sensor dan mikrokontroler. Komunikasi ini berbeda dengan komunikasi I2C yang membutuhkan dua kabel untuk berkomunikasi. Hal yang pertama dilakukan dalam mendefinisikan maksimum device yang dapat diakses dengan kode “#define MAX_DS1820 8”. Kode ini mengartikan bahwa sensor DS1820 yang dapat diakses maksimum delapan. Inisialisasi variabel dilakukan pada kode berikut: unsigned char ds1820_devices; unsigned char ds1820_rom_codes[MAX_DS1820][9];
Variabel ds1820_devices digunakan untuk menyimpan nilai dari jumlah device yang terhubung ke mikrokontroler melalui komunikasi 1-Wire. Variabel ds1820_rom_codes digunakan untuk memberikan nilai device ROM codes storage area.
69
Di dalam fungsi “void main()” ditulis kode “w1_init()” untuk menginisialisasi device yang terhubung dengan mikrokontroler. Kode “ds1820_devices=w1_search (0xf0,ds1820_rom_codes)” digunakan mencari device yang terhubung ke mikrokontroler dengan menggunakan komunikasi 1Wire. Kode “temp=ds1820_temperature_10(&ds1820_rom_codes[0][0])” digunakan untuk mengambil nilai suhu yang diukur oleh sensor DS1820. Suhu yang terukur memiliki satuan derajat celcius (°C).
4.3.6.
Penyusunan format data dan pengiriman ke komputer Penyusunan format data dilakukan dengan kode program berikut. Data
akan dikirim apabila “transmisi=1”. Kode ini diletakkan dalam fungsi “while (1)” agar perulangan tetap dilakukan. Kodenya sebagai berikut: if(transmisi==1) { #asm("cli"); arah=cmps10(2)<<8; arah+=cmps10(3); p1=cmps10(4); roll=cmps10(5); pitch2=kemiringan(p1); vX=read_HC(0); vY=read_HC(1); vZ=read_HC(2); vRef=read_HC(3); ax=konversi(vRef,vX); ay=konversi(vRef,vY); az=konversi(vRef,vZ); temp=ds1820_temperature_10(&ds1820_rom_codes[0][0]); printf("%4.2f", ax); putchar(0x20); printf("%4.2f", ay); putchar(0x20); printf("%4.2f", az); putchar(0x20); printf("%u.%u ", arah/10, arah%10);
70
putchar(0x20); printf("%5.2f ", pitch2*1.41176470588235); putchar(0x20); printf("%5.2f ",roll*1.41176470588235); putchar(0x20); printf("%-i.%-u\n\r",temp/100,abs(temp%10)); putchar(13); putchar(10); delay_ms(1000); #asm("sei"); };
Pada kode program di atas, pengambilan data yang pertama ialah pengambilan data dari CMPS10. Variabel arah, p1, pitch2 dan roll didefinisikan dulu sebelumnya di bawah “void main()” dengan menuliskan kode int arah, p1, roll dan float pitch2. “arah=cmps10(2)” menjelaskan bahwa variabel arah bertipe integer dan digunakan untuk mengambil data CMPS10 pada register 2 yaitu register untuk mengambil data arah (heading). “arah+=cmps10(3)” mengartikan bahwa mode register yang digunakan adalah 16 bit dimana register 2 diambil dulu sebagai high byte kemudian register 3 diambil sebagai low byte. Variabel p1 akan menyimpan data pitch yang diambil dari register 4 CMPS10. Variabel roll akan menyimpan data roll dari register 5 CMPS10. “pitch2=kemiringan (p)” berarti nilai p yang didapat dari data pitch dimasukkan ke dalam fungsi kemiringan agar nilai yang keluar berupa nilai derajat dari 0° – +180° dan 0° – -180°. Fungsi ini diperlukan karena komponen abakus TABVCInd yang diletakkan pada program delphi memiliki rentang nilai pitch dari 0° – +180° dan 0° – -180°. Fungsi kemiringan diletakkan di luar program utama “void main()” dengan kode seperti berikut: float kemiringan(float pitch) { float p; if (pitch<=128)
71
{p=pitch; } if(pitch>128) {p=(pitch)-255; } return p; }
Pengambilan data berikutnya ialah data accelerometer. Data accelerometer ini diambil pada tiap sumbu. Variabel yang diperlukan adalah vX, vY, vZ, dan vRef dengan tipe integer dan ax, ay, az dengan tipe float. Variabel ini diinisialisasi di bawah void main() dengan kode int vX, vY, vZ, vRef dan float ax, ay, az. Kemudian data accelerometer dibaca dengan kode read_HC (axis) dimana axis bernilai sesuai dengan kanal yang akan digunakan. Setelah data diambil, konversi dilakukan agar memperoleh data accelerometer dalam satuan gforce. Data arah, pitch, roll, accelerometer, dan suhu kompartemen yang telah diperoleh kemudian disusun untuk dikirim ke mikrokontroler. Data yang keluar akan memiliki format berbentuk seperti Tabel 9. Kode pengiriman data dilakukan dengan menulis perintah “printf” untuk mengirim data dalam bentuk kalimat dan putchar dalam bentuk karakter. Sebagai contoh printf("%4.2f", ax) memiliki arti bahwa data yang keluar (%) adalah data tipe f (float) dengan banyaknya angka 4 dimana 2 angkanya adalah angka di belakang koma dan diperoleh dari variabel ax. Pada bagian pengiriman data pitch dan roll, ada perkalian data dengan konstanta sebesar 1,41176470588235. Konstanta ini diperlukan untuk membuat data pitch dan roll bernilai 0° – 360° dikarenakan keluaran nilai pitch dan roll memiliki rentang 0 – 255 untuk nilai 0° – 360°.
72
Tabel 9. Format pengiriman data B y t e
1 2 3 4
D a t a
A c c
5
20 H
X
6 7 8 9 A c c Y
4.3.7.
10
20 H
11 12 13 14 A c c
15
16 17 18 19
20 H
A r a h
Z
20
21 22 23 24 25
20 H
P i t c h
26
27 28 29 30 31
32
33 34 35
36
20 H
R o l l
20 H
S u h u
0D 0A H H
37
Pergerakan thruster Pergerakan thruster dilakukan dengan menuliskan kode program yang
disesuaikan dengan penempatan pin dari EMS 2A Dual H-Bridge dan EMS 5A HBridge yang telah dijelaskan pada bagian metodologi. Kode programnya sebagai berikut: if(tele=='0') //BERHENTI { #asm("cli"); PORTB=0X00; PORTC=0X00; #asm("sei"); } if(tele=='1') //MAJU { #asm("cli"); PORTC=0X00; PORTB.4=1; PORTB.5=0; PORTB.6=1; PORTB.7=0; #asm("sei"); } if(tele=='2') //MUNDUR { #asm("cli"); PORTC=0X00; PORTB.4=0; PORTB.5=1; PORTB.6=0; PORTB.7=1;
73
#asm("sei"); } if(tele=='3') { #asm("cli"); PORTC=0X00; PORTB=0X10; #asm("sei"); } if(tele=='4') { #asm("cli"); PORTC=0X00; PORTB=0X40; #asm("sei"); } if(tele=='5') { #asm("cli"); PORTB=0X00; PORTC=0X4d; #asm("sei"); } if(tele=='6') { #asm("cli"); PORTB=0X00; PORTC=0X8e; #asm("sei"); }
//KIRI
//KANAN
//NAIK
//TURUN
Fungsi “if” digunakan untuk mencocokkan karakter yang masuk ke dalam mikrokontroler dengan perintah yang ingin dijalankan. Tujuh fungsi ini sesuai dengan jumlah perintah untuk menggerakkan motor yaitu semua motor mati, maju, mundur, belok kanan, belok kiri, naik, dan turun. Perintah akan dijalankan apabila karakter yang diterima melalui kode “tele=getchar()” sesuai dengan salah satu dari fungsi “if” di atas. Apabila karakter yang diterima tidak sama maka tidak ada perintah yang dilakukan. Penjelasan kode di atas apabila disederhanakan maka akan didapat Tabel 10.
74
Tabel 10. Aktivasi motor berdasarkan karakter yang dikirim Karakter Aktivasi Tindakan 0 Motor 1,2,3,dan 4 berhenti Berhenti 1 Motor 1 dan 2 CCW Maju 2 Motor 1 dan 2 CW Mundur 3 Motor 2 CCW Belok kiri 4 Motor 1 CCW Belok kanan 5 Motor 3 dan 4 CCW Naik 6 Motor 3 dan 4 CW Turun Keterangan: CW : Clockwise (searah jarum jam) CCW : Counter-clockwise (berlawanan arah jarum jam)
4.4.
Program Antarmuka Pengguna Grafis Program antarmuka pengguna grafis (GUI) dibuat dengan menggunakan
program Delphi 7. Program GUI (Gambar 58) ini dibuat dengan menu tampilan video, kompas, pitch, roll, waktu operasi, nilai accelerometer, nilai suhu kompartemen, 3 dimensi mini ROV, pengaktifan dan penonaktifan transmisi data dari dan ke mikrokontroler, pengendalian motor dengan joystick, penyimpanan video ke laptop, dan penyimpanan data mentah hasil transmisi dari mini ROV.
Gambar 58. Tampilan GUI RJ45 V2
75
Program GUI berekstensi executable file (*.exe) sehingga memungkinkan pengguna untuk menjalankan program dalam lingkup yang luas dan dapat dipindahkan dengan leluasa karena tidak terkait dengan program tertentu dan tidak memerlukan instalasi terlebih dahulu. Listing program GUI dapat dilihat pada Lampiran 12.
4.4.1.
Program penampil video Program ini dibedakan menjadi dua bagian yaitu bagian video depan dan
video bawah sesuai dengan jumlah kamera CCD yang terdapat pada RJ45 V2. Program penampil video ini menggunakan komponen Video Lab Delphi yaitu TVLDSImageDisplay, TVLDSCapture, dan TVLAVILogger. TVLDSImageDisplay digunakan untuk menampilkan video dari komponen TVLDSCapture. TVLDSCapture digunakan untuk mengambil gambar dari kamera CCD yang dihubungkan melalui TV Tuner. TVAVILogger digunakan untuk merekam video yang terhubung ke komponen TVLDSCapture. Pada program ini, pengguna dapat melakukan perekaman video dengan menekan tombol start. Penyimpanan video dilakukan dengan menekan tombol simpan. Setelah tombol ini ditekan maka akan muncul direktori file yang tersimpan seperti Gambar 59.
Gambar 59. Direktori file video yang tersimpan
4.4.2.
Program komunikasi serial antara komputer dan mikrokontroler Program ini berisikan pilihan COM yang akan digunakan untuk
komunikasi antara Laptop dengan mikrokontroler. Komponen yang digunakan untuk memilih COM adalah TComPort. Komponen ini berfungsi untuk mengatur
76
komunikasi pada program GUI ini. Pemilihan COM pada program GUI ini dilakukan dengan menekan tombol setting. Kotak dialog akan muncul setelah tombol setting ditekan seperti yang terlihat pada Gambar 60.
Gambar 60. Pengaturan komunikasi serial pada GUI
Pemilihan COM ini disesuaikan dengan COM yang terdapat pada USB Serial Port. Pengaturan COM USB Serial Port dapat dilakukan pada Device Manager. Pengaturan COM USB Serial ini harus sesuai dengan kecepatan komunikasi serial pada mikrokontroler.
4.4.3.
Program joystick untuk menggerakkan motor Program ini dijalankan tanpa adanya indikator yang ditampilkan pada
GUI. Program ini berfungsi untuk mengenali masukan dari joystick dan mengirimkan perintah tersebut sesuai dengan pergerakan yang telah ditetapkan. Perintah yang dijalankan dapat dilihat pada Tabel 11. Tabel 11. Penekanan tombol joystick dan perintah motor yang dilaksanakan Tombol yang ditekan Perintah Maju Maju Mundur Mundur Kiri Belok kiri Kanan Belok kanan Berhenti Kotak ( ) Berhenti Bundar (Ο) Naik Segitiga (Δ) Tanda perkalian (X) Turun
77
4.4.4.
Program penampil arah, pitch, dan roll Program penampil arah, pitch dan roll ini menggunakan komponen
Abakus Delphi yaitu TAbVCInd (Gambar 61). Komponen ini akan menampilkan nilai arah dari utara, barat, timur dan selatan. Komponen ini juga menampilkan pitch dan roll dari mini ROV dalam bentuk grafis dan angka.
Gambar 61. Penampil arah, pitch, dan roll
Selain menggunakan program di atas, nilai arah, pitch dan roll ini juga ditampilkan secara tiga dimensi menggunakan komponen Graph3D. Komponen ini akan memperlihatkan posisi mini ROV secara tiga dimensi (Gambar 62).
Gambar 62. Tampilan posisi mini ROV secara tiga dimensi
4.4.5.
Program penghitung waktu operasi Program ini digunakan untuk melihat waktu yang telah digunakan untuk
mengoperasikan mini ROV. Waktu ini sangat diperlukan untuk melihat seberapa lama mini ROV dapat beroperasi di dalam air. Program ini berisikan waktu dalam format jam:menit:detik. Penghitungan aktif pada saat transmisi data sudah
78
diaktifkan. Program ini menggunakan komponen Abakus Delphi yaitu TAbOpHourCounter (Gambar 63).
Gambar 63. Penampil waktu operasi
4.4.6.
Program penunjukan sikap (attitude) mini ROV Program ini menampilkan nilai accelerometer dari tiap-tiap sumbu yaitu
sumbu x, sumbu y, dan sumbu z. Program ini menggunakan komponen SDL RasterLab (Gambar 64). Nilai yang keluar pada tampilan ini sesuai dengan nilai yang keluar dari mikrokontroler.
Gambar 64. Tampilan nilai accelerometer
4.4.7.
Program penampil suhu kompartemen RJ45 V2 Program ini menampilkan nilai suhu yang terdeteksi dari sensor suhu
Dallas. Nilai suhu ini sesuai dengan nilai suhu yang terukur di dalam kompartemen elektronik. Program ini menggunakan komponen SDL RasterLab dengan tampilan yang mirip dengan Gambar 64.
4.5.
Pengujian kinerja mini ROV Pengujian kinerja dilakukan untuk melihat seberapa baik mini ROV ini
dapat digunakan. Pengujian meliputi pengujian daya apung, pengujian kompas
79
digital CMPS10, pengujian accelerometer H48C, pengujian motor, pengujian kinerja video, dan pengujian kinerja GUI.
4.5.1.
Pengujian daya apung Massa RJ45 V2 saat belum dimasukkan komponen elektronik adalah 6,3
kg. Setelah ditambahkan dengan komponen, massa bertambah menjadi 10 kg. Mini ROV RJ45 V2 memiliki efisiensi berat sebesar 36% dibandingkan dengan RJ45. Pada saat mini ROV belum ditempatkan dengan komponen telah dilakukan pengujian daya apung. Hasilnya mini ROV mengapung. Pemberian pemberat dilakukan untuk melihat perubahan daya apungnya. Pemberat ini menggunakan weight belt. Pemberian weight belt ini mencapai 9 kg untuk mengkondisikan mini ROV tercelup ke dalam air. Pada saat semua komponen sudah dimasukkan, pemberat yang dibutuhkan agar mini ROV melayang berkisar antara 4 hingga 5 kg. Banyaknya pemberat ini memberikan efek penambahan berat pada mini ROV. Kelemahan adanya pemberat ini adalah motor kurang kuat untuk menggerakkan mini ROV dikarenakan adanya pertambahan beban yang harus digerakkan oleh motor.
4.5.2.
Pengujian kompas digital CMPS10 Pengujian dilakukan untuk melihat kinerja kompas digital CMPS10 dalam
penentuan arah, pitch dan roll. Penentuan arah menggunakan kompas sebagai acuannya. Penentuan pitch dan roll menggunakan busur derajat untuk melihat kemiringannya (Gambar 65). Dari hasil percobaan diperoleh nilai arah dengan galat yang bervariasi (Gambar 66). Galat diperkirakan berasal dari induksi medan magnet yang
80
berasal daari komponeen elektronikk seperti ad daptor. Galaat dapat dihhilangkan deengan menambahhkan magneetic shieldinng (Gambar 67). Maggnetic shieldding merupaakan benda yanng berfungsii untuk meliindungi kom mponen darri induksi m magnet.
Gambar 65. 6 Penempaatan busur derajat d padaa percobaann sudut pitchh (a) dan roll (b)
Gambar 66. 6 Pengukuuran CMPS1 10 tanpa maagnetic shieelding
Gambar 677. Pengukurran CMPS10 0 dengan magnetic m shieelding
81
Bahan Magnetic shielding yang diujicobakan pada CMPS10 ada 3 buah yaitu akrilik, kayu, dan seng (Gambar 68). Dari ketiga bahan, seng memberikan hasil yang bagus dalam menghilangkan galat. Namun pada saat kompartemen diletakkan pada rangka terjadi galat yang bervariasi (Gambar 69). Galat yang besar terjadi pada arah 90° dan 270°. Galat diduga karena adanya medan magnet yang berasal dari induksi motor DC.
Gambar 68. Bahan magnetic shielding yang diujicobakan (kiri : akrilik, tengah : kayu, kanan : seng)
Gambar 69. Pengukuran CMPS10 setelah dimasukkan ke dalam rangka
STMicroelectronics (2010) menyatakan bahwa galat yang terjadi pada pengukuran arah dapat disebabkan adanya medan magnet eksternal atau adanya error pada pengukuran pitch atau roll. Error pada pengukuran pitch atau roll
82
disebabkan oleh pengukuran accelerometer yang tidak dapat membedakan gravitasi bumi dari akselerasi linear atau akselerasi angular. Caruso (2011) juga menyatakan bahwa adanya pengaruh besi yang berada pada sekitar kompas digital menyebabkan kompas tidak dapat mengimbangi efek dari besi tersebut. Caruso juga menjelaskan bahwa keakuratan pengukuran arah ditentukan oleh resolusi ADC (Analog to Digital Converter), galat dari sensor magnetik, efek dari suhu, materi besi yang berada di sekitarnya, galat dari kemiringan kompas, dan variasi dari medan magnet bumi. Dari hasil pengujian, kemungkinan besar galat disebabkan oleh adanya pengaruh besi di sekitarnya. Sensor kompas menghasilkan nilai arah didasarkan pada pengukuran medan magnet bumi. Sensor magnetik harus dapat mengukur medan magnet tanpa adanya gangguan dari sumber magnet. Besarnya gangguan tergantung dari isi material platform dan konektor serta benda-benda besi bergrak di dekat kompas. Peletakan motor pada bagian samping mini ROV menyebabkan adanya gangguan pada pembacaan arah. Penggambaran gangguan ini dapat diilustrasikan dari Gambar 70.
Objek besi + medan magnet seragam = gangguan medan magnet
Gambar 70. Ilustrasi gangguan besi pada medan magnet
Gangguan magnet dapat diklasifikasikan menjadi hard iron effect dan soft iron effect. Gangguan magnet yang terjadi pada mini ROV diduga berasal dari
83
jenis hard iron effect. Hal ini dikarenakan adanya magnet permanen yang ada di dekat kompas yaitu motor DC dari bilge pump dan rangka yang terbuat dari besi. Pengujian sudut pitch (Gambar 71) memperoleh hasil yang berbeda. Galat yang besar terjadi setelah mini ROV dimiringkan 10°. Pengujian yang dilakukan pada sudut roll (Gambar 72) diperoleh hasil dimana sudut roll mulai memiliki galat yang besar setelah sudut 20 derajat dan pada sudut -15 derajat. Galat yang terjadi diduga karena letak dari CMPS10 yang tidak berada di pusat rotasi (rotation center) dari platform. Hal ini mengakibatkan adanya kecepatan angular yang tidak tetap dan menjadi sebab adanya akselerasi eksternal yang tidak diinginkan pada CMPS10. Akselerasi ini dapat berupa akselerasi linear dan angular. Masalah ini juga dijelaskan oleh Lai et.al (2010).
Gambar 71. Pengujian sudut pitch
84
Gambar 72. Pengujian sudut roll
4.5.3.
Pengujian H48C Pengujian dilakukan untuk melihat kinerja sensor accelerometer H48C.
Pengujian dilakukan dengan menempatkan kompartemen pada bidang datar. Hasil percobaan dapat dilihat pada Tabel 12. Hasil percobaan ini sesuai dengan Tabel 7. Tabel 12. Nilai accelerometer pada tiap posisi Posisi Tetap Z turun Z Naik Y turun Y naik X turun X naik
Nilai Accelerometer Acuan Ax Ay Az 0 0 +1 0 0 -1 0 1 0 0 -1 0 1 0 0 -1 0 0
Nilai Accelerometer Uji Ax Ay Az 0,029 0,054 0,953 -0,233 0,044 -0.976 0,039 1,008 0,043 -0,041 -0,973 -0,048 0,983 0 -0,187 -1 0,054 0,143
Pada tiap posisi tetap terdapat nilai maksimum sekitar 1 g yang mengenai sumbu sensing dari sensor accelerometer. Nilai yang keluar tidak sama persis nilai accelerometer acuan. Hal ini diduga karena masih adanya gaya gravitasi yang mempengaruhi sumbu sensing dari axis yang lain. Namun, nilai ini kecil dan dapat dianggap sebagai nilai 0. Nilai yang keluar maksimum adalah 1 g.
85
Nilai ini diartikan bahwa sumbu sensing menerima percepatan gravitasi sebesar 1 g atau sekitar 9,8 N/m2.
4.5.4.
Pengujian sistem kendali Pengujian sistem kendali dibagi menjadi tiga bagian yaitu pengujian
sistem video kamera, kesesuaian gerak motor dengan perintah dari joystick, dan kinerja GUI. Pengujian terhadap sistem video kamera memberikan hasil yang dapat dilihat pada Gambar 73. Video dapat ditampilkan pada program antarmuka grafis (GUI). Perubahan yang terjadi pada mini ROV juga terlihat pada tampilan di program ini.
Gambar 73. Tampilan video kamera depan dan kamera bawah di dalam air
Pada saat cahaya kurang atau tidak ada, kamera akan mengaktifkan sistem LED inframerah sehingga gambar yang keluar menjadi gambar hitam putih (Black and White). Gambar yang dihasilkan tidak terlalu bagus karena kurang jelas
86
namun cukup untuk memberikan petunjuk kepada pilot dalam menggerakkan RJ45 V2 ini. Pengujian kinerja motor dilakukan dengan melihat pergerakan motor apakah sesuai dengan perintah yang dikirim oleh laptop. Pengujian terhadap kinerja motor memberikan hasil yang sesuai dengan Tabel 10. Karakter yang dikirim kepada mikrokontroler telah memberikan putaran motor yang sesuai dengan Tabel 10. Hal ini berarti pengiriman karakter (transmisi data) ke mikrokontroler berhasil. Mikrokontroler juga mengirimkan perintah kepada driver motor untuk menggerakkan motor sesuai dengan karakter yang diterima oleh mikrokontroler. Namun terdapat kekurangan pada kinerja motor. Motor tidak cukup kuat untuk menggerakkan mini ROV secara cepat. Pada saat propeler mini ROV diperintahkan untuk berputar secara bersamaan, motor bergerak tidak mulus (Gambar 74). Propeler bergerak tersendat-sendat. Pada saat satu motor yang hanya digunakan, pergerakannya mulus. Propeler bergerak dengan baik (Gambar 75). Kinerja yang tidak mulus ini diduga karena daya yang diberikan kepada tiap motor tidak sama dan bentuk propeler tidak sesuai dengan penggunaannya di dalam air. Solusi yang digunakan untuk menghilangkan masalah ini adalah dengan menempatkan satu adaptor untuk satu motor dan mengubah bentuk balingbaling (Gambar 76). Perubahan ini memberikan hasil dimana motor kuat untuk menggerakkan mini ROV (Gambar 77). Dengan demikian, masalah motor yang terjadi pada RJ45 dapat diatasi pada penelitian ini. Pengujian terhadap GUI dilakukan dengan melihat apakah semua fitur dapat digunakan. Dari hasil percobaan, semua fitur dapat digunakan. Namun,
87
pada fitur perekaman video terjadi tunda waktu selama 3 detik antara gambar yang ditangkap oleh kamera video dengan gambar yang ditampilkan.
Gambar 74. Aliran air saat motor diaktifkan keduanya (Kiri : percobaan I, Kanan : percobaan II)
Gambar 75. Aliran air saat hanya satu motor yang diaktifkan (Kiri : percobaan I, Kanan : percobaan II)
Gambar 76. Bentuk baling-baling yang digunakan dalam uji coba RJ45 V2 (Kiri : percobaan I, Kanan : percobaan II)
Gambar 77. Pergerakan mini ROV