(57)【特許請求の範囲】
【請求項１】
直列に接続された複数の蓄電素子と、前記各蓄電素子と並列に接続されたバイパス回路とをそれぞれ有し、並列に接続された複数の蓄電装置と、
前記複数の蓄電装置のそれぞれに設けられており、前記各蓄電装置を充放電の電流経路と接続する状態と、前記各蓄電装置を前記電流経路から切り離す状態との間で切り替わる複数のリレーと、
前記複数の蓄電装置における充放電を制御するコントローラと、を有し、
前記コントローラは、
すべての前記蓄電装置の放電を開始し、前記バイパス回路を用いて、放電が完了した前記蓄電素子を前記電流経路から切り離した後、前記リレーを用いて、放電が完了した前記蓄電装置を前記電流経路から切り離し、
すべての前記蓄電装置の充電を開始し、前記バイパス回路を用いて、充電が完了した前記蓄電素子を前記電流経路から切り離した後、前記リレーを用いて、充電が完了した前記蓄電装置を前記電流経路から切り離し、
すべての前記蓄電装置を放電した後に充電するとき、前記電流経路から切り離すまでの電流値を積算することにより、前記各蓄電素子および前記各蓄電装置の満充電容量を算出する、
ことを特徴とする蓄電システム。
【請求項２】
前記コントローラは、前記蓄電素子のＳＯＣが０％に到達したことを判別したときに、前記バイパス回路を用いて、ＳＯＣが０％に到達した前記蓄電素子を前記電流経路から切り離すことを特徴とする請求項１に記載の蓄電システム。
【請求項３】
前記コントローラは、所定時間に対する前記蓄電素子の電圧低下量又は、前記蓄電素子の放電終止電圧を用いて、前記蓄電素子のＳＯＣが０％に到達したことを判別することを特徴とする請求項２に記載の蓄電システム。
【請求項４】
前記コントローラは、前記複数の蓄電装置を放電するとき、前記各蓄電装置に含まれる、すべての前記蓄電素子が前記電流経路から切り離されていることに応じて、前記蓄電装置の放電が完了したことを判別することを特徴とする請求項１から３のいずれか１つに記載の蓄電システム。
【請求項５】
前記コントローラは、前記蓄電素子のＳＯＣが１００％に到達したことを判別したときに、前記バイパス回路を用いて、ＳＯＣが１００％に到達した前記蓄電素子を前記電流経路から切り離すことを特徴とする請求項１から４のいずれか１つに記載の蓄電システム。
【請求項６】
前記コントローラは、所定時間に対する前記蓄電素子の電圧低下量、所定時間に対する前記蓄電素子の抵抗上昇量又は、所定時間に対する前記蓄電素子の温度上昇量を用いて、前記蓄電素子のＳＯＣが１００％に到達したことを判別することを特徴とする請求項５に記載の蓄電システム。
【請求項７】
前記コントローラは、前記複数の蓄電装置を充電するとき、前記各蓄電装置に含まれる、すべての前記蓄電素子が前記電流経路から切り離されていることに応じて、前記蓄電装置の充電が完了したことを判別することを特徴とする請求項１から６のいずれか１つに記載の蓄電システム。
【請求項８】
直列に接続された複数の蓄電素子と、前記各蓄電素子と並列に接続されたバイパス回路とをそれぞれ有し、並列に接続された複数の蓄電装置の充放電を制御する制御方法において、
すべての前記蓄電装置の放電を開始し、前記バイパス回路を用いて、放電が完了した前記蓄電素子を前記電流経路から切り離した後、前記各蓄電装置に設けられたリレーを用いて、放電が完了した前記蓄電装置を前記電流経路から切り離し、
すべての前記蓄電装置の充電を開始し、前記バイパス回路を用いて、充電が完了した前記蓄電素子を前記電流経路から切り離した後、前記リレーを用いて、充電が完了した前記蓄電装置を前記電流経路から切り離し、
すべての前記蓄電装置を放電した後に充電するとき、前記電流経路から切り離すまでの電流値を積算することにより、前記各蓄電素子および前記各蓄電装置の満充電容量を算出する、
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の蓄電素子が直列に接続された蓄電装置を複数備えた蓄電システムであって、各蓄電素子や各蓄電装置の充放電を効率良く行うことができる蓄電システムに関する。
【背景技術】
【０００２】
複数の単電池を直列に接続することによって、組電池を構成しているものがある。ここで、組電池を使用し続けると、複数の単電池における劣化のバラツキなどによって、複数の単電池において、ＳＯＣのバラツキが発生することがある。また、使用済みの複数の単電池を用いて、組電池を構成したときには、複数の単電池において、ＳＯＣのバラツキが発生しやすいことがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−０９９４９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
組電池を構成する複数の単電池においては、ＳＯＣ（State of Charge）のバラツキが発生していると、最も低いＳＯＣを示す単電池を基準として、組電池の放電が制限されてしまったり、最も高いＳＯＣを示す単電池を基準として、組電池の充電が制限されてしまったりする。上述したように組電池の放電が制限されてしまうと、組電池には、放電しきれていない単電池が残ってしまうことがある。また、上述したように組電池の充電が制限されてしまうと、組電池には、充電しきれていない単電池が残ってしまうことがある。
【課題を解決するための手段】
【０００５】
本願第１の発明である蓄電システムは、並列に接続された複数の蓄電装置と、複数の蓄電装置のそれぞれに設けられた複数のリレーと、複数の蓄電装置における充放電を制御するコントローラとを有する。各蓄電装置は、直列に接続された複数の蓄電素子と、各蓄電素子と並列に接続されたバイパス回路とを有する。各リレーは、各蓄電装置を充放電の電流経路と接続する状態と、各蓄電装置を電流経路から切り離す状態との間で切り替わる。
【０００６】
コントローラは、すべての蓄電装置の放電を開始し、バイパス回路を用いて、放電が完了した蓄電素子を電流経路から切り離した後、リレーを用いて、放電が完了した蓄電装置を電流経路から切り離す。また、コントローラは、すべての蓄電装置の充電を開始し、バイパス回路を用いて、充電が完了した蓄電素子を電流経路から切り離した後、リレーを用いて、充電が完了した蓄電装置を電流経路から切り離す。さらに、コントローラは、すべての蓄電装置を放電した後に充電するとき、電流経路から切り離すまでの電流値を積算することにより、各蓄電素子および各蓄電装置の満充電容量を算出する。
【０００７】
本願第１の発明によれば、バイパス回路を用いることにより、各蓄電装置に含まれる各蓄電素子を十分に放電したり、十分に充電したりすることができる。ここで、蓄電装置の放電によって、特定の蓄電素子に蓄えられた電気エネルギを十分に放出しても、他の蓄電素子には、未だ電気エネルギが蓄えられていることがある。この場合には、バイパス回路を用いて、特定の蓄電素子を放電しないことにより、他の蓄電素子だけを放電することができる。これにより、蓄電装置に含まれる、すべての蓄電素子を十分に放電することができる。
【０００８】
また、蓄電装置の充電によって、特定の蓄電素子を満充電状態にしても、他の蓄電素子が満充電状態となっていないことがある。この場合には、バイパス回路を用いて、特定の蓄電素子を充電しないことにより、他の蓄電素子だけを充電することができる。これにより、蓄電装置に含まれる、すべての蓄電素子を満充電状態とすることができる。
【０００９】
また、本願第１の発明によれば、リレーを駆動することにより、複数の蓄電装置のそれぞれを十分に放電したり、十分に充電したりすることができる。複数の蓄電装置の放電によって、特定の蓄電装置に蓄えられた電気エネルギを十分に放出しても、他の蓄電装置には、未だ電気エネルギが蓄えられていることがある。この場合には、リレーを用いて、特定の蓄電装置を放電しないことにより、他の蓄電装置だけを放電することができる。これにより、すべての蓄電装置を十分に放電することができる。
【００１０】
また、複数の蓄電装置の充電によって、特定の蓄電装置を満充電状態にしても、他の蓄電装置が満充電状態となっていないことがある。この場合には、リレーを用いて、特定の蓄電装置を充電しないことにより、他の蓄電装置だけを充電することができる。これにより、すべての蓄電装置を満充電状態とすることができる。
【００１１】
上述したように、各蓄電装置に含まれる各蓄電素子を十分に放電したり、十分に充電したりすることにより、各蓄電素子の満充電容量を精度良く算出することができる。すなわち、各蓄電素子の放電を完了した後に、各蓄電素子を満充電状態となるまで充電することにより、各蓄電素子の満充電容量を測定することができる。
【００１２】
同様に、各蓄電装置を十分に放電したり、十分に充電したりすることにより、各蓄電装置の満充電容量を精度良く算出することができる。すなわち、各蓄電装置の放電を完了した後に、各蓄電装置を満充電状態となるまで充電することにより、各蓄電装置の満充電容量を測定することができる。
【００１３】
ここで、蓄電素子のＳＯＣが０％に到達したことを判別したときには、バイパス回路を用いて、ＳＯＣが０％に到達した蓄電素子を電流経路から切り離すことができる。これにより、ＳＯＣが０％に到達した蓄電素子を放電させずに、他の蓄電素子だけを放電させることができる。そして、各蓄電装置に含まれる、すべての蓄電素子を、ＳＯＣが０％に到達するまで放電することができる。
【００１４】
所定時間に対する蓄電素子の電圧低下量又は、蓄電素子の放電終止電圧に着目することにより、蓄電素子のＳＯＣが０％に到達したか否かの判別を行うことができる。蓄電素子のＳＯＣが０％に到達しているときには、これに応じた電圧低下量を示すことがあるため、この電圧低下量を確認することにより、蓄電素子のＳＯＣが０％に到達していることを判別することができる。また、蓄電素子のＳＯＣが０％に到達しているときには、蓄電素子の電圧が放電終止電圧に到達していることになる。このため、蓄電素子の電圧値が放電終止電圧に到達していることを確認することにより、蓄電素子のＳＯＣが０％に到達していることを判別することができる。
【００１５】
各蓄電装置に含まれる蓄電素子は、ＳＯＣが０％に到達することに応じて、電流経路から切り離されることになる。このため、各蓄電装置を構成する、すべての蓄電素子が電流経路から切り離されているときには、蓄電装置の放電が完了していると判別することができる。すなわち、蓄電装置のＳＯＣが０％に到達していることを判別することができる。
【００１６】
蓄電素子のＳＯＣが１００％に到達したことを判別したときには、バイパス回路を用いて、ＳＯＣが１００％に到達した蓄電素子を電流経路から切り離すことができる。これにより、蓄電装置に含まれる、すべての蓄電素子を、ＳＯＣが１００％に到達するまで充電することができる。
【００１７】
所定時間に対する蓄電素子の電圧低下量、所定時間に対する蓄電素子の抵抗上昇量又は、所定時間に対する蓄電素子の温度上昇量に着目することにより、蓄電素子のＳＯＣが１００％に到達したか否かの判別を行うことができる。蓄電素子のＳＯＣが１００％に到達しているときには、これに応じた電圧低下量（抵抗上昇量又は温度上昇量）を示すことがある。このため、電圧低下量（又は抵抗上昇量、温度上昇量）を確認することにより、蓄電素子のＳＯＣが１００％に到達していることを判別することができる。
【００１８】
各蓄電装置に含まれる蓄電素子は、ＳＯＣが１００％に到達することに応じて、電流経路から切り離されることになる。このため、各蓄電装置を構成する、すべての蓄電素子が電流経路から切り離されているときには、蓄電装置の充電が完了していると判別することができる。すなわち、蓄電装置のＳＯＣが１００％に到達していることを判別することができる。
【００１９】
本願第２の発明は、並列に接続された複数の蓄電装置の充放電を制御する制御方法である。各蓄電装置は、本願第１の発明で説明したように、複数の蓄電素子および複数のバイパス回路を有している。ここで、すべての蓄電装置の放電を開始し、バイパス回路を用いて、放電が完了した蓄電素子を電流経路から切り離した後、各蓄電装置に設けられたリレーを用いて、放電が完了した蓄電装置を電流経路から切り離す。
【００２０】
また、すべての蓄電装置の充電を開始し、バイパス回路を用いて、充電が完了した蓄電素子を電流経路から切り離した後、リレーを用いて、充電が完了した蓄電装置を電流経路から切り離す。ここで、すべての蓄電装置を放電した後に充電するとき、電流経路から切り離すまでの電流値を積算することにより、各蓄電素子および各蓄電装置の満充電容量を算出する。本願第２の発明においても、本願第１の発明と同様の効果を得ることができる。
【図面の簡単な説明】
【００２１】
【図１】電池システムの構成を示す概略図である。
【図２】監視ユニットの構成を主に示す図である。
【図３】単電池のバイパス処理を行う回路を示す図である。
【図４】図３において、すべての単電池に電流を流すときの回路構成を示す図である。
【図５】図３において、任意の単電池をバイパス処理するときの回路構成を示す図である。
【図６】すべての単電池やすべての電池パックを放電するときの処理を示すフローチャートである。
【図７】単電池のＳＯＣが０％に到達したことを判別する処理を示すフローチャートである。
【図８】放電時における単電池の電圧変化を示す図である。
【図９】電池パックのＳＯＣが０％に到達したことを判別する処理を示すフローチャートである。
【図１０】電池システムにおいて、すべての電池パックにおけるＳＯＣが０％に到達したことを判別する処理を示すフローチャートである。
【図１１】すべての単電池やすべての電池パックを充電するときの処理を示すフローチャートである。
【図１２】単電池のＳＯＣが１００％に到達したことを判別する処理を示すフローチャートである。
【図１３】充電時における単電池の電圧変化を示す図である。
【図１４】単電池のＳＯＣが１００％に到達したことを判別する処理を示すフローチャートである。
【図１５】充電時における単電池の抵抗変化を示す図である。
【図１６】単電池のＳＯＣが１００％に到達したことを判別する処理を示すフローチャートである。
【図１７】充電時における単電池の温度変化を示す図である。
【図１８】電池パックのＳＯＣが１００％に到達したことを判別する処理を示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明の実施例について説明する。
【実施例１】
【００２３】
本発明の実施例１における電池システム（蓄電システムに相当する）について、図１を用いて説明する。図１は、本実施例における電池システムの構成を示す概略図である。
【００２４】
図１に示す電池システムは、いわゆる定置型の電池システムであり、家屋や商業施設などにおいて、特定の場所に設置されるものである。電池システムは、並列に接続された複数の電池パック（蓄電装置に相当する）Ｂ−１〜Ｂ−ｎを有しており、電池パックの数ｎは、適宜設定することができる。
【００２５】
複数の電池パックＢ−１〜Ｂ−ｎを並列に接続することにより、電池システムの満充電容量を確保することができる。すなわち、複数の電池パックＢ−１〜Ｂ−ｎを並列に接続したときの満充電容量は、複数の電池パックＢ−１〜Ｂ−ｎを直列に接続したときの満充電容量よりも大きくなる。
【００２６】
電池パックＢ−１は、直列に接続された複数の単電池（蓄電素子に相当する）１０を有している。ここで、電池パックＢ−１を構成する単電池１０の数は、適宜設定することができる。単電池１０としては、ニッケル水素電池やリチウムイオン電池といった二次電池を用いることができる。また、二次電池の代わりに、電気二重層キャパシタを用いることもできる。
【００２７】
電池パックＢ−１としては、新たに製造された電池パックＢ−１を用いることもできるし、使用済みの電池パックＢ−１を用いることもできる。使用済みの電池パックＢ−１としては、例えば、車両で用いられた後の電池パックＢ−１を用いることができる。
【００２８】
電池パックＢ−１を車両に搭載したときには、電池パックＢ−１に含まれる任意の単電池１０が劣化したときには、電池パックＢ−１が車両から取り外されることがある。この電池パックＢ−１を本実施例の電池システムで用いることができる。また、使用済みの複数の単電池１０を組み合わせることにより、電池パックＢ−１を構成することがあり、このような電池パックＢ−１を本実施例の電池システムで用いることができる。
【００２９】
電池パックＢ−２〜Ｂ−ｎについても、電池パックＢ−１と同様の構成を有している。すなわち、各電池パックＢ−２〜Ｂ−ｎは、直列に接続された複数の単電池１０を有している。ここで、複数の電池パックＢ−１〜Ｂ−ｎのそれぞれを構成する単電池１０の数は、互いに等しくてもよいし、互いに異なっていてもよい。また、各電池パックＢ−２〜Ｂ−ｎは、新たに製造された電池パックＢ−２〜Ｂ−ｎでもよいし、使用済みの電池パックＢ−２〜Ｂ−ｎでもよい。
【００３０】
複数の電池パックＢ−１〜Ｂ−ｎは、正極ラインＰＬおよび負極ラインＮＬを介して並列に接続されている。正極ラインＰＬは、電池パックＢ−１〜Ｂ−ｎの数だけ分岐しておき、各分岐ラインが各電池パックＢ−１〜Ｂ−ｎの正極端子と接続されている。負極ラインＮＬは、電池パックＢ−１〜Ｂ−ｎの数だけ分岐しており、各分岐ラインが各電池パックＢ−１〜Ｂ−ｎの負極端子と接続されている。
【００３１】
監視ユニット２０は、各電池パックＢ−１〜Ｂ−ｎに設けられており、各電池パックＢ−１〜Ｂ−ｎにおける電圧値を検出して、検出結果をコントローラ４０に出力する。ここで、監視ユニット２０は、各電池パックＢ−１〜Ｂ−ｎの電圧値を検出したり、各電池パックＢ−１〜Ｂ−ｎを構成する単電池１０の電圧値を検出したりする。図２に示すように、監視ユニット２０は、複数の電圧監視ＩＣ（Integrated Circuit）２０ａを有しており、電圧監視ＩＣ２０ａは、各電池パックＢ−１〜Ｂ−ｎに含まれる単電池１０の数だけ設けられている。
【００３２】
電圧監視ＩＣ２０ａは、単電池１０の電圧値を検出し、検出結果をコントローラ４０に出力する。電圧監視ＩＣ２０ａによって検出された各単電池１０の電圧値を加算すれば、各電池パックＢ−１〜Ｂ−ｎの電圧値を算出することもできる。
【００３３】
ここで、各電池パックＢ−１〜Ｂ−ｎを構成する複数の単電池１０が複数の電池ブロック（蓄電素子に相当する）に分けられているときには、各電池ブロックの電圧値を検出することもできる。各電池ブロックは、直列に接続された複数の単電池１０によって構成されており、複数の電池ブロックが直列に接続されることにより、各電池パックＢ−１〜Ｂ−ｎが構成される。電池ブロックの電圧値を検出するとき、電圧監視ＩＣ２０ａは、各電池ブロックに対して設けられることになる。
【００３４】
温度センサ２１は、各電池パックＢ−１〜Ｂ−ｎに対して設けられており、各電池パックＢ−１〜Ｂ−ｎの温度を検出して、検出結果をコントローラ４０に出力する。ここで、各電池パックＢ−１〜Ｂ−ｎに対しては、１つの温度センサ２１を設けることもできるし、複数の温度センサ２１を設けることもできる。複数の温度センサ２１を設けるときには、各単電池１０の温度を検出することができる。
【００３５】
電流センサ２２は、各電池パックＢ−１〜Ｂ−ｎに設けられており、電池パックＢ−１〜Ｂ−ｎの数だけ設けられている。電流センサ２２は、各電池パックＢ−１〜Ｂ−ｎに流れる電流値（充電電流や放電電流）を検出して、検出結果をコントローラ４０に出力する。ここで、電池パックＢ−１〜Ｂ−ｎを放電するときの電流値を正の値とし、電池パックＢ−１〜Ｂ−ｎを充電するときの電流値を負の値とすることができる。
【００３６】
本実施例では、電流センサ２２を負極ラインＮＬに設けているが、これに限るものではない。すなわち、電流センサ２２を用いることにより、各電池パックＢ−１〜Ｂ−ｎに流れる電流値を検出することができればよい。例えば、各電池パックＢ−１〜Ｂ−ｎの正極ラインＰＬに対して、電流センサ２２を設けることができる。
【００３７】
一方、各電池パックＢ−１〜Ｂ−ｎの負極ラインＮＬには、リレーＲ−１〜Ｒ−ｎが設けられており、リレーＲ−１〜Ｒ−ｎは、電池パックＢ−１〜Ｂ−ｎの数だけ設けられている。各リレーＲ−１〜Ｒ−ｎは、コントローラ４０からの制御信号を受けて、オンおよびオフの間で切り替わる。例えば、リレーＲ−１がオンであるときには、電池パックＢ−１を充放電させることができる。また、リレーＲ−１がオフであるときには、充放電の電流経路から電池パックＢ−１が電気的に切り離され、電池パックＢ−１の充放電が行われなくなる。
【００３８】
本実施例では、各電池パックＢ−１〜Ｂ−ｎの負極ラインＮＬに対して、リレーＲ−１〜Ｒ−ｎを設けているが、これに限るものではない。具体的には、各電池パックＢ−１〜Ｂ−ｎの正極ラインＰＬおよび負極ラインＮＬの少なくとも一方に対して、リレーＲ−１〜Ｒ−ｎを設けることができる。各電池パックＢ−１〜Ｂ−ｎに対して各リレーＲ−１〜Ｒ−ｎを設ければ、各リレーＲ−１〜Ｒ−ｎの駆動を制御することにより、複数の電池パックＢ−１〜Ｂ−ｎのうち、任意の電池パックだけを充放電させることができる。
【００３９】
複数の電池パックＢ−１〜Ｂ−ｎは、正極ラインＰＬおよび負極ラインＮＬを介して、ＤＣ／ＤＣコンバータ３１に接続されている。ＤＣ／ＤＣコンバータ３１は、電池パックＢ−１〜Ｂ−ｎの出力電圧を他の電圧値に変換する。インバータ３２は、ＤＣ／ＤＣコンバータ３１から出力された直流電力を交流電力に変換する。インバータ３２から出力された交流電力は、負荷３３に供給される。負荷３３は、インバータ３２の出力電力を受けて動作できるものであればよく、例えば、負荷３３として、家電製品を用いることができる。
【００４０】
また、インバータ３２は、電源３４と接続されており、電源３４から出力された交流電力を直流電力に変換する。電源３４としては、例えば、商用電源を用いることができる。ＤＣ／ＤＣコンバータ３１は、インバータ３２の出力電圧を他の電圧値に変換する。ＤＣ／ＤＣコンバータ３１の出力電力は、電池パックＢ−１〜Ｂ−ｎに供給され、電池パックＢ−１〜Ｂ−ｎを充電することができる。
【００４１】
コントローラ４０は、メモリ４１を有しており、メモリ４１には、コントローラ４０が所定の処理（特に、本実施例で説明する処理）を行うときに用いられる情報が記憶されている。本実施例では、メモリ４１がコントローラ４０に内蔵されているが、コントローラ４０の外部にメモリ４１を設けることもできる。
【００４２】
次に、本実施例における電池パックＢ−１の回路構成について、図３を用いて説明する。図３は、電池パックＢ−１の一部における回路構成を示している。ここで、電池パックＢ−２〜Ｂ−ｎについても、図３に示す構成を有している。
【００４３】
電池パックＢ−１を構成する各単電池１０には、バイパス回路１１が設けられている。バイパス回路１１は、電池パックＢ−１の充放電時における電流を単電池１０に流さないときに用いられる。バイパス回路１１の一端と、単電池１０の負極端子との間には、スイッチ１２が設けられている。また、バイパス回路１１には、スイッチ１３が設けられている。スイッチ１２，１３は、コントローラ４０からの制御信号を受けて、オンおよびオフの間で切り替わる。
【００４４】
なお、図３に示す構成では、単電池１０の負極端子に対して、スイッチ１２を設けているが、これに限るものではない。具体的には、単電池１０の正極端子に対して、スイッチ１２を設けることもできる。
【００４５】
電池パックＢ−１を構成する、すべての単電池１０に電流を流すときには、図４に示すように、すべてのスイッチ１２がオンとなり、すべてのスイッチ１３がオフとなる。これにより、すべての単電池１０を充放電することができる。図４に示す矢印は、電池パックＢ−１を充放電したときに、電流の流れる方向を示している。
【００４６】
一方、特定の単電池１０だけに電流を流さないときには、図５に示すように、特定の単電池１０（図５の中央に位置する単電池１０）において、スイッチ１２をオフにするとともに、スイッチ１３をオンにする。ここで、図５の左右に位置する単電池１０については、図４と同様に、スイッチ１２をオンにするとともに、スイッチ１３をオフにする。
【００４７】
これにより、図５の左右に位置する単電池１０には、電流が流れ、図５の中央に位置する単電池１０には、電流が流れない。図５に示す矢印は、電池パックＢ−１を充放電したときに、電流の流れる方向を示している。図５の中央に位置する単電池１０においては、バイパス回路１１に電流が流れることになる。このように、単電池１０に電流を流さずに、バイパス回路１１に電流を流すことを、バイパス処理という。
【００４８】
図３に示す構成では、バイパス回路１１およびスイッチ１２，１３を用いて、単電池１０に電流を流したり、単電池１０に電流を流さなかったりしているが、これに限るものではない。すなわち、特定の機構を用いることにより、任意の単電池１０をバイパスさせることができる。例えば、特開２０１２−６９４０６号公報に記載された機構を用いることにより、任意の単電池１０をバイパスさせることができる。
【００４９】
本実施例では、後述するように、複数の電池パックＢ−１〜Ｂ−ｎにおいて、ＳＯＣのバラツキが発生していても、すべての電池パックＢ−１〜Ｂ−ｎにおけるＳＯＣ（State of Charge）が０％となるまで、電池パックＢ−１〜Ｂ−ｎを放電したり、すべての電池パックＢ−１〜Ｂ−ｎにおけるＳＯＣが１００％となるまで、電池パックＢ−１〜Ｂ−ｎを充電したりすることができる。ここで、ＳＯＣとは、満充電容量に対する、現在の充電容量の割合である。
【００５０】
また、本実施例では、後述するように、各電池パックＢ−１〜Ｂ−ｎを構成する複数の単電池１０において、ＳＯＣのバラツキが発生していても、すべての単電池１０におけるＳＯＣが０％となるまで、すべての単電池１０を放電したり、すべての単電池１０におけるＳＯＣが１００％となるまで、すべての単電池１０を充電したりすることができる。ここで、単電池１０がニッケル水素電池であるときには、単電池１０のＳＯＣを０％から１００％の間で変化させることにより、メモリ効果を解消させることができる。
【００５１】
すべての電池パックＢ−１〜Ｂ−ｎや、すべての単電池１０において、ＳＯＣが０％となるまで放電させることにより、すべての電池パックＢ−１〜Ｂ−ｎに蓄えられた電気エネルギや、すべての単電池１０に蓄えられた電気エネルギを残すことなく利用することができる。すなわち、すべての電池パックＢ−１〜Ｂ−ｎや、すべての単電池１０に蓄えられた電気エネルギを使い切ることができる。
【００５２】
また、すべての電池パックＢ−１〜Ｂ−ｎや、すべての単電池１０において、ＳＯＣが１００％となるまで充電することにより、すべての電池パックＢ−１〜Ｂ−ｎや、すべての単電池１０に電気エネルギを蓄えることができる。すなわち、すべての電池パックＢ−１〜Ｂ−ｎや、すべての単電池１０を用いて、電気エネルギを無駄なく回収することができる。
【００５３】
まず、すべての電池パックＢ−１〜Ｂ−ｎや、すべての単電池１０において、ＳＯＣが０％となるまで放電する処理について、図６に示すフローチャートを用いて説明する。図６に示すフローチャートは、コントローラ４０によって実行される。本実施例において、ＳＯＣが０％に到達することには、ＳＯＣが完全に０％に到達することだけでなく、ＳＯＣがほぼ０％に到達することも含まれる。
【００５４】
ステップＳ１００において、コントローラ４０は、すべての電池パックＢ−１〜Ｂ−ｎを放電する。具体的には、コントローラ４０は、各電池パックＢ−１〜Ｂ−ｎに設けられた各リレーＲ−１〜Ｒ−ｎをオフからオンに切り替えることにより、すべての電池パックＢ−１〜Ｂ−ｎを負荷３３に接続する。これにより、すべての電池パックＢ−１〜Ｂ−ｎを放電させることができる。
【００５５】
ステップＳ１０１において、コントローラ４０は、各電池パックＢ−１〜Ｂ−ｎにおいて、放電を完了した単電池１０が含まれているか否かを判別する。具体的には、コントローラ４０は、ＳＯＣが０％に到達した単電池１０が各電池パックＢ−１〜Ｂ−ｎに含まれているか否かを判別する。
【００５６】
各電池パックＢ−１〜Ｂ−ｎは、直列に接続された複数の単電池１０によって構成されており、ＳＯＣのバラツキが発生していることがある。ＳＯＣのバラツキが発生しているときには、各電池パックＢ−１〜Ｂ−ｎの放電によって、ＳＯＣが最も低い単電池１０において、ＳＯＣが最も早く０％に到達することになる。単電池１０のＳＯＣが０％に到達したか否かの判別処理については、後述する。
【００５７】
ＳＯＣが０％に到達した単電池１０が存在するときには、ステップＳ１０２の処理に進み、ＳＯＣが０％に到達した単電池１０が存在しないときには、ステップＳ１００の処理に戻る。
【００５８】
ステップＳ１０２において、コントローラ４０は、ＳＯＣが０％に到達した単電池１０を特定する。各電池パックＢ−１〜Ｂ−ｎを構成する、すべての単電池１０に対して、識別情報を予め割り振ることにより、コントローラ４０は、識別情報に基づいて、ＳＯＣが０％に到達した単電池１０を特定することができる。
【００５９】
ここで、識別情報としては、例えば、番号を用いることができる。また、コントローラ４０は、ＳＯＣが０％に到達した単電池１０の識別情報をメモリ４１に記憶することができる。これにより、コントローラ４０は、各電池パックＢ−１〜Ｂ−ｎにおいて、ＳＯＣが０％に到達した単電池１０を把握することができる。
【００６０】
ステップＳ１０３において、コントローラ４０は、ＳＯＣが０％に到達した単電池１０に対して、バイパス処理を行う。具体的には、図３〜図５を用いて説明したように、ＳＯＣが０％に到達した単電池１０に関して、スイッチ１２をオフにするとともに、スイッチ１３をオンにする。これにより、ＳＯＣが０％に到達した単電池１０を放電させてしまうことを防止し、ＳＯＣが０％に到達していない単電池１０だけを放電させることができる。ここで、図６に示す処理を開始するとき、すべての単電池１０において、スイッチ１２がオンであり、スイッチ１３がオフである。
【００６１】
ステップＳ１０４において、コントローラ４０は、すべての単電池１０に対してバイパス処理が行われている電池パックが存在しているか否かを判別する。各電池パックＢ−１〜Ｂ−ｎを放電し続けると、各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０のＳＯＣが低下する。上述したように、ＳＯＣが０％に到達した単電池１０については、バイパス処理が行われるため、各電池パックＢ−１〜Ｂ−ｎの放電が続くほど、バイパス処理される単電池１０の数が増えることになる。
【００６２】
そして、最終的には、各電池パックＢ−１〜Ｂ−ｎを構成する、すべての単電池１０に対してバイパス処理が行われることになる。ステップＳ１０４の処理では、すべての単電池１０に対してバイパス処理が行われた電池パックが存在しているか否かを判別している。上述したように、ＳＯＣが０％に到達した単電池１０の識別情報はメモリ４１に記憶されるため、コントローラ４０は、メモリ４１に記憶された識別情報を参照することにより、各電池パックＢ−１〜Ｂ−ｎにおいて、すべての単電池１０がバイパス処理されているか否かを判別することができる。
【００６３】
すべての単電池１０に対してバイパス処理が行われている電池パックが存在しているときには、ステップＳ１０５の処理に進み、そうでなければ、ステップＳ１００の処理に戻る。
【００６４】
ステップＳ１０５において、コントローラ４０は、すべての単電池１０に対してバイパス処理が行われている電池パックを特定する。電池パックＢ−１〜Ｂ−ｎに対して識別情報を予め割り振ることにより、コントローラ４０は、識別情報に基づいて、すべての単電池１０に対してバイパス処理が行われている電池パックを特定することができる。ここで、識別情報としては、例えば、番号を用いることができる。また、コントローラ４０は、すべての単電池１０に対してバイパス処理が行われている電池パックの識別情報をメモリ４１に記憶することができる。
【００６５】
ステップＳ１０６において、コントローラ４０は、すべての単電池１０に対してバイパス処理が行われている電池パックを、負荷３３との接続から遮断する。具体的には、コントローラ４０は、負荷３３との接続から遮断される電池パックに対応したリレーをオンからオフに切り替える。これにより、電池パックの放電を停止させることができる。ここで、バイパス処理が行われていない単電池１０を含む電池パックでは、放電が継続される。
【００６６】
ステップＳ１０７において、コントローラ４０は、すべての電池パックＢ−１〜Ｂ−ｎが負荷３３との接続から遮断されているか否かを判別する。具体的には、コントローラ４０は、メモリ４１に記憶された電池パックＢ−１〜Ｂ−ｎの識別情報を参照することにより、すべての電池パックＢ−１〜Ｂ−ｎが負荷３３との接続から遮断されているか否かを判別することができる。すべての電池パックＢ−１〜Ｂ−ｎが負荷３３との接続から遮断されているときには、図６に示す処理を終了し、少なくとも１つの電池パックが負荷３３と接続されているときには、ステップＳ１００の処理に戻る。
【００６７】
図６に示す処理によれば、各電池パックＢ−１〜Ｂ−ｎを構成する、すべての単電池１０を、ＳＯＣが０％になるまで放電させることができる。また、すべての電池パックＢ−１〜Ｂ−ｎを、ＳＯＣが０％になるまで放電させることができる。これにより、図６に示す処理を終了したとき、すべての電池パックＢ−１〜Ｂ−ｎを構成する、すべての単電池１０には、電気エネルギが蓄えられていないことになる。
【００６８】
次に、単電池１０のＳＯＣが０％に到達しているか否かを判別する処理（図６のステップＳ１０１の処理）について、図７に示すフローチャートを用いて説明する。図７に示す処理は、コントローラ４０によって実行される。
【００６９】
ステップＳ２００において、コントローラ４０は、各電池パックＢ−１〜Ｂ−ｎを放電している間、各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０の電流値および電圧値を検出する。
【００７０】
例えば、コントローラ４０は、電池パックＢ−１に対応して設けられた電流センサ２２の出力に基づいて、電池パックＢ−１を構成する単電池１０に流れる電流値（放電電流）を検出することができる。また、コントローラ４０は、電池パックＢ−１に対応して設けられた監視ユニット２０の出力に基づいて、電池パックＢ−１を構成する各単電池１０の電圧値を検出することができる。電池パックＢ−２〜Ｂ−ｎについても、同様の方法によって、単電池１０の電流値および電圧値を検出することができる。
【００７１】
ステップＳ２０１において、コントローラ４０は、所定時間に対する電圧変化量（ｄＶ／ｄｔ）を算出する。電圧変化量ｄＶ／ｄｔの算出は、各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０に対して行われる。電池パックＢ−１〜Ｂ−ｎを放電させると、各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０の電圧値は、図８に示すように、時間の経過とともに低下する。
【００７２】
図８には、１つの単電池１０を放電したときの電圧挙動（一例）を示している。図８において、縦軸は単電池１０の電圧値であり、横軸は時間である。図８に示す電圧Ｖｍｉｎは、単電池１０の放電終止電圧である。
【００７３】
図８の点線で囲んだ領域に示すように、単電池１０のＳＯＣが０％に到達したときには、単電池１０の種類によっては、一定の変化量ｄＶａで、単電池１０の電圧値が低下する傾向がある。このため、電圧変化量ｄＶａを確認することにより、単電池１０のＳＯＣが０％に到達しているか否か判別することができる。電圧変化量ｄＶａは、予め実験などによって求めておくことができ、電圧変化量ｄＶａに関する情報は、メモリ４１に記憶することができる。
【００７４】
具体的には、ステップＳ２０１において、コントローラ４０は、下記式（１）の条件を満たすか否かを判別する。図７に示す処理では、単電池１０を放電しているため、下記式（１）に示す電圧変化量ｄＶ／ｄｔは、負の値となる。
【００７５】
【数１】
0005605401.tif 000002
【００７６】
上記式（１）の条件を満たすときには、ステップＳ２０２の処理に進み、上記式（１）の条件を満たさないときには、ステップＳ２００の処理に戻る。ステップＳ２０２において、コントローラ４０は、上記式（１）の条件を満たす単電池１０において、ＳＯＣが０％に到達していると判別する。これにより、図６のステップＳ１０３の処理で説明したように、コントローラ４０は、ＳＯＣが０％に到達した単電池１０に対してバイパス処理を行うことができる。
【００７７】
ステップＳ２０３において、コントローラ４０は、ＳＯＣが０％に到達した単電池１０に関して、電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝０）を算出する。ステップＳ２００の処理によって、コントローラ４０は、電池パックＢ−１〜Ｂ−ｎを放電している間、各単電池１０の電流値を検出している。このため、放電を開始してからバイパス処理が行われるまでの間に検出された電流値を積算することにより、電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝０）を算出することができる。
【００７８】
電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝０）の算出は、各単電池１０に対して行われる。そして、電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝０）に関する情報は、単電池１０の識別情報と対応付けられた状態において、メモリ４１に記憶することができる。
【００７９】
図７に示す処理では、電圧変化量ｄＶ／ｄｔに基づいて、単電池１０のＳＯＣが０％に到達したことを判別しているが、これに限るものではない。例えば、単電池１０の電圧値が図８に示す電圧値（放電終止電圧）Ｖｍｉｎに到達したか否かを判別することにより、単電池１０のＳＯＣが０％に到達しているか否かを判別することができる。単電池１０のＳＯＣが０％に到達するときには、単電池１０の電圧値が電圧値Ｖｍｉｎに到達していることになるため、単電池１０の電圧値が電圧値Ｖｍｉｎに到達していることを確認することにより、単電池１０のＳＯＣが０％に到達していると判別することができる。
【００８０】
次に、図６のステップＳ１０４の処理について、図９に示すフローチャートを用いて詳細に説明する。図９に示す処理は、コントローラ４０によって実行される。
【００８１】
図６のステップＳ１０３の処理で説明したように、コントローラ４０は、ＳＯＣが０％に到達した単電池１０に対してバイパス処理を行う。バイパス処理を行ったとき、コントローラ４０は、ステップＳ３００において、バイパス数Ｎｂｐをインクリメントする。バイパス数Ｎｂｐは、単電池１０に対してバイパス処理が行われた回数を示し、言い換えれば、バイパス処理が行われた単電池１０の数を示している。バイパス数Ｎｂｐに関する情報は、メモリ４１に記憶される。バイパス数Ｎｂｐは、各電池ブロックＢ−１〜Ｂ−ｎに対して設定される。
【００８２】
ステップＳ３０１において、コントローラ４０は、バイパス数Ｎｂｐが、各電池ブロックＢ−１〜Ｂ−ｎを構成する単電池１０の総数Ｎｔｏｔａｌ＿ｃｅｌｌ以上であるか否かを判別する。総数Ｎｔｏｔａｌ＿ｃｅｌｌは、予め求めておくことができ、総数Ｎｔｏｔａｌ＿ｃｅｌｌに関する情報は、メモリ４１に記憶しておくことができる。バイパス数Ｎｂｐが総数Ｎｔｏｔａｌ＿ｃｅｌｌ以上であるときには、ステップＳ３０２の処理に進み、バイパス数Ｎｂｐが総数Ｎｔｏｔａｌ＿ｃｅｌｌよりも小さいときには、図９に示す処理を終了する。
【００８３】
ステップＳ３０２において、コントローラ４０は、バイパス数Ｎｂｐが総数Ｎｔｏｔａｌ＿ｃｅｌｌ以上である電池パックにおいて、ＳＯＣが０％に到達したと判別する。バイパス数Ｎｂｐが総数Ｎｔｏｔａｌ＿ｃｅｌｌに到達しているときには、電池パックを構成する、すべての単電池１０に対して、バイパス処理が行われていることになる。また、バイパス処理は、ＳＯＣが０％に到達している単電池１０に対して行われるため、バイパス数Ｎｂｐが総数Ｎｔｏｔａｌ＿ｃｅｌｌに到達している電池パックでは、ＳＯＣが０％に到達していることになる。
【００８４】
ステップＳ３０３において、コントローラ４０は、ＳＯＣが０％に到達した電池パックに関して、電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝０）を算出する。コントローラ４０は、電池パックＢ−１〜Ｂ−ｎを放電している間、電流センサ２２の出力に基づいて、各電池パックＢ−１〜Ｂ−ｎの電流値を検出している。
【００８５】
このため、各電池パックＢ−１〜Ｂ−ｎの放電を開始してから、各電池パックＢ−１〜Ｂ−ｎのＳＯＣが０％に到達するまでの間に検出された電流値を積算することにより、電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝０）を算出することができる。ここで、電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝０）は、各電池パックＢ−１〜Ｂ−ｎにおいて、ＳＯＣが最後に０％に到達した単電池１０の電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝０）と等しくなる。
【００８６】
電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝０）の算出は、各電池パックＢ−１〜Ｂ−ｎに対して行われる。そして、電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝０）に関する情報は、電池パックＢ−１〜Ｂ−ｎの識別情報と対応付けた状態において、メモリ４１に記憶することができる。
【００８７】
次に、図６で説明したステップＳ１０７の処理について、図１０に示すフローチャートを用いて詳細に説明する。図１０に示す処理は、コントローラ４０によって実行される。
【００８８】
図６のステップＳ１０６の処理で説明したように、コントローラ４０は、ＳＯＣが０％に到達した電池パックを、負荷３３との接続から遮断する。電池パックおよび負荷３３の接続を遮断したとき、コントローラ４０は、ステップＳ４００において、遮断数Ｎｐａｃｋをインクリメントする。遮断数Ｎｐａｃｋは、負荷３３と接続されていない電池パックの数を示し、０〜ｎまでの間の数となる。
【００８９】
ここで、電池パックおよび負荷３３の接続が遮断されるたびに、遮断数Ｎｐａｃｋが増加する。遮断数Ｎｐａｃｋに関する情報は、メモリ４１に記憶される。
【００９０】
ステップＳ４０１において、コントローラ４０は、遮断数Ｎｐａｃｋが、すべての電池パックＢ−１〜Ｂ−ｎの総数Ｎｔｏｔａｌ＿ｐａｃｋ以上であるか否かを判別する。遮断数Ｎｐａｃｋが総数Ｎｔｏｔａｌ＿ｐａｃｋ以上であるときには、ステップＳ４０２の処理に進み、遮断数Ｎｐａｃｋが総数Ｎｔｏｔａｌ＿ｐａｃｋよりも小さいときには、図１０に示す処理を終了する。
【００９１】
ステップＳ４０２において、コントローラ４０は、図１に示す電池システムにおいて、すべての電池パックＢ−１〜Ｂ−ｎにおけるＳＯＣが０％に到達したと判別する。各電池パックＢ−１〜Ｂ−ｎのＳＯＣが０％に到達すると、各電池パックＢ−１〜Ｂ−ｎおよび負荷３３の接続が遮断されるため、遮断数Ｎｐａｃｋが総数Ｎｔｏｔａｌ＿ｐａｃｋに到達すれば、すべての電池パックＢ−１〜Ｂ−ｎにおけるＳＯＣが０％に到達していることになる。これにより、コントローラ４０は、すべての電池パックＢ−１〜Ｂ−ｎの放電が完了していることを確認することができる。
【００９２】
すべての電池パックＢ−１〜Ｂ−ｎを放電した後には、以下に説明するように、すべての電池パックＢ−１〜Ｂ−ｎを充電する処理が行われる。
【００９３】
すべての電池パックＢ−１〜Ｂ−ｎや、すべての単電池１０を、ＳＯＣが１００％に到達するまで充電させる処理について、図１１に示すフローチャートを用いて説明する。図１１に示すフローチャートは、コントローラ４０によって実行される。
【００９４】
ステップＳ５００において、コントローラ４０は、すべての電池パックＢ−１〜Ｂ−ｎを充電させる。具体的には、コントローラ４０は、各電池パックＢ−１〜Ｂ−ｎに設けられたリレーＲ−１〜Ｒ−ｎをオフからオンに切り替えることにより、すべての電池パックＢ−１〜Ｂ−ｎを電源３４に接続する。これにより、電源３４からの電力を、すべての電池パックＢ−１〜Ｂ−ｎに供給することができ、すべての電池パックＢ−１〜Ｂ−ｎを充電させることができる。
【００９５】
電池パックＢ−１〜Ｂ−ｎを充電するときには、例えば、定電流定電圧充電（ＣＣＣＶ充電）を行うことができる。定電流定電圧充電では、まず、定電流のもとで、電池パックＢ−１〜Ｂ−ｎを充電し、各電池パックＢ−１〜Ｂ−ｎ（各単電池１０）の電圧が所定電圧（充電終止電圧）に到達したときには、定電圧のもとで、電池パックＢ−１〜Ｂ−ｎを充電する。
【００９６】
ステップＳ５０１において、コントローラ４０は、各電池パックＢ−１〜Ｂ−ｎにおいて、充電を完了した単電池１０が含まれているか否かを判別する。具体的には、コントローラ４０は、ＳＯＣが１００％に到達した単電池１０が各電池パックＢ−１〜Ｂ−ｎに含まれているか否かを判別する。
【００９７】
各電池パックＢ−１〜Ｂ−ｎは、直列に接続された複数の単電池１０によって構成されており、ＳＯＣのバラツキが発生していることがある。ＳＯＣのバラツキが発生しているときには、各電池パックＢ−１〜Ｂ−ｎの充電によって、ＳＯＣが最も高い単電池１０において、ＳＯＣが最も早く１００％に到達することになる。単電池１０のＳＯＣが１００％に到達したか否かの判別処理については、後述する。
【００９８】
ＳＯＣが１００％に到達した単電池１０が存在するときには、ステップＳ５０２の処理に進み、ＳＯＣが１００％に到達した単電池１０が存在しないときには、ステップＳ５００の処理に戻る。
【００９９】
ステップＳ５０２において、コントローラ４０は、ＳＯＣが１００％に到達した単電池１０を特定する。各電池パックＢ−１〜Ｂ−ｎを構成する、すべての単電池１０に対して、識別情報を予め割り振ることにより、コントローラ４０は、識別情報に基づいて、ＳＯＣが１００％に到達した単電池１０を特定することができる。ここで、コントローラ４０は、ＳＯＣが１００％に到達した単電池１０の識別情報をメモリ４１に記憶することができる。
【０１００】
ステップＳ５０３において、コントローラ４０は、ＳＯＣが１００％に到達した単電池１０に対して、バイパス処理を行う。具体的には、図３〜図５を用いて説明したように、ＳＯＣが１００％に到達した単電池１０に関して、スイッチ１２をオフにするとともに、スイッチ１３をオンにする。
【０１０１】
これにより、ＳＯＣが１００％に到達した単電池１０が充電されてしまうことを防止し、ＳＯＣが１００％に到達していない単電池１０だけを充電させることができる。ここで、図１１に示す処理を開始するとき、すべての単電池１０において、スイッチ１２がオンであり、スイッチ１３がオフである。
【０１０２】
ステップＳ５０４において、コントローラ４０は、すべての単電池１０に対してバイパス処理が行われている電池パックが存在しているか否かを判別する。各電池パックＢ−１〜Ｂ−ｎを充電し続けると、各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０のＳＯＣが上昇する。上述したように、ＳＯＣが１００％に到達した単電池１０については、バイパス処理が行われるため、各電池パックＢ−１〜Ｂ−ｎの充電が続くほど、バイパス処理される単電池１０の数が増えることになる。
【０１０３】
そして、最終的には、各電池パックＢ−１〜Ｂ−ｎを構成する、すべての単電池１０に対してバイパス処理が行われることになる。ステップＳ５０４の処理では、すべての単電池１０に対してバイパス処理が行われた電池パックが存在しているか否かを判別している。上述したように、ＳＯＣが１００％に到達した単電池１０の識別情報はメモリ４１に記憶されるため、コントローラ４０は、メモリ４１に記憶された識別情報を参照することにより、各電池パックＢ−１〜Ｂ−ｎにおいて、すべての単電池１０がバイパス処理されているか否かを判別することができる。
【０１０４】
すべての単電池１０に対してバイパス処理が行われている電池パックが存在しているときには、ステップＳ５０５の処理に進み、そうでなければ、ステップＳ５００の処理に戻る。
【０１０５】
ステップＳ５０５において、コントローラ４０は、すべての単電池１０に対してバイパス処理が行われている電池パックを特定する。電池パックＢ−１〜Ｂ−ｎに対して識別情報を予め割り振ることにより、コントローラ４０は、識別情報に基づいて、すべての単電池１０に対してバイパス処理が行われている電池パックを特定することができる。ここで、コントローラ４０は、すべての単電池１０に対してバイパス処理が行われている電池パックの識別情報をメモリ４１に記憶することができる。
【０１０６】
ステップＳ５０６において、コントローラ４０は、すべての単電池１０に対してバイパス処理が行われている電池パックを、電源３４との接続から遮断する。具体的には、コントローラ４０は、電源３４との接続から遮断される電池パックに対応したリレーをオンからオフに切り替える。これにより、電池パックの充電を停止させることができる。ここで、バイパス処理が行われていない単電池１０を含む電池パックでは、充電が継続される。
【０１０７】
ステップＳ５０７において、コントローラ４０は、すべての電池パックＢ−１〜Ｂ−ｎが電源３４との接続から遮断されているか否かを判別する。すなわち、コントローラ４０は、すべての電池パックＢ−１〜Ｂ−ｎにおいて、充電が完了しているか否かを判別する。
【０１０８】
具体的には、コントローラ４０は、メモリ４１に記憶された電池パックＢ−１〜Ｂ−ｎの識別情報を参照することにより、すべての電池パックＢ−１〜Ｂ−ｎが電源３４との接続から遮断されているか否かを判別することができる。すべての電池パックＢ−１〜Ｂ−ｎが電源３４との接続から遮断されているときには、図１１に示す処理を終了し、少なくとも１つの電池パックが電源３４と接続されているときには、ステップＳ５００の処理に戻る。
【０１０９】
図１１に示す処理によれば、各電池パックＢ−１〜Ｂ−ｎを構成する、すべての単電池１０を、ＳＯＣが１００％になるまで充電することができる。また、すべての電池パックＢ−１〜Ｂ−ｎを、ＳＯＣが１００％になるまで充電することができる。これにより、図１１に示す処理を終了したとき、すべての電池パックＢ−１〜Ｂ−ｎが満充電状態となっているとともに、各電池パックＢ−１〜Ｂ−ｎを構成する、すべての単電池１０が満充電状態となっている。
【０１１０】
次に、単電池１０のＳＯＣが１００％に到達しているか否かを判別する処理（図１１のステップＳ５０１の処理）について、図１２に示すフローチャートを用いて説明する。図１２に示す処理は、コントローラ４０によって実行される。
【０１１１】
ステップＳ６００において、コントローラ４０は、各電池パックＢ−１〜Ｂ−ｎを充電している間、各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０の電流値および電圧値を検出する。
【０１１２】
例えば、コントローラ４０は、電池パックＢ−１に対応して設けられた電流センサ２２の出力に基づいて、電池パックＢ−１を構成する単電池１０に流れる電流値（充電電流）を検出することができる。また、コントローラ４０は、電池パックＢ−１に対応して設けられた監視ユニット２０の出力に基づいて、電池パックＢ−１を構成する各単電池１０の電圧値を検出することができる。電池パックＢ−２〜Ｂ−ｎについても、同様の方法によって、単電池１０の電流値および電圧値を検出することができる。
【０１１３】
ステップＳ６０１において、コントローラ４０は、所定時間に対する電圧変化量（ｄＶ／ｄｔ）を算出する。電圧変化量ｄＶ／ｄｔの算出は、各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０に対して行われる。電池パックＢ−１〜Ｂ−ｎを充電すると、各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０の電圧値は、図１３に示すように、時間の経過とともに上昇する。
【０１１４】
図１３には、３つの単電池１０を充電したときの電圧挙動（一例）を示している。図１３において、縦軸は単電池１０の電圧値であり、横軸は時間である。図１３に示すように、ＳＯＣが１００％に近づくにつれて、単電池１０の電圧値は変化し難くなる。
【０１１５】
図１３の点線で囲まれた領域に示すように、単電池１０のＳＯＣが１００％に到達した後においては、単電池１０の種類によって、単電池１０の電圧値が低下する傾向がある。このため、このときの電圧変化量ｄＶｂを確認することにより、単電池１０のＳＯＣが１００％に到達しているか否かを判別することができる。電圧変化量ｄＶｂは、予め実験などによって求めておくことができ、電圧変化量ｄＶｂに関する情報は、メモリ４１に記憶することができる。
【０１１６】
具体的には、ステップＳ６０１において、コントローラ４０は、下記式（２）の条件を満たすか否かを判別する。
【０１１７】
【数２】
0005605401.tif 000003
【０１１８】
上記式（２）の条件を満たすときには、ステップＳ６０２の処理に進み、上記式（２）の条件を満たさないときには、ステップＳ６００の処理に戻る。ステップＳ６０２において、コントローラ４０は、上記式（２）の条件を満たす単電池１０において、ＳＯＣが１００％に到達していると判別する。これにより、図１１のステップＳ５０３の処理で説明したように、コントローラ４０は、ＳＯＣが１００％に到達した単電池１０に対してバイパス処理を行うことができる。
【０１１９】
ステップＳ６０３において、コントローラ４０は、ＳＯＣが１００％に到達した単電池１０に関して、電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝１００）を算出する。コントローラ４０は、電池パックＢ−１〜Ｂ−ｎを充電している間、電流センサ２２の出力に基づいて、各単電池１０の電流値を検出している。このため、各電池パックＢ−１〜Ｂ−ｎ（各単電池１０）の充電を開始してから、各単電池１０のＳＯＣが０％に到達するまでの間に検出された電流値を積算することにより、電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝１００）を算出することができる。
【０１２０】
ステップＳ６０４において、コントローラ４０は、単電池１０の満充電容量Ｑｃｅｌｌを算出する。具体的には、コントローラ４０は、ステップＳ６０３の処理で算出された電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝１００）から、図７のステップＳ２０３の処理で算出された電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝０）を減算することにより、満充電容量Ｑｃｅｌｌを算出することができる。
【０１２１】
ここで、電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝１００），ΣＩ＿ｃｅｌｌ（ＳＯＣ＝０）としては、同一の単電池１０で取得された値が用いられる。ここで、同一の単電池１０であるか否かの判別は、上述した各単電池１０の識別情報を用いればよい。
【０１２２】
図６に示す処理が行われた後に、図１１や図１２に示す処理が行われるため、電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝１００）を算出したときには、電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝０）が得られている。このため、２つの電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝１００），ΣＩ＿ｃｅｌｌ（ＳＯＣ＝０）を用いることにより、単電池１０の満充電容量Ｑｃｅｌｌを算出することができる。
【０１２３】
図１１の処理では、すべての電池パックＢ−１〜Ｂ−ｎが満充電状態になるとともに、各電池パックＢ−１〜Ｂ−ｎを構成する、すべての単電池１０が満充電状態となるまで、電池パックＢ−１〜Ｂ−ｎの充電が行われる。このため、すべての単電池１０に対して、満充電容量Ｑｃｅｌｌを算出することができる。
【０１２４】
ステップＳ６０５において、コントローラ４０は、ステップＳ６０４の処理で算出された各単電池１０の満充電容量Ｑｃｅｌｌをメモリ４１に記憶する。例えば、コントローラ４０は、各単電池１０の識別情報と、満充電容量Ｑｃｅｌｌとを対応付けた状態において、メモリ４１に記憶することができる。これにより、コントローラ４０は、各単電池１０の満充電容量Ｑｃｅｌｌを把握することができる。
【０１２５】
各単電池１０の満充電容量Ｑｃｅｌｌを把握することができれば、電池パックＢ−１〜Ｂ−ｎ（単電池１０）を放電するときに、各単電池１０の満充電容量Ｑｃｅｌｌに基づいて、各単電池１０のＳＯＣが０％に到達しているか否かを判別することができる。
【０１２６】
図１２に示す処理では、電圧変化量ｄＶ／ｄｔに基づいて、単電池１０のＳＯＣが１００％に到達しているか否かを判別しているが、これに限るものではない。例えば、以下に説明する図１４又は図１６に示す処理によっても、単電池１０のＳＯＣが１００％に到達しているか否かを判別することができる。
【０１２７】
まず、図１４に示す処理について説明する。図１４に示す処理は、コントローラ４０によって実行される。図１４において、図１２で説明した処理と同じ処理については、同一の符号を用い、詳細な説明は省略する。
【０１２８】
図１４に示す処理では、図１２に示すステップＳ６０１の処理に代えて、ステップＳ６０６の処理を行っている。ステップＳ６０６において、コントローラ４０は、所定時間に対する抵抗変化量（ｄＲ／ｄｔ）を算出する。抵抗変化量ｄＲ／ｄｔの算出は、各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０に対して行われる。
【０１２９】
各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０の抵抗値は、各単電池１０の電流値および電圧値から算出することができる。すなわち、ステップＳ６００の処理を行うことにより、各単電池１０の抵抗値を算出することができる。単電池１０を充電している間、単電池１０の抵抗値を監視することにより、抵抗変化量ｄＲ／ｄｔを算出することができる。
【０１３０】
図１５には、３つの単電池１０における抵抗値の変化（一例）を示している。図１５において、縦軸は、単電池１０の抵抗値を示し、横軸は、時間を示している。
【０１３１】
図１５の点線で囲んだ領域に示すように、単電池１０のＳＯＣが１００％に到達した後においては、単電池１０の種類によっては、単電池１０の抵抗値が一定の変化量ｄＲａで増加する傾向がある。このため、抵抗変化量ｄＲａを確認することにより、単電池１０のＳＯＣが１００％に到達しているか否かを判別することができる。抵抗変化量ｄＲａは、予め実験などによって求めておくことができ、抵抗変化量ｄＲａに関する情報は、メモリ４１に記憶することができる。
【０１３２】
具体的には、ステップＳ６０６において、コントローラ４０は、下記式（３）の条件を満たすか否かを判別する。
【０１３３】
【数３】
0005605401.tif 000004
【０１３４】
上記式（３）の条件を満たすときには、ステップＳ６０２の処理に進み、上記式（３）の条件を満たさないときには、ステップＳ６００の処理に戻る。ステップＳ６０２において、コントローラ４０は、上記式（３）の条件を満たす単電池１０において、ＳＯＣが１００％に到達していると判別する。
【０１３５】
次に、図１６に示す処理について説明する。図１６に示す処理は、コントローラ４０によって実行される。図１６において、図１２で説明した処理と同じ処理については、同一の符号を用い、詳細な説明は省略する。
【０１３６】
図１６に示す処理では、図１２に示すステップＳ６００，Ｓ６０１の処理に代えて、ステップＳ６０７，Ｓ６０８の処理を行っている。ステップＳ６０７において、コントローラ４０は、電流センサ２２の出力に基づいて、単電池１０の電流値を検出するとともに、温度センサ２１の出力に基づいて、単電池１０の温度を検出する。ここで、温度センサ２１は、各電池パックｂ−１〜Ｂ−ｎに含まれる各単電池１０の温度を検出することができる。
【０１３７】
ステップＳ６０８において、コントローラ４０は、所定時間に対する単電池１０の温度変化量（ｄＴ／ｄｔ）を算出する。温度変化量ｄＴ／ｄｔの算出は、各電池パックＢ−１〜Ｂ−ｎを構成する各単電池１０に対して行われる。コントローラ４０は、単電池１０を充電している間、各単電池１０の温度を監視することにより、温度変化量ｄＴ／ｄｔを算出することができる。
【０１３８】
図１７には、単電池１０の温度の変化を示している。図１７において、縦軸は、単電池１０の温度を示し、横軸は、時間を示している。図１７には、３つの単電池１０における温度の変化（一例）を示している。
【０１３９】
図１７の点線で囲んだ領域に示すように、単電池１０のＳＯＣが１００％に到達した後においては、単電池１０の種類によっては、単電池１０の温度が一定の変化量ｄＴａで上昇する傾向がある。このため、温度変化量ｄＴａを確認することにより、単電池１０のＳＯＣが１００％に到達しているか否かを判別することができる。温度変化量ｄＴａは、予め実験などによって求めておくことができ、温度変化量ｄＴａに関する情報は、メモリ４１に記憶することができる。
【０１４０】
具体的には、ステップＳ６０８において、コントローラ４０は、下記式（４）の条件を満たすか否かを判別する。
【０１４１】
【数４】
0005605401.tif 000005
【０１４２】
上記式（４）の条件を満たすときには、ステップＳ６０２の処理に進み、上記式（４）の条件を満たさないときには、ステップＳ６０７の処理に戻る。ステップＳ６０２において、コントローラ４０は、上記式（４）の条件を満たす単電池１０において、ＳＯＣが１００％に到達していると判別する。
【０１４３】
次に、図１１のステップＳ５０４の処理について、図１８に示すフローチャートを用いて詳細に説明する。図１８に示す処理は、コントローラ４０によって実行される。
【０１４４】
図１１のステップＳ５０３の処理で説明したように、コントローラ４０は、ＳＯＣが１００％に到達した単電池１０に対してバイパス処理を行う。バイパス処理を行ったとき、コントローラ４０は、ステップＳ７００において、バイパス数Ｎｂｐをインクリメントする。バイパス数Ｎｂｐに関する情報は、メモリ４１に記憶される。バイパス数Ｎｂｐは、各電池ブロックＢ−１〜Ｂ−ｎに対して設定される。
【０１４５】
ステップＳ７０１において、コントローラ４０は、バイパス数Ｎｂｐが、各電池ブロックＢ−１〜Ｂ−ｎを構成する単電池１０の総数Ｎｔｏｔａｌ＿ｃｅｌｌ以上であるか否かを判別する。バイパス数Ｎｂｐが総数Ｎｔｏｔａｌ＿ｃｅｌｌ以上であるときには、ステップＳ７０２の処理に進み、バイパス数Ｎｂｐが総数Ｎｔｏｔａｌ＿ｃｅｌｌよりも小さいときには、図１８に示す処理を終了する。
【０１４６】
ステップＳ７０２において、コントローラ４０は、バイパス数Ｎｂｐが総数Ｎｔｏｔａｌ＿ｃｅｌｌ以上である電池パックにおいて、ＳＯＣが１００％に到達したと判別する。バイパス数Ｎｂｐが総数Ｎｔｏｔａｌ＿ｃｅｌｌに到達しているときには、電池パックを構成する、すべての単電池１０に対して、バイパス処理が行われていることになる。また、バイパス処理は、ＳＯＣが１００％に到達している単電池１０に対して行われるため、バイパス数Ｎｂｐが総数Ｎｔｏｔａｌ＿ｃｅｌｌに到達している電池パックでは、ＳＯＣが１００％に到達していることになる。
【０１４７】
ステップＳ７０３において、コントローラ４０は、ＳＯＣが１００％に到達した電池パックに関して、電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝１００）を算出する。コントローラ４０は、電池パックＢ−１〜Ｂ−ｎを充電している間、電流センサ２２の出力に基づいて、各電池パックＢ−１〜Ｂ−ｎの電流値を検出している。
【０１４８】
このため、各電池パックＢ−１〜Ｂ−ｎの充電を開始してから、各電池パックＢ−１〜Ｂ−ｎのＳＯＣが１００％に到達するまでの間に検出された電流値を積算することにより、電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝１００）を算出することができる。ここで、電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝１００）は、各電池パックＢ−１〜Ｂ−ｎにおいて、ＳＯＣが最後に１００％に到達した単電池１０の電流積算値ΣＩ＿ｃｅｌｌ（ＳＯＣ＝１００）と等しくなる。
【０１４９】
ステップＳ７０４において、コントローラ４０は、各電池パックＢ−１〜Ｂ−ｎの満充電容量Ｑｐａｃｋを算出する。具体的には、コントローラ４０は、ステップＳ７０３の処理で算出された電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝１００）から、図９のステップＳ３０３の処理で算出された電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝０）を減算することにより、満充電容量Ｑｐａｃｋを算出することができる。ここで、電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝１００），ΣＩ＿ｐａｃｋ（ＳＯＣ＝０）としては、同一の電池パックＢ−１〜Ｂ−ｎで取得された値が用いられる。同一の電池パックＢ−１〜Ｂ−ｎであるか否かの判別は、上述した各電池パックＢ−１〜Ｂ−ｎの識別情報を用いればよい。
【０１５０】
図６に示す処理が行われた後に、図１１に示す処理が行われるため、電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝１００）を算出したときには、電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝０）が得られている。このため、２つの電流積算値ΣＩ＿ｐａｃｋ（ＳＯＣ＝１００），ΣＩ＿ｐａｃｋ（ＳＯＣ＝０）を用いることにより、各電池パックＢ−１〜Ｂ−ｎの満充電容量Ｑｐａｃｋを算出することができる。
【０１５１】
図１１の処理では、すべての電池パックＢ−１〜Ｂ−ｎが満充電状態になる。このため、すべての電池パックＢ−１〜Ｂ−ｎに対して、満充電容量Ｑｐａｃｋを算出することができる。
【０１５２】
ステップＳ７０５において、コントローラ４０は、ステップＳ７０４の処理で算出された各電池パックＢ−１〜Ｂ−ｎの満充電容量Ｑｐａｃｋをメモリ４１に記憶する。例えば、コントローラ４０は、各電池パックＢ−１〜Ｂ−ｎの識別情報と、満充電容量Ｑｐａｃｋとを対応付けた状態において、メモリ４１に記憶することができる。これにより、コントローラ４０は、各電池パックＢ−１〜Ｂ−ｎの満充電容量Ｑｐａｃｋを把握することができる。
【０１５３】
各電池パックＢ−１〜Ｂ−ｎの満充電容量Ｑｐａｃｋを把握することができれば、電池パックＢ−１〜Ｂ−ｎを放電するときに、各電池パックＢ−１〜Ｂ−ｎの満充電容量Ｑｐａｃｋに基づいて、各電池パックＢ−１〜Ｂ−ｎのＳＯＣが０％に到達しているか否かを判別することができる。
【符号の説明】
【０１５４】
Ｂ−１〜Ｂ−ｎ：電池パック、１０：単電池、１１，１３：スイッチ、
１２：バイパス回路、２０：監視ユニット、２０ａ：監視ＩＣ、
２１：温度センサ、２２：電流センサ、３１：ＤＣ／ＤＣコンバータ、
３２：インバータ、３３：負荷、３４：電源、Ｒ−１〜Ｒ−ｎ：リレー、
４０：コントローラ、４１：メモリ、ＰＬ：正極ライン、ＮＬ：負極ライン
【図１】
0005605401.tif 000006
【図２】
0005605401.tif 000007
【図３】
0005605401.tif 000008
【図４】
0005605401.tif 000009
【図５】
0005605401.tif 000010
【図６】
0005605401.tif 000011
【図７】
0005605401.tif 000012
【図８】
0005605401.tif 000013
【図９】
0005605401.tif 000014
【図１０】
0005605401.tif 000015
【図１１】
0005605401.tif 000016
【図１２】
0005605401.tif 000017
【図１３】
0005605401.tif 000018
【図１４】
0005605401.tif 000019
【図１５】
0005605401.tif 000020
【図１６】
0005605401.tif 000021
【図１７】
0005605401.tif 000022
【図１８】
0005605401.tif 000023