パナソニック製充電器BQ-390の充電時間を計る
 ATtiny2313マイコンを使った充電時間表示器の製作

2011-02-25

●外観



●解説

●製作を思い立った動機

 デジタル・カメラやストロボなどの写真器材、あるいは無線機や懐中電灯でニッケル水素充電池を使うようになり、その管理に苦労しています。使おうとする前日に充電して準備しているのですが、何かの拍子に充電を失敗することがあるのです。
 カメラの稼働時間が短かった、ストロボの発光回数が少ない、無線機が長時間使えないなど、数本の電池のうち一本でも充電不足だと、機器がまともに使えません。そのために予備電池の用意も不可欠です。正しく充電されたか、あるいは電池の状態はどうかを調べるためあれこれ工夫してきました。

    ・電池電圧チェッカー組み立てキット
    ・放電特性記録機能付きバッテリー放電器
    ・交流定電流方式で電池の内部抵抗を計ってみる
    ・充電器、放電器、電池チェッカー

 それでも充電不足は突然やってきます。電池電極の汚れや充電器への装着不良が原因なのでしょうが、使い込んだ充電池だと失敗する比率が上がるようです。充電完了後の電圧を見ているだけでは単純に判断できないのがつらいところです。



●BQ-390を改造する

 充電器を改造して各電池に対する充電時間を表示することで充電失敗を見つける方法を試してみました。改造対象にしたのはパナソニック製の急速充電器BQ-390です。


  ■BQ-390の仕様
   ・1本ずつ独立した充電制御
   ・ニッケル水素電池/ニカド電池兼用
   ・単3型充電池(1〜4本)あるいは単4型(1〜2本)
   ・電源AC100V〜240V対応
   ・電池3〜4本を約4時間で充電
   ・電池1〜2本充電時は約2時間で倍速充電
   ・定格出力 DC1.5V 2.2A/0.86A(ピーク電流)
      平均電流 1〜2本時1.1A 3〜4本時0.55A


 充電を制御している信号を外部に引き出して、電池ごとの充電時間を積算表示します。充電に何か異常があると充電時間が短いという症状が現れます。充電完了後にこの時間をチェックすれば充電の失敗を防げるだろう、という目論見です。
 充電器に付加する表示回路の電源もBQ-390から供給、AVRマイコンATtiny2313で計時処理し、16文字×2行の液晶で充電時間を表示します。
 同品種の電池を4本同時に充電して時間がばらついていたら、どれかの充電が怪しいと考えられます。ふだんの充電時間を記録しておけば常用している電池の異常発生を判断しやすいでしょう。

  〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
   ★説明書や本体に「分解・改造しない」という注意書きがあるように、
    今回の改造は自己責任です。この点十分に注意してください。
  〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

  ※BQ-390の分解
   BQ-390の分解はビス二本をゆるめたあと下左右の各辺2カ所ずつ
   あるツメを外す。
   上辺にはツメがなく右上角プラグ先端部に一つある。
   ここから開けると良い。

  ※BQ-390という同じ型番でも、内部回路が異なるものがあります。
   基本の制御は同じようですが、基板のパターン引き回しも含めて
   部品配置が異なるので注意が必要です。



●BQ-390の概略

 下図はBQ-390の充電制御回路の略図です。制御用マイコンから出る5本の信号で充電を制御しています。
 Q11は充電電流の大小を制御しているトランジスタで、マイコンの12番ピン出力がLだと大電流で充電、Hレベルになると充電電流が減ります。電流比を実測すると2.2〜2.4となっていて、充電完了直前や電池温度が上がったときなどに充電電流を減らす制御が行われます。
 トランジシタQ31〜Q34で電池個別の充電オン・オフを制御しています。マイコンの9〜12ピンがHになると充電オン、Lでオフです。後段のPNPトランジスタで電池のプラス極につながる充電用電源をスイッチしています。

  (クリックで拡大↓)


 この4本の信号は同時にオンすることはありません。また電池の装着本数で制御タイミングが変わります。
 その様子を下図に示します。約0.26秒で充電する電池が切り替わり、1〜2本なら1/2サイクルで、3〜4本なら1/4サイクルになります。なお充電電流の検出は電池のマイナス側で行われています。


  ■波形の説明
    CH1:BAT1信号
    CH2:BAT2信号
    CH3:HCUR信号
    CH4:BAT- 充電用電源マイナス側
      (電流検出抵抗でのドロップを見ている。大電流でマイナス振る。)

  (クリックで拡大↓)

     電池2本のときの制御タイミング
     BAT2側が大電流充電 (HCURがLのタイミング)

  (クリックで拡大↓)

     電池3本のときの制御タイミング
     BAT4に電池を装着していないので電流は流れていない
     HCURのH/Lに合わせてCH4が変化しているのが見える


 BQ-390の場合、LED点滅で充電中、充電完了でLEDが点灯します。LEDが点灯し充電が終わったと知らせているにもかかわらず、この後も2時間以上パルス的な充電が行われる場合があります。補充電なのでしょう。これが行われない場合もあり、何が違うのかはよく分かりません。



