在微控制器电路中使电池持续很长时间


26

我希望使用一些小的电池(可能是纽扣电池)为ATtiny85V供电很长时间。

我已经研究了软件方面,我的代码是由看门狗定时器驱动的,关闭了未使用的模拟和数字转换器,芯片以1MHz的频率运行,等等。当然在这方面既忙又新它消耗了多少电流,但我希望基本上已将其最小化。

它每隔几秒钟醒来一次,对ADC进行电压电平检查,将其记录到ram中,然后返回睡眠状态。如果检测到串行线已连接,则将数据喷出。

但是,现在我正在查看整个电路,并想知道是否应该做一些事情使整个电路对电池更友好?

在设计一个组件(微控制器)具有重复但可变电流消耗的持久(简单)电路时,基本的基本原则是什么?

例如:

  • LED指示灯有什么大不了的吗?电池没电了吗?我应该在其上放一个巨大的电阻以使其变暗,还是仅仅使电阻使用电池?
  • 我应该使用旁路/去耦电容器来均衡从电池汲取的电流,还是电容器会浪费电池的电量?
  • 微控制器仅需要1.8V,但我没有任何1.8V电池。我应该使用两节1.x电池并发送太多电压吗?我可以通过不使用很多伏特来延长电池寿命吗?我怎么做?
  • 检查引脚为高电平还是低电平需要额外的功率吗?与无操作或某种算术相比,检查GP I / O引脚之一的状态是否有很多额外的功耗使用?

我模糊地知道如何计算(更模糊地如何测量)电流,电压,功率,但是我不确定这些东西中的哪一部分等同于电池寿命。电池寿命的重要衡量单位是库仑吗?

我有一个模糊的想法,认为电池充满了诸如以下内容:

  • 收费,以安培小时为单位
  • 能源,以瓦特小时为单位
  • 功率,以瓦特为单位

但是我不清楚电路在运行时会“吃掉”什么。我已经阅读了大量的EE101和物理教科书,但实际上我没有任何实验经验。换句话说,我已经阅读了大量有关电池的信息,但是我不确定在实践中大多数含义是什么。

电阻器会耗尽电池寿命吗?做电容器吗?二极管吗?我怀疑它们都可以,但是哪个数字重要呢?阻抗?功耗?当前?电压?

有没有一种方法可以降低电压而不浪费电池?有没有办法在增加电池寿命的同时降低电压?


6
这是一个非常非常广泛的问题。您几乎需要问多个问题。对于LED功率问题,我可以提出一个完整的问题。
Kortuk

1
太好了,我会在下班时间分解。也许这只是广泛的做与不做的事情。我认为这样的答案对试图从电池中获取更多收益的人们会有所帮助,但是我想给出任何一种权威或有教育意义的答案都需要一个狭窄的问题。
杰克·施密特

是的,我意识到我将不得不按您的问题来回答我的问题,这将花费我一个小时。
Kortuk

顺便说一句,我的妻子发现makezine.com/makeitlast最终可能会有用,因为从根本上讲,这是制作这种东西的竞赛。我认为这是从今天开始的,因此他们没有任何提示。无论如何,我的项目是独立的,并且我仍然怀疑我是否有时间参加:)如果您不喜欢这样的事情,请随时等待比赛结束。
杰克·施密特

Answers:


20

只是一个随机列表,如果发布原理图,可能会更容易:

1.8V锂纽扣电池非常容易找到,但是您的串行接口更可能需要3.3v?除非您的接收端将处理1.8V。

泄漏电流通常会随着电压的升高而上升,因此通常越低越好。还要考虑系统的欠压点与电池特性。电池的“死亡”特性将由您使用的电池化学性质决定。例如,如果您的uC在1.7V电压下掉电,您实际上可能希望使用更高电压的电池,因为某些电池的输出电压会随着电池的耗尽而缓慢降低。使用3.3V电池可以延长使用寿命,因为当它开始耗尽时,其输出会缓慢下降,并且可以一直工作到1.8V。如果您使用1.8V电池,则随着电池耗尽,将很快关闭。所有这些都假定您的串行接口或其他组件可以处理很宽的电压范围(我知道AVR可以)。

LED会消耗大量电能,除非您使用功率非常低的LED并控制其电流消耗,否则可能消耗的电流要比AVR多得多。如果仅在调试时使用它,则不要填充它以进行生产或仅使其不时闪烁一次,以尽量减少其按时运行,并确定控制其当前消耗。

