PIC16F88を使ったバッテリー放電器の製作

2005-12-23

プリント基板ができあがりました

組み立てキットを頒布しています。
基板化した放電器の詳細は、私の仕事場である(有)アクト電子のほうで紹介します。
http://homepage3.nifty.com/act-ele/batdchg3/batdchg.htm
をご覧下さい。

 組み立てキットには、基板を組み込む
アルミケース(未加工)も含まれています。
PIC16F88はプログラムしてあります。
 ハンダ面側に電池クリップとLED、放電開始スイッチを実装します。


※使用する電池ホルダー、良いものがないがないのでたいへん悩みました。
「KEYSTONE」社の電池クリップが入手できたので、安定した接触が得られています。

この顛末は、「バッテリー放電器で使った電池ホルダー」で紹介しています。

基板化計画進行中です・・・→ プリント基板完成


※どのようなものになるか・・・

・外形 145x105mm程度  両面ガラス・エポキシ、スルーホール。 1枚基板で構成。
・放電する電池をセットする単3あるいは単4の電池ホルダーが4つ付くようにします。
・「テイシン」のアルミケース「TC-13(113x155x29)」に入るよう考えています。
・基板+電子部品+プログラムしたPICマイコンをキットにします。
   (未加工ですがアルミケースも含めます。)
・基本的な回路や機能は下で紹介しています試作回路をご覧ください。


※なぜこちらのほうのバッテリチェッカを基板化しないのか・・・・という質問に対するお答え

 定電流回路を使うなど、こちらのほうが高性能なわけですが、基板化するにあたりいろい
 ろ考えなければならないことが多いのです。
   液晶の接続 : コネクタの圧接をどうするか。
   調整方法 : 定電流回路の調整は。
   電池ボックスの接続 : 1枚基板にすると大きくなる。
   ヒートシンク : 適当なヒートシンク、いいものがない。
   ケース : なかなか適当なケースがない。 液晶をどう固定するか。
 ユニバーサル基板を使って自作する場合は、自由度があるのでどんな形にまとめても
 ケースへ組み込むことができます。しかし、基板化するとなるとどんな箱に入れるのかという
 のを最初に考えておかなければなりません。基板むき出しで使うわけにもまいりません。
 今回の放電器のほうが圧倒的に組み立てやすいのです。
 「液晶があればPCをつながなくても放電特性が読めるのでは」という意見をお聞きしました。
 しかし、電池の特性は、電圧変化と経過時間を照らし合わさなくては読めないようです。
 放電完了時間と放電平均電圧の値だけでは、劣化の様子はわかりません。
 けれど、PCを使って放電曲線を描かせれば一目瞭然ですし、グラフを描かなくても、
 一定電圧まで低下する経過時間を比べれば電池ごとの特性を読むことが可能です。
 ということで、このPIC16F88を使った放電器の基板化を進めたいと考えているのです。
 100Vでなく電池で運用できるというのも長所かと思います。

※放電結果データをグラフ化するツールは、このページの最後のほうで紹介しています。
 (ダウンロードできます。)

初めて使うPIC16F88

2005-02-23

 「ここ」で紹介していますように「16F88」が自家製PIC書き込みツール(WRPIC)で書き込めるようになりました。
16F88に内蔵されているA/Dコンバータとシリアル通信機能を使って、何かできないかと考えてでっちあげたのが
「バッテリ放電器」です。
 様々なバッテリ放電器、ロジックICとコンパレータICを使った簡易型の放電器は「ここ」で、AVRマイコンを使って
液晶表示している本格的な放電器(バッテリーチェッカー)は「ここ」で、そして豆球とダイオードを使って電池を放電
させてみた実験は「ここ」で紹介しています。
今回、16F88を使った放電器が仲間入りです。

特徴

 放電を制御するだけではもったいないので、次のような機能を持たせました。
(16F88が持つ機能をうまく制御できるか、その実験ですね。)

