SGM8740比较器实测:从推挽输出到滞回与窗口比较电路设计
第一次拿到SGM8740YN5G/TR这颗芯片的时候我的第一反应是就一个SOT-23-5封装的单通道比较器能玩出什么花样结果就是这颗看似不起眼的小东西在后面的几次低压检测和波形整形小电路里实实在在帮我省掉了一大堆调试时间。如果你正在选比较器或者还在用运放临时客串比较器这篇文章应该能帮你少走不少弯路。SGM8740是圣邦微比较器家族里很典型的一颗推挽输出、低功耗、单电源供电、封装极小。它做的事情用一句话说清楚——把两个输入端的电压比大小然后输出一个干净的高电平或低电平。听起来简单但在实际的过压保护、欠压报警、信号整形、阈值检测场景里这个动作是做一百遍都不嫌烦的基础操作。下面我会从为什么选它、怎么用、实测中踩过的坑、以及和运放当比较器的对比这几个角度把SGM8740讲透。1. 为什么我会特别关注这颗5脚小比较器1.1 从“临时用运放顶替比较器”到“被现实教育”我以前有个坏习惯手里运放一大堆想着“比较器不就是运放开环用嘛”于是经常用运放凑合。直到有一次做电池低压报警信号从那颗缓慢下降的电压线上过来运放输出却在阈值附近来回来去地跳触发间隔毫无规律像得了帕金森。那次我才意识到运放和比较器看起来原理相近实际上完全是两种设计目标的东西。运放内部做了频率补偿目的是稳定工作在闭环状态比较器内部不做补偿目标是开环条件下快速翻转。拿运放当比较器等于让一个擅长绣花的人去搬砖不是不能用是很容易出事。SGM8740就是专门干“干练翻转”这件事的。它的输出级是推挽结构不需要像LM393那种开漏输出一样外加一只上拉电阻直接就能给MCU的GPIO送过去一个符合逻辑电平的方波。对于用3.3V或者5V单片机的朋友来说这个特性非常友好板子上能少放好几个电阻。1.2 推挽输出与SOT-23-5封装省外围和省面积是怎么同时实现的我记得第一次看它的引脚图时脑子里就一个词清爽。SOT-23-5一共五个脚除开电源和地只剩下正输入、反输入和输出三个功能引脚。没有多余的使能脚、没有失调校准脚、也没有锁存脚所有功能就是“比较”这一件事。推挽输出带来的好处比一般人想象的要多。开漏输出的比较器在输出高电平时实际上是“放开不管”必须靠外部电阻把电平拉上去上升沿的时间常数由上拉电阻和负载电容决定想加快就得把电阻减小但电阻小了静态功耗又上去了。SGM8740这种推挽结构输出高电平的时候是内部管子主动往上推边沿更陡驱动CMOS逻辑时基本不需要额外处理。这一点在做低频方波整形、传感器阈值判断这类电路时非常实用——我实测用它驱动一个MCU的GPIO输入不需要任何上拉电阻波形干净利落。封装小也有小的代价。SOT-23-5手工焊接对新手稍微有一点点难度后面我会专门讲焊接和测试板的注意事项。但如果走机器贴片这种封装在面积和成本上的优势很明显适合做小体积的锂电池保护板、传感器模组这类产品。2. 上电之前引脚、内部结构和参数里真正该抠的几项2.1 5个引脚的正确打开方式先提醒一句不同厂商的SOT-23-5比较器引脚顺序还真不一定是一样的。我手头这颗样片丝印面朝上、引脚朝下从左到右依次是反相输入、电源、同相输入、地、输出。但同封装的别家芯片很可能是另一套排列方式所以上板之前务必对着官方数据手册的引脚图核对一次别凭经验猜。SGM8740的基本用法很简单同相输入端电压高于反相输入端时输出为高反相输入端高于同相输入端时输出为低。问题从来不出在“比大小”这件事上而是出在最基础的连接细节上。输入端悬空会是个大坑因为MOS管输入阻抗极高悬空引脚上的感应电荷会让输出状态完全不可控有时候甚至会在阈值附近来回翻转。所以在实际电路里输入端一定要有明确的电平来源哪怕只是接一个到地的电阻也比飘着强。电源和地的接法也讲究。这种小封装芯片的工作电压范围我记得手册上写的是从低电压一直覆盖到5.5V左右覆盖单节锂电池、3.3V逻辑、5V逻辑这几个最常见的供电轨都没问题。但不管供电多少伏电源引脚旁边一定要放一个0.1uF的陶瓷电容而且必须紧贴着芯片放。这个电容不是用来“补补心安”的它是用来应付输出翻转瞬间电流需求的放远了会导致电源线上出现毛刺进而干扰参考电压。2.2 静态电流、传播延迟、失调电压三个数字决定你的电路够不够用选比较器的时候大部分人只盯着“能不能比”但我看三个参数静态电流、传播延迟、输入失调电压。这三个数字直接决定了这颗芯片能不能用在你的特定场景里。静态电流决定功耗。SGM8740属于低功耗类型的比较器我这颗样片在3.3V供电下实测静态电流只有几十微安级别放在电池供电的传感器板子上完全不是负担。对比一些老型号比较器动不动几百微安的静态电流优势很明显。传播延迟决定速度。手册上的典型值我记得在微秒量级以内。什么概念呢如果你要做100kHz以下的中低速信号整形、PWM检测、阈值报警它绰绰有余。但如果你想用它去处理几MHz以上的高速脉冲那就选错东西了高速比较器是另外一个物种。输入失调电压决定比较精度。SGM8740的失调在毫伏量级也就是说当你把阈值设在2.500V时实际翻转点可能在2.499V到2.501V之间偏一点。对于绝大多数阈值检测电路来说这个误差完全能接受。但如果你打算拿它做高精度测量比如微伏级信号检测那就得换更高规格的精密比较器了。2.3 推挽输出的甜区与边界推挽输出的一个直接好处是不需要上拉电阻而且灌电流和拉电流的能力都还可以。我在测试时拿它直接驱动一个LED限流电阻再挂到单片机引脚上输出低电平能把LED点亮输出高电平也能推得动。不过“还能驱动”不等于“随便驱动”它的输出级是为逻辑信号设计的不是为功率负载设计的。你要想直接驱动继电器、电磁阀这类大电流负载就别打它的主意了老老实实加一级三极管或者MOSFET。还有一个容易忽略的问题推挽输出的高电平并不是真的等于电源电压而是等于电源电压减去输出级上管的压降。轻负载下这个压降很小可能只有几十毫伏但如果输出电流达到额定上限附近压降会明显增加。我后面会专门给一组实测数据说明这种情况免得你把“输出高电平”直接当成“稳定的VCC”来用。3. 三个用得最多的电路滞回检测、波形整形、窗口比较3.1 滞回比较器给阈值装上一段“死区”噪声就不乱触发先说你一定会碰到的第一个坑单限比较器在阈值附近会乱跳。原因是真实信号总带噪声当信号慢悠悠地经过阈值点时哪怕只有几毫伏的噪声叠加在上面也会让比较器反复判定、输出颤抖。解决办法是加正反馈也就是滞回让“上升时触发的阈值”和“下降时释放的阈值”错开一小段距离这段错开的区间就是死区。我实际搭过一组参数可以照着抄反相输入端接参考电压1.5V同相输入端通过10k电阻接输入信号同时用一个100k电阻从输出端反馈到同相端。这个结构下输出高电平时会使同相端电压被稍微抬高输出低电平时又被稍微拉低于是翻转点不再是一个点而是一个区间。经过计算滞回宽度大约是VOH与VOL的压差乘以反馈分压比。按上面这组阻值3.3V供电下滞回宽度大概是0.33V也就是上限约1.65V、下限约1.32V。信号从低往上走要超过1.65V才翻高从高往下走要跌到1.32V才翻低。0.33V的死区足以让绝大多数传感器噪声闭嘴。滞回宽度不是越宽越好太宽了会牺牲检测精度比如你要监测一个误差不能超过0.1V的电平滞回却设在0.5V那就矫枉过正了。3.2 一个比较器加几只电阻电容自激方波振荡器比较器除了“比大小”还有一个很实用的玩法做成方波振荡器。原理很简单用输出信号通过电阻电容反馈回来让比较器在充电和放电之间反复翻转输出就是连续的方波。这个电路在需要低频时钟、LED闪烁、简易蜂鸣器驱动时非常方便而且完全不需要依赖MCU内部定时器。我用SGM8740搭过一个最基础版本反相端接一个RC网络电容上的电压随着充放电上升和下降同相端接一个由电阻分压得到的中点参考电压输出通过电阻反馈到反相端参与充放电。频率粗略估算可以用RC时间常数算比如10k电阻配10nF电容时间常数算下来100微秒方波周期大约在两倍时间常数附近实测输出频率大概在千赫兹量级。不用追求精确反正这种振荡器的精度本来就不高温度变化、电源电压变化都会让频率漂移几个百分点。用比较器做振荡器比用555更省外围也比用运放搭的效果好因为输出翻转快、波形边缘陡。需要注意的是频率上限受传播延迟限制你不可能靠减小电容让它无限跑快跑到接近传播延迟量级的时候波形就会失真。如果只是一般指示灯的闪烁、报警音发生那是完全够用的。3.3 两只SGM8740组成窗口比较器电池电压监测实例窗口比较器指的是“判断一个电压是否落在上下限之间”的电路。我拿它做过一个很典型的应用监测电池电压是否处于正常范围。具体思路是先把电池电压用电阻分压降到比较器可接受的输入范围然后用两只SGM8740分别负责上限判断和下限判断最后把两个输出组合成一路状态信号。组合输出这里有一个值得注意的细节推挽输出不能直接把两个输出连在一起。开漏输出的芯片能“线与”推挽输出如果硬连一个输出高另一个输出低时两个输出级会形成一条直通短路路径轻则逻辑混乱重则损伤芯片。我的做法是每路输出串一个二极管汇到一个公共点再接一个下拉电阻。任何一个比较器输出高电平时公共点就被拉高两个都为低时公共点保持低。这样就规避了直连问题。当然代价是二极管会有正向压降好在3.3V系统里逻辑高电平余量足够实际用没出问题。上下限的设定是通过参考电压实现的用精密电阻分压给参考端精度只要控制在1%以内窗口范围就能做得很准。这套方案的优点是完全独立于MCU工作即使单片机在睡觉电压越界它也会被唤醒或触发报警很适合做低功耗电池管理的保护机制。4. 测试记录与SOT-23-5手工焊接注意事项4.1 手工焊接SOT-23-5工具、手法和连锡自检SOT-23-5的引脚间距不算大但也没有到得用显微镜才能焊的程度。我的经验是尖头烙铁是必须的温度设在330到360摄氏度左右太高容易伤到芯片本体和焊盘太低则容易堆锡。再准备一点助焊剂和细锡丝焊接体验会好很多。手法上建议先固定对角的一只脚把芯片放正以后再焊其余四只脚。固定脚的时候不要急着上太多锡一点点能定位就行。焊的时候烙铁头贴着引脚外侧轻轻带锡利用焊锡的流动性让焊锡自然爬到引脚上。千万不要让相邻两个焊盘上的锡连在一起哪怕只有一丝丝上电都可能出怪问题。焊完以后别急着上电拿万用表二极管档或者通断档检查相邻引脚之间是不是有短路这是成本最低的排障手段。还有一个经验焊完以后最好用放大镜或者手机微距镜头看一眼焊点重点看焊锡是不是只覆盖了焊盘而没爬坡到引脚上也就是“虚焊”。SOT-23-5封装小巧虚焊有时候肉眼看不出来但一上电就表现为间歇性工作异常非常难查。4.2 实测翻车三次输入端悬空、退耦电容离太远、探头档位不对测试这块芯片时我翻过三次车教训都很典型。第一次是输入端悬空。我搭了个临时测试电路想先量一下输出静态状态结果同相输入端没接任何东西悬空的。上电以后输出电平忽高忽低我还以为芯片是坏的换了一片还是同样问题。后来才反应过来高阻抗输入悬空时感应噪声和内部漏电会随机改变输入电压比较结果输出自然乱跳。插根跳线把输入接地立刻恢复正常。第二次是退耦电容放得不够近。我一开始图方便把0.1uF电容放在电源走线的末端离芯片大概两厘米远。给负载加上一个快速的电流变化时输出波形的边沿上出现了明显的毛刺。这是因为输出翻转瞬间电流突变电源线上的寄生电感把电压砸出了一个坑。把电容挪到紧贴VCC引脚的位置毛刺马上消失了。这个经验后来我记住了参考电压、电源退耦永远是离芯片越近越好。第三次属于测试仪器问题。我用示波器观察输出波形一开始用的是10倍探头但是没调对带宽看到的是圆滚滚的边沿还在那儿怀疑芯片速度不行。后来换成示波器文档里要求的正确档位再测边沿立刻变得干净利落。很多信号看起来有问题其实不是电路的问题是测量方法的问题。4.3 把输出高电平当成VCC用的后果推挽输出的高电平接近VCC但不等于VCC。我专门测了一组数据来说明这件事3.3V供电、输出接不同负载时输出高电平的实测值样品个体会有差异仅供参考负载情况输出高电平相对VCC的压降空载3.29V约10mV10k电阻到地3.28V约20mV1k电阻到地3.20V约100mV100欧电阻到地2.98V约320mV虽然100欧这种重负载不是它的设计目标但能看到趋势电流越大输出高电平离VCC越远。如果你拿输出高电平去当作某个电路的参考电压那肯定会出问题——它不像稳压芯片那样能保证电压精度。正确用法是把它当作逻辑电平使用只要超过接收端的VIH阈值就行。这个测试给我留下的印象很深后来帮别人排查一个比较器电路时看到有人把输出高电平直接接在ADC参考引脚上我第一时间就让他查这条果然就是这里出的问题。5. 选型心得什么时候用它什么时候该换思路5.1 专用比较器和“运放当比较器”的差距再强调一次运放当比较器看起来能用实际差距很大。运放的输出级设计用于线性区翻转速度受压摆率和补偿电容拖累更重要的是运放正常工作时默认输入两端电压是相等的虚短概念一旦输入差分电压过大某些运放内部输入级会进入异常状态甚至出现相位反转——输入电压明明在上升输出反而会从高翻到低。这种情况在工业现场特别危险。专用比较器就没有这些包袱。SGM8740允许两个输入端的电压差很大输入级设计本身就考虑了这种用法输出级也为数字逻辑做了优化。所以只要是要频繁比较、快速翻转的场合哪怕只是一次普通的阈值监测我都建议用正经的比较器别图省事拿运放顶。5.2 横向对比时我重点看什么手头如果同时有几款单通道、小封装、推挽输出的比较器可以用横向对比时我一般重点看三个维度。第一个是静态电流电池供电项目里这个数字直接决定待机功耗第二个是传播延迟和翻转时间它决定你能处理的信号频率上限第三个是输出级能力看它能不能直接驱动你后级电路的输入阻抗和寄生电容。这三个维度全过了基本不会踩到隐藏的坑。当然货源和价格也必须考虑SGM8740是国产器件在供应链交期和原厂技术支持上有天然优势这个在项目紧张的时候省心不少。如果做了对比测试还要记得留意一下同一批次芯片的个体一致性。我测过三片SGM8740翻转阈值和输出高电平都很接近差异在毫伏量级这对量产来说是比较稳定的表现。5.3 不适合用它的三个场景SGM8740不是万能的至少有三类场景我会建议换别的方案。第一类是高速信号检测比如几MHz以上的脉冲计数它的传播延迟不够用得上专门的射频/高速比较器。第二类是精度要求极高的测量应用如果你需要微伏量级的比较结果通用比较器的失调电压会直接变成误差这个误差甚至比被测信号还大必须找高精度型号或者改用真正的仪表放大器方案。第三类是输出需要“线与”逻辑的场合推挽输出不能并联如果你需要多个比较器输出短接在一起形成一个或逻辑那最好选开漏输出的型号比如我前面说的窗口比较器虽然能用二极管绕过去但始终不如开漏输出方便。最后顺手再记一笔个人习惯我每次拿到这种小封装比较器都会先把输出端对地接一个10k电阻再测试不指望它起什么决定作用但这能在芯片输入状态不明时防止输出级悬空抖动也给示波器探头一个明确的直流电平参考。用SGM8740做设计的时候只要把电源退耦、输入端不悬空、输出负载这三件事处理好这颗小芯片基本就是最省心的那一种“小透明”器件。