天天看点

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

一、MPU6050的简介

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充
  • 6轴是3轴加速度+3轴角速度,9轴就是3轴加速度+3轴角速度+3轴磁场强度 ,10轴就是3轴加速度+3轴角速度+3轴磁场强度+气场强度
  • 这么多的数据,经过融合之后可进一步得到姿态角或者叫欧拉角,以我们这个飞机为例,欧拉角就是飞机机身相对于初始三个轴的夹角,飞机下倾上仰,这个轴的夹角叫做俯仰,Pitch,飞机机身左翻转或者右翻转,这个轴的夹角叫做翻滚,Roll,飞机机身保持水平,机头向左转或向右转,这个夹角叫偏航,Yaw

加速度传感器:

  • 三轴加速度计,简称Accel或Acc,或者A,作用:检测XYZ轴的加速度
  • 加速度计具有静态稳定性,不具有动态稳定性,运动情况下会影响对姿态的判断

陀螺仪传感器:

  • 简称Gyro,或G
  • 作用:测量XYZ轴的角速度
  • MPU6050得到的是角速度,通过积分可以得到角度,但是如果物体处于静态时,角速度值会因为噪声而无法归零,然后经过积分的不断累积就会导致计算出来的角度产生偏移
  • 陀螺仪具有动态稳定性,不具有静态稳定性

二、MPU6050的参数

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充
  • 加速度计的量程要根据实际情况进行选择,量程越大,数值范围越大,量程越小,分辨率越高
  • 在这款芯片里,可以配置寄存器来选择对输出数据进行低通滤波,如果你觉得数据抖动太厉害,就可以加一点低通滤波
  • 时钟源经过这个分频器的分频可以为AD转换和内部其他电路提供时钟,控制分频系数就可以控制AD转换的快慢了
  • MPU6050的丛机地址可以通过AD0来改变(【AD0=0】1101000,【AD0=1】1101001)
  • MPU6050丛机地址转换为16进制有两种表示形式:第一种是直接转化,即低四位为一位十六进制数,高三位为一位十六进制数,以MPU6050为例为0X68,但是需要注意的是,在I2C通信时,起始条件后的一个字节最后一位为读写位,所以在传输的时候,要把0X68左移一位然后与读写位相或。第二种是把上述左移后的数作为丛机地址,也可以认为是把读写位融入到里面,0XD0为写地址,0XD1为读地址

三、硬件电路

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充
  • XCL和XDA作为拓展用,对于某些项目,6轴传感器不够用,需要通过XCL和XDA外接磁力计或者气压计,使之改变为九轴或十轴,当接上磁力计或气压计之后,MPU6050的主机接口就可以直接访问这些拓展芯片的数据,把这些拓展芯片的数据读取到MPU6050,在MPU6050里面有DMP单元,进行数据融合和姿态解算,当然如果你不需要MPU6050的结算功能的话,也可以把气压计和磁力计接到I2C总线上、
  • AD0决定丛机地址的最低位,接低电平的话,7位丛机地址就是1101000,接高电平的话,7位丛机地址就是1101001
  • INT,中断输出引脚,可以配置芯片内部的一些事件,来触发中断引脚的输出,比如数据准备好了,I2C主机错误
  • 上面LDO部分是供电部分,因为MPU6050芯片VDD供电是2.375-3.46,属于3.3V供电,LDO1脚接3.3-5V,输出3.3V

四、MPU6050框图

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充
  • 芯片内部转换是全自动进行,配置好转换频率后直接读取即可
  • 最左边的自测单元,当启动自测后,芯片内部会模拟一个外力事假在传感器上,这个外力会导致传感器的数值比平时大一些,自测过程:先使能自测,读取数据,再失能自测,读取数据,两个数据一相减得到的数据叫自测相应,这个自测相应,芯片手册给出了一个范围,如果自测相应在这个范围之内,就说明芯片没问题
  • 右边就是寄存器和通信接口部分了,中断寄存器,可以配置控制内部那些事件到中断引脚的输出,FIFO是先入先出寄存器,可以对数据流进行缓存,配置寄存器可以对内部寄存器进行配置,传感器寄存器也就是数据寄存器,存储了各个传感器的数据

