便携式电子设备一般带有锂电池,其电量的计算,最廉价的方案是通过侦测电池的电压来实现。
比如曾经做过的一个电纸书阅读器的项目,也就是Kindle这类产品:
其电池电压侦测电路非常简单:
两个电阻对电池的电压进行分压,经过电容滤波后送给MCU的ADC管脚进行电压测量。
这个电路在系统关机后还会一直消耗电池的电量。以锂电池电压为4.2V为例,浪费的电流为9.3uA:
9.3uA看似不大,在有些要求极致低功耗的应用场景,也是不能接受的。
如果MCU的ADC输入阻抗较小,那么两个分压电阻的取值要更小一些,比如30Kohm和15Kohm,浪费的电流就更大了,会达到93uA。
如何解决这个问题,实现关机功耗为0呢?
一、第1个推荐电路
在不进行电压测量时,把两个分压电阻的放电回路断开。加入一个NMOS管即可:
单片机的GPIO,即MCU_Control控制MOS管Q1的栅极:
1、需要测量电池电压时输出高电平,将MOS管Q1打开。
2、不需要测量电池电压时输出低电平,将MOS管Q1关闭。
这个电路需要注意,在MOS管Q1关闭时,电阻R2没有参与分压,MCU的ADC引脚通过电阻R1直接连接到电池,需要注意ADC引脚是否能够承受锂电池4.2V的电压值。
二、第2个推荐电路
如果不能承受,那么把电路改动一下,将MOS管上移到两个电阻之间:
假设MCU的GPIO输出的高电平为3.3V,即MCU_Control输出3.3V,那么在MOS管打开时各点电压如下:
所以MOS管的Vgs = 3.3V - 1.4V = 1.9V。
查看MOS管AO3400的数据手册,其Vgs的范围是0.65V-1.45V:
MOS管导通要求的Vgs最大值为1.45V,小于上述电路的1.9V,所以上述电路可以使用。
提醒大家在选型MOS管的型号时,务必注意Vgs这个参数。
如果MCU的GPIO是1.8V的,那必然不能把上述电路的MOS管打开。
三、第3个推荐电路
如果不能满足MOS管对Vgs最小值的要求,继续改进一下。
改进需要付出代价,下面不再使用NMOS,改为使用PMOS(同等参数情况下PMOS更贵),并加入更多的元器件。
将MOS管继续上移:
1、当MCU_Control输出高电平时,三极管Q2打开,MOS管Q1打开,电阻R1、R2与电池Vbat连接形成放电回路,MCU_ADC可以进行电池电压侦测。
2、当MCU_Control输出低电平,或者MCU完全断电时,R6将三极管Q2的基极拉到地,三极管Q2关闭,MOS管Q1关闭,电阻R1、R2与电池Vbat断开。
具体原理见文章《带软开启功能的MOS管电源开关电路》(点击阅读),对PMOS管电源开关电路做了非常详细的介绍。
另外需要注意MOS管对Vgs最大值的要求,不能超过最大值,否则MOS管会损坏。
假设电池电压Vbat为12V,在三极管Q2打开时,MOS管Q1的Vgs = -12V:
而这颗MOS管AO3401A的Vgs的极限最大值正是±12V:
已达到参数上限。
这种情况可以加入一个电阻进行分压:
四、总结
本文从只有两个电阻进行分压的电路开始,为实现关机功耗为0,对电路进行扩展,并针对存在的问题逐步改进。
3种电路都有其适用范围,大家可以根据自己的产品功能特点进行选用。
五、扩展阅读