工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial Internet of Things >> 埋め込み

あなたはどれくらい低く(パワー)行くことができますか?

前回の投稿「ArmCortex-M低電力モードの基礎」では、すべてのArm Cortex-Mプロセッサに見られる低電力モードの基礎と、WFIおよびWFE命令を活用してプロセッサを配置する方法について説明しました。寝るため。しかし、実際に残っている問題は、これらの低電力モードが実際のマイクロコントローラーにどのように実装され、それらのモードが組み込みシステムにどのように影響するかということです。この投稿では、マイクロコントローラーをスリープ状態にする方法を詳しく調べ、どのくらいのエネルギーが私たちを購入するかを確認します。

低電力モードの実験

低電力モードを調べる最良の方法は、マイクロコントローラーを選択し、実際にさまざまな低電力モードでプロセッサーを実行することです。この投稿では、実験しただけでなく、多くの製品、アプリケーション、およびコースで使用した、実証済みのNXP Kinetis-LFreedomボードをほこりで払うことにしました。また、マイクロコントローラーが消費しているエネルギー量だけでなく、開発ボード全体を測定することも、正しいか間違っているかを判断しました。通常、MCUはボード上で最も電力を消費するデバイスの1つですが、システム全体の電流を測定すると、ボード上の唯一のエネルギー消費者ではないことがよくわかります。マイクロコントローラーの最適化には長い道のりが必要ですが、エネルギーの最適化が必要になる可能性があるのは、マイクロコントローラーだけではありません。

ベースライン測定から始めます

製品のエネルギー消費の最適化に取り組んでいるときはいつでも、最初にベースラインのエネルギー測定を行うことから始めます。これは通常、デバイスの現在の消費電流を数秒または数分にわたってプロファイリングして、どこから始めているかを理解することによって行われます。開発ボードの実験では、スリープを実装せずにKinetis-Lを実行モードのままにし、すべての周辺機器をオンにして、LEDを定期的に切り替えるようにボードを設定しました。 I-JetデバッガーとI-Scopeを備えたIAREmbedded Workbenchを使用して、LEDがオフの場合は約16.9 mA、LEDがオンの場合は約18.0mAのボードの単純なベースラインをプロファイルできました。図1.ご覧のとおり、どこから測定を行ったかに注意することが重要です。そうしないと、分析が大幅にずれてしまう可能性があります。

クリックして大きな画像を表示

図1.1秒に1回LEDが切り替わる開発ボードの現在の測定値。 (出典:著者)

待機モードとディープスリープモードでエネルギーを最適化する

エネルギーの節約を確認する最も簡単な方法は、待機モードまたはディープスリープモードを実装することです。 Kinetis-Lプロセッサのデータシートを調べると、待機モードは3ボルトで3.7〜5.0mAを消費することがわかります。このモードでは、CPUと周辺機器のクロックは無効になりますが、フラッシュはドーズモードであるため、プロセッサは割り込み時間枠(12〜15クロックサイクル)内でウェイクアップできます。待機モードは簡単に実装できます。待機モードに入るコードは次のとおりです。

void Sleep_Wait(void)
{
SCB_SCR&=〜SCB_SCR_SLEEPDEEP_MASK;
asm( "WFI");
}

ボックスの隅をスクロールまたはドラッグして必要に応じて展開します。

これらの2行のコードだけで、開発ボードの消費電流は18.0mAから15.9mAに低下します。これは、消費電流が11.6%減少します。ボードが680mAのバッテリーで駆動されていた場合、デバイスのバッテリー寿命は37.8時間から42.8時間になります。たった2行のコードから5時間増加します!

これらの高レベルの電力モードの優れている点は、これをさらに簡単に進めることができることです。プロセッサを待機モードにする代わりに、次のコードを使用してプロセッサをディープスリープ待機モードに移行できます。

void Sleep_Deep(void)
{
SCB_SCR | =SCB_SCR_SLEEPDEEP_MASK;
asm( "WFI");
}

ボックスの隅をスクロールまたはドラッグして必要に応じて展開します。

SCB_SCRレジスタの1ビットを調整するだけで、元の18mAの電流引き込みから14.8mAになりました。これは、消費電流が17.8%減少します。繰り返しになりますが、ボードが680 mAのバッテリーで駆動されていると仮定すると、バッテリーの寿命は37.8時間から46時間になります。これらはほんの数行のコードで大きな節約になり、氷山の一角にすぎません!

uA電流引き込みに停止モードとVLLSモードを活用する

