x小时后在睡眠模式下唤醒Arduino



我需要将Arduino置于睡眠模式以节省电池,但在x小时后(使用户选择),我需要Arduino醒来,做一些动作,然后再次进入睡眠。我该怎么做呢?我看到睡眠模式可以通过中断中断,但我需要中断不是由引脚触发,而是由时间触发。任何建议吗?提前感谢!

这个问题的答案取决于你需要多少低功耗和你需要的时间精度。达到200nA的睡眠电流需要一些工作和时间精度是低功耗的妥协。

然而,这里有一些线索:

  • 使用外部RTC模块能够在某个精确时刻产生中断
  • 使用外部32kHz Xtal异步时钟timer2并产生中断以从"省电"睡眠模式唤醒
  • 在中断和复位模式下使用内部看门狗定时器从"下电"模式唤醒。如果优化了代码,您将每8秒唤醒一次,但持续时间很短。

最后一个解决方案似乎最适合一些基本的演示。有了好的代码,你将获得光荣的结果。不要忘记阅读MCU数据表中的"最小化功耗"部分。

编辑

如果Arduino每8秒唤醒一次,我消耗多少电流?有办法计算吗?

Too计算平均电流(我会说估计)阅读数据表中"atmega328P典型特性"部分

  • 5v 8MHz时的功耗约为5.5mA,
  • 在5v断电时,看门狗6.5µA。

每8秒约有1ms活动,您将获得7.2 μ A平均值。

注意,电路板消耗的不仅仅是Arduino板上的MCU。用Arduino,我不知道你们会消耗多少但肯定比我计算的要多。为了达到数据表中所述的200nA,您需要自己制作电路板并使用外部低功耗看门狗…

第二:如果每8秒唤醒一次,AtMega会毁得更快?

AtMega没有老化问题。它可以连续运行20年没有问题(除非您使用EEPROM或flash自编程)。

最新更新