简介「峰值检测电路」文档面向电子工程初学者与电子设计竞赛参赛者聚焦信号峰值提取与保持这一基础环节帮助读者理解从二极管加电容的简易结构到运放「超级二极管」改进方案的选型逻辑。全包仅1个doc文件约594KB内容按原理剖析、电路分类与器件选型展开先以TINA-TI仿真对比简单检波与超级二极管的误差差异再说明输入输出缓冲、电容放电复位开关等模块的作用随后介绍分立二极管电容型、无二极管型以及ADI PKD01集成方案并给出500kHz以下、100mVpp以上输入误差约3%的实测经验。文中还提及FET运放降低偏置电流、防止运放负饱和失真等工程细节对程控增益放大器倍数判据的选取亦有讨论。已有348人学习适合希望快速建立峰值检测电路设计框架、为实际搭建与调试做准备的读者参考。1. 需求切入为什么峰值保持比峰值比较更难做峰值检测电路看着像模电课本里的一页但真正把它做成能交付的毕设或课设方案难点不在“取最大值”四个字而在保持、复位和误差控制。自动增益控制里常用正峰值判断该选哪一档增益有人图省事拿有效值芯片做判据实际测试时会发现有效值和信号正负峰值没有必然联系成本也不友好。这套方案要解决的是输入从几十毫伏到几伏、频率从直流到几百千赫电路输出一个与历史最大正峰值对应的直流电压直到更大峰值出现或复位信号到来。它适合正在做模拟电路课程设计、电子类毕业设计的学生也适合需要给传感器最值采样做前端保持的从业者。2. 原理拆解电容、单向开关、缓冲与复位四个模块2.1 基本拓扑与误差来源最朴素的峰值检测器只有两个核心器件一个二极管和一个电容器。输入信号通过二极管给电容充电当输入电压高于电容电压时二极管导通电容电压跟随输入上升输入回落时二极管反偏电容上的电压保持住。这个结构在面包板上十分钟能搭出来但它只能算原理验证离可交付方案还有距离。第一个误差来自二极管的正向导通压降。输入峰值经过二极管后输出会比实际峰值低一个导通压降输入幅度越小相对误差越大。第二个误差来自电容的电荷泄漏输出端只要接上负载、运放输入偏置电流或 PCB 表面漏电电容电压就会缓慢下跌保持时间越长误差越明显。第三个误差来自充电速度电容越大保持越好但充电时间常数也越大高频窄脉冲还没充到峰值就结束了。提示仿真里用理想二极管模型时这两个误差经常被掩盖等到实物测试才翻车。我一般先做一张误差预算表把二极管压降、运放偏置、电容漏电、复位电荷注入分别列出来再决定用哪种拓扑。下面这张表可以直接套到自己的指标里把“允许误差”拆到每个模块头上后面选运放和电容时就不会凭感觉。误差项典型来源影响表现处理方向二极管压降普通二极管正向导通小信号峰值偏低非线性超级二极管或比较器开集输出运放偏置电流输入级偏置电流流过保持电容保持电压缓慢下跌或上升低偏置电流运放、输入缓冲电容漏电电容介质、PCB 表面污染长时间保持掉压低泄漏电容、保护环、清洁复位电荷注入开关断开瞬间注入电荷复位后残留底数先断输入再复位、对称开关输出缓冲失调缓冲运放失调电压固定直流偏移选低失调运放或软件校准2.2 超级二极管与负饱和恢复把二极管放进运放的负反馈环里就得到常说的“超级二极管”。运放会主动抬高输出把二极管压降补偿掉误差从几百毫伏降到毫伏级。这个结构在低频、大信号下很好用但有一个容易被忽略的毛病输入从负电压往正电压爬升时运放要先从负饱和状态退出来再通过二极管闭合反馈环。退出饱和需要时间输入变化快的时候输出会短暂失真峰值保持的起点就不准了。解决思路不是一味换更快的运放而是在输入处理环节加防负饱和措施。常见做法是在输入和输出之间再加一个二极管做钳位让运放输出不要深度饱和也有方案在反馈路径上并联小电容牺牲一点带宽换稳定性。我的经验是先把输入信号的最小负摆幅和最高频率定下来再选摆率足够的运放最后用仿真看负饱和恢复段别等画完板子才发现。超级二极管也不能包打天下。输入信号很小、频率又高时运放的输入偏置和噪声会变成主要误差输入信号很大时运放的输出摆幅和恢复时间又成了瓶颈。它适合几百千赫以下、百毫伏以上的场景正好覆盖大多数课程设计和传感器最值采样。2.3 模块划分与指标定义把电路拆开看峰值检测器可以分成四个模块模拟峰值存储器也就是保持电容单向电流开关可以是二极管、三极管或比较器开集输出输入输出缓冲隔离通常是运放电容放电复位开关用模拟开关、三极管或继电器都行非必须但强烈建议留。模块划分清楚之后指标才有地方落。输入范围决定缓冲运放的共模范围和供电频率上限决定运放带宽和充电电流保持时间决定电容值和泄漏要求复位时间决定放电电阻和开关速度输出接口决定要不要加低通滤波和驱动缓冲。下面这张接口表是我做方案时先填的填完再画原理图能少改两版。模块输入输出关键约束输入缓冲被测信号低阻抗驱动共模范围、输入偏置、带宽单向开关缓冲输出充电电流正向压降、反向漏电、恢复时间峰值存储器充电电流保持电压电容容差、介质吸收、漏电输出缓冲保持电压低阻抗输出失调、输入偏置、负载能力复位开关复位控制放电回路电荷注入、导通电阻、时序指标不用一上来就写“高精度”。课程设计通常定在 0 到 500kHz、100mVpp 到 5Vpp、误差不超过 3%、保持时间不低于 10ms、复位时间不超过 10us这几个数足够撑起一份完整方案也方便实测。频率再往上走二极管加电容的结构就跟不上了要换比较器加 DAC 的数字方案。3. 方案选型从分立二极管到数字比较的五条路线3.1 分立二极管电容型便宜但有边界分立二极管加电容加运放是最容易落地的一条路线。公开数据手册里有一个经典结构输入用低偏置电流的静电计级运放做缓冲二极管放在反馈环里保持电容接在输出端另加一个小电容防止自激。低偏置电流运放的价值在于它的输入偏置电流小到皮安甚至飞安级不会把保持电容上的电荷抽走小电容则是用来压住高频振荡属于调试时救命的东西。实际做课设不必追求静电计级运放。通用双运放加小信号开关二极管性价比更高500kHz 以下、100mVpp 以上做到 3% 以内是有机会的。这里的关键不是运放多贵而是输入偏置电流和输出摆幅要匹配。双运放的一半做输入缓冲另一半做输出缓冲二极管放在两个运放之间保持电容靠近输出缓冲的输入脚复位开关并在电容两端。这个方案最容易踩的坑是输出缓冲自激。保持电容直接挂在运放输出端时容性负载会让某些运放振荡现象是输出线上叠了几十毫伏的高频毛刺峰值读数一直跳。处理办法是在输出缓冲前串一个小电阻或者把保持电容接到一个高阻抗节点上再由缓冲器隔离。别小看这个电阻它经常决定实物能不能稳定读数。3.2 无二极管开集比较器型把单向开关换掉无二极管型用比较器的开集三极管或开漏 MOS 代替二极管。比较器比较输入和保持电容电压输入更高时输出管导通给电容充电输入低于电容电压时输出管截止电容保持。这个结构省掉了二极管压降成本也低但比较器的响应速度和输出管饱和压降会影响精度。公开数据手册里有很简单的峰值检测电路看起来几个器件就能完成。实际调试时要注意两点开集输出必须加上拉电阻上拉电阻太大会拖慢充电速度太小会增加功耗和比较器输出管的负担比较器输入端的偏置电流和失调电压会直接变成峰值误差输入信号小的时候尤其明显。还有一点这类电路在仿真里不一定顺利收敛。比较器开集输出加上电容负载仿真器容易把工作点算到奇怪的状态现象是输出一直不充电或者一直饱和。遇到这种情况先检查上拉电阻和初始条件再检查比较器输出管模型是不是理想开关。仿真跑不通不代表电路不能做但实物一定要用示波器看充电波形和保持段。3.3 集成峰值检测与高速数字比较路线集成峰值检测芯片把二极管、电容和缓冲做在一起外围电路少适合空间紧张或不想调模拟环路的场景。它的本质仍然是二极管加电容性能要看数据手册的保持下降率、带宽和复位方式。选型时别只看“集成”两个字要盯着输入范围、输出驱动能力和复位后残留尤其是复位开关的电荷注入集成芯片也躲不开。频率再高模拟保持电容的充电时间就不够了。我见过的高速方案是 FPGA 加 DAC 加快速度比较器DAC 输出一个参考电压比较器比较输入信号和参考电压FPGA 控制 DAC 电压逐步逼近并记录比较器翻转点最后把峰值对应的数字量锁存。这个方案把模拟保持变成了数字搜索精度取决于 DAC 位数和比较器延迟适合高频、高重复性的场景。这条路线对课程设计来说偏重但如果毕设题目要求“高速峰值检测”或“数字峰值检测”它反而是个完整的故事。实现时把 DAC 更新速率、比较器传输延迟、FPGA 状态机节拍算清楚再留一个串口或并口把峰值读出来方案就闭环了。3.4 选型矩阵与适用边界选型不要凭“哪个高级用哪个”按指标打分更稳。下面这张矩阵把五条路线放在一起分数按课程设计的常见权重给精度、带宽、成本、调试难度、可扩展性。分数不是绝对标准但能逼着人把需求想清楚。路线精度潜力带宽成本调试难度适用场景普通二极管加电容低低很低低原理演示、大信号超级二极管中高中中中500kHz 以下精密保持开集比较器中中低中成本敏感、中等精度集成峰值检测中中中高低空间受限、快速落地FPGA 加 DAC 加比较器高高高高高速、数字化输出我的建议是课程设计优先选超级二极管路线器件通用、资料多、指标够用毕设如果题目偏高速再考虑数字比较路线。集成芯片可以作为对比方案写进论文但别把“集成”当成性能保证。选型矩阵填完方案章节的对比表也就有了。4. 落地实现参数计算、仿真验证与复位时序4.1 保持电容、复位电阻与误差计算保持电容的选值要在充电速度和保持时间之间折中。电容越大保持时间越长但充电电流有限时高频窄脉冲充不到峰值。我一般先按保持时间算最小电容再按充电时间算最大电容取中间值。下面这段 Python 把保持掉压、复位时间和充电斜率一起算出来改几个参数就能套自己的指标。# 峰值保持电容参数估算 # C: 保持电容单位 F # I_leak: 总泄漏电流单位 A运放偏置 电容漏电 PCB 漏电 # t_hold: 要求保持时间单位 s # R_reset: 复位放电电阻单位 ohm # I_charge: 可用充电电流单位 A C 1e-9 # 1 nF I_leak 1e-9 # 1 nA偏保守的泄漏估计 t_hold 10e-3 # 10 ms R_reset 100.0 # 100 ohm I_charge 10e-3 # 10 mA # 保持期间掉压dV I * t / C dv_hold I_leak * t_hold / C print(保持掉压(V):, dv_hold) # 复位时间按 5 倍 RC 估算到 99% 放电 t_reset 5 * R_reset * C print(复位时间(s):, t_reset) # 充电斜率dV/dt I / C slew I_charge / C print(充电斜率(V/s):, slew) # 若输入是 500 kHz 方波半周期 1 us看能充多少 half_period 0.5 / 500e3 print(半周期内可充电电压(V):, slew * half_period)这段代码的输出不是最终答案而是用来判断选值是否离谱。1nF 电容、1nA 泄漏、10ms 保持掉压大约 10mV对 1V 峰值是 1% 误差可以接受如果泄漏估算到 10nA掉压就变成 100mV必须换低泄漏电容或缩短保持时间。复位时间 5×100Ω×1nF 是 0.5us满足 10us 以内的要求。充电斜率 10V/us500kHz 方波半周期 1us 能充 10V看起来够但实际运放输出电流会随压差下降所以仿真时还要看大信号阶跃。注意电容的介质吸收比容差更隐蔽。聚丙烯或聚苯硫醚电容的保持特性通常比普通陶瓷电容好具体选型要看数据手册的介质吸收指标别只看容值。复位开关的导通电阻也要算进去。模拟开关导通电阻大放电时间会变长三极管饱和压降在电容电压很低时放电会变慢留下几毫伏残留。解决方法是先用一个小的放电电阻快速拉到接近零再用一个较大的电阻拉底或者干脆用推挽式复位。课程设计里用一个小信号 MOS 管加限流电阻就够但复位后一定要等电容电压稳定再开始下一次采集。4.2 仿真验证先看瞬态再看负饱和仿真不要只跑一个正弦波就结束。我通常分三步第一步跑直流工作点确认运放输入输出没有饱和、二极管有正确偏置第二步跑瞬态输入用 5kHz、2Vpp 正弦观察充电建立时间和保持段掉压第三步跑输入从负电压快速翻正的波形专门看超级二极管的负饱和恢复段。瞬态仿真里要把保持电容的初始条件设好否则输出会从零开始爬看起来建立时间很长。输入源的内阻也要加上真实信号源不会理想为零。二极管的模型尽量用带结电容和反向恢复的理想开关模型会把恢复时间藏掉。运放模型至少要有压摆率和输出电流限制否则仿真出来的充电斜率比实物乐观。仿真通过不代表实物通过但仿真不通过一定要先找原因。常见现象是输出在输入峰值附近振荡原因是输出缓冲带容性负载另一个现象是保持段一直往下掉原因是仿真里给保持电容并联了不该有的电阻或者输出缓冲的输入偏置模型不对。把这两个问题排掉再去画板子。4.3 复位时序与微控制器控制复位不是拉一下开关就完事。输入还在变化时复位电容刚放完又被充电输出会停在某个中间值复位开关断开时的电荷注入还会在电容上留下一个小台阶。稳妥的时序是先断开输入开关或把输入缓冲置零再闭合复位开关等放电完成断开复位开关最后恢复输入。下面这段 C 代码是一个简单的状态机用在微控制器上控制三个引脚。// 峰值检测复位时序控制伪代码引脚名按实际改 // input_en: 输入开关使能1 接通0 断开 // reset_en: 复位开关使能1 放电0 释放 // ready: 输出给采集端的就绪标志 #include stdint.h #define DELAY_DISCHARGE_US 20 #define DELAY_SETTLE_US 50 static void delay_us(uint32_t us); void pkd_reset_sequence(void) { // 1. 先切断输入避免复位期间又被充电 input_en 0; delay_us(2); // 2. 闭合复位开关给保持电容放电 reset_en 1; delay_us(DELAY_DISCHARGE_US); // 3. 先断开复位开关再等电荷注入稳定 reset_en 0; delay_us(DELAY_SETTLE_US); // 4. 恢复输入允许下一次峰值捕获 input_en 1; } uint8_t pkd_read_ready(void) { // 采集端在复位完成后读取这里用简单标志示意 return ready; }这段代码的重点是顺序不是延时数值。DELAY_DISCHARGE_US要大于 5 倍放电时间常数DELAY_SETTLE_US要覆盖复位开关的电荷注入和运放恢复。实际调试时用示波器同时看复位引脚和保持电容电压先把放电段看清楚再调延时。输入开关如果用的是模拟开关注意它的导通电阻和电荷注入别把复位残留当成运放失调。4.4 布局与保护环模拟保持节点是高阻抗节点布局比原理图更容易翻车。保持电容要靠近输出缓冲的输入脚走线尽量短复位开关的放电回路要单独走避免放电电流流过输入缓冲的地输入和输出不要平行长距离走线减少耦合。PCB 表面如果残留助焊剂几纳安的漏电就能让 10ms 保持掉几十毫伏清洗和阻焊选择比换运放更有效。有条件的话在保持节点周围加保护环把保护环接到与保持电压相近的低阻抗节点或者接到缓冲器的输出。保护环不能随便接地接地会引入新的漏电通路。面包板阶段很难做保护环所以面包板测出来的保持时间通常比 PCB 差别用面包板数据下最终结论。5. 避坑排查五类翻车现象的原因与处理5.1 超级二极管高频失真负饱和恢复不是玄学现象输入从负电压快速翻正时输出不是立刻跟随而是先停一段再爬升峰值读数偏低频率越高越明显。原因运放深度负饱和退出饱和需要时间二极管反馈环在这个窗口里没有闭合。解决在输入和输出之间加钳位二极管限制运放负摆幅选压摆率足够的运放在反馈路径加小电容加速恢复必要时把输入信号抬到正电压范围避免运放进入负饱和。这个坑最容易被仿真掩盖因为理想运放没有饱和恢复时间。实物调试时用方波或窄脉冲看上升沿别只用正弦波。正弦波过零慢恢复段被掩盖方波才是照妖镜。5.2 保持段掉压先查漏电再查偏置现象峰值保持后输出在几十毫秒内缓慢下跌输入越大跌得越明显。原因保持电容漏电、PCB 表面污染、输出缓冲输入偏置电流、复位开关关断漏电。解决换低泄漏电容清洗 PCB 并做保护环选低偏置电流运放复位开关选关断漏电小的型号在保持节点加高阻抗缓冲避免负载直接挂在电容上。排查时先断开负载看掉压是否消失再断开复位开关看是否改善最后用干净板子对比。别一上来就换运放很多时候是板子没洗干净。5.3 输出缓冲自激容性负载惹的祸现象输出直流上叠了几十毫伏到几百毫伏的高频振荡峰值读数跳动示波器触发不稳。原因保持电容是容性负载某些运放驱动容性负载会相位裕度不足。解决输出缓冲前串小电阻隔离在反馈电阻上并联小电容补偿选单位增益稳定且容性负载能力强的运放把保持电容接到高阻抗节点由缓冲器隔离。这个现象在面包板上尤其常见因为面包板寄生电容大。先降低带宽看振荡是否消失再逐步加补偿别用大电容硬压会把响应压死。5.4 复位残留电荷注入和时序不对现象每次复位后输出不是零而是几毫伏到几十毫伏的底数连续复位底数还会漂。原因复位开关断开瞬间注入电荷输入没有断开导致电容又被充电放电时间不够。解决先断输入再复位复位开关用对称结构或加小电阻限制注入放电时间取 5 倍以上时间常数复位后等运放恢复再采集。用示波器看复位引脚和电容电压的时序先把放电段和恢复段分开再调延时。软件上加一次空复位读数做底数校准也是个实用办法。5.5 仿真通过实物失败模型和负载没对齐现象仿真波形漂亮实物误差大、保持短、还振荡。原因仿真用了理想二极管、理想运放、理想电容没带负载实物有源内阻、PCB 漏电、探头电容。解决仿真加信号源内阻、运放压摆率和输出电流限制、二极管结电容实物测试用高阻探头注意探头电容对保持节点的影响把仿真和实测的波形叠在一起看差异。我一般会留一版“最坏情况”仿真泄漏取大、电容取小、运放取慢如果最坏情况还能接受实物才有把握。5.6 排查顺序与记录表遇到问题不要东改一下西改一下按顺序排查先看供电和地再看直流工作点再看输入缓冲输出是否正常再看充电波形再看保持段最后看复位时序。每一步用示波器留一张图记录输入幅度、频率、输出峰值、掉压、复位残留。下面这张表可以直接打印出来填。检查项测试条件观察点合格判据实测记录直流工作点输入接地各运放输出不饱和、不振荡输入缓冲1kHz 正弦缓冲输出跟随、无明显失真充电建立5kHz 方波保持电容电压10 个周期内到峰值 99%保持掉压充到 1V 后断开输入输出 10ms 变化小于允许误差复位残留连续复位 10 次复位后输出底数稳定且小于 5mV频率上限100mVpp 到 5Vpp输出峰值误差小于 3%这张表填完论文里的测试章节和答辩时的数据都有了。别嫌麻烦峰值检测电路的很多问题不是“算错”而是“没测”。6. 验收答辩用三张表把指标测清楚验收别只摆一张原理图要拿数据说话。我一般准备三张表静态精度表、动态响应表、保持与复位表。静态精度表测直流或低频输入下输出峰值和输入峰值的偏差取 100mV、500mV、1V、2V、5V 几个点每个点记录三次动态响应表测不同频率和波形下的建立时间与过冲正弦、方波、窄脉冲各来一组保持与复位表测 10ms、100ms、1s 的掉压以及复位后残留和复位时间。三张表合起来方案的可信度就够了。答辩时讲三件事指标怎么定误差怎么分失败怎么定位。指标不要念参数要说清为什么选 500kHz、为什么允许 3%、为什么保持 10ms误差要能指到具体模块二极管压降多少、运放偏置多少、电容漏电多少失败定位要举一个真实调试例子比如输出振荡最后查出来是容性负载或者保持掉压最后查出来是板子没洗干净。老师更愿意听这种带血泪经验的定位过程而不是背公式。下面这张验收表可以直接放到报告里把“实测”列填满再把不达标项的处理办法写在备注里。注意测试时探头要选高阻低电容的探头电容挂在保持节点上会让掉压变快测出来的数据自己吓自己。验收项测试方法目标值实测值备注输入范围直流扫描100mVpp 到 5Vpp频率上限正弦扫描500kHz 内误差 ≤3%峰值误差多点对比≤3%保持掉压10ms 保持≤10mV复位残留连续复位≤5mV复位时间示波器测放电≤10us这套方案的分块表、参数计算脚本和验收记录表我整理成了一份可复用资料需要直接拿去改指标的人可以按模块对照着搭。从那以后我每次带人做峰值检测电路都先把复位时序和保持泄漏测一遍再谈精度因为这两个地方翻车最不值。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?