(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおけるバッテリのバッテリ充電レベルをモニタする装置であって、
前記バッテリを充電する手段と、
前記バッテリの現在の充電レベル値をストアする手段と、
前記バッテリの充電電流をモニタし、前記バッテリの前記充電電流に基づいて前記バッテリの充電レベル値を増加させる手段と、
前記コンピュータシステムの正常な操作に基づいて前記バッテリの放電電流をモニタし、前記バッテリの前記放電電流に基づいて前記充電レベル値を減少させる手段と、
前記バッテリが予め決定されたレベルまで放電したときを決定する手段と、
前記バッテリが予め決定されたレベルまで放電したときを決定する前記手段と前記充電レベル値をストアする前記手段とに結合されている調整手段とを備え、
前記調整手段は、前記バッテリが予め決定された充電レベル値まで放電されたときに残存している充電レベルの一部分に等しい量でもって前記バッテリのフル充電値を変更するように動作可能であることを特徴とする装置。
【請求項２】
前記バッテリの温度を測定する手段と、
前記バッテリの電圧を測定する手段とをさらに備え、
前記フル充電値を変更させる前記手段は、もし前記バッテリ温度が予め決定されたレベルまで上昇し、そして、もし前記バッテリ電圧が予め決定されたレベルより上であるならば、前記フル充電値を変更しないことを特徴とする請求の範囲第１項に記載の装置。
【請求項３】
前記バッテリの充電レベルを決定し、前記バッテリが自己放電状態に入る前にバッテリ充電レベル値をセットする手段と、
前記バッテリが前記自己放電状態において費やした時間の量を決定する手段と、
前記バッテリ充電レベルを決定する前記手段及び前記自己放電状態において費やした時間を決定する前記手段に結合されて、前記バッテリが前記自己放電状態において費やした前記時間に基づく量でもって前記バッテリ充電レベル値を減少させる手段とを備えていることを特徴とする請求の範囲第１項に記載の装置。
【請求項４】
前記バッテリ充電レベル値を減少させる前記手段は、前記バッテリが前記自己放電状態において費やした時間の量に従って選択された複数の値の１つでもって前記バッテリ充電レベル値を減少させることを特徴とする請求の範囲第３項に記載の装置。
【請求項５】
前記自己放電状態において費やした時間の量を決定する前記手段は、もし前記バッテリが前記自己放電状態に入る前にフル充電されていたならば、複数の繰り返される予め決定された時間間隔のそれぞれの満了を示す手段を含み、
前記バッテリ充電レベル値を減少させる前記手段は、前記自己放電状態の間に第１の前記繰り返される予め決定された時間間隔が満了した後に、第１の予め決定されたパーセント比率でもって前記バッテリ充電レベル値を減少させることを特徴とする請求の範囲第３項に記載の装置。
【請求項６】
前記バッテリ充電レベル値を減少させる前記手段は、もし前記バッテリが前記自己放電状態に入る前にフル充電されていたならば、前記繰り返される予め決定された時間間隔のそれぞれの満了後に、それぞれ予め決定されたパーセント比率でもって前記バッテリ充電レベル値を減少させることを特徴とする請求の範囲第５項に記載の装置。
【請求項７】
前記バッテリが前記自己放電状態において費やした時間の量を決定する前記手段は、予め決定された期間を持ちかつこの予め決定された期間の後に信号を作り出すタイマーと、このタイマーに結合されて、前記信号が前記タイマーによって作り出される回数を計数する手段とを含むことを特徴とする請求の範囲第３項に記載の装置。
【請求項８】
（ａ）前記バッテリが予め決定された期間放電した後、または、（ｂ）前記バッテリが十分に放電されてから予め決定された回数の部分的な充電が行われた後に、前記バッテリ充電値が無効であることを示す手段をさらに備えていることを特徴とする請求の範囲第１項に記載の装置。
【請求項９】
予め決定された時間間隔で前記バッテリに供給される充電電流を測定する手段と、
前記バッテリの温度を測定する手段と、
前記充電電流を測定する前記手段及び前記バッテリ温度を測定する前記手段に結合されて、前記予め決定された時間間隔に前記測定された充電値を乗算した値に基づいて増加する充電値を加えることによって、そして、前記測定された温度の予め決定された一部分に等しい値を引くことによって、前記バッテリの充電レベルを修正する手段とをさらに備えていることを特徴とする請求の範囲第１項に記載の装置。
【発明の詳細な説明】
本発明は、バッテリの充電容量と充電レベルを正確にモニタするバッテリ充電コントローラに関する。
コンピュータは、ACパワーが手に入らない場所で必要となる多くの機会がある。再充電できるバッテリは、代表的にACパワーの代わりのソースとして例えば、携帯用コンピュータに直流パワーを数時間供給することができるニッケルカドミウム（NiCd）及びより最近でニッケル金属水素化物（NiMH）が使われる。再充電できるバッテリが限定された寿命を持っているので、各バッテリの寿命を最大にし、どの放電サイクルの間にも各バッテリから最大のパワーを得ることは望ましい。これらの目標を成し遂げるためには、温度酷使と過充電を起さないでバッテリに充分に能率的に充電することが必要である。
現在用いられている多くのバッテリ充電器は、再充電できるバッテリを能率的に充電せず、従ってバッテリの有効寿命を制限している。いくらかの幾つかのバッテリ充電器は、1990年10月12日に出願された米国特許出願シリアル番号596,223及び1991年５月16日に出願された米国特許出願シリアル番号701,657で表わされるように、バッテリ電圧があまりにも低く或はバッテリ温度が許容できる急速充電温度範囲内でない時に、急速充電を避けるために温度と電圧をモニタしていたが、ほとんどの既知のバッテリ充電器は正確に充電レベルと全体の充電容量を決定する性能を持っていず、それで、バッテリを過充電するかもしれず、従ってその有効寿命を減少させている。例えば多くのNiCdバッテリ充電器はバッテリ電圧がピークに達して減少し始めるまで急速充電を続けている。しかしながら、この負電圧変更方法は幾度がバッテリを過充電して、ダメージと電圧低下を起こすることが解った。代表的なNiMHバッテリ充電器は、バッテリを過充電して、セル中の水素化物を酸化させる傾向がある。
NiCdおよびNiMHバッテリの温度酷使と過充電の１つの理由は、電圧が非常に広範囲に亙る充電レベルに拘わらずかなり同じであるので、充電レベルを決定することが困難であった。更に、もしバッテリが外されて交換されたならば、システムはバッテリの充電経過及び残りの充電レベルを決定するどんな方法も持っていなかった。幾つかの方法は使用期間に亙ってバッテリを通る充放電電流をモニタすることによって充電レベルを見積もった。しかし、これらの方法は、充電の初期レベルを仮定していた。部分的に放電されたバッテリが使われた時には、これらの方法が不正確であると判明した。放電レベルが所定のシステムで所定のバッテリのために測定されるが、バッテリが代表的に交換でき、もしバッテリが交換されたならば、システムは新しいバッテリの充電レベルを決定できない。勿論、再充電できるバッテリは、自己放電として参照される未使用の期間中に放電しがちであり、所定期間に電力が切られその後給電されたシステムは起こった自己放電の量を決定する如何なる方法も持たなかった。
更にバッテリの全充電容量は、アンペア時間（AH）定格として代表的に参照され、時間と使用期限を変える傾向がある。例えばバッテリは、充電容量が代表的に増加し、その後バッテリが結局電荷を保持しないで交換しなければならない時まで、使用時間を減少させている。例えばNiCdバッテリは、多数の多様な部分的充放電サイクルの後により低い容量となるメモリ効果を持っている。
バッテリウオッチとして知られているパソコンで使われる１つの特定のテクニックは、充放電の経過時間に基づいて残っている充電の量を見積もり、これを残りの有効時間に変換することである。このテクニックは、バッテリの全充電容量が使用時間を変えない仮定しているので、あてにならないと判明した。このテクニックは、さらに充電及び放電の履歴を保持することに失敗し、自己放電を考慮していない。
それゆえ、その最大の有効寿命を減少させないで可能な限り速く能率的にバッテリを充電することが望ましい。このゴールを成し遂げるためには、急速充電がバッテリを過充電しないで適当な時間で終えられなければならない。勿論、自己放電及び減少した容量のような要因を考慮して、いかなる所定時間での充電レベルと同様に全充電容量を正確に計算しモニタして、使用者にこの情報を供給することが望ましい。
本発明によるバッテリ充電コントローラ（モニタ）及び残量計は、充電しながらバッテリ電圧と温度と同様にニッケルカドミウム（NiCd）或はニッケル金属水素化物（NiMH）バッテリを流れる充放電電流を連続的にサンプルし、バッテリ中の全充電容量と残っている充電レベルを正確に計算している。本発明は、バッテリとして全てがバッテリパックに配置され、電力がバッテリ自身によって供給された、メモリと通信ポートを有するマイクロコントローラ回路を含む。この方法で、バッテリコントローラは、バッテリの充電状態をいつもモニタし、充電情報をストアし、バッテリパックに接続されたコンピュータシステムに充電情報を供給している。
アナログを適宜用いる全電荷即ちタンク容量は、バッテリセル製造業者によって定義されるアンペア時間（AH）定格であると元来仮定されるが、使用時間及び限度が連続的に更新される。特に、バッテリが予め決定された放電電圧レベルで決定されるフル放電に達した時には、どの残りの計算された充電レベルが正負いずれかであっても２で割られ、その後既に計算されたタンク容量から引き算され、従って新しいタンク容量を形成する。従って、連続サイクルに亙るタンク容量値は、特定のバッテリの状態を適応させる。バッテリがフル充電される時には、充電レベルがタンク容量と等しいようにセットされる。
本発明に従った充電コントローラ回路は、いつでもバッテリ中の残っている充電レベルを正確に示す連続性を維持する残量計を含む。また、充電コントローラ回路は、バッテリを通る充電か放電電流を定期的にサンプルし、これを充電レベルに加算或は同レベルから引き算されるクーロン即ち充電量カウント変換する。マイクロコントローラは周期的に、電流測定回路の不正確さに起因するオフセット電圧を測定し、このオフセットを引き算してデータの正確さを保証する。本発明は、充電中の非能率を考慮し、バッテリを急速充電しながら、充電中のクーロンカウントから温度と比例した要因を引き算することによって電荷の正確なレベルを維持する。勿論残っている充電の秒数が充電レベルを放電瞬間率で割算して、計算することができる。
本発明に従った充電コントローラ回路は、未使用の期間を計数し、未使用の期間に基づいた自己放電による合計の電荷の百分率を引き算することによって、バッテリの自己放電をモニタする。
本発明による充電コントローラ回路は、NiCdおよびNiMHバッテリを含む種々の型のバッテリのための急速充電の最適な終端ポイントをも正確に決定する。急速充電中は、回路がバッテリの電圧及び温度の変化をモニタする。もし、バッテリの充電容量と電圧が上記予め決定されたレベルであり、もし温度が予め決定された量を上昇して電圧が安定するならば、急速充電が終了させられる。この特有の方法は、バッテリの両方のタイプのために働いて、温度酷使と過剰充電を防止する。急速充電が終わると、ある予め決定された少量電流における仕上げ充電が、予め決定された短い期間形成される。仕上げ充電後、安定化している少量量は供給されられる。電圧及び温度変化及び仕上げ充電の使用と同様に充電容量をモニタすることによって、バッテリの温度酷使が殆ど減少し或はなくなり、バッテリの有効寿命と容量を長引かせる。
発明のより良い理解は、好ましい実施例の以下の詳細な記述が、以下の図面に関連して熟慮されるときにもたらされる。
図１は本発明に従ったバッテリ充電コントローラ及びモニタを使っているコンピュータシステムの概略ブロック図である。
図２は図１のバッテリパックの概略ブロック図である。
図3Aと3Bが図１のバッテリパックのより詳細な概略回路図である。
図4A−4Gは、図２のマイクロコントローラで操作される本発明に従ったソフトウェアプログラムの操作を例証しているフローチャート図である。
今図１を参照すると、着脱自在のACアダプタＡ及び着脱自在のバッテリパックＢに接続されたコンピュータシステムＣが示される。このコンピュータシステムＣは、ACパワーが容易に利用できない時にバッテリパックＢから或はACアダプタＡからパワーを受電するように設計される。ACアダプタＡは、AC電力を変換して、コンピュータシステムＣに接続されている接地及び信号VBATT間に18ボルトの電圧を好ましく供給する。また、バッテリパックＢは、VBATT信号と接地の間で接続されて、ACアダプタＡが接続されていない時にコンピュータシステムＣのVBATT信号及び接地間に約13ボルトの公称電圧を好ましく供給する。
また、ACアダプタＡは、バッテリパックＢ内の再充電できるバッテリ20を充電する電力を供給する。バッテリパックＢは、外されて、別の急速充電装置（図示略）に置かれる。ACアダプタＡと急速充電装置は非常に類似した方法でバッテリ20を充電する電力を供給するので、ACアダプタＡだけを検討する。
再充電できるバッテリ20は、好ましくは、VBATT信号に接続された正端子と、NEGとして参照する信号に接続された負端子とを持つ10セルのニッケルカドミウム（NiCd）或はニッケル金属水素化物（NiMH）バッテリである。このバッテリ20は、好ましくはバッテリ20がフル充電される時に、VBATTとNEG信号の間に13.2ボルトの公称電圧を供給し、この電圧がバッテリ20の充電レベルに依存してわずかに変化し、バッテリ20が充電されている時に通常増加する。バッテリ20は、もしNiMHタイプバッテリであるならば、好ましくは製造業者によって仕様されるように1.95AHのオリジナルのアンペア時間（AH）定格を持っている。バッテリは、NiCdバッテリであるならば、好ましくは1.65AHの定格を持っている。AH定格は、充電容量が時間と使用限度で変化するが、別にタンク容量か分母として参照されるバッテリ20のオリジナル充電容量を決定する。実際、AH定格は、その電圧がバッテリ20の各セル毎に好ましく1.1ボルトである放電電圧レベルと等しくなるまで、フル充電されたバッテリセルを放電して形成された全クーロン数を計算することによって、バッテリセル製造業者の仕様書シートに由来する。NiMHのための1.95AH定格とNiCdのための1.65AH定格は、新しいバッテリパックが誘導された定格にその容量を結局増加するように誘導された定格よりわずかに低い。
好ましい実施例において、充電制御及びモニタ回路22は、バッテリ20と同じバッテリパックＢに内蔵され、VBATTとNEG信号に接続されている。好ましくはナショナルセミコンダクタ社製のLM35である温度センサ24は、バッテリ20に熱伝導良く接触して取付けられて、バッテリ20の温度と比例した電圧レベルを持つ信号TEMPを供給する。TEMP信号は、充電制御及びモニタ回路22に供給される。充電制御及びモニタ回路22は、SERLINKとして参照する信号でデータを受信及び供給受信するシリアル通信ポートを含む。コンピュータシステムＣは、SERLINK信号に接続され、コンピュータシステムＣと充電制御及びモニタ回路22が1200ビットの率でSERLINK信号を経て直列データを好ましく交換することができるように好ましくは80C51キーボードコントローラを含む。
今図２を参照すると、図１のバッテリパックＢの簡略化されたブロック図が示される。図3A及び図3BはバッテリパックＢの更なる詳細を含んで、図２の論議を通して参照される。VBATT信号であるバッテリ20の正端子は、＋5Vとして参照する５ボルト電源信号を供給する好ましくはLM2936の電圧調整器の入力に接続される。＋5V信号は、FVCCとして参照する濾過された５ボルト信号を供給するLCフィルタ32によって濾過される。FVCC信号は、好ましく東芝で製作されたTMP47C241のCMOS4ビットマイクロコントローラであるマイクロコントローラ34のVCC入力端子に接続される。マイクロコントローラ34は、2kバイトの読出専用メモリ（ROM）36と、64バイトのランダムアクセスメモリ（RAM）38と、内部タイマ40と、SERLINK信号に接続された４ビットシリアル・インタフェースとを含む。それぞれAIN0とAIN1とAIN2とAIN3として参照されるマイクロコントローラ34の４つのアナログ入力は、AIN0−AIN3入力のいずれかに供給されたアナログ信号を２つの16進数デジットと解釈される比例８ビット２進数に変換する内部の８ビットアナログ／デジタル（A/D）コンバータ41に接続される。SWVCCとして参照される切換可能の５ボルト信号は、後述される内部のA/Dコンバータ41にアナログレファレンス電圧を供給するために、マイクロコントローラ34に接続されている。マイクロコントローラ34は、好ましくはホールド状態即ちスリープ状態になった時に、バッテリ20から非常に小さいパワーを引き出せるホールド機能を含む。これは、充電制御及びモニタ回路22がバッテリ20からそのパワーの全てを得なければならないので、バッテリパックＢがACアダプタＡとコンピュータシステムＣから除去される時に行われる。それで、マイクロコントローラ34は、WAKEUP信号がハイになった時に、スリープリクエストを供給する信号WAKEUPに接続されている入力HOLD＊を含む。信号名或は入力名の終わりのアステリスクは、別に特定しない限りローにアサートされる時にアクティブである信号を参照する。アステリスクなしの信号名は反転信号である。WAKEUP信号がハイの時に、マイクロコントローラ34は正常に動作している。
＋5V信号はWAKEUP信号に接続された出力を持つプログラム可能のユニジャンクショントランジスタ（PUJT）回路42の入力に接続されている。このPUJT回路42は、抵抗でプルアップされたWAKEUP信号を殆ど５秒間ローにさせる５秒の期間を持つウエイクアップタイマとして動作する。もしWAKEUP信号がハイにアサートされないならば、マイクロプロセッサ34を通常動作に起こすために、５秒毎に一度WAKEUP信号にハイパルスをアサートする。PUJT回路42は、非常に極めて少ないパワーを消費するので、既知の市販タイマよりむしろ使われ、それで、バッテリ20がフル放電される前の自己放電のより長い期間を許容する。ダイオード148（図3Aを参照）は、WAKEUP信号に接続された陰極と、SERLINK信号に接続されている陽極とを持ち、SERLINK信号がハイにアサートされた時にWAKEUP信号がハイに引かれる。
＋5V信号は、マイクロコントローラ34によって供給される信号SWVCCON＊によって制御されたパワースイッチ44に接続されている。このスイッチ44は、好ましくは５ボルトである切換可能のSWVCC信号を供給する。マイクロコントローラ34がSWVCCON＊信号をハイに引き上げる時には、SWVCC信号が切られて、オープンコレクタ出力を形成する。SWVCCON＊信号がローにアサートされる時に、＋5V信号からのパワーがSWVCC信号に供給される。
このSWVCC信号は、充電測定増幅器46と、放電測定増幅器48と、温度測定増幅器50と、電圧測定回路52と、温度センサ24に接続されて、これらにパワーを供給する。これら充電、放電、温度及び電圧測定増幅器46−52の操作と機能が以下により詳細に記述される。これら回路は、SWVCC信号がスイッチオンする時のみ動作して、パワーを受容する。このように、充電制御及びモニタ回路22は、測定増幅器46−52及びバッテリ20からのパワーをできる限り少なく長時間に引き出すために必要な時にのみの温度センサ24を活発化させる。これは、ACアアダプタＡが未接続で、バッテリ20がコンピュータシステムＣに給電している時に重要である。
バッテリの負端子は、少量充電回路54および急速充電回路56にも接続されたNEG信号に接続されている。少量充電回路54と急速充電回路56両者は、センサ抵抗58の一端に接続された信号FCFSに接続されている。このセンサ抵抗58の他端が接地されている。NEG信号は、２つのＮチャンネルエンハンストメント型金属酸化物半導体電界効果トランジスタ（MOSFET）60と62（図3A）のドレイン端子に接続され、MOSFET60と62のソース端子が、FCFS信号に接続されている。MOSFET60と62のゲート端子が、PNPバイポーラトランジスタQ6のコレクター端子に接続されている。マイクロコントローラ34からの信号FETSON＊が、抵抗64の一端に接続され、この抵抗64の他端がトランジスタQ6のベースに接続されている。トランジスタQ6のエミッタが＋5V信号に接続されている。
MOSFET60と62は、並列接続されて、オンになった時にそれらの有効抵抗値を減少させ、電流処理能力を増加させている。FETSON＊信号がハイにアサートされた時には、トランジスタQ6のバイアスがオフになってMOSFET60と62がオフになる。これらMOSFET60と62がオフになった時には、非常に高いインピーダンスがドレイン及びソース端子間に現れ、従って、急速充電回路56をバッテリ20の充電路から効果的に除去して、少量充電回路54がバッテリ20を通る電流を制御する。しかしながら、MOSFET60と62は、ソース及びドレイン端子間に、MOSFET60と62がオフになった時に、バッテリ20からコンピュータシステムＣにいくらかの電力を供給できる内部ダイオードを持っている。FETSON＊信号がローにアサートされた時には、トランジスタQ6のバイアスがオンになり、従ってMOSFET60と62がオンになり、MOSFET60と62のドレイン及びソース端子間に非常に低いインピーダンスを起こして、少量充電回路54をバッテリ20の充電路回路から効果的に除外する。
この少量充電回路54は、好ましくはNS社で製作されて、NEG信号に接続された入力端子と、FCFS信号に接続された調整端子と、２つの抵抗66と68の一端に接続された出力端子とを持つLM317の３端子可変調整器65を含む。抵抗66及び68の他端は、Ｎチャンネル  エンハンストメント型MOSFETトランジスタ72のドレイン端子及び抵抗70の一端に接続される。MOSFETトランジスタ72のソース端子と抵抗70の他端はFCFS信号に接続され、MOSFET72のゲート端子がプルアップ抵抗74の一端に接続されている。抵抗74の他端が＋5V信号に接続される。MOSFET72のゲート端子が、マイクロコントローラ34によって供給されられた信号TCOFF＊にも接続されている。この調整器65が、電流源として働き、電流のレベルが調整及び出力端子間の有効抵抗に依存する。
この様に、FETSON＊信号がハイになり、バッテリ20が少量充電回路54を通して微小に充電される時には、マイクロコントローラ34がTCOFF＊信号で少量充電電流のレベルを制御する。TCOFF＊信号がマイクロコントローラ34によってローにアサートされる時には、少量電流が抵抗70中を流れるように、MOSFET72がオフにさせられる。調整器65と抵抗66と68と70は、約５ミリアンペアに少量電流を好ましく制限される。５ミリアンペアの少量電流は、バッテリ20の充電レベルを維持することができるメンテナンス充電電流として参照される。TCOFF＊信号がローにアサートされる時には、MOSFET72がオンになり、従って抵抗70を効果的に迂回して、少量充電電流を好ましく約100ミリアンペアに増加させる。100ミリアンペアの少量電流は、急速充電が完了した後の仕上げ充電として、バッテリ20を急速充電前の適当な温度と電圧範囲内にもたらすために使われる。
バッテリ20を通る全有効電流は、FCFS信号が接地されない限り、FCFS信号の電圧がバッテリ20を通る電流と比例するようにセンサ抵抗58を通る。FCFS信号は、充電と放電測定増幅器46と48に供給される。FCFS信号は、抵抗80（図3B）の一端に接続され、この抵抗80の他端がコンデンサ82の一端および演算増幅器84の非反転端子に接続される。コンデンサ82の他端は、接地及び抵抗86の一端に接続され、この抵抗86の他端が演算増幅器84の反転入力に接続されている。フィードバック抵抗88は演算増幅器84の反転入力と出力の間でつながれる。この増幅器84の出力は、CHARGEとして参照する信号である。演算増幅器84は、切換可能のSWVCC信号と接地の間にパワーを受容する。
演算増幅器84は、CHARGE信号がバッテリ20を通る充電電流の10ミリアンペア毎に約19.25ミリボルトの電圧レベルを持つように、好ましく構成される。CHARGE信号は、マイクロコントローラ34がバッテリ20を通る充電電流を２デジットの16進数値に変換し、この値を内部RAM38にストアすることができるように、マイクロコントローラ34のAIN0入力に供給される。バッテリ20が放電している時には、FCFS信号が負になり、CHARGE信号は必須的にゼロにさせられて、従って放電電流を測定しない。
放電測定増幅器48は、充電測定増幅器46と類似した方法で操作される。FCFS信号は、抵抗90の一端に接続され、この抵抗90の他端が演算増幅器92の反転入力に接続されている。抵抗94とコンデンサ96は演算増幅器92の反転入力と出力の間で並列接続される。演算増幅器92の非反転入力は、抵抗98の一端に接続され、この抵抗98の他端が接地されている。演算増幅器92の出力がマイクロコントローラ34のAIN1入力に接続されたDISCHARGEとして参照する信号を形成する。放電測定増幅器48はDISCHARGE信号がバッテリ20を通る放電電流の10ミリアンペア毎に19.25ミリボルトの電圧レベルを持つように、好ましく構成される。マイクロコントローラ34が、放電電流を、後に内部RAM38に記憶できる比例２デジットの16進数値に変換する。バッテリ20が充電されている間、DISCHARGE信号が必須的にゼロに駆動される。
演算増幅器84と90はCHARGEとDISCHARGE信号の不正確なレベルを起こす、必須的に充電と放電電流に加えられたオフセット電圧の重要な量を含む。バッテリ充電コントローラと残量計回路22は、マイクロコントローラ34がオフセット電圧の影響を差し引いて、充電と放電電流の正確な測定値を得ることができるオフセット回路100を含む。マイクロコントローラ34は、信号OFFS5Vを形成するオフセットスイッチ106に信号OFFS5VON＊を供給する。OFFS5VON＊信号がローにアサートされる時には、OFFS5V信号が約５ボルトにハイにアサートされ、もしOFFS5VON＊信号がハイならば、OFFS5V信号がオープンコレクター出力である。このOFFS5V信号は、オフセット回路100を備えた抵抗102及び104の一端に接続されて、抵抗102の他端が増幅器84の非反転入力に接続され、抵抗104の他端が、増幅器92の非反転入力に接続されている。
充電と放電電流の通常測定中には、OFFS5VON＊信号がハイとなり、OFFS5V信号がオープン回路となって、抵抗102及び104の影響を充電及び放電測定増幅器46と48から除去している。しかしながら、OFFS5VON＊信号がマイクロコントローラ34によってローにアサートされて、FETSON＊信号がハイの時には、従って、FCFS信号をローレベルにした時には、抵抗104と98及び抵抗102と80によってそれぞれ決定されるように、OFFS5V信号が演算増幅器84と92の非反転入力に約3.5ミリボルトのバイアスを好ましく設定する。もし演算増幅器84と92がオフセット電圧を持たない理想的であるならば、CHARGE及びDISCHARGE信号両者がマイクロコントローラによって７の16進数値に好ましく変換される約135ミリボルトである。実際の16進数値は、７から引かれて、その後、マイクロコントローラ34によってストアされ、各CHARGE及びDISCHARGE信号の次の受信された値から引かれる16進数の充電と放電オフセット値を形成する。この様に、演算増幅器84及び92のオフセット電圧に起因する誤差が事実上除去される。
上述されるように測定されたオフセット電圧にも拘わらず、充電と放電電流の非常に小さいレベルの間には、マイクロコントローラ34が実際にバッテリ20が充電され、或は放電されているかCHARGEとDISCHARGE信号と見分けることができない。それで、充電ビット回路108（図3B）が形成される。FCFS信号は演算増幅器110の非反転入力に供給され、抵抗112は増幅器110の反転入力と出力の間に接続される。演算増幅器110は、切換可能のSWVCC信号によって電力が供給される。抵抗114及び116の一端は、演算増幅器100の反転入力に接続され、抵抗114の他端がSWVCC信号に接続され、抵抗116の他端が接地される。演算増幅器110の出力は、マイクロコントローラ34への入力として供給されるCHGとして参照された信号である。演算増幅器110は、バッテリ20を充電してる時に、FCFS信号が正であり、CHG信号がハイであるように高利得非反転増幅器として構成される。放電時にはFCFS信号が負であり、CHG信号がローである。
フィルタコンデンサ118は、SWVCCと接地の間で接続されて、温度センサ24用のフィルタを形成する。この温度センサ24は、バッテリ20の摂氏温度（度Ｃ）毎に10ミリボルトの電圧レベルを好ましく持つ信号TEMPを出力から供給する。TEMP信号は、TSENS信号を出力し、マイクロコントローラ344のAIN2アナログ入力に接続されている温度測定増幅器50の入力に供給される。この温度測定増幅器50は、TSENS信号がバッテリ20の摂氏温度（度Ｃ）毎に100ミリボルトのレベルを持つように、約10の利得を好ましく持っている。
バッテリ20の交差電圧を測定するためには、MOSFET60と62をまずオフにさせながら、VBATTとNEG信号の電圧を測定し、その後差をとることが必要である。マイクロコントローラ34は、バッテリ20の交差電圧を測定するために、マイクロコントローラ34で使われる信号MBATT＊を形成する。抵抗136は、MBATT＊とNEG信号の間に接続される。このMBATT＊信号は、ダイオード120の陽極にも接続され、このダイオード120の陰極がマイクロコントローラ34のAIN3入力に供給された信号PRBVに接続されている。マイクロコントローラ34は抵抗122（図3B）の一端およびＮチャンネルエンハンストメントMOSFETトランジスタ124のソース端子に供給された信号VBATON＊を形成する。MOSFET124のゲートと抵抗122の他端は＋5V信号に接続されている。MOSFET124のドレインが、抵抗126の一端に接続され、この抵抗126の他端が、抵抗128の一端と、PNPトランジスタタ130のベース端子とに接続されている。抵抗128の他端とトランジスタ130のエミッタはVBATT信号に接続されている。トランジスタ130のコレクタは、抵抵抗132の一端に接続され、この抵抗132の他端がPRBV信号に接続されている。勿論PRBV信号は、抵抗134の一端に接続され、この抵抗134の他端が抵抗RLADに接続され、抵抗RLADの他端が接地されている。
VBATT信号の電圧を測定するためには、MBATT＊とVBATON＊信号がローにアサートされ、従ってダイオード120を逆バイアスして、トランジスタ130を活発化させるMOSFET124を活発化させる。それで、VBATT信号は、抵抗132と134とRLADを備えた分圧回路及びトランジスタ130を交差して配置される。それゆえPRBV信号の電圧レベルは、マイクロコントローラ34でサンプルされるVBATT信号と比例する。実際RLAD抵抗は、製造業者によってセット及び精度が形成されるプログラムできるラダー抵抗である。NEG信号の電圧を測定するためには、MBATT＊とVBATON＊信号がハイになる。MBATT＊信号は、NEG信号が抵抗136を交差して現れ、ダイオード120を順方向バイアスするように、マイクロコントローラ34によって必須的にオープン回路である。VBATON＊信号は、効果的にトランジスタ130と同様にMOSFETトランジスタ124を不活性化させ、従ってVBATT信号の影響を除去している。NEG信号は、抵抗136とダイオード120と抵抗134とRLADを含む分圧器を交差して供給される。PRBV信号は、マイクロコントローラ34に供給されたNEG信号と比例した電圧である。
図3Aは、今簡潔に記述された追加の回路を含む。内部のタイマ40は、マイクロコントローラ34のT2出力に接続されている。T2出力は、信号PU1に接続され、このPU1信号がプルアップ抵抗140の一端に接続され、抵抗140の他端がFVCC信号に接続されている。PU1信号は、INT2＊として参照されたマイクロコントローラ34の割り込み入力にも接続されている。抵抗140は、PU1信号を通常FVCC信号の５ボルトレベルにプルアップする。タイマー40は、マイクロコントローラ34のINT2＊入力をローにアサートするPU1信号をタイマ40が0.103秒毎に一度ローに引くように、好ましくは0.103秒の期間を持つ約10Hzにプログラムされている。詳細に後述するように、INT2＊信号がローに引かれた時には、マイクロコントローラ34が割り込みルーチンを実行し、CHARGE信号、DISCHARGE信号、TSENS信号、VBATT信号およびNEG信号をサンプルする。
マイクロコントローラ34は信号BATTYPに接続され、この信号BATTYPが抵抗142の一端および抵抗144の一端に接続されている。抵抗142の他端が、信号PD1に接続され、このPD1信号がマイクロコントローラ34に接続されている。抵抗144の他端がPU1信号に接続されている。しかしながら、抵抗142と144は、他がオープン回路になるように１つだけがインストールされる。抵抗142はNiMHバッテリに対応し、NiMHバッテリが使われるならばインストールされる。NiCdバッテリが使われるならば、抵抗144はインストールされる。マイクロコントローラ34が、PD1信号をローにアサートし、NiCdバッテリがインストールされたならばハイ、NiMHバッテリがインストールされたならばローとなるBATTYP信号をモニタする。
マイクロコントローラ34に供給されるSERLINK信号は、マイクロコントローラ34の割り込み入力INT1＊に接続され、抵抗146の一端およびダイオード150の陰極に接続されている。抵抗146の他端とダイオード150の陽極は接接地されている。バッテリパックＢが速い充電器またはコンピュータシステムＣに接続された時には、外部プルアップ抵抗がSERLINK信号を通常ハイに維持する。さもなければSERLINK信号は、抵抗146を通してローに引っ張られる。もしACアダプタＡが接続されていたならば、VBATT信号は、MOSFET60と62がオフに切換えられている、17ボルトより大きい。それで、マイクロコントローラ34は、SERLINKとVBATT信号をモニタして、AC電力源が急速充電に利用できるかどうかを決めることができる。
マイクロコントローラ34は、抵抗152の一端に接続されている出力信号LEDON＊を供給し、この抵抗152の他端が、発光ダイオード（LED）154の陰極に接続され、このLED154の陰極が、＋5V信号に接続されている。マイクロコントローラ34が、LEDON＊信号をローにアサートすることによってLED154を点灯させ、従って、バッテリ20が急速充電中或は急速充電すべきことを指示することができる。440キロヘルツのセラミック共鳴器156は、クロック信号を供給するためにマイクロコントローラ34のXOUTとXIN入力に接続されている。
VBATT信号は、フィルタコンデンサ158の一端、およびダイオード160の陰極に接続され、これらコンデンサ158の他端と、ダイオード160の陽極が接地されている。またVBATT信号が抵抗162の一端に接続され、この抵抗162の他端が、Ｐチャンネルデプレション型接合電界効果トランジスタ（JFET）164のゲート端子に接続されている。このJFET164は、ドレイン端子が接地され、ソース端子は、マイクロコントローラ34のRESET＊入力に接続された信号RESET＊に接続されている。このRESET＊信号は、抵抗166の一端およびコンデンサ168の一端にも接続され、コンデンサ168の他端が接地されている。一方、抵抗166の他端が信号WTO＊に接続され、このWTO＊信号は、マイクロコントローラ34のWTO＊入力に供給されられる。
通常、WTO＊信号はハイであり、バッテリ20は、JFET164がオフになり、RESET＊信号がハイになるように、バッテリパックＢにインストールされる。しかしながら、もしバッテリ20が約５ボルトまで放電されるならば、JFET164がRESET＊信号をローに引き下げ、従ってマイクロコントローラ34をリセットする。かくして、マイクロコントローラ34がメモリ内容を揮発させ得る低電圧レベルで、JFET164は、適当な操作を確実にするために、マイクロコントローラ34をリセットする。このマイクロコントローラ34が、期限が来ないかぎりWTO＊信号を通常ハイに維持するウオッチドッグタイマを含む。これは、正常な操作下で起こらないが、マイクロコントローラ34が暴走したならばウオッチドッグタイマは、マイクロコントローラ34をリセットする。
フィルタコンデンサ170は、マイクロコントローラ34用に接地とFVCC信号の間でつながれる。また、ショットキダイオードの陽極がPRBV信号に接続され、ダイオード172の陰極がFVCC信号に接続されて、PRBV信号がダイオード172の電圧を引いたFVCC電圧下に行かないようにしている。
図4A−4Gは、マイクロコントローラ34のソフトウェアの好ましい操作を説明するフローチャート図である。本発明と関係がある操作だけが示され、あまり重要でない部分が省略されている。図4Aと4Bは、マイクロコントローラ34の主ループと、バッテリパックＢがAC電力源に接続されていない時の操作とを例証する。図4Cは、充電制御及びモニタ回路22とコンピュータシステムＣの間の直列コミュニケーションリンクを記述する。図4D−4Gは、急速充電と少量充電と放電を含む充電状態決定と同様に、充電パラメータの測定を記述する。
今図4Aを参照すると、リセットステップ200は、マイクロコントローラ34が初期的に電力を供給され或はリセットされることを示す。その後マイクロコントローラ34は、RAM38が初期化されて、ソフトウェアによって使われる予め決定された変数をロードする初期化ステップ202を実行する。これは、タンク容量即ち分母及び充電レベル即ち分子と同様に、CHARGE、DISCHARGE、TSENS及びバッテリ20電圧の測定値用のスペース（メモリ空間）を含む。勿論、FETSON＊信号はハイに引っ張られて、MOSFET60及び62をオフにして急速充電及び放電をデセーブルし、LEDON＊信号がハイにアサートされてLED154を消灯し、タイマ40は約10Hzの率でマイクロコントローラ34に割り込みをするために初期化される。従ってバッテリ20は、まず少量充電であると仮定される。その後マイクロコントローラ34は、NiCd或はNiMHバッテリがインストールされたか否かを決定するために、BATTYP信号をモニタするステップ204を実行する。フラグNiCdは、NiCdバッテリがインストールされるならばハイにセットされ、NiMHバッテリがインストールされるとローにリセットされる。またウオッチドッグタイマは、290ミリ秒（MS）毎に期限を好ましく区切るために初期化される。
その後、マイクロコントローラ34は、ラベル208によって示されるように、ソフトウェアの主ループを始めるステップ206を実行する。ラベルメイン208がフローチャートで遭遇されるときはいつでも、操作は、プログラムの主ループのステップ206に戻る。ステップ206でウオッチドッグタイマは、再び初期化される。タイマ40はイネーブルされて、10HzのINT1＊割り込みサイクルの時間を計ることを始める。その後、操作は、それぞれローにアサートされるINT1＊或はINT2＊入力に対応している２つの割り込みINT1＊或はINT2＊の１つの発生を示し、主ループが対応する割り込みルーチンを実行するために抜け出るステップ210に進行する。しかしながら割り込みINT1＊とINT2＊は、メインループの操作中のいかなる時刻でも起こることができ、割り込みルーチンが割り込み点に戻る。最も高い優先割り込みINT1＊は、SERLINK信号がコンピュータシステムＣによってローにアサートされる時に発生するラベル212によって示される。第２の割り込みINT2＊は、充電パラメータが測定されストアされるべきであることを好ましくは0.103秒毎に示すタイマー40によって、PU1信号がローにアサートされる時に起こるラベル214によって示される。
もし、割り込みが起こらないならば、操作は、WAKEUP信号をモニタして、ホールドかスリープリクエストを示すローを決めるステップ216に進む。もしWAKEUP信号がハイならば、操作は、これが正常な操作を示して、ステップ206へ戻る。もし、WAKEUP信号がローならば、マイクロコントローラ34は、VBATT信号を測定して、17ボルトと比較するステップ218を実行する。もし、VBATT信号が17ボルトより大きいと仮定すると、バッテリパックＢがACアダプタＡか充電器に接続されている。もしVBATT信号が17ボルトより大きいならば、操作はステップ206に戻る。もしそうでなければ、主ループに戻り、操作は、図4AでＮとして参照されるウエイクアップカウントと６時間カウントが初期化されるステップ220に進行する。６時間カウントＮはゼロに初期化される。ウエイクアップカウントは、もしバッテリパックＢが未接続ならばPUJTタイマ52がマイクロコントローラ34を６時間内で起こす回数に対応する、６時間期間を５秒間隔で刻んだ数に等しい数4,320に初期化される。その後操作は、マイクロコントローラ34がスリープするステップ220から、ステップ222に進む。
マイクロコントローラ34は、PUJTタイマ42あるいはSERLINK信号をハイにアサートした場合にWAKEUP信号がハイにアサートされる次ステップ224で起こされる。その後操作は、マイクロコントローラ34がSERLINK信号をモニタして、WAKEUP信号がSERLINK信号またはPUJTタイマ42によってハイにアサートされたかどうかを決めるステップ226に進む。もし、SERLINK信号が低いならば、マイクロコントローラ34はPUJTタイマ42によって起こされて、それで、ステップ228に進行する。SERLINK信号がハイならば、マイクロコントローラ34がステップ230を実行する。ステップ228において、マイクロコントローラ34は、VBATT信号の電圧レベルを再び測定して、その信号が17ボルトよりより大きいかどうか決める。もしそうならば、バッテリパックＢがシステムにあり或は充電器に接続されており、操作はステップ230に進む。もし、WAKEUP信号がPUJTタイマ42によってハイにアサートされ、バッテリ電圧がステップ228で決定されるように17ボルトより少ないか等しいならば、操作は、PUJTタイマ42によってそれが始めて起こされたかどうかをマイクロコントローラ34が決めるスステップ232に進行する。これは、６時間カウントＮがゼロであるか、ウエイクアップカウントがデクリメントされなかったかを決定する。もし、マイクロコントローラ34がまず起こされたならば、操作は、増幅器84と92のオフセット電圧が既に記述されたように測定されるステップ234に進行する。
その後操作は、ステップ234から、ウエイクアップカウントがデクリメントされたステップ236に進む。もしウエイクアップカウントがゼロになるならば、６時間カウントＮがインクリメントされ、ウエイクアップカウントが、再び4,320にプリセットされる。従って、ウエイクアップ及び６時間カウントＮは、バッテリパックＢがACパワーから切り離された経過時間を形成し、従って詳細に後述されるように、既知の率で起こるバッテリ20の自己放電の量の決定を許容する。ステップ232に戻って参照すると、もしマイクロコントローラ34が既に起きているならば、操作はステップ236へ直接進む。
ステップ236から操作は、ウエイクアップカウントがゼロに達したか否か、６時間カウントＮがステップ236でインクリメントされたか否かを決定し、従って６時間の経過を示すステップ237に進む。もしそうでなければ、操作はマイクロコントローラ344がスリープするステップ222に戻る。もし６時間が経過したならば、操作は、FAST  CHARGE  COMPLETEフラグをチェックして、既にセットさたか否かを決定するステップ239に進む。FAST  CHARGE  COMPLETEフラグは以後に説明する。もし、FAST  CHARGE  COMPLETEフラグが既にセットされなかったならば、バッテリ20は、自己放電モードに入る前でフル充電されていない。この場合、操作は、バッテリ20の充電レベルを示す残量計として参照される16進数が、６時間の自己放電によって、バッテリ20で浪費した充電量を示す約0.39％減らされるステップ241に進む。これは、部分的に充電されたバッテリ20が自己放電によって１日毎に約1.5％電荷を失うことの実験的観察を反映する。操作はステップ241からステップ222に進む。
ステップ239で決定されるようにFAST  CHARGE  COMPLETEフラグが既にセット、従ってバッテリ20が自己放電する前にフルな充電を完了したことを示すならば、操作は６時間カウントＮが４と比較されるステップ243に進行する。もし６時間カウントＮが４より大きいならば、バッテリ20がフル充電から１日以上自己放電していたことになり、自己放電の率は６時間毎に約0.39％である。従って、操作は残量計を調節するステップ241に進行する。もし６時間カウントＮが４より大きくないならば、操作は、６時間カウントＮがフル充電から第３及び第４の６時間期間を示す３或は４と比較するステップ247に進行する。もし６時間カウントＮが３或は４と等しいならば、操作は残量計が約0.78％に減らされるステップ247に進行する。ステップ247から操作はマイクロコントローラ34がスリープ状態に戻るステップ222に進む。
もし、６時間カウントＮがステップ245で３か４と等しくないならば、操作は６時間カウントＮがナンバー２と比較するステップ249に進行する。もし、６時間カウンタＮがステップ249で２と等しいならば、操作は残量計が約1.5％減らされるステップ251に進行する。ステップ251から操作はステップ222に進む。もし６時間カウントＮがステップ249で２と等しくないならば、その後操作は、NiCdフラグがモニタされるステップ253に進行する。もし、バッテリ20がNiCdであるならば、その後操作は、残量残量計がおよそ３％減らされるステップ255に進行し、その後操作がステップ222に戻る。もしバッテリ20がステップ253でNiMHであるならば、操作は残量計が約６％減らされるステップ257に進行し、その後操作がステップ222に戻る。
要約すると、フル充電されたNiMHバッテリ20が好ましい実施例で使われるように、最初の６時間約６％の率で自己放電し、一方フル充電されたNiCdバッテリ20が好ましい実施例で使われるように、３％の率で最初の６時間自己放電する。もし、バッテリ20が自己放電する前にフル充電されたならば、両型式のバッテリは、２番目の６時間中約1.5％の率で、第３及び第４の６時間中約0.78％の率で、更に次の６時間毎に約0.39％で自己放電する。部分的に放電されたバッテリ20は、バッテリタイプに拘わらず６時間毎に約0.39％の率で放電する。
ステップ230を参照すると、ACパワーが利用可能であるか、或はバッテリパックＢがコンピュータシステムＣに接続されている。もし、バッテリが少くとも６時間自己放電したならば、FAST  CHARGE  COMPLETEフラグはクリアされて、急速充電が初期化できることを示す。その後操作は、残量計が有効性のためにチェックされるステップ238に進行する。残量計は、10日間の自己放電か８回の部分的充電サイクルが起こるまで有効である。もし、残量計が無効であるならば、操作は、残量計が有効でないことを示すFUEL  GAUGE  VALIDフラグがクリアされるステップ240に進行する。残量計が有効か否かのステップ238から或はステップ240から、操作は、バッテリ20が少くとも５日間自己放電したならば、ADJFLAGとして参照するフラグがクリアされるステップ259に進む。このADJFLAGフラグは、さらに下に記述される。ステップ259から、操作は、急速充電がまもなく発生する時からLEDON＊信号をローにアサートすることによってLED154が点灯するステップ242に進行する。その後操作は、ラベル208によって示されるように、主ループに進行する。
今図4Cを参照して、もし、INT1＊割り込みがラベル212によって示されるように、主ループにおいて発生したならば、操作は、マイクロコントローラ34がSERLINK信号で受信された最初の３スタートビットを読込んで、読出あ或は書込コマンドが受信されているか否かを決定するステップ250で始まる割り込みルーチンに進行する。もし、スタートビットが011hであるならば、読出コマンドはラベル252によって示されるように受信されている。もしそうでなければ、操作は、スタートビットが010hと比較されるステップ254に進行する。この010hは、書込コマンドがラベル256によって示されるように受信されていることを示す。もし、スタートビットがステップ254で010hと等しくないならば、書込コマンドが無効と見做され、操作は書込コマンドが無視されたステップ256に進行し、操作は、ラベル208によって示されるように、主ループへ戻る。
もし、コンピュータシステムＣが読出コマンドを送っていることを決定するならば、操作は、マイクロコントローラ34がSERLINK信号をモニタし、ROM36かRAM38でロケーションのアドレスを受信するステップ258に進行する。アドレスがステップ258で受信されたあと、操作はマイクロコントローラ34がハイと保証するSERLINK信号をモニタするステップ260に進行する。このステップは、ノイズが有効なコマンドと解釈されることを防止するフェイルセーフメカニズムとして形成される。もしSERLINK信号がローならば、操作は、受信されたコマンドが無効で、操作がラベル208によって示されるようにメインプログラムループに戻させることをマイクロコントローラ34が決めるステップ262に進行する。
もしSERLINK信号がステップ260でハイならば、操作はマイクロコントローラ34が受信されたアドレス位置に要請されたデータを送るステップ262に進行する。その後操作は、TRANSMITカウントが０と比較するステップ264に進行する。TRANSMITカウントは、システムが安定するまで、放電モードをデセーブルする方法を形成する。このTRANSMITカウントが最初15にセットされ、MOSFET60と62がオフになって、偶発か一時放電を防止する。放電は、15の連続的読出サイクルが起こるまで、イネーブルされない。もし、TRANSMITカウントが０と等しいならば、操作はプログラムの主ループに進行する。さもなければ操作はTRANSMITカウントがデクリメントされたステップ266に進行する。ステップ266から操作はメインループに戻る。
もしスタートビットがステップ254で適当な書込コマンドならば、操作は、書込コマンド用のアドレスがマイクロコントローラ34によって受信されるステップ268に進行する。書込コマンドは、代表的に、バッテリパックＢが新しい時及び使用者に出荷される前のパラメータを初期化するために、製造業者によってだけ実行される。その後、バッテリパックＢはユーザによる書込アクセスを防止するために書込コマンドでロックされている。操作は、ステップ260で実行されたように、SERLINK信号が正確にモニタされるステップ270に進行する。もしSERLINK信号がローならば、操作は、書込コマンドが無効と見做されて、無視されるステップ272に進行し、操作がラベル208によって示されるように主主ループに戻る。もしSERLINK信号がステップ270でハイならば、操作は、受信アドレスで書込まれたデータが回復されるステップ274に進行する。
その後操作は、バッテリがロック或はアンロックされるかを決めるステップ276に進行する。バッテリは、いかなるデータもマイクロコントローラ34のメモリに書込むことができる前に、アンロックコマンドが最初送られるように最初ロックされている。もしバッテリがステップ276でアンロックならば、操作はデータが有効であるかどうかを決めるために、SERLINK信号が再びチェックされるステップ278に進行する。もしSERLINK信号がステップ278でハイならば、操作は、ステップ274で受信されたデータが受信アドレスでマイクロコントローラ34のメモリに書込まれるステップ280に進行する。好ましくは１つのアドレスは、最後の書込コマンドがバッテリをロックすることができるように、ロックされたビットを含む。操作はラベル208によって示されるようにステップ280から主ループに戻る。もしSERLINK信号がステップ278で低いならば、操作はコマンドが無効であると見なすステップ262に進行し、その後操作はプログラムの主ループに戻る。
ステップ276において、もしバッテリがロックされるならば、操作は、データが16進数値好ましくはアンロックコマンドを示す55hと比較するステップ282に進行する。もしデータがステップ282で55hと等しくないならば、バッテリはロック状態に留まり、操作はコマンドが無効であると見なすステップ272に進行する。もしデータがステップ282で55hと等しいならば、操作は、次のデータがマイクロコントローラ34に書込むことができるように、バッテリがアンロックされたステップ284に進行する。操作はステップ284から主主ループに戻って進行する。
今図4Dを参照すると、もし割り込みINT2＊がラベル214によって示されるように受信されるならば、操作は、SWVCCOON＊信号をローにアサートすることによって、マイクロコントローラ34が切換可能のSWVCC信号をスイッチオンするステップ290に進行する。このSWVCC信号は、温度センサ24と同様に、充電、放電、温度及び電圧測定回路46から52にそれぞれ電力を供給する。その後、マイクロコントローラ34は、それぞれAIN0−AIN2入力を通してCHARGEとDISCHARGEとTSENS信号をサンプルし、AIN3入力を通してVBATT信号、従ってPRBV信号を有するNEG信号をサンプルする。上記にリストされた各信号は、測定され、16進数値に変換されて、RAM38にストアされる。
A/Dコンバータ41が、１カウント毎に約19.6ミリボルトを変換するので、CHARGEとDISCHARGE信号は、バッテリ20を通る電流の10ミリアンペア毎に約19.25ミリボルトの電圧レベルを持っている。勿論、マイクロコントローラ34が0.103秒毎にサンプルするので、A/Dコンバータ41の各カウントが約1MA−秒に対応する。タンク容量と残量計値は、１カウント毎に1MA−秒すなわち、タンク容量と残量計及び充電と放電率間の直接対応を形成する16進数ビットにも対応して、マイクロコントローラ34が、もし要望されるならば真の乗算が実行され得るけれども、数学的操作なしに直接を更新することができる。
その後操作は、VBATT信号が17ボルトと比較されるステップ292に進む。もし、VBATT信号が17ボルトと等しく或はより小さいならば、操作は、バッテリ20が充電或は放電されているかを決めるために、マイクロコントローラ34がCHG信号をモニタするステップ294に進行する。もしVBATT信号がステップ292で17ボルトより大きいならば、或はもしCHG信号がステップ294でハイならば、ACパワーが利用可能であり、バッテリ20が充電されて、操作は、マイクロコントローラ34がACPWRフラグをセットするステップ296に進む。もしCHG信号がステップ294でローならば、操作は、SWVCCON＊信号をハイに引き上げて従って切換可能のSWVCC信号をオフにするステップ298に進行する。ACPWRフラグはクリアされ、この点でバッテリ20は、ラベル300によって示されるように放電すべきかを決定する。その後操作は、後述されるようにステップ298からステップ354に進行する。
ステップ296から操作は、マイクロコントローラ34が切換可能のSWVCC信号をオフにするステップ302へ進行しその後操作は、FAST  CHARGE  COMPLETEフラグが急速充電が完了されたかどうかを決めるためにモニタされたステップ304に進行する。もしそうであれば、操作は、ラベル306によって示されるように、バッテリ20への仕上げ充電を形成するステップ386へに進行する。さもなければ、もしFAST  CHARGE  COMPLETEフラグがステップ304でセットされないならば、操作は、バッテリ20が現在急速充電であるかどうかを決めるために急速充電フラグFASTFLGをモニタするステップ308に進行する。もしFASTFLGフラグがセットされるならば、操作は下に記述されるようにステップ309に進行する。もしそうでなければ、操作はおそい充電を示すステップ310に進行する。その後操作は、TRANSMITカウントが15と等しくセットされるステップ312に進行する。それで、TRANSMITカウントは、おそく充電することでゼロに到達しない。
操作は、ステップ312から、バッテリ20の温度が急速充電のために許容温度範囲内である10度Ｃより大きく、40度Ｃより小さいか否かを決定するステップ314に進行する。もし、温度が10及び40度Ｃの間であるならば、操作はバッテリ20の電圧が低電圧レベル好ましくは10ボルトと比較するステップ316に進行する。ステップ316でもしバッテリ電圧が10ボルト丁度或は大きいならば、操作は、急速充電を示すステップ309に進行し、ステップ309でFASTFLGがセットされる。その後操作は、伝送パラメータが15にセットされ、LED154が消灯され、FETSON＊信号がローにアサートされ、従って、MOSFET60と62を活発化して急速充電を初期化するステップ318に進む。TRANSMITカウントは急速充電中にゼロに達しない。
ステップ318から、操作は、温度が50度Ｃと比較されるステップ320に進む。バッテリ20は、50度Ｃが安全と見做さないので温度が50度Ｃを越えるのを許容しない。もし、バッテリ温度が5O度Ｃに等しくないならば、操作は、残量計値が115％に乗算されて乗算結果を、バッテリ20のフル充電容量を示す分母として参照した16進数と比較するステップ322に進行する。もし残量計が分母の115％のレベルに達しないならば、操作は下に記述されたステップ340に進行する。もし残量計が、分母の115％値に届いたならば、操作は、ADJFLAGフラグがクリアされて、タンク容量か分母が後述のように調節されないことを示すステップ326に進行する。その後操作は、急速充電が終了すべきであることを示すステップ328に進行し、FASTFLGフラグがそれゆえにクリアされる。
ステップ320を参照すると、もし温度が5O度Ｃまで増加したならば、操作は、バッテリ20の電圧が最大充電電圧レベル好ましくは14.5ボルトと比較するステップ324に進行する。もしバッテリ電圧がステップ324で14.5ボルトより大きいならば、操作は、前述されるようにADJFLAGフラグがクリアされ、急速充電が終了させられるステップ326に進行する。この様に、温度が5O度Ｃに達して、バッテリ電圧が最大電圧レベル以上に上昇し、或は残量計の容量値が分母の115％に上昇した時には、タンク容量か分母が残量計に基づいて後に調節されず、急速充電が終了する。
ステップ324を参照すると、もしバッテリ20の電圧が14.5ボルトの最大電圧レベル以上に増加しないならば、操作は、FETSON＊信号がハイにアサートされてMOSFET60と62をオフにし、TCOFF＊信号がローにアサートされてMOSFET72をオフにするステップ330に進行する。この様に、バッテリ20は、抵抗70を通して５ミリアンペアのメンテナンス率でおそく充電される。これは、バッテリ20の温度があまりに高く、急速充電が一時的に中断されて、より低い少量率が温度の低下を可能にするために使われるようにフル充電されないことを示す。温度が40度Ｃに低下した時には、急速充電がその後再開される。その後操作は、ラベル208によって示されるように、主ループに進行する。
ステップ314を参照すると、もし温度が10及び40度Ｃの範囲内でないならば、操作は、残量計が増加させられるステップ332に進行する。少量充電が最新の割り込みINT1＊及び更新から0.1秒の間バッテリ20に適用されるので、少量充電値と時間は、乗算され、その後、バッテリ20に加算され、その後残量計に加算されるクーロンカウントに等価な16進数に変換される。その後操作は、ステップ322から、ステップ332と類似して、残量計が分母の115％と比較するステップ334へ進行する。もし残量計が分母の値の115％に届くならば、操作は、前述されるように急速充電の終端を示すステップ328に進行する。もし残量計が115％レベルまで増加しないならば、操作は、ラベル208によって示されるように主ループに戻る。
ステップ322から操作は、残量計が分母の115％に届くか否かのステップ340に進行する。図4Eを参照すると、ステップ340で、残量計のレベルが分母かタンク容量の75％と比較される。もし残量計が、75％レベルまで増加しなかったならば、操作は、充電非能率によって８で割り算されたA/Dコンバータ41から得られた温度の16進数値と同様に、最近の充電が充電レベルに変換されて、残量計に加えて、電圧オフセットを相殺するステップ350に進行する。バッテリ20が急速充電されるので、充電エネルギの幾らかが充電エネルギに変換されるよりむしろ熱に変換されてその温度が上昇する。温度が高くなるほど、バッテリ20が更なる充電を受け付けられないまで充電効率が低くなる。従って、充電非能率要因は温度と比例し、バッテリ20で許容できる実電荷を見積もるために、引き算される。充電非能率要因は、急速充電の間にだけ引き算される。
その後操作は、ステップ350から、ラベル208によって示されるようにメインプログラムループに戻るように進行する。もし残量計がステップ340で分母の75％以上であるならば、操作はバッテリ電圧が14.5ボルトの最大電圧レベルと比較するステップ342に進行する。もしバッテリ電圧が最大電圧レベルより一層少ないならば、操作はステップ350に進行する。さもなければ操作は、バッテリ電圧が先のくり返し前に約0.1秒に実行された最新の測定値から変化したかどうかを決めるステップ344に進行する。もし、バッテリ電圧がステップ344で前に計算されたバッテリ電圧から変化したならば、操作はステップ350へに進行する。さもなければ操作は温度が先の測定値から増加したかどうかを決めるステップ346に進行する。もしそうでなければ、操作はステップ350へに進行する。さもなければ操作は、約２度Ｃに対応して、温度が10の16進数値で増加したかどうかを決めるステップ348に進行する。もし温度が２度Ｃ増加しないならば、操作はステップ350に進行する。さもなければ、もし温度がステップ348で２度Ｃ増加したならば、操作は、FASTFLGがクリアされて、急速充電が終了したことを示すステップ328に進行する。勿論、最後のフル充電からの部分的充電サイクルのカウント数であるPARTIALカウントがクリアされる。
ステップ340−350を要約すると、バッテリ20が急速充電中である時に、もし残量計が分母の少なくとも75％レベルに上昇し、バッテリ20の電圧が少くとも14.5ボルトであるが上昇せず、一方温度が少なくとも２度Ｃで上昇するならば、急速充電の終了点が達成され、急速充電が終端する。もしそうでなければ、急速充電が再開し、残量計は、温度依存の充電非能率を考慮した追加充電によって増加させられる。
ステップ328に遭遇した時操作はFAST  CHARGE  COMPLETEフラグがセットされて、LED154が消灯されるステップ352に進行する。残量計のレベルに拘わらず、残量計は、分母がフル容量を示し、バッテリ20がフル充電されるので、分母と等しくセットされる。その上にFUEL  GAUGE  VALIDフラグはセットされる。勿論、１分タイマは、ステップ352で初期化され、バッテリ20を通る100ミリアンペアの充電電流が、TCOFF＊信号をハイに引くことによってマイクロコントローラ34によって適用される。これは、バッテリ20がフル充電完了後の１分間の100ミリアンペアの少量電流で充電される仕上げ充電として参照される。その後操作は、ラベル208によって示されるようにメインプログラムループに進行する。
放電ラベル300が遭遇されたいかなる時も、操作はACパワーが利用可能であるかどうか決めるために、VBATT信号が17ボルトと比較するステップ354に進行する。もしそうであれば、操作はラベル208で示されるメインプログラムループに進行する。さもなければ、操作は、TRANSMITカウントを０と比較するステップ356に進行する。もしTRANSMITカウントがステップ356で０でないならば、操作は、メインプログラムループに戻り、放電状態に入らない。
各々がTRANSMITカウントをデクリメントする15の連続読出サイクルが、放電に入る前に発生しなければならないことを思い出しなさい。もしTRANSMITカウントがゼロであるならば、操作はLED154が消灯され、FETSON＊信号がローにアサートされ、従って、MOSFET60と62をオンにするステップ358に進行する。その後、バッテリ20は、コンピュータシステムＣで放電され、ACアダプタＡが接続されていない。
ステップ358から操作は、バッテリ20が放電モードに入る前に充電されたかどうかを決めるために、CHRGFLGフラグをモニタするステップ360に進行する。もしCHRGFLGフラグが既にセットされていないならば、操作は、マイクロコントローラ34がTCOFF＊信号をハイにセットし、バッテリが仕上げ充電を受信した直後にクリアされるフラグOFFTRICKもセットして、100ミリアンペアの少量充電をイネーブルするステップ362に進行する。その後操作が、更に後述するようにステップ374に進行する。もしCHRGFLGフラグが既にステップ360でセットされたならば、操作は、マイクロコントローラ34がFAST  CHARGE  COMPLETEフラグをモニタするステップ364に進行する。もしFAST  CHARGE  COMPLETEフラグが既にセットされたならば、操作は、FUEL  GAUGE  VALIDフラグがセットされるステップ366に進行し、その後操作がステップ362に進行する。ステップ364でFAST  CHARGE  COMPLETEフラグが既にセットされていなかったならば、操作はPARTIALカウントがインクリメントされるステップ368に進行する。操作は、その後、PARTIALカウントが８に等しくないか否かのステップ370に進行し、その後操作は残量計が有効であることを示すFUEL  GAUGE  VALIDフラグがセットされるステップ366に進む。さもなければPARTIALが、ステップ370で８と等しいならば、操作は、残量計がもはや有効でないことを示すFUEL  GAUGE  VALIDフラグがクリアされるステップ372に進行する。バッテリ20が８回の連続部分的充電サイクルを受けたので、残量計が不正確になることを経験が示した。ステップ372から操作はステップ362に進行する。
今図4Fを参照して、操作はステップ362から、バッテリ20の電圧が11ボルトのフル放電電圧レベルと比較するステップ374に進行する。もしバッテリ電圧が11ボルトと等しくないならば、操作は、放電の量が計算されて、増幅器92のオフセットを考慮に入れて、残量計から引き算されるステップ376へに進行する。A/Dコンバータからの値は、MA−秒に対応する値として直接減算されることができ、乗算の実行に本来的に選ばれたファクタとしてどんな明白な乗算も必要でない。
その後操作は、ステップ376から、ラベル208によって示されるようにメインプログラムループに進行する。ステップ374において、もしバッテリ電圧がフル放電されたバッテリを示す11ボルトと等しいならば、操作は、残量計の値がREMAINDERとして参照するパラメータにストアされ、残量計がゼロと等しいようにセットされるステップ378に進行する。その後操作は、ADJFLAGフラグがチェックされるステップ380に進行する。もしADJFLAGフラグが既にクリアされたならば、操作は、新しい残量計の値が不正確であると見なされるので、タンク容量即ち分母が既に計算されたタンク容量に等しくセットされるステップ382に進む。その後操作は、メインプログラムループに進行する。もしADJFLAGフラグがステップ380で決定されるように既にセットされたならば、操作はタンク容量が２で割られたREMAINDERを引き算することによって更新されるステップ384に進行する。この減算は、使用中の個々のバッテリ差及び容量変化を修正する方法を形成する。一連の放電サイクルの後に、残りは、各個々のバッテリパックＢ用のタンク容量の正確な決定の結果となるゼロに接近するべきである。２の値は好ましい収束要因として選択され、１の値がそれより早く収束できるかもしれないがエラーが発生しがちであり、より高い値のファクタが所望より遅く収束する。その後操作は、ラベル208によって示されるようにメインループに戻る。
今図4Gを参照して、ラベル306がフローチャートで遭遇したいかなるときも、操作はOFFTRICKフラグを読むステップ386に進行する。もしOFFTRICKフラグが既にクリアされたならば、バッテリ20がすでにトップオフされ、操作は、マイクロコントローラ34が分母かタンク容量値を変えないことを示すステップ388に進行する。操作は、ラベル208によって示されるようにメインループに戻る。もしバッテリ20が既にステップ386でトップオフ（仕上げ充電）されないならば、操作は１分タイマーをモニタするステップ390に進行する。もしタイマーの設定時間が、現在の仕上げ充電が完了したことを示すステップ390で過ぎたならば、操作は、マイクロコントローラ34がTCOFF＊信号をローにアサートすることによって５ミリアンペアに少量電流をセットするステップ392に進行する。勿論、OFFTRICKフラグがクリアされる。その後操作は、ステップ388に進行する。もし１分タイマーがステップ390で終了しなかったならば、残量計は、適当なクーロン充電値を展開するために、100ミリアンペアに対応した16進数値を４で割り算した値を残量計の値に加えることによってステップ394で更新される。その後操作は、メインプログラムループへ戻る。
コンピュータシステムＣは、周期的好ましくは４秒毎に、読出コマンドによってSERLINK信号を通して充電制御と残量計回路に割り込んで、所望ならば他の充電パラメータと同様に、分母即ちタンク容量、分子、充電レベル及び放電率を回復する。コンピュータシステムＣは、残量レベル即ち、残っている充電の分母で分子を割ることにはるパーセント比率を計算する。完全な放電前の残っている時間も、放電率で充電レベルを割ることによって計算される。コンピュータシステムＣは、そのディスプレイ上でユーザに残されている残量レベルと時間を好ましく知らせる。
マイクロコントローラ34は、ソフトウェアプログラムの操作を要約すると、AC電力源がバッテリ20の充電に利用可能であるかどうか定期的に決める。もしそうであれば、マイクロコントローラ34は、電圧、温度及び充電レベルをモニタして急速或は少量充電が適用されるべきかどうかを決定し、従ってバッテリ20が充電される。もしバッテリ20が急速充電中であるならば、電圧と温度と充電レベルはいつ急速充電を終えるか決めるためにモニタされる。もし、ACパワーがないならば、マイクロコントローラ34は、コンピュータシステムＣに接続されて、コンピュータシステムＣがオンになっているならば、放電を許容する。勿論、マイクロコントローラ34はバッテリ20を通る充電と放電電流を絶えずモニタして、追加或は注入された充電の量を計算する。残量計は、絶えず充電レベルを維持するために更新される。もし、充電が加えられるべきであるならば、温度非能率は説明される。自己放電も未使用の期間にモニタされ、残量計から引かれる。フル放電時には、もし残量計が有効であるならば、バッテリ20の充電容量が更新される。マイクロコントローラ34は、充電情報をストアして、コンピュータシステムＣから直列リンクを通してリクエストがあった時にこの情報を供給する。
発明の前述の開示と記述が実例の説明である。例証された回路及び構成及び操作方法の詳細と同様に、サイズ、形、材料、構成要素、回路、配線接続及びコンタクトにおける種々の変更は、発明の精神を逸脱しないでなされてもよい。
【図４Ｆ】
0003547433.tif 000002
【図１】
0003547433.tif 000003
【図２】
0003547433.tif 000004
【図３Ａ】
0003547433.tif 000005
【図３Ｂ】
0003547433.tif 000006
【図４Ａ】
0003547433.tif 000007
【図４Ｂ】
0003547433.tif 000008
【図４Ｃ】
0003547433.tif 000009
【図４Ｄ】
0003547433.tif 000010
【図４Ｅ】
0003547433.tif 000011
【図４Ｇ】
0003547433.tif 000012