1. 项目背景与目标
本项目旨在开发一款基于STM32/Arduino的二轮自平衡小车。核心目标是运用自动控制原理,实现小车自主直立平衡,并扩展遥控移动功能。这是一个典型的嵌入式系统与控制算法相结合的实践项目。
2. 核心功能模块
姿态感知: 使用MPU6050传感器获取车身倾斜状态。
控制核心: 采用PID控制算法,根据姿态数据实时计算控制量。
运动执行: 通过电机驱动模块,驱动直流电机完成平衡与移动。
遥控交互(可选): 集成蓝牙或红外模块,实现手机或遥控器控制。
3. 业务流程简述
系统形成一个高速闭环控制:传感器不断检测车身姿态,控制器通过PID算法快速计算出维持平衡所需的纠正指令,并驱动电机执行。这个过程循环往复,从而实现动态稳定。在此基础之上,可叠加遥控指令实现前进、后退与转向。
1. 整体架构与技术栈
项目采用分层架构:以STM32为主控,MPU6050作为姿态传感器,TB6612为电机驱动。软件上,在Keil MDK环境中使用C/C++开发,通过互补滤波融合传感器数据解算姿态角,并应用PID控制算法生成PWM信号驱动电机,最终实现闭环平衡。
2. 我的负责模块与成果
我独立负责了整个软件核心——姿态解算与PID控制模块的开发。通过精心调参,最终实现的平衡效果稳定,小车能在平地持续站立超过5分钟不倒。同时,将姿态解算的数据处理频率成功提升至200Hz,确保了系统响应的实时性。
3. 遇到的难点与解决方案
难点: 最初传感器数据噪声大,导致车身剧烈振荡。
解决方案: 我没有简单地调整PID,而是深入排查,发现是电源地线干扰。通过为MPU6050模块单独提供稳定电源并优化PCB布线,从根本上解决了问题,之后PID调参便事半功倍。