【STM32平衡小车】一篇快速上手MPU6050

文章目录

      • 一、MPU6050基础知识储备
      • 二、引脚接线图
      • 三、需要注意的AD0
      • 四、程序里需要知道的
      • 其他备忘

一、MPU6050基础知识储备

六轴=三轴陀螺仪+三轴加速度计

而我们通常说的九轴的含义是在主I2C接口,接上磁力传感器,即是九轴数据。

我们直接得到的是加速度计(测出加速度)和陀螺仪(测出角速度),我们实际使用的是姿态角,分别为俯仰角(pitch)、偏航角(yaw)和横滚角(roll)。这之间需要借助MPU6050的DMP模块把原始数据转换为四元数,然后四元数可以直接通过公式转化为姿态角。

【STM32平衡小车】一篇快速上手MPU6050_第1张图片

俯仰(pitch) - x轴
【STM32平衡小车】一篇快速上手MPU6050_第2张图片
翻滚(roll) - y轴
【STM32平衡小车】一篇快速上手MPU6050_第3张图片

偏航(yaw) - z轴
【STM32平衡小车】一篇快速上手MPU6050_第4张图片

二、引脚接线图

【STM32平衡小车】一篇快速上手MPU6050_第5张图片

三、需要注意的AD0

MPU6050作为一个IIC从机设备的时候,有8位地址,高7位的地址是固定的,就是WHOAMI寄存器的默认——0x68,最低的一位是由AD0的连线决定的。

AD0接GND时候,高8位的最后一位是0 所以整个iic从几地址就是0x68
AD0接VCC时候,高8位的最后一位是1 所以整个iic从几地址就是0x69

四、程序里需要知道的

程序都设置了INT平时为高电平,同时INT引脚为PB5,低电平触发中断。

MPU6050.C中的#define DEFAULT_MPU_HZ (200)

200Hz表示这个是fifo更新速率,而INT中断就是fifo更新的时候触发中断,即5ms来一次中断(1/200=0.005)。

其实正点原子的和平衡车之家的程序都设置了INT平时为高电平,平衡车之家没有关闭中断,并且设置了INT引脚为B5 低电平触发中断。而正点原子的直接在mpu6050初始化的时候就关闭了中断。


其他备忘

  • 航向角需要磁力计进行校准。否则会有很大误差。【在静止的情况下,Yaw会自增或者自减】
  • 一般来说每一个6050都是不一样的,在水平静止状态下,重力加速度的值,与角速度的值,都不是零,所以,要对水平静止状态下的数值进行采样,然后作为零偏校准数据, 再在进行计算时,需要把采样到的数值减去零偏数值才能作为正常的数值使用。

你可能感兴趣的:(#,STM32平衡小车)