CMPS03

Yuhu, akhirnya selama kurang lebih 3 bulan tanpa tulisan..
bisa nulis lagi di blog ini..
kali ini, sensor kompaaaaaaaas!
pas banget deeeh
alesan kenapa sensor kompas?
sekarang karena gw sendiri yang pake sensor ini
buat apa?! ya buat tugas akhir.. :p

capcus, tadinya saya mencoba sensor kompas HMC1052L
keluaran honeywell, cuma mentok sama sensornya
masalahnya adalah data yang dikeluarkan kurang baik (keluarannya analog)
entah kenapa, tapi si idung badung (idha red) juga mendapatkan hasil yang sama
akhirnya pindah haluan ke CMPS03, soalnya bisa beli digi*are
klo HMC harus pesen paling di spark*un,
belum tambah ongkir sama cukai (klo beli 1 jatuh miskin deh gw :P)
tapi tuh barang skrg udah ga ada di spark*un, maklum barang jadul
sekarang udah keluar yang I2C..

Tanpa banyak basa basi..
langkah pertama yang dilakukan adalah:
download datasheet dari sensor kompasnya,
kemudian baca baik-baik apa saja yang harus diperhatikan saat menggunakannya.
woke, selesai..
sekarang tinggal mencoba
siapkan alat2 perangnya seperti
protoboard (ga wajib), mikrokontroller, resistor, kabel2 serta catu dayanya
koneksikan sesuai dengan perintah datasheet.. 😛
eh tunggu dulu, kalibrasi dulu sensornya
caranya?!
cari sendiri di paman google 😀

kalo udah dikalibrasi langkah selanjutnya adalah mencobanya
koneksikan pernagkat sesuai dengan datasheet,
kemudian, program pengendali mikro dengan skrip dibawah ini
(kali ini saya pakai atmega32..)

$regfile = “m32def.dat”
$crystal = 8000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40

Declare Sub Read_compass(byval Adres As Byte , Value As Byte)
Config I2cdelay = 1
Config Sda = Portc.1
Config Scl = Portc.0

Const Addressw = 192
Const Addressr = 193
Dim Adres As Byte
Dim Value As Byte
Dim L_value As Byte
Dim A As Word
Dim Y As String * 8
Dim S As Single
Dim Beat As Byte

Do
Call Read_compass(2 , Value)
A = Value
Call Read_compass(3 , Value)
L_value = Value
Shift A , Left , 8
A = A Or L_value
S = A / 10
Y = Fusing(s , ” ###.#”)
Print “Test Kompas”
Print Y ; Chr(&B11011111) ; “U”
Wait 1

Call Read_compass(1 , Value)
Beat = Value
S = Beat / 255
S = S * 360
Y = Fusing(s , “###.#”)
Print Y ; Chr(&B11011111) ; “U”
Wait 1

Loop

Sub Read_compass(byval Adres As Byte , Byval Value As Byte)
I2cstart
I2cwbyte Addressw
I2cwbyte Adres
I2cstart
I2cwbyte Addressr
I2crbyte Value , 9
I2cstop
End Sub


ok, untuk display saya menggunakan serial
jangan lupa untuk menghubungkan SDA dan SCL ke SDA dan SCL mikro
selain itu, untuk pull up saya menggunakan 10K
nilai ini ga mutlak, cuma biar aman aja saya pake 10K
bisa juga pake 4K7
Register yang saya akses adalah 2&3 dari CMPS03
soalnya lebih presisi, datanya mempunyai tipe word
untuk lebih tau lebih lanjut bisa baca di datasheet..

selamat mencoba
ak67

Advertisements

2 Replies to “CMPS03”

  1. wah nice post mas..
    oiya, kalo diimplementasikan di mobile robot, kalo masang sensornya terlalu deket ama motor DC nya pembacaan sensor jadi kacau..ngakalinnya gimana ya mas?
    thx

    1. terima kasih sebelumnya. kalo jaraknya terlalu dekat tentu akan menjadi masalah
      mengingat motor DC memliki medan magnet..
      saya kurang tahu apakah ada device untuk mengisolasi (eliminasi) medan magnet motor DC?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s