(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
次に、本発明の実施形態について説明する。
【0015】
(A)実施形態の構成の説明
図1は、本発明の実施形態に係る二次電池充電制御装置を有する車両の電源系統を示す図である。この図において、二次電池充電制御装置1は、制御部10、電圧センサ11、電流センサ12、温度センサ13、および、放電回路15を主要な構成要素としており、二次電池14の状態を検出する。ここで、制御部10は、電圧センサ11、電流センサ12、および、温度センサ13からの出力を参照し、二次電池14の状態を検出する。電圧センサ11は、二次電池14の端子電圧を検出し、制御部10に通知する。電流センサ12は、二次電池14に流れる電流を検出し、制御部10に通知する。温度センサ13は、二次電池14自体または周囲の環境温度を検出し、制御部10に通知する。放電回路15は、例えば、直列接続された半導体スイッチと抵抗素子等によって構成され、制御部10によって半導体スイッチがオン/オフ制御されることにより二次電池14を間欠的に放電させる。
【0016】
二次電池14は、例えば、鉛蓄電池、ニッケルカドミウム電池、ニッケル水素電池、または、リチウムイオン電池等によって構成され、オルタネータ16によって充電され、スタータモータ18を駆動してエンジンを始動するとともに、負荷19に電力を供給する。オルタネータ16は、エンジン17によって駆動され、交流電力を発生して整流回路によって直流電力に変換し、二次電池14を充電する。
【0017】
エンジン17は、例えば、ガソリンエンジンおよびディーゼルエンジン等のレシプロエンジンまたはロータリーエンジン等によって構成され、スタータモータ18によって始動され、トランスミッションを介して駆動輪を駆動し車両に推進力を与えるとともに、オルタネータ16を駆動して電力を発生させる。スタータモータ18は、例えば、直流電動機によって構成され、二次電池14から供給される電力によって回転力を発生し、エンジン17を始動する。負荷19は、例えば、電動ステアリングモータ、デフォッガ、イグニッションコイル、カーオーディオ、および、カーナビゲーション等によって構成され、二次電池14からの電力によって動作する。
【0018】
図2は、
図1に示す制御部10の詳細な構成例を示す図である。この図に示すように、制御部10は、CPU(Central Processing Unit)10a、ROM(Read Only Memory)10b、RAM(Random Access Memory)10c、通信部10d、I/F(Interface)10eを有している。ここで、CPU10aは、ROM10bに格納されているプログラム10baに基づいて各部を制御する。ROM10bは、半導体メモリ等によって構成され、プログラム10ba等を格納している。RAM10cは、半導体メモリ等によって構成され、プログラムbaを実行する際に生成されるデータや、後述するテーブルまたは数式等のパラメータ10caを格納する。通信部10dは、上位の装置であるECU(Electronic Control Unit)等との間で通信を行い、検出した情報を上位装置に通知する。I/F10eは、電圧センサ11、電流センサ12、および、温度センサ13から供給される信号をデジタル信号に変換して取り込むとともに、放電回路15に駆動電流を供給してこれを制御する。
【0019】
(B)実施形態の動作原理の説明
つぎに、図を参照して、実施形態の動作原理について説明する。
図3は二次電池14のSOCと充電受け入れ性の関係を示す図である。この
図3に示すように、二次電池14のSOCが0〜A1%の範囲は、充電受け入れ性は良いが、エンジン17の再始動不可のおそれがあるSOC範囲である。また、SOCがA1〜A2%の範囲は、充電受け入れ性は良く、エンジン17の再始動不可のおそれがないSOC範囲である。さらに、SOCがA2〜100%の範囲は、充電受け入れ性は悪いが、エンジンの再始動不可のおそれがないSOC範囲である。本実施形態では、
図3のSOCがA1〜A2%の範囲となるように制御することで、回生発電時において、オルタネータ16が発生した電力を、効率よく二次電池14に充電することを可能とし、これによって、燃費性能を改善することができる。
【0020】
つぎに、本発明の詳細な動作原理を、
図4を参照して説明する。
図4は、二次電池14のSOCと、二次電池14の充電電流との関係を示す図である。この
図4において、間隔の長い破線は二次電池14の充電可能な最大電流を示し、間隔の短い破線は二次電池14に供給可能な最大電流を示している。より詳細には、間隔の短い破線で示す二次電池14に供給可能な最大電流は、オルタネータ16の容量と負荷電流によって定まるため、二次電池14のSOCがB3よりも小さい場合には一定の値(この
図4の例ではIc)となる。一方、間隔の長い破線で示す二次電池14の充電可能な最大電流は、SOCが大きくなるにつれて減少する。このため、間隔の短い破線で示す二次電池14に供給可能な最大電流と、間隔の長い破線で示す二次電池14の充電可能な最大電流とが交わるポイントであるB3よりもSOCが大きくなった場合には、SOCの増加とともに、オルタネータ16から供給される電流は充電されなくなる。
【0021】
そこで、本発明の実施形態では、二次電池14に供給可能な最大電流を示す間隔の短い破線と、二次電池14の充電可能な最大電流を示す間隔の長い破線とが交差するB3よりもマージン分だけ小さいB2をSOCの上限値とするとともに、B2より所定量低いSOCをB1と定義し、二次電池14のSOCがB1〜B2の範囲となるように制御を行うことで、回生発電の際の二次電池14の受け入れ性を向上させ、燃費の改善を図ることができる。なお、エンジン17の再始動が確保できるSOCよりも所定量高いSOCをB1とし、二次電池14のSOCがB1〜B2の範囲となるように制御を行うようにしてもよい。さらに、
図4に示すB1が、
図3に示すA1を下回る場合には、SOCの制御を停止し、二次電池14の交換を促すようにしてもよい。
【0022】
ところで、
図4に示す、B3のポイントは、二次電池14の状態、経年変化、周辺の温度等によって異なる。このため、本発明の実施形態では、例えば、エンジン17を始動した際に、このB3となるポイントを検出し、検出したB3からB2を求める。そして、求めたB2に基づいて充電制御を行う。これについて、
図5および
図6を参照して説明する。
【0023】
図5は、二次電池14のSOCが
図4に示すB3よりも少し小さい状態からB3を超える状態に変化した場合における、回生発電時の電流と電圧の関係を示している。
図5の最上段に示すように、この例では、車両は走行と回生とを繰り返し実行している。時間t3よりも前の状態では、二次電池14のSOCはB3よりも小さい状態であるので、二次電池14はオルタネータ16によって定電流(Constant Current)による充電が実行される。すなわち、オルタネータ16から二次電池14へは一定の電流Icが流れ、二次電池14の電圧は充電の進行に応じて増加する。そして、時間t3よりも後になると、オルタネータ16から二次電池14に流れる電流はIcよりも小さくなるとともに、二次電池14の端子電圧は一定になることから、定電圧(Constant Voltage)充電に移行する。
【0024】
図6は、定電流充電から定電圧充電に変化する場合の電圧と電流の時間的変化を示している。この
図6に示すように、定電流充電の状態ではオルタネータ16から二次電池14に流れる電流は一定であることから電流の時間的変化ΔI≒0となり、二次電池14に印加される電圧の時間的変化ΔV>0となる。そして、定電流充電から定電圧充電に変化すると、二次電池14に印加される電圧は一定であることから電圧の時間的変化ΔV≒0となり、オルタネータ16から二次電池14に流れる電流の時間的変化ΔI<0となる。
【0025】
本実施形態では、エンジン17が始動された場合には、まず、二次電池14のSOCが増加するように制御を行う。これによって、二次電池14のSOCが増加し、
図4に示すB3を超えた場合には、定電流充電から定電圧充電に変化するので、この変化点を検出してB3とする。ここで、変化点を検出する方法としては、例えば、電圧Vと電流Iを所定の間隔(例えば、数ミリ秒〜数十ミリ秒間隔)で測定する。そして、測定した電圧Vと電流Iの時系列データを古い順にV3,V2,V1,V0およびI3,I2,I1,I0とした場合に、
図7に示すように、電圧が単調増加から一定に変化するとともに、電流が一定から単調減少に変化するタイミングのSOCをB3に設定する。そして、変化点を特定した後は、このB3から数%(例えば1%)を減じて得た値をB2としてSOCの上限に設定するとともに、B2より所定量低いSOCをB1に設定し、二次電池14のSOCがこのB1〜B2の範囲内に収まるように充電制御を行う。なお、前述したように、エンジン17の再始動が確保できるSOCよりも所定量高いSOCをB1とし、二次電池14のSOCがB1〜B2の範囲となるように制御を行うようにしてもよい。
【0026】
このような制御によれば、二次電池14は、
図4に示すB2よりもSOCが低い状態に保たれることから、回生発電が行われた場合には、オルタネータ16から供給される電流が全て二次電池14に受け入れられて蓄積されることになる。この結果、回生充電時の充電効率を高めることで、自動車の運動エネルギを電気エネルギに変換して効率良く蓄えることができる。また、変化点のSOCであるB3ではなく、マージンを有するB2を上限として使用することで、例えば、回生充電中にB3を超えてしまうことで、電力が充電されずに浪費されることを防止できる。なお、マージン値としては、1回の回生充電でのSOCの増加は、車種や二次電池14の種類にもよるが、一般的には1%以内であるので、1%をマージン値とすることができる。もちろん、余裕をみて数%に設定してもよい。
【0027】
つぎに、
図8を参照して本発明の実施形態の動作をより具体的に説明する。
図8において、実線は車速の時間的な変化を示している。この図の例では、時間T1において車両は加速を始め、時間T2で定速走行に移行し、時間T3から減速し、時間T4で停車している。一方、二点鎖線は従来技術により二次電池14に流れる充電電流を示し、一点鎖線は本実施形態により二次電池14に流れる充電電流を示している。これらを比較すると、従来技術では、二次電池14のSOCが
図4に示すB3を超えた状態で運用される場合があり、その場合にはオルタネータ16から供給される電流を全て受け入れできないため、二点鎖線で示すように電流が時間の経過とともに減少する。それに対して、本実施形態では、二次電池14のSOCは
図4に示すB2を超えない状態で運用されることから、一点鎖線で示すように、波形がクリップすることなく、最大の電流がオルタネータ16から二次電池14に流れる。このため、回生による充電を効率良く実行することができる。本実施形態により、減速時に二次電池14を効率良く充電することで、アイドリング時、加速時、および、定速走行時等における充電の頻度を低下させ、燃費を改善することができる。
【0028】
つぎに、
図9および
図10を参照して、本実施形態において実行される処理の一例について説明する。まず、
図9はエンジン17の始動から停止までに実行される処理の一例を説明するためのフローチャートである。このフローチャートの処理が開始されると、以下のステップが実行される。
【0029】
ステップS10では、CPU10aは、SOCmaxを前回算出してから所定時間以上が経過したか否かを判定し、所定時間以上が経過したと判定した場合(ステップS10:Yes)にはステップS13に進み、それ以外の場合(ステップS10:No)にはステップS11に進む。例えば、前回算出してから1日以上が経過している場合には、所定時間以上が経過していると判定してステップS13に進む。なお、この処理は、前回算出から所定時間以上が経過していない場合には、電池の状態が大幅には変化しないことから、前回測定したSOCmaxを再使用できるからである。
【0030】
ステップS11では、CPU10aは、前回算出したSOCmaxを使用すると判定する。この結果、前回のSOCmaxが
図10の処理によって使用され、充電の制御がなされることになる。
【0031】
ステップS12では、CPU10aは、B2=SOCmax−mrg1によってB2を求めるとともに、B1=B2−mrg2によってB1を求める。なお、このB2は、
図4に示すB2に対応し、また、mrg1は、
図4に示すB3とB2の差分(=B3−B2)に対応する値である。mrg1としては、例えば、数%程度(好適には1%)とすることができる。なお、このようにマージンを設定するのは、マージンを持たせない場合には、回生充電中にB3を超えてしまって、定電圧充電に移行してしまうことを防止するためである。mrg1の具体的な値としては、一般的には1回の回生充電で増加するSOCは1%以内であるので、1%に設定すればよい。もちろん、余裕をみて数%に設定してもよい。また、B1としては、B2より所定量(=mrg2)低いSOCをB1に設定する。このmrg2としては、例えば、数%程度とすることができる。なお、B1をB2から求めるのではなく、エンジン17の再始動が確保できるSOCよりも所定量高いSOCをB1としてもよい。
【0032】
ステップS13では、CPU10aは、変数V0〜V3に格納されている電圧値を一つずつ移動させる。すなわち、3回前の処理で測定されて変数V2に格納されている電圧値を変数V3に移動し、2回前の処理で測定されて変数V1に格納されている電圧値を変数V2に移動し、1回前の処理で測定されて変数V0に格納されている電圧値を変数V1に移動する。
【0033】
ステップS14では、CPU10aは、変数I0〜I3に格納されている電流値を一つずつ移動させる。すなわち、3回前の処理で測定されて変数I2に格納されている電圧値を変数I3に移動し、2回前の処理で測定されて変数I1に格納されている電流値を変数I2に移動し、1回前の処理で測定されて変数I0に格納されている電流値を変数I1に移動する。
【0034】
ステップS15では、CPU10aは、変数SOC0〜SOC3に格納されているSOCの値を一つずつ移動させる。すなわち、3回前の処理で算出されて変数SOC2に格納されているSOCの値を変数SOC3に移動し、2回前の処理で算出されてSOC1に格納されているSOCの値を変数SOC2に移動し、1回前の処理で算出されて変数SOC0に格納されているSOCの値を変数SOC1に移動する。
【0035】
ステップS16では、CPU10aは、電圧センサ11および電流センサ12の出力を参照して最新の電圧値および電流値を取得してV0およびI0にそれぞれ格納するとともに、例えば、電流の積算によって求めた最新のSOCの値をSOC0に格納する。なお、SOCを算出する方法としては、例えば、エンジン17の停止時であって、二次電池14の状態が安定しているときに、放電回路15を用いて二次電池14をパルス放電させ、そのときの電圧および電流から計算される内部抵抗を用いてSOCを求めることができる。あるいは、二次電池14の電圧変動が安定したと判定されるときの電圧値(開回路電圧)からSOCを求めることができる。そして、エンジン17の始動後は、このSOCに対して二次電池14に流れる電流を積算することで、その時点のSOCを求めることができる。なお、SOCはこれ以外の方法によって算出するようにしてもよい。
【0036】
以上のステップS13〜S16の処理により、変数V0〜V3に
図7に示す時系列の電圧値が格納され、変数I0〜I3に
図7に示す時系列の電流値が格納され、変数SOC0〜SOC3に
図7に示す電圧および電流に対応する時系列のSOCの値が格納される。
【0037】
ステップS17では、CPU10aは、最新の電圧V0がVchgよりも大きいかを判定し、大きい場合(ステップS17:Yes)にはステップS18に進み、それ以外の場合(ステップS17:No)には処理を終了する。ここで、Vchgは、回生充電が行われているか否かを判定するための閾値電圧であり、検出した電圧がVchgを超えている場合には、回生充電が行われていると判定する。なお、Vchgとしては、例えば、14Vを用いることができる。
【0038】
ステップS18では、CPU10aは、|V0−V1|<Vth1かつV2−V3>Vth2が満たされるか否かを判定し、これらの条件をともに満たす場合(ステップS18:Yes)にはステップS19に進み、それ以外の場合(ステップS18:No)には処理を終了する。ここで、1番目の条件である|V0−V1|<Vth1は、
図7に示すようにV0≒V1であることを示し、2番目の条件であるV2−V3>Vth2は、
図7に示すようにV2>V3であることを示すため、
図7に示すt3のタイミングで、これらの2つの条件がともに満足されることになる。なお、閾値Vth1,Vth2に関しては、例えば、Vth1として0.01V、Vth2として0.05Vを用いることができる。なお、これらの閾値Vth1,Vth2は、サンプリング周期によって異なるので、サンプリング周期および環境等に応じて適切な値を用いることが望ましい。
【0039】
ステップS19では、CPU10aは、I0−I1<Ith1かつ|I2−I3|<Ith2であるか否かを判定し、これらの条件をともに満たす場合(ステップS19:Yes)にはステップS20に進み、それ以外の場合(ステップS19:No)には処理を終了する。ここで、1番目の条件であるI0−I1<Ith1は、
図7に示すようにI0<I1であることを示し、2番目の条件である|I2−I3|<Ith2は、
図7に示すようにI2≒I3であることを示すため、
図7に示すt3のタイミングで、これらの2つの条件がともに満足されることになる。なお、閾値Ith1,Ith2に関しては、例えば、Ith1として−0.05A、Ith2として0.01Aを用いることができる。なお、これらの閾値Ith1,Ith2は、前述したように、サンプリング周期によって異なるので、サンプリング周期および環境等に応じて適切な値を用いることが望ましい。
【0040】
ステップS20では、CPU10aは、SOCmax=(SOC1+SOC2)/2によってSOCmaxを求める。なお、SOCmaxは、
図4のB3に対応する値である。また、SOC1は
図7に示すV1,I1を測定したタイミングで算出したSOCであり、SOC2は
図7に示すV2,I2を測定したタイミングで算出したSOCである。このため、SOC1とSOC2の平均のSOCを求めることで、時間t3におけるSOCに相当する値を求めることができる。なお、平均値を求めるのではなく、SOCmax=SOC1またはSOCmax=SOC2としてもよい。そのような方法によれば、計算を簡略化することができる。
【0041】
ステップS21では、CPU10aは、ステップS12の場合と同様に、B2=SOCmax−mrg1によってB2を求めるとともに、B1=B2−mrg2によってB1を求める。なお、mrg1およびmrg2の値の求め方については、前述したステップS12の場合と同様である。
【0042】
以上の処理により、エンジン17の始動後において、定電流充電から定電圧充電への変化点であるt3を検出し、検出したt3前後のSOC2,SOC1からSOCmaxを求めるとともに、このSOCmaxに基づいてB2を算出することができる。
【0043】
つぎに、
図10を参照して、車両が走行中に実行される処理の一例について説明する。
図10に示す処理が実行されると、以下のステップが実行される。
【0044】
ステップS30では、CPU10aは、二次電池14のその時点におけるSOCを算出する。なお、SOCを求める方法としては、前述したステップS16で説明した方法と同じ方法を用いることができる。
【0045】
ステップS31では、CPU10aは、ステップS30で算出したSOC>B1であるか否かを判定し、この条件を満たす場合(ステップS31:Yes)にはステップS32に進み、それ以外の場合(ステップS31:No)にはステップS33に進む。ここで、B1は、
図9のステップS12またはステップS21で求めた値を用いることができる。
【0046】
ステップS32では、CPU10aは、ステップS30で算出したSOC<B2であるか否かを判定し、この条件を満たす場合(ステップS32:Yes)にはステップS33に進み、それ以外の場合(ステップS32:No)にはステップS34に進む。ここで、B2は、
図9のステップS12またはステップS21で求めた値を用いることができる。
【0047】
ステップS33では、CPU10aは、オルタネータ16を制御して、発電を開始させるか、または、発電中である場合には発電を継続させる。これにより、二次電池14のSOCがB1より大きく、かつ、B2より小さい場合(B1<SOC<B2の場合)、または、SOCがB1以下である場合(B1≦SOCの場合)には、二次電池14の充電が開始または継続されることになる。
【0048】
ステップS34では、CPU10aは、オルタネータ16を制御して、発電を停止させる。これにより、二次電池14のSOCがB2以上の場合(B2≧SOCの場合)には、二次電池14の充電が停止されることになる。
【0049】
以上の処理によれば、SOCがB2未満である場合にはオルタネータ16による充電が開始または継続され、SOCがB2以上である場合にはオルタネータ16の発電が停止される。
【0050】
(D)変形実施形態の説明
以上の実施形態は一例であって、本発明が上述したような場合のみに限定されるものでないことはいうまでもない。例えば、以上の実施形態では、
図4に示すように、定電流充電から定電圧充電へ変化する変化点のSOCであるB3から所定のマージンmrg1を減じて得たB2に基づいて制御を行うようにしたが、もちろん、mrg1=0に設定する場合も本発明に含まれるものである。
【0051】
また、以上の実施形態では、SOCの下限値B1はB2からマージンmrg2を減じて求めるようにしたが、B1を固定値(例えば、60%)としてもよい。あるいは、温度センサ13によって検出される温度に応じて変更するようにしてもよい。例えば、エンジン17の始動が困難になる気温が低い場合にはB1の値を一時的に大きくするようにしてもよい。
【0052】
また、B1とB2の差が小さくなった場合には、二次電池14の劣化が進行したと判定し、エンジン17の再始動を優先するために、B2以上に充電されるようにしてもよい。
【0053】
また、
図9に示す処理では、
図7に示す時間t3のタイミングでステップS20に進んでSOCmaxを求めるようにしたが、時間t3の検出を逃してしまう場合も想定される。そのような場合には、例えば、
図11に示す処理によって、SOCmaxを求めることができる。なお、
図11において
図7と対応する部分には同一の符号を付してその説明を省略する。
図11では、
図7に比較すると、ステップS50およびステップS51の処理が追加されている。これら以外は
図7と同様であるので、以下では、ステップS50,S51を中心に説明する。ステップS18において、CPU10aが、|V0−V1|<Vth1かつV2−V3>Vth2が満たされるか否かを判定し、これらの条件をともに満たす場合(ステップS18:Yes)にはステップS19に進み、それ以外の場合(ステップS18:No)にはステップS50に進む。ステップS50では、CPU10aは、|V0−V1|<Vth1かつ|V2−V3|<Vth1であるか否かを判定し、これらの条件をともに満たす場合(ステップS50:Yes)にはステップS51に進み、それ以外の場合(ステップS50:No)には処理を終了する。例えば、時間t3のタイミングを逃してしまった場合、V1〜V3は
図7に示すCV充電の期間の傾きがほぼ0の直線上に配置され、その場合、|V0−V1|<Vth1かつ|V2−V3|<Vth1が成立することからステップS51に進む。ステップS51では、CPU10aは、I0−I1<Ith1かつI2−I3<Ith1であるか否かを判定し、これらの条件をともに満たす場合(ステップS51:Yes)にはステップS20に進んでSOCmaxを算出し、それ以外の場合(ステップS51:No)には処理を終了する。例えば、時間t3のタイミングを逃してしまった場合、I1〜I3は
図7に示すCV充電の期間の傾きがマイナスの直線上に配置され、その場合、I0−I1<Ith1かつI2−I3<Ith1が成立することからステップS20に進んで、SOCmaxが算出される。以上に説明したように、
図11に示すフローチャートによれば、時間t3のタイミングの検出を逃してしまった場合であっても、SOCmaxを適切に算出することができる。