停止モードを使用すると、コアクロックとシステムクロックを無効にすることで、MCUの消費電流をさらに最大2ミリアンペア下げる可能性があります。電力モードが低いほど、それを実装するために必要なコードが多くなり、システムをウェイクアップするためのコードが複雑になります。 Kinetis-Lで停止モードに入るコードは以下のとおりです。

void Sleep_Stop(void)
{
volatile unsigned int Damdyread =0;
SMC_PMCTRL&=〜SMC_PMCTRL_STOPM_MASK;
SMC_PMCTRL | =SMC_PMCTRL_STOPM(0);
dummyread =SMC_PMCTRL;
Sleep_Deep();
}

ボックスの隅をスクロールまたはドラッグして必要に応じて展開します。

停止モードは電源管理制御レジスタを介して制御され、状態が設定されると、Sleep_Deep関数が呼び出されて、電源モードの設定とWFIの実行が終了することに注意してください。

これまで、MCUが1〜2mAを消費することについて話してきました。最新のマイクロコントローラーには、マイクロアンペアまたはナノアンペアを引き出すことができる電力モードがあります。 Kinetis-Lプロセッサは2013年頃にデビューし、そのVery Low Leakage Stop(VLLS)モードは135〜496マイクロアンペアしか消費しません!この電源モードを初期化するためのコードを以下に示します。

void Sleep_VLLS1(void)
{
volatile unsigned int Damdyread =0;
SMC_PMCTRL&=〜SMC_PMCTRL_STOPM_MASK;
SMC_PMCTRL | =SMC_PMCTRL_STOPM
SMC_VLLSTRL =SMC_VLLSCTRL_LLSM(1);
ダミー読み取り=VLLS_CTRL;
Sleep_Deep();
}

ボックスの隅をスクロールまたはドラッグして必要に応じて展開します。

この時点で、マイクロコントローラーはほとんどエネルギーを消費していません!

ウェイクアップレイテンシに対する低電力モードの影響

これまで見てきたように、プロセッサを低電力モードと低電力モードに移行することは、エネルギーを節約するための優れた方法ですが、その節約にはコストがかかります。プロセッサのエネルギー状態が低いほど、プロセッサがウェイクアップして有用な作業を行うために必要な時間が長くなります。たとえば、標準の停止モードを使用する場合、プロセッサがウェイクアップしてコードの実行を再開するには、2usと割り込みレイテンシが必要になります。悪くない。ただし、Kinetis-LでVLLSモードの1つを使用する場合、プロセッサの起動に加えて53〜115マイクロ秒のウェイクアップ遅延が発生します。アプリケーションによっては、これが受け入れられない場合があります。図2は、Kinetis-Lの低電力モードから実行状態への追加の遷移を示しています。

クリックして大きな画像を表示

図2.Kinetis-Lの低電力モードからさまざまなモードへの移行時間。 (出典:Kinetis-Lデータシート)

結論

Armマイクロコントローラーにはすべて標準の低電力モードがありますが、すべてのシリコンベンダーが開発者が利用できる低電力モードをカスタマイズしています。これまで見てきたように、シリコンベンダーは、目覚めの待ち時間への影響を最小限に抑える、ぶら下がっている果物として機能するいくつかのモードを提供することがよくあります。それらはまた、プロセッサをほぼオフにし、わずか数百マイクロアンペア以下を引き出すいくつかの非常に低い電力モードを提供します!多くの場合、開発者は、引き出したいエネルギーの量と、システムが起動してイベントに応答するために必要な速度とのバランスをとる必要があります。トレードオフは間違いなくアプリケーション固有であるため、すべての製品とアプリケーションで最低電力モードを実行できるとは期待しないでください。


ジェイコブベニンゴ は、組み込みソフトウェアコンサルタント、アドバイザー、教育者であり、現在12か国以上のクライアントと協力して、ソフトウェア、システム、プロセスを劇的に変革しています。 [email protected]、彼のWebサイトwww.beningo.comで彼に連絡し、彼の毎月のEmbeddedBytesニュースレターにサインアップしてください。


埋め込み

  1. 3Dプリンターの監視を活用して、積層造形を拡張するにはどうすればよいですか?
  2. アディティブMESを使用してシリアルアディティブプロダクションにどのように拡張できますか?
  3. 低電力AIビジョンボードは、単一のバッテリーで「数年」持続します
  4. IIoTデータがリーン生産方式の収益性をどのように高めることができるか
  5. 産業用自動化にはいくつの現実がありますか?
  6. 停電が電源装置にどのように損傷を与える可能性があるか
  7. 低力率の原因
  8. 海軍真鍮の溶接方法を学ぶ
  9. コンデンサの充電方法は?
  10. PDP を調整してコストを削減する方法
  11. 水力を強化するにはどうすればよいでしょうか?