・電池電圧をA/D変換して放電停止を判断しています。
 Vrefに基準電圧ICを使っています。 max 2.50Vで電池電圧を測定します。

・測定した電圧変化データをEIA-232(RS-232C)でシリアル出力します。
 これをハイパーターミナルで受けてテキストファイルにし、エクセルに食わせれば
 放電特性のグラフが描けます。

・内蔵EEPROMに放電開始からの経過時間を記録し、放電完了後に読み出せるようにします。
 この機能で、放電中、パソコンをつないでモニターしなくてもすみます。
 放電が終わった後にパソコンとつなぎ、取り込んだデータをまとめてはき出させます。

・単3乾電池3本で動作します。
 A/D変換するので電池2本での運用はちょっと難しいでしょう。
 電源電圧、3Vでも動作しています。

・放電を終えるとスタンバイ状態となり、約1.5μAの電源電流で次のスイッチ操作を待ちます。
 電源スイッチはありません。

・報知ブザーを付けました。
 放電中の電池を示すLEDは付いていますが、せっかくPWM出力ポートがあるので、
 これを利用しして圧電発音体をドライブし、スイッチ操作と放電が終わったことを知らせます。

回路図

 ICは16F88だけです。
出力ポートでトランジスタを駆動し、5W・1オームのセメント抵抗をスイッチして電池を放電します。
4本の電池、個別に放電制御を行います。
定抵抗放電となり、約1.2Aの放電電流ですので、2000mAhクラスのニッケル水素電池
をおよそ2時間かけて放電します。
抵抗の誤差とスイッチしているトランジスタの飽和電圧で、電池ごとに放電電流の
差が発生します。

(クリックで拡大)


試作した回路の外観

 2階建て構造のユニバーサル基板に手配線してアルミケースに組み込んでいます。

右側の黄色いボタンが「放電開始スイッチ」

単3電池3本入りの電池ボックスが回路の電源です。

後ろのケーブルはパソコンとつないでいる「EIA232(RS-232C)」のケーブル。

フタをあけたところです。

パワートランジスタやセメント抵抗は
電池ボックス基板の下に隠れています。
一階基板の様子。

左上のICがPIC16F88です。

右下の丸いのが報知ブザー・圧電発音体。
一階基板のハンダ面側。

安物のベーク(紙・フェノール)基板を使いました。

手組配線では、いつもICB-98という紙エポキシの基板を愛用しているのですが、今回はちょうどいい大きさの切れ端があったのでベーク基板で作りました。

※そうそう。電圧精度を良くするために「4端子法」でA/D入力できるよう、配線を変えています。
この写真は変える前のものです。
PICマイコン部分の拡大。

2つ見えているTO-92の3本足は、リセットICと基準電圧ICです。

マイコン内蔵のクロックを利用しているので発振素子はありません。
安物の単3用電池ボックスを並べています。
2階建て結合部の様子です。
ストレートのピンヘッダーコネクタを使っています。

測定データのシリアル出力

放電中の電池電圧をA/D変換して、1分ごとにシリアル出力します。
パソコンでこれを受けて(ハイパーターミナルなど)テキストファイルを作り、エクセルなどに食わせれば、
放電電圧変化のグラフが得られます。

また、放電中はPIC16F88内部のEEPROMに、電圧低下の経過時間を記録しているので、放電が完了してから
このデータを読み出すことができます。
つまり、放電中ずっとパソコンをつないでいる必要はないのです。
放電完了とともに電池を抜いてからパソコンとつなぎ、電池を装着しない状態で「スタート」すれば、
EEPROMに記憶した放電経過時間データを出力します。

このデータを使えば、こんなグラフが描けます。

【グラフ1】


X軸が0.05V単位の電圧低下を示し、Y軸の経過時間を見れば、放電開始から何分で電圧が落ちたかわかります。

