电赛这两个字,参加过的人都懂。它像是给电子爱好者的一场高密度实战演习,题目下发那一刻,你只有6天5夜,要完成从选题、方案设计、硬件搭建、软件开发到联调测试的全流程。更折磨人的是,你以为的最终方案,往往在第三天就忍不住推倒重来,然后第四天再推翻一次,最后一天还在为某个传感器数据跳变熬到天亮。我见过太多队伍在赛后感叹“如果再给我一天”,也见过不少队伍在封箱前一小时还在飞线。这篇攻略没有漂亮话,只有我这些年来带队和参赛攒下的血泪经验,按着时间线讲清楚6天5夜到底在做什么,以及那些反复推倒重来的坑,你能不能少踩几个。
先说清楚,这篇文章适合谁。如果你是第一次参加电赛(包括全国大学生电子设计竞赛以及各类校级选拔赛)的学生,它能帮你建立完整的赛程认知;如果你已经参加过但成绩不理想,它里面关于方案取舍和问题排查的内容,能帮你找到失败的原因;如果你是想做指导老师的,也可以把里面的时间规划表格直接拿去给团队做参考。我不打算从“什么是电赛”这种基础问题讲起,直接进入正题:6天5夜,每一天每一夜,究竟该怎么过。
1. 电赛6天5夜的整体节奏与时间规划
很多人以为电赛拼的是技术天花板,其实拼的是时间管理和决策能力。题目一公布,倒计时就开始。这132小时怎么分配,基本决定了最终作品的完成度。我见过有队伍第一天就把所有时间花在搭一个完美的电源模块上,结果后面主控代码一句没写;也见过有队伍第一天下午就快速选定题目并开始写代码,最后一天还有富余时间做整体优化。差别不在于谁更聪明,而在于节奏感。
1.1 赛题发布后的第一天:选题与方案定型
第一天上午通常是被题目轰炸的。题目发布后,全队集中读题,逐条列指标。这里有个关键动作:把硬性指标和加分指标分开。硬性指标是评测时必测的项目,例如“输入电压5V”“输出波形频率范围1kHz~10kHz”“测距精度小于1cm”等等,这些一个都不能丢。加分指标则是设计方案中能体现性能但评测不一定强制测的部分,比如“功耗小于xx mA”“支持自动校准”。第一天的任务是确定到底做哪题,哪个组合能做出来,而不是哪个看起来高级。
我建议的快速筛选方法是:三个人各自独立阅读所有题目,用一小时写出自己认为最有把握的题号,以及解决核心难点的第一直觉方案。然后各自陈述五分钟。这个流程能强迫每个人真正看懂题目,而不是跟着某一个主力队员的思路走。陈述结束后,全队投票,且必须定下“方案一”和“方案二”。所谓方案一,是你们认为能完整实现的路径;方案二是方案一卡死时快速切换的备选。备选方案不需要完整设计,但至少要回答清楚三个问题:主控用什么,传感器用什么,执行机构用什么。我在实际参赛中发现,备选方案的完整度直接影响崩溃后的恢复速度,一个有备选方案的队伍遇到硬件问题后往往在一个小时内就转向新方向,而没有备选的队伍会陷入无休止的争吵。
当天下午到晚上,就是详细方案设计。这里要说一个很多人忽略的点:先画系统框图,再画电路原理图,最后写代码框架。系统框图能帮助全队对齐认知。每个模块标清楚供电电压、接口类型(UART/I2C/SPI/ADC/GPIO)、通信协议、数据流向。电路设计阶段建议优先选择库存里现有的、用过至少两次的模块,而不是官网最新的Demo芯片。电赛期间没有时间让你熟悉一个新芯片的寄存器,也没有时间等待烧录器驱动出现问题后再去排查。
1.2 第二天到第三天:硬件搭建与软件初调
从第二天早上开始,分工要明确。我通常建议两线并行:硬件组负责电源、传感器接口、驱动电路和机械结构的搭建,软件组负责主控底层驱动和核心算法的原型验证。这里的核心原则是:硬件不要等软件,软件不要等硬件。软件可以先在开发板上用模拟信号调试PID、滤波算法,硬件则可以同时用万用表逐点量测电压和导通性。两个方向各自推进到最后一天联调时汇合,才能最大化利用有限的窗口时间。
第二天最容易出现的问题是“完美主义”。看到PCB画到一半觉得布线不美观,就推倒重画;看到代码算法有一点不清晰,就非要彻底重写。这是致命的。电赛要的不是一个艺术品,而是一个能在评测台上稳定工作的系统。PCB布线只要电气连接正确、电源和地没有接错、走线载流足够,就可以动手做板。代码只要核心状态机能够跑通,临时加了几个断言打印也没关系。你们要记住,时间越是紧迫,越要容忍阶段性粗糙。我见过一个队伍第二天就把机械结构拆了三次,第三次重装时发现步进电机支架的螺丝孔偏了0.5mm,结果整个下午都在打磨支架。其实完全可以用热熔胶临时代替,等到第四天整体测试时再优化。
到了第三天,硬件组要能完成第一版裸板或洞洞板的焊接,并且使用稳压源单独供电测试各模块是否工作。软件组则应该把AD采集、传感器读取、电机控制这些底层驱动封装成函数,并在主循环里跑通一个最简任务流——哪怕任务流只是“读取传感器数据,通过串口打印出来”。这个简简单单的任务流,能验证整个数据链路是否打通,是后续所有功能的基础。
1.3 第四天到第五天:联调、优化与预测试
第四天的早上是一个分水岭。如果到这个时候,硬件和软件还没有进行过任何一次联合上电测试,那就必须立刻停止各自独立开发,强制进入联调阶段。联调时需要一个明确的测试计划,而不是随机碰运气。我习惯把联调分成三步:首先用稳压电源给整板供电,观察上电瞬间的电流是否异常,所有模块的电源指示灯是否正常;然后逐一使能各模块,用手头的测试信号(如用信号发生器产生一个已知波形)验证传感器输出是否符合预期;最后运行软件的完整任务流程,对着秒表记录各个动作的执行时间。每一步出现问题都需要记录在案,方便后续针对性修复。
第五天的白天,作品应该能够完成基本功能了。这时候开始做“极端情况测试”,包括输入电压拉偏(比如额定5V,测试4.5V和5.5V下是否工作正常)、传感器距离边界测试、长时间连续运转测试(重点看有没有发热异常)。我特别强调温差和光照。有些光敏传感器、红外传感器,在阳光直射下和室内日光灯下的读数差异非常大,若不提前测试,评测现场很容易出幺蛾子。
第五天晚上,往往是最容易爆肝的时间。这里不提倡通宵,但大部分队伍都会留人值守。如果你问我有什么实际建议,我建议把第五天晚上的重点从“继续加新功能”切换到“做一个稳定的演示模式”。所谓演示模式,就是用固定顺序完成赛题指标的关键动作,避免现场随机操作导致的时序冲突。这个演示模式要反复练习至少二十次,确保每一次的成功率都在95%以上。
1.4 第六天:封箱前的最后冲刺
第六天的上午属于打磨细节。检查所有螺丝是否拧紧,排线是否固定,电池电压是否足额,备份代码和工程文件。下午开始封箱,这时候最忌讳的是临时改动硬件。如果非要改,那就是一个原则:所有改动必须经过全队确认,并且留出30分钟以上的回归测试时间。封箱前还需要准备一份一页纸的作品说明,内容包括系统框图、使用说明、关键参数和三种常见故障的现场处置方法(比如“如果数码管不显示,先检查排线是否插紧”),评测老师通常对这个操作非常认可。
封箱之后不要散会。全队坐下来,把六天的过程简单复盘一下,记录一下自己踩过哪些坑。这份复盘哪怕只有三句话,也能为日后参加省赛或国赛节省大量时间。
2. 反复推倒重来的背后:电赛设计的核心矛盾与取舍
“反复推倒重来”几乎是每一支电赛队伍的共同回忆。为什么会这样?在我看来,根本原因是:第一版方案永远是建立在理想假设之上,而现实会很快打破假设。题目描述里“预计使用xx模块”,数据手册里写着“典型应用电路”,这些信息到了实际硬件上往往会因为供电不稳、信号干扰、接线松动等原因失效。于是你不得不面临一个痛苦的选择:修修补补继续走,还是换一个更稳妥的路径。
2.1 为什么方案会被推倒:需求误判与技术可行性
最常见的推倒原因是“需求误判”。题目里有一项指标是“角度误差不超过5度”,你们团队一看,觉得用舵机就够了。然而真正测下来,普通舵机在负载变化时很难保证重复定位精度,加上传动机构的回程误差,5度的指标可能无法稳定达成。这时候你才意识到,需求不是“转个角度”,而是“高精度的角度闭环”,方案自然要从舵机升级为步进电机加闭环编码器,或者使用无刷直驱伺服。从这个案例可以看出,方案推倒本质上不是技术门槛太高,而是需求理解深度不够。所以我建议你们在做方案设计时,针对每一个指标追问一句“为了实现这个指标,物理上需要什么?”比如“精度要5度”->“电机需要能感知当前角度”->“需要编码器或陀螺仪”->“需要闭环控制”。一层层推下去,方案自然就会合理,而不是在评测前才发现需求满足不了。
另一种常见推倒原因是“技术储备不足”。你打算用FreeRTOS做多任务调度,但队伍里没人系统地用过,第三天才发现某个中断优先级设置不对导致任务死锁。这时再回头查资料,时间成本就太高了。这里我给出的经验是:电赛不是学习新技术的场合,而是应用已有技术的场合。如果你准备报名电赛,至少提前两个月把常用主板、传感器、执行器相关的例程都跑过一遍。真正到了比赛期间,你只会用什么就上什么,现场学是绝对来不及的。
2.2 重新选型的决策框架:时间、成本与备用方案
当方案被现实按在地上摩擦时,你需要一个冷静的决策框架,而不是情绪化地直接换模块。我总结为三个问题:
- 当前方案的瓶颈是什么?是硬件性能不足,还是软件Bug,抑或是机械装配误差?
- 换新方案需要多少时间?包括硬件替换、接线调整、驱动重写、参数整定。粗略估算,每一处硬件替换至少需要4小时,软件适配至少需要6小时。
- 距离封箱还有多久?如果剩余时间少于12小时,那么任何全局性的替换方案都不要做,只做局部修补。
在这个框架下,我还强烈建议每个队伍在比赛初期就预留出一个“弹药箱”。所谓弹药箱,是指至少一套备用主控板、两个同型号传感器、三种不同扭矩的电机以及一堆排线和接插件。我在比赛时,工具箱里永远有一块“备胎板”——和主控芯片相同的最小系统板,这样即使主控板烧掉也能在半小时内替换。这个工具箱看起来占地方,但能在紧急时刻救全队一命。
2.3 最典型的推翻案例:从舵机到步进电机、从模拟到数字
说两个我在实际比赛中见过的推倒重来典型。
一个是关于执行机构的。某题要求做一个能追踪光源的小车,一开始队伍选用了连续旋转舵机配合电位器做定位。设计时觉得简单,结果调试时发现切换方向有大约1秒的死区延迟,导致小车转向严重过冲。第二天下午他们把舵机换成步进电机加A4988驱动,花了两个小时改写驱动代码,又花了一个小时调加减速曲线,终于赶在晚饭前实现了稳定的转向。这就是典型的“换执行机构解决问题”。如果一开始就选步进电机,可能不会遇到这个问题,但团队经验不足时往往无法一步到位。这里的关键不是后悔选错,而是在发现问题的第一时间就能果断换型。
另一个是关于传感器处理的。某题要求测量微小电压变化,队伍一开始用单片机的ADC直接采集,发现噪声非常大,毫无办法。后来他们意识到需要做信号调理,于是采用仪表放大器加二阶低通滤波,并用运放搭建了跟随器做阻抗匹配。这个改动并不复杂,但需要动手焊一个小板子,前后花了半天时间。这提醒我们:从模拟量到数字量的转换,不是接一根线就完了,中间那一层信号调理电路才是决定成败的关键。很多队之所以推倒重来,是因为他们没把模拟前端的衰减和噪声当回事。
3. 核心模块的实战细节与参数计算
无论赛题怎么变,电源、传感器、执行机构和主控这四个模块总是绕不开的。把它们的细节在赛前研究透,比赛中就能省下大量调试时间。下面我把这四个模块里最容易踩坑的部分挨个说一遍。
3.1 电源系统的规划与压差计算
电源系统是我见过最多队伍翻车的环节,因为很多人习惯直接用一个USB供电或者一块电池接到板子上完事。但赛题往往会规定输入电源,比如“输入电压为5V的直流电源”,这时候整板所有的耗电模块都需要从这个5V取电。如果你的电机工作在5V,主控芯片也要5V,那么两者共用一个电源,电机启动瞬间的大电流会导致主控复位。解决办法要么是分两路供电(5V一路直驱电机,另一路通过LDO降到3.3V给主控),要么是在靠近主控侧加一个足够大的电容做储能。
计算一个简单例子:假设传感器模块需要3.3V,最大电流100mA,采用AMS1117-3.3稳压器,输入5V,那么稳压器上的压差是5-3.3=1.7V,功耗就是1.7V×0.1A=0.17W。这个功耗虽然不大,但如果传感器扩展到多个,总电流到500mA,功耗就会到0.85W,此时AMS1117的封装就必须考虑加散热。否则温度过高会进入热保护,电压跌落。所以我在设计电源时,习惯于先算功耗预算表,把每个模块的电压、电流、功耗列出来,并保证稳压器的功耗低于其额定值的一半,留出余量。
3.2 传感器选型与信号调理
传感器选型的核心不是看贵的,而是看接口和响应时间。以激光测距模块为例,市面上有I2C接口也有UART接口,I2C地址可能冲突,UART波特率可能不匹配。电赛场景下我通常推荐优先选择UART接口的模块,因为它调试简单,只要两根线就能通信,而且不容易出现总线冲突。但要注意,很多UART模块上电后需要几秒钟的初始化时间,首次读取数据时会返回乱码,因此软件里必须有一段“等待模块Ready”的逻辑。
信号调理方面,最容易被忽视的是阻抗匹配和滤波。比如光电二极管输出电流信号,需要接一个跨阻放大器把电流转成电压;热电偶输出毫伏级电压,需要放大几百倍,这时候噪声同样被放大。处理办法是加一级低通滤波器,截止频率根据信号带宽而定。假如温度信号变化频率很低,比如0.5Hz,那么低通截止频率可以设在5Hz左右,这样能有效滤除50Hz工频干扰。计算公式为RC低通截止频率f=1/(2πRC),假设R=10kΩ,要得到f≈5Hz,C=1/(2π×10kΩ×5Hz)≈3.18μF,选用3.3μF的电容即可。这种设计在赛前就应该准备好一个通用信号调理小模块备用。
3.3 执行机构的驱动与闭环控制参数
执行机构包括电机、舵机、继电器、电磁铁等等。其中电机的驱动最容易出问题,主要是电流不够和反向电动势干扰。L298N这种老式驱动器虽然方便,但其饱和压降较大,在低压供电时电机会无力;如果供电是5V,电机额定的5V经L298N后实际只有3V多,转速扭矩都会受影响。所以现在更推荐使用MOS管型驱动模块(如TB6612、DRV8833)或者直接使用集成的电机驱动芯片。切换时注意逻辑电平的高低有效关系,这类模块的PWM频率通常选择10kHz到20kHz之间,频率太低会听到啸叫,太高驱动芯片的开关损耗会增加。
步进电机的闭环参数整定也是大头。步进电机开环时容易出现丢步,特别是负载变化剧烈时。解决办法是给步进电机加编码器组成闭环,或者在传送机构末端加一个光电限位开关做原点归零。最简单的做法是使用带编码器的闭环步进电机,市面上有20元左右的42步进闭环电机,能很大程度减少丢步问题。但要注意闭环步进电机的PID参数如果调节不当,会产生震荡。我是从P=20、I=2、D=10这些经验值开始试凑的,通常在负载惯量确定后,把P调大到出现轻微震荡,再回退30%,然后慢慢加I消除稳态误差,D值一般只用来抑制超调。这个流程需要反复试验,因此预留整定时间是必要的。
3.4 主控资源分配与代码架构
主控芯片的选择要综合考虑资源。最常用的STM32F103系列,主频72MHz,有多个定时器和USART,足够应对大部分赛题。但如果不注意资源分配,很容易在最后发现引脚冲突或定时器不够用。我通常会在方案阶段就画一张引脚分配表,列出每个外设用的引脚编号,并且避开默认的下载口和BOOT引脚。比如PA9/PA10是USART1,若USB转串口模块占用了这个口,那么其他USART模块就得换到PB10/PB11。这张表就是团队的“宪法”,任何改动都要更新这张表,避免联调时发现两个模块共用同一个引脚。
代码架构方面,我强烈推荐使用状态机思维。把整个系统抽象成一个主循环,里面根据当前状态去执行不同的任务。例如“初始化状态->等待触发->测量状态->数据处理状态->运动控制状态->结果输出状态”。每个状态内部不要写太长代码,最好通过函数指针或者switch-case做跳转。这样可以方便地插入调试打印,也不会因为多任务切换导致资源崩溃。如果一个队伍能提前封装好串口打印、定时器延时、PWM输出这些底层函数,代码开发速度至少能提升一倍。
4. 联调阶段的常见问题与排查技巧
这是比赛中最煎熬的阶段,也是最能锻炼人的阶段。我在这里整理出一份高频问题速查表,每一个都是我或者我身边队伍真实遇到过的。
4.1 电源跌落与干扰问题
症状:系统运行过程中,LED灯闪烁、数码管亮度异常、舵机抖动、主控死机。排查时先用万用表测关键节点的电压,看是否有超过200mV的跌落。如果有,优先检查供电线径是否太细。很多杜邦线在通过500mA电流时会在接插处产生较大接触电阻,导致电压被拉低。一个可靠的替代方案是使用硅胶线或者PCB排针直接焊接。另外,在电机驱动部分要加一个47μF以上的电解电容和0.1μF的陶瓷电容,接在电机电源引脚附近,用来吸收启动瞬间的冲击电流。还要注意地线走向,不要把所有模块的地线串成一条长链,最好使用“星型接地”或者干脆在一点处汇合。
4.2 传感器数据跳变与滤波
症状:传感器读数在静止时波动大,或偶尔出现一个明显偏离正常值的数据。我每次遇到这种问题都会先检查线材连接是否稳固,尤其是I2C和SPI接口。如果线材接触不良,信号线上会出现毛刺,导致读到错误的字节。利用逻辑分析仪可以快速判断,但比赛现场不一定有,所以更简便的方法是看波形或者加100毫秒级别的滑动平均滤波。对于随机跳变,中值滤波往往比平均滤波更有效,它能把偶然的异常值直接去掉。例如连续取5个数据,排序后取中间那个,效果就很好。另外,传感器模块的电源也要单独加滤波电容,避免其他模块的数字信号串扰进模拟电源。
4.3 机械结构松动与装配误差
症状:执行机构动作到位了,但负载端的输出总是不准确,比如云台的指向偏移、小车的行驶轨迹偏离直线。机械结构的松动在电机高速运转时会表现得很明显,紧固件必须使用带弹垫的螺丝。
装配误差的排查方法是:先让执行机构运行到一个固定位置,用手轻轻碰触负载端,感受有没有旷量。如果存在旷量,要检查轴套、联轴器、齿轮间隙是不是过大。比赛时为了节约时间,可以使用免键联轴器,或者用热熔胶快速固定。但热熔胶有一个问题,就是温度会影响粘性,长时间运转发热后会产生轻微移位。所以重要连接件还是应该用螺丝固定,热熔胶只作为临时定位。
4.4 时间不够时的优先级排序
这可能是最实用的一条。如果距离封箱只剩4小时,核心功能还没完全跑通,你该怎么安排?我的排序是:
- 先保证通电不死机,所有模块不冒烟。
- 再保证有一个最基本的功能演示,哪怕只是手动操作能完成一步动作。
- 然后恢复自动流程中的主路径,避免在边缘条件上浪费时间。
- 最后才考虑性能优化和界面美化。
很多队在时间不够时会疯狂调试一个非核心指标,比如想让波形失真度更低,结果核心的自动跟踪失败。这就是主次颠倒。正确做法是守住基本盘,再考虑拿分点。比赛的核心是得分,不是完美主义。
5. 那些只有到场才能懂的避坑经验
这里说的不是技术细节,而是比赛现场的“生存法则”,往往比调代码更重要。
5.1 元器件备用与物料清单管理
赛前准备物料清单时,不要只列必用的,还要列出“易损件”、“关键件”、“备用件”。易损件包括电机驱动模块、舵机、传感器探头,这些容易因为过流或碰撞损坏;关键件包括主控芯片、显示屏,一旦损坏整个系统就瘫痪了;备用件则建议多准备一套核心板,以及至少两套杜邦线。在实际比赛时,我习惯把所有物料按类别放到透明的自封袋里,并在袋子上贴标上数量。每天早晚各清点一次,发现少了立刻确认是不是自己用了。丢螺丝、丢跳线帽这种小事,看似不起眼,一旦发生在深夜就会让人崩溃。
5.2 文档与照片留痕:评测时的保命索
很多队伍比赛期间不拍照,也不写文档,最后评测时只能临时口头说明。但评测老师有时会关注你的设计思路、创新点和稳定性验证过程。这时候,一份好的文档就非常加印象分。我建议每天抽20分钟拍照记录系统搭建的各个阶段,包括硬件布局、电路连接、软件状态机、以及每次联调的数据波形。封箱前生成一页纸说明,内容包括:系统框图、使用步骤、异常处理、以及你们测试时观察到的最佳数据。这不仅能帮助你们在评测时答辩,还能在作品出问题时快速回溯思路。
5.3 团队协作与体力管理
连续通宵的后果是第三天开始反应迟钝,焊接时手抖,代码一个简单的括号都能漏掉。我见过很多队伍明明可以按时完成,但因为熬夜导致效率急剧下降。合理的做法是每天晚上确保核心队员至少有4小时的连续睡眠,其他时间轮流值守。尤其是第四天和第五天的深夜,一定不要所有人一起熬。另外,分工要清晰,但不要完全割裂。至少要有两次全队一起坐到屏幕前,从头到尾把流程走一遍,让每一个人都知道其他模块的调用方式和接口。这能避免“某个人请假不归后整个队瘫痪”的尴尬。
6. 最后的经验:如果你已经决定要走上这条赛道
到这里,6天5夜的完整脉络已经梳理完了。我不打算强行收尾,只分享一个自己带队时反复强调的小习惯:每天早晨,三个人各自用五分钟写下今天必须完成的三件事,晚上检查是否做到。这个方法简单到可笑,但在高压下却能很好地防止团队陷入“瞎忙”的状态。很多队伍比赛结束时发现最浪费时间的事情不是技术难题,而是三个人同时改同一个代码文件,或者每个人都认为某个模块“应该是别人负责的”。所以,无论你们的技术水平如何,把分工和进度可视化,比多写几百行代码更重要。
电赛是一次浓缩的工程实践,推倒重来并不是失败,而是迭代的一部分。很多时候,你推翻的只是方案的表层,积累下来的却是对工况更深刻的理解。愿这篇攻略能帮你在6天5夜里少走一点弯路,把时间用在真正有价值的事情上。