电赛备赛指南:从电源设计到信号处理,避开囤货误区 啊对对对你电赛通宵就为了当淘宝二道贩子每年到了电赛备赛季总能在实验室看到这样一批人桌上堆满了快递纸箱购物车里躺着十几个型号相近的传感器模块手机里全是跟卖家讨价还价的聊天记录。问他在准备哪个题他头也不抬地说“还在选型”。等到比赛真正开始才发现买回来的模块一半用不上另一半没吃透怎么用最后通宵到天亮其实一直在查数据手册和看教程。不是说要抵制买模块而是很多同学把“备赛”理解成了“囤货”。电子设计竞赛的核心从来不是谁手上的器件多而是谁能在有限时间内设计出一套稳定的系统。今天这篇文章就围绕电赛备赛中最常遇到的两大方向——信号题和电源题展开从环境搭建、模块设计到代码实现和排错方法整理一份可以直接上手的完整路径。文章里会给出可复制的代码示例和设计思路也顺便聊聊那些被大家忽视的备赛习惯。1. 电赛到底在比什么方向拆解1.1 电赛题目的常见分类全国大学生电子设计竞赛虽然每年题目都在变但万变不离其宗主要考查的方向可以归纳为下面几类题目方向典型任务考查重点电源类降压、升压、恒流、恒压、充电管理功率电路设计、效率、纹波抑制信号源类产生指定频率和幅度的波形DDS、运放、频率稳定性高频类射频收发、混频、放大阻抗匹配、高频布局、抗干扰放大器类小信号放大、滤波器设计运放选型、噪声控制、带宽仪器仪表类电压、电流、频率、阻抗测量ADC精度、校准、显示交互控制类小车、云台、倒立摆、风力摆传感器、执行器、控制算法数据采集与处理类波形采集、FFT分析、参数计算高速ADC、DSP/FPGA、算法从热度来看信号题和电源题几乎是每年的“常青树”。你去看“2025电赛a题仿真”“24年电赛h题”“26电赛g题”这些被反复搜索的内容很多都围绕信号测量、波形处理、电源变换展开。原因也很简单这两类题目既有硬件深度又有软件空间能有效拉开参赛队伍之间的差距。1.2 比的是设计能力不是“捡垃圾能力”有一个很常见的误区看到高分队伍用了某某模块就以为自己也买一块就能拿奖。实际上同一块传感器、同一个电源芯片在不同人的板子上表现可以天差地别。真正的差距体现在是否清楚模块内部的工作原理是否知道外围电路该怎么搭遇到信号失真、纹波过大、程序跑飞时能不能快速定位问题能不能在系统层面做性能和稳定性的取舍。所以本文后续的内容会刻意把“原理”和“实现”放在一起讲。先搞懂为什么再照着做这样即使题目换了你也能迁移思路。2. 备赛环境与平台准备2.1 硬件平台选型电赛常用的主控芯片大致有这几类STM32系列资料最多、生态成熟适合大部分控制、测量和信号处理任务推荐从 F103 入门有更高性能需求再考虑 F407 或 H7MSP430系列低功耗场景有优势适合电池供电的便携设备GD32、AT32等国产替代引脚和编程模型兼容 STM32价格有优势但要注意外设库差异FPGA适合高速信号采集、并行处理和复杂时序逻辑但开发周期长不适合零基础临阵磨枪。如果你现在还在纠结选哪块板子建议直接选你手上已有的、资料最全的那块。电赛比的不是主控芯片的品牌而是你对外设的熟悉程度。我见过用一块最基础的 STM32F103 把信号题做到接近满分的人也见过带着高性能开发板却连定时器都配不明白的队伍。2.2 软件与仿真工具备赛过程中下面几类工具基本是逃不掉的嵌入式开发Keil MDK 或 STM32CubeIDE。如果你用 CubeMX 生成工程建议花一点时间读一读生成的代码而不是全程“自动生成→不管”否则遇到问题很难定位。原理图与PCB立创EDA 对新手非常友好上手门槛低而且元件库丰富适合快速打样。如果队伍里有画板经验的人也可以选择 Altium Designer。电路仿真Multisim 适合模拟电路和电源电路仿真LTspice 适合电源芯片的环路仿真Proteus 则偏嵌入式系统仿真。很多人搜“2025电赛a题仿真”其实核心就是想用仿真先验证方案再动手做实物这个思路是对的但要注意仿真通过不代表实物一定正常工作寄生参数和接触不良是仿真里看不到的。仪器仪表至少要有数字示波器、信号发生器、直流稳压电源、万用表。有条件可以加电子负载和逻辑分析仪。需要注意不同版本的 Keil、CubeMX、HAL库 之间接口可能略有差异网上很多教程基于旧版本。遇到不一致时不要盲目复制代码先看自己工程里实际生成的头文件和函数名。2.3 软件工程与文档习惯电赛是三天四夜的高强度开发代码会写得非常快但如果不注意工程结构后期调试会非常痛苦。建议从一开始就建立这样的目录划分project/ ├── Core/ // 主函数、中断、系统时钟配置 ├── Hardware/ // 外设驱动如 adc.c、pwm.c、uart.c ├── Module/ // 功能模块如 signal_measure.c、pid.c ├── App/ // 业务逻辑如 main_task.c └── Doc/ // 数据手册、引脚分配表、设计笔记哪怕只是给自己看也要保持函数单一职责。不要在主函数里堆一千行代码否则改一个功能可能引发三个bug。3. 电源题核心——电源模块设计3.1 先分清 LDO 与 DC-DC电源题最基础也是最容易被扣分的地方就是对电源拓扑的理解。很多同学一上来就用 LDO低压差线性稳压器结果输入 12V、输出 5V 时芯片烫得能煎鸡蛋转换效率不到 50%。原因很简单LDO 靠调整管消耗掉多余的能量压差越大损耗越大。LDO 适合压差小、负载电流小、对噪声敏感的场合优点是纹波小、外围简单。DC-DC 开关电源则适合压差大、负载电流大的场合效率高但纹波和开关噪声也更明显。对比项LDODC-DCBuck效率低尤其大压差时高常见 85%~95%纹波小较大需要滤波电容电磁干扰小较大需要合理布局外围元件少多有电感、二极管、反馈网络适用场景模拟电路供电、低噪声场合功率级、电池降压、大电流场合3.2 Buck 降压电路的参数估算电源题常考的基本拓扑就是 Buck 降压电路。设计时先明确指标输入电压范围、输出电压、最大输出电流、纹波要求、开关频率。然后按下面的顺序一步步算。假设设计目标输入 12V输出 5V最大电流 2A开关频率 100kHz纹波电压控制在 20mV 以内。第一步计算占空比 D[ D \approx \frac{V_{out}}{V_{in}} \frac{5}{12} \approx 0.42 ]实际工程中还需要考虑开关管和续流二极管的压降但估算阶段可以先按这个值。第二步计算电感量 L。电感纹波电流一般取最大输出电流的 20%~40%这里取 30%即纹波电流约为 0.6A[ L \frac{(V_{in} - V_{out}) \times D}{f_{sw} \times \Delta I} ]代入数值[ L \frac{(12 - 5) \times 0.42}{100 \times 10^3 \times 0.6} \approx 49\mu H ]实际可以选 47μH 或 56μH 的电感。电感选小一点纹波电流会变大选大一点动态响应会变慢。第三步确定输出电容[ C_{out} \geq \frac{\Delta I}{8 \times f_{sw} \times \Delta V_{out}} ]代入数值[ C_{out} \geq \frac{0.6}{8 \times 100 \times 10^3 \times 0.02} \approx 37.5\mu F ]实际可以使用两个 22μF 的陶瓷电容并联。陶瓷电容的 ESR 低对抑制输出纹波很有帮助。3.3 电源 PCB 布局的关键细节很多同学画板时把电源部分当成普通模块来布局结果焊上去功能不正常或者一加载就振荡。电源部分的 layout 有几个非常关键的原则功率回路面积要小。输入电容、开关管、续流二极管、电感、输出电容组成的回路应该尽量紧凑否则会产生较大的寄生电感和电磁干扰。反馈采样点要远离功率电感。反馈电阻的上端应该直接从输出电容处采样不要接到电感的输出引脚附近否则容易引入开关噪声。地线要单点连接。模拟小信号的地和大电流的功率地要分开走然后在某个单点汇合避免功率电流在信号地上产生压降。调试电源模块时最好先空载上电测量输出电压是否正常再逐步加载。如果负载一上去电压就掉优先检查电感是否饱和、输入电容是否足够、反馈网络是否接对。4. 信号题核心——信号产生与采集4.1 常见的信号题任务信号题通常围绕“产生信号”和“测量信号”展开。产生侧要求输出指定频率、幅度、波形的信号测量侧要求测量频率、周期、幅度、相位差等参数并显示或上传。综合起来需要掌握三个能力波形产生DDS 模块、PWM 滤波、DAC 输出信号调理放大、衰减、滤波、整形参数测量ADC 采样、有效值计算、频率测量。4.2 用 STM32 ADC 采集信号并计算有效值采集交流信号时不能只看瞬时值通常需要计算有效值。下面是一段基于 STM32 HAL 库的 ADC 采样核心代码思路是连续采样 N 个点计算均方根。// 文件路径Core/Src/adc_rms.c // 说明基于 STM32CubeMX 生成的 HAL 库工程仅展示核心逻辑 #include adc.h #include math.h #define SAMPLE_NUM 128 uint16_t adc_buf[SAMPLE_NUM]; float get_adc_rms(ADC_HandleTypeDef *hadc) { uint32_t sum_squares 0; float rms 0.0f; for (int i 0; i SAMPLE_NUM; i) { HAL_ADC_Start(hadc); if (HAL_ADC_PollForConversion(hadc, 100) HAL_OK) { adc_buf[i] HAL_ADC_GetValue(hadc); } HAL_ADC_Stop(hadc); } for (int i 0; i SAMPLE_NUM; i) { sum_squares (uint32_t)adc_buf[i] * adc_buf[i]; } rms sqrt(sum_squares / (float)SAMPLE_NUM); return rms; }这段代码的基本思想是对信号进行等间隔采样然后求所有采样值的平方和的平均值再开方。注意几个工程细节采样前要保证 ADC 的参考电压准确如果参考电压不稳计算结果会有偏差实际信号可能有直流偏置计算前需要减去直流分量或者用交流耦合输入如果信号频率较高需要提高采样率否则会因采样点数不足产生误差。4.3 用定时器输入捕获测量频率测量信号的频率最直接的方式是用定时器的输入捕获功能。下面是核心中断回调代码思路是捕获两个相邻上升沿之间的计数值用定时器时钟频率除以计数值得到频率。// 文件路径Core/Src/freq_measure.c // 说明核心片段需根据实际定时器时钟频率调整 volatile uint32_t freq_value 0; static uint32_t capture_buf[2] {0, 0}; static uint8_t capture_index 0; void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if (htim-Channel HAL_TIM_ACTIVE_CHANNEL_1) { capture_buf[capture_index] HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); capture_index (capture_index 1) % 2; if (capture_index 0) { // 两次捕获之间的差值即一个周期对应的计数值 uint32_t period capture_buf[1] - capture_buf[0]; if (period 0) { freq_value SystemCoreClock / period; } } } }使用输入捕获时要注意几点定时器的时钟频率越高测得的频率分辨率越高如果被测信号频率较低计数值可能很大需要用 32 位定时器或做溢出处理输入捕获前需要确认信号幅度是否满足 MCU 的 IO 电平要求一般需要经过整形电路或比较器不能直接接高压或负压信号。4.4 信号调理放大与滤波MCU 的 ADC 一般只能采集 0~3.3V 或 0~5V 的信号而传感器输出往往是毫伏级小信号或者带有较强噪声。这时就需要信号调理电路。常见做法同相放大器把毫伏级信号放大到 ADC 的合适输入范围电压跟随器做阻抗隔离避免 ADC 输入阻抗影响前级电路有源滤波器用运放搭建低通或带通滤波器滤除带外噪声比较器整形把正弦波或任意波形转成方波方便测量频率。设计时记住一个原则先确认信号幅度和频率范围再选运放。运放的增益带宽积要足够否则高频信号会被衰减。比如处理 1MHz 信号用增益带宽积只有 1MHz 的运放放大倍数最多只能做到 1 倍完全没有放大效果。5. 控制题的基本框架5.1 传感器 执行器 控制算法控制类题目一般跑不脱这个闭环传感器感知状态控制器计算控制量执行器改变被控对象。常见传感器有编码器、陀螺仪、加速度计、超声波、红外常见执行器有直流电机、步进电机、舵机、风扇、电磁铁。选型时不能只盯着精度参数还要看接口是否容易驱动、数据更新率是否够用。比如陀螺仪模块I2C 接口方便但速率可能受限SPI 接口更适合高速数据读取。比赛时如果发现传感器数据延迟严重先别急着换传感器优先检查通信速率和主控的处理效率。5.2 位置式 PID 实现控制算法里最常用的是 PID。一段可复用的位置式 PID 代码如下// 文件路径App/pid.c typedef struct { float kp; float ki; float kd; float integral; float last_error; float output_limit; float integral_limit; } pid_ctrl_t; void pid_init(pid_ctrl_t *pid, float kp, float ki, float kd) { pid-kp kp; pid-ki ki; pid-kd kd; pid-integral 0.0f; pid-last_error 0.0f; } float pid_update(pid_ctrl_t *pid, float target, float current) { float error target - current; // 比例项 float p_out pid-kp * error; // 积分项带限幅 pid-integral error; if (pid-integral pid-integral_limit) { pid-integral pid-integral_limit; } else if (pid-integral -pid-integral_limit) { pid-integral -pid-integral_limit; } float i_out pid-ki * pid-integral; // 微分项 float d_out pid-kd * (error - pid-last_error); pid-last_error error; // 总输出带输出限幅 float output p_out i_out d_out; if (output pid-output_limit) { output pid-output_limit; } else if (output -pid-output_limit) { output -pid-output_limit; } return output; }这里最容易被忽略的是积分限幅。如果没有积分限幅系统长时间无法到达目标时积分项会一直累积导致输出饱和出现明显的超调甚至振荡。所以在实际工程里积分限幅和输出限幅缺一不可。调参顺序建议是先把 I 和 D 设成 0只调 P让系统产生等幅振荡记下临界增益然后加入少量 I消除稳态误差最后加入 D改善超调。不要一开始就三个参数一起调否则很难定位问题。6. 系统联调与高频问题排查电赛调试阶段最怕的不是功能没实现而是“偶尔能工作、偶尔不能工作”的幽灵 bug。这种问题通常隐藏得很深需要按照一定顺序排查。6.1 常见问题排查表问题现象常见原因解决思路上电无反应电源短路、反接、电压不足先量电源输出再摸芯片温度确认供电正常程序跑飞数组越界、堆栈溢出检查数组下标、中断优先级配置使用看门狗ADC 数据跳动大参考电压不稳、采样时间不足、地线干扰改善电源滤波延长采样时间合理布地电源带载后电压跌落电感饱和、输入电容不足、反馈采样错误换更大饱和电流电感增加输入电容检查反馈走线电机一转就复位电机启动电流过大电源跌落电机单独供电加母线电容主控和功率部分隔离通信数据乱码波特率不匹配、电平不兼容确认双方参数检查共地问题信号频率测不准比较器阈值漂移、边沿抖动增加迟滞比较器或改用施密特触发器整形6.2 排查顺序建议遇到问题不建议一开始就怀疑算法和芯片先按下面的优先级排查电源电压和电流是否正常时钟是否起振晶振是否焊稳单片机能不能跑起来用 LED 翻转程序验证外设寄存器配置是否生效用调试器观察寄存器值传感器和通信是否正常用串口打印中间变量最后再怀疑算法模型和逻辑问题。这套顺序最大的好处是能快速排除“最基础但最致命”的硬件问题。很多同学花了一晚上找软件 bug最后发现是排针虚焊、杜邦线接触不良这种低级错误在比赛场上非常常见。6.3 硬件保护与安全比赛过程中电源题和电机控制题都会遇到大电流场景。上电前要养成习惯用万用表测量输入端的短路情况确认没有明显短路再上电第一次上电建议用限流模式比如先把电源限流设为 0.5A正常后再逐步提高电源电路加防反接二极管电机驱动电路加续流二极管和母线电容涉及高压或大功率测试时务必遵守实验室安全规范不要单手操作不要带电焊接。7. 备赛节奏与工程建议7.1 别把时间花在“淘宝选型”回到文章开头的问题为什么说“电赛通宵就为了当淘宝二道贩子”因为很多人的备赛时间是这样花掉的今天看到别人用 A 模块下单买明天看到 B 方案更好又下单买后天觉得 C 芯片参数更强继续下单。真正用来读数据手册、搭电路、写代码、做测试的时间少得可怜。正确的备赛节奏应该是先读懂题目要求明确系统输入输出指标根据指标选一个最熟悉的方案不要频繁更换把系统拆成若干子模块逐个验证子模块验证通过后再做系统集成最后留出至少半天做整体测试和问题总结。选型阶段控制在半天到一天内完成就够了。模块买到后立刻画一个最小测试例程验证功能不要放在盒子里吃灰。7.2 代码与文档习惯电赛的代码量大、改动频繁建议每个队伍都建立版本管理。哪怕不会用 Git也可以在每个关键节点手动复制一份带日期和功能的备份比如main_0625_1800_pid_ok.rar。这样做的好处是改崩了随时能回到上一个稳定版本。代码里多加注释尤其是那些“为什么这么写”的注释。比赛时的灵感和坑点如果不记录下来第二天可能就忘了。推荐在代码文件头部维护一个修改记录哪怕只是简单的几行文字也能在联调时节省大量时间。7.3 团队分工建议电赛是三人三天的团队项目合理的分工很重要。常见的分工模式是硬件负责人负责原理图、PCB、电源模块设计和硬件调试软件负责人负责主控程序设计、外设驱动、算法实现文档与测试负责人负责记录测试数据、整理设计报告、协助调试。当然分工不是完全隔离关键节点一定要一起讨论。比如硬件和软件的接口定义要对齐PWM 引脚、ADC 通道、通信协议都要提前统一否则做到一半发现硬件占用和软件冲突会非常被动。8. 总结与下一步学习这篇文章从电赛的题目类型出发重点拆解了信号题和电源题的核心设计与实现思路。你至少应该掌握下面几个关键点电赛比拼的是系统设计能力不要陷入“囤模块、比价格”的误区电源设计要理解 LDO 和 DC-DC 的差异掌握 Buck 电路的基本参数估算和布局要点信号题要能完成波形产生、信号调理、ADC 采集和频率测量的闭环代码示例可以直接移植到 STM32 HAL 库工程中控制题要掌握传感器、执行器和 PID 算法的配合特别注意积分限幅和调参顺序遇到故障时按电源、时钟、外设、算法、逻辑的顺序排查不要一上来就怀疑算法。如果你现在的状态还是“一堆模块在手心里没底”不如先挑一个小题目比如做一个“简易信号发生器”或者“5V转3.3V电源板”从头到尾走一遍设计、打样、调试的完整流程。等这个闭环打通了再面对真正的竞赛题目时心里就有底很多。下一步的学习方向建议根据你自己的薄弱环节来选择控制题不够熟练就去补自动控制原理和 PID 整定方法信号题吃力就沉下心补信号与系统的基础知识对电源感兴趣可以深入研究同步 Buck、环路补偿和效率优化。如果这篇文章对你有帮助建议收藏备用尤其是在比赛前快速过一遍排查思路。也欢迎在评论区分享你备赛过程中遇到的最离奇的问题说不定你的案例就是别人决赛场上的“避坑指南”。

