Notes on optimizing battery life:

好,你有一台带电池的东西,你想让它长时间运行。

我会用经典的CR2023非充电锂“投币电池”作为例子,但这里的内容适用于其他类型的电池。 (除了具体的电压和容量数字)

首先,测量电流和电荷的功耗,也就是电荷。 把一切都转化为能量和能量很诱人,但别这么做。

大多数电路的功耗更接近恒定电流而非恒定功率: 微控制器的单一时钟周期涉及充放一定数量的MOSFET门。 这需要一定数量的库仑,而不是焦耳。

线性稳压器将任何电路变成完美的电流汇: 无论提供多少电位,器件都能看到恒定电压,并且始终流用相同的电流。

即使你不使用,大多数芯片也会用少量电压来产生内部电压。 这是AVR32DD32微控制器在电压下的“典型”电流消耗,来自数据手册:

黑色:25°C。 黄色:125°C。

此外,电池容量几乎普遍以毫安小时为单位表示电量: 一块100mAh电池可以支持1毫安电流,持续100小时,之后就会“没电”。 (后面会详细说明这是什么意思)

非理想电池:

这块电池上面刻着3伏......但这有点谎言:

用仪表测量电池,电压实际上是3.3伏。 不过,查看数据手册后,要达到厂商宣称的235 mAh容量,需要在2伏以下工作:

来自数据手册(是的,这些都有)

使用这些“CR”锂/MnO2电池时,放电曲线相当平坦: 一个只能在标称电压85%(2.6伏)工作的设备,仍然能使用大约90%的容量。

然而,“碱性”锌/MnO2 1.5伏电池在剩余四分之一电量时会低于标称值的80%。 制造商认为它们在0.8伏时是死电的——大约是原始电压的一半。

在典型电路中,两块电池串联产生大约3V的电源。 要达到宣传容量,设备必须能降至1.6伏: 和(新鲜的)单细胞一样!

把供电电压想象成预算: 如果你的电池电压降到2伏,而MCU需要1.8伏,其他元件 参与供电的电压不得超过200 mV。

并不是说同一个MCU不能用两节AA电池, 但它无法使用最后10%左右的容量,因为它需要 每格至少1.8 / 2 = 0.9伏。

好的,那设计时是标称电源电压的一半吗?

不!

电池具有非平凡的内阻,当任何电流被拉动时,都会引起电压降: 投币电池通常约为10欧姆,而大型AA电池约为0.1欧姆。

为了理解原因,我们来看一下硬币单元的工作原理: 在负极上,一块锂金属失去电子并溶解到电解质中。

李→李++e-

产生的离子会传递到正极,从二氧化锰中窃取氧气:

2 MnO2 + 2 Li+ + e- → Li2O + Mn2O3

这个反应释放大量能量,因为锂是一种碱性金属,锰其实并不在意。 释放的能量实际上是驱动连接电路的动力。

关键是,整个过程依赖于正锂离子到达并与正电极反应: 在电池产生的电场中移动。

开路电压3.3伏足以完全停止反应。 这就是为什么电池只有在电路耗尽部分积累的电子后才会放电...... 但为了使反应以合理速率进行,电压必须远低于测得的开路电压。

如果你做过化学实验,应该会发现温度会影响它:

经验法则是,要在-40摄氏度下工作,计划在室温下内阻是10倍。 如果你看到电压轨在20°C时下降50 mV,确保电压仍有足够的电压在下降500 mV时循环。

另一个影响反应速率的因素是试剂的数量, 换句话说,电池中剩余的电荷: 随着电池耗尽,电阻会增加。

作为测试,我放电了一块400毫安的碱性电池:

橙色:开路,蓝色:负载状态

新电池时,拉近半安培的电流只能产生100毫伏,也就是0.25欧姆。 当电池电量半空时,电阻翻倍到大约半欧姆。 在60%放电时,负载不足电压已降至0.8伏“死”阈值以下。

降低电压需求在这里无济于事: 不久之后,电阻大幅增加,导致我的测试设备需要供电以强制送达400毫安电流。

较小的CR2032电池起始电压约为10欧姆,开路电压降至2伏时可达数百欧姆。

因此,任何耗电较大的电路都无法使用满额定容量。 对于脉冲负载,大容量电容可以帮忙,但它们也有自己的问题,稍后我会详细说明。

而且电池随着时间变差。 电解质可能会蒸发/泄漏,副反应会形成阻碍电流的层。

你很可能经历过这种情况: 一块电池在电表上测试正常,但实际上拒绝供电。

发生的情况是它产生了巨大的内部电阻(许多杀欧姆)。 与高阻抗万用表串联时,不会产生明显的电压降。 当连接到实际设备时,电压几乎降到零。