●信号の取り出しかた

 BQ-390からはデジタル信号と電源だけを取り出します。充電具合に関係するアナログ信号は使いません。
 信号を引き出すのに1.5mmピッチの小型コネクタを使いました。コネクタを外せばBQ-390単体で今までどおりに使えます。
 コネクタを取り付ける場所は充電器の下部、マイナス側電池電極の2と3を利用します。この電極端子にオス・コネクタの外側ピン(1、2番ピンと10番ピンの3本)をハンダ付けして固定します。。
 電池電極にハンダするコネクタ端子は固定に使うだけで信号の引き出しには使いません。コネクタ内側の7ピンに横取りする信号を配線します。このとき、基板のパターン(レジストはしてあるが)とコネクタ端子が接触する部分がありますので、絶縁テープを貼り付けています。(耐熱テープ:カプトン・テープを使用)
 位置が決まってから樹脂ケースの裏カバー部を削り込み、コネクタが外に出るようにします。
 横取りする信号は次の場所から引き出しました。
   電源:C31両端(基板の中央にある)
   HCUR:Q11のB
   BAT1〜4:Q31〜34のB、あるいはR41〜R44
ラッピング線を使って配線しています。くれぐれも間違いのないように引き出してください。









●信号引き出しに使ったコネクタ

     ・JST製 ZHコネクタ 10ピンタイプ (写真下側)
        ベース付きピン:B10B-ZR
        ハウジング:ZHR-10
        ピン:SZH-002T-P0.5



    ※写真上側は2.5mmピッチのJST製XHコネクタ。

    ※今回は部品入手の関係で10ピンのものを使ったが、
      11ピンにするとハンダ固定するピンを4ピンに増
      やすことができる。

    ※電線をピンに圧着するのに専用工具が必要だが
      純正の工具は高価。
      「エンジニア」製のコネクタ圧着工具「PA-09」
      を使って作業した。

    ※下列右側はアングルタイプ。
      電池電極にしっかりハンダするのなら、この形状の
      コネクタの足をまっすぐ延ばして使うのも良いかと思う。
      上列は表示回路側に使った2.5mmピッチのXHコネクタとピン。



●表示部回路

 回路図を下に示します。ATtiny2313のポートDで液晶とインターフェースし、ポートBでBQ-390からの信号を入力します。

  (クリックで拡大↓)



 部品実装の様子は下の写真をご覧ください。使ったプラスチック・ケースは「タカチ」の「SW-95」です。接続に使うコネクタは2.5mmピッチのもの(JST XHコネクタ)を使いました。





 上の基板には水晶発振子が見えていますが、現在はマイコン内蔵クロックを使って動作させているので不要です。



 接続ケーブルは下の写真のようになります。透明状のものは電線を保護しているホット・メルト・ボンドです。



 コネクタに直接つながって外部に出るPB4(信号HCUR)は、マイコン内蔵プルアップ抵抗は使わず抵抗R1をつないでいます。R2は電源オン直後の液晶制御信号EをLレベルに安定させるためのプルダウンです。PB0〜3とPB5は内蔵プルアップを有効にしています。表示部の消費電流は約4.5mAです。