相关新闻

最新新闻

嵌入式状态机与事件驱动设计:从超级大循环到表驱动架构

嵌入式状态机与事件驱动设计:从超级大循环到表驱动架构

在嵌入式开发中,业务一复杂,代码就开始失控。这个场景你一定见过:一个while(1)超级大循环,里面堆满if (flag)判断;一个按键要应对不同运行状态;一个通信协议要处理各种帧类型。代码越加越长,越改…

2026/9/2 23:09:31
10分钟装好yuzu:一篇能照着跑通的Switch模拟器上手手册

10分钟装好yuzu:一篇能照着跑通的Switch模拟器上手手册

10分钟装好yuzu:一篇能照着跑通的Switch模拟器上手手册 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu模拟器是一款开源的任天堂Switch模拟器,用C编写,同时维护Windows、Li…

2026/9/2 23:09:31
WSL2 网络配置实操指南:NAT、桥接、镜像 3 种模式怎么配,5 分钟改对

WSL2 网络配置实操指南:NAT、桥接、镜像 3 种模式怎么配,5 分钟改对

WSL2 网络配置实操指南:NAT、桥接、镜像 3 种模式怎么配,5 分钟改对 【免费下载链接】WSL Windows Subsystem for Linux 项目地址: https://gitcode.com/GitHub_Trending/ws/WSL 你在 WSL 里起了个服务,Windows 浏览器却打不开对应端口…

