☰
LM339电池低压监测电路设计:从分压到滞回比较器
2026/9/28 7:08:20 网站建设 项目流程

给手头的锂电池组加个低压提醒,最怕的就是“想起来了才量一次电压”,真等你想起来,电池往往已经过放。用单片机ADC做电压监测不是不行,但为了盯一块电池专门上一颗MCU,还得处理程序跑飞、上电时序、电源管理这些事,多少有点杀鸡用牛刀。实际做下来,一颗LM339比较器加几个电阻电容就能把这件事干得干净利落:电压一到阈值就翻转输出,该亮的亮、该叫的叫,不需要固件,也不会死机。

LM339是一颗四路电压比较器,常被用在电压监测、电平检测、窗口比较这类场景里。这篇文章就基于LM339展开,从最基础的引脚行为讲起,带你把“电池电压监测电路”完整搭出来:分压网络怎么算、基准电压怎么取、为什么要加滞回、输出端怎么驱动LED和蜂鸣器,再到Multisim仿真验证和实际焊接调试的坑。适合手里有电烙铁、想快速做个可靠小电路的电子爱好者,也适合刚学完模电、想真正上手比较器应用的同学参考。

1. 电池监测这件事,用LM339而不是单片机的理由

1.1 单片机ADC方案的三个现实问题

我不是说单片机方案不行,而是在“单节锂电池低压告警”这种单一任务里,MCU方案有它天生的别扭。

第一个问题是功耗。单片机哪怕进入睡眠模式,也总有一个基础电流趴在那,再加上LDO的静态电流,随随便便就跑到几十微安甚至毫安级。如果这块电池本身容量就不大,让监测电路本身变成耗电大户,那就本末倒置了。

第二个问题是可靠性。程序跑飞、看门狗没喂好、ADC采样配置出错,任何一个环节掉链子,监测功能就可能静默失效。低压保护这种安全功能,恰恰最怕的是“该动作的时候没动作”。而比较器是纯硬件比较,没有程序可跑,不存在死机问题。

第三个问题是成本。为了一个阈值判断,要把晶振、复位电路、下载口、稳压电路全带上,BOM成本比一颗LM339高一个数量级。

1.2 比较器方案的逻辑:阈值翻转就是一次判断

比较器干的事情本质上是“模拟世界里的if语句”:同相输入端电压高于反相输入端,输出一种状态;反过来,输出另一种状态。电池电压通过分压电阻映射到某个区间,基准电压设在你希望告警的阈值点上,两者一比较,结果就出来了。

就拿典型单节锂电来说,满电4.2V,标称3.7V,过放保护阀值一般设在3.0V~3.5V之间。我们如果希望电压跌到3.6V左右时给出告警,那整个电路只需要回答一个问题:现在电池电压低于3.6V了吗?这个判断由硬件完成,一秒钟重复成千上万次,永远不会累,也不会漏。

1.3 LM339与LM393、LM358的选型差异

很多新手会把LM339和LM393、LM358搞混,这里值得花30秒说清楚。

  • LM339是四路比较器,双列直插14脚,适合一路信号要同时对比多个阈值,或者一个系统里有好几路独立监测的场景。本文用的就是它。
  • LM393是双路比较器,8脚封装,功能逻辑和LM339几乎一样,只是通道数减半。如果只监测一块电池,用LM393更省空间。
  • LM358是双运算放大器,运放虽然也能当比较器用,但开环状态下没有滞回设计时容易在阈值点振荡,而且输出级是推挽结构,不能像比较器那样直接灌入较大电流还保持低电平干净利落。

一句话总结:做阈值判断就用比较器,别拿运放硬凑。LM339的优势是四路可扩展,你可以用其中一路做低压告警,另一路做充满指示,再留两路备用,后续想加功能不用改板子。

2. 先看懂LM339的引脚与输出行为,再谈接线

2.1 四路比较器的引脚排布与输入范围

