Li-ionバッテリーをソーラーパネルに接続する

住宅・土地・エリア

2018年頃からソーラーパネルを設置している。
当初は100Wのソーラーパネル2枚から始めたのだが、その後5枚まで増やした。
バッテリーは自動車用の鉛バッテリー(40B19L)を使っていたが、その後GH130F51も加えた。
40B19Lの公称容量が28AhでGH130F51が95Ah、40B19Lを5個とGH130F51が2個なので5時間放電率による合計容量は330Ahとなる。

鉛バッテリーは放電終止電圧を高くしておかないと劣化が早いので、11.8Vでカットオフにして運用した。
また気休め程度ではあるが、パルス発生器を取り付けていた。
パルス発生器の効果に関しては検証しているのだが、特定の条件下では効果がある程度だと思っている。
鉛バッテリーの劣化具合
デサルフェータ・バッテリーとパルスの検証
パルスバッテリーチャージャと科学的再生

それでもバッテリーの劣化は進み、5年目には40B19Lは殆ど容量がなくなった。
GH130F51はメンテナンスを怠っていて電解液量が減少していたのだが、これを補充する事によってかなり回復した。
40B19LよりもGH130F51の方が耐久性が高く、正確に測ったわけではないが5割程度の残容量が残っていると思われる。
ただし半年に1回程度は電解液量のチェックが必要だ。

バッテリーの劣化が進んだので増設あるいは交換を考える時期になった。
GH130F51を増やすのが良いのだが、この5年の間に鉛バッテリー価格は1.5倍以上になっている。
一方でリチウム系バッテリーの価格は半分くらいまで下がり、リチウム系バッテリーの利用が現実的となってきた。

リチウム系バッテリーとしては12V系の組電池として売られているもの、セル単体のものなどがあるのだが、信頼性などに関してはよく分からない。
EV用のバッテリー流用もあるのだが、これも多少工夫して使う必要がある。

そんな状況で三菱のEV用バッテリーであるLEV50を頂ける事になった。
渡りに船ではないが、今回はこれをソーラーシステム用として使っていこうと思う。

頂いたLEV50 Li-ionバッテリーは4セルユニットと8セルユニットがある。
Li-ion、いわゆる三元系なのでセル電圧が3.8V程度、ユニット電圧は15.2V/30.4Vとなる。
ウチでは12V系でシステムを組んでいるので、4直列だと15.2Vで使う事になるが、少々電圧が高い。

ソーラーシステムの自作記事などは色々あるが、Google検索で見つけるのはかなり大変だ。
いわゆる悪徳ソーラー屋の宣伝ページみたいなものばかりがヒットするようになっている。
もはやGoogle検索は役に立たないので、Ai BingかTwitterの検索の方が余程有効な答えが返ってくる。
また質問が絞れるのであればChatGPTに聞いた方が早い。

LEV50 Li-ionバッテリーユニット

まずはLEV50のユニット内部を見てみる。
ユニット内には基板があり、CPUやバッテリーコントローラデバイスが実装されている。

バッテリーコントローラはLTC6802G-2であり、これはADCやバッテリー電流制御用のFETスイッチが内蔵されている。
LTC6802はスタンドアロンでは動作せず、CPUからのシリアル信号によって制御を行う。
これはバッテリー4セル用なので、セルバランサ用の抵抗が非実装の部分がある。
8セル用の場合は全てが実装される。

方式としてはパッシブ型になるが、CPUを介しているので(非効率ではあるが)常時動作させることも可能だし、中華パッシブセルバランサのように満充電近くでのみ動作させるのではなく、充電時に逐次監視と動作をさせる事が出来る。

コントロール用CPUはNECのμPDF362M2が使われている。
動作解析まではしていないので、スタンドアロンでバッテリーマネジメントを行っているのか?あるいはCANからの制御で動作するものなのかは不明だ。

バッテリーユニットはCANで接続されている。
CPUからはディジタルアイソレータを介し、CANドライバに接続されている。

バッテリマネジメントに関しては適切な制御がされていると思われるので、CAN側のコマンド解析が出来れば、このセルバランサを活かす事も出来る。
しかし実際問題としてそれは難しく、さらに3セル構成で使った方がシステム全体として楽なので、今回はこの基板は使わない。

何故LEV50でアクティブセルバランサを使わないかだが、一つはコストの問題がある。
抵抗1本で済むパッシブバランサに対して、アクティブバランサの場合は絶縁型DC-DCコンバータが必要であり、コストが上がる。
またバッテリー自体のバランスが良く管理されていれば、パッシブバランサだけでも良いと考えた可能性もある。

しかし大電流放電や充電が繰り返し行われるEVは、バッテリーにとっては非常に過酷だ。
バッテリーの寿命などを考えれば、より高度な制御が望まれる。

セルバランサー

