简介:《峰值检测电路》是一份面向电子工程学习者与硬件设计人员的专题文档,围绕峰值检测(PKD)的原理、误差来源与工程实现展开,适合正在做信号采集、自动增益控制或传感器最值检测的读者查漏补缺。包内为1个doc文件,约594KB,内容以原理讲解、电路对比和仿真/实验结论为主,篇幅集中,便于通读与检索。已有348人学习下载。文档从二极管加电容的基础结构讲起,分析正向压降、无缓冲导致电荷泄漏等误差,并延伸到“超级二极管”、输入输出缓冲、负饱和失真抑制及电容放电复位开关等改进措施;同时比较分立二极管电容型、比较器开集输出无二极管型以及集成PKD01等方案,给出500kHz以下、100mVpp以上输入时误差可控制在3%以内的经验参考。内容还提及高速场景下FPGA+DAC+比较器的实现思路,可帮助读者按频率、幅度、误差与成本权衡选型,并建立从原理到落地的完整认识。
1. 峰值检测电路:一只二极管加一只电容,凭什么敢叫"检测器"
把一只二极管和一只电容串起来,输出理应等于输入信号到过的最高电压——这句在纸面上成立的判断,接上示波器往往就翻车了。峰值检测电路(PKD,Peak Detector)要做的事只有两件:抓住最大值,然后按住不放。可就是这两件事,把理想器件和真实器件的差距放大到无法忽视:二极管的正向导通压降会把峰值削掉一截,运放的偏置电流会把存下来的电荷一点点吃掉,负饱和恢复会在高频下把波形扭出毛刺。想真正搞懂它,起点不是电路图,而是电荷怎么被搬进电容、又怎么漏出去。这套机制在自动增益控制(AGC)的倍数判定、传感器最值求取里天天用,却很少有人把"误差 10% 到底是谁造成的"算清楚。
2. 误差的真正来源:二极管压降为什么不是直接减掉 0.6V
2.1 朴素模型错在哪:充电电流和压降是同一个东西
按最直觉的推算,1V 峰值的输入经过一只正向压降 0.5V 的二极管,电容上应该停在 0.5V,误差 50%。可实际搭出来测,误差常常只有 10% 上下,跟"减掉一个固定压降"的结论差了好几倍。这个矛盾不是测量错了,而是模型错了——二极管的正向压降根本不是常数。
二极管的电流电压关系服从指数律,写成I = Is·(exp(Vd/VT) - 1),其中 VT 在室温下约 26mV,Is 是反向饱和电流,小信号管大致在皮安到纳安量级。反过来解,Vd = VT·ln(I/Is):电流 1mA 时压降可能 0.35V,电流 1μA 时只剩 0.18V,电流降到 10nA 时压降已经不到 60mV。而峰值检测的充电末期,恰好就是电流趋近于零的区间,压降自然也跟着趋近于零。
真正的约束藏在时间上。充电电流由Vin - Vc - Vd这三级差值驱动,随着 Vc 逼近 Vin,差值越来越小,电流呈指数衰减,电容上的电压就变成了一个"永远在接近、永远差一点"的渐近过程。误差和时间是同一个旋钮的两端:想让它更接近,就得等更久。这也是为什么简单的二极管加电容电路,在 1nF 电容、5kHz 正弦、2Vpp 输入下要 100ms 才稳定,而且残余误差还有 10%——它并没有停在错误的电压上,它只是还没爬到。
把这个过程量化一遍,比凭感觉调参有用得多:
import math VT = 0.026 # 热电压,室温下约 26 mV Is = 1e-9 # 二极管反向饱和电流的代表量级 C = 1e-9 # 峰值保持电容 1 nF A = 1.0 # 输入峰值幅度,对应 2 Vpp f = 5e3 # 输入频率 w = 2 * math.pi * f def charge_per_cycle(delta): """剩余误差为 delta 时,单个信号周期能补进来的电压增量""" I = Is * math.exp(delta / VT) # 峰值处的充电电流,指数律 t_win = 2 * math.sqrt(2 * delta) / w # 输入停留在峰值 delta 以内的时间 return I * t_win / C for d in (0.1, 0.05, 0.01, 0.001): dv = charge_per_cycle(d) n = d / dv # 大致还需多少个周期 print(f"delta={d*1000:6.1f} mV 单周期补 {dv*1e6:8.2f} uV 约需 {n:6.0f} 周期 / {n/f*1000:7.1f} ms")这段代码不仿真完整波形,只算"峰值附近那一段窗口里能搬多少电荷",因为非峰值区间的充电电流可以忽略。t_win用的是正弦在峰顶附近的抛物线近似,delta越小,窗口越窄,按平方根收缩;而电流按指数收缩,两者相乘就是单周期的补给量。跑出来的量级是这样:
| 剩余误差 | 峰值处充电电流 | 峰值窗口宽度 | 单周期补给 | 还需时间 |
|---|---|---|---|---|
| 100 mV | 约 47 nA | 约 28.5 μs | 约 1.34 mV | 约 15 ms |
| 50 mV | 约 6.8 nA | 约 20.1 μs | 约 138 μV | 约 73 ms |
| 10 mV | 约 1.5 nA | 约 9.0 μs | 约 13 μV | 约 152 ms |
| 1 mV | 约 1.0 nA | 约 2.9 μs | 约 3 μV | 约 67 ms |
每个数量级的误差,都要付出几十到上百毫秒的代价。这和实测"100ms 后稳定、误差 10%"完全对得上,也顺便说明了一个血泪经验:这类电路的精度指标不能单独看,必须和"允许多长时间建立"绑在一起说。想快,就得在别处动手——把二极管压降这一项从误差预算里彻底删掉。
2.2 超级二极管:把二极管关进运放的反馈环里
既然误差来自二极管压降,那就让它消失。做法是把二极管从"串联通路"搬进运放的负反馈环:运放同相端接输入信号,反相端接电容,二极管跨在运放输出与电容之间。二极管导通时,反馈环闭合,运放会主动把自己的输出抬高到"电容电压 + 二极管压降",于是电容端的电压就等于输入电压,压降被环路的增益吃掉了。
新的误差预算变成三项相加:运放输入失调电压 Vos、二极管压降除以开环增益Vd/Aol、以及环路有限增益带来的稳态残差。以 0.6V 压降、10 万倍开环增益计算,第二项只有 6μV,早就被毫伏级的失调电压淹没。所以超级二极管方案的精度瓶颈,从"器件物理"转移到了"运放参数",这是一个质的变化——失调可以选型、可以调零,而二极管的指数律没法调。
代价也随之而来。运放的输出摆幅必须能到输入峰值 + Vd,这意味着供电电压要预留出这一截余量;输入 4V 峰值、压降 0.6V,运放输出就得摆到 4.6V,5V 单电源直接没戏。还有一个更隐蔽的代价:在二极管截止的那半个周期,反馈环是断开的,运放变成了纯开环比较器。
2.3 负饱和恢复:超级二极管最容易被忽略的一段"失聪时间"
输入走负半周时,电容端电压高于输入,二极管反偏,反馈环断开,运放的输出被自身失调和开环增益推向负电源轨,深陷负饱和。等到输入重新转正,运放必须先从负饱和电压爬回"二极管刚好导通"的那个点,反馈环才重新闭合。这段时间里输出对输入是失聪的,输入变化被完全忽略。
这段延迟可以用压摆率粗算:负电源轨 -5V、导通点约 +0.6V,需要跨越 5.6V,若压摆率是 10V/μs,耗时 0.56μs。对 5kHz 信号这只是周期的 0.3%,几乎看不出来;可一旦信号上到 500kHz,0.56μs 已经占周期的 28%,输出严重失真,甚至直接把峰值判低。
常见的补救手段是在输入端和运放输出端之间跨接一只二极管做钳位:阳极接输入节点,阴极接运放输出。这样运放输出最低只能被顶到"输入电压减去一个压降"的位置,负饱和的深度从几伏缩到零点几伏,恢复时间同比缩短一个数量级。这个二极管的代价是会从信号源抽走一点电流,所以前级驱动能力要够。另外两条路也常用:换压摆率更高的运放(治标,成本上升),或者用差分/全波结构从根本上避免运放进入饱和(治本,复杂度上升)。选哪条,取决于你的信号最高频率和可接受的失真度。
3. 拆成四个模块:峰值检测器的通用骨架
3.1 峰值存储器:电容值是被两个时间夹出来的
电容是整个电路的"存储介质",它的容值同时被两个方向拉扯。容值大,保持时间长,但充电慢,建立时间被拖长;容值小,建立快,但任何一点漏电流都会迅速把电压拉下来。真正决定取舍的,是保持阶段能容忍多少跌落。
跌落量的估算非常朴素:ΔV = I_total · t_hold / C,其中 I_total 是所有接在电容节点上的漏电之和,包括缓冲运放的输入偏置电流、二极管的反向漏电流、电容自身的漏电流、以及后级电路任何形式的负载。这个公式看起来平淡,代入真实数字就很有冲击力:
C = 1e-9 # 保持电容 1 nF Ib = 100e-9 # 双极型运放输入偏置电流 100 nA Ifet = 75e-15 # 静电计级 FET 输入运放 75 fA Ileak = 10e-12 # 常温低反压下二极管反向漏电 10 pA for t_hold in (1e-3, 10e-3, 100e-3): d_bjt = (Ib + Ileak) * t_hold / C d_fet = (Ifet + Ileak) * t_hold / C print(f"保持 {t_hold*1000:5.1f} ms: 双极型跌落 {d_bjt:7.3f} V, FET 型跌落 {d_fet*1e6:8.2f} uV") Ron = 100.0 # 复位开关导通电阻 100 欧 print(f"复位时间常数 {Ron*C*1e9:.0f} ns,5 倍时间常数约 {5*Ron*C*1e6:.2f} us")前两行结果说明:同样是 1nF 电容,用 100nA 偏置电流的双极型运放,保持 1ms 就掉 0.1V,保持 100ms 时电压早已放光,压根谈不上保持;换成 75fA 偏置电流的静电计级 FET 运放,100ms 才掉 1mV,此时限制精度的已经不是运放,而是 10pA 的反向漏电。第三行是复位回路:100Ω 导通电阻配 1nF,时间常数 100ns,5 倍时间常数只要 0.5μs,所以复位脉冲可以做得极短——这也是为什么复位开关适合用模拟开关或小功率 MOS 管直接并到地。
还有一项容易被忽略的参数是电容的介质吸收。陶瓷电容的介质吸收表现为"充上去再放掉,过一会儿电压又自己爬回来一点",对峰值检测器的直接后果是复位不干净、下次测量从非零起点开始。C0G/NP0 材质的介质吸收极小,X7R 类高容值陶瓷则明显得多。选型时别只看容值和耐压。
3.2 单向电流开关:二极管只是其中一种答案
二极管承担"只许充、不许放"的整流职责,它的三个非理想参数都会咬人:正向压降(影响精度,前面已算过)、反向漏电(影响保持,上面也算过)、结电容(影响高频,输入快速下降时会通过结电容把电荷倒灌回信号源,造成电容电压被"拽下来"一点)。
因此工业上有两种替代做法。第一种是用开集(OC)或开漏(OD)输出的比较器直接充当单向开关:输出管导通时把电容往下拉(或从电容抽走电荷),关断时呈高阻,天然满足单向性。第二种是用场效应管接成二极管(栅漏短接或栅极接固定电位),反向电流比普通二极管小一到两个数量级,驱动能力也更强。
场效应管当二极管的代价是阈值电压离散性大、温漂明显,批次之间可能差几百毫伏。如果精度要求高,就得选低阈值型号,或者在电路上做阈值补偿。这条路上"用便宜的通用件凑"和"用参数可控的专用件"是两种完全不同的设计哲学,前者适合量小、要求不苛刻的场合,后者适合要批量交付的产品。
3.3 输入输出缓冲:偏置电流、压摆率、带宽三者的拉扯
输入侧运放的任务是提供高阻输入和足够驱动能力,把这个信号源"隔离"在电容之外。这里的关键参数是输入偏置电流,因为它直接叠加进 3.1 的漏电预算里。FET 输入运放能做到飞安级,CMOS 运放通常皮安级,双极型运放常在纳安到微安级,三者对应的最长保持时间差了四到六个数量级。
输出侧缓冲的任务正好相反:把电容上的电压"读"出来送给后级,同时不让后级的负载电流回流到电容。它必须接成电压跟随器,且自身输入偏置电流也要足够小——很多人只盯着输入缓冲的选型,忘了输出缓冲的偏置电流才是真正吊在电容节点上的那一份。
第三个参数是压摆率和增益带宽积。峰值检测器在捕获瞬间需要快速跟随输入上升沿,如果压摆率不够,输出会滞后于输入,导致捕获到的峰值偏低。这里有个经验性的判断:输入信号的最高频率乘以峰值幅度,再乘以一个 5 到 10 的安全系数,得到的值应该落在运放压摆率和带宽的舒适区内。
3.4 复位开关:放电回路怎么接才不留残渣
复位开关不是必须的,当电容值选得足够小、两次采样间隔又足够长时,自然泄放就够用。但在需要连续测量、或者要保持时间很长的场合,必须有一条确定的放电通路。
接法很简单:模拟开关或 MOS 管跨接在电容两端,控制端给一个短脉冲。设计上有三个细节。第一是导通电阻要足够小,让放电时间常数远小于复位脉宽,否则复不到位;第二是电荷注入,模拟开关在切换瞬间会把一小包电荷注入节点,容值越小这包电荷造成的电压跳变越大,1nF 电容上几皮库的注入就对应几毫伏的残差;第三是复位脉宽不能省,看着时间常数只有 100ns,也至少要给到 5 倍时间常数再加一点余量。
4. 三种经典拓扑:从分立管到集成块的取舍
4.1 分立二极管电容型:FET 运放配上场效应管
这条路线是把性能推到极致的做法:第一级用静电计级 FET 输入运放,输入偏置电流低到 75fA 这个量级,漏电预算几乎可以忽略;第二级用场效应管接成二极管,既压低了反向电流,又提高了第一级运放的输出驱动能力;电容旁边还会并一只小容值电容,用来抑制环路自激——因为没有它的时候,运放驱动容性负载很容易在某个频率上起振,输出上叠一层高频振荡,峰值反而被判高。
这条路线代价不低:静电计级运放价格高、供货周期长、对静电敏感,场效应管的阈值离散又要单独筛选。所以实际项目里更常见的是"降级版":用通用双运放配一只小信号开关二极管,性能够用、成本可控,代价是偏置电流从飞安级退化到纳安级,保持时间相应缩短。
这一整类电路的有效工作频率范围大致在 500kHz 以下,对 100mVpp 以上的输入,误差可以压到 3% 以内。低于 100mVpp 时情况会明显恶化,因为信号幅度本身已经接近二极管压降的量级,指数律的非线性开始主导,误差迅速膨胀。
4.2 无二极管型:用比较器的开集输出去顶替二极管
把比较器的开集输出直接当开关用,能省掉独立的二极管,性价比很高。典型接法是:比较器同相端接输入信号,反相端接电容电压,输出端通过上拉电阻接正电源、同时接电容。输入高于电容电压时,比较器输出管关断,上拉电阻给电容充电;电容电压追上输入后,比较器翻转,输出管导通,把充电通路拉低,电容电压被"锁"住。
这个结构的巧妙之处在于,比较器同时完成了"比较"和"开关"两件事,成本极低。但它也有几处必须注意。输出高电平受开集管的饱和压降和上拉电阻影响,实际上限可能比电源低几百毫伏,做高幅度检测时要留余量。充电速度由上拉电阻和电容的乘积决定,电阻取大了建立慢,取小了静态功耗高、比较器灌电流能力可能不够。更麻烦的是峰值附近比较器会在门槛上下反复翻转,输出在"充一点、停一下"之间循环,示波器上表现为一段细密的爬坡纹波。
也正因为行为依赖比较器的实际传输特性和输出级结构,这类电路在仿真里常常跑不出预期结果——模型里的开集输出、迟滞、传输延迟和真实器件差得远。遇到仿真不收敛、结果对不上,先别急着改拓扑,多半是模型的问题,最终还得靠实测。
4.3 集成方案:省事,但把自由度一起交出去了
集成峰值检测器把二极管、电容、缓冲、复位全部做进一颗芯片,外围只需几个元件,本质结构仍是"二极管加电容加缓冲",只是内部匹配做得好、寄生小。它适合对体积和开发周期敏感、对绝对精度要求不极端的场合。
但集成就意味着带宽、保持时间、输出摆幅这些指标被厂家定死,没法按自己的信号特征优化。而且这类专用芯片通常价格不便宜、封装偏大、供货也不如通用运放稳定。把它和分立方案放一起对比,取舍就很清楚了:
| 维度 | 分立二极管电容型 | 无二极管(开集比较器)型 | 集成方案 |
|---|---|---|---|
| 有效带宽 | 约 500kHz 以内 | 中等,受上拉与容性负载限制 | 由芯片规格决定,通常更低 |
| 典型误差 | 100mVpp 以上可到 3% 以内 | 受饱和压降与翻转抖动影响 | 厂家标称,改不了 |
| 元件成本 | 低到中等 | 最低 | 最高 |
| 调试自由度 | 高,参数可逐项优化 | 中,主要调上拉与容值 | 低 |
| 适合场景 | 精度优先、需定制 | 成本优先、指标宽松 | 周期优先、体积敏感 |
5. 排查清单:峰值检测电路接上示波器后最常见的四个坑
5.1 现象:输出缓慢爬升,怎么等都差最后一截,加大输入幅度也没用
原因几乎总是建立时间不够,而不是电路坏了。前面算过,充电末期的电流按指数衰减,误差每降一个数量级就要多等几十到上百毫秒。很多人看到"输出比输入峰值低 10%"就去换运放、换二极管,其实只把示波器时基调到 100ms/格,就能看到电压还在慢慢往上走。
解决方向有两个。一是提高峰值附近的充电电流,比如减小电容、降低二极管串联等效电阻、或者提高信号源驱动能力;二是干脆换拓扑,用超级二极管把压降项从预算里去掉,让误差只剩失调电压这一项。如果测量节拍本身很慢(比如几百毫秒一次),那这个"慢"根本不是问题,别为它过度设计。
5.2 现象:示波器探头一碰输出,电压立刻往下掉;接上万用表或 ADC,峰值直接塌了
这是典型的负载泄放。电容节点上挂着高阻,任何后级输入阻抗都不是无穷大,哪怕是 10MΩ 的探头,配上 1nF 电容也构成 10ms 量级的时间常数,测一次就把电荷放掉一截。万用表和 ADC 输入的偏置电流更是雪上加霜。
解决办法是把输出缓冲做扎实:电容节点后面必须跟一级高输入阻抗、低偏置电流的电压跟随器,后级负载一律挂在跟随器之后。测量时优先用高阻探头(10MΩ 以上)或低输入电容的有源探头,读数在触发后的固定时刻采,别等示波器自动测量功能慢慢算。
5.3 现象:低频正弦测得好好的,一上到几百千赫兹,输出峰值明显偏低,波形上还有毛刺
根因在负饱和恢复。超级二极管结构在输入负半周把运放推进负饱和,输入转正后要先爬回来才能重新闭环,这段失聪时间在低频下占比极小,高频下就成了主要误差来源。毛刺则往往来自运放驱动容性负载时的环路自激。
处理顺序建议这样:先在输入端与运放输出之间加钳位二极管,把负饱和深度压下去;再检查反馈环路上有没有留相位裕度,必要时在电容旁并一只小
本文还有配套的精品资源,点击获取