Diposkan oleh supri ono | 13 komentar

Digital Kompas CPMS 03 + Bascom AVR + ATMega8 + Android = OLALA …

Robot Penjelajah dilengkapi dengan sistem navigasi yang terintegrasi secara komplek didalam perangkat robot. Dengan adanya sistem navigasi, robot mendapatkan informasi arah posisi maupun yang lainya dengan baik, sehingga robot dapat memutuskan dengan benar kearah mana seharusnya bergerak untuk mencapai lokasi yang diinginkan. Sensor kompas merupakan salah satu sensor yang ada disalam robot penjelajah. Untuk menegaskan pembahasan kali ini ane akan membahas hasil riset akses data kompas digital CPMS 03 yang data hasil pembacaanya di compare dengan data kompas yang ada di smatrphone android. Sebenarnya sudah banyak pembahasan-pembahasan yang mengenai sensor ini, so gimana sob ngak anda salahnya ane buat ni artikel kan???... ni artikel tidak copas sob..ini orosil hasil garapan mekarobot.tm sendiri…Ini diya sob penampakanya…. (^_^)

Digital Kompas sangat popular bagi para praktisi robotic ditanah air akhir-akhir ini salah satunya CMPS03 Magnetic Compass buatan Devantech Ltd, modul ini sangat kecil (4cmx4cm)untuk dapat ditempakan didalam robot yang sobat buat. Gambar dibawah adalah gambar konfigurasi pin modul digital kompas CPMS03 .


Digital Kompas CPMS 03 membutuhkan tegangan kerja sebesar 5volt dengan komsumsi arus ±15mA. Sedangakan data output dari sensor ini dalam bentuk derajat, lihat gambar dibawah sob.
Interface
Untuk berkomunikasi dengan sensor Compas CPMS 03 dapat dilakukan dengan 2 cara, yang pertama dengan mode PWM dan yang kedua dengan mode i2c. didalam pembahasan kita kali ini ane hanya membahas yang komunikasi i2c saja. pemberian sensor Pull UP sebesar 10K /4k7 sangatlah mutlak dilakukan karena akan berdampak pada data i2c yang dibaca nantinya. 
Algoritma i2c communication protocol untuk mengakses hasil pembacaan sensor CPMS03.
1.            Start bit
2.            Kirim data &HC0
3.            Kirim data &HC1
4.            Stop bit
5.            Start bit
6.            Kirim data &HC1
7.            Baca data(0) dan kirim signal ACK
8.            Baca data(0) dan kirim signal ACK
9.            Baca data(1) dan kirim signal NACK
10.        Stop bit
11.        Data hasil pembacaan  tersimpan di data(0) dan data(1)

Register 0 adalah Software revision number. Register 1 adalah data arah yang diubah dalam nilai 0-255. Dalam aplikasinya ini lebih mudah dibandingkan nilai 0-360 karena memerlukan dua byte. Untuk resolusi yang lebih tinggi pada Register 2 dan 3 akan menyimpan data arah 16 bit dengan nilai 0-3599. Ini menunjukkan arah 0-359.9°. Register 4 sampai 11 adalah internal test register. Register 12, 13 dan 14 tidak digunakan. Register 15 digunakan untuk melakukan kalibrasi kompas. Pin 7 adalah input untuk memilih mode operasi 50Hz (low) atau 60Hz (high). Pilihan ini diperlukan untuk melakukan sinkronisasi dengan frekuensi jala-jala PLN jika digital compass menggunakan power supply yang terhubung ke jala-jala PLN. Hal ini dapat menurunkan deviasi pembacaan data arah. Proses konversi didalam sensor, selesai dalam waktu 40mS (50Hz) atau 33.3mS (60Hz). Pin ini memiliki resistor pullup on board dan dapat dibiarkan tidak terhubung (unconnected) untukoperasi 60Hz.
Ini rangkaian interfacenya sob… 



Sekarang kita masuk ke tahap pembuatan program. Program yang di buat mengunakan compiler BASCOM AVR, kalo sob belum punya bias di download disini.

$regfile = "m8def.dat"
$crystal = 8000000

$lib "mcsbyteint.lbx"
Deflcdchar 0 , 14 , 17 , 17 , 14 , 32 , 32 , 32 , 32

Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2 : Cursor Noblink Off : Cls

Config Scl = Portc.4
Config Sda = Portc.5

Dim Hi As Byte , Lo As Byte , Posisi As Integer

Do
  
I2cstart:I2cwbyte &HC0:I2cwbyte &HC1:I2cstop
  
I2cstart
  
I2cwbyte &HC1
  
I2crbyte Hi , Ack
  
I2crbyte Hi , Ack
  
I2crbyte Lo , Nack
  
I2cstop

   Posisi
= Makeint(lo , Hi)
   Lo
= Posisi Mod 10
   Posisi
= Posisi / 10

  
Upperline : Lcd "Posisi : " ; Posisi ; "." ; Lo ; Chr(0)
  
Lowerline : Lcd "Compas CPMS03"
  
Waitms 100
Loop
End

Untuk pengecekan apakah data arah yang dibaca dari sensor compass CPMS03 sama dengan hasil pembacaan sensor kompas yang ada di smartphone Android. So kalo kawan belum punya aplikasi Compas Android bisa download disini. Sedangkan kalo sob pengen mengendalikan mobil robot sob dengan perangkat joystick ada disini.
Ni penampakan dari experiment kita sob.



Download file:
Android COMPAS.APK

13 comments :

  1. terima kasih udah berkunjung blog newbie...para master2 semua

    ReplyDelete
  2. mas kalo gabungin android sama minsys menggunakan kabel data. rangkaian koneksinya seperti apa?

    ReplyDelete
    Replies
    1. harus pake modul MEKAIOIO
      seperti ini!!
      http://mekatronika-corner.blogspot.com/2013/01/mekaioio-android-smartphone-will-release.html

      Delete
  3. KAlau mau beli sensornya dimana gan? mohon infonya

    ReplyDelete
  4. mas... arti "mod" di perhitungan Lo = Posisi Mod 10 apa y ?
    makasih sblumnya :)

    ReplyDelete

Yang sopan.... Sob biar ngak di delete commentnya