ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

自制外置AC耦合模块:破解示波器纹波测量的低频失真与基线漂移

自制外置AC耦合模块:破解示波器纹波测量的低频失真与基线漂移 1. 项目缘起好好的AC耦合为什么要“动它”事情要从一块12V输入的电源板说起。当时我在调一块给精密传感器供电的板子手册上写输出纹波要小于5mV但我用示波器一测满屏都是直流12V电平推出来的基线纹波小得连影子都看不见。于是我把示波器输入切到AC耦合以为能直接看到藏在直流电平下面的小信号——结果发现波形底部是翘起来的低频段明显失真还带一点缓慢的漂移。又试着同时测两路输出做对比结果两个通道的AC耦合表现还不完全一致测出来的“纹波差”根本没法判断是真信号还是耦合电路本身的差异。这就是标题里说的“对示波器的AC耦合我们做了这个”的起点。我们花了两周时间做了一个外置AC耦合信号调理模块顺带写了一套自动化测试流程专门用来评估和弥补示波器自带AC耦合的那些“隐性缺点”。这篇东西就是把这个项目从需求拆解、原理设计、元器件选型、焊接调试、到实测对比和踩坑记录的完整过程整理出来。不管你是经常测电源纹波的硬件工程师还是刚接触示波器、被DC偏置搞到头疼的学生这篇文章里的参数计算、焊板经验和SCPI自动化测试脚本都可以直接拿去用。先说明一点示波器自带的AC耦合并不是“坏了”多数情况下它完全够用。但我们遇到的场景对低频响应一致性、截止频率精确度和多通道对称性有要求这恰恰是入门级示波器最容易妥协的地方。自己做外置模块不是为了炫技而是为了把耦合这一环节的控制权拿回自己手里。2. AC耦合的本质与设计取舍2.1 示波器AC耦合的电路本质很多人用了几年示波器对AC耦合的理解还停留在“按一下这个按键直流就被滤掉了”。实际上示波器输入端的AC耦合就是在信号路径里串入一个电容这个电容和示波器自己的输入阻抗一般1MΩ构成一个一阶高通滤波器。高通滤波器的截止频率是[ f_c \frac{1}{2\pi R C} ]拿常见参数算一下示波器输入阻抗R1MΩ耦合电容C常见在10nF到100nF之间对应的截止频率大约在1.6Hz到16Hz。也就是说AC耦合并不是“完全去掉直流”而是把直流以及低于截止频率的低频分量逐步衰减掉衰减斜率是每倍频程6dB。为什么要截图这个本质因为这决定了所有对策的方向如果你觉得示波器自带AC耦合不好用本质上就是在说这个高通滤波器的参数不适合你的测量场景。可能是截止频率太高把有用的低频信号也砍了可能是电容漏电流太大导致出现缓慢漂移可能是通道间电容误差大导致两条通道的-3dB点不一样。2.2 无源、有源二选一设计外置AC耦合模块首先要想清楚用什么方案。我们一开始列了两个方向方案电路结构优点缺点无源RC高通电容串联电阻并联结构简单、无源可靠、不会引入运放噪声截止频率受后级负载影响低频抑制比受限于电容漏电有源Sallen-Key高通运放阻容网络输出阻抗低、带载能力强、频率特性精确需要供电、引入电源噪声、制作复杂度高无源方案听起来很美但实际用起来有个绕不开的问题输出端接的负载不是纯电阻示波器探头本身有输入电容常见13pF左右BNC线的分布电容也有几十pF这些电容会把高频端的阻抗拉低改变实际的高通特性。更麻烦的是电容漏电。无源高通的低频抑制能力上限就是耦合电容漏电阻和并联电阻的分压比。比如你用了漏电阻只有10MΩ的电解电容并联电阻也是1MΩ低频抑制最多只有20dB左右而且漏电流还会随温度变化导致基线漂移。有源方案用运放做Sallen-Key结构输出缓冲隔离了负载影响截止频率由电阻电容的乘积精确决定低频抑制可以达到60dB以上。缺点是模块要供电、电路面积大、运放本底噪声会叠加到信号上。测纹波这种对噪声敏感的场景运放选型就得慎之又慎。我们最终选择的是“无源前级有源后级”的组合输入端先用高质量薄膜电容做无源高通把直流电平初步阻断然后再进运放做二阶有源高通进一步压低低频残余。这样既避免了无源方案带载能力差的问题也不用担心运放直接被大直流共模电压顶到饱和。这个架构后面实测下来各方面都比较均衡。3. 关键参数计算与元器件选型3.1 截止频率怎么定整个模块设计的第一步是定截止频率。这没有标准答案完全取决于你要测什么。我们的主要使用场景是电源纹波和基准电压源的噪声测量。开关电源的开关频率普遍在几十kHz到几百kHz纹波测量关心的频段一般从1kHz往上LDO的输出噪声关心的频段更宽从10Hz到几MHz都有可能。如果截止频率定得太高比如100Hz就会把一部分有意义的低频噪声给滤掉定得太低比如0.1Hz耦合电容要做到几百nF甚至uF级别体积和成本都上来。取了一个折中截止频率设为约10Hz。这样既能有效阻断50Hz工频以下的缓慢漂移和直流分量又不至于伤到10Hz以上真正关心的噪声频段。实际计算选R1MΩ则C 1/(2π × 10 × 1M) ≈ 15.9nF取标准值15nF配合1MΩ电阻的-3dB点大约是10.6Hz完全符合要求。需要注意这里的1MΩ电阻是模块内部的“后端负载电阻”。因为后级接入的是运放的输入端运放的输入阻抗极高通常GΩ级所以截止频率主要是由R和C的乘积决定的不受下游电路影响。如果读者想复用这个设计到其他场景记住一个经验法则截止频率选你关心的最低信号频率的1/5到1/10。比如你要测20Hz以上的心跳信号截止频率就设在2~4Hz左右。3.2 电容是最大的坑电容选型是整个项目里最容易翻车的地方没有之一。先说结论耦合电容绝对不能用电解电容哪怕是号称“低漏电”的钽电容也尽量别用。它们在高频段的ESR表现太差而且漏电流随温度和老化变化明显直接导致低频响应不稳定。我们最终用的是C0G/NP0材质的陶瓷电容和聚丙烯薄膜电容。C0G电容的优势在于温度特性极稳定温漂约±30ppm/°C漏电流最小没有压电效应。缺点是容值做不大15nF的C0G电容已经是常见规格的天花板。15nF用0805封装可以买到大品牌的型号再大的容值就得上薄膜电容。薄膜电容的音频特性好但体积大、价格高。我们后来实测发现C0G电容在这个场景下完全够用薄膜电容并没有表现出可感知的优势。这里还有一个容易被忽视的点电容的耐压值。虽然信号经过AC耦合之后输出端是直流隔离的但输入端可能会接上几十V的直流偏置。如果电容额定耐压不够DC偏置会让陶瓷电容的实际容值大幅下降——X7R/X5R材质的电容在加上50%额定电压后容值可能跌掉30%到50%。C0G材质虽然也有DC偏置特性但变化小得多。我们选了100V耐压的C0G电容妥妥余量。3.3 运放选型和电源设计运放选型的核心矛盾是“低噪声”和“低功耗”。既然是做精密测量前端噪声指标优先。我们开始试过OPA1612这个运放的电压噪声密度只有1.1nV/√Hz带宽充裕声音和精密测量圈的公认口碑都很好。但实测下来发现在我们的供电条件下静态电流有点大单运放约2.5mA电池供电的场景下开销偏高。后来退而求其次选了ADA4898噪声密度类似驱动能力更强功耗稍低。如果你只是做一般性的测试夹具不用太纠结运放NE5532这种通用运放也能干活。但如果你要测的是毫伏级纹波运放噪声会直接叠加上去NE5532的5nV/√Hz噪声会比你关心的信号还大结果就没法看了。供电方面我们用的是示波器探头旁边的USB口取5V然后经过两路LDO一路生成±2.5V给运放供电另一路作为基准电压源。运放供电用LDO而不用DC-DC原因是DC-DC的开关噪声频谱很宽很容易耦合进信号路径。LDO虽然效率低但在这种小电流场景下根本不是问题。还有一个很实用的细节输入端的ESD保护。耦合模块经常要接各种待测板插拔瞬间的静电可能直接把运放干掉。我们在输入端并联了两个背靠背的BAT54S肖特基二极管到地实测打了几次电火花发生器模块毫发无伤。如果没有这个保护前面所有的精密选型都白搭。4. 制作与调试4.1 结构方案洞洞板还是PCB模块电路并不复杂理论上说搭洞洞板也可以。但我们踩过多次洞洞板的坑之后这次直接画了一块小PCB顺便把设计文件开源给同组的同事。PCB的好处不仅仅是有序和美观。关键是寄生参数可控洞洞板的飞线动辄几厘米长引入的说电感在高频段会产生谐振这是信号完整性的灾难。高频测量对走线长度极其敏感。我们的板子只有四层顶层走信号第二层完整地平面第三层走电源底层铺地。信号路径的长度压缩在15mm以内输入输出用SMA座直接接BNC线。顺序说一下制作过程3D预览检查封装错误——这一步能省掉绝大多数改板时间。我们第一版就把两个电解电容的封装方向画反了好在预览阶段发现。交给嘉立创打样选了2oz铜厚和沉金表面处理沉金板的高频损耗比HASL喷锡板小而且表面平整焊接风险低。焊接时先焊全板最低的元件电阻、电容、二极管最后焊运放和SMA座。SMA座如果先焊会因为外壳凸起导致板子放不平后面焊其他元件会很别扭。焊完用洗板水配合超声波清洗特别是运放的相邻引脚之间助焊剂残留可能会导致漏电精密电路里这是致命的。4.2 焊接、屏蔽与输入保护焊接环节要专门说几个容易翻车的地方。第一C0G电容和运放都是贴片元件焊接温度不要超过260°C每个引脚停留别超过两秒。C0G陶瓷电容对热冲击敏感曾经有同事把一块板子上的电容吹到出现微裂纹结果模块表现出了间歇性噪声排查了两天才发现。第二焊接完成之后一定要用万用表的通断档检查一遍正负电源对地有没有短路。有源模块最怕上电瞬间短路轻则烧电容重则毁掉运放。第三屏蔽结构不能省。我们的模块装在一个铝型材外壳里输入BNC座那个孔位还垫了一圈导电泡棉保证外壳和信号地的接触连续性。如果不做金属屏蔽模块在实验室里就会拾取日光灯管的50Hz干扰和环境中的电磁杂散低频段测量直接废掉。关于输入保护再补充一个细节输入端对地并联的肖特基二极管除了ESD保护之外还有一个作用就是当输入意外接入高电压时把电压钳制在二极管导通电压约0.3V附近保护后面的运放不被击穿。这个保护电路的耐压极限是±40V左右超过这个范围即使有钳位运放输出也会出问题。如果应用场景经常插拔高压更稳妥的做法是在输入端串一个100kΩ的限流电阻代价是源阻抗增大对后级噪声性能有一点点影响。5. 实测验证与自动化扫频5.1 手动画幅频曲线模块焊好之后第一件事是验证它的幅频特性。我用手头已有的信号发生器鼎阳SDG2042X设定正弦波输出从1Hz到1MHz按对数规律取点用示波器读输出幅度手动记录数据画曲线。这个办法能干活但效率太低几十个频率点扫下来要花一个多小时而且频率点稀疏曲线不够精细。特别是低频段信号源的输出幅度本来就不稳定手动读取示波器读数时眼睛都看花了。扫了三次每次得到的-3dB点都不一样明显是测试方法本身有问题。后来索性写了Python脚本来做自动化扫频。这个思路其实很简单让信号源自己按频率列表逐个输出正弦波示波器测量当前波形幅度把数据记录到CSV文件里。整个过程不用人盯十几分钟就能跑出几百个频率点画出来的曲线也细腻得多。5.2 用SCPI写自动化测试脚本SCPI是可编程仪器标准命令目前主流的示波器、信号源基本都支持。鼎阳、普源、力科、泰克都有自己的命令手册但SCPI的基础命令风格一致换平台时只需要调整一小段代码。这里以Python和pyvisa库为例下面这段脚本是核心逻辑import pyvisa import numpy as np import time import csv rm pyvisa.ResourceManager() sg rm.open_resource(USB0::0xF4EC::0x1102::...::INSTR) # 信号源地址 scope rm.open_resource(TCPIP0::192.168.1.20::INSTR) # 示波器地址 # 频率点从1Hz到1MHz对数间隔 frequencies np.logspace(0, 6, 200) results [] for freq in frequencies: # 设置信号源正弦波、幅度1Vpp sg.write(fC1:BSWV WVTP,SINE,FRQ,{freq},AMP,1) time.sleep(0.3) # 等待信号稳定 # 示波器测量当前信号幅度以Vpp为例 scope.write(MEAS:C1:VPP) vpp float(scope.query(MEAS:C1:VPP?)) results.append((freq, vpp)) # 保存到CSV with open(freq_response.csv, w, newline) as f: writer csv.writer(f) writer.writerow([freq_hz, vpp]) writer.writerows(results)这段脚本里的命令有两个关键点需要替换一是设备地址需要用pyvisa的list_resources()方法来确认实际地址二是命令的语法风格信号源SCPI命令各家略有差异比如鼎阳BSWV、安捷伦等用FREQ力科示波器的读取方式也不同。我习惯先把一个命令发给设备再用sleep等待几百毫秒观察返回值是否合理然后再跑全流程。实测数据出来之后我取每个频率点的Vpp值和1kHz参考点的Vpp做比值换算成dB。模块的幅频曲线在10Hz附近开始下降-3dB点实测值在11Hz左右和理论设计值几乎一致。低频端在1Hz处的衰减接近-35dB说明无源前级有源高通的叠加效果非常理想——示波器自带AC耦合在同样条件下只能做到-20dB左右受输入电容和耦合电容漏电限制。6. 实战开关电源纹波测量6.1 DC偏置掩盖下的纹波硬件实测这块先说一个典型场景测量一块12V/2A的DC-DC降压模块输出纹波。直接DC耦合测量时示波器屏幕上大部分信号都被12V直流偏置占据。如果设置竖直灵敏度为100mV/div那这12V偏置就把波形推到了屏幕外面你只能看到一条几乎水平的线纹波细节完全看不清。有人会把竖直灵敏度调到1V/div这样波形回到屏幕内但纹波只有几十mV在低灵敏度档位下就跟没看到一样。这正是AC耦合的用武之地。切到AC耦合后直流分量被电容隔离示波器的竖直放大器只处理交流成分可以把灵敏度提到5mV/div甚至2mV/div纹波的细节完全暴露出来。但示波器自带AC耦合在测这种大幅度DC偏置时有个隐患耦合电容两端需要承受高达12V的直流电位差。如果电容漏电流大这个漏电流会流过示波器的1MΩ输入电阻产生一个直流压降导致基线偏移。入门级示波器在这个场景下特别容易出现基线漂移就是因为电容质量妥协了。我们用自制的AC耦合模块来测情况明显好转模块内部的薄膜电容比示波器里的耦合电容大了几倍漏电流几乎可以忽略基线在长时间观测中稳定在±0.2mV以内不会再出现“哪根线慢慢飘走”的现象。6.2 和示波器自带AC耦合对比为了让大家更直观地感受差异我把两次测得的图像数据整理成一张对比表项目示波器自带AC耦合自制AC耦合模块截止频率实测值约2Hz标称可能不是这个约11Hz设计值1Hz处低频衰减-22dB-35dB基线漂移10分钟内约±3mV约±0.2mV通道间截止频率一致度同型号两通道差异8%左右模块出厂校准微调差异小于1%可测最小纹波受基线漂移限制约10mV约2mV这个对比不是想说示波器垃圾而是要说明在某些对精度和稳定性有要求的低频测量场景里示波器自带的AC耦合可能成为“隐含的误差源”。比如我们用示波器自带AC耦合测到两路输出的纹波差是6mV换用自制模块后重新测发现真实差值其实只有1.5mV左右——之前的6mV里有4.5mV是两个通道耦合特性不一致导致的测量偏差。测纹波还有一个细节接地方式。长接地线也就是探头带一条几十厘米长的鳄鱼夹线在测量开关电源时完全不能用——它像一根天线会把周围电磁环境里的高频噪声拾取进来叠加在真实纹波上测出来的数值普遍偏大。正确做法是使用探头自带的弹簧接地针或者用接地环直接扣在探头尖端的金属旁边尽可能缩短地回路长度。这个细节很多刚上手的朋友不了解但效果立竿见影我们把接地线从30cm缩短到1cm测得的“纹波”直接从18mV降到了6mV一对比就知道问题出在哪。7. 常见问题排查实录7.1 低频波形翘起项目过程中最常见的现象是模块接上之后在几十Hz到几百Hz频段波形底部出现一个明显的“翘起”或“鼓包”看起来像是叠加了一个缓慢的拖尾。排查思路先用信号发生器输出一个标准的50Hz方波观察方波的平顶是否倾斜。如果方波顶部有明显的指数下降说明低频响应不足也就是高通滤波器的截止频率被模块内部某个寄生参数拉高了最常见的原因是运放输入端的对地电容太大。我们在第一版设计中运放同相输入引脚旁边走过一根电源线分布电容高达十几pF和反馈网络电阻并联后形成了一个额外的极点把截止频率从设计值10Hz拉高到了大约80Hz。后面把走线改到板子另一层与反馈网络彻底分开问题就消失了。7.2 基线漂移与“ADC电压变高”有次同事反馈说把AC耦合模块接到示波器后示波器显示的直流电压读数变成了一个偏高的稳定值而不是零。他怀疑是模块的AC耦合没有把直流完全隔断。这个现象其实也好解释模块输出端如果残留了微小的直流偏置比如运放输入失调电压示波器会把它当作直流分量显示出来。我们的模块第一版用了一个输入失调电压高达1mV的运放而示波器在AC耦合模式下又没法把这种直流成分自动归零所以示波器屏幕显示“电压值变高”不算误报而是那个1mV的失调确实在那。解决办法有两个方向一是改用低失调运放比如OPA1612的失调只有0.25mV二是给示波器设置“DC偏置电平归零”功能。更严格的做法是在模块输出增加一个隔直电容但这样又引入新的低频转折点测试频段又受影响。权衡之下我们选择了低失调运放模块内部微调电阻调零的方案。这个问题的衍生教训是在谈“示波器打开AC耦合后电压读数变高”这类问题时要分清是仪器的显示问题还是模块的直流残留问题。如果示波器本身基线正常输入接一个50Ω负载后读数接近0mV那基本可以确定是外部模块或探头自身的问题。7.3 接地与假纹波还有一次我们拿到一个疑似“噪声不合格”的样机纹波测试数据远超规格书限值。用模块测出的Vpp值高达200mV但直觉告诉我们这个数据不对劲因为同样的板子在上一批样品中只测到30mV。排查过程如下先看波形形状——200mV“纹波”的波形是一堆毛刺状的高频成分而不是规律的开关纹波脉冲怀疑是拾取的外部噪声。把探头接地从长鳄鱼夹线换成弹簧接地针波形幅度立刻从200mV掉到80mV。怀疑是模块本身引入了噪声把模块输入端直接短接到地观察输出端波形发现还有约20mV的基底噪声——确认不是被测板的问题。进一步检查发现模块外壳和BNC座之间的屏蔽接触不良高频噪声从缝隙耦合进信号回路。垫上导电泡棉后基底噪声降到2mV以内。等到这时再测样机纹波读数是35mV符合规格书要求。这块排查过程来回折腾了大半天。我想强调的重点是测“噪声”和测“纹波”必须分开理解纹波是和开关频率同步的周期分量噪声是宽频带的随机分量。很多新手一上来看到屏幕上有东西在跳就急着读Vpp结果把探头自身拾取的干扰当成板子的真实噪声数据完全没参考价值。7.4 常见问题速查表为了方便后续自己排查我把这个项目里遇到的坑整理成了下面这张速查表现象可能原因检查方法解决办法低频波形翘起走线寄生电容拉高截止频率用方波测平顶倾斜重新布局布线避免反馈网络近旁走线基线缓慢漂移耦合电容漏电输入端短路后长时间看基线换用C0G/薄膜电容输出存在固定直流偏置运放失调电压示波器DC档读数换低失调运放加调零电位器噪声读数虚高接地环路/地线过长换弹簧接地针对比缩短地回路必要时隔离地环路高频段有谐振峰BNC线过长得像天线分别用10cm/1m线对比尽量用短线加共模磁环多通道读数不一致通道间元器件参数离散互换探头对比模块出厂校准时微调补偿尾声这事的后续价值模块做完到现在用了快两个月最大的感受是AC耦合这件事看似是示波器上一个不起眼的小功能但它恰恰是测量链路里最容易引入隐性误差的一环。做这个项目之前我默认示波器自带AC耦合是“标准答案”所有数据异常都往被测板上怀疑做完之后我会先花十分钟确认测量链路本身的耦合特性、接地方式和线缆质量反而能在更短的时间内定位到真正的问题。如果你也经常做电源纹波、传感器小信号或者音频电路的测量我建议不必像我这样为了AC耦合专门做一个模块——先花点时间摸清自己示波器的耦合截止频率和通道一致性用信号发生器扫一遍幅频曲线就行。如果发现指标确实不够用再考虑搭一个简单的无源RC高通成本不到二十块钱但能让你对自己测量的置信度上一个台阶。最后再分享一个小经验测任何微小信号前把探头尖和接地端直接短接先看一眼“零输入”时的基底噪声是多少。这个动作花不了十秒钟但能帮你避开至少一半的假信号坑。
返回列表