

図1 ブロックダイアグラム
ユニバーサル基板で実装したプロトタイプは、実態配線図ベースで作成しました。プロトタイプベースで回路図に起こして、PCBを作成中です。
充電中の充電コントローラ基板のLCDの表示は下記のようになります。充電開始時は「状態表示」になります。 スロット#0,#1と#2,#3の表示が1secごとに入れ替わります。DOWNボタンを押すと「詳細状態表示」になります。 詳細状態表示では、1スロットごとに状態が表示されす。DOWNボタンを押すと表示されるスロットがインクリメントされます。 状態表示、詳細状態表示のどちらでも、状態がエラーの場合はエラー内容が表示されます。

図2 充電中のLCDの表示
|
|
| 表示 | 説明 |
|---|---|
| 消灯 | 充電をしていない状態 |
| 点灯 | 充電をしている状態 |
| 1回点滅 | 充電設定取得エラー。充電ユニット基板からのデータ取得エラー |
| 2回点滅 | 充電設定保存エラー。充電ユニット基板でのデータセーブエラー |
| 3回点滅 | 充電スタートエラー。充電ユニット基板で充電スタート処理が完了しなかった |
| 4回点滅 | リセットエラー。充電ユニット基板でリセット処理が完了しなかった |
| 5回点滅 | システムエラー。充電ユニット基板から未知の状態を取得した |
| 表示 | 説明 |
|---|---|
| 消灯 | 書き込み待機状態。もしくは、SDカードがない状態 |
| 点灯 | 書き込み中。SDカードを抜いてはいけない |
| 1回点滅 | SD初期化エラー。SDカードの初期化処理中にエラーが発生した |
| 2回点滅 | ファイルシステム初期化エラー。ファイルシステム初期化処理中にエラーが発生した |
| 3回点滅 | オープンエラー。SDカードのファイルオープン処理中にエラーが発生した |
| 4回点滅 | 書き込みエラー。SDカードのファイル書き込み中にエラーが発生した |
| 5回点滅 | クローズエラー。SDカードのファイルのクローズ処理中にエラーが発生した |
| 表示 | 説明 |
|---|---|
| 消灯 | 充放電動作していない状態 |
| 点灯 | 充電中 |
| 連続点灯 | 放電中 |
| 2回点滅 | 最小電圧エラー。電池の電圧が低すぎるた |
| 3回点滅 | ショート。電池がショートしている |
| 4回点滅 | オープン。電池がセットされていないか、内部抵抗が非常に大きい |
| 5回点滅 | 充電時間エラー。急速充電でΔV検出ができず、充電終止時間に達した |
| 6回点滅 | 過電流エラー。充電中に過電流となった |
充電中の電池の状態は、SDカードにファイルとして記録されます。下の図のように、1回の充電が1ファイルとして、連番のリードオンリーファイルとして生成されます。PCにコピーしてファイルを取得します。

図3 SDカード内のファイル
*ファイルの切り取りや、削除など、ファイルに変更を加えないようにします。ディスクの容量が一杯になったら、最古のファイルを削除するロギング専用のファイルシステムで書き込まれるので、削除すると構成がおかしくなり、以後のファイルの書き込みが正常に行われなくなります。もし、ファイルを削除してしまった場合は、ファイルシステムの初期化を行います。
ログファイルの内容は下記のようなテキストファイルで、1スロットのログが1行で書き込まれます。

図4 ログファイル
1行の内容は下記の通りで、詳細は表6の通りです。
st[slot_num] [tick] [prev_state] [state] [err_code] [open_bat_vol] [chgdsc_bat_vol] [chgdsc_current] [flt_chgdsc_bat_vol]
| フィールド | 説明 |
|---|---|
| slot_num | スロット番号 |
| tick | msecのティック。システム起動時からの積算カウント |
| prev_state | 1つ前の状態 |
| state | 現在の状態 |
| err_code | エラーコード |
| open_bat_vol | 開放電圧。充放電回路未接続時の電池電圧 |
| chgdsc_bat_vol | 充放電電池電圧。充電中、放電中の電池電圧 |
| chgdsc_current | 充放電電流 |
| flt_chgdsc_bat_vol | 充放電電流の過去8値の移動平均値 |
下記のPythonスクリプトでグラフ化できます。
analyze_charge.py
下記はグラフ化した例です。(あまり、良い電池の充電例ではありません)

図5 放電時の電圧変化

図6 充電時の電圧変化