Arduino的节能选项有哪些(或如何使用)以延长电池寿命?


40

对于太阳能和电池供电的项目,必须降低功耗。

我对使用定时器和中断使微控制器在不执行任何操作时进入睡眠状态有所了解。

我还读到可以禁用某些外围设备以进一步节省功耗。

这是解释这些内容的页面:节电技术

我的问题:

  • 还有哪些其他技术可以节省电量?
  • 是否有任何库使使用这些AVR功能更容易?

Answers:


33

注意:我想指出的是,即使您的答案被接受,但如果您真的想用任何Arduino板节省能源,读者(您)也应该先阅读Anindo的答案。在设计中解决了这些问题之后,您应该阅读我的回答,并担心如何将MCU设置为低功耗模式。

话虽如此,有几种技术可以使Arduino节省功耗。我将列出其中的一些内容,然后为您指向一个详细解释所有内容的页面。

  1. 尽管控制器没有做任何重要的事情(例如,在一次读取传感器与第二次读取传感器之间),但是您可以使用command将控制器置于下面的睡眠模式之一set_sleep_mode (SLEEP_MODE_PWR_DOWN)。每个模式旁边是每个模式的近似功耗。

    • SLEEP_MODE_IDLE:15 mA
    • SLEEP_MODE_ADC:6.5 mA
    • SLEEP_MODE_PWR_SAVE:1.62 mA
    • SLEEP_MODE_EXT_STANDBY:1.62 mA
    • SLEEP_MODE_STANDBY:0.84 mA
    • SLEEP_MODE_PWR_DOWN:0.36 mA
  2. 禁用掉电检测(检测到低压时关闭控制器的电路)。

  3. 关闭ADC(模拟到数字转换)

  4. 使用内部时钟

然后,当您使控制器进入睡眠状态时,您需要使用以下一种或多种机制来唤醒控制器并对其进行处理:

  • 唤醒信号

  • 定时器唤醒

这是我的总结-

该文章主要适用于ATmega328P,但该技术也适用于其他Arduino兼容控制器。正如TheDoctor所说的那样,您将需要检查数据表以确保您的控制器支持所有这些技术,以及如何更精确地做到这一点。


2
感谢您引用我的页面www.gammon.com.au/power。利用上面提到的所有技术,应该可以使您消耗约100 nA(0.1 µA)的电流。其他可能产生重大影响的技术是在较低的频率和较低的电压下运行。再加上Anindo Ghosh关于不使用稳压器的说法。我制作了一个由电池供电温度和湿度传感器,传感器采用了许多这样的技术,在使用电池几年后,这种技术仍在不断发展。
尼克·加蒙

@NickGammon-公平地说,我认为您的出色文章值得更好的参考,因此我在此范围内编辑了答案。感谢您的精彩文章-非常清晰,完整!欢迎来到Arduino.SE。很高兴你在这里。
里卡多

24

实际上,Arduino板上最大的功率浪费是其上的线性稳压器。

  1. 只要板上的微控制器,LED或任何其他外围设备消耗电流,线性稳压器就会浪费等于difference between supply and board voltagex的功率current drawn

    因此,第一个解决方法是断开板上的电源指示灯LED的连接,并且尽可能不使用任何其他LED。第二,为电路板提供尽可能低的电压,该电压足以为板载稳压器供电。

  2. 在原始设计中,所使用的稳压器不具有低静态电流。这意味着,即使电路板上没有任何功率消耗,稳压器本身也一直在浪费相当多的功率。

    一个简单的解决方法是用额定静态电流极低的LDO(低压降线性稳压器)替换板载稳压器。在各种供应商站点上进行参数搜索将产生可能的替代品。

  3. 即使执行上述步骤,如果选择的LDO支持此功能,Arduino开发板也不会提供将LDO设置为低功耗模式的机制。节能设计通常在稳压器上使用“睡眠模式”引脚以节省相当多的能量-在这里不是一种选择。

即使在微控制器级别应用了所有可能的省电模式和技巧,Arduino也不是被设计为开箱即用的超低功耗设备。在对几种非平凡的应用进行了试验之后,我发现,根据实际应用,可以实现的最佳节省电量约为10%到30%,这是因为稳压器和LED都会消耗掉其余的电量。


2
为电路板提供尽可能低的电压,该电压足以为板载稳压器供电,或者通过断开的USB电缆提供5V电压。
匿名企鹅

13

您可以阅读200页的数据表,然后弄乱一些令人困惑的移位和寄存器,但我建议使用此库:http : //playground.arduino.cc/Code/Enerlib

另外,如果您使用的是Uno或任何具有USB到串行芯片的芯片,则可以禁用或删除它。


3
应该通过数据表,不管读什么你在干什么。
康纳·沃尔夫

9

项目开始工作并且需要部署到“生产”环境后,您可以选择用裸元ATMega328或任何ATTiny系列芯片替换Arduino。这将消除您不需要的Arduino板上的所有功率消耗器。我发现:

  • Arduino板的9V电池块-56 mA
  • ATTiny85裸露于8 MHz,无睡眠模式等-10 mA
  • ATTiny85在睡眠模式下裸露于8 MHz-0.03 mA

一些更多的信息

用Arduino编程一个ATtiny

Arduino IDE的ATTiny文件

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.