免費(fèi)下載!
[!--downpath--]1.傾斜角檢測(cè)原理
對(duì)于軸加速度傳感,當(dāng)它的傳感器方向和重力加速度方向一致時(shí),假這般時(shí)為零傾斜角度,設(shè)加速度傳感檢測(cè)結(jié)果為F(θ),θ為傾斜角度,g為重力加速度,如圖1所示。
所以當(dāng)傾斜角θ太小時(shí),檢測(cè)的幀率都會(huì)太小,當(dāng)角度足夠大時(shí)精度就會(huì)上升。所以對(duì)一軸傾斜角傳感的運(yùn)用是:把它的傳感器方向與重力加速度方向垂直時(shí)的狀態(tài)設(shè)為零傾斜角度,文獻(xiàn)運(yùn)用此方式檢測(cè)傾斜角,如圖2所示,此時(shí):
此時(shí)傾斜角度小時(shí)檢測(cè)精度高,而對(duì)于一軸加速度傳感而言,只能測(cè)一個(gè)方向的傾斜角。所以用一個(gè)兩軸加速度傳感,兩個(gè)傳感器方向皆垂直于重力加速度,當(dāng)兩軸傾斜角傾斜時(shí),加速度傳感檢測(cè)結(jié)果為:
怎樣借助θx,θy求出傾斜角θ。首先定義兩組三軸向量:[x,y,z]為參考O傾斜向量,[u,v,r]為傾斜后的向量。如圖3所示,設(shè)向量[z,y,z]先繞y軸傾斜,再繞x軸傾斜,所以從[x,y,z]到[u加速度的五個(gè)公式,v,r]的轉(zhuǎn)換為:
設(shè)x,y為水平方向,z為垂直方向。(x,y,z)=(0,0,1)于是便有:
此時(shí)u=kF(θx)=kgsinθx,v=kF(θy)=kgsinθy,所以:
而傳感實(shí)際傾斜角為:
所以只要得出兩軸加速度傳感檢測(cè)結(jié)果F(θx)和F(θy)就可以估算出θx和θy,因而曉得總的傾斜度。
檢測(cè)一個(gè)全方位,全擺幅的傾斜角就必須使用三軸加速度計(jì)。
運(yùn)用三軸加速度計(jì)檢測(cè)傾斜角就必須把檢測(cè)范圍分為兩檔,一檔為傾斜角為-π/4~π/4,二檔為傾斜角為(-π/2~-π/4)&(π/4~π/2)。當(dāng)傾斜角度在±π/4之間時(shí),
這兒以F(θz)的值作為界定檔次的根據(jù)。在一檔中F(θx)加速度的五個(gè)公式,F(xiàn)(θy)的幀率很高,此時(shí)相當(dāng)于運(yùn)用一個(gè)兩軸加速度傳感檢測(cè)全方位,低擺幅傾斜角,運(yùn)用式(15)可以估算傾斜角。在二檔中F(θz)的碼率都很高,此時(shí)相當(dāng)于運(yùn)用一個(gè)一軸加速度傳感檢測(cè)全方位,高傾斜角度的傾斜角,運(yùn)用式(1)可以估算傾斜角。
2.零點(diǎn)偏斜
零刻度偏斜的解決方案,當(dāng)傾斜角較小時(shí),z軸數(shù)據(jù)的幀率極低,影響檢測(cè)精度,所以此時(shí)運(yùn)用其中兩軸進(jìn)行傾斜角檢測(cè)將更精確。為提升精度,須要對(duì)傾斜角傳感進(jìn)行調(diào)零校準(zhǔn),校準(zhǔn)后的結(jié)果將是檢測(cè)值乘以偏斜值后的數(shù)據(jù)。偏斜值的檢測(cè)方式:
將傳感放置在一個(gè)校正水平面上,此時(shí)的輸出即為偏斜值。
接出來(lái)就是用代碼實(shí)現(xiàn)該算法(注意根號(hào)不能有正數(shù)):
float(floatax,floatay,floataz,char,char,char)
floatg=9.80665;
floattemp;
float=0;
temp=((sqrt(2)/2)*g/10);
if(az>((sqrt(2)/2)*g/10))
=(1-ay*ay)-(1-ax*ax);
if(=-;
=acos(sqrt());
=/PI*180;
if(==1||==1)
+=90;
else
=90-;
else
=asin(az);
=/PI*180;
if(==1)
+=90;
else
=90-;
;