原创 STM32系列之四旋翼(四) MPU6050知识点梳理

2017-8-24 23:52 5564 17 17 分类: MCU/ 嵌入式

相关内容:

1)MPU6050的简介

2)MPU6050的封装

3)MPU6050的陀螺仪、加速度计、磁力计介绍

4)自检(Self Test)

5)系统结构图

6)姿态角

7)如何得到姿态角

8)MPU6050与单片机的通信

一、MPU6050的简介

MPU6050是全球首例6轴运动处理器,它集成了3轴陀螺仪,3轴加速度计,以及一个可扩展的数字运动处理器DMP。可通过IIC接口连接一个第三方数字传感器(比如磁力计),构成9轴的MPU6050,扩展之后就可通过IIC接口输出一个9轴的信号,也可通过其IIC接口连接非惯性数字传感器,比如压力传感器,另外片上还内嵌了一个温度传感器,可测MPU6050自身的温度。

MPU-6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±500, ±1000, ±2000°/秒( dps),加速度计可测范围为±2,±4,±8,±16g。

MPU6050与所有的设备寄存器之间的通信采用400KHz的IIC接口。

二、MPU6050的封装

芯片尺寸4×4×0.9mm,采用QFN封装(无引线方形封装),可承受最大 10000g的冲
击:

引脚定义:

CLKIN:可选的外部时钟输入,如果不用可连接到GND

AUX_DA:IIC主串行数据,用于外接传感器,比如磁力计

AUX_CL:IIC主串行时钟,用于外接传感器

VLOGIC:为数字I/O口提供电压

AD0:IIC从机地址的最低位,接GND时,从机地址最低位为0,接VDD时,从机地址最低位为1;

REGOUT:校准滤波电容连接

FSYNC:帧同步数字输入

INT:中断数字输入

VDD:电源电压、为数字I/O口供电

GND:电源地

RESV:保留引脚,不接

CPOUT:连接电荷泵电容

SCL:IIC串行时钟引脚,用于和其它设备寄存器之间的通信

SDA:IIC串行数据引脚

三、MPU6050的陀螺仪、加速度计、磁力计

1、陀螺仪

陀螺仪就是内部有一个陀螺,它的轴由于陀螺效应始终与初始方向平行,这样就可以通过与初始方向的偏差计算出旋转方向和角度。传感器MPU6050实际上是一个结构非常精密的芯片,内部包含超微小的陀螺,陀螺仪是测试角速度的传感器,也有人把角速度说成角速率,说的是一样的物理量。拿电机做例子,当我们说一个电机10转每秒。一转是360度,那么它的主轴在一秒内转过3600度,体现了绕轴转动的快慢。也就是说这个电机在转动时的角速度是3600dps.dps 就是dergee per second 度每秒(或者写成 deg/s).

MPU6050 集成了三轴的陀螺仪.角速度全格感测范围为±250、±500、±1000与±
2000°/sec (dps).可以准确追踪快速与慢速动作。当选择量程为±250dps的时候,将会得到分辩率为131LSB/(º/s),根据65536/2/250计算所得.也就是当载体在X+轴转动1dps时,ADC将输出131.

陀螺仪的量程可通过MPU6050的GYRO_CONFIG(陀螺仪配置寄存器)来设置:

这个寄存器是用来触发陀螺仪自检和配置陀螺仪的满量程范围的,其中FS_SEL[1:0]用来开启/关闭陀螺仪3个轴的自检,FS_SEL用来设置陀螺仪的量程,FS_SEL[1:0]取值和量程的对应关系如下:

2、加速度计

加速度计顾名思义,就是测量加速度的,能够反映物体的受力情况,我们知道,物体在空间受的力可以分解到X、Y、Z坐标轴上,而用3轴的加速度计,通过三个坐标轴的所受的惯性力,就可以得到三个轴的加速度,并将这个得到的加速度值用于角度的计算。

MPU6050集成了3轴的加速度计,加速度全格感测范围为±2g, ±4g, ±8g 和±16g (1g=9.8米/ S ^ 2 ),当量程选择±2g时,对应的灵敏度= 16384 LSB/ G ,即如果Z轴的加速度为1g时,则ADC输出16384。

