"エンジンに連動して電力を発生させ、発生させた電力を、前記エンジンの作動中に作動している第1負荷と、該エンジンの動作とは無関係に作動又は停止する第2負荷と、前記第1及び第2負荷に給電するバッテリとに供給する発電機の出力電圧を制御する制御手段を備える発電制御装置において、前記第1負荷に流れる電流の値を記憶している記憶手段と、前記第2負荷に流れる電流の値を検出する検出手段と、前記発電機の発電に係る情報を取得する取得手段と、該取得手段が取得した情報に基づいて前記発電機の出力電流値を推定する推定手段と、前記検出手段が検出した電流の値、前記記憶手段が記憶している電流の値、及び、前記推定手段が推定した出力電流値に基づいて前記バッテリの充放電電流値を算出する算出手段と、該算出手段が算出した充放電電流値を積算する積算手段とを備え、前記制御手段は、該積算手段が積算した積算電流値に応じて前記出力電圧を制御するように構成してあることを特徴とする発電制御装置。前記発電に係る情報は、前記エンジンの回転数、前記発電機の周囲温度値及び出力電圧値、並びに、発電するために前記発電機に供給される界磁電流の値を含むことを特徴とする請求項1に記載の発電制御装置。前記制御手段は、前記積算電流値が放電を示す場合に前記出力電圧を所定範囲内で段階的に高くし、該積算電流値が充電を示す場合に前記出力電圧を前記所定範囲内で段階的に低くし、放電を示す積算電流値が第1電流値を超えた場合に、充電を示す積算電流値が第2電流値を超えるまで、前記出力電圧を、前記所定範囲を超える所定電圧に制御するように構成してあることを特徴とする請求項1又は請求項2に記載の発電制御装置。エンジンに連動して電力を発生させ、発生させた電力を、該エンジンの作動中に作動している第1負荷と、該エンジンの動作とは無関係に作動又は停止する第2負荷と、前記第1及び第2負荷に給電するバッテリとに供給する発電機の出力電圧を制御する発電制御方法において、前記第2負荷に流れる電流の値を検出し、前記発電機の発電に係る情報を取得し、取得した情報に基づいて前記発電機の出力電流値を推定し、検出した電流の値と、予め記憶されており、前記第1負荷に流れる電流の値と、推定した出力電流値とに基づいて前記バッテリの充放電電流値を算出し、算出した充放電電流値を積算し、積算した積算電流値に応じて前記出力電圧を制御することを特徴とする発電制御方法。しかしながら、前記従来の発電制御装置については、車両に搭載されるバッテリの充放電電流値の範囲は、例えば-100Aから100Aまでと広い。従って、電流センサは、範囲の広いバッテリの充放電電流値を検出しなければならず、更に、バッテリが出力する電流の値だけでなく、バッテリに入力する電流の値を検出しなければならない。このため、前記従来の発電制御装置は、このような高機能な電流センサを備えなければならないので、高価であるという問題がある。また、電流センサは、広い範囲の充放電電流値を検出するので定格電力が大きい抵抗が必要であり、前記従来の発電制御装置には抵抗が大きな空間を占めるという問題がある。特許文献1に記載の発電制御装置は、前述したように、バッテリの充放電電流値を検出する電流センサを用いずに、オルタネータの出力電圧の変化を検知し得る信号に応じて、オルタネータの出力電圧を制御するため、安価で小型である。しかし、特許文献1に記載の発電制御装置では、バッテリの充放電電流値を積算した積算電流値に応じて出力電圧を制御していないため、バッテリが負荷に給電している間にオルタネータの出力電圧を低くする可能性がある。この場合、バッテリに十分な電力が蓄えられず、バッテリ上がりを発生させる虞がある。本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、バッテリの充放電電流値を積算した積算電流値に応じて発電機オルタネータの出力電圧を制御することができる安価で小型の発電制御装置及び発電制御方法を提供することにある。本発明に係る発電制御装置は、エンジンに連動して電力を発生させ、発生させた電力を、前記エンジンの作動中に作動している第1負荷と、該エンジンの動作とは無関係に作動又は停止する第2負荷と、前記第1及び第2負荷に給電するバッテリとに供給する発電機の出力電圧を制御する制御手段を備える発電制御装置において、前記第1負荷に流れる電流の値を記憶している記憶手段と、前記第2負荷に流れる電流の値を検出する検出手段と、前記発電機の発電に係る情報を取得する取得手段と、該取得手段が取得した情報に基づいて前記発電機の出力電流値を推定する推定手段と、前記検出手段が検出した電流の値、前記記憶手段が記憶している電流の値、及び、前記推定手段が推定した出力電流値に基づいて前記バッテリの充放電電流値を算出する算出手段と、該算出手段が算出した充放電電流値を積算する積算手段とを備え、前記制御手段は、該積算手段が積算した積算電流値に応じて前記出力電圧を制御するように構成してあることを特徴とする。本発明に係る発電制御装置は、前記発電に係る情報は、前記エンジンの回転数、前記発電機の周囲温度値及び出力電圧値、並びに、発電するために前記発電機に供給される界磁電流の値を含むことを特徴とする。本発明に係る発電制御装置は、前記制御手段は、前記積算電流値が放電を示す場合に前記出力電圧を所定範囲内で段階的に高くし、該積算電流値が充電を示す場合に前記出力電圧を前記所定範囲内で段階的に低くし、放電を示す積算電流値が第1電流値を超えた場合に、充電を示す積算電流値が第2電流値を超えるまで、前記出力電圧を、前記所定範囲を超える所定電圧に制御するように構成してあることを特徴とする。本発明に係る発電制御方法は、エンジンに連動して電力を発生させ、発生させた電力を、該エンジンの作動中に作動している第1負荷と、該エンジンの動作とは無関係に作動又は停止する第2負荷と、前記第1及び第2負荷に給電するバッテリとに供給する発電機の出力電圧を制御する発電制御方法において、前記第2負荷に流れる電流の値を検出し、前記発電機の発電に係る情報を取得し、取得した情報に基づいて前記発電機の出力電流値を推定し、検出した電流の値と、予め記憶されており、前記第1負荷に流れる電流の値と、推定した出力電流値とに基づいて前記バッテリの充放電電流値を算出し、算出した充放電電流値を積算し、積算した積算電流値に応じて前記出力電圧を制御することを特徴とする。本発明に係る発電制御装置及び発電制御方法にあっては、エンジンの作動中に作動している第2負荷に流れる電流の値を検出し、発電機の発電に係る情報を取得し、取得した情報に基づいて発電機の出力電流値を推定する。そして、検出した電流の値と、予め記憶されており、第1負荷に流れる電流の値と、推定した出力電流値とに基づいてバッテリの充放電電流値を算出し、算出した充放電電流値を積算する。積算した積算電流値に応じて発電機の出力電圧を制御する。第1負荷には、エンジンが作動中、一定の電流値が流れているため、第1負荷に流れる電流の値を検出する必要はなく、記憶しておけば良い。また、第2負荷は、例えば、車両に搭載される負荷であり、第2負荷に流れる電流の値は、バッテリの充放電電流値よりも小さい。更に、第2負荷に入力される電流の値のみを検出すれば良い。このため、安価な機器を用いて第2負荷に流れる電流の値を検出することができる。また、発電機の出力電流値を推定するための発電に係る情報として、従来の車両で他の制御に用いられる情報、例えばエンジンの回転数を用いることができる。従って、検出した電流の値、記憶している電流の値、及び、推定した出力電流値を基づいて、安価な構成でバッテリの充放電電流値を算出することができ、更に、算出した充放電電流値を積算した積算電流値に応じてバッテリの出力電圧を制御することができる。また、第2負荷に流れる電流の値が小さく、電流の値を検出するために定格電力が小さい抵抗を用いることができるので、本発明に係る発電制御装置にあっては検出手段が小型になる。本発明に係る発電制御装置にあっては、発電に係る情報として、エンジンの回転数、発電機の周囲温度値及び出力電圧値、並びに、発電するために発電機に供給される界磁電流の値を含む情報が用いられるので、発電機の出力電流値が正確に推定される。本発明に係る発電制御装置にあっては、制御手段は、積算電流値が放電を示す場合に発電機の出力電圧を所定範囲内で段階的に高くし、積算電流値が充電を示す場合に出力電圧を同様の所定範囲内で段階的に低くする。更に、制御手段は、放電を示す積算電流値が第1電流値を超えた場合、充電を示す積算電流値が第2電流値を超えるまで発電機の出力電圧を、所定範囲を超える所定電圧に制御する。このように、積算したバッテリの充放電電流値に応じて発電機の出力電圧を制御することよって、発電機による無駄な発電が削減され、バッテリ上がりが防止される。本発明によれば、バッテリの充放電電流値を積算した積算電流値に応じて発電機の出力電圧を制御することができる安価で小型の発電制御装置、及び、該発電制御装置が発電機の出力電圧を制御する発電制御方法を実現することができる。以下、本発明をその実施の形態を示す図面に基づいて詳述する。図1は、本発明に係る発電制御装置及び発電制御方法の実施の形態の要部構成を示すブロック図である。この発電制御装置1は、端子11,12,13を備えている。端子11はバッテリ2及びオルタネータ3の正極端子に接続され、端子12は負荷41,42夫々の一方の端子に接続され、端子13は負荷51の一方の端子に接続される。バッテリ2及びオルタネータ3の負極端子、並びに、負荷41,42,51夫々の他方の端子は接地されている。バッテリ2は、オルタネータ3からの電力を蓄え、発電制御装置1を介して負荷41,42,51に給電する。オルタネータ3は、エンジン6に連動して発生させた交流電力を整流し、整流された直流電力を、バッテリ2と、発電制御装置1を介して負荷41,42,51に供給する。また、オルタネータ3は、発電するためにオルタネータ3に供給される界磁電流の値If図2参照を検出し、検出した界磁電流の値Ifを発電制御装置1に通知する。更に、オルタネータ3は、発電制御装置1から自身が出力すべき電圧の値を指示する指示情報を受け付け、受け付けた指示情報が指示する値で電圧を出力する。オルタネータ3は特許請求の範囲における発電機に該当する。負荷41,42夫々は、エアーコンディショナーを制御するECUElectronicControlUnit又は車両に搭載されるセンサ等であり、エンジン6が作動中に作動している。エンジン6の作動中、負荷41,42夫々には一定の電流が流れる。負荷41,42夫々は特許請求の範囲における第1負荷に該当する。負荷51は、例えばブロアモータであり、エンジン6の動作に無関係に作動又は停止する。負荷51は特許請求の範囲における第2負荷に該当する。温度検出部7は、オルタネータ3近傍に配置され、オルタネータ3の周囲温度値を検出し、検出した温度値を制御部14に通知する。発電制御装置1は、端子11,12,13の他に、制御部14、記憶部15及び電流検出部16を備えている。端子11は端子12と接続しており、電流検出部16の一方の端子は端子11,12間の接続ノードに接続される。電流検出部16の他方の端子は端子13に接続される。制御部14は記憶部15に接続する。制御部14は、記憶部15から負荷41,42夫々に流れる電流の値を読み出し、電流検出部16が検出した負荷51に流れる電流の値を電流検出部16から受け付ける。また、制御部14は、エンジン6の回転数、オルタネータ3の周囲温度値及び出力電圧値、並びに、発電するために供給される界磁電流の値Ifを含むオルタネータ3の発電に係る情報を取得する。ここで、制御部14は、温度検出部7及びオルタネータ3夫々に接続されており、周囲温度値を温度検出部7から取得し、直接に電圧値を検出することによってオルタネータ3の出力電圧値を取得する。また、制御部14は、エンジン6の回転数を例えばエンジン6を制御するECUから、界磁電流の値Ifをオルタネータ3から取得する。制御部14は、取得した発電に係る情報からオルタネータ3の出力電流値を推定する。発電に係る情報として、エンジン6の回転数、オルタネータ3の周囲温度値及び出力電圧値、並びに、発電するためにオルタネータ3に供給される電流の値を含む情報が用いられるので、制御部14は、オルタネータ3の出力電流値を正確に推定することができる。記憶部15には、オルタネータ3の周囲温度値及び出力電圧値の種々の組み合わせについて、エンジン6の回転数とオルタネータ3の出力電流値との関係を示すグラフを界磁電流の値If毎に記憶している図3参照。制御部14は、取得した発電に係る情報に対応するオルタネータ3の出力電流値を、記憶部15が記憶しているグラフから推定する。制御部14は、記憶部15から読み出した負荷41,42夫々に流れる電流の値、検出した負荷51に流れる電流の値、及び、推定したオルタネータ3の出力電流値に基づいてバッテリ2の充放電電流値を算出する。本実施の形態では、オルタネータ3の出力電流値から負荷41,42,51に流れる電流の値を減算することによって充放電電流値が算出される。この場合、正の充放電電流値はバッテリ2の充電を示し、負の充放電電流値はバッテリ2の放電を示す。記憶部15には、これまでに制御部14が算出した充放電電流値を積算した積算電流値が記憶されており、制御部14は、記憶されている積算電流値に、算出した充放電電流値を加えることによって、算出した充放電電流値を積算する。制御部14は、積算電流値に応じた指示情報をオルタネータ3に与え、オルタネータ3は、受け付けた指示情報が指示する値の電圧を出力する。制御部14は、積算電流値を記憶部15に記憶する。なお、正及び負夫々の充放電電流値はバッテリ2の充電及び放電を示すので、正及び負夫々の積算電流値もバッテリ2の充電及び放電を示す。制御部14は、積算電流値がバッテリ2の放電を示す場合にオルタネータ3の出力電圧を所定範囲、例えば12V~14Vの範囲内で段階的に高くしてオルタネータ3が発生させる電力を増やす。また、制御部14は、積算電流値がバッテリ2の充電を示す場合にオルタネータ3の出力電圧を同様の所定範囲内で段階的に低くしてオルタネータ3が発生させる電力を減らす。更に、制御部14は、放電を示す積算電流値絶対値が第1電流値IdId>0を超えた場合、充電を示す積算電流値が第2電流値Icを超えるまで、オルタネータ3の出力電圧を前述の所定範囲を超える所定電圧、例えば15Vに制御する。第2電流値Icは、バッテリ2が満充電であるか否かを判定するための閾値である。制御部14は、特許請求の範囲における制御手段、取得手段、推定手段、算出手段及び積算手段に該当する。記憶部15は、負荷41,42夫々に流れる電流の値、エンジン6の回転数とオルタネータ3の出力電流値との関係を示すグラフ、第1電流値Id、第2電流値Ic、及び、制御部14がこれまでに積算した積算電流値を記憶しており、制御部14によって読み出される。記憶部15では、制御部14によって積算電流値が更新される。記憶部15は特許請求の範囲における記憶手段に該当する。電流検出部16は、自身を介して負荷51に流れる電流の値を検出し、検出した値を制御部14に通知する。電流検出部16は特許請求の範囲における検出手段に該当する。図2はオルタネータ3の要部構成を示すブロック図である。オルタネータ3は、ステータコイル31、フィールドコイル界磁32、電流検出部33、レギュレータ34及び整流回路35を有している。ステータコイル31は、Y結線された3つのコイルL1,L2,L3を、フィールドコイル32はコイルL4を有する。整流回路35は、6つのダイオードD1,D2,D3,D4,D5,D6を有する三相ブリッジ整流回路である。コイルL1の一方の端子にコイルL2,L3夫々の一方の端子が接続される。ダイオードD1,D2,D3夫々のアノードは、ダイオードD4,D5,D6のカソードに接続する。更に、ダイオードD1及びD4間の接続ノード、ダイオードD2及びD5間の接続ノード、並びに、ダイオードD3及びD6間の接続ノード夫々に、コイルL1,L2,L3夫々の他方の端子が接続される。ダイオードD1,D2,D3夫々のカソードは、バッテリ2の正極端子、及び、発電制御装置1の端子11に接続される。ダイオードD4,D5,D6夫々のアノード端子は接地される。レギュレータ34は第1、第2及び第3端子を有し、電流検出部33は、レギュレータ34の第1端子、及び、コイルL4の一方の端子の間に接続され、コイルL4の他方の端子はレギュレータ34の第2端子に接続される。レギュレータ34の第3端子は、バッテリ2の正極端子、及び、端子11に接続される。ステータコイル31はフィールドコイル32を囲繞している。界磁電流が流されて磁界を発生させているフィールドコイル32がエンジン6によって回転され、フィールドコイル32が発生させている磁界が回転する。これにより、ステータコイル31から三相交流電圧が発生し、オルタネータ3が発電する。フィールドコイル32は、ステータコイル31に囲繞されており、エンジン6によって回転可能に構成してある。フィールドコイル32は、レギュレータ34によって、値Ifの界磁電流が流されて磁界を発生させ、エンジン6によって回転させられる。フィールドコイル32の回転と共に、フィールドコイル32が発生させている磁界は回転する。電流検出部33は、レギュレータ34がフィールドコイル32に流す界磁電流の値Ifを検出し、検出した界磁電流の値Ifを制御部14に通知する。レギュレータ34は、制御部14から指示情報を受け付け、受け付けた指示情報が指示する電圧に対応する値Ifの界磁電流を、電流検出部33を介して、フィールドコイル32に流す。レギュレータ34は界磁電流の値Ifを制御してステータコイル31が発生させる電圧を一定に保つ。レギュレータ34はバッテリ2によって給電される。整流回路35はステータコイル31で発生した三相交流電圧をダイオードD1,D2,D3,D4,D5,D6によって整流し、整流した電圧を、バッテリ2と、発電制御装置1を介して負荷41,42,52とに与える。整流回路35からバッテリ2及び負荷41,42,51に流れる電流の値は、エンジン6の回転数、オルタネータ3の周囲温度値及び出力電圧値、並びに、フィールドコイル32に流れる界磁電流の値If等に依存する。図3はエンジン6の回転数とオルタネータ3の出力電流値との関係を示すグラフである。図3では、オルタネータ3の周囲温度値及び出力電圧値夫々がT0及びV0である状態で、フィールドコイル32に流れる界磁電流の値If=I1,I2,I3夫々について、エンジン6の回転数とオルタネータ3の出力電流値との関係を示すグラフが示されている。ここで、界磁電流の値はI3,I2,I1の順に大きい。図3に示すように、界磁電流の値IfがI1,I2,I3と大きくなるにつれて、同一のエンジン6の回転数に対応するオルタネータ3の出力電流値は大きくなる。記憶部15は、If=I1,I2,I3以外の場合についてのエンジン6の回転数とオルタネータ3の出力電圧値との関係を示すグラフも記憶している。更に、記憶部15は、周囲温度値T0及び出力電圧値V0の組み合わせについてだけではなく、他の周囲温度値及び出力電圧値の組み合わせについても、エンジン6の回転数とオルタネータ3の出力電流値との関係を示すグラフを記憶している。制御部14は、取得したオルタネータ3の周囲温度値及び出力電圧値、並びにフィールドコイル32に流れる界磁電流の値Ifに応じたエンジン6の回転数とオルタネータ3の出力電流値との関係を示すグラフを記憶部15から読み出す。制御部14は、読み出したグラフから、取得したエンジン6の回転数に対応するオルタネータ3の出力電流値を推定する。図4はバッテリ2の積算電流値の推移の一例を説明するための説明図である。図4には縦軸を積算電流値、横軸を時間とした積算電流値の推移が示されている。積算電流値が正、即ち充電を示す場合、制御部14はオルタネータ3の出力電圧を所定範囲内で段階的に低くし、オルタネータ3の発電を抑制する。これにより、積算電流値は小さくなる。積算電流値が負、即ち放電を示す場合、制御部14はオルタネータ3の出力電圧を所定範囲内で段階的に高くし、オルタネータ3により大きい電力を発生させる。これにより、積算電流値は大きくなる。従って、積算電流値がゼロ、即ち、オルタネータ3が発生させる電力が負荷41,42,51全体で消費される電力と同じになるように、オルタネータ3の出力電圧が調整される。また、発電制御装置1については、例えば、負荷41が停止状態から作動状態になり、負荷41,42,51に流れる電流の値がオルタネータ3の出力電流値よりも大きく上回った場合、負の積算電流値の絶対値が第1電流値Idを超える可能性がある。図4では、負の積算電流値が-Idを下回った場合に、負の積算電流値の絶対値が第1電流値Idを超える。負の積算電流値の絶対値が第1電流値Idを超えた場合、制御部14は、積算電流値が負から正になり、正の積算電流値が第2電流値Icを超えるまで、オルタネータ3の出力電圧を、所定範囲を超える所定電圧に維持する。正の積算電流値が第2電流値Icを超えた場合、バッテリ2が満充電になったことを意味する。正の積算電流値が第2電流値Icを超えた後、制御部14は、再び、積算電流値がゼロになるように、オルタネータ3の出力電圧を調整する。制御部14が、バッテリ2の積算電流値に応じて、前述のようにオルタネータ3の出力電圧を制御することによって、無駄な発電が削減され、バッテリ上がりを防止することができる。図5及び図6は制御部14が実行する動作の手順を示すフローチャートである。制御部14は、エンジン6が作動している間、図5及び図6に示す動作を実行し続ける。まず、制御部14は、負荷51に流れる電流の値を検出しS1、オルタネータ3の発電に係る情報を外部から取得するS2。制御部14は、ステップS2で取得した発電に係る情報からオルタネータ3の出力電流値を推定するS3。制御部14は、負荷41,42夫々に流れる電流の値を読み出しS4、ステップS3で推定した出力電流値からステップS1で検出した電流の値、及び、ステップS4で読み出した電流の値を減算することによってバッテリ2の充放電電流値を算出するS5。制御部14は、記憶部15から、これまでに算出した充放電電流値を積算した積算電流値を読み出し、読み出した積算電流値にステップS5で算出した充放電電流値を加えることによって、充放電電流値を積算するS6。制御部14は、ステップS6で積算した積算電流値を記憶部15に記憶するS7。制御部14は、ステップS6で積算した積算電流値がバッテリ2の放電を示すか否かを判定するS8。ステップS6で積算した積算電流値が負である場合、制御部14はバッテリ2の放電を示すと判定し、積算電流値が正である場合、制御部14はバッテリ2の充電を示すと判定する。制御部14は、積算電流値がバッテリ2の放電を示さない、即ち、バッテリ2の充電を示すと判定した場合S8:NO、指示情報をオルタネータ3に与えて、オルタネータ3の出力電圧を所定範囲、例えば12V~14Vの範囲内で所定電圧だけ低くするS9。制御部14は、ステップS9を実行した後、ステップS1に戻る。これにより、制御部14は、積算電流値がバッテリ2の放電を示すまで、オルタネータ3の出力電圧を段階的に低くする。制御部14は、積算電流値がバッテリ2の放電を示すと判定した場合S8:YES、負の積算電流値の絶対値が第1電流値Idを超えているか否かを判定するS10。制御部14は、負の充放電電流値の絶対値が第1電流値Idを超えていないと判定した場合S10:NO、指示情報をオルタネータ3に与えて、オルタネータ3の出力電圧を所定範囲、例えば12V~14Vの範囲内で所定電圧だけ高くするS11。制御部14は、ステップS11を実行した後、ステップS1に戻る。従って、制御部14は、積算電流値がバッテリ2の充電を示すまで、オルタネータ3の出力電圧を段階的に高くする。制御部14は、負の積算電流値の絶対値が第1電流値Idを超えていると判定した場合S10:YES、指示情報をオルタネータ3に与えて、オルタネータ3の出力電圧を前述の所定範囲を超える所定電圧、例えば15Vに制御するS12。制御部14は、ステップS12を実行した後、ステップS13~S19を順次実行する。ステップS13~S19夫々は、ステップS1~S7と同じであるので、説明を省略する。制御部14は、ステップS19を実行した後、負の積算電流値が正になり、正の積算電流値が第2電流値Icを超えているか否かを判定するS20。制御部14は、正の積算電流値が第2電流値Icを超えていないと判定した場合S20:NO、ステップS12に戻り、正の積算電流値が第2電流値Icを超えてバッテリ2が満充電になるまで、オルタネータ3の出力電圧を前述の所定電圧に維持する。制御部14は、正の積算電流値が第2電流値Icを超えていると判定した場合S20:YES、ステップS1に戻る。本実施の形態にあっては、負荷41,42夫々には、エンジン6が作動中、一定の電流値が流れているため、負荷41,42夫々に流れる電流の値を検出する必要はなく、記憶部15が負荷41,42夫々に流れる電流の値を記憶し、制御部14は記憶部15から電流の値を読み出せば良い。また、負荷51に流れる電流の値は、バッテリ2の充放電電流値よりも小さく、更に、バッテリ2又はオルタネータ3から負荷51に入力される電流の値を検出すれば良いため、電流検出部16を安価に構成することができる。また、負荷51に流れる電流の値は小さいので、電流検出部16を、定格電力が小さい抵抗を用いて小型に構成することができ、発電制御装置1を小型に構成することができる。また、発電に係る情報に、他の制御に用いられる情報、例えばエンジン6の回転数を用いることができる。従って、制御部14は、電流検出部16が検出した電流の値、記憶部15が記憶している電流の値、及び、発電に係る情報から推定したオルタネータ3の出力電流値に基づいて、安価な構成でバッテリ2の充放電電流値を算出することができる。更に、制御部14は、算出した充放電電流値を積算し、積算した積算電流値に応じてバッテリ2の出力電圧を制御することができる。なお、制御部14によるオルタネータ3の出力電圧の発電制御方法は前述した方法に限定されない。制御部14は、例えば、バッテリ2の積算電流値が放電を示す場合にオルタネータ3の出力電圧を段階的に高くし、バッテリ2の積算電流値が充電を示す場合にオルタネータ3の出力電圧を段階的に低くするだけでも良い。また、発電に係る情報に、エンジン6の回転数、オルタネータ3の周囲温度値及び出力電圧値、並びに、発電するためにオルタネータ3に供給される界磁電流の値If全てを含まなくても良い。また、バッテリ2の充放電電流値の算出方法は、オルタネータ3の出力電流値から負荷41,42,51に流れる電流の値を減算する方法に限定されず、負荷41,42,51に流れる電流の値からオルタネータ3の出力電流値を減算する方法でも良い。この場合、正の充放電電流値又は積算電流値は放電を示し、負の充放電電流値又は積算電流値は充電を示す。また、エンジン6が作動中に作動している負荷の数は、負荷41,42の2つに限定されず、1つ又は3つ以上であってもよい。また、エンジン6の動作に無関係に作動又は停止する負荷の数は、負荷51の1つに限定されず、2つ以上であってもよい。この場合、エンジン6の動作に無関係に作動又は停止する2つ以上の負荷夫々は端子13を介して電流検出部16に接続され、電流検出部16は前述の2つ以上の負荷で構成される負荷群に流れる電流の値を検出する。開示された実施の形態は、全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上述の説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。"