[保姆级教程] 从原理到应用,超级详细的MPU6050传感器整理,看完这一篇就够了

        最近刚好在学习MPU6050传感器,想从原理到应用整个过程进行总结,查阅了无数资料,也借鉴了很多博主的知识内容,我会用最通俗易懂的语句,从原理到模块初始化再到数据处理,一一进行解释,通过耐心的学习,我相信你们会对模块有跟加全面的了解。我都懂了,更何况你们呢?

        基于Arduino平台的开发,结合卡尔曼滤波,先给你们看看效果!有需要代码的小伙伴评论区留言哦,连上就能用!文件下载地址:(6条消息) 陀螺仪加速度计MPU6050模块加上卡尔曼滤波果然就不一样,连上就能用!-硬件开发文档类资源-CSDN文库

陀螺仪加速度计MPU6050模块应用!加上卡尔曼滤波果然就不一样。

目录

1 简介

2 原理说明 

2.1 MEMS介紹

2.2 MEMS陀螺仪

2.3 MEMS加速度计

 3 特性说明

3.1 电气特性

3.2陀螺仪特性

3.3 加速度計特性

 4 使用说明

4.1 模块初始化

4.2 数据处理

4.2.1 数据格式

4.2.2 加速度计

4.2.3 角速度计

4.2.4 傾斜角计算

4.3 校正与滤波

总结

下期预告!


1 简介

        MPU6050是集成六轴运动处理模块,即三轴MEMS陀螺仪传感器和三轴MEMS加速度传感器,相较于多组件方案,集成模块可以免除各个组件时间轴之差的问题,还能大大减小封装的空间。 模块一般在智能手机、手持游戏产品、导航设备、电子稳像等领域发挥重要作用。是集成六轴运动处理模块,即三轴MEMS陀螺仪传感器和三轴MEMS加速度传感器,相较于多组件方案,集成模块可以免除各个组件时间轴之差的问题,还能大大减小封装的空间。 模块一般在智能手机、手持游戏产品、导航设备、电子稳像等领域发挥重要作用。


2 原理说明 

2.1 MEMS介紹

        MEMS是微机电系统(Micro Electro Mechanical System)的英文缩写。 它是指可批量制作的,集微型机构、微型传感器、微型执行器以及信号处理和控制电路、通信和电源于一体的系统。 比较成熟的MEMS传感器有三种:加速度计、压力传感器和陀螺仪

2.2 MEMS陀螺仪

        MEMS陀螺仪与传统的陀螺仪原理不同。 传统陀螺仪是一个不停转动的物体即转子,由于惯性其旋转轴的指向不会随着承载它的支架旋转而改变方向,如图2-1所示,三轴即横滚轴、俯仰轴和航向轴,通俗点说也就是X Y Z三轴,当三轴发生旋转时,旋转轴是不会随之变化的。 显然,将这样一个不停旋转的装置用微机技术在硅片衬底上加工是非常难的事情。

[保姆级教程] 从原理到应用,超级详细的MPU6050传感器整理,看完这一篇就够了_第1张图片

                                                                          图2-1

       为此,MEMS陀螺仪基于陀螺仪的特性利用科里奥利力来实现。 科里奥利力即科氏力,它是对旋转体系中进行直线运动的质点由于惯性相对于旋转体系产生的直线运动的偏移的一种描述。

我们以单轴偏航陀螺仪为例,讨论最简单的工作原理如图2-2。 两个正在运动的质点向相反的方向连续运动,如蓝色箭头,只要从外部施加一个角速度,就会产生一个与质点运动方向垂直的科氏力,如黄色箭头。 产生的科氏力会使质点在原来的运动方向上发生位移,位移的大小与角速度的大小成正比。 此位移会引起响应电容的变化,再利用专用的电路即可检测。 同理我们可以得到三轴的工作原理。

