i.MX6ULL终结者MPU6050 六轴传感器例程MPU6050简介

MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了安装空间。MPU6050内部整合了3轴陀螺仪和3轴加速度传感器,并且含有一个第二IIC接口,可用于连接外部磁力传感器,并利用自带的数字运动处理器(DMP: Digital Motion Processor)硬件加速引擎,通过主IIC接口,向应用端输出完整的9轴融合演算数据。有了DMP,我们可以使用InvenSense公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度。

MPU6050的特点:
以数字形式输出6轴或9轴(需外接磁传感器)的旋转矩阵、四元数(quaternion)、欧拉角格式(Euler Angle forma)的融合演算数据(需DMP支持)
1.具有131 LSBs/°/sec敏感度与全格感测范围为±250、±500、±1000 与±2000°/sec 的3轴角速度感测器(陀螺仪)
2.集成可程序控制,范围为±2g、±4g、±8g 和±16g 的 3 轴加速度传感器
3.移除加速器与陀螺仪轴间敏感度,降低设定给予的影响与感测器的飘移
4.自带数字运动处理(DMP: Digital Motion Processing)引擎可减少处理器复杂的融合演算数据、感测器同步化、姿势感应等的负荷
5.内建运作时间偏差与磁力感测器校正演算技术,免除了客户须另外进行校正的需求
6.自带一个数字温度传感器
7.带数字输入同步引脚(Sync pin)支持视频电子影像稳定技术与 GPS
8.可程序控制的中断(interrupt),支持姿势识别、摇摄、画面放大缩小、滚动、快速下降中断、high-G 中断、零动作感应、触击感应、摇动感应功能
9.VDD 供电电压为 2.5V±5%、3.0V±5%、3.3V±5%;VLOGIC 可低至 1.8V± 5%
10.陀螺仪工作电流:5mA,陀螺仪待机电流:5uA;加速器工作电流:500uA,加速器省电模式电流:40uA@10Hz
11.自带1024字节FIFO,有助于降低系统功耗
12.高达400Khz的IIC通信接口
13.超小封装尺寸:4x4x0.9mm(QFN)

MPU6050的内部框图如图 1所示:
i.MX6ULL终结者MPU6050 六轴传感器例程MPU6050简介_第1张图片

图 1

其中的SCL和SDA是连接CPU的IIC接口,CPU通过这个IIC接口来控制MPU6050,另外还有一个IIC接口: AUX_CL和AUX_DA,这个接口可用来连接外部从设备,比如磁传感器,这样就可以组成一个九轴传感器。VLOGIC是IO口电压,该引脚最低可以到1.8V,我们一般直接接VDD即可。AD0是从IIC接口(接CPU)的地址控制引脚,该引脚控制IIC地址的最低位。如果接GND,则MPU6050的IIC地址是:0X68,如果接VDD,则是0X69,注意:这里的地址是不包含数据传输的最低位的(最低位用来表示读写)!!在i.MX6ULL终结者开发板上AD0直接接到GND上了,所以MPU6050的IIC地址是0X68(不含最低位)。关于IIC我们在前面第24章已经介绍过,这里就不再具体介绍了。

接下来,我们介绍一下利用i.MX6ULL读取MPU6050的加速度和角度传感器数据(非中断方式),需要哪些初始化步骤:
1.初始化IIC接口:MPU6050与i.MX6ULL处理器直接采用IIC接口,所以我们需要先初始化与MPU6050连接的SDA和SCL数据线。这个在前面第24章已经介绍过了,我们的MPU6050使用的IIC与AP3216C是同一个IIC,所以初始化完全一样。

2.复位MPU6050,通过这一步让MPU6050内部所有寄存器恢复到默认值。通过对电源管理寄存器1(0X6B)的bit7写1实现。复位后电源管理寄存器1恢复默认值(0X40),然后必须设置该寄存器为0X00,以唤醒MPU6050进入正常工作状态。

3.设置角速度传感器(陀螺仪)和加速度传感器的满量程范围。我们设置两个传感器的满量程范围(FSR),分别通过陀螺仪配置寄存器(0X1B)和加速度传感器配置寄存器(0X1C)设置。我们一般设置陀螺仪的满量程范围为±2000dps,加速度传感器的满量程范围为±2g。

4.设置其它参数。我们还需要配置的参数有:关闭中断、关闭AUX IIC接口、禁止FIFO、设置陀螺仪采样率和设置数字低通滤波器(DLPF)等。本章我们不用中断方式读取数据,所以关闭中断,然后也没用到AUX IIC接口外接其他传感器,所以也关闭这个接口。分别通过中断使能寄存器(0X38)和用户控制寄存器(0X6A)控制。MPU6050可以使用FIFO存储传感器数据,不过本章我们没有用到,所以关闭所有FIFO通道,这个通过FIFO使能寄存器(0X23)控制,默认都是0(即禁止FIFO),所以用默认值就可以了。陀螺仪采样率通过采样率分频寄存器(0X19)控制,这个采样率我们一般设置为50即可。数字低通滤波器(DLPF)则通过配置寄存器(0X1A)设置,一般设置 DLPF 为带宽的 1/2 即可。