2026/9/2 23:09:31
3步跑通tinygrad深度学习框架:从0到可用的完整指南

3步跑通tinygrad深度学习框架:从0到可用的完整指南

3步跑通tinygrad深度学习框架:从0到可用的完整指南 【免费下载链接】tinygrad You like pytorch? You like micrograd? You love tinygrad! ❤️ 项目地址: https://gitcode.com/GitHub_Trending/tiny/tinygrad tinygrad 是一个自包含的深度学习框架&…

2026/9/2 23:09:31
横滨赛止步16强:别急着说落后,先学会复盘比赛

横滨赛止步16强:别急着说落后,先学会复盘比赛

横滨赛中国男乒止步16强,这个标题在热搜上挂住后,很多人的反应是“离谱”,然后是“我们是不是真的落后一个版本了”。我的第一反应不太一样:先不看结论,先看这个结果是在什么条件下出现的。单场淘汰制里,一…

2026/9/2 23:09:31
技术博客选题指南:聚焦软件开发与人工智能,避开非技术内容

技术博客选题指南:聚焦软件开发与人工智能,避开非技术内容

该标题涉及竞技体育新闻,不属于 CSDN 技术博客的内容范畴。CSDN 平台的核心受众是软件开发、人工智能、架构设计、运维、数据库等技术开发者,发布非技术类赛事报道会破坏平台定位,也无法满足技术文章的规范要求。如果要写技术文章&#xff0c…

2026/9/2 23:04:30