2016-09-23 332 views
1

我需要將Arduino設置爲睡眠模式以節省電量,但​​在x小時(使用戶選擇該選項)後,我需要Arduino喚醒,執行一些操作,然後再次入睡。我該怎麼做?我看到睡眠模式可以通過中斷來中斷,但我需要中斷不是通過引腳而是通過觸發來觸發。任何建議? 在此先感謝!在x小時後在睡眠模式下喚醒Arduino

回答

1

您的問題的答案取決於您需要多少低功率以及您需要多少時間精度。實現200nA的睡眠電流需要一些工作,並且時間精度是低功耗的折衷。

然而,這裏有一些線索:

  • 使用外部RTC模塊,能夠在某個精確時刻
  • 使用外部的32kHz XTAL到時鐘定時器異步產生中斷,併產生interupt從醒來「省電」睡眠模式
  • 在中斷和復位模式下使用內部看門狗定時器從「關斷」模式喚醒。如果代碼已經優化,您將每8秒鐘喚醒一次,但時間很短。

最後的解決方案似乎最適合於一些基本演示。有了一個好的代碼,你將獲得光榮的結果。不要忘記閱讀MCU數據手冊中的「最小化功耗」部分。

編輯

我多少電流消耗,如果Arduino的喚醒每8秒? 有一種計算方法嗎?

太計算的平均電流(我想說的估計),在部分讀取數據表 「ATMEGA328P典型特徵」

  • @ 5V爲8MHz的消費量約爲5.5毫安,在電力
  • 下來@ 5V帶看門狗6.5μA。

大約1ms每8s激活一次,您將達到7.2μA的平均值。

請注意,電路板消耗不僅僅是Arduino板上的MCU。有了Arduino,我不知道你會在全球消費多少,但它會超過我的計算。要達到數據表中規定的200nA,您將需要自己製作電路板並使用外部低功耗看門狗...

第二:如果每8秒鐘喚醒一次,AtMega的速度會更快?

AtMega沒有老化問題。它可以持續運行20年,沒有問題(除非使用EEPROM或閃存自編程)。

+0

感謝您的回答!最後一個解決方案對我來說很好,但我有一些疑問:如果Arduino每8秒鐘醒來一次,我還能消耗多少電流?有一種方法來計算它?第二:如果每8秒鐘醒來一次,AtMega的速度會更快?謝謝! – Eternyt

+0

@Eternyt我更新了答案。 – Julien

+0

感謝您的回答!我知道一個Arduino有很多組件可以消耗電流,所以我在麪包板上製作了「Arduino」,我得到了這樣的結果:6.90mA的空白草圖和4.3uA的掉電帶看門狗(平均**,3.3V **)。所以我最後一個問題是,我怎麼估計消耗量(像你的7.2μA)?非常感謝! – Eternyt