三轴加速度传感器 角度值 转换原理

时间:2024-03-27 14:53:30

注意!!!本文转载自参考文献[2]。

1 各方向初始重力分量

如果芯片水平静置,X、Y方向的重力分量为0g,而Z轴方向的重力分量为g。如下图所示,X=0;Y=0;Z=g。三轴加速度传感器 角度值 转换原理图1 芯片水平静置

2 各方向重力分量计算

三轴加速度传感器 角度值 转换原理图2 各轴分别与水平线、重力加速度的夹角
三轴加速度传感器 角度值 转换原理图3 重力加速度在各轴的分量

step1:
各边与水平方向有一些夹角,则其图像如图2所示:

  • X轴方向的加速度大小为Ax,其与水平线的夹角为α1,与重力加速度g的夹角为α
  • Y轴方向的加速度大小为Ay,其与水平线的夹角为β1,与重力加速度g的夹角为β
  • Z轴方向的加速度大小为Az,其与水平线的夹角为γ1,与重力加速度g的夹角为γ

step2:
基于图2中的夹角概念,它们的关系为:

  • α = 90度- α1
  • β = 90度- β1
  • γ = 90度- γ1

step3:
如图3,g在各轴方向上的分量:

  • Ax = gcosα
  • Ay = gcosβ
  • Az = gcosγ

step4:
step2中数据代入step3得:

  • Ax = gcosα = gcos(90度- α1) = gsinα1
  • Ay = gsinβ1
  • Az = gsinγ1

关于奇偶变换[1]
比如sin(x+nπ/2),奇偶指的是n。
当n为偶数时候,三角函数名不变,还是sin 符号看象限是指把x 当做锐角然后算出sin(x+nπ/2)的值,看他的正负,这个值是正的,那么最后变换完的结果就是正的,这个值是负的,那么就是负的。
当n为奇数的时候,三角函数名改成另一个,这里就是cos。符号看象限同理。

step5:
如图3,由直角三角形的勾股定理得:

  • Ax * Ax + gcosα1 * gcosα1 = g * g
  • Ay * Ay + gcosβ1 * gcosβ1 = g * g
  • Az * Az + gcosγ1 * gcosγ1 = g * g

step6:
如图3(详细版)、4所示,各垂直虚线的大小为(其中sqrt表示开根号):

  • gcosα1 = sqrt ( g * g - Ax * Ax )
  • gcosβ1 = sqrt ( g * g - Ay * Ay )
  • gcosγ1 = sqrt ( g * g - Az * Az )
    三轴加速度传感器 角度值 转换原理
    图4 重力加速度g在各轴上的分量
    三轴加速度传感器 角度值 转换原理
    图5 重力加速度g 作为立方体的对角线

step7:
如图5,在立体几何中,g相当于立方体的对角线,Ax、Ay、Az相当于三条边:
Ay * Ay + Az * Az = |虚线| * |虚线|

|虚线| * |虚线| + Ax * Ax = g * g
所以(根据勾股定理):
Ax * Ax + Ay * Ay + Az * Az = g * g

step8:
如图4所示,(以X轴为例) sinα1 = Ax / g, cosα1 = sqrt(g * g - Ax * Ax) / g,

  • tanα1 = (Ax / g) / [sqrt(g * g - Ax * Ax) / g] = Ax / sqrt(g * g - Ax * Ax) = Ax / sqrt(Ay * Ay + Az * Az)
  • tanβ1 = Ay / sqrt(Ax * Ax + Az * Az)
  • tanγ1 = Az / sqrt(Ax * Ax + Ay * Ay)

step9:
最后得出ADXL345加速度传感器,各轴加速度值与角速度值(弧度)的关系为:

  • tanα1 = Ax / sqrt(Ay * Ay + Az * Az)
  • tanβ1 = Ay / sqrt(Ax * Ax + Az * Az)
  • tanγ1 = Az / sqrt(Ax * Ax + Ay * Ay)

其中 α1 、β1 、γ1分别是X、Y、Z轴和水平线的弧度值(反三角函数计算的值是弧度),Ax 、Ay、Az是三个轴上的加速度值。

step10:
那么弧度值分别为:

  • α1 = arctan(Ax / sqrt(Ay * Ay + Az * Az))
  • β1 = arctan(Ay / sqrt(Ax * Ax + Az * Az))
  • γ1 = arctan(Az / sqrt(Ax * Ax + Ay * Ay))

step11:
接下来就得使用数据公式:弧度= θπR/180 。 这样算得θ = 弧度 * 180/πR,其中R取1。最后得到的各轴的角度值分别为:

  • θx = α1 * 180/π = [arctan(Ax / sqrt(Ay*Ay + Az * Az))] * 180/π
  • θy = β1 * 180/π = [arctan(Ay / sqrt(Ax*Ax + Az * Az))] * 180/π
  • θz = γ1 * 180/π = [arctan(Az / sqrt(Ax*Ax + Ay * Ay))] * 180/π

参考文献

[1] 数学三角函数中的“奇变偶不变,符号看象限”怎么理解
[2]三轴加速度传感器角度值转换原理 - CSDN博客