陀螺仪、加速度计都是惯性测量元件的一种。而 MPU-6050 传感器的内部同时集成了陀螺仪和加速度传感器两种惯性测量元件。

1. 加速度传感器

  MPU-6050 传感器内部封装了陀螺仪和加速度传感器两种惯性测量元件,而陀螺仪和加速度传感器的工作原理是不一样的。

android加速度计低通滤波 手机加速度计原理_嵌入式


图1-1 盒子模型

  为了便于理解,我们可以把加速度传感器想象为一个盒子模型——一个小球在一个方盒子中。

android加速度计低通滤波 手机加速度计原理_盒子模型_02)。设想每面墙都能感测压力。如果我们突然把盒子向左移动(加速度为 android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_03),那么球会撞上 android加速度计低通滤波 手机加速度计原理_单片机_04 墙。然后我们检测球撞击墙面产生的压力,android加速度计低通滤波 手机加速度计原理_盒子模型_05 轴输出值为 android加速度计低通滤波 手机加速度计原理_加速度传感器_06

android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_07


图1-2

  请注意加速度传感器检测到力的方向与它自身运动加速度的方向是相反的。这种力通常被称为惯性力 。在这个模型中,加速度传感器是通过间接测量力对一个墙面的作用来测量加速度的,但在实际应用中,可能通过弹簧或其他装置来测量力。这个力可以是加速度引起的,但在下面的例子中,我们会发现它不一定是加速度引起的。

android加速度计低通滤波 手机加速度计原理_单片机_08 的作用。如果我们把模型放在地球上,这时圆球不再是悬浮的,而是会落在android加速度计低通滤波 手机加速度计原理_盒子模型_09墙面上并对其施加一个 android加速度计低通滤波 手机加速度计原理_单片机_10

android加速度计低通滤波 手机加速度计原理_加速度传感器_11


图1-3

android加速度计低通滤波 手机加速度计原理_加速度传感器_12 轴有 android加速度计低通滤波 手机加速度计原理_加速度传感器_13 的值。因为球在墙面上施加的压力是由重力造成的。在理论上,它可以是不同类型的引力。例如,你可以想象盒子里的圆球是铁质的,将一个磁铁放在盒子旁边,小球就会撞上另一面墙,这时圆球受到的是磁场力。引用这个例子只是为了说明 加速度传感器的本质是检测力而非加速度。只是 加速度所引起的惯性力正好能被加速度传感器的检测装置所捕获

  虽然这个盒子模型并非一个 MEMS 传感器的真实构造,但它用来解决与加速度传感器相关的问题相当有效。实际上有些类似传感器中有金属小球,它们称作倾角开关,但是它们的功能更弱,只能检测设备是否在一定程度内倾斜,却不能得到倾斜的程度。

android加速度计低通滤波 手机加速度计原理_盒子模型_09android加速度计低通滤波 手机加速度计原理_单片机_04,见下图:

android加速度计低通滤波 手机加速度计原理_盒子模型_16


图1-4

android加速度计低通滤波 手机加速度计原理_单片机_17 这个值实际上是 android加速度计低通滤波 手机加速度计原理_嵌入式_18

在上一个模型中,我们引入了重力并旋转了盒子。在最后的两个例子中,我们分析了盒子在两种情况下的输出值,力矢量保持不变。虽然这有助于理解加速度传感器是怎么和外力相互作用的,但如果我们将坐标系换为加速度的三个轴并想象矢量力在周围旋转,这会更方便计算。

android加速度计低通滤波 手机加速度计原理_加速度传感器_19


图 1-5

其中,

  • android加速度计低通滤波 手机加速度计原理_盒子模型_20android加速度计低通滤波 手机加速度计原理_嵌入式_21android加速度计低通滤波 手机加速度计原理_嵌入式_22 是向量 android加速度计低通滤波 手机加速度计原理_单片机_23 分别在 X、Y、Z 轴上的投影;
  • android加速度计低通滤波 手机加速度计原理_加速度传感器_24 是向量 android加速度计低通滤波 手机加速度计原理_单片机_23
  • android加速度计低通滤波 手机加速度计原理_单片机_26 是向量 android加速度计低通滤波 手机加速度计原理_单片机_23
  • android加速度计低通滤波 手机加速度计原理_加速度传感器_28android加速度计低通滤波 手机加速度计原理_嵌入式_22android加速度计低通滤波 手机加速度计原理_加速度传感器_24
  • android加速度计低通滤波 手机加速度计原理_加速度传感器_31android加速度计低通滤波 手机加速度计原理_嵌入式_22android加速度计低通滤波 手机加速度计原理_单片机_26

根据勾股定理,求得:

  • android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_34
  • android加速度计低通滤波 手机加速度计原理_加速度传感器_35

