Gambar 23. Letak Modul Sensor SRF02
4.3 Perangkat Lunak
Penyusunan perangkat lunak adalah sebanyak dua bagian pemrograman, yakni pemrograman registrasi alamat I2C sensor dan pemrograman
mikrokontroler ATmega 32. Masing-masing memiliki fungsi berdasarkan spesifikasi komponen penyusunnya.
4.3.1 Program registrasi modul sensor SRF02
Program registrasi modul sensor SRF02 ini disesuaikan spesifikasi modul sensor SRF02 dan mikrokontroler ATmega32. Hal ini dilakukan untuk
memisahkan alamat yang digunakan untuk setiap sensornya. Inisialisasi dan konfigurasi mikrokontroler dilakukan pada saat memulai
pemograman. Hal ini sangat penting dilakukan dan harus benar-benar tepat agar program dapat berjalan sesuai dengan harapan sebelum diunduh kedalam
mikrokontroler dan sensor. Inisialisasi ini meliputi jenis mikrokontroler yang
digunakan, serta beberapa fitur yang digunakan seperti library dan juga definisi port yang digunakan.
i nc l ude mega32a. h i nc l ude del ay . h
Penggunaan Code Vision AVR C ini diawali dengan penulisan header include. include mega32a.h digunakan sebagai deklarasi jenis
mikrokontroler yang akan digunakan, dalam hal ini ATmega 32. Selanjutnya include delay.h membantu dalam penentuan jeda pemrosesan data oleh
mikrokontroler. Kode program yang dipergunakan dalam memproses registrasi sensor adalah
sebagai berikut : t ul i s _SRF2 0Xe0, 0, 0x a0 ;
t ul i s _SRF2 0Xe0, 0, 0x aa ; t ul i s _SRF2 0Xe0, 0, 0x a5 ;
t ul i s _SRF2 0Xe0, 0, 0x e0 ; t ul i s _SRF2 0x e0, 0, 81 ;
whi l e 1 t ul i s _SRF2 0x e0, 0, 81 ;
del ay _ms 100 ;
code “tulis_SRF02” merupakan langkah-langkah yang perlu dilakukan dalam
merubah alamat SRF02. “0Xe0” merupakan kode alamat yang akan digunakan yaitu e0 sebagai kode keluaran dari salah satu sensor, sedangkan “81” merupakan
alamat I2C dari sensor yang akan digunakan.
4.3.2 Program Mikrokontroler
Program mikrokontroler terdiri dari beberapa bagian. Bagian pertama yang harus ada adalah inisialisasi library yang digunakan seperti include
mega32a.h, include delay.h, dan include i2c.h.
Pada inisialisasi komunikasi I2C disertakan juga pin yang digunakan untuk SDA dan SCL yaitu PINC.0 sebagai SCL dan PINC.1 sebagai SDA. SDA merupakan
pin untuk data masuk dan keluar, sedangkan SCL merupakan sarana pengatur clock
dalam perangkat mikrokontroler. Fungsi tulis_SRF02 digunakan untuk memerintah SRF02 melakukan ping.
Fungsi ini menggunakan protokol komunikasi I2C. perintahnya sebagai berikut: v oi d t ul i s _SRF02 uns i gned c har SRF02_ADDRESS, uns i gned
c har al amat , unsi gned c har dat a {
i 2c _s t ar t ; i 2c _wr i t e SRF02_ADDRESS ;
i 2c _wr i t e al amat ; i 2c _wr i t e dat a ;
i 2c _s t op ; }
Fungsi void digunakan karena tidak membutuhkan nilai keluaran yang digunakan dalam program utama. Fungsi ini membutuhkan 3 input dengan nama
variabelnya yaitu SRF02_ADDRESS, alamat, dan data. Tipe data dari ketiga variabel ini sama. Langkah pertama dalam komunikasi I2c adalah i2c_start.
Kode ini digunakan utnuk menandakan bahwa komunikasi dimulai. Kemudian perintah “i2c_writeSRF02_ADDRESS”digunakan untuk menuliskan register
yang diinginkan ke sensor SRF02. “i2c_writealamat” digunakan untuk menuliskan alamat yang ingin diakses. “i2c_writedata” digunakan untuk
mengambil tipe data yang diinginkan. “i2c_stop” digunakan untuk mengakhiri komunikasi i2c.
Fungsi int baca_SRF02 digunakan untuk mengambil data yang telah disimpan oleh SRF02. Fungsinya sebagai berikut:
i nt baca_SRF02 unsi gned char SRF02_ADDRESS, unsi gned c har al amat
{ i nt dat a;
i 2c _s t ar t ; i 2c _wr i t e SRF02_ADDRESS ;
i 2c _wr i t e al amat ; i 2c _s t ar t ;
i 2c _wr i t e SRF02_ADDRESS | 1 ; dat a=i 2c _r ead 0 ;
I 2c _s t op ; r et ur n dat a; }
Fungsi ini memerlukan dua input. Fungsi ini memberikan keluaran yang akan
digunakan pada program utama dengan nama variabel “data”. Komunikasinya mirip dengan void tulis_SRF02. Perbedaannya hanya pada “data=i2c_read0”.
Perintah ini digunakan untuk mengambil data dari SRF02 tanpa adanya ACK acknowledgement.
Pada program utama, programnya sebagai berikut: t ul i s _SRF02 0Xe0, 0, 81 ; s r f 1
t ul i s _SRF02 0XE6, 0, 81 ; t ul i s _SRF02 0XE4, 0, 81 ; s r f 3
t ul i s _SRF02 0XF0, 0, 81 ; s r f 4 del ay _ms 70 ;
dat a=bac a_SRF02 0Xe0, 2 8; dat a+=bac a_SRF02 0x e0, 3 ;
dat a1=bac a_SRF02 0x e6, 2 8; s r f 2 dat a1+=bac a_SRF02 0x e6, 3 ;
dat a2=bac a_SRF02 0x e4, 2 8; dat a2+=bac a_SRF02 0x e4, 3 ;
dat a3=bac a_SRF02 0Xf 0, 2 8; dat a3+=bac a_SRF02 0x f 0, 3 ;
pr i nt f i i i i \ r \ n , dat a, dat a1, dat a2, dat a3 ; del ay _ms 1000 ;
langkah yang dilakukan adalah mengirimkan perintah pada 4 SRF02 untuk melakukan pengukuran. “delay_ms70” digunakan untuk memberikan waktu
pada SRF02 untuk menyelesaikan pengukuran. Kemudian data ini diambil dan ditampilkan pada computer dengan perintah printf.
Pengaksesan 4 SRF02 secara bersama-sama dapat dilakukan karena alamat masing-masing SRF02 berbeda. Alamat pada tiap SRF02 dapat dilihat pada
Tabel 5.
Tabel 5. Konfigurasi alamat modul SRF02 NO SRF02
ALAMAT 1 0XE0
2 0XE6 3 0XE4
4 OXF0
4.4 Uji coba sensor
Pengamatan yang dilakukan dalam mengukur kinerja awal sensor SRF02 terhadap objek yang berpindah dapat dilihat pada Tabel 6 dan Tabel 7.
Tabel 6. Nilai sensor diukur dari titik tengah objek No
Nilai Terdeteksi cm
Pergeseran cm
αSudut pengukuran
α Sudut perhitungan
∆ α
1 91 1 0.6 0.6 0
2 91 4 2.5 2.5 0
3 92 6 3.7 3.7 0
4 93 8 4.9 4.9 0
5 93 11 6.7 6.7 0 6 94 13 8 7.9
0.1 7 95 15 9 9 0
Tabel 7. Nilai sensor diukur dari pangkal objek No
Nilai Terdeteksi cm
Pergeseran cm
αSudut pengukuran
α Sudut perhitungan
∆ α
1 90 0 0 0 0
2 91 1 0.6 0.6 0
3 93 2 1.2 1.2 0
4 94 3 1.8 1.8 0
5 95 4.5 2.7 2.7 0
Pengukuran nilai awal sensor dilakukan untuk menentukan besar maksimum sudut yang akan digunakan pada percobaan selanjutnya. Perbedaan nilai yang
didapat disebabkan karena pada Tabel 6 nilai yang didapat menggunakan titik acuan yaitu tepat pada titik keseimbangan objek. Namun untuk nilai selanjutnya
didapat dari pengambilan dari ujung objek sehingga terjadi perbadaan nilai dari pergeseran objek.
Pengambilan nilai ini masih menggunakan cara manual melalui hyperterminal
dalam pengambilan perubahan nilai yang terjadi. Objek tersebut mengalami perlakuan yakni pergeseran secara lurus hingga sensor tidak
mendeteksi objek. Adapun nilai sudut yang dapat digunakan hingga 10
o
. Nilai sudut ini digunakan dalam menentukan kemiringan maksimum sensor dalam
merancang ke tahap selanjutnya.
4.5 Uji ACM01