バッテリー寿命を延ばすためのArduinoの省電力オプションとは何ですか(またはどのように使用しますか)?


40

ソーラーおよびバッテリー駆動のプロジェクトでは、消費電力を削減することが必要です。

タイマーと割り込みを使用して、マイクロコントローラーが何もしていないときにスリープ状態にすることについて少し知っています。

また、いくつかの周辺機器を無効にしてさらに電力を節約できることも読んでいます。

これらを説明するページは次のとおりです。省電力テクニック

私の質問:

  • 電力を節約する他の方法はありますか?
  • これらのAVR機能を簡単に使用できるようにするライブラリはありますか?

回答:


33

注:私の答えは受け入れられましたが、Arduinoボードでエネルギーを節約したい場合は、読者(あなた)が最初にAnindoの答えを読んでください。設計でこれらの項目に対処したら、私の答えを読んで、MCUを低電力モードに設定する方法について心配する必要があります。

とはいえ、Arduinoの電力を節約するためのいくつかの手法があります。いくつかをリストしてから、それらをすべて詳細に説明するページを示します。

  1. コントローラーは重要なことは何もしていませんが(たとえば、センサーの読み取りと次の読み取りの間)、コマンドを使用して、コントローラーを以下のスリープモードのいずれかに設定できますset_sleep_mode (SLEEP_MODE_PWR_DOWN)。各モードの横には、各モードのおおよその消費電力があります。

    • SLEEP_MODE_IDLE:15 mA
    • SLEEP_MODE_ADC:6.5 mA
    • SLEEP_MODE_PWR_SAVE:1.62 mA
    • SLEEP_MODE_EXT_STANDBY:1.62 mA
    • SLEEP_MODE_STANDBY:0.84 mA
    • SLEEP_MODE_PWR_DOWN:0.36 mA
  2. 電圧低下検出(低電圧が検出されたときにコントローラーをオフにする回路)を無効にします。

  3. ADCをオフにします(アナログからデジタへの変換)

  4. 内部時計を使用する

次に、コントローラーをスリープ状態にしたときに、以下の1つ以上のメカニズムを使用してコントローラーを起動し、それで何かを行う必要があります。

  • 信号で目覚める

  • タイマーで目覚める

これは私が作成した要約です-

その記事は主にATmega328Pに適用されますが、この技術は他のArduino互換コントローラにも適用されます。TheDoctorがよく言ったように、datashetをチェックして、コントローラーがこれらの手法のいずれかをサポートしていることと、それをより正確に行う方法を確認する必要があります。


2
私のページwww.gammon.com.au/powerを参照していただきありがとうございます。ここに記載されているすべての手法を採用すると、約100 nA(0.1 µA)を消費できるはずです。大きな影響を与える可能性のある他の手法は、より低い周波数とより低い電圧で実行することです。さらに、電圧レギュレータを使用しないことについてAnindo Ghoshが言ったこと。温度と湿度のセンサーを作成しました。これらの技術の多くを使用するバッテリー駆動で、バッテリーで数年使用した後もまだ強力です。
ニックギャモン

@NickGammon-公平を期すために、あなたの優れた記事はより良いリファレンスに値すると思いますので、その程度に答えを編集しました。すばらしい記事をありがとう-非常に明確で完全な!そして、Arduino.SEへようこそ。ここにいるのはいいことです。
リカルド

24

現実的には、Arduinoボードの最大の電力浪費は、その上の線形電圧レギュレータです。

  1. ボード上のマイクロコントローラー、LED、またはその他の周辺機器が電流を引き込む限り、リニアレギュレータはdifference between supply and board voltagexに等しい電力を浪費しcurrent drawnます。

    したがって、最初の修正は、ボード上の電源インジケータLEDを切断し、他のLEDを可能な限り使用しないことです。第二に、オンボードレギュレータに電力を供給するのに十分なだけ低い電圧をボードに供給します。

  2. 元の設計では、使用されている電圧レギュレータは低静止電流を誇っていません。これは、ボード内に電力が供給されていない場合でも、レギュレーター自体がオンになっている間はかなりの電力を無駄にしていることを意味します。

    簡単な解決策は、オンボードレギュレータを、非常に低い静止電流に対応したLDO(低ドロップアウトリニアレギュレータ)に交換することです。さまざまなベンダーのサイトでパラメトリック検索を行うと、代替候補が見つかる可能性があります。

  3. 上記の手順を実行しても、選択したLDOがこれをサポートしている場合、ArduinoボードはLDOを低電力モードに設定するメカニズムを提供しません。電力効率の良い設計では、通常、電圧レギュレータの「スリープモード」ピンを使用して、かなりのエネルギーを節約します。ここではオプションではありません。

可能なすべての省電力モードとトリックがマイクロコントローラーレベルで適用されていても、Arduinoは単純にすぐに使える超低電力デバイスとして設計されていません。いくつかの非自明なアプリケーションで実験を行った結果、電圧レギュレータとLEDが残りを消費するため、現実的に達成可能な最善の方法は、アプリケーションに応じて約10%から30%の節電であることがわかりました。


2
オンボードレギュレータに電力を供給するのに十分なだけ低い電圧をボードに供給するか、ハッキングされたUSBケーブルを介して5Vを供給します。
匿名のペンギン14年

13

200ページのデータシートを読んで、混乱するビットシフトとレジスタを混乱させることもできますが、このライブラリをお勧めします:http : //playground.arduino.cc/Code/Enerlib

また、Unoまたはusb-to-serialチップを搭載したものを使用している場合は、それを無効にするか削除することができます。


3
をしていても、データシート一読する必要があります。
コナーウルフ

9

プロジェクトが機能し、「プロダクション」環境にデプロイする必要がある場合、ArduinoをベアメタATMega328またはATTinyファミリチップに置き換えることを選択できます。これにより、必要のないArduinoボード上のすべてのパワーイーターが取り除かれます。私が見つけた:

  • 9VブロックバッテリーのArduinoボード-56 mA
  • ATTiny85は、スリープモードなどなしで8 MHzで露出-10 mA
  • ATTiny85はスリープモードで8 MHzで裸-0.03 mA

さらなる情報

ArduinoでATtinyをプログラムする

Arduino IDEのATTinyファイル

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.