
简介这份PDF面向参加全国大学生电子设计竞赛的本科选手及指导教师聚焦2021年H题「用电器分析识别装置」的完整赛题原文帮助读者准确掌握命题意图与评分导向。压缩包内仅含1个PDF文件约315KB完整收录了任务说明、基本要求、发挥部分、装置框图、说明及评分标准等核心内容便于打印研读或对照备赛。赛题要求装置具备学习与分析识别两种模式覆盖5mA至10.0A电流范围可识别不少于7种电器并对小电流电器、自制电器及大电流电器提出明确指标同时涉及电流互感器、电参量测量、微控制器编程与无线传输等知识点。目前已有1894人学习下载适合用于梳理设计思路、拆解功能指标与规划测试方案是备赛阶段对照官方要求查漏补缺的实用参考资料。1. 从一道“电流差小于 1mA”的赛题说起2021 年电子设计竞赛本科组 H 题要求做一个用电器分析识别装置从电源线电流的电参量里判断当前有哪些电器在用电。真正卡住人的不是“测电流”而是题面里那句“1 号电器与 2 号电器电流差小于 1mA但相位不同且含谐波”。这意味着单看有效值必然翻车必须把相位、谐波、功率因数这些特征一起拉进来做多维判别。这套方案面向正在做电子设计竞赛、课程设计或毕业设计的同学也适合需要交付一套“非侵入式负载识别”原型的工程师从需求、选型、硬件、算法一路写到验收答辩结构可以直接照搬。2. 需求拆解与技术选型为什么不能只测有效值先把题面翻译成工程指标再谈选型。很多队伍一上来就买现成的电流传感器模块接上 ADC 读有效值结果在“电流相同、特性不同”这一项上直接失分。需求拆解做不细后面所有设计都是空中楼阁。2.1 把赛题要求翻译成可量化的设计指标题面给的是场景描述工程上要落成数字。我一般会先列一张指标对照表把“不低于 7 种”“响应不大于 2s”“识别模式工作电流不大于 15mA”这些硬约束固定下来再倒推采样率和算法复杂度。指标项赛题要求设计取值说明电流测量范围5mA ~ 10.0A3mA ~ 12A留 1.2 倍余量覆盖 8A 以上大功率电器可识别电器数≥ 7 种8 种1~5 号为小电流7 号大于 8A小电流电器数≥ 5 种≤50mA5 种含 1 件自制 RC 二极管电器识别响应时间≤ 2s≤ 1.5s留出显示刷新与滤波收敛时间学习时间≤ 1 分钟/种≤ 20s/种多次采样取统计量识别模式自身功耗≤ 15mA≤ 12mA主控低功耗 无线模块间歇工作特征维度自定有效值、相位、THD、功率因数、谐波幅值至少 5 维才能区分同电流电器这张表的价值在于答辩时评委问“你为什么选这个采样率”你能直接指到表里的响应时间和谐波次数而不是说“凭经验”。指标定完采样率的下限也就出来了——要算到 9 次谐波工频 50Hz 下至少需要 50×9×2 ≈ 900Hz 的采样率实际取 2kHz 以上才稳。2.2 传感与采样链路工频电流互感器加同步采样题面框图里明确画了工频电流互感器A1 测装置自身电流A2 测在用电器电流。互感器输出是交流小信号必须做偏置抬升到 ADC 量程中点否则负半周直接被削掉相位信息就废了。这一段的电路设计是很多队伍的失分点。// 采样与特征提取主循环伪代码运行在主控 MCU 上 #define FS 2000 // 采样率 2kHz覆盖 9 次谐波 #define N_CYCLE 40 // 每周期 40 点50Hz 下正好 20ms #define N_FFT 128 // FFT 点数取 2 的幂便于计算 adc_config(FS, ADC_12BIT, ADC_TRIGGER_TIMER); // 定时器触发保证等间隔 for (int k 0; k N_FFT; k) { buf[k] adc_read(CH_CURRENT) - ADC_OFFSET; // 去直流偏置 } // 加汉宁窗抑制频谱泄漏再算有效值与谐波 apply_hann_window(buf, N_FFT); rms calc_rms(buf, N_FFT); // 电流有效值 fft(buf, N_FFT); // 频域变换 thd calc_thd(buf, N_FFT, 50.0, FS); // 总谐波畸变率 phase calc_phase(buf, N_FFT, 50.0, FS); // 基波相位相对电压过零 pf calc_power_factor(rms, phase, thd); // 功率因数估算这段代码的关键不在 FFT 本身而在三个参数FS2000保证 9 次谐波不混叠N_CYCLE40让整周期采样减少泄漏ADC_OFFSET必须实测标定不同板子的偏置电压差几十毫伏相位就会漂。互感器二次侧通常并一个采样电阻阻值决定量程——5mA 到 10A 跨 2000 倍单档位很难兼顾通常的做法是加一级可编程增益放大器PGA小电流时放大 20 倍大电流时切回 1 倍切换由主控根据粗测有效值判断。提示偏置电压一定要在整机上电后实测标定不要用理论值。我见过用 1.65V 理论值直接写死的板子实际偏置 1.58V相位误差直接到 8 度同电流电器全部分不开。2.3 主控与无线方案低功耗与实时性的平衡识别模式自身电流不大于 15mA 是个硬指标直接排除了“主控全速跑 WiFi 常连”的方案。选型上我倾向两条线主控用带 FPU 的低功耗 Cortex-M4跑 FFT 和判别算法够用休眠电流可以压到微安级无线用低功耗蓝牙或间歇上报的无线模块只在识别结果变化时发一帧而不是持续推流。这里有个反直觉的点算力不是越高越好。高主频意味着高功耗而 15mA 的预算里主控占 8mA、传感器调理占 3mA、无线占 4mA 就基本到顶了。所以算法要做减法——FFT 只算到 9 次谐波判别用查表加阈值而不是上神经网络。学习模式可以放宽功耗因为学习时装置可以接调试电源识别模式才受 15mA 约束。3. 总体架构与识别算法五维特征怎么把同电流电器分开架构定下来算法才有落点。这套装置本质是一个“特征采集—特征库—在线判别”的闭环学习模式写库识别模式查库。难点全在特征设计和判别逻辑上。3.1 三层架构与模块职责划分整机分三层感知层互感器、调理、ADC、处理层主控、特征提取、判别、交互层显示、无线、按键。感知层负责把 5mA~10A 的宽动态电流变成可采样的电压处理层是核心学习模式和识别模式共用同一套特征提取代码只是输出目的地不同交互层负责模式切换和结果呈现。模块划分上我一般拆成五个独立模块电源模块给主控和调理供电注意与测量回路隔离、信号调理模块偏置、增益、滤波、采样与计算模块、特征库存储模块EEPROM 或 Flash掉电不丢、人机交互模块。模块之间用明确的接口约定比如调理模块输出固定 0~3.3V 摆幅处理层不关心前端增益怎么切的。这样调试时可以分段验证先示波器看调理输出再串口打印特征值最后联调判别。3.2 特征参量筛选有效值之外必须补的四维题面评分标准里“特征参量分析与筛选”占 7 分是设计报告的重头。只报有效值的队伍这一项基本拿不到分。我的做法是选五维特征每一维都对应一类“骗过有效值”的电器电流有效值 RMS区分功率档位是最粗的一维。基波相位相对电压过零点区分阻性、容性、感性负载。1 号自制电器和 2 号电器电流相同但相位不同靠的就是这一维。总谐波畸变率 THD区分含谐波的电器如节能灯、带整流桥的充电器和纯正弦负载。各次谐波幅值3、5、7、9 次THD 相同但谐波分布不同的电器靠谐波指纹分开。功率因数 PF综合相位与谐波的派生量用于快速粗筛。这五维不是拍脑袋定的而是对着题面电器清单反推的LED 灯和灯带电流小但谐波丰富USB 充电器带负载后是典型整流负载电风扇是感性热水壶、电磁炉接近纯阻性但功率差一个量级。五维组合后任意两类电器的特征向量欧氏距离都能拉开。3.3 学习模式与识别模式的判别逻辑学习模式的流程是清空特征库 → 只接入单件电器 → 连续采 10 个整周期 → 每维特征取中位数抗单次干扰→ 连同电器编号写入存储。一种电器 20 秒内完成满足 1 分钟要求。识别模式则是对总线电流做同样的特征提取然后与库中每个电器的特征向量比对。# 识别判别核心逻辑运行在上位机或主控的简化版 import numpy as np def identify(feat_now, feature_db, thresh0.18): feat_now: 当前五维特征向量; feature_db: {编号: 特征向量} scores {} for dev_id, ref in feature_db.items(): # 各维归一化后算加权欧氏距离相位与谐波权重更高 w np.array([0.15, 0.30, 0.20, 0.25, 0.10]) diff (feat_now - ref) / (np.abs(ref) 1e-6) scores[dev_id] np.sqrt(np.sum(w * diff ** 2)) # 距离小于阈值判为在用支持多电器同时在线 active [k for k, v in scores.items() if v thresh] return active, scores判别逻辑有两个设计点值得说。第一是加权相位和谐波维度的权重给到 0.3 和 0.25因为这两维才是区分同电流电器的关键有效值权重压到 0.15。第二是多电器叠加总线电流是各电器电流的矢量和严格来说不能简单按单件特征比对。工程上的折中做法是先按大功率电器7 号粗分离再在小电流残差里匹配 1~5 号这也是题面发挥部分“大小电流共用时识别小电流电器”的考点。阈值 0.18 是实测调出来的太小漏判、太大误判通常要在学习完成后用增减电器的实测数据回归一遍。注意多电器同时在线时相位会因矢量叠加发生偏移单件特征库直接比对会误判。稳妥做法是记录“组合特征”作为补充库或在判别前先做电流分离。4. 硬件实现与自制电器把 1 号电器的谐波做出来硬件这一章决定基本要求能不能过。尤其是 1 号自制电器题面要求“用电阻、电容和二极管自制电流与 2 号相同但相位不同且含谐波”这是整道题最容易被忽略又最容易翻车的点。4.1 信号调理电路与量程切换调理链路是互感器 → 采样电阻 → 可编程增益放大 → 偏置抬升 → 抗混叠低通 → ADC。采样电阻取 100Ω 时10A 对应二次侧电压要核算互感器变比通常选 1000:1 的互感器10A 一次侧对应二次侧 10mA乘 100Ω 得 1V量程合适但 5mA 一次侧只有 5μA二次侧 5μV必须靠 PGA 放大。量程切换逻辑用粗测有效值做判据// 量程自动切换在主循环中周期调用 float rms_coarse get_rms_fast(); // 快速粗测不做 FFT if (rms_coarse 0.05f) { // 小于 50mA小电流档 set_pga_gain(20); } else if (rms_coarse 1.0f) { // 50mA ~ 1A中档 set_pga_gain(4); } else { // 大于 1A大电流档 set_pga_gain(1); }切换要加迟滞否则在阈值附近会来回跳特征值抖动。我一般把切换阈值设成 0.05/0.06、1.0/1.1 两组回差 20%。抗混叠低通用二阶巴特沃斯截止频率设 1kHz 左右配合 2kHz 采样率9 次谐波450Hz能完整通过高频噪声被压掉。4.2 自制 1 号电器的电路设计与参数核算1 号电器的目标是电流与 2 号相同差小于 1mA但相位不同且含谐波。纯电阻做不到相位差纯电容电流超前 90 度但没谐波所以必须用“电阻 电容 二极管”组合出非正弦、非纯阻性的电流波形。典型做法是电阻与二极管串联后再与电容并联二极管造成半波整流产生谐波电容引入容性相位。参数核算的思路是先定 2 号电器的电流比如 30mA再让 1 号电器的基波有效值也落在 30mA 附近。电容容抗按 220V/50Hz 算C I/(2πfU)30mA 对应约 0.43μF实际取标称值后实测微调。二极管选 1N4007 这类耐压足够的整流管串联限流电阻防止浪涌。搭好后用功率分析仪或带谐波功能的万用表实测确认基波电流与 2 号差在 1mA 内、THD 明显大于 2 号、相位差大于 10 度三个条件同时满足才算合格。提示自制电器的电流差要实测不能只按理论算。电容容差、二极管压降都会让实际电流偏离留一个可调电阻做微调最省事。4.3 低功耗设计与无线显示识别模式 15mA 的约束落到电路上就是三件事主控降频休眠、无线间歇上报、显示背光可关。主控在两次判别之间进 STOP 模式靠定时器唤醒平均电流能压到 5mA 以下无线模块只在识别结果变化时发一帧平时断电本地显示用段码屏或小 OLED比彩色屏省一个量级。如果选无线传到手机显示注意上报帧要带电器编号和关键特征值方便答辩时现场演示“实时指示”。5. 避坑与排查五个最容易翻车的点这一章是我带项目时踩过的坑汇总每条都按“现象—原因—解决”写照着排查能省大量时间。5.1 相位漂移导致同电流电器分不开现象1 号和 2 号电器单独学习时特征正常识别时互相误判。原因偏置电压未标定或采样非整周期相位计算基准漂移。解决上电后先采一段已知纯阻负载如热水壶做相位基准校准采样严格用定时器触发FFT 前加窗并保证整周期截断。5.2 小电流档噪声淹没 5mA 信号现象5mA 电器学习时特征值每次都不一样。原因PGA 放大 20 倍的同时把调理电路噪声也放大了且采样电阻热噪声在微伏级信号下不可忽略。解决小电流档加一级低通滤波采样取 10 个周期中位数学习时要求环境无其他电器在线。5.3 多电器叠加时判别全乱现象单独识别都准两三个电器一起开就误判。原因总线电流是矢量和相位和 THD 不再等于单件特征。解决先按大电流电器匹配并扣除其基波分量再在残差上匹配小电流电器或建立常见组合的补充特征库。5.4 学习数据掉电丢失现象演示中途断电重启特征库空了。原因特征存在 RAM 或未做掉电保护。解决特征写入 EEPROM/Flash 并加校验字上电先校验再加载写入时关中断防止半写。5.5 响应时间超 2s现象增减电器后显示要三四秒才更新。原因FFT 点数过多或判别循环里做了阻塞延时。解决FFT 点数压到 128判别用滑动窗口显示刷新与计算解耦实测响应能压到 1.5s 内。6. 验收与答辩用一张测试记录表把分数拿稳验收不是最后一天才做的事而是从搭完第一版电路就开始记录。我的习惯是建一张测试记录表每改一版硬件或算法就填一次答辩时这张表就是最有力的证据。表里至少包含测试项、测试条件、实测值、是否达标、备注。比如“1 号与 2 号电流差”这一项记录实测 0.6mA“识别响应时间”记录三次增减电器的实测值 1.2s/1.4s/1.3s“识别模式工作电流”用串联毫安表实测 11.8mA。评委看的是数据完整性不是你说“基本满足”。答辩演示有个技巧提前把电器增减顺序设计成“先小后大、再大小混合”每一步都停 2 秒让装置刷新同时口头报出当前应识别的编号让评委对照。遇到发挥部分“电流相同其他特性不同”的演示主动把 1 号和 2 号同时插上展示装置能分别指示这比单独演示更有说服力。设计报告里的特征参量分析章节把五维特征的选取理由和实测区分度写成表格比大段文字管用。还有一点血泪经验答辩前一定做一次“冷启动全流程”——断电、清库、重新学习全部电器、再识别确认掉电存储和清库功能都正常。我见过学习数据没写进 Flash、现场断电后特征库为空的队伍前面做得再好也救不回来。从那以后我每次交付前都强制走一遍冷启动加随机增减的回归测试把测试记录表填满才敢上台。希望这套结构和排查清单能帮到你照着搭、照着测基本要求和发挥部分都能稳稳落地。本文还有配套的精品资源点击获取