Answers:
注意:我想指出的是,即使您的答案被接受,但如果您真的想用任何Arduino板节省能源,读者(您)也应该先阅读Anindo的答案。在设计中解决了这些问题之后,您应该阅读我的回答,并担心如何将MCU设置为低功耗模式。
话虽如此,有几种技术可以使Arduino节省功耗。我将列出其中的一些内容,然后为您指向一个详细解释所有内容的页面。
尽管控制器没有做任何重要的事情(例如,在一次读取传感器与第二次读取传感器之间),但是您可以使用command将控制器置于下面的睡眠模式之一set_sleep_mode (SLEEP_MODE_PWR_DOWN)
。每个模式旁边是每个模式的近似功耗。
禁用掉电检测(检测到低压时关闭控制器的电路)。
关闭ADC(模拟到数字转换)
使用内部时钟
然后,当您使控制器进入睡眠状态时,您需要使用以下一种或多种机制来唤醒控制器并对其进行处理:
唤醒信号
定时器唤醒
这是我的总结-
该文章主要适用于ATmega328P,但该技术也适用于其他Arduino兼容控制器。正如TheDoctor所说的那样,您将需要检查数据表以确保您的控制器支持所有这些技术,以及如何更精确地做到这一点。
实际上,Arduino板上最大的功率浪费是其上的线性稳压器。
只要板上的微控制器,LED或任何其他外围设备消耗电流,线性稳压器就会浪费等于difference between supply and board voltage
x的功率current drawn
。
因此,第一个解决方法是断开板上的电源指示灯LED的连接,并且尽可能不使用任何其他LED。第二,为电路板提供尽可能低的电压,该电压足以为板载稳压器供电。
在原始设计中,所使用的稳压器不具有低静态电流。这意味着,即使电路板上没有任何功率消耗,稳压器本身也一直在浪费相当多的功率。
一个简单的解决方法是用额定静态电流极低的LDO(低压降线性稳压器)替换板载稳压器。在各种供应商站点上进行参数搜索将产生可能的替代品。
即使执行上述步骤,如果选择的LDO支持此功能,Arduino开发板也不会提供将LDO设置为低功耗模式的机制。节能设计通常在稳压器上使用“睡眠模式”引脚以节省相当多的能量-在这里不是一种选择。
即使在微控制器级别应用了所有可能的省电模式和技巧,Arduino也不是被设计为开箱即用的超低功耗设备。在对几种非平凡的应用进行了试验之后,我发现,根据实际应用,可以实现的最佳节省电量约为10%到30%,这是因为稳压器和LED都会消耗掉其余的电量。
您可以阅读200页的数据表,然后弄乱一些令人困惑的移位和寄存器,但我建议使用此库:http : //playground.arduino.cc/Code/Enerlib
另外,如果您使用的是Uno或任何具有USB到串行芯片的芯片,则可以禁用或删除它。
项目开始工作并且需要部署到“生产”环境后,您可以选择用裸元ATMega328或任何ATTiny系列芯片替换Arduino。这将消除您不需要的Arduino板上的所有功率消耗器。我发现:
一些更多的信息