一. MPU6050简介
MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP: Digital Motion Processor)硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术InvenSense的运动处理资料库,可处理运动感测的复杂数据,降低了运动处理运算对操作系统的负荷,并为应用开发提供架构化的API。MPU-6000的角速度全格感测范围为±250、±500、±1000与±2000 °/sec (dps),可准确追緃快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为±2g、±4g±8g与±16g。产品传输可透过最高至400kHz的I2C或最高达20MHz的SPI。MPU-6000可在不同电压下工作,VDD供电电压介为2.5V±5%、3.0V±5%或3.3V±5%,逻辑接口VVDIO供电为1.8V± 5%。MPU-6000的包装尺寸4x4x0.9mm(QFN),在业界是革命性的尺寸。其他的特征包含内建的温度感测器、包含在运作环境中仅有±1%变动的振荡器。
1. 陀螺仪特点
- 陀螺仪线性误差:0.1°/秒
- 陀螺仪输出频率:最高8000Hz
- 数字输出X、Y和Z轴角速率传感器(陀螺仪),用户可编程全量程范围为±250、±500、±1000和±2000°/秒
- 连接到FSYNC引脚的外部同步信号支持图像、视频和GPS同步
- 集成的16位ADC可同时对陀螺仪进行采样
- 增强的偏置和灵敏度温度稳定性减少了用户校准的需要
- 改进的低频噪声性能
- 数字可编程低通滤波器
- 陀螺仪工作电流:3.6mA* 待机电流:5µA
- 工厂校准的灵敏度比例因子
- 用户自检
2. 加速度计特点
- 加速度线性误差:0.1g
- 加速度输出频率:最高1000Hz
- 数字输出三轴加速度计,可编程满量程范围为±2g、±4g、±8g和±16克
- 集成的16位ADC实现了加速度计的同时采样,而无需外部多路转换器
- 加速度计正常工作电流:500µA
- 低功率加速度计模式电流:1.25Hz时为10µA,5Hz时为20µA,20Hz时为60µA,110µA 40Hz
- 方位检测和信号
- 抽头检测
- 用户可编程中断
- 自由落体中断
- 高G中断
- 零运动/运动中断
- 用户自检
3. 其他特点
- 片上数字运动处理器(DMP)的9轴运动融合
- DMP姿态解算频率:最高200Hz
- 辅助主I2用于从外部传感器(例如磁力计)读取数据的C总线
- 启用所有6个运动感应轴和DMP时的3.9mA工作电流
- VDD电源电压范围为2.375V-3.46V
- 灵活的VLOGIC参考电压支持多个I2C接口电压(仅限MPU-6050)
- 适用于便携式设备的最小、最薄QFN封装:4x4x0.9mm
- 加速度计和陀螺仪轴之间的最小跨轴灵敏度
- 1024字节FIFO缓冲区允许主机处理器读取数据,从而降低功耗突发,然后随着MPU收集更多数据而进入低功率模式
- 数字输出温度传感器
- 陀螺仪、加速度计和温度传感器的用户可编程数字滤波器
- 10000 g耐冲击
- 400kHz快速模式I2C用于与所有寄存器通信
- 1MHz SPI串行接口,用于与所有寄存器通信(仅限MPU-6000)
- 用于读取传感器和中断寄存器的20MHz SPI串行接口(仅限MPU-6000)
- MEMS结构在晶圆级密封和接合
- 符合RoHS和绿色
4. DMP模块(Digital Motion Processor数字运动处理器)
从MPU6050的参数中可以得到,加速度计和陀螺仪的采样频率分别是1000Hz和8000Hz,它们是指加速度及角速度数据的采样频率,我们可以使用STM32控制器把这些数据读取出来然后进行姿态融合解算,以求出传感器当前的姿态(包括偏航角、横滚角、俯仰角)。而如果我们使用传感器内部的DMP数字运动处理器单元进行解算,他可以直接对采样得到的加速度及角速度进行姿态解算,解算得到的结果再输出给STM32控制器,即STM32无需自己计算,可直接获取偏航角、横滚角及俯仰角,该DMP每秒可输出200次姿态解算。
二. 引脚和接线
1. 引脚
引脚编号 | MPU-6000 | MPU-6050 | 引脚名称 | 描述 |
1 | Y | Y | CLINK | 可选的外部时钟输入,如果不用则连到GND |
6 | Y | Y | AUX_DA | I2C主串行数据,用于外接传感器 |
7 | Y | Y | AUX_CL | I2C主串行时钟,用于外接传感器 |
8 | Y | /CS | SPI片选(0=SPI model) | |
8 | Y | VLOGIC | 数字I/O供电电压 | |
9 | Y | Y | AD0/SD0 | I2C Slave地址LSB(AD0) SPI串行数据输出(SD0) |
9 | Y | Y | AD0 | I2C Slave 地址LSB(AD0) |
10 | Y | Y | REGOUT | 校准滤波电容连线 |
11 | Y | Y | FSYNC | 帧同步数字输入 |
12 | Y | Y | INT | 中断数字输出(推挽或开漏) |
13 | Y | Y | VDD | 电源电压及数字I/O供电电压 |
18 | Y | Y | GND | 电源地 |
19,21,22 | Y | Y | RESV | 预留,不接 |
20 | Y | Y | CPOUT | 电荷泵电容连线 |
23 | Y | SCL/SCLIK | I2C 串行时钟(SCL) SPI串行时钟(SCLK) | |
23 | Y | SCL | I2C串行时钟(SCL) | |
24 | Y | SDA/SDI | I2C串行数据(SDA) SPI串行数据输入(SDI) | |
24 | Y | SDA | I2C串行数据(SDA) | |
2,3,4,5,14,15,16,17 | Y | Y | NC | 不接 |
2. 典型接线方式
三. MPU6050经典电路图
- SCL:IIC从时钟信号线SCL,模块需要外接上拉电阻,一般为4.7K
- SDA:IIC从时钟信号线SDA,模块需要外接上拉电阻,一般为4.7K
- INT:中断输出引脚
- AUX_CL:IIC主串行数据信号线,用于外接传感器
- AUX_DA:IIC主串行时钟信号线,用于外接传感器
- VDD:3.3/5V电源输入
- VLOGIC:IO口电压,该引脚最低可以到1.8V,我们一般直接接VDD即可
- AD0:从IIC接口(接MCU)的地址控制引脚,该引脚控制IIC地址的最低位。如果接GND,则MPU6050的IIC地址是:0X68;如果VDD,则是0X69
四. MPU6050使用方式及寄存器操作
1. 复位MPU6050
让MPU6050内部所有寄存器恢复默认值,通过对电源管理寄存器1(0X6B)
的位7写1实现。复位后,电源管理寄存器1恢复默认值(0X40
),然后必须设置该寄存器为0X00
,以唤醒MPU6050,进入正常工作状态。
电源管理寄存器1(0X6B)
- 位7 DEVICE_RESET:该位设置1,重启内部寄存器到默认值。复位完成后该位自动清0。
- 位6 SLEEP:该位置1,MPU6050进入睡眠模式。
- 位5 CYCLE:当失能SLEEP且CYCLE位置1,MPU6050进入循环模式。在循环模式,设备在睡眠模式和唤醒模式间循环,根据LP_WAKE_CTRL寄存器设定的速率从加速度计采集样品数据。
- 位3 TEMP_DIS:该位置1,使能温度传感器。
- 位[2:0] CLKSEL:3位无符号数值。指定设备的系统时钟源。
其中,DEVICE_RESET 位用来控制复位,设置为 1,复位 MPU6050,复位结束后,MPU硬件自动清零该位。SLEEEP 位用于控制 MPU6050 的工作模式,复位后,该位为 1,即进入了 睡眠模式(低功耗),所以我们要清零该位,以进入正常工作模式。TEMP_DIS 用于设置是否使能温度传感器,设置为 0,则使能;CLKSEL[2:0]用于选择系统时钟源,默认是使用内部 8M RC 晶振的,精度不高,所以我们一般选择 X/Y/Z 轴陀螺作为参考的PLL 作为时钟源,一般设置 CLKSEL=001 即可。
2. 设置传感器满量程范围
设置两个传感器的满量程范围(FSR),分别通过陀螺仪配置寄存器(0X1B)
和加速度传感器配置寄存器(0X1C)
设置。我们一般设置陀螺仪的满量程范围为±2000dps,加速度传感器的满量程范围为±2g。
陀螺仪配置寄存器(0X1B)
- 位7 XG_ST:置位X轴进行自检。
- 位6 YG_ST:置位Y轴进行自检。
- 位5 ZG_ST:置位Z轴进行自检。
- 位[4:3] FS_SEL: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)
- 位7 XA_ST:该位置1,加速度计的X轴执行自检。
- 位6 YA_ST:该位置1,加速度计的Y轴执行自检。
- 位5 ZA_ST:该位置1,加速度计的Z轴执行自检。
- 位[4:3] AFS_SEL:2位无符号值。选择加速度计的满量程范围。
该寄存器我们只关心 AFS_SEL[1:0]这两个位,用于设置加速度传感器的满量程范围:0, ±2g;1,±4g;2,±8g;3,±16g;我们一般设置为 0,即±2g,因为加速度传感器的 ADC也是 16 位,所以得到灵敏度为:65536/4=16384LSB/g。
3. 设置陀螺仪采样率
采样率分频寄存器(0X19)
该寄存器用于MPU60X0的陀螺仪采样频率输出设置
- 位[7:0] SMPLRT_DIV:8位无符号值。陀螺仪输出频率由这个值的分频所确定。
该寄存器用于设置 MPU6050 的陀螺仪采样频率,计算公式为:
采样频率 = 陀螺仪输出频率 / ( 1 + S M P L R T _ D I V ) 采样频率 = 陀螺仪输出频率 / (1+SMPLRT\_DIV) 采样频率=陀螺仪输出频率/(1+SMPLRT_DIV)
这里陀螺仪的输出频率,是 1Khz 或者 8Khz,与数字低通滤波器(DLPF)的设置有关, 当 DLPF_CFG=0/7 的时候,频率为 8Khz,其他情况是 1Khz。而且 DLPF 滤波频率一般设置为 采样率的一半。采样率,我们假定设置为 50Hz,那么 SMPLRT_DIV=1000/50-1=19。
配置寄存器(0X1A)
该寄存器配置外部Frame Synchronization(FSYNC)引脚采样,陀螺仪和加速度计的数字低通滤波器
- 位[5:3] EXT_SYNC_SET:3位无符号数值。配置FSYNC引脚采样
- 位[2:0] DLPF_CFG:3位无符号数值。配置DLPF设置
这里的加速度传感器,输出速率(Fs)固定是 1Khz,而角速度传感器的输出速率(Fs), 则根据 DLPF_CFG 的配置有所不同。
4. 其他
地址验证寄存器(0X75)
此寄存器用于验证设备的标识。WHO_AM_ I的内容是MPU-60X0的7位I2C地址的高6位。MPU-60X0的I2C地址的最低有效位由AD0引脚的值确定。AD0引脚的值没有反映在此寄存器中。寄存器的默认值为0x68。比特0和7被保留。(硬编码为0)
- 位[6:1] WHO_AM_I:包含MPU-60X0的6位I2C地址。Bit6:Bit1的开机复位值为110 100。
加速度数据输出寄存器(0X3B~0X40)
通过读这六个寄存器,就可以读到加速度计x/y/z轴的值。比方说X轴的数据,可以通过读取0X3B(高8位)和0X3C(低8位)寄存器得到。这六个寄存器都是8位寄存器,而读取加速度计x/y/z的寄存器都是十六位寄存器,所以每两个寄存器配置一个轴。
温度传感器数据输出寄存器(0X41~0X42)
通过读取0X41(高8位)和0X42(低8位)寄存器得到
陀螺仪数据输出寄存器(0X43~0X48)
通过读这六个寄存器,就可以读到陀螺仪x/y/z轴的值。比方说X轴的数据,可以通过读取0X43(高8位)和0X44(低8位)寄存器得到。这六个寄存器都是8位寄存器,而读取陀螺仪x/y/z的寄存器都是十六位寄存器,所以每两个寄存器配置一个轴。