☰
电赛C题实战:扫频阻抗法+TDR实现负载识别与故障定位
2026/9/29 23:42:50 网站建设 项目流程

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. 方案选型博弈:为什么我们选扫频阻抗法而不是纯TDR

2.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采样、跑识别算法、驱动显示
  • 信号源:DDS(AD9834)产生扫频正弦波,经低通滤波后送入驱动级
  • 前端调理:运放驱动电路将正弦信号加到采样电阻和传输线,同时把电流信号转成电压信号
  • 幅相检测:用两路ADC同步采样电压波形和电流波形,软件DFT计算幅值比和相位差
  • TDR通道:定时器产生纳秒级上升沿的阶跃脉冲,高速比较器捕捉反射边沿,定时器精确定时
  • 人机交互:OLED屏显示负载类型和参数,编码开关切换模式

这套架构的妙处在于:所有"高端"功能都用软件实现,硬件链路从DDS到ADC只有一条,调试起来不容易乱。

3. 硬件设计:从DDS扫频源到阻抗测量前端

3.1 DDS扫频源和驱动级

我们用的AD9834是ADI的DDS芯片,主频75MHz,SPI接口配置,能输出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下降
纯电感L+90°+90°随f上升
RC串联趋近-90°趋近0°高频稳定
RL串联趋近0°趋近+90°高频上升
RC并联趋近0°趋近-90°高频下降
RL并联趋近+90°趋近0°低频上升,高频稳定

判别逻辑用决策树实现,先用低频相位把纯容性和纯感性类分开,再用高频相位在电阻类和混合类之间区分,最后结合幅值曲线做二次确认。为了防止噪声导致的误判,我们对相位值做了滑动平均,并且要求两个频点的相位连续满足趋势条件才切换状态。

4.3 元件参数的拟合计算

识别出类型后,参数反推是最重要的一步。我们针对每种模型用最小二乘拟合。

纯电阻最简单:对10kHz~80kHz范围内幅值取平均,再扣除线缆串联电阻的固定偏差,就是R值。

纯电容:根据1/(2πfC)的关系,把每个频点算出的C值取平均,剔除离群点。实测精度在5%以内。

纯电感:用L=X/(2πf),同样多频点平均。需要注意低频端电感感抗太小,信噪比差,我们划定只取30kHz以上数据参与平均。

复合负载用线性拟合。以RC串联为例:

|Z(f)|² = R² + 1/(4π²f²C²)

令y=|Z|²,x=1/f²,这是一个y对x的线性关系,斜率k=1/(4π²C²),截距b=R²。我们用50个频点的数据做一次最小二乘线性回归,从斜率和截距同时解出C和R,精度比单点计算高一个数量级。

RL串联的拟合公式是|Z|² = R² + (2πfL)²,同样把y=|Z|²对x=f²做线性回归。RC并联和RL并联则需要先倒成导纳的形式再拟合,原理完全一样。整套拟合代码不复杂,只要注意浮点运算在STM32上别溢出就行。

4.4 故障定位的时间测量与速度标定

TDR测距的公式是d=v·Δt/2。v是关键参数,靠理论值算不准,必须现场标定。我们处理方式很简单:先用一根已知长度的电缆(比如10米)做一次短路故障测试,测出Δt_known,反推v=2×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串联R=100Ω C=1μFR=103Ω C=1.04μF3%/4%
RL并联R=1kΩ L=100μHR=985Ω L=96.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米电缆+负载箱的寄生效应,仿真永远模拟不了。

做这个题最大的感受是,电赛考验的不是谁的芯片更高级,而是谁能在有限时间里把"测量链路的稳定性"打磨到位。硬件上每个频点都测准,软件上每个拟合都讲道理,这个题拿奖就是水到渠成的事。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询