资讯动态

峰值检测电路设计避坑指南:从二极管加电容到精密运放方案

发布时间:2026/10/15 7:24:58 来源:尧图企业网站定制
简介峰值检测电路是电子工程中用于提取并保持输入信号最高电压值的基础电路广泛应用于通信、数据采集与自动增益控制等场景。本资源面向电子设计竞赛选手、模拟电路学习者及硬件工程师系统梳理峰值检测电路从原理到实现的完整知识脉络。压缩包内为1个doc文档约594KB内容涵盖二极管加电容的基本结构、超级二极管改进方案、输入输出缓冲隔离设计以及电容放电复位开关的引入并对比了分立二极管电容型、无二极管型与集成PKD等不同实现方式还涉及TI、ADI等厂商的器件选型思路与误差控制要点。目前已有345人学习下载适合希望深入理解峰值检测原理、优化电路设计并提升信号峰值捕获精度的读者参考。1. 峰值检测电路为什么一个二极管加电容反而最容易翻车峰值检测电路在信号采集、包络提取、脉冲幅度测量里出现频率极高很多做传感器前端、超声接收、射频检波、音频包络的工程师第一反应都是“一个二极管加一个电容不就行了”。但真正把板子打出来、把示波器接上去十有八九会看到输出比输入低了一截、峰值保持不住、或者干脆跟着信号一起往下掉。问题不在拓扑本身而在于峰值检测电路是一个典型的“理论三行、落地三天”的模拟电路二极管的导通压降、运放的输入偏置电流、电容的漏电流、后级负载的阻抗任何一个参数没算清楚峰值就会以你意想不到的方式溜走。这篇笔记面向的是需要把峰值检测真正做进产品里的硬件工程师和嵌入式开发者不是只跑一次仿真看波形的那种。我会从最基本的二极管加电容结构讲起说清楚它为什么不准再一步步推到精密峰值检测的运放补偿方案、复位与保持控制、参数选型和实测排查。中间会给出可以直接抄的电路参数计算、SPICE 仿真网表、以及用 MCU 做峰值采样的代码框架。如果你正在做脉冲幅度检测、超声包络提取、或者需要把窄脉冲的峰值锁存下来给 ADC 慢慢采这篇内容应该能帮你少走几轮打样。2. 从二极管加电容到精密峰值检测拓扑选型与误差来源2.1 最朴素的峰值检测电路长什么样最原始的峰值检测就是二极管串联一个保持电容。输入信号上升时二极管导通电容被充电到接近输入峰值输入下降时二极管反偏电容上的电荷理论上应该保持住。电路简单到只有两个元件但它的误差来源非常明确。Vin ──||──┬── Vout │ C │ GND这个结构的问题有三个。第一二极管正向导通压降在 0.3V 到 0.7V 之间输出永远比输入峰值低一个 Vf而且 Vf 随温度和电流变化不是常数。第二电容上的电荷会通过二极管的反向漏电流、电容自身漏电流、以及后级负载持续泄放峰值保持时间有限。第三当输入信号频率较高时二极管结电容和反向恢复时间会让电路根本来不及响应。我一般会先估算一个指标如果输入峰值是 1V允许误差 5%那二极管压降就已经吃掉 30% 到 70%这个拓扑直接不能用。只有在输入幅度远大于 Vf、且对精度要求不高的场合比如简单的过压指示才考虑这个结构。2.2 精密峰值检测怎么把二极管压降“藏”进反馈环要消除二极管压降常见做法是把二极管放进运放的反馈环路里。运放的高开环增益会把二极管两端的电压差压到几乎为零输出端得到的电压就接近输入峰值减去一个极小的误差项。典型电路是运放同相输入端接信号输出通过二极管到保持电容电容上的电压再反馈到运放反相输入端。这样运放会主动调整输出使电容电压跟随输入峰值。二极管在反馈环内其压降被运放的增益“吸收”掉了。┌─────||─────┬──── Vout │ │ Vin ────┤ C │ │ └──────┬──────┘ │ GND这个结构里运放的选择比二极管更关键。输入偏置电流会直接对保持电容充放电偏置电流 1nA 的运放和 1pA 的运放在 1uF 电容上的保持时间差三个数量级。另外运放的压摆率要足够否则跟踪快速脉冲时输出跟不上峰值还没建立起来输入已经过去了。2.3 保持电容和复位开关的参数怎么定保持电容 C 的取值是一个权衡。C 越大保持时间越长但充电时间常数也越大对窄脉冲的响应变差。充电时间常数近似为运放输出阻抗加二极管动态电阻乘以 C实际中更直接的限制是运放输出电流能力。假设输入脉冲宽度 10us要求电容在脉冲结束前充到峰值 99%那时间常数要小于 10us/5 2us。如果充电回路等效电阻约 100 欧C 就要小于 20nF。但 C 太小漏电流导致的电压下降就快。保持阶段的电压下降速率 dV/dt I_leak / CI_leak 包括二极管反向漏电、运放输入偏置、电容自身漏电、后级输入偏置。如果总漏电流 1nAC 取 10nF那下降速率是 0.1V/s保持 1ms 下降 0.1mV可以接受。如果 C 取 100pF下降速率就是 10V/s1ms 就掉 10mV精度直接崩。复位开关用来在每次测量前把电容电压清零。常见用 MOSFET 或模拟开关关键是关断时的漏电流要小导通电阻要低。复位脉冲宽度要足够让电容放完一般取 5 倍以上的放电时间常数。2.4 用 SPICE 快速验证峰值检测的建立和保持在打板之前我习惯先用 SPICE 跑一遍重点看三个波形输入脉冲、电容电压、以及复位后的残余电压。下面是一个可以直接跑的 LTspice 网表框架运放用理想模型先验证拓扑再换成实际型号。* 精密峰值检测仿真网表 V1 in 0 PULSE(0 1 1u 10n 10n 5u 20u) X1 in fb out OPAMP D1 out fb DFAST C1 fb 0 10n R1 fb 0 1G S1 fb 0 rst 0 SWMOD V2 rst 0 PULSE(0 5 0 10n 10n 1u 20u) .model DFAST D(IS1e-12 RS1 CJO1p) .model SWMOD SW(RON10 ROFF1G) .tran 0 100u 0 10n这里 R1 是人为加的泄放电阻用来模拟实际漏电流1G 欧对应 1nA 量级的漏电。仿真时先看 C1 电压能不能在 5us 脉冲内充到 0.99V 以上再看脉冲结束后 10us 内下降多少。如果下降超过允许值就要换更低偏置电流的运放或者加大电容。复位开关的导通电阻和关断漏电也要在模型里体现否则仿真结果会过于乐观。3. 运放选型与关键参数计算别让偏置电流偷走你的峰值3.1 输入偏置电流和输入失调电压哪个更致命在峰值检测里输入偏置电流 Ib 和输入失调电压 Vos 的影响方式不同。Vos 直接叠加在输出上是一个固定误差可以通过校准消掉。Ib 则是对保持电容的持续充放电是一个随时间累积的误差校准只能针对特定时间点不能消除漂移。对于保持时间要求长的场合Ib 是首要指标。假设保持电容 10nF允许在 1ms 内下降 1mV那允许的漏电流是 1mV * 10nF / 1ms 10nA。这个 10nA 要分给二极管反向漏电、电容漏电、后级输入偏置和运放 Ib。如果运放 Ib 就占了 5nA余量就很紧张。所以精密峰值检测里常见的是 CMOS 或 JFET 输入运放Ib 在 pA 到 fA 量级。Vos 的影响在低幅度信号时更明显。如果输入峰值只有 10mVVos 1mV 就是 10% 误差。这时候要选 Vos 在几十微伏级别的零漂移运放或者做软件校准。3.2 压摆率和增益带宽积对窄脉冲的影响运放压摆率 SR 决定了输出能多快跟上输入变化。如果输入脉冲上升沿是 100ns 内从 0 升到 1V等效斜率是 10V/us。运放 SR 必须大于这个值否则输出还没到峰值输入已经开始下降电容充到的电压就偏低。增益带宽积 GBW 影响小信号响应。峰值检测环路里运放工作在跟随器状态闭环带宽近似等于 GBW。如果输入脉冲包含高频成分闭环带宽不够会导致峰值被平滑掉。一般要求闭环带宽大于输入信号最高频率分量的 5 到 10 倍。选型时我会列一个表把 Ib、Vos、SR、GBW 四个参数按应用需求排序。窄脉冲优先看 SR 和 GBW长保持优先看 Ib低幅度优先看 Vos。3.3 保持电容的介质选择和漏电流实测电容介质对保持性能影响很大。瓷片电容的绝缘电阻通常在 10G 欧以上但不同介质差别很大。C0G 或 NP0 的漏电和压电效应最小适合做保持电容。X7R 和 Y5V 的绝缘电阻低一些而且有电压系数和压电效应在峰值保持这种高阻抗节点上容易引入误差。电解电容漏电流大不适合。薄膜电容漏电小但体积大。实际选型时我会优先用 C0G 瓷片容值在 1nF 到 100nF 之间根据保持时间和充电速度权衡。实测漏电流的方法很简单给电容充到一个已知电压断开所有充电路径用高输入阻抗的万用表或静电计每隔一段时间测一次电压算出 dV/dt再乘以 C 就是漏电流。注意测试时要控制湿度和板面清洁助焊剂残留会显著降低表面绝缘电阻。3.4 用 MCU 做峰值采样的代码框架如果峰值检测电路后面接 MCU 的 ADC采样时机和复位时序很关键。下面是一个基于定时器触发 ADC 的框架假设峰值保持电路由 GPIO 控制复位。// 峰值保持采样框架 // peak_hold_reset: 复位引脚高电平复位 // adc_read: 读取ADC原始值 // 采样流程复位 - 等待建立 - 启动ADC - 读取 - 计算电压 #define RESET_PULSE_US 2 #define SETTLE_US 5 #define ADC_TIMEOUT_MS 10 float measure_peak(void) { // 1. 拉高复位清空保持电容 gpio_set_high(PEAK_HOLD_RESET); delay_us(RESET_PULSE_US); gpio_set_low(PEAK_HOLD_RESET); // 2. 等待电路建立避开复位开关的电荷注入 delay_us(SETTLE_US); // 3. 启动ADC转换等待完成 adc_start_conversion(); uint32_t start get_tick_ms(); while (!adc_is_done()) { if (get_tick_ms() - start ADC_TIMEOUT_MS) { return -1.0f; // 超时保护 } } // 4. 读取并换算 uint16_t raw adc_read(); float voltage raw * ADC_VREF / ADC_FULL_SCALE; return voltage; }这段代码里复位脉冲宽度和建立时间需要根据实际电路调整。复位开关的电荷注入会在电容上留下一个小台阶建立时间不够的话 ADC 采到的就是台阶电压而不是真实峰值。ADC 采样时间也要考虑如果 ADC 输入有采样电容它会从保持电容上抽取电荷导致电压瞬间下降。解决办法是在保持电容和 ADC 之间加一个电压跟随器或者用足够大的保持电容让 ADC 采样造成的跌落可以忽略。4. 避坑与排查峰值检测电路最常见的五个翻车现场4.1 输出比输入峰值低一截而且随温度变现象输入 1V 峰值输出只有 0.6V 左右用手摸一下二极管或者吹热风输出还会变。原因二极管没有放进运放反馈环或者运放环路没有真正闭合。常见错误是运放输出直接接二极管阳极二极管阴极接电容但电容电压没有反馈到运放反相端运放工作在开环状态输出饱和二极管压降完全体现在输出上。解决检查反馈路径。电容上的电压必须回到运放反相输入端形成负反馈。如果用的是同相峰值检测结构确认反馈是从电容节点取不是从运放输出取。另外确认运放供电充足输出没有进入饱和区。4.2 峰值保持不住几十微秒就掉下来现象输入脉冲结束后输出在几十微秒内明显下降保持时间远低于预期。原因漏电流太大。可能是运放输入偏置电流高可能是二极管反向漏电大可能是电容介质漏电也可能是后级负载阻抗低。还有一个容易被忽略的是 PCB 表面漏电助焊剂没洗干净或者空气湿度大高阻抗节点的绝缘电阻会从 10G 欧掉到 100M 欧甚至更低。解决先算总漏电流预算再逐项排查。用高阻表测保持电容节点的对地电阻正常应该在 G 欧以上。清洗 PCB用异丙醇擦洗后吹干。换低 Ib 运放换 C0G 电容检查二极管型号是不是漏电大的开关管。后级如果直接接 ADC考虑加缓冲器。4.3 窄脉冲测不到峰值输出只有输入的一半现象输入脉冲宽度 1us 以下时输出峰值明显偏低脉冲越窄偏低越多。原因运放压摆率不够或者充电时间常数太大。运放输出需要一定时间才能把电容充到峰值如果脉冲宽度和充电时间可比电容还没充到峰值脉冲就结束了。解决换高压摆率运放减小保持电容减小充电回路电阻。二极管选结电容小、反向恢复快的型号比如肖特基二极管。如果还是不够考虑用峰值检测专用芯片内部有高速比较器和电流源响应时间可以做到纳秒级。4.4 复位后输出有残余电压每次测量不一致现象每次复位后输出不是零而是一个几毫伏到几十毫伏的残余电压而且每次还不一样。原因复位开关的电荷注入。MOSFET 或模拟开关在关断瞬间沟道电荷会注入到保持电容上形成一个台阶。台阶大小和开关的栅极电压、沟道电荷量有关每次关断的时序抖动会导致台阶不一致。解决用低电荷注入的模拟开关或者在开关和电容之间加一个串联电阻让电荷注入的影响减小。也可以在复位后加一个短暂的“归零采样”把残余电压读出来后续测量减去这个值。如果对精度要求高用差分结构两个保持电容对称复位开关的电荷注入在差分输出里抵消。4.5 后级 ADC 采样导致峰值跌落现象用万用表测保持电容电压正常接上 ADC 后电压就掉ADC 读数比实际峰值低。原因ADC 输入有采样保持电容采样瞬间会从外部节点抽取电荷。如果外部节点是高阻抗的保持电容电荷被抽走后电压就下降而且 ADC 采样时间越短下降越明显。解决在保持电容和 ADC 之间加电压跟随器输出阻抗低能给 ADC 采样电容快速充电。或者增大保持电容让 ADC 采样造成的电荷损失占比减小。也可以延长 ADC 采样时间让外部电容有时间恢复。但增大保持电容会影响充电速度需要权衡。5. 把峰值检测做稳的几个进阶习惯5.1 用差分结构抵消共模误差和电荷注入单端峰值检测对地参考任何对地的漏电和电荷注入都会直接体现在输出上。差分结构用两个匹配的保持电容和两套充电路径输入信号差分接入输出取两个电容电压之差。复位开关的电荷注入、电源噪声、温度漂移在差分输出里会部分抵消。代价是元件数量翻倍匹配要求高。两个保持电容的容值偏差、两个二极管的压降偏差、两个运放的失调偏差都会转化成差分误差。实际做的时候我会选同一批次、同一封装的电容和二极管运放用双运放封装保证温度一致。5.2 用软件校准把系统误差压到最低即使电路设计得再好运放失调、二极管残余压降、ADC 增益误差还是会留下系统偏差。如果系统里有 MCU可以用软件校准把这些误差消掉。校准方法在已知输入峰值下测一组 ADC 读数拟合出增益和偏移后续测量用这个系数反算。校准点至少两个覆盖量程的低端和高端。如果温度变化大可以在不同温度下做多点校准用查表或多项式拟合。注意校准只能消系统误差不能消随机噪声和漏电流导致的漂移。漏电流漂移是时间相关的校准解决不了还是要在电路上把漏电流压下去。5.3 实测时先看这三个波形调试峰值检测电路时我习惯先把示波器接在三个点上输入信号、运放输出、保持电容电压。输入信号看脉冲形状和幅度运放输出看有没有饱和或振荡保持电容电压看建立和保持过程。如果运放输出有振荡说明环路相位裕度不够可能在运放输出和二极管之间需要加小电阻隔离容性负载。如果保持电容电压建立太慢看运放输出电流是否受限。如果保持阶段电压下降快先查 PCB 清洁度和湿度再查元件漏电。示波器探头本身有输入电容和输入电阻接在高阻抗节点上会影响测量结果。用 10:1 无源探头时输入阻抗约 10M 欧对 10nF 保持电容来说时间常数 0.1ms会明显加速电压下降。测量保持阶段时用高阻探头或者静电计或者接受探头负载并把它算进漏电流预算里。5.4 一个容易忽略的细节电源去耦和地线布局峰值检测电路里运放的电源抑制比有限电源上的噪声会耦合到输出。保持电容节点是高阻抗任何电源纹波通过运放或二极管耦合过来都会被保持住。去耦电容要靠近运放电源引脚容值组合用 100nF 加 10uF高频噪声大的场合再加 1nF。地线布局上保持电容的接地端要单独走线回到运放的地参考点不要和数字地或大电流地混在一起。高阻抗节点周围可以加保护环用运放的地或者缓冲后的低阻抗节点驱动保护环把表面漏电流引开。5.5 什么时候该放弃分立方案改用集成峰值检测芯片分立运放加二极管加电容的方案元件少、成本低、灵活适合大多数常规需求。但如果要求响应时间在几十纳秒以内、或者保持时间在秒级以上、或者精度要求优于 0.1%分立方案会变得很吃力。集成峰值检测芯片内部通常有高速比较器、精密电流源、低漏电保持电容和缓冲输出响应时间和保持性能比分立方案好很多。代价是成本高、供货周期可能长、封装小不好手工焊接。选型时重点看三个指标峰值建立时间、保持下降速率、输入带宽。如果这三个指标里有两个以上分立方案达不到就值得考虑集成芯片。我自己在做超声包络提取时一开始用分立方案脉冲宽度 200ns运放压摆率 50V/us保持电容 10pF结果输出峰值只有输入的 70%。后来换成集成峰值检测芯片同样脉冲宽度下误差降到 2% 以内。那次之后我养成了一个习惯先算清楚建立时间和保持时间这两个指标再决定用分立还是集成。分立方案不是不能用但要在参数上留足余量别等到板子回来才发现响应不够。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