【STM32平衡小车】一篇快速上手MPU6050
2021-09-22 来源:eefocus
一、MPU6050基础知识储备
六轴=三轴陀螺仪+三轴加速度计
而我们通常说的九轴的含义是在主I2C接口,接上磁力传感器,即是九轴数据。
我们直接得到的是加速度计(测出加速度)和陀螺仪(测出角速度),我们实际使用的是姿态角,分别为俯仰角(pitch)、偏航角(yaw)和横滚角(roll)。这之间需要借助MPU6050的DMP模块把原始数据转换为四元数,然后四元数可以直接通过公式转化为姿态角。
俯仰(pitch) - x轴
翻滚(roll) - y轴
偏航(yaw) - z轴
二、引脚接线图
三、需要注意的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都是不一样的,在水平静止状态下,重力加速度的值,与角速度的值,都不是零,所以,要对水平静止状态下的数值进行采样,然后作为零偏校准数据, 再在进行计算时,需要把采样到的数值减去零偏数值才能作为正常的数值使用。