コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

PSoC4 Pioneer kit を使って PSoC4 の ADC で遊ぶ記事。

DSC00284
ニッケル水素電池は充電して再利用できるので便利に使っている。
しかし、利用してからも結構な時間が経つため徐々に増える電池という反面、利用年数がばらばら な物が混在しているという状況にある。
使い込んで明らかにへたれてくると充電してもものの数分で出力が低下したり、充電できなかったりするのでわかるのだけれども、長年使ってそこそこ劣化しているというときは今ひとつ知る術がない。

そこでマイコンを使って電池の電圧降下を計測し、実質の容量計測をしようと思い立った。

DSC00286
お試しなんで適当にバラック設計。

作戦としては

  • 現実的に適度な負荷をかけた形での電池消費試験
  • 放電終始電圧である 1.0V まで降下したら負荷を切りたい
  • 電圧監視して1.0V に至るまでの時間が知りたい

といったところ。
電圧監視と時間計測、そして放電終止電圧に至ったときの負荷切り離しをマイコンで制御したいということでここに PSoC4 の Pionner kit を割り当て、PSoC4 と戯れつつやってみる。

DSC00288
現実的な負荷として工作用の豆電球を点灯させることにした。
これを簡単なトランジスタスイッチングで ON/OFF できるようにし、マイコンの GPIO でコントロールをする。
Battery_check
ざっくり回路図にするとこんな感じ。
control で豆球(負荷)の ON/OFF ができて、電池の両端を ADC で監視する。
DSC00285DSC00287DSC00289
I2C で接続した LCD モジュールで、ADC で計測した電池電圧とスタートからの経過時間を表示する。
それらは適当にブレットボードとワイヤで繋いでる。お遊びなので。

board1
PSoC4 Pioneer Kit での配線例。

toplevel-1pin_assign
トップモジュールとピン配置は上図の通り。

約1秒の間隔が知りたくてクロックから割り込みを作成。
1Hz のクロックモジュールから割り込みモジュールへの直つなぎはダメだと怒られたので、フリップフロップをかまして 1分周落としたシグナルを割り込みとして使っている。カウンタ使うのは大げさだなと思っていたのでこれで良いのかも。
ただし、クロックは内蔵RCなので時間としてはあまり正確ではないはず。

analog
PSoC でもアナログモジュールで使えるピンというのはある程度制約があって、それに従わないと配置ができない。その様子はリソースの Analog タブで表示される図を見るとなんとなく理解できる。

resource
一方デジタルの UDB とかその他モジュールがどれくらい使われているのかといった図はないので、プロジェクトエクスプローラの Result の中にあるリポートファイルを眺める事になる。

プログラムは 1sec の割り込み毎に ADC を確認し 1000mV 以下になったら、contol を 0 にし負荷を切りタイムカウントをやめるといったものにした。
これで一晩掘っておいても勝手に負荷を切り、その時までの時間がわかるといった案配。

プロジェクトファイルは以下に
Download: battery_checker.cywrk.Archive01.zip
Download: battery_checker.cywrk.Archive02.zip

ADC ライブラリの中に ADC_SAR_Seq_1_CountsTo_mVolts() という ADC の計測値を mV に変換する便利な関数があって楽できた。
ADC とこの関数の精度はどうかというとそのままではちょっとズレている感じだけれども、今回の用途は大体で良いのでこれでも十分だった。

そんな感じで電池が放電終始電圧に至るまでの時間を計測できた。
トランジスタ+豆球の負荷はおおよそ 6.3Ω といったところ。ニッケル水素電池の出力が 1.2V だとすると、この豆電球負荷は大体 190mA。新品のニッケル水素電池 1本で 9時間20分くらい豆球が点灯していたとかそんな感じの負荷と計測時間だった。
その新品のニッケル水素現地の公称が 1900mAh くらいだったので、10時間弱という時間はおおよそ合致している。適当なんで厳密じゃないと思っていたが、そんなに大きく間違った計測ではなさそうだ。

さて、後は手持ちの古いニッケル水素電池がどんくらい持つのかを計測していくだけだ。
試しに数本やってみたところ、5年以上前の古い電池でもそんなにわかるほどの容量劣化はしていなそうに見える。
まあ、昔の二次電池は自己放電で放電終始電圧を超えてガンガン放電していっていつの間にか使えなくなっているという感じだったけれども、今のニッケル水素電池は自己放電が押さえられているので未使用で置いておいてもそんなに劣化していかないというところなのかな。

2 Comments to “乾電池のおきがる負荷テスト”

  1. 匿名 Says:

    プロジェクトの中にi2c_lcd_module.cファイルが見つからないのですが……

  2. rerofumi Says:

    本当ですね……。気づかなかった。
    どうやらプロジェクトに追加した際、隣のフォルダの奴だったらしくパスが不正になっておりそれでアーカイブに入っていなかったようです。
    修正したものを archive02 として置いておきました。

    ご指摘感謝します。

Leave a Reply