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

[公開:any]

[電子工作/AVR]
[放電器,AVR,ATmega644P,PWM,2SK2232,電子負荷]

origin 2008-03-26
fix1 2008-03-27


ここは、henteko雑記

の内容をまとめたものに完成までのレポートを加えたものです。

基本構想


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

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

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

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

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

これらを4セル同時に処理できるものとします。

設計


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

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

AVRバッテリー放電器回路図

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

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

AVRバッテリー放電器制御基板配線図

AVRバッテリー放電器放電基板配線図

製作

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

AVRバッテリー放電器基板部品面画像

秋月電子で扱っているガラスエポキシ基板ですが、ランドが半田メッキされていて使いやすい基板です。

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


AVRバッテリー放電器基板裏面画像

LCDユニットとスイッチとバッテリーホルダーをつなげて動作テストしてみます。

放電テスト画像1

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

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

放電テスト画像2

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

ケースへの組み込み


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

ケースへの組み込み画像

前面パネルです。電源スイッチ、LCD、プッシュスイッチ4個でこちらもかなりタイトです。特に横幅はまったく余分なスペースがありません。
組み立ててから気がついたのですが、このLCDユニットは、視野角が狭いようです。上下左右の斜め方向からは表示が見にくいです。

LCDユニットの濃度調整ボリュウムが適切に調整されていなかったようです。濃度を調整すると視野角に問題はありませんでした。


放電器前面パネル画像

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

放電動作画像

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

ヒートシンク追加画像

LCD表示


とりあえず現状のソフトウェアのLCD表示です。
バージョンはこのとおり0.8です。

LCDバージョン表示

このあと各電池の電圧表示となり、モード切替えボタンにより、放電電流設定(初期値100mA)、放電停止電圧設定(初期値0.9V)、強制終了時間設定(21600秒:6時間)と切替えることができます。

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

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

LCD表示1

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

LCD表示2LCD表示3
LCD表示4LCD字表記5

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

とりあえず、このままでも問題なく使えるので使いながらLCD表示や操作内容を検討してソフトウェアの更新をしていきたいと思います。

また、拡張計画としてATmega644PのRXD0とTXD0を空けてあるので、RS-232Cによるシリアル通信を実装してパソコンに放電データをリアルタイムで送り込むところまで作りこみたいと考えています。


▲ページ Top へ...