ハードウエア

MCUの省電力制御

省電力を目的として MCUをスリープ/ウエイクアップ機能を使用します。

◀ この記事の前に: オプション使用時のMCU接続
▶ この記事の次に: オプション拡張時の省電力制御

省電力の目的

ロボットは電池で動きます。また、多くのサーボモーターや MCUを持つため電力の消費量は多くなります。すべてを動作させると電池容量がすぐに少なくなります。なるべく長い時間、動かせるように不必要な回路は電力消費量を低減することが望まれます。

省電力にするため、各MCUの動作モードを使用してMCUの機能を使用していない場合は、スリープモードに移行することにより電力の消費を抑えます。スリープモードからの復旧(ウエイクアップ)するためには幾つかの方法があります。複数のMCUが相互に連携して動作することを考えた場合、自分以外の MCUからウエイクアップすることも想定しました。
頭部はボート(基板)全体の電力を制御することにより、電力消費を抑えることができます。( 頭部ボードはオプションです。)

各MCUのスリープ / ウエイクアップ

各MCUのスリープはソフトウエアで行います。ウエイクアップは MCUの内部リソース以外に外部から行えます。概要は以下のとおりです。

  • Body MCU: Peripheral MCUから信号線を介してウエイクアップします
  • Body MCU2: Body MCU または Peripheral MCUから信号線を介してウエイクアップします
  • Peripheral MCU: Body MCUからの信号線を介してウエイクアップします
  • Head MCU: Peripheral MCUまたは Body MCUからの制御で頭部ボードの電源を制御します

半球睡眠をまねる

ロボットの省電力を「睡眠」として考えてみました。
さらに一部の動物が行っている「半球睡眠」を実現できる構成としました。

半球睡眠(英語:Unihemispheric slow-wave sleep、略:USWS)とは、脳の半分が眠り、残りの半分が覚醒している睡眠である。常に周囲の安全を確認する必要のある動物や長距離を移動する渡り鳥などの動物にみられる[1]。英語の別称:asymmetric slow-wave sleep。
引用:wikipedia

基本的な構成

ロボットは複数の MCUを持ちます。

  • 基本構成: Body MCU( Leafony )+ Peripheral MCU( ESP32 )
  • オプション1: 基本構成 + Body MCU2( 二つ目の Leafony Block )
  • オプション2: 基本構成 + Body MCU2( 二つ目の Leafony Block )+ Head Assy( 頭部ボード )

基本構成の省電力制御の構成は以下のとおりです。Body MCU、Peripheral MCU どちらの MCUも単独で動作することができます。起動時は両方の MCUが動作します。処理の中でプログラムにより MCUをスリープすることができます。ウエイクアップはプログラムの目的によって選択します。タイマーによるウエイクアップ、RTCによるウエイクアップ、外部からの割り込みによるウエイクアップなどが選択できます。

回路には他の MCUから外部割り込みによるウエイクアップができるように制御線を設けています。各MCU間は M-Linkにより接続していますがスリープ中は通信ができません。そのためウエイクアップするための制御線を設けています。

ウエイクアップの配線

Body MCU と Peripheral MCU は相互に外部割り込みによるウエイクアップをおこなうことができます。ウエイクアップするための配線は以下のとおりです。

デフォルト(購入時)の接続は以下のとおりです。

Peripheral MCU をウエイクアップする Body MCUはデフォルトでは Leafony BusのF6を使用します。
Body MCU の DACを使用する場合、出力ポートが F6に限定されますのでウエイクアップは F29を使用します。この場合は配線の組合せが変わります。●●をご参照ください。

Leafony / STM32 のウエイクアップ

Body MCU は STM32 Leafの使用を前提としていますので、ウエイクアップ線は STM32のウエイクアップが可能なポートになります。STM32L4シリーズでは次の通りです。スリープモードまたはスタンバイモード中に、エッジトリガやレベルトリガで割り込みを発生させ、マイコンをスリープ状態から復帰させることができます。

  • WKUP1 (Wakeup Pin 1): PA0 / F8
  • WKUP2 (Wakeup Pin 2): PC13 / F2
  • WKUP3 (Wakeup Pin 3): PE6 / 該当なし
  • WKUP4 (Wakeup Pin 4): PA2 / F20 ロボットではここを使用
  • WKUP5 (Wakeup Pin 5): PC5 / 該当なし

