STM32自动循迹小车设计与电赛实战经验 1. 项目背景与竞赛要求解析2018年山西省大学生电子设计竞赛的自动循迹小车题目3是一个典型的嵌入式系统综合设计项目。这类竞赛题目通常考察学生对传感器应用、电机控制、算法实现等核心技能的掌握程度。从技术角度看题目要求小车能够自主识别路径通常为黑色引导线并完成指定动作如硬币检测、坡道行驶等附加任务。在实际参赛过程中我们团队选择了STM32F103C8T6作为主控芯片这是当时电赛中最常用的MCU之一。其72MHz主频、丰富的外设接口包括多路PWM输出和ADC通道以及成熟的生态支持使其成为性价比极高的选择。特别值得注意的是这款芯片的GPIO口驱动能力足够直接驱动OLED显示屏为实时数据显示提供了便利。2. 硬件系统架构设计2.1 主控模块选型STM32F103C8T6最小系统板包含8MHz晶振主时钟32.768kHz晶振RTC备用复位电路烧录接口SWD模式3.3V稳压电路实际调试中发现使用外部有源晶振能显著提高系统稳定性特别是在PWM波形生成时可避免因时钟漂移导致的电机控制异常。2.2 循迹传感器方案对比我们测试了三种主流方案红外对管阵列最终采用方案TCRT5000模块x5安装间距15mm检测高度8-12mm成本2.5/个LDC1000电感检测测试后放弃优点可检测金属轨迹缺点响应速度慢10ms功耗高持续工作电流50mA摄像头方案OpenMV图像处理效果最佳但STM32F103资源不足系统复杂度大幅增加传感器布局采用前3后2的箭头形排列前部三个传感器间距较窄10mm用于精确循迹后部两个间距较宽30mm用于检测急弯。3. 核心电路实现细节3.1 电机驱动电路采用双H桥驱动方案驱动芯片TB6612FNG工作电压6-15V峰值电流1.2A/通道PWM频率10kHz实测最佳值关键参数计算电机堵转电流 电压 / 内阻 7.4V / 3.2Ω ≈ 2.3A 实际工作电流 ≈ 0.3-0.8A带载 故需保证MOSFET的Id 1.5A留有裕量3.2 电源管理系统主电源7.4V 2000mAh锂电池3.3V稳压AMS1117-3.35V转换LM2596可调模块电流分配主控100mA传感器~50mA电机峰值1.2A重要教训电机启停会造成电压骤降必须在电源输入端并联470μF以上电解电容否则会导致MCU复位。4. 软件算法实现4.1 循迹控制算法采用改进型PD算法// 误差计算 int error 0; if(sensor[2]) error 2; else if(sensor[1]) error 1; else if(sensor[3]) error -1; else if(sensor[0]) error 2; else if(sensor[4]) error -2; // PD控制 static int last_error 0; float output Kp*error Kd*(error - last_error); last_error error; // 电机输出 MotorL_SetSpeed(base_speed output); MotorR_SetSpeed(base_speed - output);参数整定经验先调Kp至小车能基本跟随再调Kd消除振荡典型值Kp30,Kd15采样周期建议10ms4.2 OLED显示实现使用4线SPI驱动0.96寸OLED// 引脚定义 #define OLED_SCK PA5 #define OLED_SDA PA7 #define OLED_RES PB0 #define OLED_DC PB1 #define OLED_CS PA4 // 初始化序列 void OLED_Init(void) { OLED_WriteCmd(0xAE); // 关闭显示 OLED_WriteCmd(0xD5); // 设置时钟分频 OLED_WriteCmd(0x80); OLED_WriteCmd(0xA8); // 设置复用率 OLED_WriteCmd(0x3F); // ...更多初始化命令 OLED_WriteCmd(0xAF); // 开启显示 }显示优化技巧使用页地址模式减少数据传输量建立显示缓冲区避免频繁刷新关键参数用反色显示提高可视性5. 现场调试与问题排查5.1 典型故障现象及解决方案现象可能原因解决方案小车走S形路线PD参数不合适增大Kd值响应迟钝传感器高度过高调整至8-10mm电机异响PWM频率过低提高到10-15kHzOLED花屏电源干扰增加0.1μF去耦电容5.2 竞赛现场应急方案备用程序烧录准备多个含不同参数的hex文件传感器快速校准预留地面测试模式按键电压监控OLED实时显示电池电压参数热调整通过按键微调PID参数6. 系统优化方向6.1 硬件改进改用磁编码器电机提高速度控制精度增加IMU模块实现姿态补偿采用数字红外传感器如GP2Y0A21替代模拟输出6.2 软件升级引入状态机管理运行模式增加自适应PID算法实现SD卡参数存储功能在实际比赛中我们通过精确的机械结构调整传感器距地面高度保持一致和软件滤波对传感器信号进行移动平均处理最终使小车在2cm宽的黑色引导线上实现了±1mm的循迹精度。这个项目最深的体会是电赛作品的成功60%的硬件可靠性30%的算法鲁棒性10%的临场应变能力。建议后续参赛者至少预留3天时间进行全工况测试不同光照、不同地面材质等这往往是决定名次的关键因素。