L3G4200陀螺儀學習

2021-07-09 11:26:16 字數 4892 閱讀 2153

l3g4200d感測器學習

l3g4200d是意法(st)半導體公司推出的一款mems運動感測器:三軸數字輸出陀螺儀,可測量物體繞x、y

、z三軸運動夫人角速度的變化,測量範圍為±

250, 

±500, 

±1000, 和±

2000

°/sec

(dps

)。通過測量角速度的變化,可以判別出物體的運動狀態,所以也稱為運動感測器,換句話說,這感測器可以讓我們的裝置知道自己「

在哪兒和去哪兒」(

where they are or where they are going

),提供16

位資料輸出,輸出值為

16位數值的補碼,以及可配置的低通和高通濾波器等嵌入式數字功能,支援

iic和

spi匯流排兩種通訊方式。

一、感測器的測量方向和內部引腳圖

引腳說明如下:

pin名稱

功能vdd_io

電源io腳

scl/spc

i2c序列時鐘

/spi

串列埠時鐘

sda/sdi/sdo

i2c序列資料

/spi

序列資料輸入

/3-wire

序列介面資料輸出

sdo/sa0

spi序列資料輸出

/ i2c裝置的位址不顯著位 cs

spi啟用 

i2c / spi模式選擇

(1: i2c

模式; 0: spi

啟用)

drdy/int2

資料就緒/fifo中斷

int1

可程式設計中斷

reserved

接地reserved

接地reserved

接地reserved

接地reserved

接地gnd

0v**

pllfilt

鎖相環環路濾波器

reserved

連線到vdd

vdd電源

二、感測器暫存器的配置過程

1、初始化感測器(選擇量程、高通濾波模式,設定中斷使能等,對相應的控制暫存器進行寫操作)

2、讀取資料(首先讀狀態暫存器(status_reg

),若zyxda=1

,則可以讀數,否則等待。為減小誤差,在編寫程式時要設定連續讀數多次,然後取平均值。)

三、主要暫存器介紹

1、控制暫存器

20h):

選擇輸出資料速率。輸出頻寬,以及x、

y、z軸的使能

dr1dr0bw1

bw0pd

zenyen

xendr1-dr0和

bw1-bw0

配置對應的輸出速率和頻寬如下表(其中:

odr為資料輸出頻率,

cut_off

為濾除頻率)

dr<1:0>

bw<1:0>

odrcut_off

12.5

12.5

pd0:掉電模式 

1:普通模式或者休眠模式(預設為0 )

zenz軸使能 

0:不啟用 

1:啟用(預設1)

yeny軸使能 

0:不啟用 

1:啟用(預設1)

xenx軸使能 

0:不啟用 

1:啟用(預設1)

對於pd處於3

個模式中的哪乙個則看下表: 模式

pdzen

yenxen

掉電模式

休眠模式

普通模式

21h):

選擇高通濾波模式和高通截止頻率

hpm1

hpm0

hpcf3

hpcf2

hpcf1

hpcf0

高通濾波器模式選擇配置

hpm1

hpm0

高通濾波器模式

普通模式(reset reading hp_reset_filter)

濾波器參考訊號

普通模式

根據中斷自動設定

高通截止頻率hz

hpcf<3:0>

odr=100hz

odr=200hz

odr=400hz

odr=800hz

0.50.2

0.50.1

0.20.5

0.05

0.10.2

0.50.02

0.05

0.10.2

0.01

0.02

0.05

0.122h):

中斷使能

i1_int1

i1_boot

h_lactive

pp_od

i2_drdy

i2_wtm

i2_orun

i2_empty

i1_int1

int1腳中斷使能(0:

disable,1

:enable

)預設0 

i1_boot

int1腳引導狀態可用(0:

disable,1

:enable

)預設0

h_lactive

int1腳中斷啟用配置(

0:高,

1:低)預設0 

pp_od

push- pull / open drain. (0: push- pull; 1: open drain)預設0 

i2_drdy

drdy/int2資料準備

(0: disable; 1: enable)預設0

