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

举报
ReCclay 发表于 2022/02/21 23:20:39 2022/02/21
【摘要】 文章目录 一、MPU6050基础知识储备二、引脚接线图三、需要注意的AD0四、程序里需要知道的其他备忘 一、MPU6050基础知识储备 六轴=三轴陀螺仪+三轴加速度计 而我们通...

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

文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。

原文链接:recclay.blog.csdn.net/article/details/85921026

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。