ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

双运放峰值检测电路设计:从原理到PCB调试的工程实践

2026/9/24 9:56:58 拓冰建站 浏览量
双运放峰值检测电路设计:从原理到PCB调试的工程实践 1. 为什么单运放峰值检测电路总是不准做过信号调理的朋友大概率都踩过这个坑用一个运放加一个二极管、一个电容搭一个最经典的峰值检测电路仿真里跑得挺好一上板子就发现输出比输入峰值低了零点几伏或者小信号根本检不出来。更让人头疼的是当输入信号频率稍微高一点输出就开始往下掉保持不住峰值。这个问题的根源在于二极管的正向压降和运放输出摆幅的限制。单运放架构里二极管串在反馈环路内部运放虽然能补偿掉二极管压降但输出端要驱动二极管和电容运放的输出电流能力、压摆率、以及二极管的反向恢复特性都会直接影响检测精度。尤其是当输入信号幅度在几百毫伏级别时二极管非线性区带来的误差可能高达几十毫伏这对于精密测量来说是不可接受的。我最初做峰值检测是为了处理一个传感器信号输入是脉宽约2微秒、峰值约500毫伏的脉冲。用单运放方案搭出来实测输出只有420毫伏左右而且脉冲一过电容上的电压就开始往下掉保持时间连100微秒都撑不住。后来查了不少资料也参考了经典模拟电路教材里的方案最终改用双运放架构才把精度和保持时间都做到可接受的范围。这篇文章就把我这段时间折腾双运放峰值检测电路的经验完整梳理一遍。从架构选型的逻辑、核心参数的推导、LTspice仿真验证的方法到实际PCB布局和调试中遇到的坑都会详细展开。如果你正在做脉冲幅度检测、包络提取、或者需要捕捉信号峰值的场景这套方案可以直接参考复现。2. 双运放架构的核心设计逻辑2.1 单运放方案的固有缺陷先说说为什么单运放不够用。经典的单运放峰值检测电路是这样的输入信号接到运放同相端运放输出经过一个二极管给电容充电电容上的电压反馈到运放反相端。当输入电压高于电容电压时运放输出升高二极管导通电容充电当输入电压低于电容电压时运放输出降低二极管截止电容保持电压。这个电路的问题在于二极管反向漏电流即使二极管截止仍有纳安到微安级别的反向漏电流电容会缓慢放电。对于小容量电容这个漏电流会导致峰值保持时间大幅缩短。运放输出摆幅限制当输入信号接近运放供电轨时运放输出无法完全跟随导致检测上限受限。二极管结电容在高频下二极管结电容会形成交流通路影响检测精度。充电电流不足运放的输出电流有限给电容充电的速度受限于运放的短路电流能力对于快速脉冲可能来不及充满。注意单运放方案并非完全不能用如果你的信号幅度在几伏以上、频率不高、对精度要求不苛刻单运放加一个低漏电流二极管比如BAS116也能凑合。但要做精密检测双运放是更稳妥的选择。2.2 双运放架构的分工与优势双运放架构的核心思路是把充电回路和保持回路分开。第一个运放负责快速充电第二个运放负责高阻抗缓冲和保持。具体来说第一级运放充电级配置成精密整流器结构把二极管包含在反馈环路内消除二极管压降的影响。当输入信号上升时第一级运放输出通过二极管给保持电容快速充电。第二级运放缓冲级配置成电压跟随器输入接保持电容输出作为最终检测结果。由于运放输入阻抗极高通常吉欧级别对保持电容的放电影响极小可以显著延长保持时间。这种分工带来的好处是二极管压降被第一级运放的环路增益补偿掉检测精度大幅提升。第二级运放的高输入阻抗让保持电容的放电速率降到极低保持时间从毫秒级提升到秒级甚至更长。充电回路的驱动能力由第一级运放决定可以选择输出电流大的运放来加快充电速度。2.3 关键器件的选型考量选型这块我踩过不少坑这里直接说结论。运放的选择第一级运放需要高增益带宽积GBW和高转换速率SR因为要快速响应输入脉冲并给电容充电。我试过NE5532GBW只有10MHzSR约9V/μs对于2微秒的脉冲来说勉强够用但输出会有明显延迟。后来换成OPA2134GBW 8MHzSR 20V/μs和AD826GBW 50MHzSR 350V/μs效果明显改善。第二级运放对速度要求不高但需要低输入偏置电流和低失调电压TL072输入偏置电流30pA或者LMC6001输入偏置电流10fA都是不错的选择。二极管的选择必须用低反向漏电流的型号。1N4148的反向漏电流在室温下约25nA高温下会急剧增大。BAS116的反向漏电流只有3pA左右适合精密场合。如果信号频率较高还要考虑二极管的结电容BAS116的结电容约2pF比1N4148的4pF小一半。保持电容的选择电容值决定了充电速度和保持时间的平衡。电容越大保持时间越长但充电速度越慢。对于2微秒的脉冲我最终选了1nF的C0G电容。C0G的介质损耗极低温度系数小漏电流可以忽略。千万不要用X7R或Y5V它们的介质吸收效应会导致电压回退峰值检测结果会慢慢往下掉。参数计算示例假设输入脉冲宽度为2微秒峰值500毫伏要求检测误差小于1%。保持电容取1nF第一级运放的输出电流为20mA那么充电时间常数约为[ t \frac{C \times V}{I} \frac{1nF \times 0.5V}{20mA} 25ns ]这个时间远小于脉冲宽度说明充电速度足够。保持时间方面第二级运放的输入偏置电流为30pA电容为1nF放电速率为[ \frac{dV}{dt} \frac{I_{bias}}{C} \frac{30pA}{1nF} 30\mu V/s ]也就是说1秒后电压下降约30微伏对于500毫伏的峰值来说误差只有0.006%完全满足要求。3. 电路细节与实操要点3.1 精密整流器的工作原理双运放架构的第一级通常采用精密半波整流器结构。具体连接方式是输入信号通过电阻接到第一级运放的反相端运放输出经过二极管D1到保持电容同时二极管D2从运放输出到反相端形成反馈路径。当输入为正时运放输出为负D1截止D2导通运放工作在反相放大状态但由于D1截止保持电容不充电。当输入为负时运放输出为正D1导通D2截止运放通过D1给电容充电。等等这里方向好像反了让我重新捋一下。实际上如果要检测正峰值应该把输入信号接到运放的同相端或者调整二极管的极性。更常见的做法是输入信号通过电阻接到反相端运放同相端接地D1从运放输出到保持电容阳极接运放输出阴极接电容D2从运放输出到反相端阳极接反相端阴极接运放输出。当输入为正时运放输出为负D1截止D2导通运放反相端被钳位在约-0.7V但由于虚短反相端应该等于同相端0V所以运放输出会迅速调整。实际上这个分析有点绕更直接的理解是精密整流器利用运放的高增益把二极管包含在反馈环路内使得二极管的非线性被抑制。提示如果你对精密整流器的方向感到困惑可以在LTspice里直接搭电路仿真观察各个节点的波形比看公式推导直观得多。3.2 保持电容的充电与放电回路保持电容的充电回路是第一级运放输出 - D1 - 保持电容 - 地。放电回路有两个一是D1的反向漏电流二是第二级运放的输入偏置电流。前者可以通过选择低漏电流二极管来抑制后者可以通过选择低偏置电流运放来抑制。这里有个细节容易被忽略D1的反向漏电流与温度强相关。室温下BAS116的漏电流约3pA但到了60摄氏度可能变成几百pA。如果应用环境温度较高需要考虑温度补偿或者选择更低温漂的器件。另外保持电容的介质吸收也是一个隐形杀手。X7R电容的介质吸收率可能在1%到5%之间意味着电容充到1V后断开充电回路电压会先下降一点然后慢慢回升。这种效应会导致峰值检测结果不稳定。C0G电容的介质吸收率低于0.1%基本可以忽略。3.3 运放供电与相位补偿双运放架构通常用双电源供电比如正负5V或正负12V。供电电压决定了输入信号的动态范围。如果输入信号峰值接近供电轨运放输出会饱和检测精度急剧下降。一般建议输入信号峰值不超过供电电压的70%。相位补偿方面第一级运放工作在闭环状态相位裕度通常足够。但如果输入信号频率接近运放的GBW可能会发生振荡。我遇到过的情况是第一级运放输出端直接接二极管和电容电容的容性负载导致运放输出振荡。解决方法是在运放输出和二极管之间串一个小电阻比如22欧姆隔离容性负载。第二级运放作为电压跟随器驱动容性负载的能力也要注意。如果输出端接长电缆或者大电容同样可能振荡。可以在输出端串一个50欧姆电阻或者选择单位增益稳定的运放。4. LTspice仿真验证与参数扫描4.1 仿真电路搭建步骤LTspice是我常用的仿真工具免费而且模型库丰富。搭建双运放峰值检测电路的步骤如下新建原理图从元件库中拖出两个运放符号。LTspice自带UniversalOpamp2模型可以设置GBW、SR等参数适合初步验证。放置电阻、电容、二极管。二极管可以用LTspice自带的1N4148模型或者导入BAS116的SPICE模型。连接电路第一级运放配置成精密整流器第二级配置成电压跟随器。设置电源用电压源提供正负5V注意运放的供电引脚要正确连接。设置输入信号用PULSE源产生一个脉冲比如幅度500mV、宽度2us、周期10us。设置仿真参数瞬态仿真停止时间设为100us最大步长设为10ns。仿真跑完后用波形查看器观察输入信号、第一级运放输出、保持电容电压、第二级运放输出。正常情况下保持电容电压应该跟随输入峰值并在脉冲结束后保持稳定。4.2 关键参数的扫描与优化LTspice的.step命令可以扫描参数非常方便。比如要扫描保持电容的值可以这样写.step param C1 list 100p 1n 10n然后观察不同电容值下的充电速度和保持时间。实测下来100pF充电最快但保持时间短10nF保持时间长但充电慢1nF是比较平衡的选择。还可以扫描二极管的型号对比不同二极管的反向漏电流对保持时间的影响。LTspice的.model语句可以定义二极管的参数比如.model BAS116 D(Is3p Rs1.5 N1.05 Cjo2p)其中Is是饱和电流直接影响反向漏电流。把Is从3p改成25n就能模拟1N4148的漏电流特性观察保持时间的差异。4.3 仿真中常见的收敛问题LTspice仿真峰值检测电路时偶尔会遇到收敛问题表现为仿真卡住或者报错“Timestep too small”。这通常是因为电路中有强非线性元件二极管和容性负载导致节点电压变化剧烈。解决方法有几个在运放输出和二极管之间串一个小电阻比如10欧姆限制电流突变。在保持电容两端并联一个大电阻比如1兆欧提供直流路径帮助收敛。调整仿真器的积分方法在.tran语句中加methodgear。减小最大步长比如设为1ns但会增加仿真时间。我一般先用1ns步长跑一遍确认电路工作正常后再放宽到10ns加快速度。5. 实际调试中的问题与排查5.1 输出比输入峰值低这是最常见的问题。如果输出比输入峰值低了几十毫伏可能的原因有二极管压降没有被完全补偿检查第一级运放是否工作在闭环状态反馈路径是否正确。运放输出摆幅不够测量第一级运放输出波形看是否接近供电轨。如果输出饱和需要提高供电电压或降低输入幅度。充电时间不足如果输入脉冲很窄电容可能来不及充满。减小保持电容或者换用输出电流更大的运放。第二级运放输入偏置电流过大如果偏置电流在纳安级别而保持电容只有几十皮法放电会很快。换用低偏置电流运放或者增大电容。5.2 峰值保持时间短如果脉冲结束后电压迅速下降重点检查二极管反向漏电流换用BAS116或者更低温漂的型号。保持电容的介质吸收换用C0G或聚丙烯电容。第二级运放输入偏置电流用LMC6001等超低偏置电流运放。PCB漏电流如果PCB表面有助焊剂残留或者湿度较高会在保持电容节点形成漏电通路。用酒精清洗PCB并涂三防漆。5.3 电路振荡振荡通常发生在第一级运放输出或者第二级运放输出。排查方法用示波器观察振荡频率和幅度。如果是高频振荡兆赫兹级别多半是容性负载导致的相位裕度不足。在运放输出串小电阻隔离容性负载。检查电源去耦是否充分每个运放的供电引脚附近放100nF和10uF电容。如果振荡频率较低千赫兹级别可能是反馈环路的问题检查反馈电阻和电容的取值。5.4 常见问题速查表现象可能原因排查方法解决方案输出比峰值低二极管压降未补偿测第一级运放输出检查反馈环路输出比峰值低充电时间不足观察电容电压波形减小电容或换快运放保持时间短二极管漏电流大换二极管对比用BAS116保持时间短运放偏置电流大查运放数据手册用LMC6001电路振荡容性负载观察振荡频率输出串电阻电路振荡电源去耦不足检查PCB布局加去耦电容仿真不收敛非线性强看报错信息加串联电阻或并联电阻提示调试时建议先用直流电源和信号发生器验证静态工作点再用脉冲信号测试动态响应。不要一上来就上复杂信号否则出了问题很难定位。6. 从仿真到实物的工程化考量6.1 PCB布局的关键原则峰值检测电路对布局敏感尤其是保持电容节点。这个节点是高阻抗节点任何漏电流都会导致电压下降。布局要点保持电容尽量靠近第一级运放输出和第二级运放输入缩短走线长度。保持电容节点周围不要走其他信号线避免耦合干扰。用保护环Guard Ring包围保持电容节点保护环接到与运放同相端相同的电位可以显著降低PCB表面漏电流。电源走线要宽去耦电容尽量靠近运放供电引脚。6.2 温度漂移与长期稳定性如果应用场景温度变化较大需要考虑温度漂移。二极管反向漏电流每升高10摄氏度大约翻一倍运放输入偏置电流也有类似的温度特性。解决方法选择低温漂的二极管和运放。在保持电容节点加温度补偿电路比如用热敏电阻补偿漏电流。定期复位保持电容避免长期累积误差。长期稳定性方面电容的 aging 特性会导致容量缓慢变化C0G电容的 aging 率约每年0.1%影响很小。但电解电容的 aging 率可能达到每年几个百分点绝对不能用在保持电容上。6.3 复位电路的设计峰值检测电路通常需要复位功能把保持电容电压清零准备下一次检测。复位电路可以用一个N沟道MOSFET或者JFET并联在保持电容两端由控制信号驱动。选择MOSFET时要注意漏电流。普通MOSFET的漏电流在纳安级别会严重影响保持时间。建议用JFET比如2N4117其漏电流在皮安级别。或者用专用的模拟开关比如DG419漏电流也很低。复位脉冲的宽度要足够让电容完全放电。对于1nF电容如果MOSFET的导通电阻为100欧姆放电时间常数约100ns复位脉冲宽度取1微秒就足够了。6.4 实测数据与仿真对比我在完成PCB打样后做了一组对比测试。输入信号是幅度500mV、宽度2us、周期10us的脉冲。仿真结果显示保持电容电压在脉冲结束后稳定在498mV左右误差0.4%。实测结果是495mV误差1%。差异主要来自PCB漏电流和二极管漏电流。把PCB清洗并涂三防漆后实测误差降到0.6%。再把二极管换成BAS116误差进一步降到0.3%。这个精度对于大多数传感器信号检测来说已经足够了。保持时间方面仿真显示1秒后电压下降约30微伏实测1秒后下降约100微伏差异来自PCB表面漏电流。用保护环后实测下降约50微伏改善明显。7. 几个容易被忽略的实操细节7.1 运放的选择不是越快越好刚开始我以为运放GBW越高越好选了AD826GBW 50MHz结果发现输出噪声也大了不少。后来换成OPA2134GBW 8MHz噪声明显降低而充电速度仍然满足要求。所以选运放要平衡速度和噪声不要盲目追求高GBW。7.2 二极管的封装也有影响同样型号的二极管SOD-323封装的结电容通常比SOD-123封装小因为芯片面积更小。如果信号频率较高优先选小封装。但小封装的散热能力差如果充电电流较大二极管可能发热导致漏电流增大。这个需要根据实际电流大小权衡。7.3 保持电容的电压系数C0G电容的电压系数很小但并非为零。在500mV电压下1nF的C0G电容实际容量可能比标称值低0.1%左右。对于高精度应用可以在校准环节补偿这个误差。7.4 电源纹波的影响运放的电源抑制比PSRR有限电源纹波会耦合到输出。如果电源纹波较大建议在运放供电引脚加LC滤波或者用低压差线性稳压器LDO供电。我试过用7805直接供电输出噪声约2mV峰峰值换成LT3045后噪声降到200微伏以下。7.5 输入信号的驱动能力峰值检测电路的输入阻抗由第一级运放的输入阻抗决定通常很高。但如果输入信号源的内阻较大会与运放输入电容形成低通滤波导致高频衰减。建议在输入信号源和运放之间加一个缓冲器或者选择输入电容小的运放。8. 扩展思路从峰值检测到包络提取双运放峰值检测电路稍加改动就可以用于包络提取。把保持电容的放电电阻减小让电容电压缓慢下降就能跟踪输入信号的包络。放电时间常数决定了包络跟踪的速度。具体做法是在保持电容两端并联一个电阻阻值根据需要的放电速率计算。比如要在1毫秒内从5V降到4V时间常数约为[ \tau \frac{t}{\ln(5/4)} \frac{1ms}{0.223} 4.5ms ]如果电容为1nF电阻约为4.5兆欧。这个电阻的精度和温度稳定性会影响包络跟踪的准确性建议用金属膜电阻。另外如果需要检测负峰值只需把二极管和运放输入极性反过来即可。如果需要同时检测正负峰值可以用两个双运放架构分别处理或者用一片四运放实现。这个电路后续还可以扩展成峰值保持加模数转换的完整信号链用单片机定时读取第二级运放的输出就能实现数字化的峰值记录。我在另一个项目里就是这么做的用STM32的ADC采样配合复位电路实现了每秒1000次的峰值检测效果很稳定。