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

 集めるのが趣味というわけではないですが、ニッケル水素電池やニッカド電池が家にゴロゴロしています。特に子供のゲーム機(ゲームボーイアドバンス)で使っていた頃の古いものがたくさんあって、使えるのか使えないのかわからない状態で残っています。

 こういった古い電池が使えるかどうかを判断するには、電池を放電させてみるのが一番だと思います。放電させたときの特性(容量等)で分類すれば、充電するときも使用するときも安心です。特に、複数の電池を使う製品でも安全に電池を使用することができます。
 充放電を繰り返して放電容量の減ったニッケル水素電池やニッカド電池のリフレッシュにも最適です。しばらく使用していないニッケル水素電池も、市販の充電器とこの放電器を使用して数回充放電を繰り返せば電池容量が復活するものがあることを実体験しています。

 また、京商のミニッツレーサーなどのラジコンで使用する電池も放電特性で分類すれば性能の良い電池を組み合わせて使用することが可能となります。

ということで、単3、単4に対応したバッテリー放電器を以下の仕様で作ってみます。

  • 定電流放電
  • 放電停止電圧が設定可能(0.6V~1.0Vまで0.1V単位)
  • 放電電流が設定可能(100mA~2000mAまで100mA単位)
  • 放電時間の最大値が設定可能(1時間~6時間まで1時間単位)
  • 放電時間表示(リアルタイムと結果)
  • 放電容量表示(リアルタイムと結果)
  • 放電平均電圧表示(結果)

4セルに対応したものとします。


 電池電圧の監視とPWM定電流放電のフィードバック制御にそれぞれAD変換ポートが必要です。電池4本同時の場合は、8ポートのAD変換ポートが必要となります。アナログマルチプレクサで切り替える方法もありますが、今回は標準で8ポートのAD変換ポートを持つAVRのATmega644Pを使用します。ATmega644Pは、PWMも6出力あるので8ビットのタイマー1、タイマー2を使用して4系統のPWM出力でMOS FETの放電回路4回路を個別制御します。

 回路図をいつもの回路図エディタのBsch3Vで作成しました。

 MOS FETは2SK2232を使用します。最大電流が2000mA(2A)で電圧も1.2V程度なので性能的には十分です。ただPWM周波数が40KHzを超えるのでON、OFFに伴う発熱がありそうです。

手持ちの基板の都合上、実装は2枚に分けました。参考までにAVRをのせた制御基板とMOS FETを使った放電基板の実装図をPCBEで作成したものです。

 回路図にはないですが、電源はトランスと3端子レギュレーターを使ったものを使用することにして、制御基板の空きスペースに実装しました。
 放電回路の0.1Ωのセメント抵抗は5Wのものを使用しています。もっと小さな容量でも問題はないのですが、昇温による抵抗値変化をできるかぎり小さくするために選択しました。

 使用したユニバーサル基板は、秋月電子で扱っているガラスエポキシ基板ですが、ランドが半田メッキされていて使いやすい基板です。

 注意事項として、グランド側の放電電流が流れるラインは、電池4セルで2000mA放電時には、8Aもの電流が流れます。最初は0.8mmのスズメッキ線でしたが、かなり発熱するため、1mmのスズメッキ線を追加してあります。また、電池ボックスへの戻りに使用してるAWG22もスペック不足となるのでAWG18クラスの電線に変更しています。

 LCDユニットとスイッチとバッテリーホルダーをつなげて動作テストしてみます。ソフトウェアは、一部LCD表示関係が完成していませんが、放電動作はできるので、実際に単3と単4のニッケル水素電池をつなげて放電してみます。

 このあと、別電源から1.5V程度の安定した電圧を各バッテリーホルダーに加えて放電動作させ、4セルの放電電流が設定電流と同じになるように放電回路のオペアンプの利得を調整しました(1000mAで調整しました)。

 設定する放電電流値を100mA~2000mAまでいろいろと試してみましたが、テスターで計測する限りは、ほぼ設定値の放電電流が得られるようです。

 苦手なケースのパネル加工を済ませて組み込みます。基板2枚を収容するには、ちょっと狭いですが、なんとか納めました。トランスは7.5V/0.5Aのものを使用しています。

 前面パネルは、電源スイッチ、LCD、プッシュスイッチ4個でこちらもかなりタイトです。特に横幅はまったく余分なスペースがありません。

 実際に動作させてみたところ良好に動作するようです。2000mAで10分程度放電させるとFETが若干熱くなります。この季節(冬)は心配ないのですが、夏のことを考えると簡単な放熱板(アルミプレート程度)を付けたほうが良さそうです。

拾ってきたL型アルミアングルでヒートシンクを作って取り付けました。(2008-03-27追記)

 とりあえず現状のソフトウェアのLCD表示です。バージョンはこのとおり0.8です。このあと各電池の電圧表示となり、モード切替えボタンにより、放電電流設定(初期値100mA)、放電停止電圧設定(初期値0.9V)、強制終了時間設定(21600秒:6時間)と切替えることができます。

 放電中の各セルごとの状態表示モードでは、セル番号につづいて電池電圧、(これまで放電した)電池容量、経過時間、放電電流値(実測値)をリアルタイムで表示します。

 どのモードであっても、スタート/ストップボタンで放電実行可否画面に移行し、もう一度、スタート/ストップボタンで放電を開始します。放電中はこのボタンを押せば即座に放電を停止することができます。

 4セル同時の状態表示モードです。順番に、電池電圧、PWM値(256分値)、放電容量、放電電流値となっています。

 これら放電表示の状態で、放電を終了したセルの表示は更新されなくなり、最後のセルの放電が完了すると結果表示モードとなります。

 とりあえず、このままでも問題なく使えるので使いながらLCD表示や操作内容を検討してソフトウェアの更新をしていきたいと思います。また、拡張計画としてATmega644PのRXD0とTXD0を空けてあるので、RS-232Cによるシリアル通信を実装してパソコンに放電データをリアルタイムで送り込むところまで作りこみたいと考えています。

1件のピンバック

コメントは現在停止中です。