×

降低Arduino功耗开源分享

消耗积分:0 | 格式:zip | 大小:0.03 MB | 2022-12-28

陈利妮

分享资料个

描述

通过成为 patreon的赞助人来支持我,帮助我今天成长并开展新项目。

谈到便携式电子产品,最重要的特性之一就是如何最大限度地延长电池寿命。用于 SparkFun RedBoard、Arduino Uno 和 Pro Mini 等流行电路板的 ATmega328P 实际上非常耗电。RedBoard 和 Arduino Uno,最小消耗 15mA 左右,这听起来并不多,但正如您将在本项目中看到的那样,我们只需一些技巧就可以大大降低它。在本指南中,我们将看看是否可以通过一些硬件和软件技巧将电源电流降低到 10uA 以下。

删除额外的硬件!

拥有很多组件似乎很困难。不,实际上 Arduino 板的大部分组件都是用于防止短路、损坏控制等。但是,如果您具有使用 Arduino 的基本知识和经验,那么您可以避开这些部件并检查电路是否有任何问题.

那么,让我们看看我们可以移除什么来降低自制 Arduino 的功耗。

取下编程器IC

每个集成电路 (IC) 都需要电源才能运行。通过减少所需的 IC 数量,您可以节省一点电力。Arduino Uno 有一个 USB 桥接器,可将 USB 信号转换为 Arduino 的通用异步接收器发送器 (UART) 可以使用的信号。仅此一项就消耗大约 10mA。稍后我会告诉您对微控制器进行编程的其他选择。

没有电源 LED!

我们也可以移除电源 LED。它只是为了显示Arduino 是开还是关。因此,它不会降低 Arduino 的功能。

抛弃线性稳压器

线性稳压器很棒。它们价格低廉,只需 3 个引脚(Vin、接地 Vout)即可将较高电压调节为较低电压。然而,线性稳压器的缺点是,当输入电压和输出电压之间存在较大差异,或者消耗大量电流时,它们会变得很热。您可以使用一个简单的公式计算以热量形式浪费的功率:

Pwasted = (Vin - Vout) * I

对于 5V 输出,7V 输入作为调节器的输入。表示 Vin - Vout 为 2V,通常消耗的电流为 1A。Pwasted 为 2 瓦。

线性稳压器充其量只有 70% 左右的效率。消耗的电流越大,效率越低。

对于提供 5V 和 1A 电源,我们可以使用上面列表中提到的电池,也可以使用 3 节 AA 电池。这使得 4.5V 和 ATmega328 可以在 1.8V 到 5.5V 上工作。

降低时钟速度

在 Arduino 不需要在短时间内执行大量指令的项目中,或者在时序不是问题的项目中,降低微控制器的时钟速度可以减少几毫安的电源当前的。例如,在 5V 下运行 Arduino 并将时钟速度从 16 MHz 降低到仅 8 MHz 可以将所需的电流从 12 mA 降低到大约 8.5 mA。

为了更好地理解时钟速度与微控制器的关系,让我们看一下下图。

 
pYYBAGOrnqyAHgakAABAFQX-6zs793.png
 

如您所见,降低时钟速度可以使电池寿命延长三倍。当然,代价是您将无法每秒执行那么多指令,并且对于某些应用程序,此解决方案不是一个选项。

要了解如何完成,请单击此处。

用软件省电

到目前为止,我们已经讨论了如何降低 Arduino 的功率,但我们还没有讨论它为什么要使用它的功率。在 ATmega328P 内部,有一系列电路协同工作以卸载处理器的工作,并且每个电路都会消耗一定的电量。

例如, Arduino 的analogWrite() 功能没有让处理器通过计算时钟周期本身来创建 PWM 信号。相反,Arduino 使用内置定时器之一来计算时钟周期并向处理器发送中断请求。从那里,处理器停止它正在做的事情,并通过切换引脚的状态来处理中断。通过卸载一些工作,微控制器能够同时做多件事。

