欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

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

程序员文章站 2022-03-13 21:19:01
文章目录一、引脚接线图二、需要注意的AD0三、程序里需要知道的一、引脚接线图二、需要注意的AD0MPU6050作为一个IIC从机设备的时候,有8位地址,高7位的地址是固定的,就是WHOAMI寄存器的默认——0x68,最低的一位是由AD0的连线决定的。AD0接GND时候,高8位的最后一位是0 所以整个iic从几地址就是0x68AD0接VCC时候,高8位的最后一位是1 所以整个iic从几地......

一、MPU6050基础知识储备

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

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

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

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

俯仰(pitch) - x轴
【STM32平衡小车】一篇快速上手MPU6050
翻滚(roll) - y轴
【STM32平衡小车】一篇快速上手MPU6050

偏航(yaw) - z轴
【STM32平衡小车】一篇快速上手MPU6050

二、引脚接线图

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

三、需要注意的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都是不一样的,在水平静止状态下,重力加速度的值,与角速度的值,都不是零,所以,要对水平静止状态下的数值进行采样,然后作为零偏校准数据, 再在进行计算时,需要把采样到的数值减去零偏数值才能作为正常的数值使用。

本文地址:https://blog.csdn.net/ReCclay/article/details/85921026

相关标签: # STM32平衡小车