那么,通过反正切函数 android加速度计低通滤波 手机加速度计原理_盒子模型_36 可得:
android加速度计低通滤波 手机加速度计原理_盒子模型_37
我们感兴趣的角度是 android加速度计低通滤波 手机加速度计原理_加速度传感器_38。想象图1-5新模型中每个轴都分别垂直于原模型中各自的墙面。矢量 android加速度计低通滤波 手机加速度计原理_盒子模型_39 是加速度传感器所检测的矢量(它可能是重力或其它惯性力的合成)。android加速度计低通滤波 手机加速度计原理_嵌入式_40 是矢量 android加速度计低通滤波 手机加速度计原理_盒子模型_39

根据三维空间勾股定理,可以得到下列关系:
android加速度计低通滤波 手机加速度计原理_单片机_42
回到 MPU-6050 传感器中,在上一小节我们已经分别读取到 3 个轴的加速度数据,但是我们读到的加速度数字量的单位还不是 android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_43 。最后的转换,我们还需要引入加速度传感器的灵敏度(Sensitivity),单位通常是 android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_44 。比方说,加速度传感器的灵敏度为 android加速度计低通滤波 手机加速度计原理_单片机_45 。灵敏度值可以在加速度传感器规格书中查到。要获得最后的单位为 android加速度计低通滤波 手机加速度计原理_加速度传感器_46 的加速度值,我们使用下列公式计算:
android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_47
比如:

  • 当设置 MPU-6050 加速度传感器的灵敏度为 android加速度计低通滤波 手机加速度计原理_盒子模型_48

android加速度计低通滤波 手机加速度计原理_加速度传感器_49

注意,此时计算出的角度单位为弧度(rad),需要转换成角度(°):
android加速度计低通滤波 手机加速度计原理_加速度传感器_50

2. 陀螺仪

陀螺仪的每个通道检测一个轴的旋转。例如,一个 2 轴陀螺仪检测绕 X 和 Y 轴的旋转。为了用数字来表达这些旋转,我们先引入一些符号。首先,我们定义:

  • android加速度计低通滤波 手机加速度计原理_加速度传感器_24 —— 惯性力矢量 android加速度计低通滤波 手机加速度计原理_单片机_23
  • android加速度计低通滤波 手机加速度计原理_单片机_26 —— 惯性力矢量 android加速度计低通滤波 手机加速度计原理_单片机_23

在由 android加速度计低通滤波 手机加速度计原理_盒子模型_55android加速度计低通滤波 手机加速度计原理_加速度传感器_56 组成的直角三角形中,运用勾股定理可得:
android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_57
同理:
android加速度计低通滤波 手机加速度计原理_单片机_58
同时注意:
android加速度计低通滤波 手机加速度计原理_嵌入式_59
相反,我们按如下方法定义 Z 轴和 android加速度计低通滤波 手机加速度计原理_加速度传感器_60

  • android加速度计低通滤波 手机加速度计原理_加速度传感器_28 —— android加速度计低通滤波 手机加速度计原理_加速度传感器_24
  • android加速度计低通滤波 手机加速度计原理_加速度传感器_31 —— android加速度计低通滤波 手机加速度计原理_单片机_26

现在我们离陀螺仪要测量的东西又近了一步。陀螺仪测量上面定义的角度的变化率。换句话说,它会输出一个与上面这些角度变化率线性相关的值。为了解释这一点,我们先假设在 android加速度计低通滤波 手机加速度计原理_嵌入式_65 时刻,我们已经测得绕 Y 轴旋转的角度(即 android加速度计低通滤波 手机加速度计原理_单片机_66),定义为 android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_67 ,之后在 android加速度计低通滤波 手机加速度计原理_嵌入式_68 时刻我们再次测量这个角度,得到 android加速度计低通滤波 手机加速度计原理_单片机_69 。则角度变化率按下面方法计算:
android加速度计低通滤波 手机加速度计原理_盒子模型_70
如果用度(°)来表示角度,秒(s)来表示时间,那这个值的单位就是度/秒(°/s)。这就是陀螺仪检测的东西。在实际运用中,陀螺仪一般都不会直接输出一个单位为度/秒的数值(除非它是个特殊的数字陀螺仪)。在 MPU-6050 传感器中,就像读取加速度数据一样,会得到一个经过内置 ADC 转换后得到的数字量,单位为 LSB 。参考对加速度传感器数据的处理,我们同样得到:
android加速度计低通滤波 手机加速度计原理_加速度传感器_71
其中,

  • android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_72
  • android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_73
  • android加速度计低通滤波 手机加速度计原理_嵌入式_74 —— 陀螺仪的灵敏度,单位 android加速度计低通滤波 手机加速度计原理_单片机_75

举个例子,假设我们读取到 MPU-6050 传感器的 X 轴数据:

  • android加速度计低通滤波 手机加速度计原理_单片机_76

若此时设置陀螺仪的灵敏度为 16.4,并认为陀螺仪零偏值为 0 ,代入公式(2.5),得到:
android加速度计低通滤波 手机加速度计原理_android加速度计低通滤波_77
换句话说,传感器绕 X 轴以 751°/s 的速度旋转。

注意,因为陀螺仪输出值有正负之分,负号表示该传感器朝着反方向旋转。一份好的传感器规格书会告诉你哪个方向是正方向,否则你就要自己测试出哪个旋转方向会使得传感器输出值为正。