站内搜索
更多
BMI270&MMC5983MA九轴欧拉角模块
专业版

BMI270&MMC5983MA九轴欧拉角模块

简介

详见描述。

简介:详见描述。
复刻成本:10

开源协议

GPL 3.0

创建时间:2025-05-22 14:17:22更新时间:2026-04-01 10:09:01

描述

项目简介

本项目是基于 STM32F407VET6 (立创梁山派.天空星开发板)的九轴 AHRS(航姿参考系统),通过 I2C 总线融合 BMI270 六轴惯性传感器与 MMC5983MA 三轴磁力计数据,实时计算设备的滚转角(Roll)、俯仰角(Pitch)和航向角(Yaw),并通过 USB CDC 虚拟串口将姿态数据输出至上位机。

项目功能

.通过 I2C 总线(400kHz )读取 BMI270 与 MMC5983MA 的传感器数据,运行 Madgwick 9-DOF AHRS 算法,实时输出三轴欧拉角;
.系统上电后自动执行陀螺仪静止零偏校准(2 秒,400 帧均值),校准期间设备需保持静止水平放置;
.支持动态陀螺零偏估计:主循环通过加速度计滑动窗口方差检测静止状态,静止时自动修正陀螺零偏,补偿温漂引起的长期漂移;
.采用解析法完成上电初始四元数估计,避免 Yaw 从 0° 逐渐收敛到真实值的启动漂移现象;
.实现自适应磁力计硬铁校准,运行时追踪各轴 min/max 自动估算并补偿硬铁偏置;
.支持高速旋转时自动降低磁力计权重(动态 beta_mag),静止后恢复磁力计锁定,兼顾响应速度与稳定性;
.航向角输出采用整数截断,消除磁力计噪声引起的小数位漂移,满足小车航向导航对 Yaw 角稳定性的要求;
.通过 USB CDC 虚拟串口实时输出姿态数据(100Hz),支持调试模式(完整 ACC/GYR/MAG 原始数据)与简洁模式(仅欧拉角)切换。

项目参数

主控芯片 STM32F407VET6(Cortex-M4,96MHz)
惯性传感器 BMI270(6轴,I2C 0x68)
磁力计 MMC5983MA(3轴,I2C 0x30)
通信接口 USB CDC 虚拟串口(Full Speed 12Mbps)
I2C 速率 400kHz 快速模式
加速度计 ODR 100Hz,量程 ±8g,分辨率 4096 LSB/g
陀螺仪 ODR 200Hz,量程 ±500dps,OSR2 过采样
磁力计 ODR 100Hz,连续测量模式(CMM)
AHRS 算法 Madgwick 9-DOF,支持 ACC/MAG 梯度独立加权
Yaw 收敛时间 上电约 8 秒(校准 2s + 初始化 + Warm-up 2s + 软收敛 5s)
姿态输出精度 Roll/Pitch 精度 0.01°,Yaw 整数精度 1°
姿态输出频率 10Hz
陀螺噪声抑制 片上 OSR2 过采样 + 软件一阶 LPF(alpha=0.3)+ Yaw 轴死区(1 mrad/s)
方 BMI2 SensorAPI 进行初始化与数据读取,中断引脚(INT1)配置为高电平有效推挽输出,用于数据就绪通知。
驱动移植层
所有平台相关操作(I2C 读写、延时、日志输出)均通过 bmi270_driver.h 中的适配宏封装,移植到其他平台时只需修改头文件中的宏定义,驱动逻辑代码无需改动

软件代码

见附件,提供有说明文档。

注意事项

1.陀螺仪零偏校准阶段(约 2 秒)设备必须保持完全静止、水平放置,任何振动或移动都会导致零偏估计不准,引起后续 Yaw 漂移;
2.校准完成后,Warm-up 阶段(约 2 秒)同样建议保持静止,让滤波器充分收敛到初始姿态。
3.首次使用或更换安装位置后,需在水平面内缓慢旋转设备一整圈,使硬铁自适应校准收集完整的 min/max 数据,之后 Yaw 精度才能达到最优;
4.当前磁场强度有效范围设定为 0.15~0.7G,若所处环境磁场干扰严重导致场强超出此范围,系统会自动退化为 6-DOF 模式(Yaw 依赖纯陀螺积分),长时间 6-DOF 状态下 Yaw 会缓慢漂移
5.当前 Yaw 输出精度为整数(1°),适用于小车航向导航;若需要更高精度,可修改输出格式恢复小数位,但需同步降低环境磁场干扰;
6.Y_virt(虚拟 Yaw)以上电时的朝向为 0° 参考,每次重新上电后零点会重置,不具备断电保存功能;
7.本工程初期使用STM32F401CCU6芯片进行,途中开发板损坏,更改为STM32F407VET6芯片验证。所以文件中可能存在旧文件,但不影响编译。
8.不想多连一个转串口模块所以直接采用了CDC输出调试信息,正式使用时请修改为串口输出。
9.本项目部分代码使用AI编程,经验证可以实现所需功能,但不保证有什么奇奇怪怪的bug。
★★★:在购买BMI270芯片时推荐在立创商城等可行度较高的平台购买,淘宝2-3元一颗的多为假冒芯片,购买时请万分注意甄别。必须先验证CHIP ID为0x24,才可保证功能正常实现。
***注:***测试中发现一个bug:在校准期间连接串口的话在校准完成输出正式数据时串口会卡死,表现为上位机卡死,无法对串口进行任何操作。但是只要在校准完成后打开串口,就能正常输出和操作。一直找不到是哪里的问题,就先凑合用吧。

更新

加入了MMC5983MA磁力计芯片,暂未验证。
3/18:软件中耦合了MMC5983磁力计,验证YAW角在1°度范围内精度足够,Yaw角小数位因磁力计噪声和imu噪声持续漂移,直接做了截断处理。Roll与Pitch保留0.01位输出。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
bmi270.zip
6
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航