この例では、系列1と2がニッカド電池(700mAh)、で
系列3と4がニッ水電池です。
放電してから1.00Vまで低下するのに、90分くらいであるのが読みとれます。

【グラフ2】

1分経過するたびに出力する電圧値を使えばこんなグラフが描けます。

【グラフ3】

上のグラフ(グラフ2)は1分ごと送出するデータをログして作る必要があります。
しかし、放電中、ずっとパソコンを通電しておくのももったいない。
そこで、EEPROMに記録した経過時間データを使うわけです。
それを使ったグラフ化したのがこれです。
1.20V〜1.00Vを「0.02V」ごと、経過時間を記録しています。

【グラフ4】

上のグラフは「0.02V」ピッチでの記録でしたが、「0.01V」にするとこのようになります。

1.00V未満は0.05Vごとの記録です。
「1.00V」と「0.95V」のところでX軸のピッチが変わるので、線がいびつになっています。
1.00Vを切ってしまうと、電池のエネルギーは取り出せないので、こまかく測定しても意味はないかと思っています。 1.00V未満のデータ、必要でしょうか?


送出データの例

放電特性シリアル出力データを取り込んだログファイル(テキスト)を置いておきます。

dc51.txt

グラフ2とグラフ3を作った元データ
dc52.txt

グラフ4を作った元データ


回路を訂正

2005-02-03

 最初に作った回路のシリアル通信は、こちらから測定データを送り出すだけでした。
その後、ニッ水電池の放電停止電圧、「0.8V」ではまずいのではないか、電池メーカーの推奨どおり
「1.0V」で放電を止めるほうが電池に負担をかけないようだ、ということになりました。
電池メーカーに問い合わせましたところ、「深い放電をした後、電池が元気になると感じられるのは
一時的な反応だ」「やはり寿命を短くしている」との回答がありました。
特性を調べるなど特殊な場合を除き、「1.0V」で放電を止めるようにできなければならない、ということで
シリアル通信で放電終止電圧などを設定できるように手を加えました。
  (そのいきさつはここをお読みください)

シリアルデータを受信するために改造した回路図です。

   (クリックで拡大)

その後、放電用トランジスタをMOS-FETに交換しました。
また、RS-232Cまわりを、現在の簡易型に加えて、正規のレベル変換ICを使った
回路を書き足しています。

    (クリックで拡大)

シリアル通信による設定


 ターミナルをつないだ状態で「放電開始スイッチ」を2秒以上押し続けていると、パラ
メータ設定モードになります。

4つの設定項目があります。

Vstop
 放電停止電圧 放電を何ボルトで止めるかの設定。 初期値は「1.00V」。 入力するときは小数点を入れずに。
80→0.80V 100→1.00V
Vref
 基準電圧値 基準電圧ICの電圧を設定。初期値は「2.50V」。
上と同じく小数点なしで設定。 249→2.49V
TXcyc
 データ送出サイクル 電池電圧をシリアル出力するタイミングを設定。1分サイクルか1秒サイクルかを切り替える。 初期値は1分サイクル。 調整時、1秒サイクルにして電圧データの確認に使う。 0で1分サイクル、1で1秒サイクル。
Beep
 1分経過報知音の有無 1分ごとに鳴る「Pi」音の有無を設定。 0で音なし。初期値は1。 計時タイマーの遅れ進みのチェックに使用。

 放電開始スイッチを押すと、設定モードが終わります。


 V set mode (0-256)    スイッチ押し続けで設定モードに
                  入ったメッセージが出る
 Vstop:1.00V Vref:2.50V   設定されている停止電圧と基準電圧

 Vstop:1.00V>         「キャリッジリターン」で現在値を表示
  Vref:2.50V>          4つの設定パラメータがある
 TXcyc:1>
  Beep:1>

 Vstop:1.00V>80      数字は小数点なしで入力
  Vref:2.50V>249      0.80なら80と、2.49なら249
 TXcyc:1>0         TXcycとBeepは0と1だけ
  Beep:1>1
 Vstop:0.80V>
  Vref:2.49V>

 -bye-            スイッチを押すか1分放置で終了


