导语

接上一篇“九轴传感器之加速度计”,本篇主要讲述九轴姿态传感器中的陀螺仪部分。陀螺仪传感器可以让物体在运动过程中感知其水平、垂直、俯仰、航向和角速度等信息。关于三轴陀螺仪的工作原理见图1,旋转轴和转子在不受外力影响的情况下并不受物体的外部变化而变化,利用这个特性,我们可以在物体三维运动中提炼出相关的角度和角速度。

陀螺仪传感器 android 获取角度 陀螺仪传感器数据_加速度计

图1

角速度,即单位时间内所转过的弧度,其单位是弧度每秒(简称 度/秒);如图2所示,物体从X0/Y0/ZO转到X1/Y1/Z1可以分解为三个方向轴上的角度变化,而每一个轴的角度变化又可以通过旋转另外两个轴得到。以Z轴为例,Z0到Z1的转角Az01分别在XZ平面和YZ平面上投影了Ay和Ax,也就是说Z轴在Z0的方向上绕着Y轴旋转Ay度,再绕着X轴旋转Ax度,就得到了Z1的方向;到此就完成了X/Y二轴的旋转检测,最后加上绕着Z轴的旋转角度Az即可完成三轴陀螺仪的环绕角度变化的检测。

陀螺仪传感器 android 获取角度 陀螺仪传感器数据_陀螺仪传感器 android 获取角度_02

图2

陀螺仪最终输出的是角度的变化率,也就是说,陀螺仪输出不是Ax/Ay/Az的角度值,而是单位时间内角度的变化,假设物体t0秒测出的三轴的旋转弧度分别为Ax0/Ay0/Az0,t1秒测出的三轴旋转弧度为Ax1/Ay1/Az1,则三轴角速度ωX/ωY/ωZ的值为

ωX = (Ax1-Ax0) / (t1 – t0)

ωY = (Ay1-Ay0) / (t1 – t0)

ωZ = (Az1-Az0) / (t1 – t0)

如图3所示,跟加速度计一样,陀螺仪的输出有通过I2C/SPI等接口直接输出数字的,也有需要经过ADC转换的模拟信号输出,类似的我们以12bit ADC为例,其输出值最大为2^12-1=4095,我们定义Acx/Acy/Acz为X/Y/Z三轴角速度的ADC输入值,则可以用以下公式得出三轴角速度ωX/ωY/ωZ的值

ωX = ((Acx/4095) * Vref  – V0ω) / Sens

ωY = ((Acy/4095) * Vref  – V0ω) / Sens

ωZ = ((Acz/4095) * Vref  – V0ω) / Sens

等式中Vref为参考电压,V0ω为零角速度电压值,也就是说物体在没有任何转动影响时候的输出电压(可以测量得到),Sens为陀螺仪的灵敏度(即单位角速度变化引起的电压变化值)。

陀螺仪传感器 android 获取角度 陀螺仪传感器数据_工作原理_03

图3