マイクロコントローラー回路でバッテリーを長持ちさせる


26

ATtiny85Vに小さなバッテリー(おそらくコイン電池)で長時間電源を供給したいと思っています。

私はソフトウェア側を調べましたが、コードはウォッチドッグタイマーで駆動され、未使用のアナログおよびデジタルコンバーターがオフになっており、チップは1MHzで動作しています。どれだけの電流が流れているのか、基本的に最小化されていることを望んでいます。

数秒ごとに起動し、ADCで電圧レベルのチェックを行い、RAMに記録し、スリープ状態に戻ります。シリアルラインが接続されていることを検出すると、データを吐き出します。

しかし、今私は回路全体を見て、回路全体をよりバッテリーに優しいものにするために私がすべきことがあるのだろうかと考えていますか?

1つのコンポーネント(マイクロコントローラー)が反復的であるが可変電流を消費する、長持ちする(単純な)回路を設計する場合の基本的な注意事項と禁止事項は何ですか?

例えば:

  • インジケータLEDは大したことですか?明るいときにバッテリーを使い果たしていませんか?それを暗くするために巨大な抵抗器を置くべきですか、それとも抵抗器がバッテリーを使用するだけですか?
  • バイパス/デカップリングコンデンサを使用して、バッテリーからの電流を均等にする必要がありますか、それとも、コンデンサがバッテリーの電力を浪費するだけですか?
  • マイクロコントローラーには1.8Vしか必要ありませんが、1.8Vバッテリーはありません。2個の1.xバッテリーを使用して、電圧を送りすぎる必要がありますか?「できるだけ多くのボルトを使用しない」ことで、バッテリーの寿命を延ばすことができますか?それ、どうやったら出来るの?
  • ピンがHIGHかLOWかを確認するには、余分な電力が必要ですか?何もしない演算や何らかの算術演算と比較して、GP I / Oピンの1つの状態をチェックする際に、さらに多くの電力使用量がありますか?

電流、電圧、電力の計算方法(および漠然と測定する方法)を漠然と知っていますが、どれがバッテリー寿命に相当するかはわかりません。Coulombsのバッテリー寿命の重要な測定値はありますか?

バッテリーには次のようなものがいっぱいあるという漠然とした考えがあります。

  • アンペア時などの充電
  • エネルギー、ワット時など
  • ワットなどの電力

しかし、私の回路が実行されたときに何が「食べる」のかについては、はっきりしていません。かなりの量のEE101と物理学の教科書を読みましたが、実際にはラボの経験はありません。言い換えれば、私は電池についてたくさん読みましたが、実際にはそれの大部分が何を意味するのか本当に分かりません。

抵抗器はバッテリー寿命を使い果たしますか?コンデンサはありますか?ダイオードはありますか?私は彼ら全員がそうしていると思うが、数字のどれが重要な数字なのか?インピーダンス?電力損失?現在?電圧?

バッテリーを無駄にせずに電圧を下げる方法はありますか?バッテリー寿命を延ばしながら電圧を下げる方法はありますか?


6
これは非常に広範な質問です。ほとんどの場合、複数の質問をする必要があります。LED電源の質問については、完全な質問をすることができます。
Kortuk

1
クール、営業時間後に分割します。たぶん、これは大まかなこととしないことです。このような答えは、バッテリーをもっと使いたい人にとっては役立つと思いますが、あらゆる種類の権威あるまたは教育的な答えを与えるには、より狭い質問が必要だと思います。
ジャックシュミット

ええ、私はあなたの質問で答えを区切らなければならず、1時間かかることに気付きました。
コルトゥク

ところで、妻はmakezine.com/makeitlastを見つけましたこれは最終的には役に立つかもしれません。基本的にこの種のものを作るコンテストですから。私はそれが今日始まると思うので、彼らはそれを行う方法に関するヒントを掲載していません。とにかく、私のプロジェクトは独立しているので、とにかく参加する時間があるとは思わない:)そのようなことを気に入らなければ、コンテストが終了するまでお気軽に。
ジャックシュミット

回答:


20

単なるランダムなリストです。回路図を投稿すると、おそらく簡単になります。

1.8Vリチウムコインセルは非常に簡単に見つけることができますが、シリアルインターフェイスには3.3vが必要な可能性が高いですか?受信側が1.8Vに対処しない限り。

