x小时后以睡眠模式唤醒Arduino

x小时后以睡眠模式唤醒Arduino,arduino,Arduino,我需要将Arduino设置为睡眠模式以节省电池,但在x小时后(用户的选择),我需要Arduino醒来,做一些动作,然后再次进入睡眠状态。我怎么做?我看到睡眠模式可以被中断中断,但我需要中断不是由引脚触发的,而是由时间触发的。有什么建议吗? 提前谢谢 问题的答案取决于所需的低功耗和时间精度。Achive 200nA睡眠电流需要一些工作,时间精度是低功耗的折衷方案 然而,以下是一些线索: 使用能够在某个精确时刻生成中断的外部RTC模块 使用外部32kHz Xtal异步时钟定时器2,并生成中断以从“

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

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

然而,以下是一些线索:

  • 使用能够在某个精确时刻生成中断的外部RTC模块
  • 使用外部32kHz Xtal异步时钟定时器2,并生成中断以从“省电”睡眠模式唤醒
  • 在中断和复位模式下使用内部看门狗定时器从“断电”模式唤醒。您将每8秒醒来一次,但如果代码经过优化,时间会很短
最后一个解决方案似乎最适合一些基本的演示。有了一个好的代码,你将获得光荣的结果。不要忘记阅读MCU数据表中的“最小化功耗”部分

编辑

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

也要计算平均电流(我会说估算值),请参阅“atmega328P典型特性”部分的数据表

  • @5V 8MHz功耗约为5.5mA
  • 带看门狗6.5µA的电源在5V时关闭
大约每8秒激活1毫秒,平均值将达到7.2µA

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

第二:如果每8秒醒来一次,AtMega的破坏速度会更快吗


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

谢谢您的回答!最后一个解决方案对我来说很好,但我有一些疑问:如果Arduino每8秒唤醒一次,我会消耗多少电流?有办法计算吗?第二:如果每8秒醒来一次,AtMega的破坏速度会更快吗?谢谢谢谢你的回答!我知道Arduino有许多元件会消耗电流,所以我制作了我的“Arduino on breadboard”,我得到了这个结果:空白草图为6.90mA,看门狗断电为4.3μa(平均为3.3V)。因此,我的最后一个问题是,我如何估计消耗量(如您的7.2µA)?非常感谢@您永远需要知道活动时间(RC振荡器启动+ISR执行)。最好的方法是在电源上加一个电阻(大约100R),然后用示波器测量电压。脉冲的持续时间为激活时间,峰值为激活电流的图像。然后Imean=(iactiveActivity+IsleepTsleep)/(Tsleep+Tactive)。如果没有示波器,很难估计活动时间(但你可以问某人是否对电子stackexchange有想法)。只有一个想法:我不明白iActivate和IsleepTsleep的作用是什么。我认为睡眠和触觉是睡眠模式下的时间和活动模式下的时间。谢谢@始终字母I通常用于电流(以安培为单位),因为U或V通常用于电压,P通常用于功率(以瓦特为单位)。我投票结束这个问题,因为这里没有明显的编程问题。像这样的问题可以在网上提出