免費下載!
[!--downpath--]1.傾斜角檢測原理
對于軸加速度傳感,當它的傳感器方向和重力加速度方向一致時,假這般時為零傾斜角度,設加速度傳感檢測結果為F(θ),θ為傾斜角度,g為重力加速度,如圖1所示。
所以當傾斜角θ太小時,檢測的幀率都會太小,當角度足夠大時精度就會上升。所以對一軸傾斜角傳感的運用是:把它的傳感器方向與重力加速度方向垂直時的狀態設為零傾斜角度,文獻運用此方式檢測傾斜角,如圖2所示,此時:
此時傾斜角度小時檢測精度高,而對于一軸加速度傳感而言,只能測一個方向的傾斜角。所以用一個兩軸加速度傳感,兩個傳感器方向皆垂直于重力加速度,當兩軸傾斜角傾斜時,加速度傳感檢測結果為:
怎樣借助θx,θy求出傾斜角θ。首先定義兩組三軸向量:[x,y,z]為參考O傾斜向量,[u,v,r]為傾斜后的向量。如圖3所示,設向量[z,y,z]先繞y軸傾斜,再繞x軸傾斜,所以從[x,y,z]到[u加速度的五個公式,v,r]的轉換為:
設x,y為水平方向,z為垂直方向。(x,y,z)=(0,0,1)于是便有:
此時u=kF(θx)=kgsinθx,v=kF(θy)=kgsinθy,所以:
而傳感實際傾斜角為:
所以只要得出兩軸加速度傳感檢測結果F(θx)和F(θy)就可以估算出θx和θy,因而曉得總的傾斜度。
檢測一個全方位,全擺幅的傾斜角就必須使用三軸加速度計。
運用三軸加速度計檢測傾斜角就必須把檢測范圍分為兩檔,一檔為傾斜角為-π/4~π/4,二檔為傾斜角為(-π/2~-π/4)&(π/4~π/2)。當傾斜角度在±π/4之間時,
這兒以F(θz)的值作為界定檔次的根據。在一檔中F(θx)加速度的五個公式,F(θy)的幀率很高,此時相當于運用一個兩軸加速度傳感檢測全方位,低擺幅傾斜角,運用式(15)可以估算傾斜角。在二檔中F(θz)的碼率都很高,此時相當于運用一個一軸加速度傳感檢測全方位,高傾斜角度的傾斜角,運用式(1)可以估算傾斜角。
2.零點偏斜
零刻度偏斜的解決方案,當傾斜角較小時,z軸數據的幀率極低,影響檢測精度,所以此時運用其中兩軸進行傾斜角檢測將更精確。為提升精度,須要對傾斜角傳感進行調零校準,校準后的結果將是檢測值乘以偏斜值后的數據。偏斜值的檢測方式:
將傳感放置在一個校正水平面上,此時的輸出即為偏斜值。
接出來就是用代碼實現該算法(注意根號不能有正數):
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-;
;