漏れ電流は通常、電圧が上昇するにつれて上昇するため、通常は低いほど良いです。また、システムの電圧低下ポイントとバッテリー特性を考慮してください。バッテリーの「死」特性は、使用するバッテリーの化学的性質によって決まります。たとえば、uCが1.7Vで電圧が低下した場合、一部のバッテリーでは、バッテリーが切れるにつれて出力電圧がゆっくりと低下するため、実際にはより高い電圧のバッテリーを使用する必要があります。3.3Vバッテリーが寿命を迎えるのは、出力が徐々に低下し始め、1.8Vまで動作できるためです。1.8Vバッテリーを使用している場合、バッテリーが切れるとすぐにシャットダウンします。これはすべて、シリアルインターフェイスまたは他のコンポーネントが広い電圧範囲に対応できることを前提としています(AVRができることは知っています)。

LEDは大量の電力を使用します。非常に低電力のLEDを使用して電流を制御しない限り、おそらくAVRよりもはるかに多くの電流を消費します。デバッグのためだけにある場合は、本番用に設定したり、たまに点滅させたり、オン時間を最小限に抑えたり、現在の描画を確実に制御したりしてください。

可能な場合は、シリアルインターフェイスの極性/静止状態を選択して、できるだけ電力を消費しないようにします。静止状態では電力を消費しません。プルアップが必要な場合は、信号の整合性を維持しながら電流使用量を最小限に抑えるために、可能な限り大きな抵抗を使用してください。電力が大きな懸念事項である場合、電力を消費しないビットを好む信号方式を使用します。たとえば、プルアップがある場合、信号に多くの1が含まれるプロトコルを使用すると、シリアルインターフェイスはほとんど電力を消費しない状態のままになります。このような最適化は、シリアルバスを多用する場合にのみ価値があります。非常に軽く使用する場合は、休止状態に電力が供給されていないことを確認してください。

一般的に、すべての指示(GPIOの読み取りなど)には同じ電力が必要であると想定できます。本当ではありませんが、電力の差はごくわずかです。

電力使用量は、電源を入れた周辺機器の数/タイプ、およびマイクロがアクティブとスリープに費やす時間に大きく依存します。したがって、ADCはより多くの電力を使用し、EEPROM書き込みはかなりの量の電力を使用します。具体的には、EEPROM書き込みのようなものは通常かなり大きな「チャンク」で行われるため、EEPROMへの書き込みを行う前に(もちろんそれを使用する場合でも)できる限り多くの情報を蓄積する必要があります。ADCがスリープ状態の2つの間にADC読み取りを実行することをサポートするADCの場合、ADC変換には比較的長い時間がかかるため、これはスリープするのに適した時間です。

あなたはおそらく、電源管理のセクションを読んでスリープ状態とマイクロコントローラのデータシートに使用する電力を最小する必要がありますLinkyは 35ページ。AVRを可能な限り深いスリープ状態に保ちます。唯一の例外は、起動時間とシャットダウン時間を考慮する必要があることです。目を覚ますのに25時間がかかる場合、10サイクルスリープするのは価値がありません。

抵抗器はバッテリー寿命を使い果たしますか?コンデンサはありますか?ダイオードはありますか?

それらはすべてある程度まで行います。抵抗器は、ほとんどのアプリケーションで最も多く消費します。

P = V * I

P = V ^ 2 / RまたはP = I ^ 2 * R(Vは抵抗器での電圧降下)

ダイオードの電圧降下は(比較的)固定であるため、電力消費はほとんど専らダイオードを流れる電流に関係しています。例えば、順方向電圧降下が0.7Vのダイオード、P = 0.7 * I電流がダイオードを順方向に流れている場合。これはもちろん単純化であり、ダイオードのIV特性に基づいて動作モードをチェックアウトする必要があります。

コンデンサは理論的には電力を消費するべきではありませんが、実際には有限の直列抵抗とゼロ以外の漏れ電流を持っているため、一般的にこのような低電圧で心配する必要はありません。漏れ電流とESRが最小のコンデンサを選択することは、電力の利点です。