如果可以,请选择串行接口的极性/静止状态以消耗尽可能少的功率,它的静止状态不应消耗功率。如果需要上拉电阻,则应使用最大的电阻,以保持信号完整性,同时最大程度地减少电流消耗。如果功耗是一个巨大的问题,请使用一种信号方案,该方案倾向于不消耗功率的位。例如,如果您有上拉电阻,则使用一种协议,该协议的信号中会出现很多“ 1”,这会使串行接口处于大多数情况下功耗不大的状态。仅当您大量使用串行总线时,此类优化才值得。如果使用很少,请确保其静止状态没有消耗电力。

一般来说,您可以假设所有指令(读取GPIO等)需要相同的电量。它不是真的,但功率差异很小。

功耗更多地取决于您已打开电源的外围设备的数量/类型,以及微型计算机在活动状态与睡眠状态之间花费的时间。因此,ADC使用更多的功率,而EEPROM写入使用的功率相当大。特别是,像EEPROM写入之类的事情通常是在相当大的“块”中完成的,因此在对EEPROM进行写入之前,您应该积累尽可能多的信息(如果您甚至使用它)。对于micro支持在其两个睡眠状态下读取ADC的ADC,因为ADC转换需要相对较长的时间,所以这是一个良好的睡眠时间。

您可能应该只阅读微控制器数据手册中有关电源管理,睡眠状态和最大程度降低功耗的部分:链接第35页。保持AVR尽可能长时间处于最深睡眠状态。唯一的例外是您必须考虑启动和关闭时间。如果醒来需要25个睡眠,那么10个周期的睡眠是不值得的。

电阻器会耗尽电池寿命吗?做电容器吗?二极管吗?

他们都在某种程度上做到了。电阻在大多数应用中的耗散最大:

P = V * I

P = V ^ 2 / R或P = I ^ 2 * R(其中V是电阻两端的压降)

二极管具有(相对)固定的压降,因此功耗几乎只与流过二极管的电流有关。例如,如果电流正向流过二极管,则二极管的正向压降为0.7V,P = 0.7 *I。当然,这是一种简化,您应该根据二极管的IV特性检查操作模式。

电容器理论上不应该消耗任何功率,但是实际上它们具有有限的串联电阻和非零泄漏电流,这意味着它们确实消耗了一些功率,但是通常您不必担心如此低的电压。话虽这么说,选择具有最小泄漏电流和ESR的电容器是一项成功之举。

至于使用它们来平滑电池消耗,这对用电并没有太大帮助,而对于滤波则更多。电池化学也将在这里发挥作用,某些化学物质会不断消耗,从而变得更快乐,而某些化学物质对尖峰电流的吸收会更好。


1
P = V ^ 2 / R的重要部分是,当R以固定电压上升时,功耗降低。
Kortuk

很酷,所以要使用更多的电池,我可能需要更高的电压(可能使用安德鲁建议的调节器)。我将做一些实验,看看串行线将需要多低的电压。我还要确保将未使用的引脚设置为输出。串行仅偶尔使用,因此我只检查其余状态。我肯定已经尝试关闭所有外围设备。
杰克·施密特

对于电容器:大概我不需要任何电容器来帮助电池了。检查电池的化学性质,但是假设它可以处理我现有的电流消耗模式,那么就无需尝试对其进行调整,对吗?
杰克·施密特

谢谢你的P东西。我想我现在明白了。P = I * V其中V是电压降,因此只要电压不能改变,我就可以用P或I(或P小时或I小时)来测量电池消耗。我仍然不确定是否可以“免费”更改V。
杰克·施密特

1
提到的升降压调节器确实是最好的解决方案。我之所以没有提及,是因为此类电路的布局通常很关键。如果没有时髦的性能或辐射大量的EMI,它们就很难做成面包板。仔细阅读数据表,通常包括布局和识别关键路径的建议。在某些使用的零件上也会有更严格的约束。低ESR电容器等。
标记

12

马克给出了一个极好的答案,并提出了我要提出的许多观点。我也想贡献一些。

将示波器与低欧姆电阻器串联使用,并与常见的返回电池串联进行电流测量。微控制器的电流消耗并不简单,通常来说,电表的FAR速度太慢,无法让您很好地了解正在发生的事情。“低欧姆”的含义取决于预期的电流消耗。一个1欧姆的电阻每产生100mA的电流就会产生100mV的电压,这对您来说可能太大了。我会尝试使用10欧姆1%或0.5%的电阻器;每消耗10mA电流就会看到100mV。18欧姆每5.5mA可提供100mV。如果您真的要低功耗,那么也许可以节省1k的成本。I = V / R:每消耗100uA电流,您就会看到100mV。小心点;如果您汲取足够的电流,您最终将在分流器上下降太多,并且测量将关闭,更不用说电路可能无法正常工作。:-)

