电赛备赛:从买模块到亲手设计核心电路
电赛备赛群里最常见的对话不是“这个电路怎么设计”而是“这个模块哪家店靠谱”“买回来的板子怎么接线”。很多队伍直到比赛前一晚还在淘宝详情页之间来回对比比的是谁家评论区说“能用”的人多、谁家客服回消息快然后通宵把新到的模块焊上线。这类通宵有一个共同特征主要精力花在采购、接线、猜参数上而不是设计、测量、迭代上。说得直接一点如果整个备赛周期的高光时刻是“终于等到快递”那你不是在备赛你是在当淘宝二道贩子。电赛真正要训练的能力是在有限时间内把一个系统从需求拆解到电路设计、从代码实现到指标测试完整走一遍模块只是工具不应该是核心竞争力。本文不反对用成品模块也不反对买板子反对的是把“买模块”当成备赛的全部。下面从电赛最常出现的电源题、信号题和控制题三个方向入手讲清楚哪些环节值得自己设计、哪些模块可以放心用以及从零做一遍核心电路的具体路径。1. 先泼一盆冷水通宵调淘宝模块不算备赛先说结论电赛考的是限时工程设计能力。用一个具体场景来解释这件事。假设题目要求设计一个输入 12V、输出 5V/2A 的降压电源要求效率不低于 85%纹波不高于 50mV。淘宝上确实有大量现成的降压模块价格从几块到几十块不等很多模块标称“效率高达 95%”看起来直接买回来接上就能交。于是不少队伍的做法是买回来、上电、测一下输出电压发现是 5.02V就开始写报告了。问题在于评委打分时看的是你自己对电路的理解而不是模块的标称参数。如果你连 Buck 电路的电感怎么选、反馈电阻怎么算、纹波在哪个节点测都不清楚那么整个项目的技术核心就落在了卖家身上。比赛结束后你获得的不是“我能设计一个电源”而是“我会接到一个电源模块”这两者差别巨大。再看另一种队伍他们也买了模块但把模块当作参考基准。拿到模块后先测一遍它的空载电压、负载时电压跌落、纹波大小然后自己从原理图开始设计再用模块的实测数据作为对照看自己设计的电路在哪个负载点效率低、纹波大再针对性调整。最终提交的作品是“自己的电源”模块只起到了参考和验证作用。这就是二道贩子和工程师的区别。电赛的赛制决定了最终成绩取决于系统性能、设计报告和现场实测。系统的性能可以靠模块堆出来一部分但现场提问和报告答辩环节会直接暴露你对电路的理解程度。与其通宵研究哪家店铺的模块参数写得漂亮不如把同样的时间花在读懂数据手册、亲手焊接一块板、测出一组可信的数据上。2. 淘宝模块能用但先过三个判断标准模块不是不能用关键是怎么用。一个模块该不该买可以用下面三个问题来判断。第一个问题这个模块是系统的核心还是外围辅助外围辅助模块可以买。例如 MCU 最小系统板、USB 转串口、OLED 显示屏、按键矩阵这类通用模块它们承担的是系统里的“胶水”角色不是题目考核的核心指标自己画反而浪费时间。但电源主拓扑、信号调理链路、传感器前端、电机驱动桥这类直接决定题目得分点的部分必须自己设计。如果你连功率回路都买现成的那题目真正考的技术环节就被你绕过了。第二个问题能否拿到数据手册和原理图一个合格的模块卖家至少会在商品详情页或资料包里提供核心芯片的数据手册、模块原理图、PCB 尺寸图。如果卖家只给“接线教程”不给原理图说明这个模块本身就不适合二次开发。原因很简单没有原理图你不知道反馈电阻取值、不知道保护电路结构、不知道输入输出电容参数出了问题只能瞎猜。反过来如果模块提供了完整原理图你还可以基于它做改造这比自己从零画板要高效得多。第三个问题你能不能在 3 小时内完成模块验证买回来的模块不应该直接焊进系统。先花时间验证上电是否正常输入电压范围是否和标称一致输出是否稳定接口时序对不对最恶劣情况下会不会发热。如果 3 小时之内验证通过模块可以进入系统如果验证失败果断退货换方案不要试图在比赛期间赌一个来路不明的模块。你买的不只是硬件还应该买一份“可验证性”。下面这张表是我比较推荐的分类策略分类典型模块建议放心买MCU 最小系统、USB 转串口、显示屏、按键、蜂鸣器通用外围自己画不划算谨慎买传感器模块、DDS 波形模块、稳压模块看是否提供原理图和寄存器说明必须能改造必须自己做电源主回路、信号调理电路、滤波器、功率驱动直接决定核心指标买现成的等于放弃核心技术买模块的底线是核心功能必须能够从原理上解释清楚并且你具备替换它的能力。模块只是“半成品”不是“答案”。3. 电源题实战从“买现成降压模块”到“自己设计 Buck 电路”电赛电源题几乎年年出现不管是老题还是近几届的新题降压、升压、DC-AC 变换都是基础考点。拿降压电路来举例完整走一遍从零设计的流程你会发现它并没有想象中那么难。3.1 Buck 电路的基本原理Buck 电路的本质是一个高频开关降压变换器。它通过一个开关管MOSFET以一定频率和占空比反复导通、关断把输入电压斩波成矩形波再经过 LC 滤波得到平滑的直流输出。工作状态可以简化为两个阶段开关管导通时输入电压通过电感给负载供电同时电感储能开关管关断时电感电流通过续流二极管/MOSFET 的体二极管继续流动向负载释放能量。只要电感足够大、电容足够大输出电压就是矩形波的平均值。输出电压与输入电压的关系用占空比 D 表示连续导通模式下Vout Vin × D所以理论占空比D Vout / Vin例如输入 12V、输出 5V理论占空比约为 42%。实际设计中还要考虑开关管压降、二极管压降、电感直流电阻的影响占空比会略高于理论值。3.2 关键器件选型与参数计算自己设计 Buck 电路时最关键的四个器件是开关管、续流器件、电感和输出电容。开关管一般用 N 沟道 MOSFET需要考虑耐压和导通电阻。耐压按最大输入电压的 1.5 到 2 倍留余量导通电阻尽量选小的减小导通损耗。驱动方式根据控制器芯片而定可以是高边驱动也可以是低边驱动。电感是能量存储的核心。电感的纹波电流一般取最大负载电流的 20% 到 40%工程经验公式如下L (Vin - Vout) × D / (f × ΔI)其中 f 是开关频率ΔI 是允许的纹波电流。假设开关频率 150kHz最大负载电流 2AΔI 取 0.5A那么L (12 - 5) × 0.42 / (150000 × 0.5) ≈ 39.2 μH取标称值 47μH 即可。电感额定电流要大于最大负载电流的 1.2 到 1.5 倍否则会饱和一旦饱和电感失去储能作用开关管会因为过流损坏。输出电容主要负责降低输出电压纹波。输出纹波主要由电容的 ESR 和充放电电荷决定工程上可以先选用 100μF 到 220μF 的低 ESR 电解电容再配合一个 1μF 到 10μF 的陶瓷电容滤高频。实际纹波值要通过示波器测量而不是靠计算猜测。反馈电阻决定输出电压设定值。很多控制芯片的 FB 引脚参考电压是固定值比如 0.8V 或 1.25V具体以数据手册为准。输出分压电阻的计算公式是Vout Vref × (1 R1 / R2)例如 Vref 0.8V输出 5V如果取 R2 10kΩ那么 R1 (5 / 0.8 - 1) × 10kΩ 52.5kΩ取标称值 51kΩ 加上一个 5kΩ 左右的微调电阻即可。3.3 从模块到自研的迁移路径我的建议是第一次做电源题可以买一个现成的降压模块但不是为了交作业而是为了拆解。把它接到电子负载上记录不同输出电流下的输入电压、输入电流、输出电压、输出电流算出一条完整的效率曲线。然后自己去设计同规格的 Buck 电路再测一遍同样数据两条曲线对比找出差距。测量效率时建议直接把数据记录成 CSV 文件用 Python 快速处理成效率曲线和负载调整率曲线。下面是一个简单的数据处理脚本。# 文件路径power_efficiency.py import csv import sys import matplotlib.pyplot as plt def load_data(file_path): rows [] with open(file_path, r, encodingutf-8) as f: reader csv.DictReader(f) for row in reader: rows.append({ vin: float(row[vin]), iin: float(row[iin]), vout: float(row[vout]), iout: float(row[iout]), }) return rows def calc_efficiency(row): pin row[vin] * row[iin] pout row[vout] * row[iout] return pout / pin * 100.0 if pin 0 else 0.0 def main(): if len(sys.argv) 2: print(用法: python power_efficiency.py efficiency.csv) return rows load_data(sys.argv[1]) if not rows: print(没有读到数据) return loads [r[iout] for r in rows] effs [calc_efficiency(r) for r in rows] for i, (load, eff) in enumerate(zip(loads, effs)): print(f负载 {load:.2f}A, 效率 {eff:.2f}%) plt.plot(loads, effs, markero) plt.xlabel(输出电流 (A)) plt.ylabel(效率 (%)) plt.title(电源效率曲线) plt.grid(True) plt.savefig(efficiency.png) print(曲线已保存为 efficiency.png) if __name__ __main__: main()对应的测试数据文件示例vin,iin,vout,iout 12,0.45,5.02,1.00 12,0.22,5.00,0.50 12,0.10,5.01,0.20运行方式python power_efficiency.py efficiency.csv如果运行成功终端会打印三组负载下的效率数据同时生成效率曲线图片。这个脚本的价值在于形成了“测试数据可以复现”的闭环而不是口头说“效率大概 85% 吧”。电源题里最容易踩的坑有三个一是电感选小了大负载时电感饱和表现为输出电压跌落、效率骤降、开关管发烫二是反馈电阻用错输出电压偏离目标值三是布局不合理功率回路走线太长导致纹波很大。后面两个问题可以通过对照数据手册和示波器波形快速定位。4. 信号题实战从“会用 DDS 模块”到“看得懂频谱”信号题是电赛另一大常客。常见考查方向包括产生指定频率和幅度的正弦波/方波、对信号进行滤波、检测某一频率分量的幅度、识别信号调制方式等。很多队伍都会买 DDS 波形模块比如基于 AD9833 的模块直接输出正弦波、方波、三角波看起来很方便。但信号题真正的难点不是“能不能产生波形”而是“产生的波形到底好不好”以及“接收到的信号到底该怎么分析”。这需要你具备频谱思维。4.1 为什么必须学会看频谱一个理想的正弦波在频谱上应该只有一根谱线也就是在基波频率处有一个尖峰其他地方噪声底很低。但实际电路产生的“正弦波”由于 DAC 量化误差、运放非线性、地线耦合等原因会叠加谐波和噪声。只用示波器看时域波形往往觉得“差不多是正弦波”但在频谱上可能已经出现了明显的三次谐波、五次谐波。对于滤波器设计题目如果你不会看频谱你就无法判断滤波器到底把高频分量衰减到什么程度。你说“感觉滤掉了”评委问“高频衰减了多少 dB”你答不上来这就是丢分点。4.2 用 Python 分析信号频谱在调试信号电路时可以通过开发板 ADC 采集信号把采样数据传到电脑然后用 Python 做 FFT 分析。下面是一个完整的频谱分析脚本以方波为例你可以很直观地看到奇次谐波分量。# 文件路径signal_fft.py import numpy as np import matplotlib.pyplot as plt def analyze_waveform(fs, samples): samples np.asarray(samples, dtypefloat) n len(samples) win np.hanning(n) spectrum np.fft.rfft(samples * win) freqs np.fft.rfftfreq(n, d1.0 / fs) magnitude np.abs(spectrum) * 2.0 / n return freqs, magnitude def main(): fs 100_000 # 采样率 100kHz t np.arange(0, 0.01, 1 / fs) # 生成 1kHz 方波用来模拟信号源输出 signal np.sign(np.sin(2 * np.pi * 1000 * t)) freqs, mag analyze_waveform(fs, signal) plt.figure(figsize(10, 4)) plt.stem(freqs[:2000], mag[:2000], basefmt ) plt.xlabel(频率 (Hz)) plt.ylabel(幅度) plt.title(信号频谱) plt.grid(True) plt.savefig(spectrum.png) print(频谱分析完成结果已保存为 spectrum.png) if __name__ __main__: main()运行python signal_fft.py分析结果里你会看到 1kHz 位置的基波幅度最高然后 3kHz、5kHz、7kHz 处依次出现幅值递减的谱线。这就是方波的典型频谱特征。如果某条谐波的幅度异常高通常意味着输出电路的非线性比较严重或者运放带宽不足导致失真。把同样的方法用在滤波器调试中步骤是信号源输出带噪声的波形ADC 采集后做 FFT记录滤波器前和滤波器后的频谱对比某个频率点例如 10kHz的幅度变化算出衰减量。这才是判断滤波器效果的可靠方式。4.3 信号链路设计的三个建议第一尽量在 ADC 之前加抗混叠滤波器。采样率 100kHz 时理论上只能分析 50kHz 以内的频率超过采样率一半的信号会折叠到低频区造成频谱假象。这个时候你看到的“异常谱线”可能根本不存在于原始信号里而是混叠造成的。第二运放电路要注意带宽和压摆率。放大 100kHz 正弦波时如果运放的增益带宽积不足高频幅度会被压低频谱上基波幅度偏低谐波比例异常。这会让你的测量结果看起来很奇怪但问题不在前端传感器而在运放本身。第三地线处理决定噪声底。信号链路的模拟地和数字地要在一点连接避免数字开关噪声通过地线耦合进模拟信号。否则你测出的“噪声”根本不是信号本身的问题而是板级设计的问题。5. 嵌入式软件ADC 抗干扰采样与 PID 控制很多电子类题目最终拼的其实就是嵌入式软件。硬件电路把信号调理好MCU 要能稳定采集、实时计算、输出控制信号。这里最容易翻车的是 ADC 采样和闭环控制。5.1 用软件滤波降低 ADC 采样抖动ADC 采样值抖动可能是参考电压不稳、开关电源纹波耦合、或者信号本身带噪声。硬件上要加去耦电容和滤波电路软件上最常用的是“限幅滤波 去极值平均”。思路是连续采样多次去掉最大值和最小值再取平均这样能滤掉明显的毛刺。// 文件路径adc_filter.c // 依赖一个读取单次 ADC 原始值的接口 read_adc_single() #define SAMPLE_NUM 16 uint16_t adc_sample_filtered(void) { uint32_t sum 0; uint16_t samples[SAMPLE_NUM]; uint16_t max_val 0; uint16_t min_val 4095; int i; for (i 0; i SAMPLE_NUM; i) { samples[i] (uint16_t)read_adc_single(); if (samples[i] max_val) { max_val samples[i]; } if (samples[i] min_val) { min_val samples[i]; } } for (i 0; i SAMPLE_NUM; i) { sum samples[i]; } // 去掉一个最大值和一个最小值再取平均 sum - (max_val min_val); return (uint16_t)(sum / (SAMPLE_NUM - 2)); }read_adc_single 是一个示意接口实际工程里替换为你的 HAL 库或标准库读函数即可。这个函数适合信号变化速度远低于采样周期的场景比如温度采集、电源电压监测、慢变传感器信号。如果信号本身很快去极值平均会引入较大延迟这时候应该配合硬件滤波器。5.2 位置式 PID 的实现与调参电赛中的温度控制、电机转速控制、恒流源控制核心都是 PID。很多时候硬件电路没问题但 PID 参数调不好系统要么震荡要么响应太慢。这里给一个工程上够用的位置式 PID 实现。// 文件路径pid.c typedef struct { float kp; float ki; float kd; float integral; float previous_error; float output_limit; } PID_t; float pid_update(PID_t *pid, float target, float current) { float error target - current; pid-integral error; float derivative error - pid-previous_error; pid-previous_error error; float output pid-kp * error pid-ki * pid-integral pid-kd * derivative; if (output pid-output_limit) { output pid-output_limit; } else if (output -pid-output_limit) { output -pid-output_limit; } return output; }调参顺序建议先设 ki 和 kd 为 0只调 kp让系统不震荡、响应尽量快然后加一点 ki 消除稳态误差最后加 kd 抑制超调。每次只动一个参数避免两个参数同时变导致不知道是谁改善了系统。这里真正容易踩的坑是积分饱和。如果系统长时间无法到达目标值积分项会累积到一个很大的值一旦误差变小输出因为积分余量过大而出现大幅超调。解决方式就是给积分项加限幅或者用上一小节的输出限幅把它卡住。上面的示例已经加了输出限幅这是一个基础但很重要的保护。6. 硬件调试通用排错清单电赛现场调试时间极其紧张与其盲目换器件不如按表排查。下面是我总结的硬件问题排查顺序每一项都对应一个常见现象和解决路径。问题现象可能原因排查方式解决方案上电后无输出电源短路或开关管未导通万用表蜂鸣档测电源对地示波器看开关节点波形检查焊接短路确认驱动信号正常输出电压偏低且发烫电感饱和或反馈电阻接错测电感电流波形看是否有饱和尖峰换更大额定电流电感核对反馈分压电阻输出电压纹波大布局不合理或输出电容 ESR 过高示波器 AC 耦合测输出纹波输出加低 ESR 陶瓷电容缩短功率回路信号波形失真严重运放带宽不足或压摆率不足用频谱分析观察谐波比例换更高带宽运放降低增益ADC 读数跳变参考电压不稳或地线耦合示波器测 Vref 波形检查模拟地加去耦电容模拟地单点连接串口无输出MCU 时钟配置错误或波特率不匹配检查时钟初始化和串口配置校对时钟源和波特率分频系数按键/显示干扰数字信号边沿过冲示波器测信号边沿加串联电阻降低边沿速率不要跳过排查直接买新模块。大部分硬件问题都是“测量不出来”而不是“模块坏了”先确认故障现象的可复现性再动手改电路效率会高很多。7. 备赛时间和精力分配建议很多人备赛时间是有的但分配方式有问题。我建议按“两次模拟赛”的思路来组织备赛周期而不是从头到尾都在看资料、买模块。第一次模拟赛放在备赛中期目标是完整跑通一个系统的闭环。题目可以选一个中等难度的历年题硬件电路允许用模块替换程序允许先写功能不追求性能指标。这一次要解决的问题是电路能不能工作程序能不能跑起来测试流程能不能闭环。如果这一步都做不到直接冲决赛表现会很危险。第二次模拟赛放在正式比赛前一两周目标是优化性能指标。这时硬件已经定型程序框架已经稳定重点放在效率、纹波、响应时间、测量精度这些具体数字上。这一次要解决的问题是怎么把指标从“能用”做到“好看”。时间分配可以参考这个方向阶段主要任务时间占比建议基础准备掌握常用电路拓扑、MCU 外设、传感器接口20%单模块验证自己设计并验证电源、信号调理、驱动电路30%第一次模拟赛跑通一个完整系统熟悉流程20%指标优化针对效率、精度、稳定性做调整20%文档与演示整理报告、录像、现场演示脚本10%值得强调的是不要过早进入“决赛冲刺”状态。如果你现在连一块核心电路都设计不出来冲刺是没有意义的因为冲刺只是在更高的强度下重复错误。先把基础能力补齐再谈速度。另外如果团队准备参加研电赛或者做更深入的电源、信号方向课题备赛期间积累的测试方法和数据整理方式会直接迁移过去。尤其是“先测基准再改设计”的习惯比某个具体的电路更值钱。8. 总结别把通宵变成采购夜回到开头的问题。通宵本身没有错电赛就是一场限时高强度工程实践关键是通宵在做什么。如果你通宵是在分析电路、测量波形、调 PID、改布局那这个通宵很有价值如果你通宵是在淘宝评论区里找“这个模块能不能用”的答案那确实是在当二道贩子。模块可以用但要用对方法外围模块放心买核心电路必须自己做买回来的模块要有数据手册、要能验证、要能改造、要能替换。对 2026 电赛的备赛来说方向比速度重要设计能力比采购能力重要。这篇文章给出的路径——先看懂 Buck 电路并亲手测效率曲线再用 FFT 审视自己的信号质量最后把 ADC 滤波和 PID 调稳——值得你按顺序实践一遍。建议收藏备用从一道电源题或信号题开始亲手把原理变成实测数据。