MPU6050加速度计的量程可以通过ACCEL_CONFIG(加速度配置寄存器)进行设置:

其中XA_ST,YA_ST、、ZA_ST用来开启/关闭X轴、Y轴、Z轴的自检,AFS_SEL[1:0]用来设置加速度计的量程:

3、磁力计

陀螺仪的强项在于测量自身的旋转运动,对自身的运动更擅长,但不能确定设备的方位。加速度计在于测量设备的受力情况,对设备相对于外部参考系的运动更擅长,也不能确定方位。所以,如果对方位有比较高的要求,可以用IIC接口外接一个磁力计,这也是解决航向角(yaw)漂移的办法。

磁力计用于感受地磁向量以解算出模块与北的夹角,磁力计这个功能类似于指南针,所以也称之为电子指南针,或者电子罗盘。如果MPU6050扩展了磁力计,就能够确定设备的方位。

四、自检(Self Test)

MPU6050的陀螺仪和加速计都带有自检的功能,四旋翼中陀螺仪需要开启自检,加速度计不用开启自检。

陀螺仪自检:陀螺仪不开启自检时,如果在上电之前,四旋翼会以自身的放置状态建立坐标系,如果它的放置不是与地面平行的,而是与地面成一定的角度,那它所建的坐标系就会与地面成一定的夹角,也会在起飞和飞行过程中一直保持这个夹角,即它不能与地面平行的飞行,相对于上电之前建立的坐标系飞行,而不是地面坐标系。利用陀螺仪的自检就可以避免这个问题,开启自检功能,上电时自检的数据(与地面的夹角)会被送到MPU6050的DMP储存起来。如果上电前,在X轴方向四旋翼与地面的夹角为1°,飞行时,X轴上与地面的夹角为2°,DMP在处理时会减去自检的角度1°,得到的角度就是相对于地面坐标系的角度值了。

加速度计自检:因为加速度计测量的是相对于地面坐标系的运动,在静止时,只有垂直向下的重力加速度,而这个重力加速度的正方向默认是Z- ,与怎样放置没有关系,但是如果开启了自检,而且四旋翼上电之前也不是水平放置的话,那么重力加速度的正方向也就不是Z-了,为了让重力加速度的正方向一直是是默认的Z- 方向,就只能不开启加速度计的自检了。

五、系统结构图

从这个图中可以清晰的看到MPU6050的绝大部分资源,也能看到数据的走向,所以这个图也不防多看几遍。

六、姿态角

姿态角(Euler)是俯仰角(pitch)、滚转角(Roll)、偏航角(Yaw)三个角的统称,以下面MPU6050芯片的坐标系为例,绕X轴旋转的姿态角是俯仰角,绕Y轴旋转的姿态角是滚转角,绕Z轴旋转的姿态角是偏航角,姿态角的正负也可根据图中X轴、Y轴、Z轴的交投来判断,箭头所指方向为正。也可用右手定则来判断,右手握住坐标轴,大拇指指向坐标轴的正方向,则四指所指方向为正。

七、如何得到姿态角

MPU6050的陀螺仪和加速度计会产生6个原始数据,着6个原始数据经过姿态融合后就可以得到Pitch、Roll、Yaw。

姿态融合算法就是融合多种运动传感器的算法,有四元数法、一阶互补滤波算法、卡尔曼滤波算法等。

我们四旋翼中用的是四元数的算法,而且是借助MPU6050自带的数字运动处理器DMP并结合InvenSense 的DMP库来得到这个四元数,最后四元数经过几行公式的转换就可以得到需要的Pitch、Roll、Yaw了。

八、MPU6050与单片机的通信

我们看MPU的引脚定义的时候会发现,有一个INT引脚,这个脚很有用,当DMP处理完原始数据时,就会在INT引脚产生一个中断信号,单片机检测到这个中断信号,就会通过IIC接口读取DMP产生的四元数。

今天就写这些了。

能力有限,如果有写的不合适的地方,欢迎大家多多指正。如果有兴趣,也可以一起交流,互相学习。 (微信号 :c18093458455)

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
17
1
2
3
4
5
6
7
8
9
0
关闭 站长推荐上一条 /6 下一条