Arduinoボードは、特に電力が豊富な場合、実験やプロトタイピングに最適なツールです。しかし、電力が問題になる場合はどうなるでしょうか?限られたバッテリーで稼働している場合でも、太陽光発電を使用してリモート監視シナリオで作業している場合でも、1ミリアンペアでも重要になる場合があります。デバイスの電力消費量(使用時および休止時)は、アプリケーションに大きな違いをもたらす可能性があります。
電力消費
世界で人気のあるオプションをいくつか見てみましょう マイクロコントローラボード。 空のプログラム(Arduino IDEで新しい空のファイルを開いたときの状態)で通常どおり実行した場合、次の電力消費値が観測されました。
- Arduino Uno (ATmega328P):47mA
- Sparkfun Pro Micro 5V (ATmega32U4): 36mA
- Arduino Pro Mini 5V (ATmega328P): 16mA
これらの値は大した電力のようには思えませんが、変換損失やその他の非効率性を無視すると、Arduino Unoは理論的には750mAh 3.7V LiPoから12時間以内に電力を使い果たしてしまうことを考慮してください。比較的効率的なPro Miniでも、完璧な条件下では約35時間しか持続しません。実際のアプリケーションでは、両方の時間が大幅に短くなります。もっと良い解決策があるはずです。
Arduinoスリープモード
偶然ですが、スリープモードというものがあります。実際、Arduino IDEでは、いくつかの種類の低電力スリープ モードが利用できます。
- スリープモード
- スリープモード
- スリープモード
- スリープモードスタンバイ
- スリープモード_電源ダウン
このリストは、電力節約が最も少なく、最もアクティブな機能から始まり、電力節約が最も大きい順に並べられています。SLEEP_MODE_PWR_DOWNでは、ほとんどのプロセッサ機能がオフになります。SLEEP_MODE_PWR_DOWNの簡単なテストでは、 コードはここにあります以下にリストします:
#include<avr/sleep.h>
voidセットアップ ()
{
スリープモードを設定します(SLEEP_MODE_PWR_DOWN)。
スリープを有効にする();
スリープ解除
} // セットアップ終了
voidループ () { }
そのコードをそれぞれのボードにロードすると、次のようになります。
- Arduino Uno: 24mA
- Sparkfun Pro Micro 5V: 5mA
- Arduino Pro Mini 5V: 0.63mA
Unoをスリープ状態にすると、電力消費が約半分に節約されます。これは改善されましたが、Unoは依然としてUSBインターフェイス チップ、電圧レギュレータ、および電源LEDに電力を供給する必要があるため、素晴らしいとは言えません。Pro microでは、消費電力が約7 ~ 5mA削減されます。これは、スリープ モードに入るチップがUSBインターフェイスも処理するため、スリープ効率が大幅に向上したと考えられます。
ただし、Pro Miniはスリープ モードでは非常に効率的です。Pro Miniの電力消費量はわずか0.63mAで、スリープ状態のUnoの2.6% にすぎません。独自のFTDIデバイスを用意する必要があるため、このボードのプログラミングは少し難しくなります。しかし、電力を節約する必要があるプロジェクトの場合、Pro Miniが明らかに勝者です。
一方、必要な場合は 非常に 低消費電力のATTiny85のVバージョンでは、 1.8V、1MHzで動作し、消費電力は以下のみ:
- アクティブ: 300μA、または0.3mA
- パワーダウンモード: in.001μA. または .003mA
ATTiny85は、アクティブで完全に機能しているときに、スリープ状態の5V Pro Miniの半分の電流を消費します。ご興味があれば、この素晴らしいチップを使い始める方法を概説しました。
Arduinoウェイクアップ
スリープ モードは、断続的なタスクを実行するアプリケーションに役立ちます。たとえば、センサーまたはリアルタイム クロック (RTC) モジュールは、タスクを実行する必要があるときに割り込みをpingして起動することができます。また、リセット ピンを使用してシステムを再起動し、システムが機能を実行した後、スリープ状態に戻ることもできます。すべてのプロジェクトで必要になるわけではありませんが、マイクロコントローラをスリープ状態にできることは、マイクロコントローラ プログラミング ツールボックスに備えておくと便利なスキルです。