2021年四月中旬那个周末,我站在实验室门口,看着二十多个学生抱着洞洞板、元件盒和借来的示波器探头往里走,心里那块石头才落了地。2021年全国大学生电子设计竞赛是TI杯,那届赛题的方向、测评方式跟往年比都有微妙变化,而对我们这种靠实验室"传帮带"出成绩的学校来说,第一次培训能不能把方向选对、上手路径走通、坑提前踩完,基本就决定了后面两三个月的备赛质量。这篇就把我们2021年第一次电设竞赛培训从筹备、摸底、课程设计到现场排故的全过程复盘一遍,重点不是"我们办了一场培训",而是这场培训里哪些安排值得直接抄、哪些问题你大概率也会遇到。
1. 培训为什么先摸底分组,而不是直接开讲知识点
1.1 2021年赛制与选题风向,决定了培训必须先解决"组队方向"问题
全国大学生电子设计竞赛不是期末考试,它是四天三夜在封闭场地里三个人一队,拿到题目现场做一台能演示、能测评的实物装置。2021年这届又是TI冠名,赛题覆盖面依然是老几样——电源类、信号与仪器类、测控类、运动控制类——但细看往届题目能发现一个明显趋势:单道题越来越强调系统集成,比如做电源的要带数字显示和通信,做运动控制的要加视觉识别,做信号的要能自动校准。
这个趋势直接带来一个现实问题:三个人组队时,如果三个人都只会写STM32,或者三个人都在焊电路,那题目稍微跨界一点就完蛋。所以2021年第一次培训的第一天,我们没有急着开讲任何知识点,先把所有人拉到一个教室里做摸底。
摸底不是为难大家,而是要回答三个问题:第一,每个学生当前最熟练的技能在哪条线上;第二,哪些人适合往电源方向组队,哪些适合信号方向,哪些适合控制方向;第三,新手里有没有被低估的"潜力股"。电赛的组队黄金时间其实不是报名时,而是赛前两三个月,方向定得越早,后面所有训练才越有针对性。
1.2 摸底题目设计的思路:六道硬件小题加一道综合小车的用意
摸底题不能出得太学术,否则新手直接懵。我们的做法是六道限时硬件小题加一道开放式综合题,每道题控制在四十分钟到一小时。硬件小题包括:用面包板搭一个AMS1117稳压电路,把5V降到3.3V,用万用表测空载和带载电压;用一个LM358搭同相放大器,增益设为11倍并实测验证;给一块STM32最小系统板写点灯程序,用定时器产生1kHz PWM;读取一个电位器电压并在OLED上实时显示;用NE555搭一个可调频率方波发生器,用示波器测量频率范围;最后一个稍微进阶——给了一个MPU6050模块,要求读出三轴加速度并串口打印。
这几道题覆盖了电源、模拟、数字、传感器四类基本技能。题目本身不难,但能看出大量信息:有人二十分钟就把PWM调出来了,但LM358输出端一直没接对反馈电阻;有人运放调得很快,但让他解释"同相输入阻抗为什么高"就卡壳;还有人点灯挺快,一到I2C读MPU6050就彻底卡住,最后发现是上拉电阻没配。
综合题更有意思,我们给了几块灰度传感器、一个直流电机、一个TB6612驱动模块和一块STM32,要求做出一个能沿黑线走的小车底盘。这道题完全开放,可以只用数字逻辑做,也可以用单片机做,还可以加PID闭环。做完这道题,谁适合做系统集成、谁适合死磕底层、谁适合写算法,基本一目了然。
摸底结果出来以后,我们把学生分成电源组、信号组、控制组和综合组四类,然后按三到四人一队交叉组队,确保每队既有做硬件的又有做软件和算法的。这一步很重要,因为2021年电赛的测评现场,评委问得最多的就是"这个方案的思路是什么、你负责哪部分",如果队伍里有人全程答不上来,整个队的印象分会大打折扣。
2. 集训课程线的核心内容拆解:电源、信号、控制三路并进
2.1 电源线:先把"带载能力"和"纹波"练出肌肉记忆
分完组之后,培训进入正题。2021年这届电赛里电源的分量非常重,不只是纯电源题,很多信号题、控制题里也藏着电源设计的隐形要求——比如整个系统供电压降一多,ADC采集立刻飘,电机驱动立刻没劲。所以我们第一天专门让电源组做了一个针对性训练:用LM2596-ADJ搭一个Buck电路,输出电压设到5V,负载从空载加到1A,用示波器记录输出电压变化和SW节点波形。
电源方向最容易踩的坑是"只关心输出电压准不准,不关心纹波和效率"。空载5.00V很好看,一带载掉到4.72V,或者纹波到了100mV以上,在电赛现场就是灾难。所以训练里我们反复强调两件事:纹波测量时必须把示波器带宽限制调到20MHz,用探头的地线弹簧而不是接地夹,否则测出来的根本不是真实纹波;效率计算要实测输入输出电流,而不是靠芯片手册的典型值。很多学生第一次测DC-DC效率,算出来90%以上,换个输入电压再测变成70%,这才理解为什么选型要看效率曲线而不是只看输出电压。
电源组还有个必练项目是LDO的功耗计算。有人用AMS1117把12V降到3.3V,摸着烫得要命还在纠结"芯片不是额定输出1A吗"。实际上压差8.7V乘以电流就是热功耗,跟额定电流没关系。这个道理讲清楚以后,学生自己就会算"这个场景该用LDO还是该用DC-DC"了,这才叫把电源设计的基本功练到肌肉记忆里。
信号链训练我们让信号组用一个OP07加RC搭二阶低通滤波,把1kHz方波过滤波前后波形,再用STM32的ADC采样做一次FFT。这一步把好几个常见坑都暴露出来了:有人选运放时只看放大倍数,忘了算增益带宽积,OP07的增益带宽积只有0.6MHz,放大100倍之后可用带宽只剩6kHz,测10kHz信号当然是错的;有人信号源输出阻抗太高,直接接ADC输入导致采样值偏小,因为ADC采样保持电容充电需要一个低阻抗源,加一个电压跟随器立刻解决;还有人低通滤波截止频率算错了,公式里的2π忘了除,滤出来的波形根本不对。
信号方向的核心思路是先把模拟链路调理干净再进数字,而不是什么都靠软件滤波兜底。2021年很多题目要求测量精度和失真度,如果模拟前端噪声就很大,后面写再好的算法也只是在放大噪声。我们特别强调"分模块验证":信号发生器输出标准正弦波,一级一级量输出,哪一级波形开始变样,就说明问题出在哪一级,这个排查习惯在后面备赛阶段帮了大忙。
2.3 控制线:STM32最小系统与"稳定优先"的开发习惯
控制组2.3节训练的目标很明确:每个人都能在半小时内搭出一个带OLED显示、按键输入、PWM输出的STM32最小系统,并且写代码时自带规范。主控我们统一以STM32F103C8T6和F407VET6为主,因为2021年赛题里控制类题目主控基本都是STM32,库函数和寄存器都熟,F407的优势在于带浮点单元,跑PID和简单图像处理比F103快得多。
控制线训练里我们特意设计了一个"状态机思维"环节:让每组用按键切换运行模式,同时OLED显示当前状态,然后用PWM控制电机转速按状态变化。很多新手写代码是线性的,while循环里一坨,按键一抖就乱跳。状态机的好处是让程序结构清晰,每个状态只管自己那部分逻辑,这是四天三夜赛场上最容易坚持下来的软件架构。
控制组另一个重要习惯是"外设初始化清单化"。ADC开没开、DMA有没有配、定时器时钟源对不对、引脚复用功能开没开,这些错误在一场培训里几乎人人都犯过。我们要求每人维护一张自己的"初始化自检表",联调前先过一遍。这个小习惯在比赛那种高压环境下能救回大量调试时间。
3. 工具链与器材清单:照抄就能起步的第一版配置
3.1 核心器件清单与选型理由
很多队伍备赛的第一道坎不是不会做,而是不知道该买什么、买多少。这里直接给一份我们2021年培训时用的器件清单,照着买基本够用,选型理由也一并说明。
| 类别 | 器件/模块 | 用途 | 选型理由 |
|---|---|---|---|
| 线性稳压 | AMS1117-3.3 / 5.0 | 低压差给MCU/逻辑供电 | 便宜、封装常见,适合5V以下小电流场景 |
| DC-DC降压 | LM2596模块、TPS5430、MP1584 | 大电压差高效率供电 | 效率比LDO高,带载能力强,电源题必备 |
| 精密基准 | REF5025 | ADC外部基准电压 | 让ADC采样稳定,不受MCU电源波动影响 |
| 运放 | OP07、LM358、AD620、OPA340 | 信号放大、跟随、仪表差分 | 覆盖直流/低频/差分三类常见需求 |
| 主控 | STM32F103C8T6最小系统板、STM32F407VET6 | 逻辑控制、信号处理 | 资料多、库函数全,F407带FPU适合算法 |
| 显示 | 0.96寸OLED(SSD1306)、1.8寸TFT | 人机交互、波形显示 | I2C/SPI接线简单,比数码管信息量大太多 |
| 电机驱动 | TB6612、DRV8833 | 直流电机、编码器电机驱动 | 比L298N轻巧高效,带逻辑输入直接接MCU |
| 传感器 | 编码器电机、灰度传感器、MPU6050、OpenMV、超声波 | 测速、巡线、姿态、视觉、测距 | 覆盖2021年主流控制题感知需求 |
| 通信 | CH340 USB转TTL、HC-05蓝牙、NRF24L01 | 调试、无线数据传输 | 串口调试必备,无线模块用于远程数据交换 |
| 测量工具 | 双路稳压电源、DS1054Z示波器、万用表、热风枪 | 调试测量 | 示波器是电赛眼睛,预算有限也要优先保证 |
选择这套配置有一个核心逻辑:模块化起步,先进方案验证,再谈画板集成。我见过不少新手一上来就花大量时间画PCB,结果孔位错了、封装反了、地没处理好,最后连基本功能都跑不通。培训阶段用模块加杜邦线快速搭系统,是为了把"有没有方案"和"方案对不对"的问题先解决掉,PCB整合放到赛前两周再做,那时候器件选型和电路结构都已经验证过,成功率会高很多。我们培训现场的调试台就是两排洞洞板加一堆面包板,学生反馈这样反而学得快,因为改一根线比重新焊一块板子快得多。
3.2 焊接、调试和PCB设计的几个实际避坑点
焊接是电赛的基本盘,培训阶段就让每个学生独立焊一块最小系统板。焊接上的坑主要集中在:焊盘没预热导致虚焊,助焊剂用多导致引脚间搭锡,排针焊反导致插不进去。这些都要现场指出来。最让人头疼的是"看起来焊得没问题但就是不通"的板子,十有八九是焊盘和引脚之间形成了一层氧化膜,解决办法是先把烙铁头吃锡再补焊,让新焊锡重新流动。
调试工具的坑也很典型:很多学生用数字万用表的蜂鸣挡量通断,结果两端跨个二极管也叫,让他怀疑人生。实际上蜂鸣挡导通电压阈值很低,二极管正偏也会响。正确的做法是测电阻值而不是听声音。另外示波器的探头衰减档一定要先确认——打到10X还是1X,测量结果差十倍,这个错在培训中至少有一半人犯过。
PCB设计上,集训只教三个原则:电源回路要尽量短粗、模拟地数字地分区单点连接、晶振和去耦电容靠近芯片引脚。很多人画板子喜欢把地全铺成一大片,看起来专业,但如果模拟地和功率地不分,ADC采集和电机驱动同时工作时就会出现地弹噪声。2021年培训时我们用两层板做了一个小实验:同一块板子上,模拟地分开敷铜再单点相连,ADC采样值跳动幅度比混在一起时小了一个数量级。这个直观对比比讲十遍理论都有用。
4. 培训现场真实踩过的坑:从症状到根因的完整排查
4.1 ADC读数跳变:代码背了锅,根因却在基准源和地弹
培训进行到第三天,控制组有个队伍报告STM32 ADC读数一直在跳,程序里加了一堆滑动平均滤波也只能把跳动范围从30个LSB压到15个LSB,还是没法用。一开始大家习惯性地怀疑代码有问题:是不是DMA没配好?是不是采样时间太短?是不是电位器本身太脏?排查一路做到物理层,才找到了真正的根因。
我们用示波器短接地弹簧去量MCU的模拟电源引脚VDDA,发现上面叠了一个幅度不小的开关噪声,频谱一看是几百kHz的纹波。再往上一级查,VDDA来自一片AMS1117,输入来自翻页开关稳压的12V母线,母线上的功率纹波直接串了进来。更隐蔽的是,队伍用的外部基准REF5025没有加去耦电容,它输出的2.5V参考电压本身就在小幅摆动。ADC拿一个在摆的基准去量化一个电源不干净的信号,读数不跳才怪。
这事的完整排查链路是:症状在ADC输出→怀疑软件滤波→用示波器量VDDA→发现输入电源纹波→给AMS1117前加LC滤波→给REF5025加10uF和100nF去耦电容→重新采集,跳动从30个LSB降到2个LSB以内。这次排查给所有队伍上了一课:电赛里"软毛病"有一半其实是"硬毛病",怀疑软件前先用示波器看一眼电源和波形,往往能少走半天弯路。后来我们给这条经验起了个名字叫"先硬后软"排查法,再遇到类似问题大家第一反应都是去量硬件而不是改代码。
4.2 电机响应迟钝:PID参数之前还有机械和驱动的账要算
电源问题解决后,控制组又出现了一个典型症状:小车电机给到20%占空比以前几乎不动,过了20%突然猛蹿,而且电机发热严重。队伍的第一反应是PID参数没调好,P太大导致小信号下反复振荡,于是一群人围着改P、改I、改D,折腾了一个多小时毫无起色。
我们让他们把PWM引脚直接换成手动给定占空比,排除了PID的影响,现象依旧。这时才把注意力转到驱动和机械上:用示波器探头夹在TB6612输出端,发现PWM波形确实到了电机引脚,但电机端电压明显偏低。一查驱动板供电,是12V电机挂在5V上面用,这电机根本吃不饱;再看使能引脚,STBY引脚悬空默认被内部电路拉低,驱动芯片根本就没完全使能。两个问题叠加,电机当然磨磨蹭蹭。
PWM频率也查出了问题——用的默认1kHz,对电机来说偏低了,运行时有明显的高频啸叫,还加重了发热。改成16kHz之后,电流噪声变小,电机响应顺滑了很多。这个坑在电赛里极其常见,很多队伍把大量时间浪费在调软件参数上,最后发现是供电电压不够、驱动使能没拉、PWM频率不对这些物理问题。我到现在还记得当时跟学生说的那句话:电机不听话,先量电压再吵PID,软件不背这个锅。
4.3 三人联调失败:接口协议文档比想象中更重要
培训最后一天安排的是各队把电源板、采集板、控制板联调成一套完整系统。结果预料之中地乱成一锅粥:做电源的提供了12V和5V,做采集的要5V,做控制的也要5V,三个人以为说的是同一个5V,结果一个走I2C一个走SPI,OLED地址还起了冲突。更尴尬的是负责信号板的同学用串口打印调试数据,波特率写的是115200,负责主控的同学按9600初始化,两边对不上,数据全是乱码。
整个联调环节里,真正的技术难度并不高,耗时间的全是这种接口定义不一致的问题。培训结束后我们把"一页纸接口协议"列为硬性要求:每队必须用一页纸写明所有供电电压、接地关系、串口/SPI/I2C引脚分配、波特率、采样率、控制周期、报文格式,这张纸在联调前先互相传阅,谁做谁核对。后来备赛时,这张纸就是我们常说的"队伍宪法",它比任何一段代码都重要。
5. 培训之后到四天三夜开赛:十五天备赛清单
5.1 按"24小时版本"打磨三类基础模块
培训结束到正式开赛一般还有两到三周,这阶段最忌讳的就是从头开始研究新东西。我给队伍的建议是把培训里验证过的三类基础模块——电源模块、采集模块、驱动模块——按"24小时能重做一版"的标准打磨。什么意思?就是这三块的电路结构、关键参数、调试流程要熟练到闭着眼都能画出来、焊出来、调出来。
电源模块的目标是能在24小时内搭出一路干净的5V和一路高精度3.3V,带载1A不掉压,纹波控制在示波器20MHz带宽下20mV以内。采集模块的目标是能把测得的信号稳定地送进MCU,ADCN值跳动不超过正负两三个LSB。驱动模块的目标是能让电机在0到100%占空比下线性响应,正反转、刹车逻辑都清晰。这三块是大多数赛题的公共底座,底座稳了,四天三夜才有余量去啃题目特有的部分。我们甚至要求每队把这三类模块的调试笔记做成一张速查表,赛前打印出来带进场。
5.2 建立队伍的比赛流程SOP,文档工作提前安排
四天三夜看似时间充裕,实际上一旦上了赛场,前半天读题后半天着手,第三天就必须出整机demo,第四天上午是文档收尾和演示视频。有一个队伍的组织SOP可以供参考:第一天上午只读题和内部组内复述,每个人用自己的话把题目要求讲一遍,避免三个人各理解各的;中午前完成方案评审,列出风险点;第一天下午到第二天晚上是各模块并行开发;第三天开始系统集成,留出至少六小时联调;第四天上午写设计报告、录演示视频、整理测试数据。
这里特别要说的是设计报告,它在全国测评里占的权重接近一半,但很多队伍把它放在最后一天才开始写,结果只能交一份流水账。培训时我们就要求每组从第一天开始就同步维护框图、原理说明和测试数据表,每测一组数据就记录一个版本。到比赛第四天,报告不是"写"出来的,而是"整理"出来的,质量完全不一样。
5.3 训后复盘问题清单,直接带队里开会用
培训最后半小时没有安排新内容,每个队队内开了一个复盘会,我给了大家一份问题清单:第一,这四天里最耗时的故障是什么,根因在硬件还是软件,下次怎么提前避免;第二,三个人里谁最擅长哪类工作,实际分工和擅长方向匹配吗,需不需要调整;第三,当前最薄弱的一个环节是什么,找不到薄弱点说明还没想透;第四,如果明天就比赛,手里最容易出问题的是哪个模块,需要补什么;第五,器材和耗材还缺什么,哪些应该买备用件。
这份清单我带每一届都用,效果很好。它把培训里的具体问题和备赛期的行动直接对应起来,队伍回去之后就知道该练什么、该买什么、该重新分什么工,而不是漫无目的地刷往届题。2021年第一次培训结束后,有两支队伍就是按这份清单把短板补齐,后来在校内选拔里表现明显高出其他队伍一截。
6. 一点个人体会:培训最该留下的是"能复盘的自己"
2021年第一次电设竞赛培训办完那天,我说了一句话被学生记到现在:培训里你们做的每一块板子、踩的每一个坑,都不白费,因为竞赛最重要的不是那四天三夜,而是你为了这四天三夜练出来的判断力。判断力这东西,只能靠真实的电路、真实的波形、真实的报错堆出来。
如果让我给后来者总结一件最核心的事,那就是别把培训当上课听。电设竞赛培训的本质是一场实验室内部的拉练,它在模拟的是"给你一堆元器件和一个不确定的问题,你能不能把它变成一台能演示的机器"。判断力练出来了,不管2021年还是2023年,不管TI杯还是其他杯,你都有底。祝你们在实验室把第一次培训办成,更祝你们在赛场上遇见一个能把自己彻底逼出来的题目。