在连接“示波器”的情况下,为微控制器尝试几个不同的工作频率。您可能会惊讶地发现,由于时钟花费的时间少得多,因此以较高的时钟速度消耗的功率更少,因此您可能会感到惊讶。

尽可能消除上拉/下拉。您的任何输出都不应有任何输出,因为在大多数情况下,您可以将它们驱动为空闲状态。正如Mark所说,输入应该与有意义的联系在一起,并使用尽可能高的值。

确保您的微控制器已尽可能关闭。将未使用的引脚转换为输出,并将它们驱动到一个状态(高或低,无关紧要)。不要让LED亮着。如果您可以关闭其他组件的电源或停止其时钟,请执行此操作。例如,SPI Flash存储器通常具有“掉电”命令,该命令将消耗本已很低的功耗并将其驱动到更低的水平。

其他人则谈到了电压方面,我也想对此发表评论。如果在电池和电路之间使用高效的降压/升压调节器,则可能会更好地使用电池。当电池电量高于所需的1.8V时,稳压器将处于降压模式(电压降低),而当电池电量低于1.8V时,则切换至升压模式(电压升高)。这将使您能够运行电路,直到电池完好无损为止,这绝对值得您使用它们时获得几%的效率损失。确保根据要使用的整个范围内的效率选择调节器,并适当调整调节器的尺寸;能够以98%的效率提供1A电流的稳压器可能以60%的效率提供50mA电流。仔细阅读数据表。


凉。我以前没有使用过示波器,但是我怀疑我们的本地实验室会很乐意向我展示一下(现在我实际上是在串联使用万用表来测量电流;不是很好)。–另外,假设我可以找到合适的器件,即使我仅使用1-10mA,您是否仍会推荐稳压器?90%的效率是否足够好(我记得在那个范围内找到了便宜的产品),还是使用的电流超过了我所节省的电流?
杰克·施密特

1
关于频率播放的一个非常好的观点,让我想起了手机中的wifi无线电比蜂窝调制解调器使用更多的功率,但是wifi如此之快,它可以睡眠更多,因此总的来说,它在功率上会更好。
标记

2
估计电流消耗“突发”的情况下,估计时间平均微控制器电流使用的另一个技巧是给一个很大的电容器充电,并让它馈入低静态电流调节器以模拟电池电压。100,000uF的电容器每毫安秒将下降0.01伏。如果它在五分钟(300秒)内下降了0.3伏,则平均电流消耗为100uA。
supercat

监管机构的效率至关重要。因此,您必须估算您的电流消耗范围,才能在该范围内选择合适的稳压器
gustavovelascoh,2016年

4

对于您的电路,我建议在微安范围内使用万用表来测量电流消耗。然后,根据电池的特性,您可以计算出寿命。它不一定是安培小时/电流,因为电池针对不同负载具有不同的放电特性。但是,它可能是有用的近似值。

如果要比较PIC单片机,我认为在1 MHz时,您将吸收一点功率-至少100µA。但这将被流经您的LED的5mA至20mA所淹没,因此您应该首先消除它。


凉爽,LED擦除。很难获得准确的测量结果。现在看起来像0.9mA,所以也许我的软件没有像我想象的那样关机。与Arduino(和心跳LED)配合使用时,它更像是8-9mA,因此至少有帮助。
杰克·施密特

1

如今,已经有现成的开发套件和分线板,可用于进行精确的电流测量,在某些情况下甚至可降至nA范围。如果您还不确定,请查看µCurrent Gold。这对于静态测量是有益的,但对于随时间推移记录测井则不利。

仍然可以使用µCurrent的一种方法是将差动放大器连接到输出。然后,您可以将其馈入具有模拟输入的示波器或逻辑分析仪。我在上面写了一个完整的螺母和螺栓教程,我觉得它可能对预算有限但没有合适工具的人们有所帮助。

您不仅可以从电路内部的电压中学习到电压,而且还可以对每个微小的电流尖峰做出反应,这是令人惊奇的。在选择电池技术和验证测试时,它节省了我很多时间。😎


0

所有答案都已经有重点。我将根据经验添加一个。

当我开发功耗小于10uA的设备,甚至在深度睡眠模式下小于1uA的设备时,电路板的清洁也会有所不同。一次,我有10个板中有7个具有预期的电流消耗。都一样,一切正常。用超声波清洗机清洗后,所有板子都达到了预期的效果。

最后,检查所有元素的数据表,估计您的预期/目标消费量。如果您处理得当,您将达到您的估计。这包括微控制器中所有未使用的引脚。即使关闭ADC,也要确保关闭时的引脚配置最佳,具体取决于您的外部连接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.