Translate

Membuat Alat Penunjuk Arah atau Kompas HMC5883L


Membuat Alat Penunjuk Arah atau Kompas HMC5883L
           Pada kesempatan yang berbahagia kali ini, akan dibahas bagaimana cara membuat alat untuk mengetahui arah atau sebagai penunjuk arah, arah tersebut yaitu arah utara, selatan, timur dan barat, kalau urusan tenggara, selatan barat daya dll tidak di bahas, hal itu bisa di tambahkan sendiri dengan membaca output sensor pada computer.
          Alat yang akan dibuat kali ini menggunakan sensor compass yaitu sensor yang memliki respon terhadap rotasi atau putaran, jadi sensor ini akan memiliki nilai yang berbeda saat dia berada dengan posisi hadap yang berbeda, misal jika sensor ini menghadap ke utara dengan ke selatan, maka hasilnya saat posisi menghadap ke utara akan berbeda dengan pada saat sensor menghadap ke posisi selatan, begitulah cara kerja sensor compass, sensor kompas yang dipakai kali ini adalah sensor compass HMC5883L yang mana sensor ini jauh lebih murah dibanding sensor kompas yang lain.
          Alat ini juga dilengkapi 4 buah led sebagai output yang bermacam-macam warna, dimaksudkan agar dapat dengan mudah diketahui arah hadap dari sensor kompas ini, Alat ini menggunakan mikrokontroller ATMega16 sebagai otak pengendali sekaligus pengatur jalannya output dari sinyal masukan sensor compass, sehingga jika dilihat secara keseluruhan alat ini sangat sederhana, tidaklah menggunakan alat yang bermacam-macam, hanya perlu mikrokontroler (minimum Sistem), output led dan sensor compass HMC5883L


 Skematik Minimum System 

Sensor HMC5883L

            Sensor HMC5883L ini adalah sensor yang sangat sensitif sekali terhadap rotasi dan arah hadap sensor, dikarenakan sensor ini menggunakan medan magnet sebagai acuan dari pendeteksiannya. Data yang telah didapat untuk 4 buah mata angin yaitu.

Arah Mata Angin
Data
Utara
255 < X < 257
Selatan
79 < X < 81
Timur
16 < X < 18
Barat
148 < X < 150

            Sensor ini memiliki port koneksi ke mikrokontroller yaitu SDA, SCL, VCC dan GND, sehingga port I2C ini adalah port I/O dari sensor ini, jika dihubungkan ke port mikrokontroller maka dihubungkan ke PortC.0 (SCL) dan PortC.1 (SDA). Berikut Gambar dan konfigurasinya
 


Program Bascom AVR
$regfile = "m16def.dat"
$crystal = 12000000
$baud = 9600
$hwstack = 64
$swstack = 64
$framesize = 64
'--------------------------------------------------------------------
'=====[ Global Vars & Constants ]========
Dim Hmc_x As Integer
Dim Hmc_xl As Byte At Hmc_x + 0 Overlay
Dim Hmc_xh As Byte At Hmc_x + 1 Overlay

Dim Hmc_y As Integer
Dim Hmc_yl As Byte At Hmc_y + 0 Overlay
Dim Hmc_yh As Byte At Hmc_y + 1 Overlay

Dim Hmc_z As Integer
Dim Hmc_zl As Byte At Hmc_z + 0 Overlay
Dim Hmc_zh As Byte At Hmc_z + 1 Overlay
Dim Hmc_status As Byte

Dim X As Single
Dim Y As Single
Dim Z As Single
Dim Angle As Single
Ddrb = &B11111111

Const Hmc_w = &H3C
Const Hmc_r = &H3D

'---------------------------------------------------------------------
'=====[ Misc. config ]==============
Config Scl = Portc.0
Config Sda = Portc.1
Config Twi = 400000
I2cinit

Print "{027}[2J{027}[1;1H";
Print "Starting..."
Print

