mengakses modul sensor gyroscope lisy300 terkalibrasi menggunakan codevision.docx

9
MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION AVR 20JUN Sensor gyroscope yang saya gunakan ini adalah sebuah modul yang terdiri dari sensor Gyroscope LISY300AL da n ADC serial ADC101S01 yang dikeluarkan oleh !A"ALL A# Inc$ !ada modul ini pun telah dilengkapi dengan regulator tegangan 3$3 % sebagai supply nya$ &odul Sensor Gyroscope LISY300AL dapat mendeteksi kecepatan sudut 'angular rate( satu a)is* yaitu sumbu + 'ya,($ Dan mampu membaca sampai - 300./s ull scale$ [PROTOKOL KOMUNIKASI] !ada dasarnya output dari sensor Gyroscope LISY300AL adalah berupa tegangan analog* tetapi oleh !A"ALLA# Inc* output dari sensor Gyroscope tersebut dibaca menggunakan ADC serial$ Sehingga untuk mengak ses modul ini kita har us meng gun akan protokol kumunik asi S!I 'Ser ial !eri pheral Interac e($ eri kut adalah timi ng diag ram car a mengaks es &odul Sens or Gyroscop e LISY300AL 'ADC serial ADC101S01($

Upload: rizki-putra-perdana

Post on 05-Jul-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

8/16/2019 MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

http://slidepdf.com/reader/full/mengakses-modul-sensor-gyroscope-lisy300-terkalibrasi-menggunakan-codevisiondocx 1/9

MENGAKSES MODUL SENSOR GYROSCOPE LISY300

TERKALIBRASI MENGGUNAKAN CODEVISION AVR

20JUNSensor gyroscope yang saya gunakan ini adalah sebuah modul yang terdiri dari sensor Gyroscope

LISY300AL dan ADC serial ADC101S01 yang dikeluarkan oleh !A"ALLA# Inc$ !ada modul ini pun

telah dilengkapi dengan regulator tegangan 3$3 % sebagai supply nya$ &odul Sensor Gyroscope