LM339是14脚封装,四组比较器分别占用一组输入端和一个输出端。以最常见的DIP-14为例:

  • 第3脚:比较器1同相输入
  • 第4脚:比较器1反相输入
  • 第2脚:比较器1输出
  • 第5脚:比较器2同相输入
  • 第6脚:比较器2反相输入
  • 第1脚:比较器2输出
  • 第8脚:比较器3同相输入
  • 第9脚:比较器3反相输入
  • 第14脚:比较器3输出
  • 第10脚:比较器4同相输入
  • 第11脚:比较器4反相输入
  • 第13脚:比较器4输出
  • 第12脚:GND
  • 第3脚旁边对应的VCC其实是第3脚上面一点的位置,实际电源脚是第3脚?这里要特别注意。

我上面说的第3脚是输入,容易让人精神分裂,实际上DIP-14的电源脚布局是:VCC在第3脚旁边?不对,我应该直接给出标准脚位:LM339 DIP-14的标准脚位是:输出2在第1脚,输出1在第2脚,VCC在第3脚,输入1-在第4脚,输入1+在第5脚,输入2-在第6脚,输入2+在第7脚,输入3-在第8脚,输入3+在第9脚,输入4-在第10脚,输入4+在第11脚,GND在第12脚,输出4在第13脚,输出3在第14脚。

这个脚位和LM339数据手册一致,请务必对照你手头芯片丝印确认,别盲目相信网上的引脚图。电源接反是LM339烧毁的头号原因,没有之一。

输入共模电压范围大约是0到VCC-1.5V。什么意思?就是输入端电压不能太靠近正电源轨,否则内部差分输入级进入饱和区,比较结果不准确。5V供电下,输入电压最好控制在0~3.5V以内。这也是为什么电池电压不能直接进比较器,必须先分压降到合适的范围。

2.2 开漏输出和上拉电阻为什么是必选项

LM339的输出级是集电极开路(开漏)结构,这是它和运放最大的区别之一。开漏意味着输出端内部只是一个可以导通到地的开关,本身没有能力输出高电平。要想输出高电平,外部必须接一个上拉电阻到VCC。

这个特性在电池监测电路里有个实际影响:如果你忘了接上拉电阻,比较器输出低电平时灯会亮,但电池电压恢复正常后输出端变成开路悬空,LED不会熄灭,因为电流无法从输出端流出去,灯仍然亮着或者亮度异常。

上拉电阻的取值也有讲究。太小,输出低电平时灌电流过大;太大,信号上升沿变得缓慢。经验值是1kΩ到100kΩ之间。低功耗场景选100kΩ,一般应用选10kΩ,驱动LED时选1kΩ~4.7kΩ配合限流电阻使用。

2.3 输入偏置电流、传播延时等容易被忽略的规格

LM339的输入偏置电流典型值在25nA~250nA之间,非常小,所以分压电阻选大一点也不会明显影响阈值精度。但要注意,输入端不能超过电源电压太多,否则内部ESD保护二极管会正向导通,电流会灌进电源轨,导致其他芯片误动作。

传播延时大概在几百纳秒到微秒级,对电池监测这种秒级变化的应用完全够用。真正需要关心的是供电去耦:LM339虽然是小电流模拟器件,但在输出翻转瞬间,灌电流会从VCC经上拉电阻流过输出级,如果电源线上有较长走线,这个电流突变足以在电源上激起毛刺,影响同一电路里别的比较器。所以0.1μF去耦电容一定要贴着电源脚放,这点在后面布局时会再强调。

3. 分压网络与基准电压设计:从电池电压到2.5V阈值的换算

3.1 确定监测阈值:以3.7V锂电过放告警为例

设计的第一步是把“电池电压跌到多少伏算告警”变成一个具体的分压电压数值。本文以单节锂电为例,告警阈值设在3.6V左右。为什么不是3.0V?因为3.0V已经是深度过放边缘,等看到告警再做动作往往就晚了;3.6V相对保守,留出了处理余量。

如果监测的是12V铅酸电池,逻辑完全一样,只是分压比不同。12V电池一般把截止电压设在10.8V左右,分压后同样映射到比较器可接受的输入范围内。

3.2 电阻分压网络计算

分压网络的结构很简单:电池正极经过R1接到分压点,分压点经过R2接到GND,分压点接比较器同相输入端。分压点的电压等于:

V分压 = Vbat × R2 / (R1 + R2)

我希望电池3.6V时分压点在2.5V附近,这样后续基准就很好办。取R1=10kΩ、R2=22kΩ,则分压系数是22 / (10 + 22) = 0.6875。3.6V时分压点电压是3.6 × 0.6875 = 2.475V。非常接近2.5V。

这两个阻值都是E24系列里的常用值,容易买到,精度1%的贴片电阻价格也很便宜。你可以用公式实时验证:

R2 / (R1 + R2) = V基准 / V告警 = 2.5 / 3.6 ≈ 0.694

取R1=10kΩ、R2=22kΩ的实际分压比和理想值只差不到1%,符合工程预期。

3.3 基准电压源:TL431相比简单分压的优势

反相输入端的基准电压可以采用两种方式:一是直接用两三个电阻从5V分压到2.5V,二是用TL431精密基准源。前者简单,但精度和温漂都一般;后者贵一点,但基准电压稳定可靠。

TL431是并联型精密稳压源,把它的参考极(REF)和阴极(K)短接,就得到2.5V的固定输出。阳极接地,阴极经过一个限流电阻接到5V。限流电阻要保证TL431的工作电流在1mA到100mA之间。5V供电时选2.2kΩ到4.7kΩ都行。比如4.7kΩ,流过TL431的电流约(5 - 2.5) / 4700 ≈ 0.53mA,略低于最小工作电流1mA,所以稳妥起见选1.5kΩ,电流约1.67mA,安全。

TL431的基准电压典型值是2.495V到2.505V,温度系数约50ppm/°C,比普通电阻分压稳定一个量级。电池监测电路要的是可靠阈值,基准源这点成本不能省。

3.4 滞回比较器:为什么必须加正反馈,窗口电阻怎么算

不加滞回的纯比较器有一个经典问题:当分压电压缓慢爬过阈值时,电路里的噪声、电池内部阻抗波动、电磁干扰都会让比较器在阈值点附近反复翻转,输出表现为LED快速闪烁、蜂鸣器刺耳乱叫。

解决方法是引入正反馈,也就是把输出端经过一个反馈电阻Rf接回同相输入端。输出为高电平时,上拉的5V经过Rf把同相端进一步抬高,相当于把阈值点推高;输出为低电平时,Rf把同相端往低拉,相当于把阈值点压低。这样一来,触发告警的电压和解除告警的电压不再是同一个点,中间形成了一个“滞回窗口”。

窗口宽度的工程算式可以简化成:

ΔV ≈ (VCC - 0) × R_in / Rf

其中R_in是从同相端看向信号源的等效内阻,也就是分压网络的等效电阻。R1=10kΩ和R2=22kΩ并联后约6.9kΩ。如果VCC=5V,想要约0.15V的滞回窗口,则:

Rf ≈ 5 × 6.9kΩ / 0.15 ≈ 230kΩ

取标准值220kΩ,实际窗口约0.157V,足够吸收大部分噪声。注意,真正的翻转点会因为反馈电阻的存在而略低于理论值,实际电池电压触发点大约会在3.5V左右,这刚好是一个“保守侧”的告警点,宁可早报警也不晚报警。

4. 完整的电池电压监测电路:每个引脚怎么接

4.1 完整引脚连接关系

下面这个表就是这套电路的“文字版电路图”,照着接线就能搭起来。以LM339的第1组比较器为例:

信号LM339引脚连接对象说明
VCC3脚5V电源必须加0.1μF去耦电容
GND12脚地和电池负极共地
反相输入4脚TL431阴极(2.5V基准)阈值基准
同相输入5脚分压点(经1kΩRin)电池电压采样
反馈电阻5脚和2脚之间220kΩ形成滞回
输出2脚经10kΩ上拉到5V开漏输出必须上拉
LED驱动2脚5V→330Ω→LED→2脚输出低电平时LED亮

分压点计算:电池正极→R1(10kΩ)→分压点→R2(22kΩ)→GND。分压点再经过1kΩ电阻接到LM339的5脚。这个1kΩRin的作用是隔离反馈电阻的计算复杂度,也让同相输入端的等效源阻抗更容易预估。