●信号インターフェース部でのトラブル

 この信号入力部分で困ったことに遭遇したので説明しておきます。大電流充電制御信号「HCUR」はL/Hが0〜5VとなっていてAVRマイコンに直接入力できます。
 ところが、充電をオン・オフ制御するBAT1〜4の4本が問題でした。Hレベル時の電圧がAVRマイコンで直接入力するには低いのです。5V動作しているAVRマイコンのVIH(min)は3Vです。ところが信号のHレベルが約1.4Vしかないのです。そのままつなぐとHレベルの信号として取れません。そこで抵抗内蔵トランジスタで(デジトラ)を入れてインターフェースしました。この部分を抜き出したのが下図です。



 BQ-390を制御しているマイコンの出力ポートHレベル駆動能力が低いのでしょう。抵抗R41〜44、6.8kでプルアップされていてもVi電圧が約1.4Vしかありません。
 最初、この信号の横取りにデジトラRN1202(東芝)を使いました。RA/RBとも10kの製品です。負荷となるR2(AVRマイコンの内蔵プルアップ抵抗)が大きいのでこれで十分かと判断したのです。
 組み立てた直後は問題なく動作していました。ところが翌朝、室温が低い状態で運転してみると不安定なのです。Hレベルをうまく取り込んでいません。温度が下がるとVBEが上がりHFEが下がります。その影響を受けたのでしょう。
 異常が起きているとき、トランジスタの頭を指で触って体温で加熱してやると正常に戻ります。入力1.4Vをこのデジトラで取り込むには不適切なようです。これをもう少し考えてみましょう。
 とりあえずベース電流を無視して、Viに1.4Vを加えるとRAとRBで分圧されるのでVb電圧が0.7Vとなります。トランジシタのVBEは約0.7Vですが、コレクタの負荷抵抗が大きい(コレクタ電流が小さい)のでVBEはもう少し低くても動きます。なんとかスイッチしてくれるだろうと手持ちにあった10k/10kのRN1202を選んだのです。ところが温度が低いとトランジスタの特性が変化、またBQ-390側の駆動電圧も低くなり前述のような現象が発生したというわけです。
 そこで抵抗比率の異なるデジトラを使うことにしました。10k/47kのRN1207(東芝)あるいはDTC114YSATP(ローム)が適当です。これで間違いなく取り込むことができます。



●制御プログラム

 マイコンは内蔵の4MHzクロックで動作させています。最初は正確を期して4MHzの外付水晶発振子を使っていました。でも、計時といっても相対的なものですし1〜2%の誤差が生じても問題なしと判断して内蔵クロックに変えました。
 0.25mS(4KHz)周期でタイマー割り込みをかけ、割り込みルーチンの中で各電池の充電指令であるBAT1〜4信号を調べます。信号がHなら(マイコンのポートとしてはL)充電中として時計を進めます。
 タイマーは2種類あり、各電池4本分それぞれに累積充電時間と大電流充電時間をカウントしています。BAT1〜4信号がHのとき合わせてHCUR信号もチェックして、これがLだと大電流充電中として累計とは別に計時します。それぞれ4000カウントで1秒タイマーを進め、時分秒に直して液晶に表示します。
 表示回路の電源は充電器に依存するので、電源オン後は直ちに計時処理を始めます。充電完了後に充電器がコンセントから抜かれるまでそのままカウント値を保持しています。


●表示処理

 表示の様子を下に示します。16文字×2行しかありませんので、4電池ともまとめて表示すると注釈的な表示ができません。ずいぶん窮屈な表示です。




 どの電池が充電状態にあるのかを示すため、液晶の中央で「1〜4」の数字を反転して表示することにしました。この数字全体が反転しているのが大電流充電、半分だけ反転表示しているのが小電流充電です。反転せずに表示が止まっているところの充電は行われていません。液晶のCG RAMを書き換えてこの反転文字表示を行っています。


●表示切り替え操作

 PB5につないだスイッチを押すたびに表示を切り替えます。



 (1)累積充電時間表示:HCUR信号の状態に関係なくBAT1〜4がオン
   していた累積時間を「1h23m45」と時分秒で表示します。

 (2)大電流充電時間表示:大電流充電された時間を表示します。
   区別するため文字hをHにして「0H59m59」としています。

 (3)換算時間表示:大電流時の電流が小電流充電時の約2.3倍で
   あることを利用して、次の計算式で大電流充電に換算した時間を
   表示します。この場合は時表示なしで「123m45」と分秒表示です。
       換算時間=((累積時間−大電流時間)÷2.3)+大電流時間


