一、MPU6050的简介
MPU6050是全球首例 9 轴运动处理传感器。它集成了 3 轴 MEMS 陀螺仪,3 轴 MEMS 加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion Processor),可用 I2C 接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其 I2C 或 SPI 接口 输出一个 9 轴的信号(SPI 接口仅在 MPU-6000 可用)。MPU-60X0 也可以通过其 I2C 接口 连接非惯性的数字传感器,比如压力传感器。
MPU-60X0 对陀螺仪和加速度计分别用了三个 16 位的 ADC,将其测量的模拟量转化 为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的, 陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4, ±8,±16g。
一个片上 1024 字节的 FIFO,有助于降低系统功耗。
和所有设备寄存器之间的通信采用 400kHz 的 I2C 接口或 1MHz 的 SPI 接口(SPI 仅 MPU-6000 可用)。对于需要高速传输的应用,对寄存器的读取和中断可用 20MHz 的 SPI。 另外,片上还内嵌了一个温度传感器和在工作环境下仅有±1%变动的振荡器。
芯片尺寸 4×4×0.9mm,采用 QFN 封装(无引线方形封装),可承受最大 10000g 的冲 击,并有可编程的低通滤波器。
关于电源,MPU-60X0 可支持 VDD 范围 2.5V±5%,3.0V±5%,或 3.3V±5%。另外 MPU-6050 还有一个 VLOGIC 引脚,用来为 I2C 输出提供逻辑电平。VLOGIC 电压可取 1.8±5%或者 VDD。
二、MPU6050框图
三、模块的初始化工作
1.初始化IIC接口
MPU6050的通信方式就是IIC,所以初始时应先初始化IIC。
2.复位MPU6050
主要目的是使MPU6050内部所有寄存器恢复默认值,然后通过对电源管理寄存器1(0X6B)的第七位写1实现,及向MPU6050写入0x80使其复位。复位完成,电源管理寄存器1恢复默认值位0x40。通过寄存器手册可以知道此时为低功耗模式(SLEEP被置1),如果我们想正常使用陀螺仪,所以我们还得设置该寄存器为0x00来唤醒MPU6050,使其进入到正常工作状态。代码如下:
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80); //复位MPU6050
delay_ms(100);
MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00); //唤醒MPU6050
其中延时100ms是为了确保复位完成。
3.设置角速度(0X1B)和加速度传感器(0X1C)满量程范围以及采样率(0X19)
MPU_Write_Byte(MPU_GYRO_CFG_REG,0X18);//设置陀螺仪满量程范围
MPU_Write_Byte(MPU_ACCEL_CFG_REG,0x00);//设置加速度传感器满量程范围
MPU_Set_Rate(50); //设置采样率50Hz
0X1B寄存器如下:设置量程范围为第3、4位,0,±250°/S