1. 电赛备战全景拆解:从知识储备到赛题实战的完整路径
电赛这两个字,在电子类专业学生心里的分量,不亚于高考在高中生心里的位置。四年一次的国家级赛事,两年一次的省赛,加上各种邀请赛和专项赛,几乎贯穿了整个大学阶段。我带过三届校队,见过太多人从零基础一路杀到国一,也见过不少底子不错的同学因为方向跑偏最后颗粒无收。这篇文章不打算给你灌鸡汤,也不准备罗列一堆“必看资料”,而是把我这些年积累的备战思路、训练方法、赛题分析框架和单片机学习路径,按照一个可执行的逻辑重新梳理一遍。
先说清楚这篇文章适合谁看。如果你是大一刚接触单片机,连最小系统板都没焊过,那前面的知识储备部分和单片机学习路径会对你帮助最大;如果你已经能独立完成一些小项目,正在为下一次电赛做准备,那赛题分析和训练案例的部分可能更对你的胃口;如果你已经参加过一届,想冲击更高的奖项,那综合测评题的拆解思路和系统设计层面的经验分享,应该能给你一些新的启发。不同阶段的读者可以各取所需,但我的建议是通读一遍,因为电赛这个东西,最怕的就是“我以为我会了”。
电赛的本质是什么?很多人把它理解成“做一个小电子产品”,这个理解不能说错,但太浅了。电赛真正考察的是你在有限时间、有限资源、有限信息条件下的系统设计能力、工程实现能力和团队协作能力。题目给的是一个功能描述,你需要把它翻译成硬件架构、软件流程、算法方案,然后在四天三夜(现在是四天三夜,以前是三天两夜)内完成从选型、设计、搭建、调试到报告撰写的全流程。这中间任何一个环节掉链子,都可能让整个项目崩盘。所以备战电赛,本质上是在备战一种“在压力下做工程”的能力。
1.1 知识储备的四个层次
我把电赛需要的知识储备分成四个层次,从下往上依次是:元器件与电路基础、单片机与嵌入式开发、信号处理与控制算法、系统设计与工程管理。这四个层次不是孤立的,而是层层递进、相互支撑的。
最底层是元器件与电路基础。听起来很基础,但恰恰是很多同学翻车的地方。你知道电阻的精度对放大电路的影响有多大吗?你知道电容的ESR在开关电源里会带来什么问题吗?你知道运放的压摆率不够会导致什么后果吗?这些在课本上可能只是一笔带过,但在实际调试中,每一个都可能让你卡上半天。我的建议是,在备战初期,花两周时间把常用元器件(电阻、电容、电感、二极管、三极管、MOS管、运放、比较器、光耦、继电器等)的关键参数和典型应用电路过一遍,不用死记硬背,但要建立起“什么场景用什么器件”的直觉。
第二层是单片机与嵌入式开发。这是电赛的核心工具,几乎每道题都离不开单片机。从51到STM32,从MSP430到树莓派,不同平台有不同的适用场景。我的观点是:不要贪多,先把一个平台吃透。51单片机适合入门,资源少但足够理解底层原理;STM32适合做复杂项目,外设丰富、性能强劲;如果题目涉及信号处理或图像识别,可能还需要用到DSP或FPGA。但无论用哪个平台,核心能力都是一样的:GPIO控制、中断处理、定时器应用、串口通信、ADC/DAC、PWM输出、常用通信协议(I2C、SPI、UART)。这些能力必须练到“不用查手册就能写出来”的程度。
第三层是信号处理与控制算法。这一层是区分省奖和国奖的关键。很多队伍能把功能做出来,但指标上不去,问题往往出在这里。比如做电源题,PID参数调不好,输出电压就稳不住;做信号题,FFT算法不优化,频谱分析就做不准;做控制题,滤波算法没设计好,电机就抖得厉害。这一层的知识包括:傅里叶变换、数字滤波器设计、PID控制、状态机设计、常用数学运算的定点化实现等。听起来很吓人,但实际用到的并没有那么深,关键是要理解原理,知道什么时候该用什么方法。
第四层是系统设计与工程管理。这是最容易被忽视的一层,但恰恰是决定成败的一层。系统设计包括:需求分析、方案选型、模块划分、接口定义、冗余设计、功耗估算、散热考虑等。工程管理包括:时间规划、任务分配、版本控制、文档管理、风险预案等。这些东西在课本上学不到,只能在实践中积累。我的经验是,在训练阶段就要有意识地培养这些习惯,比如每次做项目都写设计文档,每次调试都记录问题和解决方案,每次团队合作都明确分工和接口。
1.2 训练案例的选择与使用
训练案例是备战电赛的重要素材,但怎么选、怎么用,很多人是迷糊的。我见过有同学把历年赛题从头到尾做了一遍,结果比赛时遇到新题还是懵;也见过有同学只做了几道典型题,但每道题都吃透了,比赛时反而游刃有余。差别在哪里?在于是否理解了题目背后的“套路”。
选训练案例,我建议遵循三个原则:一是覆盖主要题型,电赛的题目大致可以分为电源类、信号类、控制类、通信类、测量类、综合类等,每个类型至少做一道典型题;二是难度递进,从省赛题到国赛题,从单一功能到复合功能,逐步提升;三是贴近实战,尽量按照比赛的时间限制和资源限制来做,不要开着仿真软件慢慢磨。
用训练案例,关键在“复盘”。做完一道题,不是功能实现了就结束了,而是要问自己几个问题:方案选型有没有更好的选择?关键参数是怎么计算的?调试过程中遇到了哪些问题?这些问题是怎么解决的?如果换一个指标要求,方案需要怎么调整?只有把这些问题想清楚了,这道题才算真正吃透。
举个例子,2015年电赛综合测评题是一道经典题目,考察的是对运算放大器、滤波器、ADC/DAC等基础知识的综合运用。很多同学做这道题时,功能都实现了,但精度上不去。复盘时发现,问题出在运放的选型和滤波器的参数设计上。如果当时能多花半小时分析一下运放的失调电压和温漂对精度的影响,可能结果就完全不一样。这就是复盘的价值。
1.3 赛题分析的框架
赛题分析是备战电赛的核心能力之一。拿到一道题,怎么快速理解题意、提取关键信息、确定技术路线,这直接决定了你后面三天的工作效率。我总结了一个“四步分析法”,在实践中比较好用。
第一步是“读题三遍”。第一遍通读,了解题目要做什么;第二遍精读,标记出所有功能要求和指标要求;第三遍查读,确认没有遗漏任何细节。很多同学读题不仔细,做到一半才发现漏了一个功能,或者指标理解错了,这时候再改就来不及了。
第二步是“拆解功能”。把题目要求的功能拆解成独立的模块,每个模块明确输入输出和性能指标。比如一道“智能小车”的题目,可以拆解成循迹模块、测速模块、电机驱动模块、控制算法模块、人机交互模块等。拆解的目的是为了后续的方案选型和任务分配。
第三步是“评估资源”。这里的资源包括:时间资源(四天三夜怎么分配)、硬件资源(手头有哪些器件和模块)、软件资源(团队成员的技能储备)、测试资源(实验室的仪器设备)。评估资源的目的是为了确定技术路线的可行性,避免选了方案却做不出来。
第四步是“确定路线”。基于前面的分析,确定硬件架构和软件架构,明确关键器件的选型和关键算法的实现方式。这一步要尽量具体,比如“主控用STM32F407,电机驱动用DRV8833,测速用霍尔编码器,控制算法用增量式PID”,而不是笼统地说“用单片机控制电机”。
1.4 单片机学习的路径与避坑
单片机是电赛的核心工具,但很多同学在学习路径上走了弯路。我见过有同学一上来就啃STM32的参考手册,看了两个月还在纠结时钟树;也见过有同学一直在51上打转,做复杂项目时力不从心。我的建议是:分阶段、有目标、重实践。
第一阶段是入门。选一个简单的平台(比如51单片机),目标是理解单片机的基本工作原理:CPU怎么执行指令、GPIO怎么控制、中断怎么响应、定时器怎么计数、串口怎么收发。这个阶段不要追求做复杂项目,能把LED点亮、按键读入、数码管显示、串口通信这几个基础实验做明白就够了。推荐用STC系列的51单片机,资料多、工具简单、成本低。
第二阶段是进阶。换一个性能更强的平台(比如STM32),目标是掌握常用外设的配置和使用:ADC、DAC、PWM、I2C、SPI、DMA、RTC等。这个阶段可以做一些小项目,比如用STM32控制数码管、用STM32读取传感器数据、用STM32驱动电机等。推荐用STM32F103系列,资料丰富、社区活跃、性价比高。
第三阶段是实战。用单片机完成一个完整的系统,目标是掌握系统设计的方法:需求分析、方案选型、模块划分、接口定义、调试优化。这个阶段可以结合电赛的训练案例来做,比如做一道电源题、一道控制题、一道信号题。推荐用STM32F407系列,性能强劲、外设丰富、适合做复杂项目。
避坑方面,有几个常见的误区。一是“只看不练”,看了很多教程,但自己动手写代码时还是不会;二是“贪多嚼不烂”,同时学好几个平台,结果哪个都不精;三是“忽视底层”,只会调用库函数,不理解寄存器操作,遇到问题就抓瞎;四是“不重视调试”,代码写完就烧进去,出了问题不知道怎么排查。这些坑我都踩过,希望你能绕过去。
2. 核心细节解析:从51到STM32的关键技术点
2.1 51单片机串口通讯的定时器选择
51单片机的串口通讯是电赛中的基础技能,但很多同学在定时器的选择上犯迷糊。51单片机有两个定时器(T0和T1),串口通讯通常用T1来产生波特率,T0留作他用。为什么用T1而不是T0?因为51单片机的串口模块在硬件上就设计成用T1作为波特率发生器,这是芯片架构决定的,不是随便选的。
具体怎么配置?假设晶振频率是11.0592MHz,要产生9600bps的波特率,需要计算T1的初值。公式是:初值 = 256 - (晶振频率 / (12 × 32 × 波特率))。代入数值:256 - (11059200 / (12 × 32 × 9600)) = 256 - 3 = 253,即0xFD。配置时,T1工作在模式2(8位自动重装载),TH1和TL1都赋值为0xFD,然后启动T1,设置SCON寄存器使能串口接收,设置PCON寄存器的SMOD位(如果需要倍频),最后开中断。
这里有个细节:为什么用11.0592MHz而不是12MHz?因为11.0592MHz能让波特率更精确。12MHz晶振下,9600bps的初值计算出来不是整数,会有误差,导致通讯不稳定。11.0592MHz是专门为串口通讯设计的晶振频率,能整除常见的波特率。这个知识点在课本上可能不会强调,但在实际调试中非常重要。
2.2 STM32控制数码管的实现方式
STM32控制数码管,常见的有两种方式:直接驱动和专用芯片驱动。直接驱动就是用GPIO口直接控制数码管的段选和位选,优点是电路简单、成本低,缺点是占用GPIO多、刷新麻烦。专用芯片驱动就是用74HC595、MAX7219等芯片来扩展IO或直接驱动数码管,优点是占用GPIO少、刷新简单,缺点是电路复杂、成本高。
在电赛中,如果数码管数量不多(比如4位以内),建议用直接驱动;如果数量较多(比如8位以上),建议用专用芯片。直接驱动的关键是动态扫描:依次选通每一位,输出对应的段码,利用人眼视觉暂留效应实现稳定显示。扫描频率一般控制在50Hz以上,否则会闪烁。STM32的定时器可以很方便地产生扫描中断,在中断服务函数中切换位选和段码。
这里有个坑:STM32的GPIO驱动能力有限,直接驱动数码管时可能需要加限流电阻或驱动芯片。另外,如果数码管的共阴共阳搞反了,显示会完全乱掉。调试时先用万用表确认数码管的极性,再写代码。
2.3 单片机控制可控硅的电路设计
可控硅(SCR)在电赛中的典型应用是调光、调速、调温等。单片机控制可控硅的核心是过零检测和触发控制。过零检测电路用来检测交流电的过零点,单片机在过零点后延时一段时间再触发可控硅,通过调节延时时间来控制导通角,从而实现功率调节。
电路设计上,过零检测通常用光耦(比如PC817)加电阻分压来实现,触发控制通常用光耦(比如MOC3021)加可控硅来实现。这里的关键是隔离:强电和弱电必须隔离,否则会烧单片机。另外,可控硅的触发电流和维持电流要匹配,否则可能触发不了或关不断。
软件上,过零检测用外部中断,触发控制用定时器。中断服务函数中记录过零时刻,定时器在延时后触发可控硅。延时时间根据需要的功率计算:功率越大,延时越短;功率越小,延时越长。注意,延时时间不能超过半个工频周期(10ms@50Hz),否则会失控。
2.4 单片机存储到TF卡的实现
TF卡存储是电赛中常见的数据记录需求,比如记录传感器数据、记录运行日志等。单片机读写TF卡,通常用SPI接口,配合FatFs文件系统。硬件上,TF卡座接单片机的SPI引脚(CS、SCK、MISO、MOSI),注意电平匹配(TF卡是3.3V,51单片机是5V,需要电平转换)。
软件上,先移植FatFs文件系统,然后调用f_open、f_write、f_close等函数来创建文件和写入数据。如果要存成表格形式(比如CSV),可以在写入时用逗号分隔字段,用换行符分隔记录。注意,TF卡的写入速度有限,频繁写入会影响寿命,建议用缓冲机制:先在内存中缓存一批数据,再一次性写入。
这里有个坑:TF卡的初始化时序比较严格,SPI速度不能太高(建议先低速初始化,再切换到高速)。另外,TF卡的供电要稳定,否则会出现写入失败或文件系统损坏。调试时先用读卡器确认TF卡能在电脑上正常读写,再排查单片机端的问题。
3. 实操过程:从零搭建一个电赛训练项目
3.1 项目选题与需求分析
假设我们要做一个“基于单片机的智能小车测速系统”,这是电赛控制类的典型题目。需求分析如下:小车能沿指定路线行驶,能测量并显示行驶速度,能通过串口上传速度数据,能通过按键设置速度阈值并报警。
功能拆解:循迹模块(红外对管或摄像头)、测速模块(霍尔编码器或光电编码器)、电机驱动模块(L298N或DRV8833)、主控模块(STM32F103)、显示模块(OLED或数码管)、报警模块(蜂鸣器)、电源模块(锂电池加稳压)。
指标要求:测速范围0-2m/s,测速精度±5%,显示刷新率不低于10Hz,串口波特率9600bps,报警响应时间小于100ms。
3.2 硬件选型与电路设计
主控选STM32F103C8T6,原因:性能足够、资料丰富、成本低、社区活跃。电机驱动选DRV8833,原因:支持PWM调速、内置保护、体积小。测速选霍尔编码器,原因:输出数字信号、抗干扰强、精度满足要求。显示选0.96寸OLED,原因:I2C接口、占用IO少、显示清晰。报警选有源蜂鸣器,原因:驱动简单、声音响亮。
电路设计上,注意几点:一是电源隔离,电机电源和单片机电源分开,避免电机干扰单片机;二是信号滤波,编码器输出加RC滤波,消除抖动;三是电平匹配,如果编码器是5V输出,需要分压或电平转换到3.3V;四是保护电路,电机驱动加续流二极管,防止反电动势损坏芯片。
3.3 软件架构与关键代码
软件架构采用前后台系统:前台是中断服务函数,处理编码器脉冲计数和定时器计时;后台是主循环,处理速度计算、显示刷新、串口上传、按键扫描、报警判断。
关键代码包括:编码器接口(外部中断或定时器编码器模式)、速度计算(脉冲数除以时间)、PID控制(如果需要恒速控制)、OLED驱动(I2C通信)、串口通信(DMA或中断方式)。
速度计算的实现:假设编码器每转输出N个脉冲,轮子周长C,定时器周期T,则速度v = (脉冲数 / N) × C / T。注意单位换算,比如脉冲数用int,时间用ms,速度用m/s。
PID控制的实现:采用增量式PID,公式为Δu = Kp×(e(k)-e(k-1)) + Ki×e(k) + Kd×(e(k)-2e(k-1)+e(k-2))。参数整定先用经验法(Kp先大后小,Ki先小后大,Kd先零后调),再用试凑法微调。
3.4 调试过程与问题排查
调试分三步:先调硬件,再调软件,最后联调。硬件调试用万用表和示波器,确认电源正常、信号正常、连接正常。软件调试用串口打印和LED指示,确认程序流程正常、变量值正常。联调用实际场景测试,确认功能正常、指标达标。
常见问题:编码器计数不准(可能是滤波不够或中断优先级冲突)、电机干扰导致单片机复位(可能是电源隔离不够或地线处理不当)、OLED显示闪烁(可能是刷新率太低或I2C速度太快)、串口通信丢包(可能是波特率误差或缓冲区溢出)。
排查技巧:用示波器看波形,用逻辑分析仪看时序,用串口助手看数据,用万用表看电压。先定位问题在硬件还是软件,再逐步缩小范围。不要一上来就改代码,先确认硬件没问题。
4. 常见问题与排查技巧实录
4.1 电赛综合测评题的解题思路
综合测评题是电赛国赛的“附加赛”,通常在一道大题之后,考察的是对基础知识的综合运用能力。以2015年综合测评题为例,题目要求设计一个“信号发生器”,能输出正弦波、方波、三角波,频率可调,幅度可调。这道题考察的是运放、滤波器、ADC/DAC、单片机等知识的综合运用。
解题思路:先用DAC产生波形数据,再用运放放大和滤波,最后用单片机控制频率和幅度。关键点是波形的生成算法(查表法或计算法)、滤波器的设计(低通滤波器截止频率要高于最高输出频率)、幅度的控制(用数字电位器或PWM滤波)。
常见问题:波形失真(可能是DAC分辨率不够或滤波器设计不当)、频率不准(可能是定时器配置错误或晶振误差)、幅度不稳(可能是运放失调或电源波动)。排查时先用示波器看波形,再用频率计测频率,最后用万用表测幅度。
4.2 单片机中断程序的常见坑
中断是单片机的核心机制,但也是容易出问题的地方。常见坑包括:中断优先级配置错误(导致高优先级中断被低优先级阻塞)、中断服务函数执行时间过长(导致主循环卡顿)、中断标志位未清除(导致反复进入中断)、中断嵌套未处理(导致堆栈溢出)。
排查技巧:用示波器看中断引脚波形,用调试器看中断标志位,用串口打印看中断次数。配置时注意:中断服务函数要短小精悍,耗时操作放到主循环;中断标志位要在进入中断后立即清除;中断嵌套要谨慎使用,必要时用临界区保护。
4.3 电源类题目的设计要点
电源类题目是电赛的常客,也是很多队伍的“噩梦”。设计要点包括:拓扑选择(Buck、Boost、Buck-Boost、反激等)、器件选型(MOS管、电感、电容、二极管)、控制策略(电压模式、电流模式、PID参数)、保护电路(过流、过压、过热)。
常见问题:效率低(可能是开关损耗大或导通损耗大)、纹波大(可能是滤波电容不够或布局不当)、动态响应慢(可能是PID参数不合适或带宽不够)。排查时先用示波器看开关波形,再用电子负载测效率,最后用示波器看纹波。
4.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 单片机复位 | 电源波动、干扰 | 示波器看电源波形 | 加滤波电容、隔离电源 |
| 串口丢包 | 波特率误差、缓冲区溢出 | 示波器看波形、串口助手看数据 | 调整晶振、增大缓冲区 |
| 电机抖动 | PID参数不当、编码器干扰 | 示波器看编码器波形 | 调整PID、加滤波 |
| 显示闪烁 | 刷新率低、I2C速度慢 | 示波器看刷新信号 | 提高刷新率、优化I2C |
| 波形失真 | DAC分辨率低、滤波器不当 | 示波器看波形 | 提高分辨率、重新设计滤波器 |
| 可控硅不触发 | 触发电流不够、过零检测错误 | 示波器看触发波形 | 调整触发电阻、检查过零电路 |
4.5 独家避坑技巧
第一个技巧:比赛前一周,把所有用到的模块都单独测试一遍,确认能正常工作。不要等到比赛时才发现某个模块是坏的。
第二个技巧:比赛时,先做“能跑通”的版本,再做“指标好”的版本。不要一上来就追求完美,先把功能实现了,再逐步优化。
第三个技巧:调试时,用“二分法”定位问题。比如串口不通,先确认硬件连接,再确认波特率配置,再确认发送代码,再确认接收代码,逐步缩小范围。
第四个技巧:团队分工要明确,但接口要清晰。硬件、软件、文档三个人,各自负责自己的部分,但接口定义要提前商量好,避免联调时扯皮。
第五个技巧:比赛期间,每天留出半小时做“复盘”。回顾当天的工作,确认进度是否正常,调整第二天的计划。不要闷头做,要抬头看路。
5. 2026电赛备赛的几点个人体会
2026年电赛的题目方向,从近几年的趋势来看,可能会更偏向“智能化”和“系统化”。比如2025年D题和E题都涉及了传感器融合和无线通信,2024年H题涉及了图像识别和自动控制。这意味着,单纯靠单片机加几个模块就能拿奖的时代已经过去了,现在需要的是更完整的系统设计能力和更扎实的算法功底。
我的建议是,在备战2026年电赛时,除了传统的单片机、电路、信号处理知识外,还要关注几个方向:一是嵌入式AI,比如在单片机上跑简单的神经网络;二是无线通信,比如LoRa、蓝牙、WiFi的组网应用;三是传感器融合,比如IMU、视觉、激光雷达的数据融合;四是低功耗设计,比如电池供电的长时间运行。
另外,2026年电赛的H题和E题,从热词来看,可能涉及“智能门禁”、“密码锁”、“交通灯”等应用场景。这些题目的共同特点是:功能明确、指标具体、实现路径多样。备赛时,可以针对这些场景做一些预研,比如用STM32做一个智能门禁系统,用51单片机做一个密码锁,用32单片机做一个交通灯控制。这些项目虽然简单,但能帮你熟悉完整的开发流程。
最后再分享一个小技巧:比赛时,报告撰写不要留到最后一天。每天花半小时记录设计思路、调试过程、测试数据,最后整理成报告。这样既能保证报告质量,又能避免最后一天熬夜赶工。我见过太多队伍因为报告写得太差,明明功能做出来了,却只拿了省奖。报告是评委了解你工作的唯一窗口,一定要重视。
这个内容后续还可以这样扩展:如果你对电源类题目感兴趣,可以深入研究LLC谐振变换器和数字电源控制;如果你对信号类题目感兴趣,可以研究软件无线电和FPGA信号处理;如果你对控制类题目感兴趣,可以研究无刷电机FOC控制和SLAM算法。电赛只是一个起点,真正的技术积累在赛后。