Leafony Bus F20 の USB UARTとの共用

STM32のウエイクアップは PA2( Leafony Bus の F20 )を使用します。このポートは USB Leaf( AZ01 )を接続したときに UART の接続にも使用します。USB Leaf は Arduino IDE を使用したときなど多くの場合、プログラム書き込みに使用します。PA2 はウエイクアップと USB Leaf の UART( TXD )の共用となります。

USB Leaf を搭載している場合で、かつ Peripheral MCU から Body MCU へのウエイクアップを同時に使用する場合は注意が必要です。USB Leaf の信号線が Body MCUに影響を与える場合があるからです。その逆に、Peripheral MCU からのウエイクアップ信号が、USBの TXDに影響を及ぼして USBの送受信ができない場合もあります。

Technical Considerations  Peripheral MCU から Body MCU へのウエイクアップを使用する場合は、プログラムの書き込みは SWDを使用することをお勧めします。または、プログラム書き込み後に USB Leafを外してウエイクアップの動作確認を行います。この場合、Arduino IDEを使用したモニターが使用できなくなります。STM32CubeIDE で printfを使えば UART( USB )が使用できないときでも SWOで printfを利用することができます。

Leafony Bus F6 の DAC出力との共用

ロボットの音声出力は Peripheral MCU ( ESP32 )の DACを使用します。Body MCU ( STM32 )または Body MCU2 ( STM32使用時 )にも DACを搭載しています。Body MCU または Body MCU2 のDACを使用することもできます。使用時はパターンジャンパー( PCB上のパターン )の削除と半田付により回路の変更が必要となります。詳細はオプション拡張時の省電力制御をご参照ください。

Leafony Bus F29 の SWCLKとの共用

Leafony Block 2 のウエイクアップは PA14( Leafony Bus のF29 )を使用しています。F29は同時にプログラミング用の SWCLKとの接続を兼ねています。SWDを使用する場合は、JP5 をPeripheral MCU側に接続します。この接続により F29 は SWDコネクタのみに接続可能となります。詳細はオプション拡張時の省電力制御をご参照ください。

ESP32 のウエイクアップ

Peripheral MCU は ESP32を使用していますので、ウエイクアップ線は ESP32のウエイクアップが可能なポートになります。ESP32のスリープモードにはライトスリープ、ディープスリープ、スタンバイがありそれぞれで使用できるウェイクアップピンは異なります。

  • ライトスリープ: 任意のGPIOピン
  • ディープスリープ: 二つのモードによる

ディープスリープは二つのモードでウエイクアップします。以下のとおりです。

  • EXT0ウェイクアップ: GPIO36、GPIO39 ロボットではここを使用
  • EXT1ウェイクアップ: 複数のGPIOピンでいくつかのピンのレベル状態に基づいてスリープから復帰
Technical Considerations  ディープスリープ中のGPIOは特定のピンに限られています。

オプション拡張時の省電力制御

ロボットには二つの Leafony Block を追加搭載することができます。二つ目の Leafony Blockである Body MCU2 を搭載した場合の省電力制御はこちらをご覧ください。

ロボットには頭部に頭部ボードを追加搭載することができます。頭部ボードはボード全体の電力を ON/OFFすることにより省電力制御することができます。頭部ボードを追加搭載した場合の省電力制御はこちらをご覧ください。

参考情報

他のサイトで参考になる情報は以下のとおりです。

このホームページ内

他のWebサイト

カテゴリー

最近の記事 おすすめ記事

記事一覧を表示するには、カスタム投稿「ブログ」にて、4つ以上記事を作成してください。

記事一覧を表示するには、カスタム投稿「ブログ」にて、4つ以上記事を作成してください。

TOP