这就是为什么你应该对任何关于20年、30年、50年电池寿命的说法保持怀疑。 当然,这可能是用标称容量除以平均电流消耗的结果,但电池在这么长时间后能不能正常工作: 我怀疑连制造商都不太清楚十年或二十年后会发生什么。

还有自放电,漏电流会消耗电池,即使电池放在架子上: 制造商通常以年产能百分比给出。

因为电池放电时电压变化不大, ——而且水流很小—— 这只是原始容量的一小部分,而不是剩余容量的。

仅凭这点,AA电池在5年内就足以报废,具体时间取决于温度(越热越糟)...... 但这并不是唯一的机制: 仅仅因为自放电暗示有一百年的保质期,并不意味着它一百年后真的会奏效。

另一个“有趣”的现象是电压下降:

拉电流会消耗电极周围的化学物质,导致电阻暂时增加。

对半空的ZnMnO2 500 mAh电池施加400毫安电流脉冲,导致内部电阻 在40秒内完成三倍:

黄色:电池电压。蓝色:当前

最终电池恢复了,但花了大约一分钟左右:

实际上是不同脉冲的痕迹,所以起始电压更高。

有趣的是,即使没有电流被抽取,电池电路的电压仍然没有回到应有的位置。

这正是“抵抗”模型开始崩溃的地方。 更准确地说,脉冲暂时将电池推向下了放电曲线: 增加电阻并降低开路电压。

当电池几乎耗尽时,情况会更糟: 我对一个耗尽80%的电池施加了类似的10秒脉冲, 开路电压大约花了5分钟才回升到0.8伏以上。

这种效应因温度(越冷越糟)和电荷状态而变化很大,所以包含在内是个好选择 设计能够持续电流的电路时,需要宽大的电压裕度。

简而言之,当......

• ...好冷

• ...电池快没电了

• ...电池被使用了

• ...你什么都不做

要预料到比工作台上看到的电压降要差得多: 在寒冷的夜晚,用几乎空的投币槽,每抽取一个毫安电流,损失电压可能高达一伏。

考虑到这一点,现在是时候审视这些容量数据了。 如前所述,目标超过十年基本没意义,因为电池老化。 这些CR2023电池的保质期是10年,所以我的目标是:

从CR2032(~230 mAh)电压到2伏时,设备平均可耗电2.6 uA。 从AA(~3000 mAh)AA电池中,如果每节电池电压降至0.8伏,设备可耗电34 uA。

...所以我们有电压预算和目标电流。 请记住,当拉动超过几微安培的脉冲时,内阻会降低电压。

测量技术:

这些小电流带来了一个问题: 大多数万用表在微安培以下表现不佳。 有能精确到纳安培的台式型号,但价格相当昂贵。

理论上,测量电流很容易: 在电路中插入一个已知电阻,测量其两端的电压降...... 不过这要么需要增加较大的电阻,要么测量极小的电压。

更好的方法是使用运放来隐藏被测器件的电压降:

放大器试图保持两个输入电压相同,这需要它完全匹配 设备的电流通过反馈电阻。 这导致电压与用作并联时完全相同,但负载电压为零。

那个另一个opamp是怎么回事?

由于大多数芯片有两个运算放大器,我用另一个做VDD/2供线,作为地线使用。 这使得芯片能够访问上下两侧的电压。

大多数现代芯片都是“轨道对轨道”,意味着它们设计成靠近某个供电轨道工作...... 但这个方法效果不太好:

考虑输入电流降为零时会发生什么。 放大器必须将输出(带有非平凡电容)降到零。 如果放大器能做的最好事情就是把输出接到负轨, 电压会呈指数衰减,接近零但永远无法达到。

这会是个大问题吗?大概不会。 让芯片的工作尽可能简单是个好主意吗?是的。

额外好处是,这使设备能够测量双向电流。

使用100 pA/mV范围,电路的偏移量是~10 pA,所以不完全是皮安计,但很接近。 这使得它适合测试MOSFET、二极管、电容器等的泄漏。

然而,这个设计有一个巨大的问题: 它在一个相当适中的点下是零负荷电压。 一旦输出达到最大值(100 nA - 100 uA,取决于范围),设备就能看到完整的并联电阻。

这对元件泄漏测试来说不是问题, 但在测量微控制器拉取的电流时,这就成了问题。

测量睡眠电流时,最好构建一个永远不会唤醒的固件镜像, 启动时短接电表输入或连接第二个电源。

另一种选择是使用一个微小的反馈电阻: 在输入和输出之间连接一个1 k欧姆电阻,可获得1 uA/mV的范围,最大为1 mA。 微控制器启动后,可以拆除电阻来测量其睡眠电流。 (如果你画的比这更多,可能就不该画了)