五、额外补充

5.1、MPU6050和MPU6000不同

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

5.2、绝对最大参数

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

 5.3、示例

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

5.4、可选的中断配置

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

 发生这些事件时,在INT引脚输出一个电平跳变,然后STM32可以通过外部中断来接收这个跳变

 5.5、比较重要的寄存器

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

这里四个寄存器依次是采样频率分频器,配置寄存器,陀螺仪配置寄存器,加速度计配置寄存器 (八位)

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

 包括加速度计XYZ轴数据,温度传感器,陀螺仪XYZ轴的数据,这里_L代表低八位,_H代表高八位(都是八位)

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

电源管理寄存器1和电源管理寄存器2,WHO_AM_I是器件ID号 

5.5.1、采样频率分频器

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

里面的8位为一个整体,作为分频值,这个寄存器可以配置采样频率的分频系数,分频越小,内部AD转换越快,数据寄存器刷新越快

公式:采样频率 = 陀螺仪输出时钟频率/(1+分频值) 

下面注意事项写的是,不使用低通滤波器时,陀螺仪时钟为8KHZ,使用滤波器,时钟就是1KHZ

5.5.2、配置寄存器 

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充
备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

配置寄存器内部有两部分,外部同步设置和低通滤波器配置,外部同步可以不看,,配置低通滤波器,配置这些位可以选择这里的各种滤波参数,这个低通滤波器可以使输出数据更加平滑,配置滤波器参数越大,输出数据抖动越小, 

 5.5.3、陀螺仪配置寄存器

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

高3位是XYZ轴的自测使能位,中间两位是满量程选择位,后面3位没有用到

公式:自测响应 = 自测使能时的数据 - 自测失能时的数据

我们上电后,先使能自测,读取数据,再失能自测,读取数据,两者相减,得到自测相应

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

上图为自测范围 

5.5.3、加速度计配置寄存器

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

 高3位是自测使能位,中间两位是满量程选择位,后面3位配置高通滤波器的,高通滤波器是MPU6050内置小功能的(运动检测等)

其他描述和陀螺仪配置寄存器一致

5.5.4、加速度计数据寄存器

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

 我们想要读取数据的话直接读取数据寄存器,这是一个16位的有符号数,以二进制补码方式储存,我们读出高八位和低八位,高八位左移八位或上低八位的数最后存在一个int16_t的变量里

5.5.5、温度传感器数据

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

同加速度计数据寄存器

5.5.6、陀螺仪数据寄存器 

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

 同加速度计数据寄存器

5.5.7、电源管理寄存器1

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

Bit7,设备复位,这一位写1 ,所有寄存器都恢复到默认值

Bit6,睡眠模式,这一位写1,芯片不工作,进入低功耗

Bit5,循环模式,这一位写1,设备进入低功耗,过一段时间启动一次,并且唤醒的频率由下一个寄存器(电源管理寄存器2)的Bit7Bit6决定

Bit3,温度传感器失能,写1之后,禁用内部的温度传感器

Bit2——Bit0,用来选择系统时钟来源,下面的表,分别是内部晶振,XYZ轴陀螺仪晶振,外部引脚的两个方波,一般我们选择内部晶振或者陀螺仪晶振,强烈建议选择陀螺仪的晶振,因为其更加准确

5.5.8、电源管理寄存器2

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

 Bit7Bit6,控制循环模式唤醒的频率

 Bit5—— Bit0,控制6个轴进入待机模式,如果你只需要部分轴的数据,可以让其他轴待机

 5.5.9、ID号

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

 只读注,AD0不能改变其中数值

5.5.10、注意

备赛电赛学习STM32(十四):MPU6050一、MPU6050的简介二、MPU6050的参数三、硬件电路四、MPU6050框图五、额外补充

所有寄存器上电都默认为0,处除了上面那两个,一个上面一个是电源管理寄存器1,默认为睡眠模式,使用芯片前要先解除睡眠,后面那个是ID号