MPU6050:

简介:陀螺仪,也叫地轴传感器,工作原理是通过测量三维坐标系内的垂直轴与设备之间的夹角,并计算出角速度(陀螺仪,顾名思义在任何时候里面的轴与地面保持垂直的,即使设备发生偏斜,上面的陀螺的轴状态永远不变,保持轴与地面垂直),通过夹角和角速度判断其在三维空间中的运行状态,三轴陀螺仪可以测量上、下、左、右、前、后六个方向,最终可以判断出设备的移动轨迹和加速度。

注意:陀螺仪只认识前后左右,不认识东南西北(在飞控上,控制软件上就做出了东南西北)。

加速计:加速计也叫重力感应器,可以感知任意方向的加速度(重力加速度则只是地表垂直方向的加速度)

一、管脚及其作用

Android陀螺仪垂直角度_Android陀螺仪垂直角度


1、 当AD0管脚接低电平时,从机地址时0XD0;

2、 MPU6050作为一个IIC设备,有8位地址,高7位地址是固定的,就是WHO AM I寄存器的默认—0X68,最低一位有AD0控制,也就是说,最低一位是不确定的,不是和其他7位在一起排列的。

二、MPU6050初始化控制步骤:

1、初始化IIC接口

初始化与MPU6050连接的SDA,SCL数据线,MPU6050作为主机时,还要初始化与XDA,XCL相连接的I/O口。

2、复位MPU6050,让MPU6050内部的所有寄存器恢复到默认值

通过对电源管理寄存器1(0X6B)的bit7写1实现,复位后电源管理寄存器1恢复默认值(0X40),然后必须设置该寄存器为0X00,以唤醒MPU6050,计入正常工作状态。

3、 设置角速度传感器和加速度传感器的满量程范围

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

4、 设置其他参数,关闭中断,关闭AUX IIC接口,禁止FIFO,设置陀螺仪的采样率和设置数字低通滤波器等。

配置中断,由中断使能寄存器(0X38)控制,设置AUX IIC接口,由用户控制寄存器(0X6A)控制;设置FIFO,由FIFO使能寄存器(0X23)控制,陀螺仪采样率,有采样率分频寄存器(0X19)控制;设置数字低通滤波器,由配备寄存器0X1A控制。

5、 配置时钟源并使能角速度传感器和加速度传感器

由电源管理寄存器1(0X6B)控制,一般选择X轴陀螺仪PLL作为时钟源,以获得更高精度的时钟。

6、 使能角速度传感器和加速度传感器(陀螺仪),由电源管理寄存器2(0X6C)控制。

MPU6050:

简介:陀螺仪,也叫地轴传感器,工作原理是通过测量三维坐标系内的垂直轴与设备之间的夹角,并计算出角速度(陀螺仪,顾名思义在任何时候里面的轴与地面保持垂直的,即使设备发生偏斜,上面的陀螺的轴状态永远不变,保持轴与地面垂直),通过夹角和角速度判断其在三维空间中的运行状态,三轴陀螺仪可以测量上、下、左、右、前、后六个方向,最终可以判断出设备的移动轨迹和加速度。

注意:陀螺仪只认识前后左右,不认识东南西北(在飞控上,控制软件上就做出了东南西北)。

加速计:加速计也叫重力感应器,可以感知任意方向的加速度(重力加速度则只是地表垂直方向的加速度)

Android陀螺仪垂直角度_加速度传感器_02


Android陀螺仪垂直角度_加速度传感器_03



Android陀螺仪垂直角度_陀螺仪_04

Android陀螺仪垂直角度_寄存器_05

Android陀螺仪垂直角度_加速度传感器_06

Android陀螺仪垂直角度_寄存器_07

Android陀螺仪垂直角度_陀螺仪_08

Android陀螺仪垂直角度_Android陀螺仪垂直角度_09

Android陀螺仪垂直角度_陀螺仪_10


注:FIFO就理解成MPU6050内部单片机的动态储存区(相当于DRAM),NPU6050把处理好的值存放在FIFO,然后再由STM32等单片机读取,非常方便。

另外,STM32也可以通过FIFO给MPU6050内部的单片机升级固件,让它能实现角度融合,运动信息处理(即DMP)等

FIFO数据会溢出?MPU6050的DMP在工作的时候,其实大概的工作过程是mpu6050对陀螺仪和加速度计按照一定的采样速率进行采样,对采样得到的陀螺仪和加速度计数据通过DMP处理后得到姿态角(pitch,roll,yaw),然后存入FIFO中,这个过程在你初始化完DMP后就会不受人为控制的持续进行,那么如果你不及时读取FIFO的数据,FIFO数据很快就会溢出,那么就会出现以上的问题啦!
 问题该如何解决只要一个简单循环其实就解决了!看如下的程序:

while(mpu_dmp_get_data(&pitch,&roll,&yaw)!=0){}

就是上面这么一句话,如果读取失败,马上进行第二次读取,这时候FIFO一般没有溢出.(因为检测到FIFO溢出后会马上reset一下FIFO)。