这也是避免切换距离时MCU崩溃的好方法, 根据选择开关的几何形状,可能会导致短暂断开连接。

屏蔽不是可选的: 100皮安培是一种在空气中漂浮的电流。

最好把整个设备放在一个连接到电表接地的金属盒子里。 将同轴线连接到示波器或仪表是可以的,因为导线的护套与屏蔽的其余部分相连: 这不是射频技术。

如果没有盒子,用铝箔包住整个盒子也差不多。 (确保它不碰到任何东西!)

另外,小心屏蔽干扰后再用电源重新引入干扰有点傻。 所以最好所有设备都用电池: 两个1.5伏碱性电池提供3伏,四个电池足够接近5伏。

另外,要注意接触电表或被测部件的部件: 一张便签纸可以轻松导电5伏的纳安培电流。 木材和织物同样是个问题。

如果不确定是不是问题,就去测试一下。

测量电容器时,有一个非常烦人的特性需要注意: 介电材料可以在数小时内缓慢吸收或释放电荷。

这种效应主要用于在高压电容器从电路中取出后为其充电 ——结果不愉快—— 但如果在真实电路中使用电容器,也可能导致一个看似高的漏电流,而这种电流会消失。

除非你有高级聚丙烯电容器,否则你得在测试机里放置几个小时才能测量。

电路测试:

当然,仅仅测试单个组件是不够的。 整个系统必须在电源不完美的情况下正常工作:

一个用投币电池运行的设备,应该能在两伏电源下承受完整的1k电流。

...另外,模拟电池没电的情况也是个好主意: 电池没电不应该导致硬件损坏或数据丢失。

温度会极大地影响漏电流。 如果你预计元件温度会升到80摄氏度,可以买个热风枪,看看在那个温度下的表现。

实用建议:

在考虑任何元件之前,电路板本身会消耗电力吗? 论坛上有很多人说不应该用焊锡罩,或者电路板上的助焊剂会导致泄漏......

测试时,我用了一块没什么特别的JLCPCB,绿色,FR4,两层板。 它有两条四分之一毫米的线索,长30毫米,间距2.7毫米。

测量时,我用的是9伏偏压,应该代表最坏结果:

• 清洁:测试出厂时的主板

• 潮湿:呼吸几秒钟(相对湿度99%,无可见冷凝水)

• 手指:触摸以让皮肤油脂沾到板子上

• 松香:涂抹一些RMA助焊剂,用烙铁烧灼。

主要的问题是湿度。 如果你设计的电路需要在户外工作, 无论是水下还是地下,最好加入一些干燥剂: 大多数塑料会让水蒸气渗透进去。

焊锡掩膜防止了线路间的显著泄漏, 但组件引脚之间仍可能出现问题。 贴身涂层能防止短时间曝光,但会存在渗透问题。

除非你做微安培计量,否则焊接残留物或皮肤油脂不是问题。

电容器:

电解电容或钽电容在几伏时可能泄漏多个微安电流: 一颗100 uF 16V的果冻豆电解电容在9伏时拉取26 uA, 这已经是CR2032目前预算的十倍!

仅这个电容就能让电池放电一两年。

陶瓷电容效果好很多: 我从零件箱里随便拿了一个1 uF的电容,最初拉了几百纳安培,但两小时后降到了920 pA @ 9伏。 即使有100个,也只能消耗92 nA,仅占预算的3%。

总结:不要用电解剂或钽剂。陶瓷电容器没问题 在合理量内,且运行时电压远低于额定电压。

二极管:

二极管非常常用用于反极性保护,但有两种可能的配置:

串联二极管使用正向偏置二极管防止反向电流进入器件。 并联二极管在损坏器件前加一个反向偏置二极管,以钳位反向电压。

串联配置中,电压降非常重要:

真实的二极管与理想模型有很大不同。 1N4148在1毫安电流和25摄氏度时的电压降仅为0.6伏。

电流与电压降的关系大致呈指数: 对于硅PN二极管,电流是10倍需要额外100毫伏。

这也适用于反方向: 只需要10 uA(峰值)的电路,二极管上大约只有0.4伏的降幅。

温度会影响这一点: 每冷却一度二极管,阈值就会上升约2毫伏。 在-40度时,室温下电压降会多出130毫伏。

肖特基二极管的阈值电压要低得多: 1毫安电流只需0.25伏。 这对你的电压预算来说是极大的提升,虽然仍然是一个不小的数字。

在并联配置中,反向泄漏很重要。 由于电压高度依赖,我测得了几个5伏的二极管,这更接近正常工作条件:

2N4148 [PN] @5V:2.3 nA

BAT46 [肖特基] @5V:2.4 uA

在这个测试中,肖特基表现不佳: 它比类似的PN二极管差三个数量级。

所以,使用PN二极管对吧? 如果电池能为短路(新投币电池)提供50毫安电流,器件两端可能有大约一伏的电压。 这可能足以造成损害。 那么,有什么好的反极性保护电路呢?

也可以采用n信道低侧切换版本

MOSFET可以作为近理想二极管: 如果连接负极轨的栅极确实是最低电压,那么它就被打开了。 如果电池插反,栅极电压在电路中最高,晶体管保持关闭状态。

不过,查阅数据手册或进行实验仍然很重要: 电池电压可能不足以完全开启场效应晶体。 即使是真正“开启”的MOSFET,也仍然存在电压降。

最后一个选择是什么都没有: 存在一些物理上防止用户将电池反插入的电池夹。 这些电阻除了接触电阻(相比电池本身几乎可以忽略不计外),没有电气损失。

肖特基泄漏对双电源电路也是一个问题。 一微安培的回馈电流实际上可能足以损坏备用电池。

在这种情况下,你可能需要使用PN二极管或MOSFET的变体: 把门连接到主供水轨。

由于晶体管本身的本体二极管,这至少能与硅二极管相当。 一旦电源轨降到零,MOSFET的栅极会是负的,它会开启。 不过,如果主导轨失电压需要超过一毫秒左右,性能就不会完美。

最好为PN二极管降落做好准备,并考虑多出电压,作为额外奖励。

计算机:

理论上,CMOS逻辑在闲置时不会耗电。 实际上,确实如此。

8位AVR128DD28微控制器在休眠模式下耗电为1.5 uA。 连接一个32KHz晶体并利用集成的RTC来提供唤醒,电流提升到1.8 uA。

这样平均电流就只有700 uA可用。

好吧,但处理器总得做点什么。 每个时钟周期都有固定成本: 对于AVR,我测量到的是~0.28纳安秒,这意味着电池有足够的电力支持3000亿次循环。

单个时钟周期运行在32 kHz运行的AVR128DA28上。

不过,使用慢时钟几乎总是个好主意: 芯片每 MHz 会额外消耗 277 uA 电流。 在默认的4 MHz时钟频率下,这大约超过一毫安。

电池不能保证能提供那样的功率。

解耦电容在这里救不了你: 1 mA足够用1伏/毫秒的速度耗尽一个相当大的1 uF电容器。 (记住,不允许带电解剂。)

由于MCU的最低电压为1.8伏, 电池最低可达两颗,这样运行只有200微秒/800个周期才安全!

然而,在32 kHz运行时,平均只耗用10微安培。 每个时钟周期仍有电流脉冲,但足够小,导致1微法电容器电压下降0.27毫伏。

处理器运行时的电流比睡眠模式更静止。 这就是为什么有人建议你应该用最大时钟频率来节省电...... 但虽然理论上更高效,但实际上无法与真实电池配合使用。

这也让我们能够计算它能持续多久: 10微安培是剩余700纳安预算的14倍,因此处理器可以运行7%的时间。

另外,在这个特定的MCU中,唤醒会产生一个大电流脉冲:

由于杂散电容,给处理器供电所需的时间整整是2.62纳安秒。 使用1 uF电容时,这会耗尽2.62 mV。 但像6.8 nF这样的小容量,可能放电整整385毫伏。

像这样的东西,我建议用大约微法拉德的量: 一块额定为1 uF(MLCC)的陶瓷,在几倍电源电压下几乎不会漏油。

公平地说,数据手册确实推荐了这个数值, 但很多人习惯使用更小的: 当你有5伏电源时,损失三分之一伏并不算大问题。 使用3伏但实际上是2伏的电池,足以让芯片的最低工作电压以下。

有些部件声称睡眠电流(纳安培级)要低得多,但这还不包括内存: 大多数应用程序无法使用这些模式。

考虑一个数据记录器。 由于闪存写入几字节或一千字节时消耗的功耗相同,能够缓冲读值实际上能节省电耗。

...不过,在某些应用中,这样的功能确实有意义: 这是你必须考虑的,别再完全接受睡眠电流参数。

相关报道:

•ww1.microchip.com/downloads/en/DeviceDo...A28-32-48-64-DataSheet-DS40002183B.pdf: 讨论的微控制器。

•data.energizer.com/pdfs/cr2032.pdf: 示例电池数据表

•lcamtuf.substack.com/p/real-mlccs-and-inductors-have-curves: 另一把带电容的脚枪

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论