
2019年那届电赛我们选了C题线路负载及故障检测装置湖南理工学院电子创新实验室的小队从拿到题目到封箱整整熬了四天三夜。这个题乍看是硬件题做进去才发现是半个信号处理题——你要在20米长的同轴电缆上同时干两件事识别末端的负载是电阻、电容、电感还是它们的串并联组合还要能定位线路中间的开路和短路故障点。我们最终用扫频阻抗测量脉冲反射定位这套组合方案完成了任务。这篇文章把我们的完整方案、关键电路、算法逻辑、实测数据和调试踩过的坑全部拆开想选C题的队伍可以直接参考。1. 2019年C题复盘赛题表象背后的隐形考点1.1 题目到底让你做什么C题的任务可以拆成两个层次。第一层是负载检测组委会会在线路末端接各种负载你的装置要能判断负载类型并测量出具体参数值。第二层是故障检测线路中间某个位置可能被人为设置了开路或短路你要测出故障点离你有多远。线缆是有讲究的用的是特性阻抗50Ω左右的同轴电缆总长度在20米上下盘绕在电缆盘上。末端通过一个转接面板接负载中间故障用拨码开关模拟。检测装置只能接在始端也就是说你要隔着20米电缆透视末端和中间的状态。表面看这题考的是阻抗测量和幅度相位检测实际考验的是你对传输线理论的理解程度。我后面详细说。1.2 评分表的权重博弈电赛的评分是分档的基本要求和发挥部分各占权重C题的基本要求集中在能测纯电阻、纯电容、纯电感负载的类型和参数能测开路短路故障和距离。发挥部分则升级到RC、RL串联并联组合负载同时对精度要求更苛刻。我们的策略很简单保基本冲发挥。先把三段核心功能做扎实——负载识别、参数计算、故障定位再考虑把复合负载识别做得更聪明。四天时间看起来很充裕实际上绝大部分队伍会倒在基本功能调不稳定这个坎上。1.3 传输线效应才是真正的隐形考点绝大多数第一次做这个题的人会本能地把电缆当成一段普通导线认为测什么都是万用表直连的思路。但20米电缆在几百kHz到几MHz的扫频信号下已经不能当理想导线看了。记住一个判断标准当线长l和信号波长λ可以相比时比如l大于λ/10传输线效应就开始起作用。20米同轴电缆信号传播速度大约0.66倍光速也就是约2×10^8 m/s。那么频率1MHz时波长是200米20米正好是λ/10传输线效应开始明显频率5MHz时波长40米20米已经是λ/2输入阻抗会被末端负载变换得面目全非。这意味着你测到的输入端阻抗并不等于末端负载的阻抗。如果不会处理这个效应扫频范围稍微拉高一点数据就完全没法看。很多队伍最后卡在测不准上根源就在这。2. 方案选型博弈为什么我们选扫频阻抗法而不是纯TDR2.1 三种可落地方案的横向对比我们赛前调研时锁定了三个方向时域反射法TDR、扫频阻抗法、交流电桥法。TDR的思路最直观往线里打一个陡峭的脉冲看反射波什么时候回来。开路反射同极性短路反射反极性测出时间差就能算出距离。这个方案对故障定位非常拿手精度可以做到十几厘米但用它来测复合负载的元件参数就比较吃力——你需要从反射波的形状里反推出整个负载网络这在数学上复杂且对采样率要求很高。交流电桥法是精密测量的经典路子测阻抗幅值和相位都很准但要实现自动扫频需要电机带动可变电容电阻或者用电子模拟电桥硬件复杂度偏高四天时间做出来风险大。扫频阻抗法介于两者之间DDS扫频信号源加上高精度幅相检测测出输入端阻抗随频率变化的曲线再从曲线上反推负载模型。硬件可控性强算法层面又能完整覆盖从纯元件到复合负载的识别需求。我们最终选了它再配一个独立的TDR通道专门负责故障定位。2.2 扫频阻抗法的数学可行性我们得先确认一件事输入端阻抗和末端负载之间到底有多强的对应关系在传输线理论里长度为l的线缆终端接负载ZL时输入阻抗Zin是Zin Zo × (ZL jZo·tan(βl)) / (Zo jZL·tan(βl))其中β2πf/v是相位常数Zo是特性阻抗v是传播速度。当频率很低满足tan(βl)≈βl且Zo·βl远小于各元件阻抗时上式会退化成Zin≈ZL。这就是短线近似。所以只要把扫频上限控制在线长小于λ/10的范围内我们测到的输入阻抗就直接等于负载阻抗计算变得非常简单。我们的方案核心思路由此确定中低频段比如10kHz~200kHz做负载识别和参数计算这段频率下线缆效应可以忽略或可以用已知线长做数学补偿高频段则交给TDR通道做故障定位同一套硬件两个工作模式。2.3 最终系统架构系统由以下模块组成主控STM32F407负责SPI配置DDS、控制ADC采样、跑识别算法、驱动显示信号源DDSAD9834产生扫频正弦波经低通滤波后送入驱动级前端调理运放驱动电路将正弦信号加到采样电阻和传输线同时把电流信号转成电压信号幅相检测用两路ADC同步采样电压波形和电流波形软件DFT计算幅值比和相位差TDR通道定时器产生纳秒级上升沿的阶跃脉冲高速比较器捕捉反射边沿定时器精确定时人机交互OLED屏显示负载类型和参数编码开关切换模式这套架构的妙处在于所有高端功能都用软件实现硬件链路从DDS到ADC只有一条调试起来不容易乱。3. 硬件设计从DDS扫频源到阻抗测量前端3.1 DDS扫频源和驱动级我们用的AD9834是ADI的DDS芯片主频75MHzSPI接口配置能输出0~37.5MHz的正弦波频率分辨率0.1Hz完全够用。STM32F407的SPI速率跑到10MHz以上配置一次频率寄存器只要几十微秒扫频速度不是问题。DDS输出是电流型幅度约600mV直接进运放驱动级。驱动级我们选的是AD8066双运放带宽300MHz压摆率180V/μs驱动20米同轴电缆没问题。电路结构是典型的同相放大加电流扩展输出经一个隔离电阻接到传输线。这里有个至关重要的细节隔离电阻的取值。它既是信号源和传输线之间的阻抗匹配桥也是电流采样的分流器。我们取50Ω和同轴电缆特性阻抗一致这样可以最大限度减小源端的二次反射干扰。3.2 电压电流获取方式与采样链路为了算输入阻抗需要同时知道传输线始端的电压和流入线的电流。电压好办直接从驱动输出端分压取样电流用一个巧妙的方式取——在信号源和传输线之间串一个精密采样电阻电阻两端电压差除以阻值就是电流。但直接用运放做减法电路取差分信号在高频段会引入共模问题和相移。我们改用变压器耦合或者叫电流探头的简化版采样电阻两端的电压经过一个宽带音频变压器次级输出送到ADC通道自然完成了隔离和取差。实测下来在10kHz~1MHz范围内相位一致性比有源减法电路稳得多。ADC用的是STM32F407内置的12位ADC两个通道同时采样采样率设定在2.4MSPS。如果直接采正弦波再算幅值相位2.4MSPS采样率下信号频率最高只能到200kHz左右每个周期还能采12个点DFT精度还算可以。想要更高频段的阻抗数据就得降低频率上限或换外部高速ADC我们综合考量后选择把负载识别的频段压在10kHz~200kHz。3.3 软件DFT的相位解算思路很多队伍用AD8302这种专用幅相检测芯片它的优势是省运算但致命问题是只能测0°~180°的相位差无法区分容性的-90°和感性的90°。这意味着纯电容和纯电感在它眼里可能表现一样除非另加移相参考。我们用双通道ADC加软件DFT从根本上回避了这个坑。对每个频点取出电压序列u[k]和电流序列i[k]分别对参考正弦和余弦做相关运算得到各自的实部和虚部然后算出幅值和相位。由于电流、电压来自同一次采样它们之间的相位差可以直接算出正负号天然保留。实际代码里用了Goertzel算法对单一频率点做DFT的效率很高计算量很小。扫频50个频点每点采256个样本STM32F407跑完只需要几十毫秒显示刷新完全跟得上。3.4 TDR故障定位通道故障定位我们单独设计了TDR通道没有复用阻抗测量的模拟链路。定时器产生一个上升沿约5ns的阶跃脉冲通过高速三极管射极跟随器直接注入传输线。反射回来的信号经过一个高速比较器TLV3501传播延迟约4.5ns阈值设为入射脉冲的30%左右比较器翻转沿送入STM32的输入捕获定时器。时间差乘以传播速度除以2就是故障距离。发射时刻用同一个定时器打时间戳捕获到反射沿后做差。这个方案硬件很简单关键是阈值设置、比较器输入保护和PCB布局这几个细节我在调试部分细讲。4. 软件算法负载识别和故障定位的核心逻辑4.1 扫频数据的组织与系统校准扫频流程是这样的从10kHz开始到200kHz结束按对数间隔取50个频点。每个频点做一次DFT保存幅度比A(f)和相位差φ(f)。原始数据必须先校准否则高频端会被运放带宽、变压器相移、线缆长度这些系统固有因素污染。我们做了两级校准。第一级是零负载校准在开路状态扫一遍记录幅度相位基准——虽然开路时反射依然存在但这组数据可以作为参考底噪。第二级是标准负载校准接一个高精度1kΩ金属膜电阻扫一遍把实测曲线和理论曲线的偏差做成误差表后续所有测量都查表修正。这套校准做完50个频点的重复性误差基本能控制在1%以内。没做校准之前高频段相位误差能漂到15°可见这一步绝对不能省。4.2 负载类型判别特征量就是相位轨迹识别负载类型核心看两个特征相位随频率变化的趋势以及阻抗幅值随频率变化的趋势。我们用低频段10kHz~30kHz和高频段100kHz~200kHz的特征做判别负载类型低频相位高频相位幅值趋势纯电阻R0°0°恒定纯电容C-90°-90°随f下降纯电感L90°90°随f上升RC串联趋近-90°趋近0°高频稳定RL串联趋近0°趋近90°高频上升RC并联趋近0°趋近-90°高频下降RL并联趋近90°趋近0°低频上升高频稳定判别逻辑用决策树实现先用低频相位把纯容性和纯感性类分开再用高频相位在电阻类和混合类之间区分最后结合幅值曲线做二次确认。为了防止噪声导致的误判我们对相位值做了滑动平均并且要求两个频点的相位连续满足趋势条件才切换状态。4.3 元件参数的拟合计算识别出类型后参数反推是最重要的一步。我们针对每种模型用最小二乘拟合。纯电阻最简单对10kHz~80kHz范围内幅值取平均再扣除线缆串联电阻的固定偏差就是R值。纯电容根据1/(2πfC)的关系把每个频点算出的C值取平均剔除离群点。实测精度在5%以内。纯电感用LX/(2πf)同样多频点平均。需要注意低频端电感感抗太小信噪比差我们划定只取30kHz以上数据参与平均。复合负载用线性拟合。以RC串联为例|Z(f)|² R² 1/(4π²f²C²)令y|Z|²x1/f²这是一个y对x的线性关系斜率k1/(4π²C²)截距bR²。我们用50个频点的数据做一次最小二乘线性回归从斜率和截距同时解出C和R精度比单点计算高一个数量级。RL串联的拟合公式是|Z|² R² (2πfL)²同样把y|Z|²对xf²做线性回归。RC并联和RL并联则需要先倒成导纳的形式再拟合原理完全一样。整套拟合代码不复杂只要注意浮点运算在STM32上别溢出就行。4.4 故障定位的时间测量与速度标定TDR测距的公式是dv·Δt/2。v是关键参数靠理论值算不准必须现场标定。我们处理方式很简单先用一根已知长度的电缆比如10米做一次短路故障测试测出Δt_known反推v2×10/Δt_known。标定完的v值存在Flash里后面所有测距都用它。由于比较器翻转沿用定时器捕获时间分辨率取决于定时器时钟。STM32F407定时器主频168MHz时间分辨约6ns对应距离分辨率约0.6米。如果想进一步提升精度在高速模式下可以用定时器级联或外部计数但基本要求下0.6米足够了。判开路和短路看反射极性反射沿与入射沿同向是开路Γ1反向是短路Γ-1。我们同时在软件里记录捕获沿的方向一次触发就能区分故障类型。5. 实测数据与调试过程中的翻车现场5.1 负载测量实测结果大赛评测环境下我们的实测数据大致如下负载类型标准值实测值相对误差纯电阻100Ω102.3Ω2.3%纯电阻1kΩ1014Ω1.4%纯电容1nF1.05nF5.0%纯电容10nF9.62nF3.8%纯电感100μH104.6μH4.6%纯电感500μH516μH3.2%RC串联R100Ω C1μFR103Ω C1.04μF3%/4%RL并联R1kΩ L100μHR985Ω L96.8μH1.5%/3.2%纯电阻精度最高因为它的阻抗平坦、信噪比好。电容的误差主要来自并联在负载上的线缆分布电容20米同轴电缆自身约有1nF左右的电容测小电容时这个本底影响就会放大。我们最后的补救办法是测完负载后在软件里减掉标定好的线缆本底电容误差从10%左右降到了5%以内。5.2 故障定位实测结果故障类型实际距离米实测距离米绝对误差开路55.20.2开路1515.10.1短路33.20.2短路1211.70.3整体误差在0.3米以内满足基本要求。值得注意的是故障点越远反射信号衰减越大比较器触发抖动也会变大。15米处开路反射幅值已经只有入射的60%左右还在阈值范围内但信噪比明显下降。5.3 调试中的几个大坑第一个坑是采样电阻的寄生参数。我们一开始用普通直插电阻做电流采样到100kHz以上阻值就开始漂相位也歪得离谱。换用低寄生电感的贴片电阻并把两端走线做成开尔文连接电流走线和电压取样走线分开高频段的数据立刻干净了。这告诉我们高频电路里元件的非理想性远比你的测量目标更嚣张。第二个坑是阈值误触发。TDR比较器的阈值如果设太低噪声和信号反射的爬坡沿会反复触发设太高反射弱的故障点又测不到。我们的解决办法是加入一次回波确认逻辑发射脉冲后如果捕获到第一个沿等待约2倍线长传播时间后再看有没有第二个沿只有两个沿的极性关系和间隔都符合预期才算有效。这个软件滤波把误测概率降到了很低。第三个坑是线缆绕成盘后引入了额外的互感和匝间电容。实验室环境里盘绕的20米线和拉直的20米线在200kHz以上的阻抗特性差别很大。我们的处理是在高于150kHz的数据上加了权重衰减宁可牺牲一点高频信息也不让失真数据污染整体的拟合结果。事实证明这个取舍是值得的。6. 四天三夜的节奏安排与电赛实战建议6.1 时间分配第一天火力全开搭硬件DDS、运放驱动、ADC采样链路、比较器通道晚上之前必须让屏幕上出现稳定的正弦波形和频谱数值。第二天上午写扫频和DFT程序下午开始做校准晚上跑纯电阻和纯电容的识别流程。第三天集中做复合负载拟合和故障定位这是最痛苦的一天我们为RC并联的导纳拟合和TDR的阈值逻辑吵了一下午最后靠逐段加打印调试才定位到问题。第四天上午做完整流程连跑下午封箱前把所有线缆重新标定一遍。电赛最怕的不是题目难是最后一个晚上还在改底层驱动。所以我们每天设了一个死线当天晚上十点前不新增功能只修bug。6.2 给后来者的几个具体建议第一扫频范围不要贪宽。原则上用不到1MHz以上的数据把100kHz以下做到极致比把1MHz做得乱七八糟更有价值。第二所有校准数据烧进Flash后要做一个恢复出厂的隐藏菜单不然评测现场一旦环境变化只能干瞪眼。第三故障定位的传播速度标定一定要现场重做温度、线缆批次都会影响v值。网上找的理论值只能当参考。第四复合负载的判别决策树务必用真实的电阻电容电感搭出来测一遍不要相信仿真里的理想值。20米电缆负载箱的寄生效应仿真永远模拟不了。做这个题最大的感受是电赛考验的不是谁的芯片更高级而是谁能在有限时间里把测量链路的稳定性打磨到位。硬件上每个频点都测准软件上每个拟合都讲道理这个题拿奖就是水到渠成的事。