Mbedを使って、UARTでバッテリマネージメントをしてみる

Mbedでバッテリ管理

今回使用したのは、アナログ・デバイセズ社のArm Cortex-M3コアを搭載したマイコンADuCM3029のMbed対応評価ボードEV-COG-ADuCM3029です。

図

使用するアプリケーション

APS_Labというアカウントに、「BMS_3029」というプロジェクトを用意しました。ここからMbedの環境にimportしてください。

https://os.mbed.com/users/APS_Lab/code/BMS_3029/

図

組み込む場合の手順

ここからは、実際に組み込む場合の手順を記載しておきたいと思います。今回動画で紹介したコマンドは、下記の5つです。

  • コンフィグレーションの読み込み
  • セルの電圧値を読むためのAD変換開始
  • セルの電圧値読み込み
  • 指定したセルの放電
  • 放電の停止

Mbedの環境から読み込んだファイルと行番号を図にしました。

図コンフィグレーションの読み込み

図セル電圧値読み込み用AD変換開始コマンド

図セルの電圧値読み込み

図指定したセルの放電開始コマンド

図放電停止コマンド

組み込みシステムのイメージ

さて、実際に組み込んだ場合を想定して、フローチャートを作ってみました。色々な処理をさせている中で、バッテリのセル電圧を監視したいと思ったので、RTOSを使うことを想定しました。

図初期起動イメージ

メインタスクでは、「セルの放電タスク」や「セルの充電タスク」、「セルの放電停止タスク」を起動だけさせておきます。それぞれのタスクには、イベントフラグで待つようにしておきます。そして、コンフィグレーションを読み込んで、セルのADCをスタートさせます。この時、セルの電圧値をポーリングするのではなく、500ms毎に起動するような周期ハンドラを使います。

図

周期ハンドラ内では、セルの電圧値を順番に読んでいき、3つの条件分岐で状態を確認します。

1つ目の条件分岐では、設定した電圧値の上限をチェックします。上限値を超えていれば、セル放電タスクに対して、イベントフラグを発行します。

2つ目の条件分岐では、設定した電圧値の下限をチェックします。下限値に満たなければ、セル充電タスクに対して、イベントフラグを発行します。

3つ目の条件分岐では、上記2つの条件内のため、放電処理が続いていたらキャンセルします。放電停止コマンドに対して、イベントフラグを発行します。

図

セル放電タスク、セル充電タスク、セル放電停止タスクでは、それぞれ図のように構成します。実際にこの条件で動かしたわけではありませんが、組み込みシステムのヒントになればと思います。是非、効率のいいバッテリー管理をお試しください。