回答:
注:私の答えは受け入れられましたが、Arduinoボードでエネルギーを節約したい場合は、読者(あなた)が最初にAnindoの答えを読んでください。設計でこれらの項目に対処したら、私の答えを読んで、MCUを低電力モードに設定する方法について心配する必要があります。
とはいえ、Arduinoの電力を節約するためのいくつかの手法があります。いくつかをリストしてから、それらをすべて詳細に説明するページを示します。
コントローラーは重要なことは何もしていませんが(たとえば、センサーの読み取りと次の読み取りの間)、コマンドを使用して、コントローラーを以下のスリープモードのいずれかに設定できますset_sleep_mode (SLEEP_MODE_PWR_DOWN)
。各モードの横には、各モードのおおよその消費電力があります。
電圧低下検出(低電圧が検出されたときにコントローラーをオフにする回路)を無効にします。
ADCをオフにします(アナログからデジタへの変換)
内部時計を使用する
次に、コントローラーをスリープ状態にしたときに、以下の1つ以上のメカニズムを使用してコントローラーを起動し、それで何かを行う必要があります。
信号で目覚める
タイマーで目覚める
これは私が作成した要約です-
その記事は主にATmega328Pに適用されますが、この技術は他のArduino互換コントローラにも適用されます。TheDoctorがよく言ったように、datashetをチェックして、コントローラーがこれらの手法のいずれかをサポートしていることと、それをより正確に行う方法を確認する必要があります。
現実的には、Arduinoボードの最大の電力浪費は、その上の線形電圧レギュレータです。
ボード上のマイクロコントローラー、LED、またはその他の周辺機器が電流を引き込む限り、リニアレギュレータはdifference between supply and board voltage
xに等しい電力を浪費しcurrent drawn
ます。
したがって、最初の修正は、ボード上の電源インジケータLEDを切断し、他のLEDを可能な限り使用しないことです。第二に、オンボードレギュレータに電力を供給するのに十分なだけ低い電圧をボードに供給します。
元の設計では、使用されている電圧レギュレータは低静止電流を誇っていません。これは、ボード内に電力が供給されていない場合でも、レギュレーター自体がオンになっている間はかなりの電力を無駄にしていることを意味します。
簡単な解決策は、オンボードレギュレータを、非常に低い静止電流に対応したLDO(低ドロップアウトリニアレギュレータ)に交換することです。さまざまなベンダーのサイトでパラメトリック検索を行うと、代替候補が見つかる可能性があります。
上記の手順を実行しても、選択したLDOがこれをサポートしている場合、ArduinoボードはLDOを低電力モードに設定するメカニズムを提供しません。電力効率の良い設計では、通常、電圧レギュレータの「スリープモード」ピンを使用して、かなりのエネルギーを節約します。ここではオプションではありません。
可能なすべての省電力モードとトリックがマイクロコントローラーレベルで適用されていても、Arduinoは単純にすぐに使える超低電力デバイスとして設計されていません。いくつかの非自明なアプリケーションで実験を行った結果、電圧レギュレータとLEDが残りを消費するため、現実的に達成可能な最善の方法は、アプリケーションに応じて約10%から30%の節電であることがわかりました。
200ページのデータシートを読んで、混乱するビットシフトとレジスタを混乱させることもできますが、このライブラリをお勧めします:http : //playground.arduino.cc/Code/Enerlib
また、Unoまたはusb-to-serialチップを搭載したものを使用している場合は、それを無効にするか削除することができます。
プロジェクトが機能し、「プロダクション」環境にデプロイする必要がある場合、ArduinoをベアメタATMega328またはATTinyファミリチップに置き換えることを選択できます。これにより、必要のないArduinoボード上のすべてのパワーイーターが取り除かれます。私が見つけた:
さらなる情報