●プログラム

 制御の詳細はソースファイルをご覧ください。アセンブラで記述しています。
 なお、ATtiny2313のヒューズビットはH=0xD9 L=0xE2です。外部水晶発振子を使うときはこれをL=0xFDにします。
 タイミングのチェックのため、空きのポートにパルスを出力しています。時間表示のタイミングでPB6がHになります。0.25mSカウンタが4000カウントに達して1秒経過、この充電時間を表示するタイミングを知らせています。このポートがHになってから液晶のアクセスが始まるまでが2バイトの秒値を時分秒値に変換、そしてBCD値へ変換するのに要している時間です。
 PB7は4kHz割り込みの処理時間です。この周波数を計れば内蔵クロックの精度を検証できます。



●EEPROMのデータ

 換算時間を計算するための大小充電電流比「2.3」はEEPROM内に置いています。表示切り替えスイッチを押しながら電池を外した状態で電源をオンすると、この数値の設定変更モードになります。
 「Cur H/L ratio」と表示してスイッチ操作待ちになります。「2.0〜3.0」の範囲で設定でき、スイッチを押すたび値を+0.1します。操作を止めて5秒経過すると設定値をEEPROMに保存して、通常処理に戻ります。
 充電中に電流検出抵抗両端をオシロで見れば、おおよその電流比がわかります。充電器により差があると思います。



●充電の様子

 充電結果の数値とその電池を放電した様子をグラフに示します。新しい電池だとよくそろって充電されているのがわかります。しかし、充放電を繰り返し使い込んだ電池だと充電の状態が安定しません。同じ電池でも日によって充電具合が変化するのです。
 残容量や内部抵抗の変化に合わせて充電器が最適な充電方法を選んでいるのでしょう。大電流で一気に充電が進むこともありますし、充電開始直後から小電流充電になり、ゆっくりと充電される場合も見られます。
 充電に失敗する場合、充電開始後の比較的早い段階で充電を中止しているのが見えます。そんな電池でもいったん取り外して再装着すると充電処理が進むことがあります。また、継ぎ足し充電に失敗するときは、いったん放電してから充電するとうまく行く場合が多いようです。充電器内部の処理がどうなっているのか、何が原因で充電を止めてしまうのかを外から知ることができないので歯がゆいです。



●放電グラフと充電時の表示数値

   ・自作放電器による1Ω抵抗による定抵抗放電

     累積:  累積充電時間
     大電流: 大電流充電時間
     換算:  大電流換算時間


◆サンプル1 : 使用頻度の少ない充電池

     累積  大電流 換算
Bat1 1h00m51 0H54m28 57m14
Bat2 1h00m28 0H54m06 56m52
Bat3 1h00m19 0H53m56 56m42
Bat4 0h59m55 0H53m32 56m18





◆サンプル2 : 使い込んだ充電池

     累積  大電流 換算
Bat1 1h15m30 0H44m00 57m41
Bat2 1h27m07 0H44m49 63m12
Bat3 0h57m12 0H54m09 55m28
Bat4 0h47m24 0H44m21 45m40



    ・Bat3と4は小電流充電が少ないまま充電が終わっている
    ・換算充電量の小さかったBat4は放電時間が短くなっている
    ・充電量が大きくても長時間放電できるとは限らない



◆サンプル3 : 使い込んだ充電池2本

     累積  大電流 換算
Bat1 1h05m47 0H00m05 28m38
Bat2 0h54m21 0H33m36 42m37



    ・Bat1はほぼ小電流充電だけで充電が進んだ
    ・換算充電量に見合って放電結果に差が発生した





■参考資料
   ・気の迷い:Panasonic充電器 BQ-390 個別充電表示化改造
      http://www.kansai-event.com/kinomayoi/BQ390/BQ390.html












◆制御プログラムダウンロード


・chgtm1.zip へのリンク




◆関連記事

居酒屋ガレージ日記へのリンク

2009年03月08日 充電器BQ-390の中身
2009年03月09日 充電器BQ-390の中身#2
2009年07月24日 GP社「ReCyko+」単3・2100mAh
2010年10月15日 eneloop購入