本文章基于野火STM32并在其基础上进行补充
MPU6050简介
MPU6050模块,它是一种六轴传感器模块,采用 Inven Sense公司的MPU6050作为主芯片,能同时检测三轴加速度、三轴陀螺仪(三轴角速度)的运动数据以及温度数据。
利用MPU6050芯片内部的DMP模块(Digital Motion Processor数字运动处理器),可对传感器数据进行滤波、融合处理,他直接通过IIC接口向主控器输出姿态解算后的姿态数据,降低主控器的运算量。其姿态解算频率最高可达200Hz,非常适合用于对姿态控制实时要求较高的领域。常见应用于手机、智能手环、四轴飞行器及计步器等的姿态检测。
注意:这里是200而不是8000,陀螺仪每秒钟虽然可以采样角速度8000次,但是这里输出不是角速度,而是姿态角,姿态角的计算实际输出要用角速度数据和加速度数据融合计算才能得到。
图中表示的坐标系及旋转符号标出了MPU6050传感器的XYZ轴的加速度有角速度的正方向。
MPU6050参数
测量维度3维,就是包含了x,y,z三个维度
ADC分辨率就是上一节中的分辨率的概念
假设使用±2g的时候,使用ADC读到16384,那就意味着这个方向的力等于g
解释:因为ADC是16位的,首先考虑正负号2**16=65536,而±2g就是将这16位分开成正负2份(一半表示-2g到0,另一半表示0到+2g),而最大表示为2g,将2g分开,就是16384表示1g
假如一个电机是1000转每秒,则实际转过的角度就是360000°/s,就超过了测量范围
经过角速度,加速度和滤波等计算得到,直接输出姿态角
与之前相同就不再过多介绍
模块各部分
SCL和SDA就是用于I2C通讯的
其中的 SDA/SCL、 XDA/XCL通讯引脚分别为两组I2C信号线。当模块与外部主机通讯时,使用 SDA/SCL,如与STM32芯片通讯;而 XDA/XCL则用于MPU6050芯片与其它I2C传感器通讯时使用,例如使用它与磁场传感器连接,MPU6050模块可以把从主机SDA/SCL接收的数据或命令通过 XDA/XCL引脚转发到磁场传感器中。但实际上这种功能比较鸡肋,控制麻烦且效率低,一般会直接把磁场传感器之类的C传感器直接与MPU6050挂载在同一条总线上(即都连接到 SDA/SCL),使用主机直接控制。
前两节加上这节,应该对MPU6050理解的差不多了,再往后就是写代码了,那本部分就在这里完结吧!
附加部分:
DMP模块的主要功能
-
姿态解算: DMP模块能够使用传感器的陀螺仪和加速度计数据进行姿态解算,提供设备的倾斜、旋转等姿态信息。
-
运动追踪: DMP可以融合来自不同轴的数据,提供更准确的运动追踪,适用于需要跟踪设备在三维空间中位置变化的应用。
-
自动校准: 一些DMP模块具有自动校准功能,能够在使用过程中校准传感器,以减小误差。
-
高级功能: 一些DMP模块还可能提供一些高级功能,如步数计数、手势识别等。
-
简化接口: DMP模块通过简化接口,通常提供了更高级别的API,使得开发者能够更容易地获取复杂的运动数据而无需深入了解传感器的底层工作原理。
MPU6050参数图
加速度测量模式
陀螺仪测量模式