源工程文件
github:kitor-ch/mpu6050_for_stm32https://github.com/kitor-ch/mpu6050_for_stm32
mpu6050简介
mpu6050是有美国invenSense公司生产的一款传感器芯片,自带dmp(digital motion processor)数字运动处理器,有了它能够减少对mcu的资源消耗
mpu是六轴传感器,三轴陀螺仪角速度传感器,三轴角加速度传感器,还附带一个温度传感器
实物图:
引脚功能:
vcc 3.3-5v供电点
gnd 接电源地
SDA 从机iic时钟线(接mcu)
SCL 从机iic数据线(接mcu)
XCL 辅助iic时钟线(可接其他磁力传感器组成九轴传感器)
XDA 辅助iic时钟线(可接其他磁力传感器组成九轴传感器)
ADO mpu6050 iic地址(iic地址高七位固定,最后因为由ado引脚确定,内接一个下来电阻,默认为0,即 iic地址为0x68,接高电平则为0x69)
int mpu6050中断输出引脚,当mpu6050配置为开启中断,有可用数据时会产生一个电平翻转(中断信号)
mpu_6050 软件iic驱动
该工程使用正点原子的atk mpu6050驱动的代码移植过来,(atk mpu6050传感器模块的芯片也是mpu6050,把代码修改一些就可以使用在我们的模块上)
这个默认配置为mpu6050 fifo(mpu6050数据first in first out)关闭,禁能中断
完整工程文件和驱动文件已经放到github上,移植教程在附带的readme文档中
tips:
正点原子的代码比较简洁,可读性比较强,编译后的代码也才19k左右,用stm32f103c6t6也能跑
mpu_6050 硬件iic驱动
这个工程是使用传感器官方的驱动库,代码功能很完整,但编码风格比较难懂,可读性较差,
编译出来的代码大概34k,超过了c6t6的容量,c6t6跑不动
这个工程内默认配置为fifo开启
完整工程文件和驱动文件已经放到github上,移植教程在附带的readme文档中
(不知道为啥放了图片会倒过来,先将就着看吧,csdn还用不习惯 .......)
附录:
mpu_6050 软件iic驱动 参考正点原子的atk mpu6050例程
六轴传感器模块ATK-MPU6050 — 正点原子资料下载中心 1.0.0 文档 (openedv.com)
mpu_6050 硬件iic驱动 参考B站up主 nxcosa
STM32 硬件I2C MPU6050 官方DMP6.12移植 开启FIFO和中断_哔哩哔哩_bilibili
陀螺仪原理:
在学习mpu6050时了解到陀螺仪,深入学习,做一下笔记
一个高速转动的物体有两个性质
1,定轴性
高速转动的物体抵御一切改变其轴心位置的力,这也是为什么我们骑自行车的时候不容易倒的原因
2,进动性
当一个力作用于轴心时,陀螺仪并不会沿该方向运动,而是沿顺着力的方向沿旋转方向转动90度,(进动性的方向),方向的判断可以用右手定则,这意思为什么,顺时针(俯视方向)转动的陀螺,到最后时(转速不足,开始倾斜,重力不再沿着轴心方向,将重力分解为沿轴心方向和垂直轴的方向,在根据右手定则确定其进动方向)会顺时针转动,逆时针(俯视方向)转动的陀螺,到最后时会逆时针转动
当然这个不是mpu6050陀螺仪的原理,而是关于电路的原理;
感兴趣的可可以看下面的视频了解一下