ガス(ガソリン/ディーゼル)がバイク、トラック、車(ええ、テスラを除く!)が動くのに重要であるのと同じように、ほとんどの電子機器アプリケーション、さらには通常はバッテリーである組み込みシステムベースのアプリケーションの電力も重要です(通常の携帯電話からスマートホームデバイスまで、電力が供給されます。
バッテリー電力の制限された性質は、これらのデバイスの電力消費率がそれらの採用と使用を促進するために合理的であることを保証する必要があることを意味します。特にIoTベースのデバイスでは、バッテリーを交換せずに1回の充電でデバイスが8〜10年も持続すると予想されます。
これらの傾向により、組み込みシステムの設計で低電力の考慮事項が実装され、設計者、エンジニア、製造業者は、製品が消費する電力を効果的に管理するいくつかのインテリジェントな方法を開発し、製品がシングルチャージ。これらの手法の多くは、ほとんどのデバイスの心臓部であるマイクロコントローラーに焦点を当てています。今日の記事では、これらの手法のいくつかと、それらを使用してマイクロコントローラーの消費電力を最小限に抑える方法について説明します。マイクロプロセッサの消費電力は少なくなりますが、どこにでもマイクロコントローラに配置して使用できますが、リンクをたどって、マイクロプロセッサとマイクロコントローラの違いを確認してください。
マイクロコントローラーの省電力技術
1.スリープモード
スリープモード(一般に低電力モードと呼ばれます)は、マイクロコントローラーの消費電力を削減するための最も一般的な手法です。それらは一般に、マイクロコントローラの特定の周辺機器を駆動する特定の回路またはクロックを無効にすることを含みます。
アーキテクチャとメーカーに応じて、マイクロコントローラには通常、さまざまな種類のスリープモードがあり、各モードには、他のモードと比較してより多くの内部回路または周辺機器を無効にする機能があります。スリープモードは通常、ディープスリープまたはオフから、アイドルモードおよび居眠りモードまでさまざまです。
使用可能なモードのいくつかを以下に説明します。これらのモードの特性と名前は、メーカーによって異なる場合があることに注意してください。
私。アイドル/スリープモード
これは通常、設計者が実装する最も簡単な低電力モードです。このモードでは、マイクロコントローラを非常に高速でフル動作に戻すことができます。したがって、マイクロコントローラがスリープモードを終了するときに大量の電力が消費されるため、デバイスの電源を入れ直すときにスリープモードを頻繁に終了する必要がある場合、これは最適なモードではありません。スタンバイモードからアクティブモードへの復帰は、通常、割り込みベースです。このモードは、MCUプライマリ高周波クロックが実行されている間、CPU回路を駆動するクロックツリーをオフにすることによってマイクロコントローラーに実装されます。これにより、CPUはウェイクアップトリガーがアクティブになるとすぐに操作を再開できます。クロックゲーティングは、マイクロコントローラーの低電力モードで信号を遮断するために広く採用されており、このモードはCPU全体でクロック信号を効果的にゲートします。
ii。スタンバイモード
スタンバイモードは、設計者が簡単に実装できるもう1つの低電力モードです。これは、CPU全体でクロックゲーティングを使用するという点でアイドル/スリープモードと非常に似ていますが、大きな違いの1つは、通常アイドル/スリープモードの場合とは異なり、RAMの内容を変更できることです。スタンバイモードでは、DMA(ダイレクトメモリアクセス)、シリアルポート、ADC、AES周辺機器などの高速周辺機器が稼働し続け、CPUが起動した直後に使用できるようにします。特定のMCUの場合、RAMもアクティブに保たれ、DMAからアクセスできるため、CPUの介入なしにデータを保存および受信できます。このモードで消費される電力は、低電力マイクロコントローラーの場合、50uA / MHZまで低くすることができます。
iii。ディープスリープモード
ディープスリープモードでは、通常、マイクロコントローラー内の高周波クロックやその他の回路を無効にし、ウォッチドッグタイマー、電圧低下検出、パワーオンリセット回路などの重要な要素を駆動するために使用されるクロック回路のみを残します。他のMCUは、全体的な効率を向上させるために他の要素を追加する場合があります。このモードでの消費電力は、特定のMCUによっては1uAまで低くなる可能性があります。
iv。停止/オフモード
特定のマイクロコントローラーには、この追加モードのさまざまなバリエーションがあります。このモードでは、通常、高発振器と低発振器の両方が無効になり、一部の構成レジスタとその他の重要な要素のみがオンのままになります。
上記のすべてのスリープモードの機能はMCUごとに異なりますが、一般的な経験則は次のとおりです。睡眠が深いほど、睡眠中に無効になる周辺機器の数が多くなり、消費電力量が少なくなりますが、これは通常、次のことも意味します。システムを復旧させるために消費されるエネルギー量が多いほど。したがって、システムの仕様に影響を与える妥協をせずに、このバリエーションを検討し、タスクに適したMCUを選択するのは設計者の責任です。
2.プロセッサ周波数の動的変更
これは、マイクロコントローラーが消費する電力量を効率的に削減するためのもう1つの広く普及している手法です。これははるかに古い手法であり、スリープモードよりも少し複雑です。これには、ファームウェアがプロセッサクロックを動的に駆動し、プロセッサの周波数と消費電力量の関係が線形であるため、高周波数と低周波数が交互に繰り返されます(以下を参照)。
この手法の実装は通常、このパターンに従います。システムがアイドル状態のとき、ファームウェアはクロック周波数を低速に設定して、デバイスが電力を節約できるようにします。システムが大量の計算を行う必要がある場合は、クロック速度を上げます。
プロセッサの周波数を変更することには逆効果のシナリオがありますが、これは通常、ファームウェアの開発が不十分な結果です。このようなシナリオは、システムが大量の計算を実行しているときにクロック周波数が低く保たれている場合に発生します。このシナリオでの頻度が低いということは、システムが設定されたタスクを実行するのに必要以上に時間がかかるため、設計者が節約しようとしていたのと同じ量の電力を累積的に消費することを意味します。したがって、タイムクリティカルなアプリケーションでこの手法を実装する場合は、特に注意が必要です。
3.割り込みハンドラのファームウェア構造
これは、マイクロコントローラーの電源管理の最も極端な手法の1つです。これは、SCRレジスタにスリープオンエグジットビットを持つARMcortex-Mコアなどのいくつかのマイクロコントローラによって可能になります。このビットは、割り込みルーチンの実行後にマイクロコントローラにスリープする機能を提供します。この方法でスムーズに実行されるアプリケーションの数には制限がありますが、これは、フィールドセンサーやその他の長期的なデータ収集ベースのアプリケーションにとって非常に便利な手法になる可能性があります。
私自身の意見では、他のテクニックのほとんどは、すでに上で述べたもののバリエーションです。たとえば、選択的ペリフェラルクロッキング技術は、本質的に、設計者がオンまたはオフにするペリフェラルを選択するスリープモードのバリエーションです。この手法には、ターゲットマイクロコントローラーに関する深い知識が必要であり、初心者にはあまり適していません。
4.電力最適化ファームウェア
マイクロコントローラーが消費する電力量を削減する最良の方法の1つは、効率的で十分に最適化されたファームウェアを作成することです。これは、時間ごとにCPUによって実行される作業量に直接影響し、ひいては、マイクロコントローラーによって消費される電力量に影響します。ファームウェアの作成中には、不要な命令が実行されるたびにコードサイズとサイクルが削減されるように努力する必要があります。これは、バッテリーに蓄積されたエネルギーの一部であり、無駄になります。以下は、最適化されたファームウェア開発のためのいくつかの一般的なCベースのヒントです。
- 電力を消費する配列や構造体などの実行時のコピーを防ぐために、可能な限り「静的定数」クラスを使用してください。
- ポインタを使用します。これらは、C言語の初心者にとっておそらく最も理解しにくい部分ですが、構造体や共用体に効率的にアクセスするには最適です。
- Moduloを避けてください!
- 可能な場合は、グローバル変数よりもローカル変数。ローカル変数はCPUに含まれ、グローバル変数はRAMに格納されるため、CPUはローカル変数にすばやくアクセスします。
- 符号なしデータ型は、可能な場合は親友です。
- 可能な場合は、ループに「カウントダウン」を採用します。
- 符号なし整数のビットフィールドの代わりに、ビットマスクを使用します。
マイクロコントローラーが消費する電力量を削減するためのアプローチは、上記のソフトウェアベースのアプローチに限定されず、コア電圧制御技術のようなハードウェアベースのアプローチが存在しますが、このポストの長さを妥当な範囲内に保つために、節約します別の日にそれら。
結論
低電力製品の実装はマイクロコントローラーの選択から始まり、市場で入手可能なさまざまなオプションを検討しようとすると、非常に混乱する可能性があります。スキャン中、データシートはMCUの一般的なパフォーマンスを取得するためにうまく機能する場合がありますが、電力が重要なアプリケーションの場合、非常にコストのかかるアプローチになる可能性があります。マイクロコントローラの真の電力特性を理解するには、開発者はマイクロコントローラで利用可能な電気的仕様と低電力機能を考慮する必要があります。設計者は、MCUのデータシートでアドバタイズされた各電力モードによる消費電流だけでなく、ウェイクアップ時間、ウェイクアップソース、および周辺機器を調べる必要があります。 低電力モードで使用できます。
使用する予定のマイクロコントローラーの機能をチェックして、低電力実装のオプションを確認することが重要です。マイクロコントローラーは、技術進歩の最大の恩恵の1つであり、現在、電力バジェット内にとどまるのに役立つリソースを確保する超低電力マイクロコントローラーがいくつかあります。それらの多くは、効果的な設計のために利用できるいくつかの電力分析ソフトウェアツールも提供します。個人的なお気に入りは、TexasInstrumentのマイクロコントローラのMSP430ラインです。