从赛题到实现:电动小车动态无线充电系统核心模块解析与实战 1. 赛题背景与核心挑战2019年全国大学生电子设计竞赛A题电动小车动态无线充电系统要求参赛队伍在限定时间内完成一套具备无线充电能力的智能循迹小车系统。这个题目融合了电力电子、自动控制和嵌入式开发三大技术领域对参赛者的综合能力提出了较高要求。我当时带队参赛时第一眼看到题目就意识到其中的技术难点主要集中在三个方面如何实现高效无线能量传输、如何保证小车在充电过程中的精准定位、以及如何协调多个硬件模块的实时控制。实际开发中最让人头疼的是无线充电效率问题。我们测试发现当发射线圈与接收线圈的垂直距离超过3cm时充电效率会急剧下降到30%以下。这直接影响了小车的续航表现后来通过改用谐振频率匹配的LC电路才将传输效率提升到68%左右。另一个典型问题是红外循迹模块容易受到环境光干扰特别是在比赛现场的强光照射下传感器会出现误判。我们最终采用软件滤波算法通过多次采样取中值的方式解决了这个问题。2. 硬件系统模块化设计2.1 电机驱动电路优化TB6612FNG驱动芯片确实是大多数队伍的选择但实际使用中有几个关键细节需要注意。首先是PWM频率设置我们通过示波器测试发现当频率设置在15-20kHz时既能避开人耳可闻范围又能保证电机运行平稳。其次是死区时间配置如果两个控制信号切换间隔小于1μs很容易导致MOS管直通短路。我们在PCB布局时特别注意将四个0.1μF的去耦电容尽可能靠近芯片引脚放置实测这样能有效抑制电压尖峰。电机驱动电路中最容易忽视的是电流检测设计。我们在电机供电回路中串联了0.05Ω的采样电阻配合OPA335运放构成差分放大电路。这个设计虽然增加了复杂度但在调试阶段帮了大忙——通过监测电流波形我们及时发现并解决了电机堵转时的过流保护问题。具体电路参数如下元件参数值作用说明C1-C40.1μF陶瓷电容电源去耦R1-R210kΩ输入下拉电阻R30.05Ω电流采样电阻U1OPA335电流信号放大2.2 红外循迹模块升级方案常规的红外对管方案虽然成本低但在复杂光环境下表现不稳定。我们对比测试了三种方案TCRT5000反射式传感器成本约0.5元/个RPR220直射式光电开关成本约2元/个红外摄像头图像处理成本约50元最终选择折中的第二种方案并创新性地加入了动态阈值调整算法。具体实现是在每个采样周期开始时先快速扫描所有传感器的环境光值然后将黑线检测阈值设置为当前光值的70%。这个改进使循迹准确率从原来的82%提升到了96%。硬件连接上要注意上拉电阻的选择。我们使用STM32的ADC采集时发现10kΩ上拉电阻会导致响应速度变慢后来改用2kΩ电阻配合100nF滤波电容既保证了信号质量又提高了采样速率。具体接线方式如下// STM32 HAL库配置示例 ADC_ChannelConfTypeDef sConfig {0}; sConfig.Channel ADC_CHANNEL_1; sConfig.Rank 1; sConfig.SamplingTime ADC_SAMPLETIME_15CYCLES; HAL_ADC_ConfigChannel(hadc1, sConfig);2.3 无线充电电路设计精要磁耦合谐振是这道题的核心技术点。我们尝试过多种线圈结构最终确定采用直径8cm的平面螺旋线圈用利兹线绕制15匝实测在6.78MHz谐振频率下Q值能达到110。这里有个重要经验线圈中心一定要留出直径2cm的空心区域这样可以显著改善磁场分布均匀性。超级电容充电管理是个容易被忽视的环节。我们设计的充电曲线分为三个阶段恒流阶段0-2.7V500mA恒流充电恒压阶段2.7-3.0V电压缓慢上升涓流阶段3.0V以上50mA维持充电通过这种分段策略既能快速充电又避免了过压风险。关键元件选型建议谐振电容C0G/NP0材质的贴片电容温漂小整流二极管肖特基二极管SS34压降仅0.3V超级电容5.5V/1F至少准备两个并联3. 软件系统实现细节3.1 系统初始化关键点很多队伍在初始化阶段就埋下了隐患。这里分享几个实测有效的技巧时钟配置后要加入至少5ms的延时等待时钟稳定中断优先级分组建议设置为NVIC_PRIORITYGROUP_44位抢占优先级PWM初始化时要先关闭输出等所有参数配置完成再开启一个典型的初始化序列应该像这样void System_Init(void) { HAL_Delay(10); // 等待电源稳定 Clock_Config(); // 时钟配置 GPIO_Init(); // GPIO初始化 NVIC_Config(); // 中断配置 TIM_Init(); // 定时器初始化 ADC_Init(); // ADC初始化 Motor_Stop(); // 确保电机初始状态为停止 }3.2 主程序控制逻辑优化主循环中的状态机设计直接影响系统响应速度。我们采用时间片轮询方式将不同任务分配到不同时间槽0-5ms传感器数据采集5-10ms控制算法运算10-15ms电机PWM更新15-20ms无线充电状态检测这种设计即使在72MHz的主频下也能保证每个任务得到及时处理。对于关键的循迹算法我们最终采用的不是简单的if-else判断而是基于偏差量的PID控制void Track_PID_Control(void) { static float last_error 0; static float integral 0; float error Get_Track_Error(); // 获取当前位置偏差 integral error * 0.01; // 积分项0.01为采样周期 float derivative (error - last_error) / 0.01; float output KP*error KI*integral KD*derivative; Set_Motor_Speed(BASE_SPEED output, BASE_SPEED - output); last_error error; }4. 调试经验与性能提升4.1 无线充电效率优化通过频谱分析仪我们发现很多队伍的传输效率低是因为谐振频率偏移。建议按以下步骤调试用网络分析仪测量线圈的固有谐振频率调整匹配电容使谐振点接近6.78MHz用示波器观察发射端电压电流相位差理想情况应该接近0°我们记录的最佳参数组合是发射端33nF电容 8cm直径线圈接收端27nF电容 6cm直径线圈传输距离1.5-2cm时效率最高4.2 动态充电时的循迹稳定性当小车在充电平台上移动充电时最容易出现循迹失准。我们通过以下措施解决了这个问题在充电区域铺设特殊标记黑白间隔条纹提高红外传感器的采样频率到500Hz加入运动预测算法当检测到充电平台时自动降低车速实测数据显示优化前后的对比如下指标优化前优化后循迹成功率75%93%充电中断次数4.2次/分钟0.8次/分钟平均充电电流320mA480mA5. 常见问题解决方案在实验室和比赛现场我们遇到过各种意外情况这里分享几个典型问题的处理方法问题1电机突然反转检查TB6612FNG的STBY引脚是否保持高电平测量PWM信号占空比是否超过95%某些驱动芯片在100%占空比时会异常确认电机两端并联的续流二极管没有接反问题2无线充电时系统复位检查3.3V LDO的输入电容是否足够建议至少22μF在MCU电源端增加磁珠滤波将无线充电接收端的地与数字地通过0Ω电阻单点连接问题3循迹时小车左右摆动降低PID控制中的微分系数KD检查轮胎是否打滑可以在轮胎表面贴摩擦胶带适当提高红外传感器的安装高度建议距地面1-1.5cm比赛最后阶段我们发现超级电容在充满电时会给系统带来很大干扰。最终的解决方案是在电容两端并联一个3V的稳压管同时软件上做了充电状态检测当电压达到2.9V时就自动切换为涓流充电模式。这些经验都是在实际调试中积累的希望可以帮助后来的参赛者少走弯路。