バッテリーの消費をスムーズにするためにそれらを使用する限り、これは実際には電力使用には役立ちませんが、フィルタリングには役立ちます。また、ここでバッテリーの化学作用が働きます。一部の化学物質は一定の電流を流すとより満足し、一部の化学物質はスパイク電流を流すとより良くなります。


1
P = V ^ 2 / Rの重要な部分は、Rが固定電圧で上昇すると、電力使用量が減少することです。
Kortuk

涼しいので、より多くのバッテリーを使用するには、おそらくより高い電圧が必要です(おそらくAndrewが提案したレギュレーターを使用)。シリアルラインにかかる電圧がどれだけ低いかを確認するために、いくつかの実験を行います。また、未使用のピンを出力に設定するようにします。シリアルはたまにしか使用されないため、残りの状態を確認します。私は間違いなく、できる限りすべての周辺機器をシャットダウンしようとしました。
ジャックシュミット

コンデンサの場合:おそらく、バッテリーを消耗するのにコンデンサは必要ありません。バッテリーの化学的性質を確認しますが、電流ドレインのパターンを処理できると仮定すると、調整する必要はありませんか?
ジャックシュミット

Pをありがとう。私は今理解したと思います。P = I * Vここで、Vは電圧降下であるため、電圧を変更できない限り、PまたはI(またはP時間またはI時間)でバッテリードレインを測定できます。Vを「無料で」変更できるかどうかはまだわかりません。
ジャックシュミット

1
言及されているバックブーストレギュレーターアンドリューは、本当に最高のソリューションです。そのような回路のレイアウトは通常重要なので、私はそれを言及しませんでした。ファンキーなパフォーマンスや大量のEMIを発生させずにブレッドボードを作成することは困難です。データシートをよく読んでください。通常、クリティカルパスのレイアウトと識別に関する推奨事項が含まれています。また、使用される一部の部品により厳しい制約が課せられます。低ESRコンデンサなど。
マーク

12

マークは最も優れた答えを出し、私がやろうとしていた多くのポイントを打ちました。私も貢献したいことがいくつかあります。

電流測定を行うには、一般的なバッテリーへのリターンと直列に低抵抗抵抗器を備えたオシロスコープを使用します。マイクロコントローラを使用した電流引き込みは簡単ではなく、一般的に、メーターはFARが遅すぎて、何が起こっているのかを十分に把握できません。「低抵抗」の意味は、予想される消費電流によって異なります。1オームの抵抗器は、100mAが流れるたびに100mVを発生しますが、これはおそらく多すぎるでしょう。10オームの1%または0.5%の抵抗を試してみます。10mAの電流が流れるたびに100mVが表示されます。18オームでは、5.5mAごとに100mVになります。本当に低電力を求めているなら、1kで逃げることができるかもしれません。I = V / R:電流が100uAごとに100mVになります。ただし、注意してください。十分な電流を流した場合、シャント全体で過度に低下し、測定値がオフになります。言うまでもなく、回路はおそらく動作しません。:-)

スコープを接続した状態で、マイクロコントローラーのいくつかの異なる動作周波数を試してください。「目覚め」に費やす時間がはるかに短いため、クロック速度が高くなると消費電力が少なくなることを知って驚くかもしれません。

プルアップ/ダウンを可能な限り排除します。ほとんどの場合、出力をアイドル状態にすることができるため、出力には何も設定しないでください。マークが言ったように、入力は可能な限り高い値を使用して、意味のあるものに結び付けられるべきです。

マイクロコントローラが可能な限りシャットオフされていることを確認してください。未使用のピンを出力に変え、それらをある状態に駆動します(ハイでもローでも構いません)。LEDをオンのままにしないでください。他のコンポーネントの電源を切るか、それらのクロックを停止できる場合は、実行してください。たとえば、SPIフラッシュメモリには、「低消費電力」コマンドがあります。このコマンドは、すでに低消費電力を消費し、さらに低く駆動します。

他の人は電圧の側面に触れており、私もそれについてコメントしたいと思います。バッテリーと回路の間に高効率の昇降圧レギュレーターを使用すると、バッテリー使用量が大幅に向上する可能性があります。バッテリレベルが必要な1.8Vを超えると、レギュレータは降圧モード(電圧低下)になり、バッテリレベルが1.8Vを下回ると昇圧モード(電圧上昇)に切り替わります。これにより、バッテリーが完全に使い果たされるまで回路を実行できるようになります。これは、バッテリーを使用したときに得られる数パーセントの効率低下に見合う価値があります。使用する範囲全体の効率に基づいてレギュレータを選択し、レギュレータのサイズを適切に設定してください。98%の効率で1Aを供給できるレギュレータは、おそらく60%の効率で50mAを供給します。データシートを注意深く読んでください。