ATmega328P 内置的其他一些电路包括:

  • 3个定时器
  • 看门狗定时器
  • 掉电检测
  • 模数转换

这些独立组件中的每一个都需要电源才能工作,除非您手动禁用它们,否则它们将继续消耗电源。掉电检测会主动监控系统电压,以确保它不会降至阈值以下。如果是这样,控制器将断电,直到电压增加到该阈值以上。模数转换器 (ADC) 顾名思义,它采用模拟电压(可以是从 0V 到 VCC 的任何值)并将其转换为微控制器可以使用的数字值(0-1023对于 10 位转换器)。如果您的项目不需要使用 ADC,禁用它会大大减少功耗。

但是,如果您仍然需要 ADC 怎么办?值得庆幸的是,您可以在其中使用软件禁用其中一些电路的寄存器。使用软件可以让您在需要时启用所需的电路,并且在完成后可以再次禁用它们。所有寄存器都在 ATmega328P 的数据表中有详细记录,但是,如果直接写入寄存器让您感到不舒服,您可以从链接下载一个可用的库。

该库允许您设置进入睡眠模式的时间,从几毫秒到无限期。它还允许您指定要禁用微处理器的哪些部分,使其成为一个功能强大且用途广泛的库,可满足您的低功耗需求。

在面包板上制作 Arduino

获取列表中上面列出的所有内容。此外,在制作电路时,可以方便地获取 ATmega328P 的引脚映射。

 
poYBAGOrnq6AFrinAABR5DkK_wU135.png
 
  • 将 ATmega328P 微控制器(如果你有一个已经使用 Arduino UNO 引导加载程序引导加载的更好)放在面包板的中间。
  • 现在,将 16 MHz 晶体放在引脚 9 (PB6)引脚 10 (PB7) 之间。
  • 此外,将两个 22pF 电容器从引脚9接地 (GND)以及从引脚 10接地 (GND)。[如果你没有22 pF的电容,那么,用四个100 pF的电容串联起来做成25 pF的电容,做两个这样的组合]
  • 将 GND 和 VCC 连接到面包板上的电源轨。

而且,它已经准备好了!

将草图上传到 Arduino?

惰性方法

只需从面包板上拔下微控制器,然后将其替换为原始 Arduino 板中的微控制器即可。上传草图并取出微控制器,然后像最初一样将其插入面包板。如果你不想记住位置,在设置电路时使用28针IC插座插入微控制器。

将微控制器插回后,将面包板的电源线连接到电池端子。如果根据草图和引脚映射将其他组件插入引脚,则草图将在几秒钟内运行。

使用 FTDI 232RL 分线板!

想知道 FT232RL 分线板的所有引脚输出是什么,只需将其翻转过来即可!在这种情况下,我将使用 VCC(从 USB 端口向您的电路板提供 5V 电压)、GND、TXD 和 RXD。[参考示意图]

 
pYYBAGOrnrGAe8UvAACVnT-QLBo395.jpg
 
  • 从市场上购买时,该板没有接头。因此,焊接公头并将其插入面包板。
  • 将ATmega芯片的RX连接到板子的TX,将Atmega芯片的TX连接到板子的RX。
  • 将 VCC 和 GND 连接到面包板上的电源轨。
  • 插入 USB 迷你型 - B 并将其连接到您的计算机并上传草图。它将从 USB 获取电源,但在断开 USB 后,您可以将电池端子插入面包板的电源轨。

而且,Arduino 已经准备就绪。现在,如果您在待机状态下检查我的 ATmega 的电流,它约为 0.07 mA,低于原始 Arduino。

上传素描!

将附件中给出的代码作为闪烁程序上传,观察 Arduino 将通过关闭所有外围设备进入睡眠模式 8 秒。[记得从 GitHub 安装 Low Power 库,链接如下]

您可以访问此链接以获取更多信息:https ://github.com/LowPowerLab/LowPower/tree/master/Examples


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !