5个Arduino省电技巧,可让您连续几天运行

Arduino板改变了DIY技术的面貌。像创建微型Arduino交通灯这样的简单项目非常适合向初学者讲授基本的电子技术和编程。

Arduinos非常适合家庭项目,可以通过在其上安装电池组来随时使用。问题是,即使是一块最大的电池,即使是一块很小的Arduino板,也会很快耗尽。

如果您确实希望Arduino能够长期运行,则需要进行一些调整,然后更改。

1。 Arduino低功耗软件库

有一些可用的软件库可以改变Arduino的功耗。通过将Arduino深度睡眠一段时间,可以节省两次操作之间的功耗。这对于微控制器在诸如气象站之类的偏远地区获取传感器读数或为大型设备感应子电路特别有用。

Github用户火箭低功耗库是一个易于使用的示例该库非常适合节省功率。根据库的一些示例代码,考虑以下代码:

#include "LowPower.h"// setup() your sensors/LEDs herevoid loop(){  // This next line powers the arduino down for 8 seconds  //ADC means analogue to digital conversion, and BOD for brown out detection  //both are turned off during the sleep period to save power  LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);      //After each sleep, you can instruct the Arduino to carry out its tasks here - for example, take a temperature reading and send it to a server.}

此代码是一个好的开始。它不仅可以使用内置的方法降低功耗,还可以关闭可能成本高昂的模拟到数字转换(即使在空闲时也可以使用电源)和电量不足检测 strong>在输入电压太低时停止Arduino运行代码。

这是一种简单但有效的措施,可以开始减少Arduino消耗的功率。我们可以比这更深入!

2。 Arduino内置节能功能

Arduino编程语言具有自己的内置 sleep 功能,旨在帮助实现节能功能。睡眠功能与 interrupt 子句一起使用,可使Arduino再次唤醒。

Arduino具有专门用于中断睡眠周期的引脚,您可以使用以下命令访问它们设置功能:

#define interruptPin 2void setup(){  //interrupt pin MUST be Arduino pin 2 or 3 on Uno  //set the pin to pull up mode  pinMode(interruptPin, INPUT_PULLUP);}

现在已将其设置为中断引脚,您可以放心地将Arduino睡眠。简化的方法是创建两个小函数:

void sendToSleep(){  //enable sleeping - note this primes sleep, not starts it!  sleep_enable();  //attach the interrupt, specify the pin, the method to call on interrupt,  //and the interrupt conditions, in this case when the pin is pulled low.  attachInterrupt(interruptPin, wakeUpAgain, LOW);  //actually activate sleep mode  sleep_cpu();  //code continues on from here after interrupt  Serial.println("Just awoke.");}void wakeUpAgain(){  //stop sleep mode  sleep_disable();  //clear the interrupt  detachInterrupt(interrputPin);}

上面的代码是使Arduino进入睡眠模式的简化方法,您可以通过连接 pin 2再次唤醒它连接到 GND 引脚。当Arduino Uno处于睡眠模式时,它可以将总功耗降低11mA左右,而如果您使用Pro Mini,则可以预期从25mA的常规功耗降至0.57mA。

中断是

3。TheKurks博客上有一些详细的文章,它们有助于消除对初学者的干扰。

3。降低Arduino的时钟速度

Arduino的时钟速度决定了它每秒可以执行多少次操作。大多数Arduino板都在8或16 MHz处理器上运行,尽管某些分支板(例如Teensy 3.6)拥有高达180MHz的处理速度!这就是为什么许多DIY黑客喜欢在其DIY项目中使用Arduino上的Teensy板的原因。

所有这些处理能力都是以功耗为代价的,并且在许多用例中,采用全时钟速度实在是太过分了。这是通过软件调节时钟速度的地方。

不要警告我,更改时钟速度可能会引起引导加载程序问题,并且可能会离开您使用Arduino时,如果操作不正确,则无法将草图上传到其中。

如果您想尝试更改时钟速度,并在Arduino IDE中制作工具以允许您即时更改CPU频率,Pieter P的详细指南可以帮助您入门。

4。替换耗电的Arduino组件

Arduino Uno是最受初学者欢迎的主板,并且大多数Arduino套件都提供正式或克隆模型。其较大的外形尺寸和可热插拔的微芯片使其非常适合实验,并且其宽泛的输入电压容量以及3.3v组件的板载电压转换使其几乎可以满足所有用途。

所有这些功能都不能就功耗而言,价格并不便宜。考虑到这一点,您可以做很多事情来物理上改变Arduino Uno以节省功率。

Arduino Uno上的稳压器会导致板上最大的单耗电。这一点并不奇怪,因为它必须从输入电源到电路板本身安全下降至7v。有些人试图通过用更高效的调节器代替调节器来解决此问题,但这并不能真正解决问题。

DefProc Engineering的Patrick Fenner在他的博客文章(涵盖Uno)中提出了一个很好的解决方案节电策略。通过将稳压器完全替换为DC-DC降压转换器,他设法将微控制器的功耗降低了一半。

5。制作自己的Arduino

仅使用项目所需电源的肯定方法是设计符合自己规格的微控制器。过去,我们已经展示了如何以比官方开发板低廉的成本构建自己的Arduino。

As well as having much more control over the size and scope of your circuit, this can bring power consumption down to 15.15mA in standby, and as little as 0.36mA in sleep mode. These figures are taken from the incredibly detailed post by Nick Gammon on his forum.

这篇文章涵盖了Arduino省电的许多其他方面,对于

将Arduino用于大创意和小电源足迹

在使用第一个初学者Arduino时,请参考。在项目中,功耗可能不是太大的问题。

随着您的想法越来越大,需要更多的思考,非常值得学习简化设置的方法。在确保获得正确的Arduino板与进行设置以充分利用它之间,您可以走很长一段路才能制造出真正独特且有用的设备。

标签: Arduino 电池寿命 硬件提示