Strawberry Linux の Web を見ていたら、「INA260 【高精度】I2Cディジタル電流・電圧・電力計モジュール」というのが有ったので購入。古いハンディ機に使っている充電池の放電グラフを描いてみようのがきっかけ。
古い充電池。Kenwood のハンディ機で使用される PB-32 タイプの電池です。
この電池は、Aliexpress で購入した再生品。中身は 1000mAh 位の電池6セルです。×印付けているのは、以前バッテリーチェックしたとき即放電終止電圧 1V × 6セル = 6V に落ちたので、もうこれは駄目かなということで×印をつけています。
バッテリーのチェックは Aliexpress かアマゾンか忘れましたが、抵抗負荷で放電させて電圧・電流・容量を7セグに表示するシンプルなものです。設定した放電終止電圧になると放電停止して、その時の容量(mAh)を表示してくれるシンプル仕様なのは簡単で良いのですが、放電途中の経過がどうかはわかりません。
放電途中の電圧・電流を調べたければセンサーが必要ということで、Strawberry Linux で扱っている「INA260 【高精度】I2Cディジタル電流・電圧・電力計モジュール」というのを購入しました。ターミナルに電池や放電器を配線して、I2C 接続で電圧・電流を読み取るモジュールです。この手のセンサーは Strawberry Linux だけでなくいろんなところから同等のモジュールは販売されているので入手は難しくありません。
I2C 接続というとマイコン接続となるのですが、今回はグラフ表示をしたかったのでアプリケーションは Windows ですることにしました。ということで、PC から I2C 接続するため購入したのは FT232H モジュールです。
FTDI の FT232H を搭載したモジュールです。今回は秋月通販で購入しました。写真は Adafruit のものですが、FT232H であれば他所のモジュールでも問題ありません。
IN260 とFT232H モジュールは、これも秋月で買った4ピンケーブルで接続して終わり
バッテリー端子とセンサー間の線は、ばね式クランプで押しつけてます。3D プリンタでも持っていれば電池ホルダー的な物を作ってスマートに行きたいところですが、持っていないので仕方ありません。測定する資材はこんな感じです。
測定アプリケーションは Visual Studio 2022 の C# フォームアプリケーションです。
依存関係で導入した Nuget パッケージは FtdiSharpという FTDI から提供される D2xx.dll の C# ラッパーと scottplot バージョン4安定版のグラフプロットライブラリの2つ。プロジェクトをデフォルトで作成したので .NET8 アプリです。
アプリケーションを起動すると、PC に USB 接続されている FTDI アダプタを一覧で表示。そのアダプタをクリックすると、I2C アドレスのスキャンをして I2C デバイスのアドレスをを表示。
I2C アドレスをクリックして、START ボタンを押すとセンサーから電圧・電流を1秒ごとに取得してグラフをリアルタイム更新していくシンプル仕様です。グラフの縦軸は画面右上の数字を入力したら随時反映するようにしました。この数字入力は測定中でも変更可能です。
このバッテリーの直近の容量は以下のようになってます。中の1セルが駄目になったと思われますがこのような状態になれば、充放電しなおしても復活は無理っぽい感じ。グラフ表示も 1.2V × 6セル = 7.2V 付近で粘る感じではなく下がり始めが早い状態になっていました。
2023/12/01 放電 50mAh
2023/12/01 放電 5V 終止で再測定 341mAh
使用停止
2023/12/04 充電 12時間
2023/12/07 放電 476mAh
2023/12/07 充電 14時間
2023/12/08 放電 544mAh
2023/12/08 充電 14時間
2023/12/10 放電 523mAh
アプリケーションのサンプルは https://github.com/ngc6589/ina260_CSharp_example に置いています。