4.2 输出端:LED指示灯、蜂鸣器和继电器的驱动区别

LM339输出低电平时的最大灌电流约为16mA,直接驱动一个20mA的LED没问题,但必须串限流电阻。5V供电、红色LED压降约2V,限流电阻取(5 - 2) / 10mA ≈ 300Ω,取标准值330Ω。电流控制在10mA左右,亮度够,又不会让芯片过热。

蜂鸣器就不建议直接接了。有源蜂鸣器工作电流动辄几十毫安,直接挂在输出端会把比较器灌电流拉到极限。正确做法是用一个NPN三极管放大:LM339输出端接1kΩ电阻到三极管基极,集电极接蜂鸣器负极,发射极接地,蜂鸣器正极接5V。输出低电平时基极被拉低,三极管截止;输出高电平时基极经上拉电阻获得电流,三极管导通,蜂鸣器发声。注意逻辑关系要设计对,别把告警极性弄反。

继电器驱动同理,但必须在线圈两端反向并联续流二极管,否则关断瞬间的感应电动势会直接击穿三极管。这是初学者最容易踩的坑,烧一片三极管都算轻的。

4.3 AD绘制或面包板搭建时的布局要点

用Altium Designer画PCB时,LM339这类模拟比较器的布局重点不是走线多粗,而是噪声隔离。以下几点是从实际项目中总结出来的:

  • 0.1μF去耦电容要放在VCC和GND引脚之间,距离越近越好,走线先经过电容再进芯片引脚。
  • 分压电阻R1、R2要靠近LM339的输入引脚放置,避免这一段高阻抗走线过长,被空间电磁干扰耦合出错误电平。
  • 基准源TL431不要放在功率走线或者继电器附近,它内部有1mA左右的电流变化,对温度敏感。
  • 电池采样线的GND必须和比较器共地,不要在别处单独拉地线,否则阈值会偏移。

如果是面包板验证,建议用稍粗一点的杜邦线做电源和地,信号线尽量短。面包板的寄生电容在高频场景是麻烦,但对于电池监测这种低频电路,主要注意别让输出线贴着输入线走,否则翻转瞬间的边沿会耦合到输入端。

5. Multisim仿真:焊接前先把阈值调到预期值

5.1 仿真电路的搭建步骤

Multisim做验证成本极低,推荐先仿真再动手。步骤很简单:

第一,打开Multisim新建原理图,从Mixed组里找到Comparator分类,放置LM339N。不同版本的库路径略有差异,我用的20版本在“Place→Component→Mixed→Comparator”下就能找到。

第二,放置三个直流电压源:V1模拟电池,范围设2.5V到4.5V;V2作为比较器供电,设5V;V3作为理想基准,设2.5V。仿真阶段先用理想基准验证逻辑,最后再在真实电路里换成TL431。

第三,按照上文的引脚表连线。特别提醒:别忘了放10kΩ上拉电阻,忘了它,你会在仿真里看到一个永远低电平的输出,然后以为是芯片坏了,其实是开漏结构没上拉。

第四,输出端接一个电压探针或者虚拟万用表。

5.2 直流扫描测量实际翻转点

Multisim的DC Sweep(直流扫描)能直接画出输出电压随电池电压变化的曲线。在“Simulate→Analyses and Simulation→DC Sweep”里,选择电源V1为扫描源,起始2.5V,结束4.5V,步长0.01V,输出节点选LM339的输出端。

运行后会看到一条跳变曲线:电池电压从高往低扫时,输出从高电平突跳到低电平的位置,就是实际告警阈值。由于加了滞回反馈,从低往高扫和从高往低扫得到的跳变点会不同,两个点之间的电压差就是滞回窗口宽度。看仿真曲线时用光标功能分别读两个拐点的横坐标,能得到精确的触发电压和恢复电压。

5.3 仿真中的典型坑:理想基准、上拉漏接、假滞回