Gosub Hmc_initialize
'----------------------------------------------------------------------
'*****[ Start of main loop ]*******
Do
   Gosub Hmc_readdata
   Gosub Hmc_readstatus

   ' convert integer to float
   X = Hmc_x
   Y = Hmc_y
   Z = Hmc_z

   Angle = Atn2(y , X)
   Angle = Angle * 57.29577951
   Angle = Angle + 180

   Print "{027}[3;1H";
   Print "Angle  : " ; Fusing(angle , "#.#") ; "{027}[K"
   Print "Status : " ; "&h" ; Hex(hmc_status) ; "{027}[K"

   Waitms 100

   If Angle > 16 And Angle < 18 Then                        'timur
   Portb.0 = 0
   Portb.1 = 1
   Portb.2 = 0
   Portb.3 = 0
   Elseif Angle > 79 And Angle < 81 Then                    'selatan
   Portb.0 = 0
   Portb.1 = 0
   Portb.2 = 1
   Portb.3 = 0
   Elseif Angle > 148 And Angle < 150 Then                  'barat
   Portb.0 = 0
   Portb.1 = 0
   Portb.2 = 0
   Portb.3 = 1
   Elseif Angle > 255 And Angle < 257 Then                  'utara
   Portb.0 = 1
   Portb.1 = 0
   Portb.2 = 0
   Portb.3 = 0
   Else
   Portb.0 = 0
   Portb.1 = 0
   Portb.2 = 0
   Portb.3 = 0
   End If

Loop

End
'---------------------------------------------------------------------
'=====[ Initialize HMC Compass ]========
Hmc_initialize:
   I2cstart
    I2cwbyte Hmc_w
    I2cwbyte &H00
    I2cwbyte &B0101_1000
    I2cwbyte &H0010_0000
    I2cwbyte &H0000_0000
   I2cstop
Return
'---------------------------------------------------------------------
'=====[ Read HMC Compass ]===========
Hmc_readstatus:
' Read HMC Compass status
   I2cstart
    I2cwbyte Hmc_w
    I2cwbyte &H09
   I2cstart
    I2cwbyte Hmc_r
    I2crbyte Hmc_status , Nack
   I2cstop
Return
'----------------------------------------------------------------------
'=====[ Read HMC Compass ]=========
Hmc_readdata:
   I2cstart
    I2cwbyte Hmc_w
    I2cwbyte &H03
   I2cstart
    I2cwbyte Hmc_r
    I2crbyte Hmc_xh , Ack
    I2crbyte Hmc_xl , Ack
    I2crbyte Hmc_zh , Ack
    I2crbyte Hmc_zl , Ack
    I2crbyte Hmc_yh , Ack
    I2crbyte Hmc_yl , Nack
   I2cstop
Return
'------------------------------------------------------------------------


 Cara Penggunaan Alat
           Untuk menggunakan alat ini yaitu pertama menghidupkan alat dengan mengaktifkan sumber catu daya sebagai VCC dan GND, kemudian menghubungkan rangkaian sensor HMC5883L ke minimum system, setelah itu alat siap untuk digunakan, untuk mengetahui arah mata angin dengan cara memutarkan / menghadapkan sensot ke arah utara, selatan, barat dan timur jika led menyala berarti arah yang dituju telah tepat namun jika belum ada led yang menyala berarti arah hadap sensor masih salah, atau kurang tepat. Tampilan hasil secara detailnya seperti berikut

Arah Hadap
Range Data
Led Merah
Led Biru
Led Hijau
Led Kuning
Utara
255 < X < 257
On
Off
Off
Off
Selatan
79 < X < 81
Off
On
Off
Off
Timur
16 < X < 18
Off
Off
On
Off
Barat
148 < X < 150
Off
Off
Off
On
yang lainnya
-
Off
Off
Off
Off


 
VIDEO HASILNYA






1 comment: