Top Page Index About Link Mail Form このページの応用機器製作します

ニッケル水素電池パック HHR-P104専用充電器の製作

2016.7.6 新規作成
2016.9.22 新バージョンの作成

→ヤドカリ型歩行メカの作成

→新バージョン基板の作成


 秋月で売っているニッケル水素電池3本パック HHR-P104はサイズ的に使い勝手が良さそうなのですが、専用の充電器が無いので作ってみました。


→回路図(PDF)

 システム図と回路図は上記。PWM制御で電池に定電流を流し、電圧を監視して充電制御します。電圧と電流の監視には専用チップ(INA219)を使っているので比較的高精度に安定した測定ができます。ただ、充電電流や何ボルトで充電を終了するかなどの条件は正確なところは不明なので手探りで決めていくこととなります。充電対象を特定の電池パック(HHR-P104)に限って実験を繰り返すことで実用上支障ないところを探します。なので、これと同等の回路を作って何かあっても当方は一切責任を取りません。まあ、そういうことはうちのどの回路でも同じなんですが。

 回路図で Pch MOS FETが2個逆向き直列にしてあります。これは電源を切った、あるいは停電等で電源が切れても電池を抜かずにそのまま放置した時、電池側から電流が逆流して放電・消耗してしまうのを防ぐ為です。この Pch MOS FETのドライブ回路は簡単に済ませましたが、回路効率を上げるには改良の余地があると思います。

 何度か充放電を繰り返して実験した結果、まあこんなものかなという充電状況がこちらのグラフ。480mAの定電流充電をし、4.55Vに達したら充電電流を 80mAに切り替え、それから 10分以上、電圧上昇が無くなったら充電完了としています。なお、このグラフの後も 10mAで自己放電を防ぐように電流を流しています。

 この電池パックには過電流防止用のポリスイッチ(リセッタブルヒューズ)が入っています。その為、大電流で充電するとその抵抗の分だけ電圧が上昇して見えます。充電電圧が 4.55V、あるいはそれ以上にも上がるように見えるのはその為です。

 回路的には充電電流をもっと増やすこともできますが、USBで充電可能にしたかったので 480mAに抑えています。大電流を流すとそれなりにリスクも増えますし。

 基板には MCU(ATmega328p)のシリアルI/Fコネクタをつけてあります。これ経由でコマンドを送ると充電電流・電圧・時間などの設定を変更できるようになっています。また、1分ごとに電圧や電流などの充電状況も出力するようになっています。→ログの例

 基板裏面。右側が INA219とその周辺。中央右下が FETのスイッチ、中央左下が 3.3Vレギュレータですね。

 この画像は回路図とちょっと違っています。これを撮った後、改良したのが回路図となります。

 電池ボックスと一体化してみました。歩きません。

 5Vの ACアダプタで充電中。

 USBでも充電できます。基板側のコネクタは microUSB。

 裏側。基板の穴位置は電池ボックスに合わせてあります。長手方向は 50mmになっているので少々短くなっています。これはスイッチサイエンスの基板製作で 50mm x 50mm以内にしておけば安く上がるので。


新バージョン基板の作成

2016.9.22
新しい基板を作成しました。前回のものと構成はほぼ同じですが、

  1. MCUの変更。AVR(8bit) → STM32(ARM 32bit)
  2. 電池BOX直下に温度計設置
  3. PWMスイッチの電源側にも INA219を入れて電流値計測
  4. 基板サイズをちょっと拡大。(35mm x 50mm → 50mm x 50mm)

という変更をしています。

MCUは 8bitの ATmega328pよりも 32bit ARMの STM32F042K6T6の方が安くなっている(@秋月)ので、今後は積極的に使っていこうと思います。フラッシュROMサイズは同じですが、CPUや周辺デバイスが強力ですので。RAMも 6KBになってるし、USBとCANを使わないならそれ用の 1KB RAMも流用可能なようですし。

安全対策強化として、電池BOX直下に温度計を追加しました。電池BOX中央に穴を開けると顔を出すようになっています。ただ、この電池パックは背面にプラスチック板があるので電池セル温度を直接測るという構造にはなっていません。あくまでも異常に高温になったことを検出するということで。

PWMスイッチの電源側にも INA219を挿入して電流・電圧を測れるようにしてあります。これは充電時には直接判断に使っていませんが、リアルタイムで効率計算できるように。また、充電の電源を太陽電池を使うような回路を作る際は太陽電池効率を上げるために MPPT制御するのに使えると思います。

電池直下には温度計以外を実装しない為に基板面積を広げました。

ちなみに基板の左側にあるのは自作の USBシリアル変換器です。赤のボタンはリセット、青のボタンは BOOT選択になってます。これ一つでファームウェアの書き変えもシリアルデバッグもできるようになってます。まあ、デバッグは printfデバッグに限られますが。

→回路図(PDF)

実際の充電状況のグラフです。前回のものより曲線がなめらかですが、これは1秒ごとに電圧測定、それを60秒分を平均してグラフに出している為です。また、MCUの変更で細かい PWM制御ができるようになったので充電電流があまりブレなくなったせいもあるかもしれません。(グラフのスケールも違いますが。)

充電パラメータは微調整はしていますが、おおまかには変わっていません。90分程度で急速充電が終了、その後、補充電を行っています。急速充電が終わると9割程度は充電が済んでいると思いますので、急ぐ時はその状態で使ってもいいでしょう。

→動作ログ

電池が空の状態ではなく、ある程度残っている状態から充電してみた場合のグラフ。この時は4.5V手前でフル充電になったらしく、発熱して電池電圧が下がっています。それを検出して充電完了とみなし、10mAの微小電流に切り替えています。動作ログを見ると温度測定値は 39℃まで上がっています。充電を開始すると回路ロスの為、基板温度が少し上がりますが、充電終了ちょっと前からまた上昇しています。

基板部品面。

電池BOX側。電池BOX中央にΦ6mm程度の穴を開けて使うようになっています。画像では穴あけが適当だったので温度計素子がちょっとずれたようになっていますが。


→Indexに戻る