在电子测量里,电感、电容和电阻的数值准不准,直接关系到电路能不能稳得住。以前的老办法老是受周围杂波和信号变来变去的影响,很难测出个精确数。但如果用锁相放大器(Lock-in Amplifier, LIA),它对噪声特别在行,还能看透相位变化,这就成了一个挺管用的新路子。 锁相放大器的本事就是拿个跟信号频率一样的参考信号,跟待测信号比划比划,算出它们在特定频率下到底有多大、怎么变的。做LCR测量时,先给元件通上电,让它的电压电流动起来。两边的信号同时被抓进来,一边送进锁相放大器的信号口,一边送到参考口,就能算出阻抗是多少。 最关键的是要把那个相位差抠准了。以前过零检测或者FFT在信号太杂的时候误差很大。锁相放大器走了一条正交解调的路,把信号投影到I/Q平面上,再用个低通滤波器挡住高频干扰,就能从一大堆噪音里捞起那个微弱的相位信息了。比如在STM32F407平台上试过,哪怕信号上叠加了120%的AM噪声调制,锁相算法也稳得一批,波动控制在0.2°以内。 硬件这块用了性能强的MCU,像STM32F407ZGT6这种型号,配合双通道ADC一起抓数据。靠Timer触发和DMA双缓冲的机制保证数据连起来不中断。再利用Cortex-M4自带的DSP指令集做个汇编级的优化,跑一趟512点的解调只花几十微秒时间,CPU占用率还不到5%。代码上还用结构体把多个通道的数据都封起来了,以后想改改或者多加点功能都很方便。 软件这边要把所有的事儿都串起来:ADC读数准不准得补偿一下、数字滤波怎么选、相位怎么绕过来、温度变化会不会跑歪……这些都得管。可以先用MATLAB模拟一下算法参数是不是靠谱,把带宽和积分时间常数调好,保证一开机就稳当。 另外为了不让杂散电感和分布电容捣乱,最好用四根线接(四线开尔文连接),并且在没人用的时候测一下空载数据做个标准模型。通过软件的办法再修一修最后结果的数,就能把精度压到0.02°。 综合来看这套基于锁相放大器的LCR测量技术,把高精度采样、正交解调、压噪声和校准这些手段都揉在一起了。不光在实验室用得上,做电赛仪器或者阻抗分析仪的时候也很顺手。加上现成的代码架构和仿真工具链,研发速度能提上来一大截。