[保姆级教程] 从原理到应用,超级详细的MPU6050传感器整理,看完这一篇就够了_第2张图片

                                                                        图2-2 

2.3 MEMS加速度计

技术成熟的MEMS加速度计分为三种:压电式、容感式和热感式

  •  压电式:在其内部有一个刚体支撑的质量块,在运动的情况下质量块会产生压力,刚体产生应变,从而转换为电信号输出。
  •  容感式:它是标准的平行板电容器,加速度的变化带来质量块的移动从而改变电容两级的间距以及面积,通过计算即可得到相应的加速度。
  • 热感式:內部無任何质量块,它的中央有加热体,周边是温度传感器,里面是密闭的气腔。 工作时在加热体的作用下,气体在内部形成一个热气团,热气团的比重和周围的冷气是有差异的,通过惯性热气团的移动形成的质量块,热场变化让感应器感应到加速度值。

 3 特性说明

3.1 电气特性

  • VDD供电电压:3.3V~5V
  • 陀螺仪工作电流:3.6mA
  • 陀螺仪待机电流:5μA
  • 加速度计正常工作电流:500μA
  • 低功率加速度计模式电流:1.25Hz时为10μA5Hz时为20μA20Hz时为60μA10Hz时为110μA

3.2陀螺仪特性

  • 用户可编程、数字输出X、Y、Z三轴的传感器,可测量程为±250, ±500,±1000,±2000°/s
  • 连接到FSYNC引脚的外部同步信号支持图像、视频和GPS同步
  • 16-bit ADC
  • 增强偏置和灵敏度温度的稳定性以减少用户校准的麻煩
  • 改善低频噪声性能
  • 数字可编程低通滤波器
  • 出厂校准

3.3 加速度計特性

  • 用户可编程,数字输出三轴的加速度计可测量程为±2g,±4g,±8g,±16g
  • 集成的16-bit ADC可以在不需要外部信号的情况下对加速度计进行同步采样
  • 用户可编程中断


 4 使用说明

4.1 模块初始化

1、设定时钟源。 可选的时钟源有:内部8MHz晶振、基于陀螺仪的时钟和外部时钟源。 默认为内部晶振,强烈建议选择其中一个陀螺仪(或者外部时钟源)作为时钟源,以提高稳定性。

  • 寄存器地址:0X6B--Power Management 1
  • 写入数据   :0X01,选择陀螺仪的X轴作为时钟源

2、陀螺仪配置。 对陀螺仪的量程进行设定。

  • 寄存器地址:0X1B-- Gyroscope Configuration
  • 写入数据   :0X00,选择量程为:±250°/s(视情况而定)

3、加速度计配置。对加速度计的量程进行设定。

  • 寄存器地址:0X1C-- Accelerometer Configuration
  • 写入数据    :0X00,选择量程为:±2g(视情况而定)

4.2 数据处理

4.2.1 数据格式

       我们感兴趣的数据位于0X3B到0X48这14个字节的寄存器当中。 这些数据会被动态更新,下面是相关的寄存器地址与数据名称。 注意每个数据都是2个字节,高位在前低位在后

 

  • 0x3B,加速度计的X轴分量ACC_X
  • 0x3D,加速度计的Y轴分量ACC_Y
  • 0x3F,加速度计的Z轴分量ACC_Z
  • 0x41,当前温度TEMP
  • 0x43,绕X轴旋转的角速度GYR_X
  • 0x45,绕Y轴旋转的角速度GYR_Y
  • 0x47,绕Z轴旋转的角速度GYR_Z

      关于模块的坐标系定义如下图4-1所示,将模块面朝自己,此时水平方向即为X轴,竖直方向为Y轴,指向自己的放向为Z轴。 

[保姆级教程] 从原理到应用,超级详细的MPU6050传感器整理,看完这一篇就够了_第3张图片

图4-1

4.2.2 加速度计

