1. 项目概述:两轮自平衡小车的核心设计
去年在实验室调试这个小车时,我清楚地记得第一次看到它稳稳立住时的兴奋感。这个基于STM32F103C8T6的自平衡小车项目,本质上是一个典型的倒立摆控制系统,通过MPU6050陀螺仪实时感知姿态变化,采用PID算法动态调整电机转速来维持平衡。与市面上常见的玩具级平衡车不同,这个设计加入了工业级的模块化思维——TB6612电机驱动模块提供稳定的6A驱动电流,12V锂电池供电系统配合低压检测电路确保运行安全,OLED屏则实现了关键参数的直观可视化。
硬件选型经验:STM32F103C8T6虽然属于基础款MCU,但其72MHz主频和硬件PWM输出完全能满足实时控制需求。我曾对比测试过STM32F4系列,发现在这种控制场景下性能提升并不明显,反而增加了功耗和成本。
系统最实用的设计在于其模块化无线功能配置。用户可以根据实际需求选择蓝牙(HC-05)、WiFi(ESP8266)或视频监控模块,这种可插拔设计使得项目既能作为PID算法学习平台,也能扩展为智能移动机器人开发基础。我特别欣赏其电压阈值报警功能——通过ADC实时监测锂电池电压,当低于设定阈值时触发蜂鸣器和LED闪烁,这个细节设计避免了过放电导致的电池损坏。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件架构深度解析
2.1 核心控制单元设计
STM32F103C8T6的最小系统板是整个项目的大脑,其硬件设计有几个关键点值得注意:
- 时钟电路采用8MHz外部晶振配合内部PLL倍频,相比单纯使用内部RC振荡器,将时钟精度从±1%提升到±0.05%,这对需要精确计时的PID控制至关重要
- 电机控制PWM信号通过TIM1和TIM8高级定时器产生,这两个定时器支持互补输出和死区插入,能有效防止TB6612驱动模块的上下桥臂直通
- 所有关键信号线(如MPU6050的I2C、编码器输入)都预留了上拉电阻位置,实际调试中发现加上4.7kΩ上拉电阻可显著提高通信稳定性
2.2 运动感知系统实现
MPU6050的姿态检测是本项目最精妙的部分。在代码中需要同时读取加速度计和陀螺仪数据,通过互补滤波融合处理:
c复制// 伪代码示例:互补滤波实现
float alpha = 0.98; // 滤波系数
float angle = 0;
void IMU_Update()