クール。以前はスコープを使用したことはありませんが、地元のラボで喜んでこれを見せてくれると思います(現在、実際に電流を測定するためにマルチメーターを直列に使用しています;あまり良くありません)。–また、1〜10mAしか使用していない場合でも、適切な部品を見つけることができれば、レギュレーターをお勧めしますか?90%の効率で十分ですか(その範囲で安価なものを見つけたことを覚えています)、それとも私が節約できる以上の電流を使用していますか?
ジャックシュミット

1
周波数で遊ぶことの非常に良い点は、私の携帯電話のwifi無線がセルラーモデムよりも多くの電力を使用することを思い出しますが、wifiは非常に速く、より多くの睡眠をとることができ、それにより全体的に電力が良くなります。
マーク

2
消費電流が「バースト」するシナリオでの時間平均マイクロコントローラの電流使用量を推定するもう1つの方法は、非常に大きなコンデンサを充電し、低静止電流レギュレータに給電してバッテリ電圧をシミュレートすることです。100,000uFのコンデンサは、ミリアンペア秒あたり0.01ボルト低下します。5分(300秒)で0.3ボルト低下すると、平均電流は100uAになります。
supercat

規制当局の効率のポイントは非常に重要です。そのため、その範囲内で適切なレギュレータを選択するには、消費電流の範囲を推定する必要があります
-gustavovelascoh

4

あなたの回路では、消費電流を測定するためにマイクロアンペア範囲でマルチメーターを使用することをお勧めします。次に、バッテリーの特性を考慮して、寿命を計算できます。バッテリーは負荷ごとに異なる放電特性を持つため、必ずしもアンペア時/電流ではありません。しかし、それは近似値として有用です。

1 MHzでは、PICマイクロと比較できるものがあれば、少なくとも100µAの電力を消費していると思います。しかし、これはLEDを通過する5mAから20mAに圧倒されるので、まずそれを取り除く必要があります。


クール、LED消去。正確な測定を得るのに苦労しています。現在は0.9mAのように見えるので、私のソフトウェアは思ったほどパワーダウンしていません。Arduino(およびハートビートLED)が関係しているため、8-9mAに近いので、少なくとも小さなものが助けになっています。
ジャックシュミット

1

最近では、現在の正確な測定、場合によってはnAレンジまでの測定に非常に便利な、すぐに利用可能な開発キットとブレイクアウトボードがあります。µCurrent Goldをまだ完全にチェックアウトしていない場合。これは静的な測定には適していますが、時間の経過に伴う測定のログ記録には適していません。

まだµCurrentを使用できる1つの方法は、差動アンプを出力に接続することです。次に、それをオシロスコープまたはアナログ入力を備えたロジックアナライザに送ります。私はそれについて完全な基本的なチュートリアルを作成しました。適切なツールを持っていない予算上の人々にとって役立つかもしれないと思います。

回路内で電圧が何をしているのかだけでなく、電流の小さなスパイクごとに電圧がどのように反応するかを学ぶことができるのは驚くべきことです。バッテリーテクノロジーと検証テストを選択する際に、数倍の節約になりました。😎


0

すべての答えにはすでに重要なポイントがあります。私の経験から追加します。

ディープスリープモードで消費電力が10uA未満、さらには1uA未満のデバイスを開発していたとき、ボードのクリーニングは違いをもたらしました。かつて、10個のボードのうち7個が予想される消費電流であった。すべて同じで、すべて正常に機能しました。それらを超音波洗浄機で洗浄した後、すべてのボードは期待した結果になりました。

そして最後に、すべての要素のデータシートをチェックして、予想/目標消費量を推定します。それらをうまく処理すれば、推定値に到達します。これには、マイクロコントローラーのすべての未使用ピンが含まれます。ADCをオフにする場合でも、外部接続に応じて、オフ時のピン構成が最適であることを確認してください。

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