加速度计、陀螺仪的工作原理

  参考链接:https://c.miaowlabs.com/B07.html

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

1. 加速度传感器

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

图1-1 盒子模型

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

  想象一下,如果把盒子模型放在真空环境中会怎么样?在真空中,一切东西都处于无重力状态(失重),这时,小球也不例外,将悬浮在盒子的中间。在上面的图中,你可以看到我们给每个轴分配了一对墙(为了观察里面的情况,我们移除了 Y+Y+Y+)。设想每面墙都能感测压力。如果我们突然把盒子向左移动(加速度为 g=9.8m/s2g = 9.8 m/s^2g=9.8m/s2),那么球会撞上 X−X-X− 墙。然后我们检测球撞击墙面产生的压力,XXX 轴输出值为 −g-g−g。

图1-2

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

  众所周知地球上的物体都会受到重力 g=9.8m/s2g = 9.8m/s^2g=9.8m/s2 的作用。如果我们把模型放在地球上,这时圆球不再是悬浮的,而是会落在Z−Z-Z−墙面上并对其施加一个 1g1g1g 的力,见下图:

图1-3

  在这种情况下,盒子没有移动,但我们依然能读取到 ZZZ 轴有 −1g-1g−1g 的值。因为球在墙面上施加的压力是由重力造成的。在理论上,它可以是不同类型的引力。例如,你可以想象盒子里的圆球是铁质的,将一个磁铁放在盒子旁边,小球就会撞上另一面墙,这时圆球受到的是磁场力。引用这个例子只是为了说明 加速度传感器的本质是检测力而非加速度。只是 加速度所引起的惯性力正好能被加速度传感器的检测装置所捕获

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

  到目前为止,我们已经分析了单轴加速度传感器的输出。三轴加速度传感器的真正价值在于它们能够检测全部三个轴的惯性力。再次回到盒子模型,并将盒子向右旋转 45 度。盒子模型依然是放在地球上。现在小球会与两个面接触:Z−Z-Z− 和 X−X-X−,见下图:

图1-4

  其中,0.71g0.71g0.71g 这个值实际上是 12\sqrt{\frac{1}{2}}21​​ 的近似值,是根据勾股定理计算出来的。

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

图 1-5

​ 其中,

  • RxR_xRx​、RyR_yRy​、RzR_zRz​ 是向量 RRR 分别在 X、Y、Z 轴上的投影;
  • RxzR_{xz}Rxz​ 是向量 RRR 在 XOZ 平面上的投影;
  • RyzR_{yz}Ryz​ 是向量 RRR 在 YOZ 平面上的投影;
  • AxzA_{xz}Axz​ 是 RzR_zRz​ 和 RxzR_{xz}Rxz​ 之间的夹角;
  • AyzA_{yz}Ayz​ 是 RzR_zRz​ 和 RyzR_{yz}Ryz​ 之间的夹角;

​ 根据勾股定理,求得:

  • tan⁡Axz=RxRz\tan{A_{xz}}=\frac{R_x}{R_z}tanAxz​=Rz​Rx​​
  • tan⁡Ayz=RyRz\tan{A_{yz}}=\frac{R_y}{R_z}tanAyz​=Rz​Ry​​