新しいプログラムは下からダウンロードしてください。


※ニッケル水素電池を放電する時の放電終止電圧をどのように設定すればよいかは
 ここを参照してください。
 電池メーカの話として「1.0V」が推奨されています。
 「0.8V」と低くして放電すると、直後の充電で電池にカツが入るようですが、やはり
 電池寿命を縮めているようです。

グラフの作り方

 ウィンドウズのエクセルを使って、上に示すグラフの作成方法を解説します。
取り込むデータは0.1Vピッチで測定する分単位の経過時間です。
放電完了後にまとめて出力するデータを「ハイパーターミナル」などでテキストファイルとして
ダウンロードして保存、それをエクセルに食わせます。

「ファイル」「開く」から「テキストファイル:.txt」を選びます。

ダウンロード時にファイル名を付けますが、そのときファイルタイプを「.txt」にしておくと「メモ帳」などで内容を確認することができます。
データの形式を選びます。

「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」を選びます。
区切り文字は「スペース」です。

タブのところのチェックは外さなくてもokです。

これで、セルにうまくデータが並びます。
0.1V単位の経過時間データを範囲選択(先頭セルをクリックした後、シフト押さえて最終セルをクリック)した後、グラフの種別を決めます。
マーカー付き折れ線グラフを選びます。
「系列」の「項目軸ラベルに使用」として、左端セルの「電圧値」を範囲選択して選ぶと、グラフ下欄に電圧区分が現れます。
Y軸の数値として「経過時間・分」とコメントを入れています。
これでグラフが完成。

Xサイズが詰まっているので、X軸の文字が、0.1Vピッチなのに0.2Vピッチになっています。
すこしX軸を広げる(グラフ表示枠の端をドラッグ)と0.1Vピッチになります。

グラフが表示された画面を「Print Screen」キーでクリップボードに入れてペイントなどのグラフィックツールで加工(必要部分の切り出し)すれば完成です。

BMPはファイルサイズが大きくなるので保存するファイル形式はPNGやGIFがおすすめです。

単4電池放電用に試作した回路

2005-05-27

 上の回路図(DCHG3C)を使って単4電池の放電用に試作したのが
以下の写真です。

電池ホルダーは単4用を使っています。

ケースは「テイシン」の黒塗装アルミケース「TC-13」を使っています。
シリアル通信のためのD-SUBコネクタは、基板に直付けしています。

基板をケースのカバー側に付けているので、逆さになっています。
片面スルーホール無し基板を使っているので、電池ボックス装着部は基板を2段重ねにして両面基板化(?)し、部品面も使って配線できるようにしています。
セメント抵抗は発熱します。、


放電結果をグラフ化するツール

2005-10-30

 上で紹介していますように、放電結果データをグラフにするには、けっこう面倒くさい手続きが必要です。
そこで、ウィンドウズのアプリとして「シリアル通信/データのダウンロード/グラフ描画/データの保存/放電器設定」を
ひとつのプログラムとして実行できるものを作ってみました。

 画面イメージはこのようになります。
      (クリックで拡大↓)


 まだ未完成な部分がありますが、エクセルなどの表計算ソフトが入っていないPCでも、放電特性グラフを
見ることができます。
すでに、この放電器をお作りになった皆様、お試しいただければ幸いです。

プログラムのダウンロード

2005-12-20

 Win98、Win2000、XPでの動作を検証しています。
USB−RS232C変換ケーブルでの通信も確認しました。
簡単なドキュメントと描画用テストデータを含めて圧縮しています。
プログラムについての評価やご意見をお待ちしています。

最新のプログラムは、私の仕事場である(有)アクト電子で紹介しています。
http://homepage3.nifty.com/act-ele/batdchg3/batdchg.htm