用理想电压源做V3基准时,电路表现会异常干净,但这不代表真实电路也一样。TL431有温漂、有最小工作电流、有基准误差,实测值可能和仿真差0.1V以上。仿真的意义是验证逻辑和量级,不是确保精度。

另一个坑是“假滞回”。如果你把反馈电阻Rf从输出端接到同相端,但忘了接上拉电阻,那输出高电平时实际上是悬空态,反馈电阻起不到把同相端抬高的作用,滞回窗口根本不存在。仿真曲线看上去有跳变,但那个跳变只是单纯比较器翻转,没有任何抗噪能力。上拉电阻和反馈电阻是配套的,缺一不可。

还有一种情况:示波器接在输出端时因为探头电容过大,看到输出波形有明显斜坡,误以为振荡。仿真里用电压探针一般没这个问题,但实际示波器测量时要注意探头的10~15pF输入电容和1MΩ输入阻抗对高阻节点的影响。

6. 实测调试的几个问题和我的处理方式

6.1 翻转电压与计算值偏差大的常见原因

搭好电路后,用可调直流电源代替电池做校准。先把输出电压调到4.2V,再缓慢往下调,观察LED点亮时的电压。和我前面算的3.5V左右对比,如果偏差超过0.2V,按下面顺序排查:

第一,用万用表量TL431阴极的实际电压。正常应该在2.49V左右,量到2.4V以下就要检查限流电阻和供电电压。第二,量分压点在3.6V时的实际电压,确认R1、R2没有焊错位,最好实测阻值而不是相信色环。第三,检查反相端和同相端是不是接反了。最容易犯的错误是把分压信号接到了反相端,基准接到了同相端,结果整个电路的逻辑完全反的,电池电压高时反而报警。

6.2 阈值附近反复抖动:先从退耦查起

如果你在实测中发现电压停在阈值附近时LED不是稳定亮或者稳定灭,而是在来回闪,先不要急着怀疑滞回电阻。我遇到过类似现象,最后定位到去耦电容离LM339电源脚太远,输出翻转瞬间的电流冲击让VCC产生了几十毫伏的毛刺,这个毛刺又通过基准分压回路耦合到输入端,形成自激。

处理办法很简单:把0.1μF陶瓷电容移到距离LM339的3脚和12脚尽量近的位置,用最短的走线连接。如果面包板上无法做到贴脚,可以临时在芯片正上方跨接一个电容,效果立竿见影。

如果退耦没问题,再确认滞回窗口是否真的存在。用可调电源缓慢升压再缓慢降压,记录LED熄灭和点亮的两个电压点,差值应该大约0.15V。如果差值是零,说明反馈电阻没起到作用,优先检查Rf两端焊点。

6.3 低功耗与锂电长期监测的改进方向

这套基础电路不加任何低功耗优化时,整体待机电流大约3mA上下:TL431约1.5mA,分压网络约0.14mA,上拉电阻约0.5mA,LED驱动回路在非告警状态不耗电。3mA听起来不大,但1200mAh的锂电池挂一个月就会亏掉约2Ah容量,显然不可接受。

如果是长期挂在电池上的监测设备,至少做两个改动。第一,把上拉电阻增大到100kΩ,减少静态损耗。第二,把LM339的电源经过一个低功耗PNP三极管开关控制,只在需要测量的时候给电。或者更彻底一点,用一颗低功耗比较器如TLV7031代替LM339,待机电流降到微安级。如果只是做一台桌面实验电源的电压提醒器,不要求长期待机,那3mA根本不用操心。

基准这路还有一个更省电的办法:不用TL431,改用两个大阻值电阻从电池分压出2.5V,但这样温漂明显,只适合要求不高的场景。我个人实际使用中还是偏向TL431,稳定压倒一切。

如果你只是想快速验证“电池电压监测”的核心逻辑,用LM393双比较器加两个LED也能做。LM339的优势是四路,后续可以加一路做充满指示,一路做负载电流方向判断,一路做温度过高提醒。把一块板子的硬件资源榨干,比东拼西凑几块小板要舒服得多。这套电路做好了,后面扩展的空间很大,我最近就在这个基础上加了一路用另一个比较器做的高压告警,串并联电池组都能用同一块板子监测。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询