2008/5/17
先日買った3Cell-1800mAhのリポを充電していたら、初めてバランスチェッカーが
アラームを出しました。テスターで測ってみると確かにバランスが崩れています。
今まであまり気にしていなかったのですが、少し管理をするようにと、まず小道具を
作りました。三つのcellの電圧を一度に表示する3cell専用の電圧モニターです。
CellMeterを参考にしました。
秋月で買って使わないでしまいこんであったLCD(SC1602BS)がありましたので、これに
PIC-16F88のA/Dコンバータで測った各セルの電圧を表示させるようにしました。
GNDに一番近いセルはそのままPICのA/Dコンバータに入力できますが、
2セル目と3セル目は電圧がそれぞれ8Vくらい、12Vくらいになりますので、
ひと工夫が必要です。
部品箱にOPAMP-4558がありましたので、これで差動増幅回路を二つ作り、2セルだけ、
3セルだけの電圧を作り出してから、PICのA/Dコンバータに入力するようにしました。
回路の簡単な説明
接続したリポの3セル部からレギュレータで+5Vを作り、16F88とLCDの電源とします。
この電圧がA/Dコンバータの基準電圧にもなります。
OPAMP(4558)の負電源端子はGNDに接続しています。
今回は入力電圧の下限がリポの1セル以上(約3V以上)と決まっています。
(リポが壊れていたらこの条件は崩れてしまいますが)
マイナス電源を供給しなくても差動回路が動作することをシミュレーションで
確認したので、簡略化してしまいました。
リポの3セルの両端は差動増幅回路に接続しています。
OPAMP(4558)は差動増幅回路を組んでありますので、+入力と-入力の差分、
つまりリポの3セル単体の電圧(だいたい4V近辺)をGND基準で出力します。
2セルの両端も同様に処理しています。
OPAMPの出力2系統と、リポのGND側の1セルの出力は、16F88のA/Dコンバータに
入力させるように接続します。
A/Dコンバータは、AD5/AD4/AD3の3チャンネルを使っています。
LCD(SC1602BS)は16F88の使用端子を減らすために4ビットモードで動かしています。
ブレッドボードで回路が正しく動作することを確認しておきます。
ここで動作確認をきちんとしておくと、半田付けしてから配線をやりなおし
することがなくなりますから、必須の作業手順です。
およその配線をPCBEで引いておいてから、一気に配線を仕上げてしまいます。
差動増幅回路の抵抗が多かったので、手持ちのチップ抵抗を使って実装面積を
小さくしました。
パターン図をクリックすると大きい図面を見ることができます。
表面と裏面の配線の様子です。
16F88のプログラムは、いつものようにCで書き、
CC5Xフリー版
でコンパイルしています。
あまりきれいなコードでは無いのですが、参考に載せておきます。
コメント文はいい加減なところが残っているかもしれません。
Cソースコード
SC1602BSの制御部は、
こちらのページ
を参考にしました。
CGROM内蔵なのですが、さすがに電池マークはありませんでしたので、CGRAMに電池の
マークを書き込んで表示させています。
A/Dのチャンネルを選択してからコンバートを開始させるのですが、ここはタイミング
規定があって、選択してからすぐにコンバート開始させると正しい結果が得られません。
最初、A/Dの結果の上位8bitの値がどうしても127くらいまでしかならず、リファレンス
電圧がおかしいのだろうかとか、A/Dが壊れてしまったのかとか、あれこれと悩みました。
切り分けのため、3チャンネル動作から1チャンネルだけ動かすようにコードを変更した
ところ正常なA/D変換結果が出てきたので、はたと気がついてデータシートを見直して
スペック違反のコードであったことがわかりました。
ホビー用途でも、使うデバイスのデータシートはきちんと読んでおかないといけませんね。
プログラムを変更するとあれこれと機能を追加できるので、今度は最低電圧保持機能とか、
1秒毎のログ取り機能とかをつけられないかと考えています。