LM393电压比较器原理与应用:从基础电路到光控开关设计
1. 从“比较”说起为什么需要电压比较器在电子电路的世界里我们经常需要做“判断”。比如一个温度传感器输出的电压什么时候代表温度过高需要报警一个电池的电压什么时候低于阈值需要充电一个光敏电阻的阻值变化什么时候意味着天黑了该开灯了这些“什么时候”的问题本质上都是在比较一个变化的信号和一个固定的参考值。电压比较器就是专门干这个“比较”活的集成电路。你可以把它想象成一个极其灵敏、反应极快的单刀双掷开关。它有两个输入端一个同相输入端一个反相输入端-。它的工作逻辑简单粗暴当同相输入端的电压高于反相输入端时输出端就“接通”到高电平比如电源电压反之当同相输入端电压低于反相输入端时输出端就“接通”到低电平通常是地。这个“开关”的动作不是机械的而是由内部的晶体管电路在瞬间完成的速度极快。LM393就是这类芯片中最为经典、应用最广泛的型号之一它内部集成了两个独立的比较器性价比极高几乎成了模拟电路入门的必修课。很多初学者会把运放运算放大器和比较器搞混因为它们长得太像了都是多引脚、有正负输入。但它们的核心使命完全不同。运放设计用于线性放大工作在闭环负反馈状态下输出是输入的连续函数。而比较器是工作在开环或正反馈状态下的它的使命就是“比大小”输出是二进制的“高”或“低”追求的是速度、精度和驱动能力。用运放勉强可以当比较器用但性能响应速度、输出摆幅、稳定性往往不如专用的比较器。反过来用比较器去做放大电路更是会问题百出。理解这个根本区别是正确使用LM393的第一步。2. LM393 内部探秘双比较器与开集输出拿到一片LM393首先得看懂它的引脚和内部结构这决定了我们怎么用它。LM393通常采用8引脚DIP或SOIC封装。其内部包含两个完全独立、性能一致的电压比较器我们称之为Comparator A和Comparator B。每个比较器都有自己的一对输入端同相IN反相IN-和一个输出端OUT。剩下的两个引脚是公共的电源VCC和地GND。这里有一个必须深刻理解的关键特性LM393的输出是“开集电极”Open Collector输出。这是什么意思呢我们拆开来看。在芯片内部每个比较器的输出级其实就是一个NPN晶体管的集电极而这个晶体管的发射极接到了地GND。这个集电极在芯片内部是“悬空”的没有直接连接到任何电源就像一扇只接了地线的门。这个设计带来了巨大的灵活性也带来了一个必须遵守的规则你必须在LM393的输出引脚和正电源VCC之间外接一个“上拉电阻”。当比较器输出高电平时内部的NPN晶体管截止相当于断开输出引脚通过这个上拉电阻被拉到VCC此时输出为高电平。当比较器输出低电平时内部的NPN晶体管饱和导通相当于把输出引脚直接“拉”到地GND此时输出为低电平约0.2V。如果你不接这个上拉电阻输出在高电平时就会处于“浮空”状态电平不确定后续电路根本无法工作。开集输出还有两个重要优势输出电平可调你的上拉电阻可以接到一个不同于芯片VCC的电压上。比如LM393用5V供电但你可以把上拉电阻接到12V上这样它的输出高电平就是12V可以直接驱动需要12V信号的继电器或MOSFET实现了电平转换。“线与”功能多个开集输出的引脚可以直接连在一起共用一个上拉电阻。只有当所有输出都为高内部晶体管都截止时总线才是高电平只要任意一个输出为低内部晶体管导通总线就被拉低。这在构建简单的逻辑或优先级电路时非常有用。理解了开集输出就掌握了LM393应用的钥匙。接下来我们看看怎么用它搭建最基础的电路。3. 基础应用过压/欠压检测电路详解这是LM393最直白的应用场景监控一个电压是否超过或低于某个安全范围。我们以“过压检测”为例搭建一个当输入电压Vin超过5.6V时输出报警拉低的电路。3.1 电路搭建与参数计算首先我们需要一个稳定的参考电压Vref这里设为5.6V。可以用一个稳压管如5.6V的齐纳二极管加限流电阻产生但更常见和精准的做法是使用电阻分压。假设我们的电源VCC是12V。要得到5.6V的参考电压我们可以用两个电阻R1和R2对12V进行分压。根据分压公式 Vref VCC * (R2 / (R1 R2))。选取R110kΩ代入公式5.6 12 * (R2 / (10k R2))。解这个方程得到R2约等于10.18kΩ。我们可以取一个接近的标准值比如10kΩ此时Vref 12 * (10k / (10k10k)) 6V。这比5.6V略高意味着检测阈值变成了6V。如果我们希望更精确可以选用9.1kΩ和10kΩ的组合等或者使用一个精密可调电阻电位器来微调。确定了参考电压后我们将其连接到比较器的一个输入端。想过压检测意味着当Vin“高于”Vref时要报警。根据比较器逻辑我们应该把变化的Vin接到同相输入端把固定的参考电压Vref接到反相输入端-。这样当Vin Vref时输出为高Vin Vref时输出为低。但注意LM393是开集输出高电平需要上拉。我们在输出端接一个上拉电阻Rp通常取1kΩ到10kΩ到VCC或另一个逻辑电源。最后输出端可以接一个LED加限流电阻来指示或者接一个三极管去驱动蜂鸣器、继电器。电路连接总结Vin - LM393 同相输入端引脚3Vref (5.6V) - LM393 反相输入端引脚2LM393 输出端引脚1 - 上拉电阻Rp - VCC输出端同时接后续负载如LED3.2 迟滞比较器告别临界抖动上面那个基础电路有一个致命的问题当Vin在参考电压Vref附近有微小的波动或噪声时这在现实电路中几乎不可避免输出会在高和低之间疯狂、高速地来回翻转。比如Vin是5.59V时输出低一点噪声让它变成5.61V输出立刻变高但噪声过去后它又变回5.59V输出又跳回低……这种在阈值附近的反复跳动称为“振荡”或“抖动”对于驱动继电器或逻辑电路来说是灾难性的。解决这个问题的神器叫做“迟滞比较器”或者叫“施密特触发器”比较器。它的核心思想是引入正反馈让电路有两个不同的阈值一个上门限Vth_high一个下门限Vth_low。当输出状态改变后比较的基准阈值会自动改变形成一个“回差”从而有效抑制噪声引起的误触发。用LM393搭建迟滞比较器非常简单。我们仍然以过压检测为例希望Vin超过6V报警输出低但一旦报警即使Vin回落到5.8V报警仍应维持只有当Vin进一步降低到5.8V以下时报警才解除。这样在6V和5.8V之间就形成了一个0.2V的“免疫区”噪声只要不超过这个范围就不会引起输出抖动。搭建方法在基础比较器电路上增加一个反馈电阻Rf从输出端连接到同相输入端。同时同相输入端通过电阻Rin接收输入信号Vin。反相输入端接固定的参考电压Vref。阈值计算这是一个关键技能 假设Vref5.9V我们最终要的中间值上拉电源电压Vpull_up也是输出高电平Voh12V输出低电平Vol≈0V。 我们想要Vth_high6V Vth_low5.8V 回差电压Vhys0.2V。当输出为高电平12V时同相输入端电压由Vin和12V通过Rin和Rf并联决定。根据叠加定理此时的上门限Vth_high满足Vth_high Vref * (Rf/(RinRf)) Voh * (Rin/(RinRf))。但我们更常用分压视角可以想象Rin和Rf对Voh和Vin进行分压。一个更直观的公式是Vth_high Vref * (1 Rin/Rf) - (Rin/Rf)*Vol。由于Vol0简化为 Vth_high Vref * (1 Rin/Rf)。当输出为低电平0V时同理下门限Vth_low Vref * (Rin/(RinRf))。因为Voh项为0。我们有两个方程 方程16.0 Vref * (1 Rin/Rf) 方程25.8 Vref * (Rin/(RinRf)) 先求比值令 k Rin/Rf。 由方程2Vref 5.8 * (1k) / k? 这样有点乱。更简单的方法是用两个方程相除 (方程1) / (方程2): 6.0 / 5.8 [Vref*(1k)] / [Vref*(k/(1k))] (1k)^2 / k 解这个关于k的方程6/5.8 ≈ 1.0345 (1k)^2 / k k^2 2k 1 1.0345k k^2 0.9655k 1 0。这个方程无正实数解说明我们的Vref取值需要调整。我们换一个思路先设定合理的电阻值。取Rin10kΩ Rf100kΩ反馈弱一些则k0.1。 代入方程2Vth_low Vref * (0.1/(10.1)) Vref * 0.0909 Vref Vth_low / 0.0909 5.8 / 0.0909 ≈ 63.8V这显然不对因为Vref不能超过电源电压。 这说明我们的电阻比值不对。为了让Vref在一个合理范围比如接近中心值5.9V反馈需要更强。我们尝试让Rin和Rf接近。设Rin10kΩ Rf20kΩ k0.5。 代入方程25.8 Vref * (0.5/(10.5)) Vref * 0.3333 Vref ≈ 17.4V。还是太高。 我们需要增大k。设Rin10kΩ Rf1kΩ k10。 代入方程25.8 Vref * (10/(110)) Vref * 0.909 Vref ≈ 6.38V。 代入方程1检查Vth_high 6.38 * (110) 6.38 * 11 70.18V这更离谱了。问题出在哪里公式错了。正确的迟滞比较器信号从同相端输入的阈值公式是 当输出为高Voh时同相端电压V (Rf/(RinRf)) * Vin (Rin/(RinRf)) * Vref。此时翻转发生在V Vref不对对于信号从同相端输入的迟滞比较器参考电压接在反相端翻转条件是V Vref。所以 Vref (Rf/(RinRf)) * Vth_high (Rin/(RinRf)) * Voh Vref (Rf/(RinRf)) * Vth_low (Rin/(RinRf)) * Vol 由于Vol≈0第二个式子简化为 Vref (Rf/(RinRf)) * Vth_low。 由第一个式子Vth_high (Vref - (Rin/(RinRf))*Voh) * ((RinRf)/Rf) 由第二个式子Vth_low Vref * ((RinRf)/Rf)我们看到Vth_low只与Vref和电阻有关而Vth_high还与Voh有关。这给了我们设计自由度。通常我们先确定Vref和需要的回差Vhys。 Vhys Vth_high - Vth_low [ (Vref - (Rin/(RinRf))*Voh) * ((RinRf)/Rf) ] - [ Vref * ((RinRf)/Rf) ] 化简后Vhys - (Rin/Rf) * Voh * ((RinRf)/Rf) - (Rin/Rf) * Voh * (1/k 1)? 这个化简有点复杂。一个更常用的方法是记住回差电压 Vhys ≈ (Rin / Rf) * (Voh - Vol)。因为Vol≈0所以 Vhys ≈ (Rin / Rf) * Voh。让我们用这个近似公式重新设计 目标Vth_high6V Vth_low5.8V 所以Vhys0.2V。Voh12V。 由 Vhys ≈ (Rin / Rf) * Voh 0.2 ≈ (Rin / Rf) * 12 Rin/Rf ≈ 0.01667。 取Rf100kΩ 则Rin ≈ 1.667kΩ取标称值1.6kΩ。 然后计算Vref。根据 Vth_low Vref * (Rf/(RinRf)) 不对对于同相输入迟滞Vth_low发生时输出为低(0V)同相端电压V (Rf/(RinRf))*Vin (Rin/(RinRf))*0 (Rf/(RinRf))*Vin。翻转时V Vref所以 Vref (Rf/(RinRf)) * Vth_low。 代入Vref (100k / (1.6k100k)) * 5.8 ≈ (100/101.6)5.8 ≈ 0.98435.8 ≈ 5.709V。 再验算Vth_high输出为高(12V)时V (Rf/(RinRf))*Vin (Rin/(RinRf))*12。翻转时V Vref。 所以 Vref (Rf/(RinRf))*Vth_high (Rin/(RinRf))*12。 代入5.709 (100/101.6)Vth_high (1.6/101.6)12 5.709 0.9843Vth_high 0.189 0.9843Vth_high 5.709 - 0.189 5.52 Vth_high ≈ 5.61V。 这与我们目标的6V和5.8V有偏差主要是因为近似公式和电阻取标称值造成的。我们可以通过微调Rin或Rf或者使用一个电位器与Rin串联来精确调整阈值。这个计算过程虽然繁琐但它揭示了迟滞比较器设计的核心通过正反馈电阻的比例来设定回差通过参考电压Vref来设定阈值的中心位置。在实际操作中我们常常先用公式估算电阻范围然后通过实验用示波器观察输入输出波形调整电位器来获得理想的阈值。4. 实战进阶光控灯与窗口比较器电路掌握了基础与迟滞我们就可以玩一些更实用的电路了。LM393的经典应用场景之一就是光控开关。4.1 光控灯电路全解析目标环境光变暗时自动点亮LED。我们需要一个光敏元件最常见的是光敏电阻LDR。它的阻值随光照增强而减小。我们利用这个特性结合LM393搭建一个暗触发电路。电路设计思路信号采集将光敏电阻LDR和一个固定电阻R1组成分压电路接在电源VCC和地之间。分压点即LDR和R1的连接点的电压会随光照变化光照强-LDR电阻小-分压点电压低光照弱-LDR电阻大-分压点电压高。阈值比较我们希望在天黑光照弱时点亮LED即当分压点电压高于某个阈值时动作。因此我们将这个分压点电压连接到LM393的同相输入端。设置参考点我们需要一个固定的阈值电压Vref连接到反相输入端-。这个Vref可以通过另一个电阻分压网络R2, R3从VCC分压得到。Vref的值决定了触发点对应的环境亮度。输出驱动LM393输出开集通过上拉电阻Rp上拉到VCC。输出低电平时电流从VCC经Rp、流入LM393输出引脚到地此时如果我们在输出引脚和地之间接一个LED和限流电阻LED是不会亮的因为输出引脚是低电平约0.2VLED两端几乎没有电压差。所以我们需要改变接法将LED的阳极接VCC阴极通过一个限流电阻R_led接到LM393的输出引脚。这样当输出为高电平时内部晶体管截止输出被Rp拉到VCCLED两端电压相等不亮。当输出为低电平时内部晶体管导通输出≈0VLED阳极VCC和阴极0V之间有电压差电流从VCC经LED、R_led流入LM393到地LED点亮。这是驱动LED的常见接法务必注意。增加迟滞为了避免在临界亮度下LED闪烁我们可以在输出和同相输入端之间加一个反馈电阻Rf构成迟滞比较器原理如前所述。元器件选型与计算光敏电阻LDR选型时关注亮电阻如10lux下的阻值和暗电阻如完全黑暗下的阻值。例如某LDR亮电阻约5kΩ暗电阻约200kΩ。分压电阻R1R1的取值决定了分压点的电压变化范围。通常取R1的值接近LDR亮电阻和暗电阻的几何平均值。例如取R147kΩ。当光照强时LDR≈5k分压点电压 VCC * (R1/(LDRR1))。假设VCC5V则电压≈5*(47k/(5k47k))≈4.52V。当黑暗时LDR≈200k电压≈5*(47k/(200k47k))≈0.95V。注意这里计算显示光照强时电压高4.52V黑暗时电压低0.95V这和我们“暗触发”的需求黑暗时电压要高是相反的这是因为我们把LDR放在了上端接VCCR1在下端接地。要得到“暗时电压高”的特性需要把LDR和R1的位置互换R1接VCCLDR接地。此时分压点R1和LDR的连接点电压 VCC * (LDR/(R1LDR))。光照强LDR小电压低光照弱LDR大电压高。完美符合需求。参考电压Vref通过R2和R3分压设置。假设我们希望环境亮度降到某个程度时开灯对应LDR阻值约为80kΩ。此时分压点电压 5V * (80k/(47k80k)) ≈ 3.15V。我们可以将Vref设置为3.15V。取R210kΩ 则 Vref 5V * (R3/(R2R3)) 3.15 5 * (R3/(10kR3))解得R3≈13.5kΩ取13kΩ或15kΩ电位器方便调节。反馈电阻Rf用于产生迟滞防止抖动。根据公式 Vhys ≈ (Rin/Rf) * Voh。这里Rin是信号源内阻对于分压网络输出阻抗大致是R1和LDR的并联值会变化。一个简化方法是在比较器同相输入端和信号源分压点之间串联一个电阻Rin如10kΩ再并联一个到地的小电容如10nF滤除高频噪声。然后选择Rf。假设需要0.1V的回差Voh5V则 Rin/Rf ≈ 0.1/50.02。若Rin10k则Rf500kΩ。取值大一些反馈弱迟滞小取值小反馈强迟滞大。可以先用470kΩ试试。完整连接VCC(5V) - R1(47k) - 分压点A - Rin(10k) - LM393 Pin3同相分压点A同时接 LDR 到 GND。VCC(5V) - R2(10k) - 分压点B - R3(13k) - GND。分压点B接LM393 Pin2反相-。LM393 Pin1输出 - 上拉电阻Rp(10k) - VCC。LM393 Pin1 同时接 Rf(470k) 到 Pin3同相实现正反馈迟滞。LM393 Pin1 同时接 R_led(330Ω) - LED阴极。LED阳极接VCC。LM393 Pin4接GND Pin8接VCC。这样当环境变暗LDR阻值增大Pin3电压超过Pin2的Vref(约3.15V)时输出翻转为低电平LED点亮。由于有迟滞亮度要回升到比触发点稍亮一些LED才会熄灭。4.2 窗口比较器监测电压是否在安全区间过压和欠压检测是单限比较。有时候我们需要监测一个电压是否落在某个安全窗口内比如电池电压是否在3.0V到4.2V之间。这就需要用到LM393的双比较器特性构建一个“窗口比较器”。电路原理 我们需要两个参考电压一个上限Vref_H如4.2V一个下限Vref_L如3.0V。输入电压Vin同时送到两个比较器。比较器A接成“过压检测”模式。Vin接同相端Vref_H接反相端。当Vin Vref_H时输出A为高否则为低。比较器B接成“欠压检测”模式。Vin接反相端Vref_L接同相端。当Vin Vref_L时输出B为高否则为低。逻辑整合我们想要的是当电压正常3.0V Vin 4.2V时给出一个“正常”信号比如高电平当电压过高或过低时给出“异常”信号低电平。观察一下电压正常时Vin Vref_H 且 Vin Vref_L。所以输出A为低输出B也为低。电压过高时Vin Vref_H输出A为高输出B为低。电压过低时Vin Vref_L输出A为低输出B为高。我们发现电压异常过高或过低的条件是输出A和输出B中至少有一个为高。这正好是一个“或”的逻辑。如何用硬件实现这个“或”逻辑呢利用LM393的开集输出特性我们可以将两个比较器的输出引脚直接连接在一起“线与”然后共用一个上拉电阻Rp接到VCC。“线与”工作原理当两个输出都为低内部晶体管都导通时总线被强行拉低到地。当两个输出都为高内部晶体管都截止时总线通过上拉电阻Rp拉到高电平VCC。当其中一个输出为低另一个为高时为低的那个晶体管会将总线拉低到地因为导通晶体管的内阻远小于上拉电阻。对应我们的情况电压正常A低B低总线被拉低最终输出为低电平异常不对这里逻辑反了。我们想要正常时输出高。所以需要逻辑取反。电压异常A高B低或A低B高或A高B高只要有一个高总线就被上拉电阻拉高不对仔细分析开集输出为“高”时晶体管截止相当于断开。为“低”时晶体管导通到地。所以如果A输出为“高”截止B输出为“高”截止总线靠Rp上拉到VCC输出高。如果A输出为“低”导通B输出为“高”截止A导通到地总线被A拉低到地输出低。如果A输出为“高”截止B输出为“低”导通总线被B拉低输出低。如果A输出为“低”导通B输出为“低”导通总线被拉低输出低。总结总线输出只有A和B都输出“高”都截止时总线才是高电平其他任何情况至少一个为低总线都是低电平。这是“与”逻辑A AND B。而我们之前分析电压正常时A和B都输出“低”。电压异常时A和B至少有一个输出“高”。所以电压正常 - A低B低 - 总线输出低。电压异常 - A高或B高或都高 - 总线输出不一定。如果A高B低总线低A低B高总线低只有A高B高总线高。这不符合我们的需求。我们想要的是“异常时输出低”。看来直接“线与”得到的逻辑是“正常时输出低异常时可能高可能低”不满足要求。我们需要重新思考逻辑。正确的窗口比较器接法 我们定义最终输出OUT 1高电平表示电压在窗口内正常OUT 0低电平表示电压超窗异常。 条件正常时Vin Vref_L 且 Vin Vref_H。即 Vin Vref_L 与 Vin Vref_H 同时成立。 用比较器表达C1: 当 Vin Vref_L 时输出C1 1否则为0。C2: 当 Vin Vref_H 时输出C2 1否则为0。 那么OUT C1 AND C2。如何用LM393实现我们需要两个比较器都输出高电平有效即条件满足时输出高。对于C1Vin Vref_L可以将Vref_L接反相端-Vin接同相端。这样当Vin Vref_L时输出高。 对于C2Vin Vref_H可以将Vref_H接同相端Vin接反相端-。这样当Vin Vref_H时输出高。然后我们需要一个“与”门来组合C1和C2。最简单的办法是使用二极管与门将C1和C2的输出经过上拉电阻后分别通过一个二极管阳极接输出阴极连在一起接到最终输出节点该节点再通过一个上拉电阻接到VCC。当C1和C2都输出高时两个二极管都截止最终输出节点被上拉电阻拉到高电平OUT1。只要C1或C2有一个输出低对应的二极管阳极被拉低约0.2V阴极最终输出节点也会被钳位在低电平约0.2V0.7V二极管压降≈0.9V仍算低电平OUT0。这样就实现了窗口比较功能。当然也可以直接用一片数字逻辑芯片如74HC08与门来处理两个比较器的输出更稳定可靠。实际电路简化很多时候我们不需要“与”逻辑只需要分别指示“过压”和“欠压”。这时只需将两个比较器独立使用用两个LED分别指示状态即可一个LED在过压时亮另一个在欠压时亮。电压正常时两个LED都灭。这种接法更直观简单。5. 性能边界与实战避坑指南LM393虽然皮实耐用但如果不了解其极限和特性很容易掉进坑里。以下是一些从实际项目中总结的关键点。5.1 响应速度与带宽限制LM393不是一个高速比较器。它的典型响应时间传播延迟在1.3μs左右在过驱动100mV条件下。这意味着对于变化非常快的信号它的输出可能会跟不上。例如如果你用它来检测一个1MHz的方波边沿输出可能会有严重的延迟和失真。它的增益带宽积也很有限。所以LM393适用于低频或直流信号比较比如温度、光照、电池电压等变化缓慢的信号。如果需要处理音频或数字通信信号应该选择像LM311、TLV3501这类高速比较器。另一个相关参数是“压摆率”Slew Rate它描述了输出电平从低到高或从高到低变化的最大速率。LM393的压摆率典型值为0.4V/μs。假设电源是5V输出从0V跳到5V需要的时间大约是 5V / 0.4V/μs 12.5μs。这进一步限制了它在高频下的应用。实战技巧在比较器输出端靠近芯片引脚对地加一个小电容如10pF到100pF可以滤除由于响应速度限制或噪声引起的高频自激振荡。但注意这个电容会进一步降低响应速度需要权衡。5.2 输入共模电压范围这是最容易忽略的坑之一。LM393的输入引脚不是可以承受任何电压的。它的输入共模电压范围是“从地GND到电源电压VCC减去大约1.5V”。也就是说如果你的VCC是5V那么两个输入端的电压最高不能超过大约3.5V。如果输入电压超过这个范围比较器可能无法正常工作甚至损坏。案例设计一个用12V电源供电监测24V电池是否过压的电路。如果直接将24V通过电阻分压后接到LM393输入端即使分压后电压在0-5V之间但如果分压电阻的上端直接接24V在插拔瞬间或异常情况下可能会产生高压毛刺通过寄生电容耦合到输入端导致损坏。正确的做法是1确保分压后的电压在芯片输入电压范围内2在输入端串联一个限流电阻如10kΩ3在输入端到地接一个钳位二极管如1N4148将电压钳位在VCC和GND之间提供过压保护。5.3 输出端上拉与负载能力上拉电阻Rp的选择这个电阻值需要仔细考量。它主要影响两个方面上升时间当输出从低变高时输出节点的寄生电容包括芯片内部和PCB走线需要通过Rp充电到高电平。Rp越大充电电流越小上升时间越长影响速度。Rp越小上升时间越短但功耗会增加。低电平灌电流当输出为低时负载电流和通过Rp的电流会全部流入LM393的输出晶体管到地。这个总电流不能超过LM393的最大灌电流能力典型值16mA。你需要计算当输出低时流过Rp的电流 Irp VCC / Rp。同时如果你的负载如LED也是从VCC取电然后通过LM393到地那么这个负载电流I_load也要加上。总灌电流 I_sink Irp I_load 必须小于16mA最好留有余量比如控制在10mA以内。计算示例VCC5V 使用一个LED作为负载LED工作电流设计为5mA正向压降2V。LED接法VCC - LED - 限流电阻R_led - LM393输出端。当输出低时LED导通。R_led (VCC - V_led - V_ol) / I_led (5 - 2 - 0.2) / 0.005 ≈ 560Ω。此时I_load 5mA。选择Rp。我们希望上升时间快一些但也要考虑功耗。取Rp1kΩ。则 Irp 5V / 1kΩ 5mA。总灌电流 I_sink 5mA 5mA 10mA。小于16mA安全。如果负载是驱动一个继电器的线圈线圈电阻100Ω工作电压5V则需要电流50mA这远远超过了LM393的能力。此时必须用LM393的输出驱动一个三极管如NPN型的2N2222再由三极管去驱动继电器。LM393只负责提供基极电流几个mA驱动任务交给三极管。5.4 未用单元的处理一片LM393里有两个比较器。如果你只用一个剩下的那个必须妥善处理不能悬空。悬空的输入端可能会拾取噪声导致内部晶体管处于不确定状态增加功耗甚至引起振荡。正确处理方式将未用的比较器的同相输入端接到一个固定的电压上比如接GND或者通过电阻分压接到一个中间电压。将反相输入端-也接到一个固定的电压上最好和同相端电压不同使输出稳定在一个确定状态高或低。将输出端悬空什么都不接即可。因为开集输出悬空是安全的。 一种常见的接法是将未用比较器的两个输入端都接地输出端悬空。这样比较器输出会稳定在高电平因为同相端电压(0)不大于反相端电压(0)输出低等等这里要小心同相端电压(0)等于反相端电压(0)根据芯片特性此时输出状态不确定可能为高也可能为低。稳妥的做法是让两个输入端有确定的电压差。例如将反相端-通过一个10k电阻接VCC同相端接地。这样反相端电压高于同相端输出稳定在低电平晶体管导通。输出端悬空。5.5 电源去耦与布局LM393对电源噪声比较敏感尤其是当它在开关状态时会产生瞬间的电流变化。如果电源走线很长或有电感可能会引起电压毛刺影响其他部分电路甚至导致自身误动作。必须做的在LM393的VCC和GND引脚之间尽可能靠近芯片的位置并联一个0.1μF的陶瓷电容和一个10μF的电解电容。0.1μF用于滤除高频噪声10μF用于提供局部能量缓冲。这是模拟芯片布局的黄金法则。布局要点比较器电路特别是涉及高阻抗节点如分压电阻、反馈电阻连接处的走线要尽量短并远离数字信号线、电源线等噪声源。反馈电阻Rf的走线也要短以避免引入额外的相移和振荡。最后分享一个我调试LM393电路时的小习惯永远先用示波器同时观察输入和输出波形。特别是当电路行为异常时看看输入信号在阈值点附近是否干净输出跳变是否干脆有没有振铃或振荡。很多时候问题就直观地显示在波形上。理解了这些原理和细节LM393就不再是一个简单的“比大小”黑盒而是一个你可以精准掌控的可靠工具能在各种监测、控制、报警电路中发挥稳定作用。