i2_wtm

drdy/int2的

fifo watermark

中斷(0: disable; 1: enable

)預設0

i2_orun

drdy/int2的

fifo

溢位中斷

(0: disable; 1: enable)預設0

i2_empty

drdy/int2的

fifo

空中斷(0: disable; 1: enable)

預設0 

23h):

選擇量程

bdublefs1

fs0st1

st0sim

bdu資料塊更新.(0

:持續更新,

1:輸出暫存器在

msb和

lsb讀時才更新)預設為0

ble大/

小尾端資料選擇(

0:資料

lsb在地位位址,

1:資料

lsb在高位位址)預設0

fs1-fs0

滿量程選擇(00

:250dps

;01:500dps

;10:2000dps

;11:2000dps

)(預設00)

st1-st0

自檢使能(00

:普通模式;

01:self test 0 (+);10:--

;11:self test 1 (-))

simspi序列介面模式選擇(

0:四線介面;

1:三線介面)

24h):fifo

使能,高通濾波使能

boot

fifo_en

hpen

int1_sel1

int1_sel0

out_sel1

out_sel0

boot

重啟記憶體內容(0:

普通模式

; 1:

重啟記憶體內容)預設0

fifo_en

fifo(

0: fifo disable; 1: fifo enable

)預設0

hpen

高通濾波器使能(0: hpf disabled; 1: hpf enabled)預設0

int1_sel1- int1_sel0

int1選擇配置

,預設0

out_sel1- out_sel0

外部選擇配置,預設0 

27h):

狀態暫存器,資料就緒可讀

zyxor

zoryor

xorzxyda

zdayda

xda相關配置

zyxor

x,y,z軸資料溢位(

0:沒有溢位

1:在讀之前,新資料已經將先前的資料覆蓋)預設0

zorz軸資料溢位(

0:沒有溢位

1:在讀之前,新資料已經將先前的資料覆蓋)預設0

yory軸資料溢位(

0:沒有溢位

1:在讀之前,新資料已經將先前的資料覆蓋)預設0

xorx軸資料溢位(

0:沒有溢位

1:在讀之前,新資料已經將先前的資料覆蓋)預設0

zyxda

x,y,z軸新資料(

0:沒有獲取新資料

1:獲取新資料)預設0

zdaz軸新資料(

0:沒有獲取新資料

1:獲取新資料)預設0

yday軸新資料(

0:沒有獲取新資料

1:獲取新資料)預設0

xdax軸新資料(

0:沒有獲取新資料

1:獲取新資料)預設0

2、資料暫存器(共

6個,每個軸的角速度由兩個位元組組成,分成高位和低位,資料以二進位制補碼形式儲存): 低位

高位 低位

高位 低位

高位

陀螺儀的學習

從陀螺儀得到x y z三個角速度後就需要通過積分來得到角度,事實上,經過簡單的積分是得不到正確的角度的,更得不到尤拉角,在這裡說一下通過的runge kunta更新四元數,從而對角速度積分得到角度的過程。四元數能到快速的發展,得益於飛行器控制與導航的發展,要求更合理的描述剛體空間的運動,以便於計算機...

iOS學習筆記34 加速計和陀螺儀

我們知道有一些ios的應用,會有一些特殊的要求,比如 電子羅盤指南針之類的應用 讓我們知道方向。運動型別軟體 讓我們知道我們跑步多少公里。社交軟體中的搖一搖功能。遊戲中扮演角色類中根據裝置的晃動等進行操作。其實,他們多半是使用了ios中的乙個核心運動框架coremotion.framework 感測...

iOS學習筆記34 加速計和陀螺儀

我們知道有一些ios的應用,會有一些特殊的要求,比如 電子羅盤指南針之類的應用 讓我們知道方向。運動型別軟體 讓我們知道我們跑步多少公里。社交軟體中的搖一搖功能。遊戲中扮演角色類中根據裝置的晃動等進行操作。其實,他們多半是使用了ios中的乙個核心運動框架coremotion.framework 感測...