加速度计的三轴分量ACC_X、ACC_Y和ACC_Z均为16位有符号整数,其均以重力加速度g的倍数为单位,有四个可选量程:±2g、±4g、±8g、±16g。 此时以ACC_X为例,量程选择±2g,则实际加速度转换参考下面公式:

        显然,量程越低精度越好,量程越大表示的范围也越大,精度也随之变低,这需要根据具体的应用来设定。我们可以把加速度计想象为一个正方体盒子里放了一个球如图4-2所示,假象盒子没有任何受力时(包括重力),小球将处于正中心的位置,三轴的加速度均为0。

[保姆级教程] 从原理到应用,超级详细的MPU6050传感器整理,看完这一篇就够了_第4张图片

图4-2 

 如果此时给盒子施加水平向左的力,盒子会获得向左的加速度,此时盒内的小球由于惯性会向右侧偏移如图4-3所示。

[保姆级教程] 从原理到应用,超级详细的MPU6050传感器整理,看完这一篇就够了_第5张图片

图4-3 

        为了保证数据的物理意义,加速度计是以小球在三轴坐标值的相反数为加速度值,即当小球的位置向轴的正方向偏移,该轴的加速度读数就位负值,同理当小球的位置向轴的负方向偏移,该轴的加速度读数就位正值。

4.2.3 角速度计

        绕XYZ三个座标轴旋转的角速度分量GYR_XGYR_YGYR_Z均为16位有符号整数,其均以"度/秒"为单位,有四个可选量程±250, ±500, ±1000, ±2000°/s同样我们以GYR_X為例,量程選擇±2000°/s则实际角速度转换参考下面公式:       

4.2.4 傾斜角计算

        我们可以根据加速度计的数据推算出倾斜角。 我们以其中一个面为例,若只考虑 X 轴和 Z 轴(此时Y 轴垂直于屏幕),将重力加速度作在 X 轴上分解,传感器 X 坐标正方向与重力加速度 g 的夹角为 ∠b,如图4-4所示:

[保姆级教程] 从原理到应用,超级详细的MPU6050传感器整理,看完这一篇就够了_第6张图片

 图4-4

从图中可以看到,重力加速度g(绿色箭头)分解为X轴上的 gx(黑色箭头)和Z轴上的gz(紫色箭头)。

则传感器X轴与自然坐标系X轴的夹角为90°—∠b

同理:

Y 轴则始终垂直于重力方向,夹角为 90°。

4.3 校正与滤波

       校正是相对比较简单的工作,我们只需在已知数据的场景下测试数据的offset,多次测量取平均值,之后的每一次读书减去offset即可。 例如角速度GYR_X的offset,当模块处于静止状态时,GYR_X读书理论上应该为0,但它往往会存在偏移量offset,我们10ms读取一次得到以下10个值:

-158.4, -172.9, -134.2, -155.1, -131.2

-146.8, -173.1, -188.6, -142.7, -179.5

10个数取平均之后得到offset为-158.25,之后,我们每一次读书都减去offset即可。

       关于滤波,夹杂了大量噪音的资料,卡尔曼滤波器的效果无疑是最好的,相关的原理这边不展开讲解,如感兴趣可以自行查阅资料。

         这里我们可以直接使用相关的库函数完成。 在我们的模型中,一个卡尔曼滤波器接受一个轴上的角度值、角速度值以及时间增量,估计出一个消除噪音的角度值。 跟据当前的角度值和上一轮估计的角度值,以及这两轮估计的间隔时间,我们还可以反推出消除噪音的角速度。



总结

        本文对MPU6050进行了全方位的解释,包括工作原理、电气特性以及如何使用。相信通过耐心的学习,这篇文章可以给你不少的启发。

下期预告!

下期会针对环境光传感器进行全面的分析,模块使用的是STK3331或者3311,感兴趣的小伙伴记得关注哦!

你可能感兴趣的:(智能传感器,单片机,嵌入式硬件,经验分享,几何学)