5.配置系统时钟源并使能角速度传感器和加速度传感器。系统时钟源同样是通过电源管理寄存器1(0X6B)来设置,该寄存器的最低三位用于设置系统时钟源选择,默认值是0(内部8M RC震荡) ,不过我们一般设置为1,选择x轴陀螺PLL作为时钟源,以获得更高精度的时钟。同时使能角速度传感器和加速度传感器,这两个操作通过电源管理寄存器2(0X6C)来设置,设置对应位为0即可开启。至此MPU6050的初始化就完成了,可以正常工作了(其他未设置的寄存器全部采用默认值即可),接下来,我们就可以读取相关寄存器,得到加速度传感器、角速度传感器和温度传感器的数据了。

我们先简单介绍几个重要的寄存器:
首先是配置寄存器,该寄存器地址为:0X1B,各位描述如图 2所示:
在这里插入图片描述

图 2

该寄存器我们只需要设置FS_SEL[1:0]这两个位:陀螺仪的满量程范围:0,±250°/S;1,±500°/S;2,±1000°/S;3,±2000°/S;我们一般设置为 3,即±2000°/S,因为陀螺仪的ADC为16位分辨率,所以得到灵敏度为:65536/4000=16.4LSB/(°/S)。

然后是加速度传感器配置寄存器,该寄存器地址为:0X1C,各位描述如图 3所示:
在这里插入图片描述

图 3

该寄存器我们只需设置AFS_SEL[1:0]这两个位:加速度传感器的满量程范围:0,±2g;1,±4g;2,±8g;3,±16g;我们一般设置为 0,即±2g,因为加速度传感器的ADC也是16 位,所以得到灵敏度为:65536/4=16384LSB/g。

然后是FIFO 使能寄存器,该寄存器的地址为0X23,各位描述如图 4所示:
在这里插入图片描述

图 4

该寄存器用于控制FIFO使能,在简单读取传感器数据的时候,可以不用FIFO,设置对应
位为0即可禁止FIFO,设置为1,则使能FIFO。注意加速度传感器的3个轴,全由1个位(ACCEL_FIFO_EN)控制,只要该位置1,则加速度传感器的三个通道都开启FIFO了。

然后是陀螺仪采样率分频寄存器,该寄存器地址为:0X19,各位描述如图 5所示:
在这里插入图片描述

图 5

该寄存器用于设置MPU6050的陀螺仪采样频率,计算公式为:
采样频率 = 陀螺仪输出频率 / (1+SMPLRT_DIV)
陀螺仪的输出频率,是1Khz或者8Khz,与数字低通滤波器(DLPF)的设置有关,当DLPF_CFG=0/7的时候,频率为8Khz,其他情况是1Khz。而且DLPF滤波频率一般设置为
采样率的一半。采样率我们假定设置为50Hz,那么SMPLRT_DIV=1000/50-1=19。

然后是配置寄存器,该寄存器地址为0X1A,各位描述如图 6所示:
在这里插入图片描述

图 6

我们主要设置数字低通滤波器(DLPF)的设置位,即:DLPF_CFG[2:0],加速度计和陀螺仪,都是根据这三个位的配置进行过滤的。DLPF_CFG不同配置对应的过滤情况如下所示:
i.MX6ULL终结者MPU6050 六轴传感器例程MPU6050简介_第2张图片

这里的加速度传感器,输出速率(Fs)固定是1Khz,而角速度传感器的输出速率(Fs),则根据DLPF_CFG的配置有所不同。一般我们设置角速度传感器的带宽为其采样率的一半,如前面所说的,如果设置采样率为50Hz,那么带宽就应该设置为25Hz,取近似值20Hz,就应该设置 DLPF_CFG=100。

然后是电源管理寄存器2,该寄存器地址为:0X6C,各位描述如图 7所示:
在这里插入图片描述

图 7

该寄存器的LP_WAKE_CTRL用于控制低功耗时的唤醒频率,本章用不到。剩下的6位,分别控制加速度和陀螺仪的x/y/z轴是否进入待机模式,这里我们全部都不进入待机模式,所以全部设置为0即可。

然后是陀螺仪数据输出寄存器,总共有6个寄存器组成,地址为:0X43~0X48,通过读取这6个寄存器,就可以读到陀螺仪 x/y/z 轴的值,比如x轴的数据,可以通过读取0X43(高8位)和0X44(低8位)寄存器得到,其他轴以此类推。同样,加速度传感器数据输出寄存器,也有6个,地址为:0X3B~0X40,通过读取这6个寄存器,就可以读到加速度传感器 x/y/z 轴的值,比如读 x 轴的数据,可以通过读取0X3B(高8位)和0X3C(低8位)寄存器得到,其他轴以此类推。

关于MPU6050的基础介绍,我们就介绍到这里。MPU6050的详细资料和相关寄存器介绍,可以参考光盘资料:“i.MX6UL终结者光盘资料\03_开发板硬件资料\02_芯片资料\MPU6050资料”目录下的MPU-6000 and MPU-6050 Product Specification.pdf和MPU-6000 and MPU-6050 Register Map and Descriptions.pdf 这两个文档,另外该目录还提供了部分 MPU6050 的中文资料,供大家参考学习。

经过前面的介绍,我们可以读出MPU6050的加速度传感器和角速度传感器的原始数据。i.MX6ULL终结者MPU6050 六轴传感器例程MPU6050简介_第3张图片

你可能感兴趣的:(#,第二部分,裸机开发,i.MX6ULL终结者,嵌入式,linux,开发平台)