文章轉載自:https://blog.csdn.net/ylzmm/article/details/78453347
-
如果芯片水平靜置,X、Y方向的重力分量為0g,而Z軸方向的重力分量為g。如下圖所示,X=0;Y=0 Z=g
圖1 芯片水平靜置
-
如果各邊與水平方向有一些夾角,則其圖像如圖2所示,X軸方向的加速度大小為Ax,其與水平線的夾角為α1,與重力加速度的夾角α;同理,Y軸方向的加速度為Ay,與水平線的加速度為 β1,與重力加速度g的夾角為β;Z軸方向的加速度為Az,與水平線的加速度為 γ1,與重力加速度g的夾角為γ。
-
-
圖2 各邊夾角
-
-
基於2中的夾角概念,它們的關系為α = 90度- α1, β = 90度- β1 , γ = 90度- γ1。
-
g在各軸方向上的分量為:Ax = gcosα, Ay = gcosβ , Az = gcosγ; 將3中數據代入得:Ax = gcosα = gcos(90度- α1) =gsinα1 , 同理 Ay = gsinβ1 , Az = gsin γ1.如圖3所示。(其中各垂直虛線的大小為:g*g = Ax*Ax + gcosα1*gcosα1, 則gcosα1 = squr(g*g - Ax*Ax) ,gcosβ1 =squr (g*g - Ay*Ay ),gcosγ1 =squr(g*g - Az*Az ))勾股定理和三角函數的應用.
-
-
圖3 重力加速度g在各軸上的分量
-
根據立體幾何中,g相當於立方體的對角線,Ax、Ay、Az相當於三條邊,如圖4所示,虛線大小等於 Ay*Ay+Az*Az,所以根據勾股定理Ax*Ax + Ay*Ay + Az*Az = g*g
-
由4和5可以知道,(以X軸為例) sinα1 = Ax/g, cosα1 = squr(g*g - Ax*Ax) / g , 那么,tanα1 =( Ax/g) / [squr(g*g - Ax*Ax) / g] = Ax / squr(g*g - Ax*Ax) = Ax / squr(Ay*Ay + Az*Az) 。 同理 tanβ1 = Ay / squr(Ax*Ax+Az*Az) , tanγ1 = Az / squr(Ax*Ax +Ay*Ay)。
-
-
圖4 重力加速度g 作為立方體的對角線
最后得出ADXL345加速度傳感器值與角速度值(弧度)的關系為:
tanα1 = Ax / squr(Ay*Ay + Az*Az) ,
tanβ1 = Ay / squr(Ax*Ax+Az*Az) ,
tanγ1 = Az / squr(Ax*Ax +Ay*Ay)。
其中 α1 、β1 、γ1分別是X、Y、Z軸和水平線的角速度值即弧度值(並不是我們所說的角度值),Ax 、Ay、Az是三個軸上的加速度值。
那么弧度值分別為:
α1 = arctan(Ax / squr(Ay*Ay + Az*Az))
β1= arctan(Ay / squr(Ax*Ax+Az*Az))
γ1= arctan( Az / squr(Ax*Ax +Ay*Ay))
接下來就得使用數據公式:弧度= θπR/180 。 這樣算得θ = 弧度*180/πR,其中R取1。最后得到的各軸的角度值分別為:
θx = α1*180/π = [arctan(Ax / squr(Ay*Ay + Az*Az))] *180/π
θy =β1*180/π = [arctan(Ay / squr(Ax*Ax+Az*Az))]*180/π
θz =γ1*180/π = [arctan( Az / squr(Ax*Ax +Ay*Ay))]*180/π