“四天三夜,封闭式命题,全封闭制作。” 这就是全国大学生电子设计竞赛(电赛)的魅力,也是它的残酷之处。在这里,咖啡是水,睡眠是奢侈品,只有示波器上的波形才是唯一的真理。
2025 年的夏天,我们选择了 H 题:简易自行瞄准装置。 题目要求设计并制作一个能自动识别、跟踪和瞄准静态或动态目标的装置。
- 核心限制:必须采用 MSPM0 系列芯片实现底盘控制。
- 硬核指标:动态目标跟踪误差 ≤ 2°,且需具备极强的抗干扰能力。
简单来说,我们要做一个“移动炮台”:小车要在地面上循迹移动,同时车上的激光云台要自动搜索并精准打击周边的靶纸。这不仅考验控制算法的稳定性,更考验多传感器融合的实时性。
🛠️ 硬件架构:为性能而生
为了实现极致的精度,我们没有采用常规的舵机方案(精度太差),而是构建了一套全无刷电机的分布式控制系统。
1. 动力心脏:3S 供电与电源管理
为了保证无刷电机的爆发力,我们采用了 3S (12.6V) 高倍率航模锂电池 供电。
- 稳压系统:使用了多级 DCDC 降压。12V 转 5V 给树莓派供电(需 3A 大电流),12V 转 3.3V 给 MCU 供电。为了防止电机启动时的电压跌落干扰单片机,我们特意在 MCU 电源端加了 LC 滤波电路 和大容量钽电容。
2. 底盘系统:MSPM0G3507 + 自研 FOC
底盘是移动的基础,必须稳如老狗。
- 主控芯片:TI MSPM0G3507。这款芯片主频 80MHz,带有硬件数学加速器,非常适合跑电机算法。
- 电机驱动:FD6288 栅极驱动器 + N 沟道 MOSFET 搭建的三相逆桥。
- 电机与编码器:选用了 2808 无刷电机 搭配 TL25012 磁编码器。
- 自研 FOC:为了追求极致的低速平滑性,我没有用 TI 官方的库,而是手撸了一套 FOC 算法。
- 实现了 SVPWM (空间矢量脉宽调制),相比传统的 SPWM,电压利用率提高了 15%。
- 电流环控制频率做到了 10kHz,保证了底盘在低速循迹时的扭矩输出。
3. 瞄准云台:TRAVEO T2G + 直驱电机
这是整个系统的“手”,负责指哪打哪。
- 主控芯片:Infineon TRAVEO™ T2G。双核架构,算力强劲,专门负责云台的高频控制。
- 机械结构:全碳纤维管 + 3D 打印连接件,极致轻量化,减少转动惯量。
- 姿态感知:BNO08X 9轴陀螺仪。这款传感器内置了传感器融合算法,静态精度极高。
4. 视觉中枢:树莓派 4B
这是系统的“眼”。
- 平台:树莓派 4B (4GB版),运行官方系统。
- 摄像头:全局快门摄像头(Global Shutter),避免运动过程中的果冻效应。
🧠 算法核心:代码里的魔法
硬件只是躯壳,算法才是灵魂。
1. 扩展卡尔曼滤波 (EKF) 姿态解算
在小车移动过程中,底盘的震动会直接传导给云台。为了消除这种干扰,我们设计了一个 EKF 滤波器。
- 状态量:云台的角度、角速度。
- 观测值:编码器的角度、陀螺仪的角速度。
- 通过 EKF 融合这两组数据,我们成功滤除了高频机械振动,得到了一个极其平滑且低延迟的姿态反馈。
2. 视觉预测与亚像素识别
题目要求动态跟踪,这意味着“看到哪打哪”是来不及的,必须“预判它的预判”。
- 亚像素识别:使用 重心法 (Center of Gravity) 计算激光点的坐标,将分辨率提升了 10 倍,达到了 0.1 像素 的识别精度。
- 轨迹预测:我们建立了一个 一阶运动学模型,利用过去 5 帧的目标位置,通过 最小二乘法 拟合出目标的速度矢量,从而预测出 $\Delta t$ 时间后的位置。
- $\Delta t$ 包括了:图像采集时间 + 处理时间 + 串口传输时间 + 电机响应时间(实测约 45ms)。
3. 双环 PID + 前馈控制
为了让云台在底盘晃动时依然保持绝对静止(像鸡头防抖一样),我们引入了 前馈控制。
- 读取底盘陀螺仪的数据,作为前馈量直接叠加到云台的速度环上。
- 当底盘向左转时,云台会瞬间获得一个向右的补偿速度,抵消底盘的运动。
🕯️ 四天三夜的极限行军
Day 1:炸管之夜 方案论证很顺利,但晚上调试 FOC 驱动板时,因为死区时间设置太短,“砰”的一声,MOS 管炸了。火花四溅,整个实验室弥漫着烧焦的味道。我们连夜重新焊接 PCB,修改 PWM 配置,直到凌晨 3 点才让电机转起来。
Day 2:与热浪搏斗 8 月的实验室没有空调,几十台电脑和烙铁同时工作,室温接近 40 度。我们的电机驱动芯片 FD6288 开始出现热保护停机。没办法,只能给芯片贴上散热片,再加个暴力风扇对着吹。
Day 3:幽灵震荡 最崩溃的一天。当 PID 参数调硬一点时,云台会出现高频啸叫(机械共振);调软一点,又跟不上目标。 我们对着波形图分析了半天,发现是机械结构的刚性不足。最后用 502 胶水 + 碳纤维粉 加固了所有连接处,终于消除了那个该死的共振点。
Day 4:生死时速 封箱前 2 小时,我们发现手动校准模式有一个 Bug:如果先按复位键再按校准,坐标系会乱飘。 全队人的肾上腺素都飙升了。主程手都在抖,最后发现是一个全局变量没有清零。修改、编译、下载、测试,成功! 此时距离封箱只剩 15 分钟。
🏆 测评现场:名场面
省测评在 河南铁路职业技术学院 举行。 那一天,我们的运气和实力都爆棚了。
基础题:静态目标打击。小车稳稳停住,激光点瞬间锁定靶心,蜂鸣器“滴”的一声,满分。
发挥题:动态目标跟踪。这是最难的一项。 我们的车在跑道上丝滑游走,而靶纸在另一侧随机晃动。 神奇的一幕发生了:无论车身怎么颠簸,那颗紫色的激光点就像被胶水粘在靶心上一样,纹丝不动。
当时场面一度失控,各个专家评委都围了过来。 一位老教授推了推眼镜,问:“你们用的什么电机?” 我答:“无刷直驱,自研 FOC。” 教授点了点头,拿出手机开始拍视频,甚至发到了专家群里。 很快,隔壁学校就传开了:“听说科大有支队伍做出了工业级的稳定性,接近满分!” 那一刻,看着评委们惊讶的表情,我心里那个美啊,感觉这几天的熬夜、炸管、焦虑都值了。
📝 综合测评与遗憾
毫无悬念,我们以赛区第一的身份进入了 综合测评(全封闭式理论+焊接考试)。 这部分其实是我的弱项,全靠两个好队友带我疯狂复习数电模电。
原理图设计很快就搞定了,但在焊接环节出了岔子。 因为想追求完美布局,我在布线上纠结了太久,导致后面时间严重不足。 最后直到考试结束铃响,我们只焊接出了第一问的基础部分。 虽然第一问的完成的非常好,但因为 后面的发挥部分完全没来得及做,痛失了大量分数。
💭 结局与反思
最终成绩揭晓:全国一等奖。
其实当时我们是想冲击最高荣誉 TI 杯 的。 据我所知,网上流传的视频里,没有一个跑得比我们好。我们的控制精度和响应速度绝对是顶级的。 后来我看了一下 TI 杯得主的作品,他们的发挥部分确实比我们更细腻一点点,再加上我们综测的小遗憾(没做完发挥部分),最终与 TI 杯擦肩而过。
不过,能拿下国一,已经是很好的成绩了。 这段经历教会了我两件事:
- 技术没有捷径:每一个稳定的状态背后,都是无数次的参数整定。
- 团队就是力量:没有队友的硬件支持和综测带飞,我一个人绝对搞不定。
这大概就是工程师的浪漫吧:用代码对抗物理世界的混沌,创造出精准与秩序。