​ 那么,通过反正切函数 arctan⁡()\arctan()arctan() 可得:
{Axz=arctan⁡RxRzAyz=arctan⁡RyRz(1.1)\begin{cases} A_{xz}=\arctan\frac{R_x}{R_z}\\ A_{yz}=\arctan\frac{R_y}{R_z}\\ \end{cases} \tag{1.1} {Axz​=arctanRz​Rx​​Ayz​=arctanRz​Ry​​​(1.1)
​ 我们感兴趣的角度是 Axz、AyzA_{xz}、A_{yz}Axz​、Ayz​。想象图1-5新模型中每个轴都分别垂直于原模型中各自的墙面。矢量 RRR 是加速度传感器所检测的矢量(它可能是重力或其它惯性力的合成)。Rx、Ry、RzR_x、R_y、R_zRx​、Ry​、Rz​ 是矢量 RRR 在 X、Y、Z 轴上的投影。

​ 根据三维空间勾股定理,可以得到下列关系:
R2=Rx2+Ry2+Rz2(1.2)R^2={R_x}^2+{R_y}^2+{R_z}^2 \tag{1.2} R2=Rx​2+Ry​2+Rz​2(1.2)
​ 回到 MPU-6050 传感器中,在上一小节我们已经分别读取到 3 个轴的加速度数据,但是我们读到的加速度数字量的单位还不是 g(9.8m/s2)g(9.8m/s^2)g(9.8m/s2) 。最后的转换,我们还需要引入加速度传感器的灵敏度(Sensitivity),单位通常是 LSB/g\rm{LSB}/\it{g}LSB/g 。比方说,加速度传感器的灵敏度为 16384LSB/g16384\ \rm{LSB}/\it{g}16384 LSB/g 。灵敏度值可以在加速度传感器规格书中查到。要获得最后的单位为 ggg 的加速度值,我们使用下列公式计算:
Rx=RxSensitivity(1.3)R_x=\frac{R_x}{Sensitivity} \tag{1.3} Rx​=SensitivityRx​​(1.3)
​ 比如:

  • 当设置 MPU-6050 加速度传感器的灵敏度为 16384LSB/g16384\ \rm{LSB}/\it{g}16384 LSB/g 时,读取到 MPU-6050 的 X、Z 轴加速度数据为 1122、16674 ,则可以计算出:

{Rx=1122/16384=0.068gRz=16674/16384=1.018gAxz=arctan⁡(0.068g/1.018g)=0.0667rad(1.4)\begin{cases} R_x=1122/16384=0.068g\\ R_z=16674/16384=1.018g\\ A_{xz}=\arctan(0.068g/1.018g)=0.0667\ rad\\ \end{cases} \tag{1.4} ⎩⎪⎨⎪⎧​Rx​=1122/16384=0.068gRz​=16674/16384=1.018gAxz​=arctan(0.068g/1.018g)=0.0667 rad​(1.4)

​ 注意,此时计算出的角度单位为弧度(rad),需要转换成角度(°):
Axz=0.0667/π∗180=3.82°(1.5)A_{xz}=0.0667/\pi*180=3.82° \tag{1.5} Axz​=0.0667/π∗180=3.82°(1.5)

2. 陀螺仪

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

  • RxzR_{xz}Rxz​ —— 惯性力矢量 RRR 在 XOZ 平面上的投影;
  • RyzR_{yz}Ryz​ —— 惯性力矢量 RRR 在 YOZ 平面上的投影。

​ 在由 RxzR_{xz}Rxz​ 和 RzR_{z}Rz​ 组成的直角三角形中,运用勾股定理可得:
Rxz2=Rx2+Rz2(2.1){R_{xz}}^2={R_x}^2+{R_z}^2 \tag{2.1} Rxz​2=Rx​2+Rz​2(2.1)
​ 同理:
Ryz2=Ry2+Rz2(2.2){R_{yz}}^2={R_y}^2+{R_z}^2 \tag{2.2} Ryz​2=Ry​2+Rz​2(2.2)
​ 同时注意:
{R2=Rx2+Ryz2R2=Ry2+Rxz2(2.3)\begin{cases} {R}^2={R_x}^2+{R_{yz}}^2\\ {R}^2={R_y}^2+{R_{xz}}^2\\ \end{cases} \tag{2.3} {R2=Rx​2+Ryz​2R2=Ry​2+Rxz​2​(2.3)
​ 相反,我们按如下方法定义 Z 轴和 Rxz、RyzR_{xz}、R_{yz}Rxz​、Ryz​ 向量所成的夹角:

  • AxzA_{xz}Axz​ —— RxzR_{xz}Rxz​ 和 Z 轴所成的夹角;
  • AyzA_{yz}Ayz​ —— RyzR_{yz}Ryz​ 和 Z 轴所成的夹角。

​ 现在我们离陀螺仪要测量的东西又近了一步。陀螺仪测量上面定义的角度的变化率。换句话说,它会输出一个与上面这些角度变化率线性相关的值。为了解释这一点,我们先假设在 t0t_0t0​ 时刻,我们已经测得绕 Y 轴旋转的角度(即 AxzA_{xz}Axz​),定义为 Axz0A_{xz0}Axz0​ ,之后在 t1t_1t1​ 时刻我们再次测量这个角度,得到 Axz1A_{xz1}Axz1​ 。则角度变化率按下面方法计算:
RateAxz=(Axz1−Axz0)/(t1−t0)(2.4)Rate\ A_{xz}=(A_{xz1}-A_{xz0})\ /\ (t_1-t_0) \tag{2.4} Rate Axz​=(Axz1​−Axz0​) / (t1​−t0​)(2.4)
​ 如果用度(°)来表示角度,秒(s)来表示时间,那这个值的单位就是度/秒(°/s)。这就是陀螺仪检测的东西。在实际运用中,陀螺仪一般都不会直接输出一个单位为度/秒的数值(除非它是个特殊的数字陀螺仪)。在 MPU-6050 传感器中,就像读取加速度数据一样,会得到一个经过内置 ADC 转换后得到的数字量,单位为 LSB 。参考对加速度传感器数据的处理,我们同样得到:
{RateAxz=(GyroY−ZeroRate)/SensitivityRateAyz=(GyroX−ZeroRate)/Sensitivity(2.5)\begin{cases} Rate\ A_{xz}=(GyroY-ZeroRate)\ /\ Sensitivity\\ Rate\ A_{yz}=(GyroX-ZeroRate)\ /\ Sensitivity\\ \end{cases} \tag{2.5} {Rate Axz​=(GyroY−ZeroRate) / SensitivityRate Ayz​=(GyroX−ZeroRate) / Sensitivity​(2.5)
​ 其中,

  • GyroX,GyroYGyroX,GyroYGyroX,GyroY —— 这两个值是陀螺仪数据,它们分别代表矢量 R 的投影在 XOZ 和 YOZ 平面内的转角,也可等价的说,旋转可分解为单独绕 X 和 Y 轴的运动;
  • ZeroRateZeroRateZeroRate —— 陀螺仪零偏值,它是陀螺仪静止不动时的输出值。理论上,陀螺仪静止不动时,应该输出为 0 的值,但是受制造工艺、外部因素的影响,陀螺仪静止不动时输出一个比较小的随机的不为 0 的值,我们称之为零偏值。
  • SensitivitySensitivitySensitivity —— 陀螺仪的灵敏度,单位 LSB/(deg/s)\rm{LSB}\ /\ \it(deg/s)LSB / (deg/s) ,它的意思就是如果旋转速度增加 1°/s,陀螺仪的输出就会增加多少数值。

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

  • GyroX=12345GyroX=12345GyroX=12345

​ 若此时设置陀螺仪的灵敏度为 16.4,并认为陀螺仪零偏值为 0 ,代入公式(2.5),得到:
RateAyz=(12345−0)/16.4=751deg/s(2.6)Rate\ A_{yz}=(12345-0)\ /\ 16.4=751\ deg/s \tag{2.6} Rate Ayz​=(12345−0) / 16.4=751 deg/s(2.6)
​ 换句话说,传感器绕 X 轴以 751°/s 的速度旋转。

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

加速度计、陀螺仪工作原理相关推荐

  1. 石英加速度计的工作原理

    石英加速度计的工作原理 加速度是一种用来反映物体在运动过程中的速度变化状态的物理量,其无法直接测量,当前的加速度传感器(加速度计)采用间接测量以及力的平衡等技术来获取物体的加速度.加速度传感器的工作原 ...

  2. 陀螺仪工作原理及创新应用

    关注.星标公众号,不错过精彩内容 来源:ittbank 先来看一段视频,俄罗斯教授演示陀螺仪稳定器的工作原理: ●陀螺仪的名字由来 陀螺仪名字的来源具有悠久的历史.据考证,1850年法国的物理学家莱昂 ...

  3. 转载——陀螺仪工作原理

    介绍 本指南旨在向兴趣者介绍惯性MEMS(微机电系统)传感器,特别是加速度计和陀螺仪以及其他整合IMU(惯性测量单元)设备. 2012-8-22 16:38 上传 下载附件 (16.48 KB) IM ...

  4. 用Arduino测试ADXL335加速度计如何工作?

    用Arduino测试ADXL335加速度计如何工作? 原文地址 你有没有想过你的智能手机是如何知道哪个方向向上的?这是当今智能手机最具创新性的功能之一.它们都有一个内置在电路中的称为加速度计的微型设备 ...

  5. IMU中加速度计、陀螺仪、磁力计的工作原理

    关注+星标公众号,不错过精彩内容 编排 | strongerHuang 来源 | autotian@CSDN IMU:Inertial Measurement Unit,即惯性测量单元.它是由三轴加速 ...

  6. MEMS陀螺仪、加速度计和磁强计原理

    目录 0.前言 1. MEMS加速度计 2. MEMS陀螺仪 3. MEMS磁强计 4.参考资料 0.前言 本文根据HowToMechatronics1网站中的介绍MEMS加速度计.陀螺仪和磁强计的文 ...

  7. 石英加速度计工作原理介绍

    石英加速度计工作原理介绍 加速度是一种用来反映物体在运动过程中的速度变化状态的物理量,其无法直接测量,当前的加速度传感器(加速度计)采用间接测量以及力的平衡等技术来获取物体的加速度.加速度传感器的工作 ...

  8. MPU6050工作原理及STM32控制MPU6050

    一·简介: 1.要想知道MPU6050工作原理,得先了解下面俩个传感器: ①陀螺仪传感器: 陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的.人们根据这个道理,用它来保持 ...

  9. 惯性导航工作原理及系统分类

    惯性导航系统(INS)是一种自主式的导航设备,能连续.实时地提供载体位置.姿态.速度等信息;特点是不依赖外界信息,不受气候条件和外部各种干扰因素. 惯性导航及控制系统最初主要为航空航天.地面及海上军事 ...

最新文章

  1. Hadoop虚拟机的jdk版本和本地eclipse的版本不一致怎么办
  2. Stream流与Lambda表达式(四) 自定义收集器
  3. c语言中dfs用pos做参数,使用DFS解决8-Puzzle
  4. 洪水填充算法_基于GIS的洪水淹没范围计算
  5. 据说很多女生都想知道男生是如何上厕所的?
  6. Canvas制作动态进度加载水球
  7. 更新widget 导致widget host(home) 挂掉
  8. web前端最全各类资源
  9. 如何修改Qt Creator的界面语言
  10. php中表单名称未定义,php – zf2,表单集合没有在zf2中创建正确的输入名称
  11. Hive入门学习随笔(二)
  12. 简单常用的sql语句
  13. 使用Charles抓取百词斩单词音频、单词翻译、例句音频、例句翻译
  14. leetcode 845.数组中的最长山脉(python)
  15. LLVM IR / LLVM指令集入门
  16. 从数学上推导伴随矩阵特征值
  17. 冰山理论(理解笔记)
  18. vue使用高德地图的搜索地址和拖拽选址
  19. AI产业快速落地难?破局人来了
  20. 【四】零基础上手HAL库之—GPIO按键

热门文章

  1. item_get - VVIC根据ID取商品详情 API
  2. 移动4G网络App页面加载时间过长
  3. 基于springboot和mysql的人事管理系统设计与实现
  4. 解题记录 LeetCode 下一个更大元素 单调栈
  5. multisim仿真 74LS147D芯片
  6. 2019四川大学计算机系,2019四川大学专业排名
  7. php buildtrees,thinkphp5带分组功能的树形结构的无限级分类节点展示
  8. CentOS7-命令-创建用户(useradd)
  9. SyncAdapter同步机制
  10. 你和真努力还差这几点