LISY300AL dapat mendeteksi kecepatan sudut 'angular rate( satu a)is* yaitu sumbu + 'ya,($ Dan

mampu membaca sampai - 300./s ull scale$

[PROTOKOL KOMUNIKASI]

!ada dasarnya output dari sensor Gyroscope LISY300AL adalah berupa tegangan analog* tetapi oleh

!A"ALLA# Inc* output dari sensor Gyroscope tersebut dibaca menggunakan ADC serial$ Sehingga

untuk mengakses modul ini kita harus menggunakan protokol kumunikasi S!I 'Serial !eripheralInterace($ erikut adalah timing diagram cara mengakses &odul Sensor Gyroscope LISY300AL

'ADC serial ADC101S01($

Page 2: MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

8/16/2019 MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

http://slidepdf.com/reader/full/mengakses-modul-sensor-gyroscope-lisy300-terkalibrasi-menggunakan-codevisiondocx 2/9

!ada dasarnya untuk dapat mengakses &odul Sensor Gyroscope LISY300AL ini* sebenarnya kita

hanya harus tau cara mengakses ADC serial ADC101S01* dikarenakan Sensor Gyroscope itu

sendiri dibaca oleh ADC serial ADC101S01$ Dari gambar diatas terlihat bah,a terdapat 3 2alur untuk

mengakses ADC serial ADC101S01 yaitu CS* SCL dan SDA4A$

CS digunakan untuk meng5enable ADC serial ADC101S01 agar dapat diakses* harus beri logika

L67$

SCLK digunakan sebagai serial clock* dimana semua aplikasi yang berkomunikasi secara serial

membutuhkan clock untuk mengaksesnya* maksimal kecepatan clock untuk mengakses ADC serial

 ADC101S01 adalah 8&9:$

Sedangkan SDATA adalah 2alur data serial yang berasal dari ADC serial ADC101S01$ Data yangberasal dari ADC serial ADC101S01 mempunyai 1; bit data$ Yaitu 3 bit 0 'L67( a,al* 10 bit data

 ADC dan bit 0 'L67( akhir$ Dimana 10 bit data ADC dimulai dari &S dan diakhiri oleh LS$

[SENSITIVITAS]

Dan sensor Gyroscope LISY300AL* mempunyai sensiti<itas 3$3 m%/./s$ Dimana ADC serial

 ADC101S01 mempunyai pembacaan data 10 bit '05103 atau sebanyak 108 step( dengan

perkiraan 3$ m%/step$ Sehingga setiap perubahan setiap step adalah perubahan 1 dera2at$

[ZERO RATE LEVEL]

Sebenarnya sensor Gyroscope LISY300AL sudah terkalibrasi dari pabriknya$ Yaitu dengan supply

tegangan 3$3 % akan menghasilkan :ero rate le<el 1$=; % 'tegangan oset atau %oset($ >ilai :erorate le<el ini ter2adi ketika Gyroscope tidak melakukan kecepatan sudut 'angular rate(* atau sensor 

Gyroscope dalam keadaan diam$ Atau dengan kata lain 2ika dibaca menggunakan ADC 10 bit* dengan

range input ADC 053$3 %* maka didapat nilai ADC sebesar ;1 untuk :ero rate le<el 'tidak ter2adi

percepatan sudut atau dalam keadaan diam($ ?ika sumbu + bergerak searah 2arum 2am* maka nilai

 ADC akan berkurang 'diba,ah nilai :ero rate le<elnya(* ?ika bergerak berla,anan arah 2arum 2am

maka nilai ADC akan bertambah 'diatas :ero rate le<elnya($

4etapi menurut datasheet Gyroscope LISY300AL@

“Zero-rate level describes the actual output signal if there is no angular rate present. For a 3.3 V 

 powered sensor the absolute zero-rate output is ideally 1.6 V. Zero-rate level of precise !"!#

Page 3: MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

8/16/2019 MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

http://slidepdf.com/reader/full/mengakses-modul-sensor-gyroscope-lisy300-terkalibrasi-menggunakan-codevisiondocx 3/9

sensors is$ to so%e e&tent$ a result of stress to the sensor and therefore zero-rate level can slightly 

change after %ounting the sensor onto a printed circuit board or after e&posing it to e&tensive

%echanical stress. 'his value changes very little over te%perature and also very little over ti%e.( 

[KALIBRASI]

arena alasan diatas* maka ter2adi penyimpangan untuk nilai :ero rate le<elnya* yaitu maksimal

sekitar ;1-8$ 6leh karena itu harus dilakukan cara untuk dapat menentukan nilai :ero rate le<el

melalui kalibrasi$

!ada dasarnya nilai :ero rate le<el sudah bisa kita tentukan sendiri* yaitu saat tidak ter2adi kecepatan

sudut 'angular rate( atau gyroscope dalam keadaan diam$ Sebagai contoh ketika saya baca keluaran

&odul Sensor Gyroscope LISY300AL muncul nilai ;11* ;0* ;08* ;13 'berubah5ubah($ Dari data

tersebut bisa sa2a saya mengambil kesimpulan 2ika nilai :ero rate le<elnya adalah ;0B 'nilai

tengahnya($

!ertanyaannya* mengapa nilainya tidak diam/statis ?a,abannya adalah sensor gyroscope bersiar 

dinamis* dimana sensor gyroscope mempunyai nilai saat ter2adi kecepatan sudut 'angular rate($

Sedangkan saat diam 'tidak ter2adi angular rate( maka nilainya adalah sama dengan :ero rate le<el$

Lalu nilainya yang berubah5ubah dikarenakan gyroscope mempunyai eek drit saat kondisi diam

'saya tidak tahu istilah drit dalam bahasa indonesia($ 9al ini adalah kebalikan dari sensor 

accelerometer* dimana sensor accelerometer bersiat statis$ 6leh karena itu mengapa pada banyak

aplikasi selalu menggabungkan dua buah sensor tersebut 'gyroscope dan accelerometer($

aiklah* berikut adalah cara melakukan kalibrasinya$ Cara ini saya dapat dari program demo yang

diberikan oleh !A"ALLA# Inc$

center 'saya gunakan untuk mengganti istilah :ero rate le<el(

datagyro 'hasil pembacaan ADC dari gyroscope melalui komunikasi S!I(

center(n)(center(n!")#$%t%&'r(n))* n

dimana@

n E banyaknya sampling

center'n51( E 0 'bernilai nol pada a,alnya(

Semakin banyak n 'sampling( maka semakin baik untuk mendapatkan nilai :ero rate le<elnya$

alibrasi ini dilakukan hanya 1 kali pada a,al program sa2a$

[MEN+AKSES ADC SERIAL ADC"0"S02" ATAU SPI]

Fntuk mengakses ADC serial ini menggunakan protokol komunikasi S!I dan saya menggunakan

bahasa C dengan compiler Code%ision A%" untuk memprogramnya$ !ada dasarnya compiler 

Code%ision A%" telah mempunyai library ba,aan untuk mengakses S!I* tapi sayangnya library

tersebut hanya untuk mengakses bit data sa2a 'aplikasi ini datanya 1; bit($ 6leh karena itu saya

membuat sebuah ungsi sendiri untuk mengaksesnya$

Fntuk listing program lengkap dan schematic rangkaiannya dapat dilihat diba,ah ini$

Page 4: MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

8/16/2019 MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

http://slidepdf.com/reader/full/mengakses-modul-sensor-gyroscope-lisy300-terkalibrasi-menggunakan-codevisiondocx 4/9

Hinclude mega1=$hJ

Hinclude delay$hJ

Hinclude stdlib$hJ

char 2E1* iE1* kE1* dataK1=* tempK1=M

unsigned int datagyroM

loat centerE0* sudutM

Hasm

  $eNu lcdportE0)1; M!6"4C

Hendasm

Hinclude lcd$hJ

<oid bacagyro'(

O  datagyroE0M

  i 'iEE1=(OiE1MP

i '2EE1=(O2E1MP

  !6"4$8E1M//cs high

  delayus'100(M

  !6"4$8E0M//cs lo,* enable serial transer QR 

  or'iE1Mi1=Mi(

  O

  !6"4$BE1M//sclk high

delayus'1(M!6"4$BE0M//sclk lo, QR 

  delayus'1(M

  i '!I>$=EE1(OdataK2E1MP//mengambil data per bit dari &IS6

else dataK2E0M

  2M

  P

  //perhitungan data ADC 10 bit* 3 bit :ero leading dan bit :ero trailer tidak dihitung

  //dataK1 sampai dataK3 adalah bit leading dan dataK18 sampai dataK1; adalah bit trailer 

  datagyroE''dataK8T;1('dataK;T;=('dataK=T1('dataKBT=8('dataKT3('dataKT1=(

'dataK10T('dataK11T8('dataK1T('dataK13T1((MP

Page 5: MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

8/16/2019 MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

http://slidepdf.com/reader/full/mengakses-modul-sensor-gyroscope-lisy300-terkalibrasi-menggunakan-codevisiondocx 5/9

<oid kalibrasigyro'(

O

  or 'kE1Mk10Mk(

O

bacagyro'(M

  centerEcenterdatagyroM

  lcdgoto)y'0*0(M

  lcdputs'UCALI"A4I>GVW(M

  lcdgoto)y'0*1(M

  toa'center*1*temp(M

  lcdputs'temp(M

  delayms'00(M

P

  centerEcenter/10M

P

<oid sudutgyro'(

O

  sudutEdatagyro5centerM

  sudutEsudutT51M

P

<oid tampilLCD'(

O

  lcdclear'(M

  itoa'datagyro*temp(M

  lcdputs'temp(Mlcdgoto)y'0*1(M

  toa'center*1*temp(M

  lcdputs'temp(M

lcdgoto)y'*1(M

  toa'sudut*1*temp(M

  lcdputs'temp(M

P

<oid main'<oid(

O

!6"4E0)MDD"E0)0M//pbB dan pb8 output* sisanya input

// Analog Comparator initiali:ation

// Analog Comparator@ 6 

// Analog Comparator Input Capture by 4imer/Counter 1@ 6 

 ACS"E0)0M

SXI6"E0)00M

// LCD module initiali:ation

lcdinit'1=(M

kalibrasigyro'(M

,hile '1(  O

Page 6: MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

8/16/2019 MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

http://slidepdf.com/reader/full/mengakses-modul-sensor-gyroscope-lisy300-terkalibrasi-menggunakan-codevisiondocx 6/9

  bacagyro'(M

  sudutgyro'(M

  tampilLCD'(M

delayms'100(M

PM

P

Gyroscope adalah suatu alat berupa sensor gyro untuk menentukan orientasi gerak 

dengan bertumpu pada roda atau cakram yang berotasi dengan cepat pada sumbu.

 Gyroscope memiliki output yang peka terhadap kecepatan sudut dari arah sumbu x

yang nantinya akan menjadi sudut phi (roll), dari sumbu y nantinya menjadi

sudut theta (pitch), dan sumbu z nantinya menjadi sudut psi (yaw).

Penggunaan giroscope dalam kehidupan sehari belum banyak. Gyroscopelazimnya

digunakan pada Pesawat terbang, Kapal, Helikopter, dll. Hal tersebut untuk mengurangi

getaran yang ditimbulkan mesin agar keseimbangan tidak goyah.Gyroscope barubaru ini

 juga diterapkan pada mainan Helikopter dengan tujuan menyeimbangkan saat diterbangkan.

!yroscope yang saya gunakan adalah "#$%&'' !yroscope odule.

ntuk dapat membaca atau mengakses sensor ini silakan klik disini. !yroscope mempunyai cara kerja sebagai berikut*

+$ensor gyroscope yang digunakan akan mempunyai nilai keluaran jika sedang berotasi.

Ketika sensor gyroscope berotasi searah jarum jam pada sumbu , maka tegangan

keluarannya akan mengecil. $edangkan jika berotasi berlawanan arah jarum jam, maka

tegangan keluarannya akan membesar. -ika sensor  gyroscope tidak berotasi (keadaan diam)

maka keluaran tegangan gyroscopeakan bernilai sama dengan nilai offset nya.+

erikut adalah ourput gyroscope ketika berotasi*

Page 7: MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

8/16/2019 MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

http://slidepdf.com/reader/full/mengakses-modul-sensor-gyroscope-lisy300-terkalibrasi-menggunakan-codevisiondocx 7/9

"abel a menunjukkan bahwa sensor gyroscope berotasi searah jarum jam yang ditandai

dengan mengecilnya nilai keluaran sensor gyroscope. $edangkan label b, menunjukkan

 bahwa sensor gyroscope berotasi berlawanan arah jarum jam yang ditandai dengan

membesarnya nilai keluaran sensor gyroscope.

$ekarang perhatikan ketika sedang diam (tidak berotasi)

$ensor gyroscope dalam keadaan diam (tidak berotasi), sehingga kecepatan rotasinya adalah

'. /etapi dari gra0ik diatas, sinyal yang dihasilkan terkadang mempunyai nilai dan berubah

ubah. -ika sensor gyroscope dalam keadaan diam, keluarannya akan sama dengan nilai offset 

nya, hal ini dikarenakan sensor  gyroscope mempunyai nilai bias.

1ukup untuk dasar teorinya, sekarang langsung ke algoritma complementary 0ilter. Pada

dasarnya ada sebuah metode algoritma yang lebih baik dibanbing complementary 0ilter yaitu

algoritma kalman 0ilter. /etapi saya kurang begitu paham, jadi saya pakai complementary

0ilter saja.

2ibawah ini adalah diagram blok dari komplementary 0ilter.

enggunakan 3 sumbu sensor accelerometer  untuk mendapatkan nilai kemiringan sudut (θ),

yaitu sumbu 4 dan . Kemudian sudut kemiringan dari accelerometer ini di umpankan

ke low-pass 0ilter untuk menghilangkan noise. $edangkan keluaran sensor Gyroscope yang

 berupa kecepatan sudut (5) harus diintegralkan terlebih dahulu untuk mendapatkan nilai

 perpindahan sudut atau sudut kemiringan. Kemudian diumpankan ke high-pass 0ilter untuk 

menghilangkan e0ek bias pada gyroscope.

-ika complementary 0ilter ini diaplikasikan ke bahasa pemrograman, maka akan terlihat pada

cuplikan program dibawah ini.

sudut = (a)*(sudut+out_gyro*dt)+(1-a)*(sudut_acc);

2imana*

a 6 koe0isien 0ilter 

dt 6 waktu sampling, disesuaikan dengan waktu sampling  nilai sensor 

sudut 6 sudut keluaran complementary 0ilter 

out7gyro 6 keluaran sensor gyroscope berupa kecepatan sudut

Page 8: MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

8/16/2019 MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

http://slidepdf.com/reader/full/mengakses-modul-sensor-gyroscope-lisy300-terkalibrasi-menggunakan-codevisiondocx 8/9

sudut7acc 6 keluaran sensor accelerometer  yang sudah berupa sudut

udah bukan888

-ika cuplikan program diatas menggunakan waktu sampling sebesar dt, maka time

constant  (9) dapat ditentukan* τ=(a*dt)/(1-a)

dimana*

a6koe0isien 0ilter  

dt6waktu sampling

/ime constant adalah lamanya waktu update sinyal keluaran dari complementary 0ilter.

$ekarang saya akan jelaskan pengaruh koe0isien 0ilter (a) dan pengaruh wakru sampling (dt).

Pengaruh koefisien filter (a) :ilai koe0isien 0ilter (a) akan saya ubahubah sebesar ',;, ',< dan '.=> dengan waktu

sampling (dt) tetap yaitu ?' ms. erikut adalah respon keluaran dari sinyal complementary

0ilter.

koe0isien 0ilter ',; sedang diam (tidak berotasi)

 

koe0isien 0ilter ',; sedang berotasi

 koe0isien 0ilter ',< sedang diam (tidak berotasi)

 koe0isien 0ilter ',< sedang berotasi

 

koe0isien 0ilter ',=> sedang diam (tidak berotasi)

koe0isien 0ilter ',=> sedang berotasi

!aris berwarna merah adalah keluaran sensor accelerometer, hitam adalah keluaran sensor 

gyroscope dan biru adalah sinyal keluaran dari complementary 0ilter.

2ari beberapa gambar diatas dapat disimpulkan*

$emakin besar nilai koe0isien 0ilter (a) maka sinyal keluaran complementary 0ilter akan lebih

Page 9: MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

8/16/2019 MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION.docx

http://slidepdf.com/reader/full/mengakses-modul-sensor-gyroscope-lisy300-terkalibrasi-menggunakan-codevisiondocx 9/9

stabil (semakin tidak bernoise) tetapi akan memperlama time constant yang mengakibatkan

waktu update sinyal semakin lama.

1oba anda bandingkan dengan persamaan untuk mencari nilai time constant, maka

kesimpulan diatas berdasarkan pengujian akan sesuai dengan persamaannya.

Pengaruh waktu sampling (dt) :ilai waktu sampling akan saya ubahubah dengan nilai ',? detik (?'Hz), ','@ detik (3'Hz)

dan ','? detik (?''Hz).

dt6'.'?

  dt6'.'@

 dt6'.?

$ehingga dapat disimpulkan bahwa semakin cepat waktu sampling  yang digunakan maka

akan semakin cepat time constant  dari sinyal keluarancomplementary filter .

$ekali lagi anda perhatikan persamaan untuk menghitung time constant, maka kesimpulan

diatas yang berdasarkan pengujian sinyal keluaran complementary 0ilter, akan sesuai dengan

teori pada persamaan menghitung nilai time constant.

Pemilihan nilai koe0isien 0ilter (a) dan waktu sampling (dt) harus disesuaikan dengan respon

 pada aplikasi yang anda buat. -ika respon sistem aplikasi anda cepat, maka disarankan untuk 

mempercepat nilai time constant, dan jika respon sistem pada aplikasi yang anda buat relati0 lambat, maka nilai time constans pada algoritma complementary 0ilter dapat anda buat relati0 

lebih lama.