セルバランサはリチウム系バッテリーを直列で使用する場合に必要になる。
直列にしたセルの中の1つ以上の劣化が進んだ場合、多くは内部抵抗が高くなるので充放電にアンバランスが起きる。

例えばLi-ionバッテリーの場合は端子電圧が4.1Vを超える事が出来ない(LEV50の場合は50msに限り4.2Vまで許容されている)ので、これを制御する必要がある。

例えば2つのセルが直列になっていたとして、セル1の内部抵抗が1Ωでセル2の内部抵抗が2Ωだったとする。
ここに4Aの充電電流を流すと、セル1の端子電圧は4Vだがセル2の端子電圧は8Vまで上がろうとする。
こうなるとセル2が壊れてしまう。
そこでセルバランサは、セル2の端子電圧が4.1Vを超えないようにバッテリーの端子をシャントするように動作する。

EV用のバッテリーは品質が管理されているので、少なくとも初期の状態ではセルバランサなしでも動作する。
あるいは市販の自動車/バイク用バッテリーのように、定期的に外部からセルバランスを取り直す充電を行う方法もある。

急速充放電を行わない、バッテリーユニットに温度差が出来ないように配置するなどの工夫により、セルのバランスは崩れにくくなる。
セルバランサを使わなくても、数ヶ月ごとにセル電圧をチェックし、バランス充電(あるいは一度バッテリーを全並列にして通常充電)を行えば、バッテリーのバランスは回復する。
しかしバランスが崩れた状態を放置すれば、バッテリーは急速に劣化する。

そこでセルバランサを使うわけだが、セルバランサには抵抗でシャントするパッシブ型と、余剰電力を電源側に戻すアクティブ型、隣接セルとのバランスを取るフライングキャパシタやスイッチトキャパシタと呼ばれる方式がある。
また過充電とか放電を防止するためのFETスイッチが入ったBMSもある。

ウチで使っているMPPTチャージコントローラ(EP Ever製)はバッテリーマネジメント機能を有するので、セルバランサだけをバッテリーユニットに付ければ良い。

パッシブ型は専用デバイスと抵抗で構成されているので安い。

パッシブセルバランサは充電時に動作し、セル電圧が規定を超えようとすると基板上の抵抗に電流を流してセル電圧の上昇を抑える。
回路としては正確なセル電圧の検出と、抵抗に分流するためのFETで構成されている。

アクティブバランサはDC-DCコンバータが内蔵されていて、余剰電力をユニット電源に戻すように動作する。
これはパッシブ型が抵抗で消費させる電力を、絶縁型DC-DCコンバータで昇圧して他のセルに分配するように動作する。

アクティブセルバランサにはDC-DCコンバータが搭載されているので、デバイスの他に昇圧用のトランスやコイルが実装されている。
アクティブバランサの場合は充電時だけではなく放電時にも動作させる事が出来る。
ただし充電時以外で動作させる場合は、全てのセルの電圧検出が必要になるので、中華アクティブバランサ(DC-DCコンバータ式)は充電時のみの動作になるのかも知れない。
ようするに、パッシブバランサの抵抗をDC-DCコンバータに変えただけだ。

フライングキャパシタ方式は、隣接セルとのバランスをコンデンサの電荷移動によって調整する仕組みだ。

購入したセルバランサが下の写真のものだ。
インダクタンスを使った昇圧方式ではなくフライングキャパシタ方式である。

このアクティブセルバランサがどのように動作するのか測定してみた。
バッテリーの代わりに3台の定電圧電源を使い、それぞれの電圧を変化させてみた。

無負荷時の動作としては最も電圧の高いセルに他のセル電圧を合わせようとしている。
定電圧電源全ての電圧を4.00Vとし、その中の1台の定電圧電源の電圧を下げてもセルバランサから電圧が供給されるので、定電圧電源の電圧は下がらない。

正確には双方向で動作すると思うので、負荷を与えれば隣接セル間のバランスを取ろうと動作するはずだ。

可変負荷がないので電流をどの程度流せるのかのテストはしていないのだが、仕様を信じるなら5Aまでの制御が出来るとなっている。
なおコンデンサバンクのスイッチ速度は測っていない。

パッシブセルバランサー

パッシブセルバランサの場合は、セル電圧が4.2Vになるとそのセルに並列に抵抗が入るような動作になる。
従って満充電に近い状態でのみ動作する。
購入したパッシブセルバランサのデバイスは以下のようになっている。

A2SHBはMOS FETで20Vの耐圧と2.8Aの電流容量がある。
BB3A BKABはセルバランス用電圧コンパレータで、4.200±0.025Vで動作する。

セル電圧が4.200Vになると出力に接続するMOS FETをONにし、セルの両端に抵抗を入れるように動作する。

今回パッシブセルバランサを使わなかったのは、LEV50の電圧範囲が2.75V~4.1Vになっていたことがある。
セルバランサの動作電圧が4.2Vなので、LEV50の仕様を逸脱する。
LEV50の絶対最大定格が分からないのだが、4.2Vを印可した場合は50ms以内にしろという文書もあったので、パッシブセルバランサは使わないことにした。

アクティブセルバランサー

アクティブセルバランサは、基板裏面に結構部品が付いている。
ほぼ正方形のデバイスはMOS FETだろう。
このフライングキャパシタ方式のセルバランサは、電圧のリミッタ的な動作はしない。

コート剤を剥がしてみたのだが、デバイス名が分からない。

例えばBATT1/BATT2/BATT3の3本のバッテリセルが直列接続されている場合、まずコンデンサC1をBATT1に接続してBATT1の電圧にチャージする。
次にそのコンデンサC1をBATT2に接続する。
電圧が同一なら電流は流れないが、電圧が異なればコンデンサC1からBATT2に電流が流れる。
これを高速で繰り返すのが原理であり、従って隣接するセルとのバランスを取るような動作になる。
これがBATT2に対しても、BATT3に対しても行われるので、全てのセル電圧が同じになるというわけだ。

これはあくまでも概念であって、実際の回路は異なるしリレーが動いているわけではない。

このキャパシタ方式は常時稼働させることが出来るのと、DC-DCコンバータ方式よりも自己消費電流が小さいメリットがある。
しかしセルがアンバランスの時に、コンデンサには電流が多く流れることになりコンデンサの寿命を縮める。

余談ではあるが、テスラ製EVの初期モデルでは、自動車を稼働させていない状態でもバッテリーが減るとレポートされていた。
テスラによればバッテリー寿命を最大限にするための仕組みが動作しているとの事で、セルバランサがそれなりに電力を消費していたとも考えられる。
セルバランスが崩れた状態で、バッテリーユニットの総合電圧だけでバッテリー残量を判断すると、残量が多めに表示される。
その状態でセルバランスを取り直すと、見かけ上の残量は減ったような表示(電圧)になる。

バッテリセルを3直列にして、各セルにセルバランサの線を接続すればバッテリユニットは完成だ。
今回は3直列×4並列なので、合計容量は200Ahになる。
セルバランサは2つ購入したので、LEV50を2並列にしたものを3直列にして、これに1台のセルバランサを付けた。
さらにその2組を並列にして200Ah仕様にした。

チャージコントローラ最初の設定

チャージコントローラはLi-ionバッテリーモードがあるので、これを使用した。

チャージコントローラの電圧精度がどのくらいあるのか、仕様に書かれていない。
設定画面では0.01V単位で変更が出来るのだが、だからといって0.01Vの確度があるとは限らない。
そこで充電終止電圧は12.20V(セル電圧4.067V)に設定した。
精度の問題があるので、フル充電になった時の電圧を測った上で微調整する必要がある。
放電終止電圧は10.8V(セル電圧3.5V)とした。
使用上は2.75Vまで使えるのだが、セル電圧が3.5Vを下回ると急激にバッテリー電圧が下がるので、ギリギリまで使っても余り意味は無い。

アクティブセルバランサはそれ自体が電流を消費している(消費電流は測れていない)ので、その余剰分も残す感じで設定した。
セル電圧3.5Vでバッテリーの残容量は18%位になる。

Li-ionバッテリー用の設定として温度リミッタなどが設定出来る。
現在は-10℃以下か50℃以上の場合は充電をカットするように設定している。

小雨の降っている日の充電量カーブを見てみる。
MPPTチャージコントローラなのでソーラーパネルの電圧を降圧してバッテリーに供給しており、ソーラーパネルの電流よりバッテリーへの充電電流が多いのが分かる。
鉛バッテリーの場合はソーラーパネルの電圧とバッテリーの電圧が近いため、電流値にこれほどの差は無かった。

晴天時に充電電流変化を見ると、Li-ionバッテリー用の充電プロファイルがあるのかな?とも思えるカーブになった。
初期状態では23A程度の充電電流が流れるがその後減少、しばらく一定値を保った後で更に減少した。

いったん充電電流が減少した状態から充電電圧等のパラメタを変更すると、再度充電電流は25A程度まで上昇した。
内部のプロファイル制御がリセットされたのだろう。
この辺りの制御に関してはマニュアルにも説明がなく、実験的に各電圧を決めていくしかない。

チャージコントローラの電圧計にも誤差があり、又それは温度によっても変化するはずだ。
この辺りを見ながら、バッテリーの絶対最大定格をオーバしないように設定していくしかない。

チャージコントローラの問題点

チャージコントローラからバッテリーまでの線による電圧降下が問題になる。
チャージコントローラ自身の設定誤差もあるのだが、12V系と言う事で電流が大きいので線抵抗が馬鹿に出来ない。
チャージコントローラでの表示電圧が12.20V、チャージコントローラでの充電電流表示が16.68Aのとき、クランプメータでの電流値の読みが16.92A、DMMによるバッテリー端電圧の測定値が11.9261Vだった。

電流が多く流れている時にはチャージコントローラとバッテリーの電圧差が大きく、電流が減ると電線での電圧降下が少なくなるので値が近づく。
これは少々困った問題だ。

このチャージコントローラを使う限り、いかなる場合でもバッテリーユニット電圧が12.300Vを超えないようにするしかない。
設定電圧を下げると充電電流が減少するので充電効率が落ちる。
また場合によっては充電率が上がらなくなるので、実質容量が減少する。
現状で出来る事は接続ケーブルを太くして電圧降下の影響を小さくする位しかない。
ケーブルの最大太さは6AWG(16mm2)となっている。

正確な電流計が欲しい所だが、10A以上の測れる電流計はこのクランプメータしか手元にはない。

充電電流が減少すると線抵抗による電圧ドロップが少なくなり、バッテリー電圧が上がる方向だ。
バッテリー側に充電制御回路があれば良いのだが、そうではないので現状では線を太くする以外にはない。
もう一つはバッテリー電圧をリモートセンスする方法だが、これにはチャージコントローラの改造が必要になる。

チャージコントローラの改造

チャージコントローラが読むバッテリーの電圧は、チャージコントローラ内の電圧だ。
一方でバッテリーの電圧はバッテリーの端子の電圧であり、チャージコントローラで読む電圧とは異なる。

ソーラーパネル接続用として売られている14AWGの電線を4m使って接続して30Aの電流を流すと、電線による電圧降下だけでバッテリー端の電圧とチャージコントローラ端の電圧に1.92Vの差が生まれる。
実際には端子との接触抵抗もあるので2V以上の電位差になってしまう。

6AWGの線はかなり太いが、それでも接触抵抗を含めると0.5V程度の電圧降下になる。

鉛バッテリーであればたかが0.5Vなのだが、Li-ionバッテリーにとっての0.5Vは大きい。
LEV50は4.1Vで100%充電になるが、4.2Vの印可可能時間は50msしかない。
Li-ionバッテリーの電圧制御精度は±25mV以下が望ましいとしているメーカもあり、充電制御用のデバイスも±20mV以下の電圧精度のものが多い。
3個直列の場合は12.3V±75mV程度に制御したい所である。
12.0Vでは100%充電にならず、12.3Vで満充電となり、12.3V以上の電圧を加えてはいけない。

下のグラフはLEV50の充電特性だ。
充電終止電圧を12.0V(セル電圧4.0V)としたときのSOC(充電率)は60%でしかない。
12.3V(セル電圧4.1V)に達した後も、徐々に容量が増えている事が分かる。
トリクル充電により充電率が上がる事になる。

線抵抗によるドロップなので電流が大きいほど電圧降下が大きくなり、充電時に電圧を設定すると、充電電流が減少したりフロート充電時に規定電圧を超える。
充電電流減少時の電圧を基準とすると、充電時には電圧降下が起きるので充電が遅くなる。

線を太くすれば電圧降下は小さくなるが、太い線にも限界がある。
そこでチャージコントローラから線を引っ張り出して、パワー系の線とは別にバッテリー電圧をセンシングしようと考えた。
しかしGNDが共通なので、12V側のセンシングは出来てもGND側の電圧降下がキャンセル出来ない。
12V側もGND側もリモート選すする為には、チャージコントローラ側にインスツルメンテーションアンプを付け、差動入力にしなければいけない。

チャージコントローラにはSMT32F030C8Tが実装されていて、これには12bitのADCが内蔵されている。
ADCは8チャネルあるので、その中のいくつかのチャネルが使われている事になる。
と言っても配線を追うのは余りに面倒だ…
しかし配線を追わなければ何も出来ない。

面倒だが、CPUのピンから順に回路を追っていく事にした。

配線を追った結果以下のようになっていた。

ADチャネルピン番号信号
111バッテリー電圧
212外部温度センサ
313不明(パネル電圧かパネル電流か充電電流)
414内部温度センサ
515未接続
616LCD(ロジックポートか)
717不明(パネル電圧かパネル電流か充電電流)
818LM2901に接続されている

表にするのは簡単だが、追うのは面倒だった。
チャネル1がバッテリー電圧だと分かったので、他は深く追求していない。
各電圧や電流値を変えながらCPUのピンの電圧をチェックすれば分かる事だが、バッテリー電圧検出回路以外に欲しい情報は無い。
チャネル1は71.5kΩと3.4kΩの抵抗で分圧されているので、ADCに入力されるのはバッテリー電圧の1/22という事になる。
その分圧抵抗の部分のパターンをカットして線を引き出す。

パターンがなかなか切れなかったのだが、銅箔の厚い基板が使われているのか。

下の図の一番上はノーマルの状態だ。
チャージコントローラとバッテリーの間には配線抵抗があり、電圧降下分の誤差が出る。
図の中央は+側だけを別の選で引いたもので、配線抵抗の片側はキャンセル出来る。
しかしGNDは共通なので、別に線を引くことは出来ない。
そこで一番下の図のように、インスツルメンテーションアンプを入れる訳だ。

インスツルメンテーションアンプはLT1167を使用した。
これはVdd-2.3VからVss+2.3Vまでスイング出来るものだ。
電源電圧を±15Vで動作させると、上限電圧は12.7Vになる。
そこで±15VのDC-DCコンバータに3VのDC-DCコンバータを直列接続し、+18V -15Vで動作させる事にした。
-3V +30Vで動作させれば24V系でも使うことが出来る。

24V系かそれ以上の電圧用としては、インスツルメンテーションアンプの入力を分圧し、インスツルメンテーションアンプにゲインを持たせる方法もある。
分圧する場合は精度の高い抵抗を使う必要がある。

回路は最小限であり、デバイス保護などは付けていない。
バッテリーまでの配線が長い場合などは、ダイオードなどで保護回路を入れる必要がある。
誘導雷などによってインスツルメンテーションアンプが壊れる可能性があるからだ。

インスツルメンテーションアンプと、それ用の電源は空中配線した。
基板を使うほどでもないかなと思ったのだが、このDC-DCコンバータはブリーダ抵抗がないと電圧が上がりすぎてしまい、1kΩを付ける羽目になった。
このDC-DCコンバータはオープンループで、二次側は整流と平滑のみである。
従ってレギュレーションも余り良くなく、新たに調達するのであればコーセルのMGSシリーズなど、安定化制御されているものをお勧めする。

DC-DCコンバータの入力は5Vなので、バッテリー端子から7805で5Vを作った。
チャージコントローラ内にも5Vはあるので、そこから取れるかも知れない。

改造によってバッテリー電圧の独立センシングが可能となり、電線の電圧降下が無視出来るようになった。
絶対誤差は12.00V時に50mV程度ある。
CPUのADCには補正機能があるのだが、補正はユーザに開放されておらず調整は出来ない。

この誤差がゲイン誤差なのかオフセット誤差なのかだが、オフセット誤差であればその分設定をオフセットすれば良いし、インスツルメンテーションアンプにオフセット調整を付ける手もある。
ゲイン誤差だとすると分圧抵抗を微調整するか、高精度抵抗に変更するしかない。
電圧を変化させてみてみると、ゲイン誤差ではないかと思われた。

ただ周囲温度などによる誤差なども見ていく必要があり、現状で校正はしていない。
重要なのは充電終止電圧なので、そのポイントで電圧を合わせれば(実電圧との差異があっても)問題はない。

電圧測定には精度が必要

バッテリー電圧の計測は重要なので、少なくとも10mV単位が正確な電圧計が必要だ。

最近の電圧計は表示桁数が多いのだが、確度が伴っていない場合がある。
普段使用しているFUKE111は1年以内の保証確度が±0.7%±2Digitとなっている。
表示では11.98Vなので、誤差を考えると最小は11.87Vで最大は12.08Vとなる。
HPの34401Aの確度は0.0035%なので、11.95993Vに対して11.95951V~12.00179Vの範囲に入る。

セル単位で計測する場合にしても4Vに対して10mVの計測が必要なので、確度としては0.25%が、12V計を計測する場合は0.08%位の確度が必要になる。
直列接続でも10mV精度を求めるのは、セルバランスの関係ではないかと思うのだが定かではない。

この精度のハンディテスタだとPC700(0.06%+2)やFLUKE 87V(0.05%+1)が必要だ。
ベンチ型だとOWONのXDM1041が比較的安い。

安価なマルチメータを校正したら使えるかというと、そうではない。
確度の保証とは経時変化や温度変化に対する保証値なので、安価なマルチメータを校正したとしてもその校正した時の精度が持続出来る保証がない。
(大抵はすぐ狂う)

電圧の判定であれば、セルバランス用ICと分圧抵抗で実現出来る。
分圧抵抗を75.2kΩ(75kΩと200Ωの直列)と3.9kΩにすると、入力電圧が12.3Vを超えるとLEDが点灯する。
4セルの16.4Vであれば、抵抗は18kΩと6.2kΩになる。
7セルの28.7Vの場合は、抵抗は36.15kΩ(36kΩ+150Ω)と6.2kΩになる。
分圧抵抗は高精度抵抗が必要だ。

34401AのデータをPCで取得

34401AはHP-IBかRS-232Cでリモート制御が可能なので、RS-232C-USBケーブルでPCに接続し、ログを取得してチャージコントローラの設定を行った。
特に日が差したり薄曇りになったりする時には、充電電流が大きく変化するのでその時の電圧などもチェックした。

RS-232Cからのデータ取得はKeysightのIOライブラリが便利に使え、簡単な設定でデータの取得が可能になる。
IOライブラリはEXCELのVBA経由でデータインタフェースの出来るモジュールも付属してくるので、VBA経由でEXCELにデータを吐き出す事が出来る。

EXCELとのインタフェース部分はこちらのページのソースをほぼそのまま使わせて頂いた。
ただしEXCEL上の停止ボタンを押してもVBAは止まらない。
VBAの画面のストップボタン(四角のアイコンのボタン)をクリックする必要がある。
34401Aの制御のソースを一応載せておく。

Private Declare PtrSafe Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
Public StopMeas As Boolean

Sub Meas()
    ' 接続を設定
    Dim RM As New VisaComLib.ResourceManager
    Dim DMM As New VisaComLib.FormattedIO488
    ' 変数の宣言
    Dim HumTempData As Variant, GetSerial As String
    Dim i As Long, j As Long: i = 0
    Dim StartTime As Date: StartTime = Int(Now() * 1440) / 1440     ' 時刻取得
    StopMeas = False
    
    Worksheets("Sheet1").Range(Cells(2, 1), Cells(Rows.Count, 3)).Clear
        
    Set DMM.IO = RM.Open("ASRL4::INSTR") ' ASRL番号で34401Aと接続
    Sleep (300) ' 連続してコマンドを送るとエラーになる

    UserForm1.Show vbModeless
    DMM.WriteString "SYST:REM" 'リモートモード
    Sleep (300)
    DMM.WriteString "SENS:FUNC 'VOLT:DC'" 'DC電圧測定モード
    Sleep (300)
    MsgBox "データ取得を開始します"
    Do
        ' 毎分1回計測
        For j = 1 To 60
            DoEvents
            Application.Wait StartTime + (i + j / 60) / 1440
            If StopMeas = True Then GoTo extlabel
            'If MsgBox("中断しますか?", vbQuestion + vbYesNo) = vbYes Then Exit Do
            Next j
        
        ' データ読み込み
        DMM.WriteString "READ?"
        GetSerial = DMM.ReadString()
                
        ' セルに取得時間とデータを書き込む
        Cells(i + 2, 1) = Format(Now(), "yyyy/mm/dd hh:mm:ss")
        Cells(i + 2, 2) = Format(GetSerial, "00.000000")
        'Cells(i + 2, 3) = Second(Time)
        
        i = i + 1
    Loop
    
extlabel:
    
    ' ローカルモードに戻す
    MsgBox "制御をローカルに戻します"
    DMM.WriteString "SYST:LOC"
    Sleep (300)

    Unload UserForm1
    DMM.IO.Close
    Set DMM = Nothing
    Set RM = Nothing
End Sub

下のグラフは生のデータを折れ線にしたものなので少しガタガタしている。
最下位は10μVなのでノイズの影響を受けやすいのと、負荷電流の変動が少しある。

これは負荷に約3Aの電流を流した状態で、1分ごとにデータを取得したものだ。
1時間で約0.05Vほど電圧が下がってきている。

チャージコントローラの設定と電圧上昇カーブ

晴れた日の電圧カーブが下のものだ。
陽の当たっていない時には下がっていたバッテリー電圧が、日照とともに上がり始める。
最大電圧が12.316Vまで上がって、チャージコントローラはバッテリーを切り離した。

バッテリーが切り離されて電圧が下がっているのが分かる。
充電率が100%に達していないので、充電をカットするとバッテリー電圧が下がる。
本来は12.3V以上まで充電されない筈(設定)なのだが、何故かカットオフ電圧にまで達している。
ただし12.3V以上でカットオフが働く事は確認出来た。

このカーブはチャージコントローラ改造後のものである。
電圧誤差が50mVほどあるので、過電圧保護を12.27V(バッテリー電圧12.32V)に設定した。
実際のカットオフが12.316Vなので計算通りである。
チャージリミット電圧は12.26V(バッテリー電圧12.31V)にしたのだが、これを超えている。
ブーストチャージは12.25V(12.30V)、フロートチャージは12.24V(12.29V)なので、設定上はカットオフ電圧には達しないはずなのだ。

チャージコントローラの電圧を見ると、ピークは12.37Vと記録されている。
これはバッテリー端で12.42Vになった事を示すが、DMMではその電圧は記録されていない。
チャージコントローラは瞬時値を読んでいるので、ノイズなどで読み値に誤差が生じる。
これが原因で制御が上手く行かない可能性もある。

チャージコントローラのパラメタを変更しても、即座に反映されない感じがする。
極端に値を変えるとそれっぽい動きをするのだが、微調整が効かない。
バッテリーやソーラパネルをいったん外せば良いのだが、面倒なんだなぁ。

現時点での設定では以下のようなバッテリー電圧になっている。
チャージコントローラ上での最大充電電圧は12.22V(実電圧で12.27V)に設定した場合だ。

最大電圧が12.31Vまで上がりオーバシュートしてしまっているのだが、その後12.27V~12.28Vになった。

上の電圧カーブを、チャージコントローラの電流カーブに重ねたものが以下だ。

グラフがギザギザなのは晴れたり曇ったりしている日だった為である。
いったんグラフがゼロに落ちているのは、チャージコントローラをリセットする為にソーラーパネルとバッテリーの接続を外した部分だ。

バッテリー電圧が12.3Vまで上昇すると、充電電流を減らして電圧上昇が防がれるのだが、その後も充電電流は減ったままでバッテリー電圧が徐々に下がってくる。
ソーラーパネルの負荷も下がったままなので、発電していないのではなく充電電流が減ったままになっている事が分かる。

本来であれば12.3Vを維持するように充電を続けて欲しいのだが、実際には12.25V~12.27Vあたりになる。

別の日の電圧カーブをが以下である。
一番上:電圧カーブ
二番目:電力カーブ
三番目:電流カーブ
四番目:バッテリー電圧計測値

バッテリー電圧が12.3V付近になると、ソーラパネル電圧が上昇し始める。
これは充電電流制限が行われ始めた事を示す。
充電電流も減少に転じている。
これでバッテリー電圧が12.3Vを維持してくれれば良いのだが、12.25V前後まで下がってしまう。
これはチャージコントローラの制御が適切ではないからだ。
設定電圧を上げるとオーバシュートを許す事になり、これはバッテリー的にはダメだ。

もう一つの問題は充電をやめてしまう事である。
過電圧で遮断されたわけではないのに充電されなくなり、そうすると負荷に流れる電流で充電率下減っていく。
未だ陽が高く、ソーラーパネル自体は発電しているのにだ。

下のグラフで13時頃にいったん充電電流が増えるが、その後マイナスになる。
マイナスとは充電されずにバッテリーから負荷に放電している状態だ。
(後のテストで、これはおそらく過電圧による保護が働きバッテリーを切断したのではないかと予想された)

この状態でいったんチャージコントローラへの電源供給を絶ち、再度電源供給すると正常動作に戻る。
正常動作に戻れば充電電流は一気に増え、充電再開となる。
チャージコントローラを外部からリセットする手段がないので、リセットスイッチを付けないと、一々電源を切らなければならない。

Li-ionバッテリーはCV&CC制御で充電すれば良い。
充電初期はバッテリーの最大充電電流に合わせた定電流で、充電終止電圧が近づいた場合は定電圧充電をする。
このチャージコントローラの電圧制御は、ソーラーパネルの負荷を変化させる方式なので定電圧に固定しにくい事情はあると思う。
リチウム系バッテリーは意識されているが、制御的には今ひとつだと言わざるを得ない。

充電の中断が何故起きるのかは(チャージコントローラの処理の問題なので)分からないが、ソーラーパネルの電圧が上がっている状態で充電電流がゼロ以下になったら、チャージコントローラをリセットするような仕組みを組み込むしかないかも知れない。

パラメタを少し変えて過電圧切断の設定値も上げた。
チャージコントローラの設定値として充電電圧が12.22V(バッテリー端で12.27V)、チャージリミットを12.24V(12.29V)、過電圧切断を12.30V(12.35V)にした。
この状態で試したのが以下のグラフだ。
電流カーブと電圧のグラフを重ねた。

これでも過電圧による切断が起きた。
切断は充電終期で、バッテリー電圧が12.29V~12.30Vになったあたりで起きる。
フロート充電時に電流を絞りきれずにバッテリー電圧が上昇し、過電圧による切断が起きると言う事は、充電制御の電圧は守られないが過電圧制御は正確に働くわけだ。
上のグラフを取った時の最大電圧は、バッテリー端で12.32496Vまで上がった。

別の日に取ったデータが以下だ。
晴れたり曇ったりの日だった。
設定値はチャージコントローラ値でBoostもFloatも12.20V、Limitを12.21VにしてOverVoltDisconnectを12.30Vとした。

チャージコントローラの各設定を一定にしたとしても、ソーラーパネルからの電圧によって充電の具合が変わってしまう。
ソーラーパネルからの電圧が高いと、フロート充電電圧を超えても数アンペアの電流が流れ続ける。
日照の変化によってめまぐるしくソーラパネルの出力が変わるような場合、チャージコントローラの制御はその変化に追いつく事が出来ない。
また急にソーラーパネルの出力が下がったような場合は、チャージコントローラはバッテリーへの電力供給を停止したままになってしまう。

鉛バッテリー用としては良いのかも知れないが、Li-ionあるいはFiFePO4バッテリーを使う上で、このチャージコントローラには不安がある。
現時点ではバッテリー電圧をDMMでモニタし、充電終止電圧を超えていないかをチェックするようにしている。
また充電終止電圧を超えた場合は、負荷を100W(浄化槽用のポンプ)ほど増やして発電電力を消費するような仕組みにしている。

バッテリー同士の配線

圧着端子が未入手のため、バッテリー同士をFケーブルの線で接続した。
圧着端子はメーカ欠品が続いているそうで、小分けで買う価格は従来価格の数倍だとか。
当初箱入りを注文していたのだが、1ヶ月以上経っても納期未定なのでキャンセルせざるを得なかった。
撚線の接続には圧着端子が必要なので小袋入りを買い、バッテリー同士はFケーブルの中の線を2並列で使う事にした。
(バッテリーが2並列なので、両方のねじにジャンパ)

2mmのFケーブルの線抵抗は、1mあたり約5.65mΩある。
ここに30Aの電流を流すと約170mVの電圧降下となり、セルバランサが正常に動作しなくなる。
線の長さが10cmだったとしても17mVの電圧降下だ。
セルバランサのバランス精度は±20mV程度なので、線抵抗が大きいとセルバランサが正常に動作しなくなる。

充電電流は25A~30Aに達するので、この接続ケーブル(2カ所×2並列)による電圧降下は15mV程度になっているはずだ。

循環電流論

一部で循環電流論がささやかれる。
これは何かというと、バッテリー並列接続した場合に並列接続した同士のバッテリー電圧が異なると、電圧の高いバッテリーが放電して電圧の低いバッテリーが充電されるというもの。
これは当たり前の話で、セルバランサはそのように動作する。
従って循環電流論者に言わせれば、セルバランサは循環電流発生器だから使うべきではないとなってしまう。
特にフライングキャパシタ方式のセルバランサの動作原理などを知ったら、循環電流論者は卒倒してしまうに違いない。

ここからがオカルトっぽい話で、電圧の高いバッテリーから電圧の低いバッテリーに電流が流れ、電圧の低いバッテリーの電圧が上がると、今度はその電圧の高いバッテリーから逆に電流が流れて(元々は電圧の高かった)バッテリーに充電され、それが繰り返されてバッテリー容量が消費されるというものだ。

電気の分かる人ならすぐ分かるが、並列接続されたバッテリーの電圧は同一になる。
従って一番上の図のように電流は流れるが、中央の図のように電圧が反転する事はあり得ない。

また電圧の異なるバッテリーを並列に接続した場合は電流が流れ続ける。
例えば12Vのバッテリーと10Vのバッテリーを並列接続すると、当たり前の事ながら12Vのバッテリーは10Vのバッテリーに電流を流し続ける。

乾電池の初期電圧は最大でも約1.6Vだが、例えばオキシライド乾電池は1.7V近くある。
これらを(同じ電池だと思って)並列に接続すると、オキシライド乾電池からそうでない乾電池の方に電流が流れ続ける。
同じようにLi-ionバッテリーとLiFePO4バッテリーを並列にするのもダメだ。

しかし通常同一のバッテリー(鉛バッテリー同士やLi-ionバッテリー同士)の並列接続に問題はない。
データセンターのバックアップバッテリーには2Vの鉛電池が使われているのだが、それらがバスバー的な金属板で、多数直並列に接続されている。
直列数は24個が一般的で、並列数は数十個になる。
鉛蓄電池なのでセルごとにバランスを取る仕組みは付いていない。

余程特性の異なるバッテリーを並列にすれば、バッテリー間で電流が流れ続けるかも知れないが、通常そのような事は起きない。
もしそのような事が起きるとすれば、それは接続したバッテリー自体に問題があると考えられる。

なおバッテリーに直列にダイオードを入れる方法は特許だそうだ。
でもその特許に抵触しそうなものが売られている所も面白い。

インバータ問題

DC12VからAC100を作るインバータには大橋工業のものを使っている。
これはインダクティブ負荷にも強く、連続稼働で5年以上経つが問題は起きていない。
このインバータは電圧が10.5V程度になるとアラートを出して停止、復活する電圧は12Vだ。
過電圧保護もあり、16V程度を加えると停止する。

鉛バッテリー用の電圧設定なので、Li-ion3直列ではアラート電圧が高すぎる。
そこでその電圧を変更出来ないか見てみた。

内部構成はDC-DCコンバータと、PWM正弦波変換器からなっている。
DC-DCコンバータドライバや電源電圧チェック関係は、サブ基板に実装されている。

両面基板でデバイス名が消されているなど、回路がよく分からない。
電圧チェック用にウインドゥコンパレータが構成されているのかと思ったが、LM386はその用途ではなさそうだ。

減電圧アラートは最初は断続ビープ音で、更に電圧が下がると連続ビープ音になり、その後DC-DCコンバータが停止する。
電圧チェックが複数段になっているので、専用のデバイスが使われている可能性がある。
一応各部のチェックはしてみたが、よく分からなかった。

とりあえず停止させないようにするには、この基板の電源を別電源から供給する事だ。
DC-DCコンバータには常時通電されていて、FETのドライブがこの基板で行われている。
従ってこの基板を動作させるにはたいした電流は要らない。

内部には余裕があるので、入力12V→出力14V程度に設定したDC-DCコンバータを入れるのが簡単だ。

にほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村

コメント

タイトルとURLをコピーしました