Upload
rizki-putra-perdana
View
230
Download
0
Embed Size (px)
Citation preview
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($
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 !"!#
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$
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
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
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*
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
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
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.