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

时间:2016-09-23 16:13:44

标签: arduino

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

1 个答案:

答案 0 :(得分:1)

您的问题的答案取决于您需要多少低功耗以及您需要的时间精度。 Achive 200nA睡眠电流需要一些工作,时间精度是低功耗的折衷。

但是,这里有一些线索:

  • 使用能够在某个精确时刻生成中断的外部RTC模块
  • 使用外部32kHz Xtal异步定时器2并生成中断以从“省电”睡眠模式唤醒
  • 在中断和复位模式下使用内部看门狗定时器从“掉电”模式唤醒。如果代码已经优化,您将每8秒唤醒,但持续时间非常短。

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

修改

  

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

在“atmega328P典型特征”部分计算平均电流(我会说估计)读取数据表

  • @ 5V 8MHz,功耗约为5.5mA,
  • 断电@ 5V,看门狗6.5μA。

每8秒活动约1ms,你将达到7.2μA的平均值。

请注意,主板消耗不仅仅是Arduino板上的MCU。使用Arduino我不知道你将在全球消费多少,但它将超过我的计算。要达到数据表中规定的200nA,您需要自己制作电路板并使用外部低功耗看门狗......

  

第二:如果每8秒醒来,AtMega会破坏得更快吗?

AtMega没有老化问题。它可以连续运行20年而不会出现问题(除非您使用EEPROM或闪存自编程)。