(57)【特許請求の範囲】
【請求項１】
バッテリ電力が供給されるシステムにおいて、
一対のバッテリ・パック端子を有するリチウム・イオン・ベースのバッテリ・パックと  ニッケル・ベースのバッテリ・パック及びリチウム・イオン・ベースのバッテリ・パックの少なくとも一方を電力供給用として受容する手段と、電力供給コントローラとからなる装置であって、前記電力供給コントローラが、受容したバッテリ・パックに対して、リチウム・イオン・ベースのバッテリ・パックが当該装置に使用可能であるかどうかを示すバッテリ・データを提供する、装置と
からなり、
前記リチウム・イオン・ベースのバッテリ・パックは、
一対のバッテリ端子を有するバッテリと、
前記バッテリ端子の一方と前記バッテリ・パック端子の一方との間に接続されたスイッチと、
前記電力供給コントローラから前記バッテリ・データを受け取って、前記スイッチを制御するバッテリ・コントローラであって、(i)受け取ったバッテリ・データが、リチウム・イオン・ベースのバッテリ・パックを前記装置が使用可能であることを示している場合に、前記スイッチをオンにして前記装置にリチウム・イオン・ベースのバッテリ・パックから電力を供給するようにし、(ii)受け取ったバッテリ・データが、リチウム・イオン・ベースのバッテリ・パックを前記装置が使用不能であることを示している場合、又はバッテリ・データが存在しない場合に、前記スイッチをオフにして前記装置に前記リチウム・イオン・ベースのバッテリ・パックから電力を供給しないように
制御するバッテリ・コントローラと
からなることを特徴とするシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、取り外し可能なバッテリ・パック（電池パック）を用いるシステムに関し、更に詳しくは、ニッケル・ベースのバッテリ又はリチウム・イオン・バッテリのどちらかを用いた取り外し可能なバッテリ・パックを用いることのできるシステムに関する。
【０００２】
【従来の技術】
交流電力が供給されていない場所でコンピュータが必要になることはよくある。その場合、ニッケル・ベースのバッテリやリチウム・イオン・バッテリなどの再充電可能なバッテリが、代替的な電源として通常用いられているが、これらのバッテリは、携帯型又はペン入力型のコンピュータ・システムに、数時間、電力を与えることができる。コンピュータ・システムに電力を供給するためには、これらのバッテリは、それぞれのバッテリにおいて２つの並列のセルから成る４つの直列のバンクを含むバッテリ・パックに配列されている。バッテリ・パックは、外部の充電装置で充電できるが、コンピュータのバッテリ・パックは、ホスト・コンピュータ・システムの電源によって充電されるのが一般的である。再充電可能なバッテリは、限られたサイクルの寿命を有するので、その寿命を最大にし、すべての放電サイクルの間にそれぞれのバッテリから最大の電力を得るようにすることが望ましい。従って、これらの目的を達成するには、該目的を達成するように設計されたシステムにおいて、バッテリ・パックを完全に、そして効率的に充電することが必要である。
【０００３】
【発明が解決しようとする課題】
初期のニッケル・ベースのバッテリの充電装置が直面していた最初の設計上の問題点は、ニッケル・ベースのバッテリの充電レベルを判断することが困難であることから生じていた。これは、ニッケル・ベースのバッテリでは、端子電圧が充電レベルとは無関係にほぼ同一であるからである。この特性は、リチウム・イオン・バッテリでも同じである。この問題点は、「バッテリ充電モニタ及び燃料ゲージ」と題する米国特許第５,３１５,２２８号に開示されているように、マイクロコントローラ回路とメモリとをバッテリ・パックの内部に配置することによって、対処されている。該米国特許の発明においては、バッテリ・パック内において、時間経過に亘ってのバッテリ・パックの残りの容量を反復計算し、任意の与えられた時点での残りの充電レベルを連続的に測定するための燃料ゲージを提供し、バッテリ・パックの自己放電を含む、使用しない間のバッテリ・パックの放電が測定される。
【０００４】
この米国特許発明の改良が、１９９３年３月３日に出願され１９９５年７月２８日に許可された、「充電管理のためのスタティック・メモリとタイマとを含むバッテリ・パック」と題する米国特許出願第３,３８２１号に開示されている。この米国特許出願に開示されているバッテリ・パックでは、マイクロコントローラは、バッテリ・パックからホスト・コンピュータ・システムに移動され、それによって、バッテリ・パックを小型化してコストを引き下げ、バッテリ・パックの寿命を増大させている。このバッテリ・パックは、小型のリード・オンリ・メモリ（ＲＯＭ）と、ランダム・アクセス・メモリ（ＲＡＭ）と、リアルタイムのクロックとを含んでいる。バッテリ・パックの動作パラメータは、ファミリ・コード及びバッテリ・タイプと、最大充電温度、最低電圧設定点、初期の定格容量、複数の時間周期に対する自己放電率などを含み、ＲＯＭメモリに記憶される。ＲＡＭは、バッテリの残存充電量やバッテリ全体の容量などの情報を記憶する。更に、ＲＡＭには、リアルタイムのクロックにより時間が記録され、それによって、そのバッテリ・パックが、ホスト・コンピュータ・システムから取り外されている時間がどのくらいであるか判定可能である。これにより、ホスト・コンピュータは、バッテリ・パックを最適に充電し、かつバッテリ・パックに残っている充電量をモニタするための適切な情報を得ることができる。
【０００５】
リチウム・イオン・バッテリに関する基本的な要件の１つとして、このバッテリは、既知のコンピュータ・システム又はリチウム・イオン・バッテリに対応するように設計されている特別の充電器に挿入されている場合にしか、充電又は放電できないということがある。この要件は主に、リチウム・イオン・バッテリは、不適切に充電又は放電される場合には、潜在的に爆発する可能性があることに起因する。
従って、バッテリ・パックが既知のシステムに挿入されていない場合には、バッテリに充電又はバッテリから放電される電荷をブロックすることによって自己消勢する、リチウム・イオン・バッテリ・パックを有することが望ましい。バッテリ・パックが（短絡回路などの）未知のシステム、未知のバッテリ充電器、又は未知のコンピュータ・システムに挿入されている場合には、バッテリ・パックは、コンピュータ・システム、充電器、又はバッテリ・パックの中のバッテリへの損傷を最小にする。そのバッテリ・パックの任意のバッテリ・セルの端子電圧が、バッテリ・セルがかなりの低いレベルまで放電していることを示すスレショルド電圧よりも低下し、そのバッテリ・パックの再充電や放電が不可能になる場合には、恒久的に動作不能となるバッテリ・パックの実現が強く望まれている。更に、ニッケル・ベースのバッテリ用に設計されたシステムでも動作できるリチウム・イオン・バッテリを提供することが強く望まれており、これが実現できれば、２種類の異なる化学式バッテリの間の自由な相互交換が可能になる。
【０００６】
【課題を解決するための手段】
本発明は、ニッケル・ベースのバッテリ・システムと互換性を有するリチウム・イオン・バッテリ・パックに関する。特に、本発明によれば、ニッケル・ベースのバッテリを用いて、バッテリによって電力供給されているコンピュータ・システムを動作させ、そのニッケル・ベースのバッテリを、このコンピュータ・システムから取り外し、リチウム・イオン式のバッテリによって、そのニッケル・ベースのバッテリを代替することが可能である。これが可能な理由は、リチウム・イオン式のバッテリは、ニッケル・ベースのバッテリの機能を模倣する（エミュレートする）ように構成されており、このバッテリがニッケル・ベースのバッテリ・システムに挿入される場合に通常生じてしまうバッテリ故障を、リチウム・イオン式のバッテリのために、回避する保護回路を含むからである。更に、リチウム・イオン式のバッテリは、それ自身が既知のコンピュータ・システムの中に配置されているか否かを検出し、それが既知のシステムの場合には、該バッテリ自身を動作可能及び動作不能に制御し、それが未知のシステムである場合には、該バッテリ自身を動作不能に制御する。これによって、リチウム・イオン式のバッテリに関して生じる可能性のある故障が回避される。
【０００７】
更に、バッテリ・パックは、リチウム・イオン・バッテリを用いている場合には、そのバッテリ・パックが既知のシステムの中にあると判断した時にだけ、該バッテリ自身をオンにする。このバッテリ・パックには、バッテリと、その既知のシステムの中にある電源マイクロコントローラとこのバッテリ・パックの中に置かれたバッテリ・パックのメモリとの間の通信を感知するバッテリ・マイクロコントローラと、バッテリの中へのいかなる充電も阻止できる充電スイッチと、バッテリからのいかなる放電も阻止できる放電スイッチと、が含まれている。
【０００８】
モニタ回路が、バッテリとバッテリ・マイクロコントローラとに結合されている。このモニタ回路は、過小電圧、過剰電圧、過剰充電電流、及び過剰放電電流の状態をモニタする。バッテリ・マイクロコントローラは、充電スイッチと主放電スイッチとの制御端子に結合されており、それによって、バッテリ・パックへの充電及びバッテリ・パックからの放電を制御する。バッテリ・マイクロコントローラによって、このバッテリ・パックが既知のシステムに挿入されたと判断されるまでは、充電スイッチと主放電スイッチとのどちらもオンに切り換えられないように、保証されている。この判断は、バッテリ・パックのメモリと電源マイクロコントローラとの間の通信を調べることによって実行される。バッテリ・マイクロコントローラが、バッテリ・パックが既知のシステムの中にあるということを確認するため、この通信のシグニチャ（signature）を有効とした場合には、バッテリ・マイクロコントローラは、充電スイッチと主放電スイッチとをオンに切り換えることによって、バッテリ・パックを動作可能にする。
【０００９】
ある実施例では、バッテリ・パックは、それぞれのバッテリの中に、２つの並列セルから成る４つの直列バンクを含む。バッテリ・マイクロコントローラは、モニタ回路を通じて、それぞれのバッテリ・セルの端子電圧をモニタする。１つのバッテリ・セルの端子電圧が、バッテリの化学的状態に依存して２.５から２.７ボルトである最小のスレショルド電圧よりも低下したときには（これはバッテリ・セルの過剰放電を示している）、バッテリ・マイクロコントローラは、主放電スイッチをオフに切り換えることによって、バッテリ・パックを動作不能にする。バッテリ・マイクロコントローラは、それ自身が既知のシステムの中にあると判断した場合には、放電スイッチを閉じ、バッテリ・パックの充電を可能にする。
【００１０】
任意のバッテリ・セルの端子電圧が、放電スレショルド電圧よりも低下した場合には、これは、バッテリが過剰放電したことを示す。この放電スレショルド電圧の値に関しては議論があるが、２.０ボルト付近が適当であると考えられる。しかし、この放電スレショルド電圧は、典型的には、製造業者によって指定される。この放電スレッショルド電圧付近では、どのような再充電も潜在的に危険である。従って、バッテリ・マイクロコントローラは、万一、バッテリが過剰放電した場合には、充電スイッチと主放電スイッチとをオフに切り換える。
バッテリ・パックは、また、過剰電圧又は過剰充電電流がバッテリに存在する場合には、充電スイッチをオフに切り換え、過小電圧又は過剰放電電流がバッテリに存在する場合には、主放電スイッチをオフに切り換える。
【００１１】
【発明を実施する形態】
図面を参照すると、図１は、既知のホスト・コンピュータ・システムＣに挿入されているバッテリ・パックＢのブロック図である。システムＣは、このバッテリ・パックの充電のために特に設計された充電ユニットであってもよいが、この開示されている実施例では、ホスト・コンピュータ・システムＣは、バッテリ・パックＢに電力を供給すると共に、バッテリ・パックＢから電力を受け取る。
ホスト・コンピュータ・システムＣには、補助バッテリ１１４に接続された電源（すなわちＡＣアダプタ）１０４が示されている。電源１０４は、バッテリ・パックＢのＶＢＡＴ＋端子とバッテリ・パックＢのＶＢＡＴ−端子とに接続されている。ＶＢＡＴ＋及びＶＢＡＴ−端子は、それぞれが、バッテリ・パックＢの正及び負の電源端子であり、ホスト・コンピュータ・システムＣに電力を与え、また、そこから電力を受け取る。電源１０４は更に、電源電圧Ｖｃｃを提供し、これは、電源マイクロコントローラ及び関連回路（以下、単に「電源マイクロコントローラ」と称する）１０８に供給される。電源１０４はまた、電源マイクロコントローラ１０８に、複数の制御ラインＣＬとデータ・ラインＤＬとを介して、結合されている。電源マイクロコントローラ１０８は、バッテリ・パックＢとの間で、ＢＤＡＴ信号を提供及び受け取り、Ｔ＋信号を受け取り、Ｔ−信号を受け取る。
ＢＤＡＴ信号は、バッテリ・パックＢのファミリ・コードやバッテリ１００上に残っている電荷などの情報を提供するのに用いられる、バッテリ・データ信号である。Ｔ＋及びＴ−は、充電条件を電源マイクロコントローラ１０８に指示するのに用いられるサーミスタ（温度）信号である。
【００１２】
図１のバッテリ・パックＢにおいては、電力制御回路１０２が、ＶＢＡＴ＋及びＶＢＡＴ−端子に接続されている。電力制御回路１０２は、また、バッテリ１００にも結合されている。バッテリ１００の正の端子は、＋ＶＢＡＴ５端子と称し、バッテリ１００の負の端子は、−ＶＢＡＴ１端子と称することにする。ＣＨＡＲＧＥ信号、ＰＷＲ１信号、ＰＷＲ２信号、ＵＮＬＡＴＣＨ信号、及びＤＩＳＣＨ信号は、バッテリ・マイクロコントローラ及び関連回路（以下、単に「バッテリ・マイクロコントローラ」と称する）１０６によって提供されるが、やはり、電力制御回路１０２に接続される。バッテリ・マイクロコントローラ１０６はまた、５ボルトの＋５ＶＲＥＧ電源電圧を供給する電圧レギュレータ１１０に接続されている。バッテリ・マイクロコントローラ１０６は、ＥＮＡＢＬＥ信号を電圧レギュレータ１１０に供給する。電圧レギュレータ１１０は、その入力（ＩＮ）がＶＢＡＴ＋端子に接続され、そのアース端子（ＧＮＤ）グランドがＶＢＡＴ−端子に接続されている。バッテリ・マイクロコントローラ１０６は更に、ＢＤＡＴ信号、Ｔ＋信号、及びＴ−信号の信号線に接続されている。バッテリ・パックＢは更に、ランダム・アクセス・メモリ／リアルタイム・クロック（ＲＡＭ／ＲＴＣ）１１２と称されるＢＤＡＴ信号が供給されるメモリを含んでいる。
【００１３】
図１のバッテリ・パックＢには、モニタ回路１１６が示されており、このモニタ回路は、バッテリ・セルの過剰電圧のモニタ、過小電圧モニタ、及び過剰充電モニタを行う。モニタ回路１１６は、ＴＨＥＲＭ信号、ＤＧＡＴＥ信号、及びＣＧＡＴＥ信号を、バッテリ・マイクロコントローラ１０６に供給する。これらの信号が与えられると、バッテリ・マイクロコントローラ１０６は、それに従って、ＶＢＡＴ＋及びＶＢＡＴ−端子を、図７に関連して後に説明するように、付勢又は消勢状態にする。モニタ回路１１６には、＋ＶＢＡＴ５信号と−ＶＢＡＴ１信号とが供給される。これによって、以下で説明するように、モニタ回路１１６が、バッテリ１００が過剰電圧及び過小電圧状態であるかをモニタすることが可能になる。また、モニタ回路１１６には、＋ＶＢＡＴ３及び＋ＶＢＡＴ４信号が供給される。＋ＶＢＡＴ４信号は、抵抗２８８の一端と抵抗２９０の一端との間から得られる。抵抗２８８の他端は、バッテリ１００（＋ＶＢＡＴ５端子）に結合され、抵抗２９０の他端は、電力制御回路１０２、＋ＶＢＡＴ３端子、及び電圧レギュレータ１１０の未調整電圧の入力端子に結合される。＋ＶＢＡＴ３信号及び＋ＶＢＡＴ４信号と、抵抗２８８、２９０から形成されるブリッジとが、モニタ回路１１６に、電流モニタ能力を与える。
【００１４】
ホスト・コンピュータＣの電源１０４は、バッテリ・パックＢに電力を供給し、また、それから電力を受け取る。電源マイクロコントローラ１０８は、電源１０４がバッテリ・パックＢから電力を受け取るのか、バッテリ・パックＢに電力を供給するのかを管理する。電源マイクロコントローラ１０８は、制御ラインＣＬを介して、電源１０４の動作を管理する。電源１０４は、電源電圧Ｖｃｃを電源マイクロコントローラ１０８に供給する。電源電圧Ｖｃｃは通常、バッテリ・パックＢの放電から得られるか、又は、交流電力がアダプタ（図１には示さず）を通じて入手できる場合には、交流電圧から得られる。しかしながら、ＡＣアダプタがホスト・コンピュータ・システムＣに接続されておらず、バッテリ・パックＢがホスト・コンピュータＣに電力を供給していない場合には、補助バッテリ１１４から、電源マイクロコントローラ１０８をパワーアップするのに必要な電力を供給する。
【００１５】
電源マイクロコントローラ１０８は、ＲＡＭ／ＲＴＣ１１２と通信して、バッテリ１００の充電状態を反復的にモニタし、それによって、電源１０４は、バッテリ１００を完全かつ効率的に充電することができる。好適実施例においては、バッテリ・パックＢのバッテリ１００は、２つの並列リチウム・イオン・セルから成る４つの直列バンクによって構成されるが、バッテリ・パックＢは、後に図２との関係で説明されるように、ニッケル・ベースのバッテリ・パックと交換することもできる。更に、電源マイクロコントローラ１０８は、感知された温度信号Ｔ＋及びＴ−を利用して、バッテリ１００の充電状態を判断する。好適実施例においては、温度信号は、バッテリ・マイクロコントローラ１０６によって得られて、バッテリ１００の充電及び過剰温度の状態を電源マイクロコントローラ１０８に指示するために用いられる。
電力制御回路１０２は、バッテリ１００への充電及び放電を禁止又は許容する回路である。ＣＨＡＲＧＥ信号、ＰＷＲ１信号、及びＤＩＳＣＨ信号が、バッテリ１００の充電、バッテリ１００の微小（trickle）放電、及びバッテリ１００の主放電を、それぞれ制御する。これらの３つの制御信号の中の１つをアサートすることにより、その機能が動作可能（イネーブル）にされる。
【００１６】
バッテリ・パックＢが既知のシステムの中に挿入されている際の通常の動作中、ホスト・コンピュータ・システムＣでは、ＣＨＡＲＧＥ信号とＤＩＳＣＨ信号とがアサートされると、バッテリ１００は、電源マイクロコントローラ１０８によって制御されて、充電及び放電される。バッテリ１００に過剰電圧状態又は過剰充電電流が存在する場合には、電力制御回路１０２は、ＣＨＡＲＧＥ信号を否定（すなわち、反転）することによって、バッテリ・パックＢがこれ以上充電されることを阻止する。過小電圧又は過剰放電電流状態がバッテリ１００に存在する場合には、ＤＩＳＣＨ及びＰＷＲ１信号が否定（反転）状態になり、電力制御回路１０２によって、バッテリ・パックＢからこれ以上放電されることを阻止する。更に、バッテリ１００の中の１つのバッテリ・セルが過剰放電して過小電圧になった場合には、電力制御回路１０２は、ＤＩＳＣＨ及びＰＷＲ１信号を恒久的に否定状態にすることによって、バッテリ・パックＢからこれ以上放電されることを恒久的に阻止する。更に、好適実施例では、バッテリ１００の温度が上昇して過剰温度状態が生じた場合には、電力制御回路１０２は、バッテリ・パックＢにこれ以上の充電がされることを阻止する。
【００１７】
バッテリ・パックＢがホスト・コンピュータ・システムＣから取り外された後には、バッテリ・マイクロコントローラ１０６は、ＣＨＡＲＧＥ信号とＤＩＳＣＨ信号とを否定状態とし、それによって、バッテリ１００のそれ以上の放電又は充電を阻止する。好適実施例では、バッテリ・パックＢがホスト・コンピュータ・システムＣから取り外される際には、ＰＷＲ１信号がアサートされ、それによって、微小放電電流がバッテリ１００から流れることを可能にする。後に更に詳細に説明するが、この微小放電電流によって、補助バッテリ１１４が機能しないときに、電源マイクロコントローラ１０８のパワーアップが可能になる。更に、好適実施例では、バッテリ・パックＢがホスト・コンピュータ・システムＣの中に存在しないときには、バッテリ・パック１００のバッテリ・セルが過剰放電スレショルド電圧よりも低下しているとモニタ回路１１６が判断した場合であっても、ＰＷＲ１信号が恒久的に否定状態にされる。この過剰放電スレショルド電圧は、製造業者によって指定されるが、この実施例では、２.０ボルトに設定される。
【００１８】
バッテリ１００のバッテリ・セル電圧がこの過剰放電スレショルド電圧よりも低下しているとモニタ回路１１６が判断した場合には、バッテリ・マイクロコントローラ１０６は、ＣＨＡＲＧＥ及びＤＩＳＣＨ信号を否定状態にする。バッテリ１００のセル電圧が過剰放電スレショルド電圧よりも低下し、バッテリ・パックＢがホスト・コンピュータ・システムＣから取り外された場合には、バッテリ・マイクロコントローラ１０６は、ＥＮＡＢＬＥ信号を否定状態にして、電圧レギュレータ１１０を動作不能状態に、それによって、マイクロコントローラ１０６を恒久的にパワーダウンさせる。マイクロコントローラ１０６がパワーダウンすると、バッテリ・パックＢへの充電もそれからの放電も行うことができなくなる。これによって、バッテリ・パックＢはもう二度と使用できないことが確実になるが、これは、一旦バッテリ１００のバッテリ・セルの電圧が過剰放電スレショルド電圧よりも低下すると、バッテリ・セルは過剰放電された状態であり、バッテリ・パックＢが廃棄されなければならないからである。
【００１９】
バッテリ・マイクロコントローラ１０６にはＢＤＡＴ信号が供給されており、それにより、バッテリ・マイクロコントローラ１０６が、ＲＡＭ／ＲＴＣ１１２と電源マイクロコントローラ１０８との間の通信状態を調べることが可能になる。バッテリ・マイクロコントローラ１０６は、それ自体、すなわちバッテリ・パックＣがホスト・コンピュータ・システムＣの中にあると判断した場合には、電源マイクロコントローラ１０８とＲＡＭ／ＲＴＣ１１２との間で通信されるデータの特性シグニチャを識別する。これについては、後に、図８〜図１６との関係で詳細に説明する。バッテリ・マイクロコントローラ１０６は、バッテリ・パックＣがホスト・コンピュータ・システムＣの中にあると判断した場合には、バッテリ１００の状態に応じて、バッテリ１００の充電及び放電を許容する。
【００２０】
次に図２を参照すると、図２には、本発明によるリチウム・イオン・バッテリ・パック又はニッケル・ベースのバッテリ・パックの相互交換可能な使用形態が図解されている。電源マイクロコントローラ１０８と電源１０４とを有するホスト・コンピュータＣが示されており、これら電源１０４及び電源マイクロコントローラ１０８に接続されている信号ラインは、リチウム・イオン式のバッテリ・パックである図１のバッテリ・パックＢを受け入れるレセプタクル１１３に接続されている。図２には更に、ニッケル・ベースのバッテリ・パックＢNICも示されている。ニッケル・ベースのバッテリ・パックＢNICは、携帯型コンピュータで広く用いられており、通常、ニッケル・カドミウム（ＮｉＣＡＤ）又はニッケル金属の水酸化物（ＮＩＭＨ）のどちらかの化学物質を用いている。携帯型コンピュータにおけるニッケル・ベースのバッテリの使用は、広く知られており、米国特許出願第０８／１３３８２１号及び米国特許第５,３１５,２２８号に記載されている。しかし、本明細書から理解されるように、本発明におけるホスト・コンピュータＣは、ニッケル・ベースのバッテリ・パックＢNICと共に動作するように構成されている。リチウム・イオン・バッテリ・パックＢは、ホスト・コンピュータＣがこのリチウム・イオン式のバッテリ・パックＢと共にも動作するように設計されている。これは、リチウム・イオン・バッテリ・パックＢを、それが、あたかもニッケル・ベースのバッテリ・パックＢNICであるかのように動作するように構成され設計されている。
【００２１】
従って、ニッケル・ベースのバッテリ・パックＢNICはホスト・コンピュータＣにインストールする（具備させる）ことができ、その場合においても、ホスト・コンピュータは通常通りに動作する。そして、該バッテリ・パックＢNICを取り外し、リチウム・イオン・バッテリ・パックＢをホスト・コンピュータＣにインストールすることができ、その場合にも、コンピュータは通常通りに動作する。さらにまた、リチウム・イオン・バッテリ・パックＢを取り外すことができる。更に、この明細書で説明されるように、リチウム・イオン・バッテリ・パックＢは、ホスト・コンピュータＣが実際に既知のシステムであることを検出した場合にだけ、ホスト・コンピュータＣに電力を供給する。
【００２２】
図３には、ＲＡＭ／ＲＴＣ１１２が示されている。該ＲＡＭ／ＲＴＣは、好ましくは、ダラス・セミコンダクタ（Dallas Semiconductor）の製造によるＤＳ１６０８のＥｃｏｎｏＲａｍ  ＴｉｍｅＣｈｉｐである。ＲＡＭ／ＲＴＣ１１２の電源（ＶＣＣ）ピン、クロック（ＣＬＫ）ピン、アース（ＧＮＤ）ピン、及びバッテリ・バックアップ（ＶＢＡＴＢ）ピンが、ＢＧＮＤ信号の信号線に接続されている。入力／出力（I／O）ピンは、ダイオード１５６のカソード、抵抗１５４の一端、及びダイオード１８４のアノードに接続されている。ダイオード１８４のカソードは、ＲＡＭ／ＲＴＣ１１２のバッテリ動作（ＶＢＡＴＯ）ピンに接続されている。ダイオード１５６のアノードは、ＧＮＤピンに接続されている。抵抗１５４の他端は、ＢＤＡＴバッテリ端子に接続されている。水晶振動子１７０の一方の側が、ＲＡＭ／ＲＴＣ１１２のＸ１ピンに接続され、他方の側が、ＲＡＭ／ＲＴＣ１１２のＸ２ピンに接続され、これにより、ＲＡＭ／ＲＴＣ１１２にクロックとＶＢＡＴＯに制限される機能電圧とを提供する。コンデンサ１６８の一方の側が、ＢＧＮＤ信号に接続され、コンデンサ１６８の他方の側がＶＢＡＴＯピンに接続される。ツェナー・ダイオード１６６のカソードが、ＶＢＡＴＯ入力ピンに接続され、ツェナー・ダイオードのアノードが、ＢＧＮＤ信号に接続され、ＶＢＡＴＯ入力に制限された電圧を提供する。
【００２３】
図３には、また、エミッタ・フォロワ・レギュレータ回路１７６が示されている。レギュレータ回路１７６は、抵抗１７８を有し、この抵抗は、一端が、ＶＢＡＴ＋端子に接続され、他端は、ＮＰＮトランジスタ１８２のベースとツェナー・ダイオード１８０のカソードとに接続されている。トランジスタ１８２は、そのコレクタがＶＢＡＴ＋端子に接続され、そのエミッタがＲＡＭ／ＲＴＣ１１２のＶＢＡＴＯ入力ピンに接続されている。ダイオード１８０のアノードは、ＢＧＮＤ信号に接続されている。
更に図３を参照すると、ツェナー・ダイオード１６４は、そのアノードがＢＧＮＤ信号に接続され、そのカソードがバッテリ・パックＢのＶＢＡＴ−端子に接続されている。更に、ＢＧＮＤ端子とＶＢＡＴ−端子とは、また、フィルタリング・コンデンサ１６２によって結合されている。コンデンサ１６２は、その一端がＢＧＮＤ信号に接続され、その他端がバッテリ・パックＢのＶＢＡＴ−端子に接続されている。電流制限抵抗１６０を介して、ＢＧＮＤ信号がツェナー・ダイオード１５８のアノードに供給され、このツェナー・ダイオードのカソードは、バッテリ・パックＢのＴ−端子に接続されている
【００２４】
Ｔ＋及びＴ−端子は、温度のモニタ信号を電源マイクロコントローラ１０８に対して供給するが、リチウム・イオン・バッテリの温度がリチウム・イオン・バッテリの充電状態によって大きく変動することはないので、Ｔ＋及びＴ−信号は、バッテリ・パックＢによって代わりに人工的に操作され、バッテリ１００の充電状態を指示する。ＤＳ１６０８がＲＡＭ／ＲＴＣ１１２として使用されることが好ましい。その理由は、バッテリ１００の動作パラメータと充電状態情報とを記憶する内部スタティックＲＡＭとＲＯＭと、バッテリ１００の非使用期間を測定するリアルタイムのクロックと、電源マイクロコントローラ１０８と通信するための１ワイヤによるシリアル通信能力とが、ＤＳ１６０８に含まれているからである。
【００２５】
図４は、電力制御回路１０２の回路図を示している。図４には、Ｐチャンネルの金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）であるトランジスタ２００を用いて電圧を調整する電圧レギュレータ２０３が示されている。この実施例では、トランジスタ２００は、２つの目的を有しており、レギュレータとして作用するだけではなく、充電禁止を制御するためのトランジスタとしても機能する。電圧レギュレータ２０３は、バッテリ１００を充電するのに適切な電圧レベルを与える。電圧レギュレータ２０３の接続を参照すると、トランジスタ２００は、そのドレインが＋ＶＢＡＴ２信号に接続され、そのゲートが抵抗２０２の一端に接続され、そのソースがＶＢＡＴ＋端子に接続されている。寄生ダイオード２０１は、そのカソードがＶＢＡＴ＋端子に接続され、そのアノードが＋ＶＢＡＴ２信号に接続されている。抵抗２０２の他端は、抵抗２０４の一端、抵抗２０６の一端、及び抵抗２０８の一端に接続されている。抵抗２０４の他端は、ＶＢＡＴ＋端子に接続される。抵抗２０８の他端は、ＰＮＰバイポーラ・トランジスタ２１０のコレクタに接続されている。抵抗２０６の他端は、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴトランジスタ２１２のドレインに接続されている。
【００２６】
トランジスタ２１２のソースは、−ＶＢＡＴ１信号に接続され、トランジスタ２１２のゲートは、ＣＨＡＲＧＥ信号に接続されている。トランジスタ２１０のエミッタは、ＶＢＡＴ＋端子に接続され、トランジスタ２１０のベースは、抵抗２１４の一端と抵抗２１６の一端とに接続されている。抵抗２１４の他端は、ＶＢＡＴ＋端子に接続されている。抵抗２１６の他端は、抵抗２１８の一端、コンデンサ２２０の一端、及びシャント・レギュレータ２２２のカソードに接続されている。抵抗２１８の他端は、コンデンサ２２４の一端に接続され、コンデンサ２２４の他端は、ＶＲＥＦ信号に接続されている。コンデンサ２２０の他端は、ＶＲＥＦ信号に接続されている。シャント・レギュレータ２２２の制御端子は、ＶＲＥＦ信号に接続され、シャント・レギュレータ２２２のアノードは、抵抗２２６の一端とエンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴトランジスタ２２８のドレインとに接続されている。トランジスタ２２８のゲートは、ＰＷＲ２信号に接続され、トランジスタ２２８のソースは、−ＶＢＡＴ１信号に接続されている。抵抗２２６の他端は、ＶＲＥＦ信号に接続されている。抵抗２３０の一端は、ＶＲＥＦ信号に接続され、抵抗２３０の他端は、＋ＶＢＡＴ５信号に接続されている。抵抗２３２は、ＰＷＲ２信号と−ＶＢＡＴ信号との間に接続されている。抵抗２３４は、ＣＨＡＲＧＥ信号と−ＶＢＡＴ信号との間に接続される。
【００２７】
更に、図４には、過剰電圧保護回路２３５が示されており、該回路は、過剰電圧状態がバッテリ１００の端子である＋ＶＢＡＴ５及び−ＶＢＡＴ１に存在する場合には、それ以上の電荷がバッテリ１００に加わることを防止するためのものである。ＰチャンネルＭＯＳＦＥＴであるトランジスタ２３６のドレインは、＋ＶＢＡＴ３端子に接続されている。トランジスタ２３６のゲートは、抵抗２３８の一端と抵抗２４０の一端とに接続されている。抵抗２３８の他端は、＋ＶＢＡＴ２信号に接続されている。抵抗２４０の他端は、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ２４２のゲートと、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ２４４のゲートと、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ２４６のドレインとに接続されている。トランジスタ２４２のゲートは、ＬＡＴＣＨＯＵＴ信号に接続され、トランジスタ２４２のソースは、−ＶＢＡＴ１信号に接続されている。
【００２８】
バッテリ１００の端子電圧が所定の最大電圧を超えるときには、通常は高レベルであるＬＡＴＣＨＯＵＴ信号を否定状態、すなわち低レベルにすると、トランジスタ２３６がオフに切り換わる。これによって、バッテリ１００の過剰充電が回避される。コンデンサ２４８は、ＬＡＴＣＨＯＵＴ信号と−ＶＢＡＴ１信号との間に接続される。抵抗２５０は、＋ＶＢＡＴ２信号とＬＡＴＣＨＯＵＴ信号との間に接続される。トランジスタ２４４のドレインは、ＬＡＴＣＨＯＵＴ信号に接続され、そのソースは、−ＶＢＡＴ１信号に接続されている。トランジスタ２４６のゲートは、ＵＮＬＡＴＣＨ信号に接続され、そのソースは、−ＶＢＡＴ１信号に接続される。ＵＮＬＡＴＣＨ信号は、ＬＡＴＣＨＯＵＴ信号が否定されてバッテリ１００に過剰電圧条件が存在しなくなった後に供給され、トランジスタ２３６をオンさせる。抵抗２５２は、ＵＮＬＡＴＣＨ信号と＋ＶＲＥＧ信号との間に接続されている。
【００２９】
図４には、また、電圧レギュレータ２５４が示されている。電圧レギュレータ２５４の出力ピンは、＋５ＶＲＥＧ信号を与える。電圧レギュレータ２５４の入力及び出力アース・ピンは、−ＶＢＡＴ１信号に接続されている。電圧レギュレータ２５４の入力ピンは、コンデンサ２５６の一端とＰチャンネルＭＯＳＦＥＴであるトランジスタ２５８のドレインとに接続されている。トランジスタ２５８は、ソースがＶＲＥＦ信号に接続され、そのゲートは、抵抗２６０の一端と、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ２６２のドレインとに接続されている。抵抗２６０の他端は、ＶＲＥＦ信号に接続されている。コンデンサ２６４は、＋５ＶＲＥＧ信号と−ＶＢＡＴ１信号との間に接続されている。トランジスタ２６２のゲートは、ＥＮＡＢＬＥ信号に接続されている。ＥＮＡＢＬＥ信号は、また、コンデンサ２６６の一端、抵抗２６８一端、ダイオード２７０のカソード、及びダイオード２７２のカソードにも、接続されている。トランジスタ２６２のソースは、−ＶＢＡＴ１信号に接続されている。コンデンサ２６６の他端は、−ＶＢＡＴ信号に接続されている。抵抗２６８の他端は、−ＶＢＡＴ信号に接続されている。ダイオード２７０のアノードは、ＢＤＡＴ１信号に接続されている。ダイオード２７２のアノードは、ＰＷＲ１信号に接続されている。
【００３０】
図４には、また、バッテリ１００の放電を阻止又は許容する回路が示されている。エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴである主放電トランジスタ２７４は、ソースが−ＶＢＡＴ１信号に接続され、ゲートがＰＷＲ１信号に接続され、ドレインが抵抗２７６の一端に接続されている。抵抗２７８は、ＰＷＲ１信号と−ＶＢＡＴ信号との間に接続されている。抵抗２７６の他端は、ＶＢＡＴ−端子に接続されている。エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴである微小充電トランジスタ２８０は、ソースが−ＶＢＡＴ１信号に接続され、ゲートがＤＩＳＣＨ信号に接続され、ドレインがＶＢＡＴ−端子に接続されている。ダイオード２８２は、カソードが−ＶＢＡＴ１信号に接続され、アノードがＣＵＲＲＥＮＴ信号に接続されている。ＣＵＲＲＥＮＴ信号は、バッテリ１００が充電しているときにはアサートされ、それ以外のときには否定状態にされる。抵抗２８４は、一端がＣＵＲＲＥＮＴ信号に接続され、他端はＶＢＡＴ−端子に接続されている。抵抗２８６は、一端が−ＶＢＡＴ１信号に接続され、他端がＤＩＳＣＨ信号に接続されている。
【００３１】
更に、図４には、図１との関係で既に説明したバッテリ・パックＢの電流感知回路が示されている。抵抗２８８、２９０は、＋ＶＢＡＴ５ラインと＋ＶＢＡＴ３ラインとの間に接続され、＋ＶＢＡＴ４が、その接合点から供給される。従って、抵抗２９０の両端での電圧は、信号ＶＢＡＴ３及びＶＢＡＴ４によって、電流感知を提供する。抵抗２９０は、＋ＶＢＡＴ４信号と＋ＶＢＡＴ３信号との間に接続されている。抵抗２８８、２９０は、小さな抵抗値を有する精密な（precision）抵抗である。
【００３２】
次に、電力制御回路１０２の動作を説明するが、電源１０４とバッテリ１００との正の端子ＶＢＡＴ＋、＋ＶＢＡＴ５の間に結合されているトランジスタ２００によって、電源１０４（図１及び図２）が、バッテリ１００を充電することが可能になる。ダイオード２０１が、バッテリ１００のための放電経路を提供し、それによって、主放電トランジスタ２８０と微小放電トランジスタ２７４とのどちらか一方がオンであるときに、バッテリ１００の放電が可能になる。トランジスタ２００は、２つの機能を実行する。すなわち、トランジスタ２００は、バッテリ１００の充電を可能または不能にし、また、トランジスタ２００は、電圧レギュレータ２０３に対するパス（pass）・トランジスタとしても機能する。好適実施例では、トランジスタ２００は、０.０２オームの低いＲDS(ON)抵抗値（オン時のドレイン／ソース間の抵抗値）と、＋／−２０ボルトＤＣの高いゲート・ソース・ブレークダウン電圧とを有する。トランジスタ２１２は、トランジスタ２００をオン又はオフし、よって、電圧レギュレータ２０３をオン又はオフする。トランジスタ２１２のゲートは、トランジスタ２１２のオン／オフのスイッチングを制御するＣＨＡＲＧＥ信号に接続される。
【００３３】
ＣＨＡＲＧＥ信号は、バッテリ・マイクロコントローラ３００（図５に示されている）によって与えられ、従って、ＣＨＡＲＧＥ信号をアサート又は否定することにより、バッテリ・マイクロコントローラ３００は、トランジスタ２００のオン／オフのスイッチングを制御し、よって、バッテリ１００への充電を制御できる。ダイオード２８２は、トランジスタ２００がオンであるときには、充電電流のための経路を与える。トランジスタ２２８は、バッテリ・パックＢがホスト・コンピュータ・システムＣから切り離された場合には、線形レギュレータ２０３が回路の別の部分から電流を与えることがないことを保証する。ＰＷＲ２信号は、バッテリ・パックＢがホスト・コンピュータ・システムＣの中に存在しないときには、バッテリ・コントローラ３００によってアサートされ、従って、線形レギュレータ２０３によるローディングを回避する。
【００３４】
動作においては、トランジスタ２００は、レギュレータ２０３を介しての充電を可能及び不能にすることに関して、ＣＨＡＲＧＥ信号に応答するのではなく、レギュレータ２０３に対する直列通過素子として作用し、＋ＶＢＡＴ５信号によって、バッテリ１００への電圧を１６.８ボルトに制限する。リチウム・イオン・セルは、それぞれが、４.２ボルトＤＣに制限された入力電圧を有していなければならない。その電圧制限が外れた場合には、結果的に、セルの故障が生じる。更に、リチウム・イオン・セルの容量は、端子電圧の関数であるから、このような厳密な電圧規制によれば、１つのパックから次のパックへの繰り返し可能な容量が得られる。
【００３５】
バッテリ１００への電圧を制限するためには、トランジスタ２００は、＋ＶＢＡＴ５が１６.８ボルトに近づくにつれて、線形モードで動作し始める。特に、抵抗２３０、２２６は、＋ＶＢＡＴ５が１６.８ボルト、ＶＲＥＦ信号が約２.５ボルトとなるように、分圧器を形成する。シャント・レギュレータ２２２は、フォードバック要素として動作し、ＶＲＥＦをその２.５ボルトに規制しようとする。ＶＲＥＦが２.５ボルトを超え始めると、シャント・レギュレータ２２２とそれに付随するディスクリートな安定化素子が、電流を抵抗２１６に流し始める。レギュレータ２２２が十分な電流を流すときには、抵抗２１４の両端の電圧降下によって、トランジスタ２１０がオンする。抵抗２１４は、好ましくは、＋ＶＢＡＴが最小の１６.８ボルトであるときには、３ミリアンペアのカソード電流が、シャント・レギュレータ２２２を流れるように、選択される。トランジスタ２１０が線形モードで動作し始めると、抵抗２０８と直列のトランジスタ２１０のインピーダンスが低下し、よって、トランジスタ２００のゲート・ソース電圧が低下する。トランジスタ２００のゲート・ソース電圧が低下すると、トランジスタ２００のチャンネル・インピーダンスすなわちドレイン／ソース間抵抗ＲDSは増加し、それによって、トランジスタ２００は、線形モードで動作し、従って、電圧を低下させる。好ましくは、トランジスタ２００は、ＴＯ２２０パッケージにおいて選択されるので、過剰な電圧を低下させているときには、同時に熱を発散（dissipate）することがある。トランジスタ２００は、バッテリ１００がほぼ完全に充電されているときには、短い時間の間、そのようなパワーを発散させるだけである。
【００３６】
更に、トランジスタ２１２がオンである場合には、抵抗２０４の両端の電圧が、バッテリ１００が８ボルトの電圧まで低下するときであっても、少なくともトランジスタ２００のゲート／ソース間のスレショルド電圧となるように、抵抗２０４、２０６が選択されることが好ましい。更に、ＶＢＡＴ＋信号が１９.５ボルトの最大の電圧に達するときには、抵抗２０４と並列の抵抗２０８とトランジスタ２１０とは、トランジスタ２００のゲート／ソース間のスレショルド電圧以上の電圧を生じることがなく、それにより、トランジスタ２００が線形モードで動作することが保証される。
このようにして、トランジスタ２００は、ＣＨＡＲＧＥ信号に応答する充電禁止トランジスタとして、また同時に、線形レギュレータ２０３に対するパス制御要素として、作用する。
【００３７】
図４にはさらに、バッテリ１００からの放電を制御する主放電トランジスタ２８０も示されている。トランジスタ２８０のゲートは、バッテリ・マイクロコントローラ３００が与えるＤＩＳＣＨ信号に接続され、これが、トランジスタ２８０のオン・オフを制御する。ダイオード２０１は、トランジスタ２８０がオンであるときには、放電経路を提供する。更に、図４には、トランジスタ２００がオンであるときに充電経路を提供するダイオード２８２と抵抗２８４とが示されている。抵抗２８４は、後に更に詳細に説明するように、バッテリ１００の充電を指示するＣＵＲＲＥＮＴ信号を提供する電流感知抵抗として機能する。図４には、また、制御信号ＰＷＲ１によって付勢される微小放電トランジスタ２７４も示されている。抵抗２７６は、補助バッテリ１１４が空である場合に、電源マイクロコントローラ１０８が目覚め（wake-up）ＲＡＭ／ＲＴＣ１１２との通信を確立するのに十分な微小放電電流が流れるようにするためのものである。
【００３８】
また、図４には、レギュレータ回路１１０が示されている。線形レギュレータ２５４は、バッテリ・マイクロコントローラ３００に電力を供給する電源電圧＋５ＶＲＥＧを与える。レギュレータ２５４は、バッテリ１００の正の端子＋ＶＢＡＴ５からの出力電圧＋５ＶＲＥＧを提供する。トランジスタ２５８は、トランジスタ２６２によってオン／オフされるパス・トランジスタとして機能する。トランジスタ２６２は、ＰＷＲ１信号とＢＤＡＴ１信号とのどちらかによって、オンされる。図３に関して更に説明されるように、ＰＷＲ１信号は、バッテリ・パックＢがホスト・コンピュータ・システムＣの外にあるときにアサートされ、それによって、トランジスタ２６２がオンになり、レギュレータ２５４が付勢される。ＢＤＡＴ１信号は、バッテリ・パックＢがホスト・コンピュータ・システムＣの中に挿入されているときには高レベルであるから（図５との関係で後に更に説明する）、バッテリ・パックＢがホスト・コンピュータ・システムＣの中にあれば、トランジスタ２６２は、ＢＤＡＴ１信号によってオンの状態に保たれる。ダイオード２７０、ダイオード２７２、抵抗２６８、及びコンデンサ２６６が、２つの入力ＰＷＲ１、ＢＤＡＴ１を有するピーク回路を形成する。コンデンサ２６６からは電流がほとんど流れ出ないので、ＢＤＡＴ１などの通常は高レベルであるデータ信号（図５との関係で更に説明する）により、線形レギュレータ２５４の動作を維持することができることに注意すべきである。
【００３９】
図４には、また、ラッチ回路２３５が示されており、該回路により、バッテリ１００に過剰電圧状態が存在する場合に、バッテリ１００に充電されることを阻止する。実施例では、該ラッチ回路２３５によって、バッテリ１００の電圧が１８ボルトＤＣを超えないことが保証される。これは、トランジスタ２４２のゲートに接続されるＬＡＴＣＨＯＵＴ信号によって達成される。ＬＡＴＣＨＯＵＴ信号が低レベルであると、これは、バッテリ１００の端子電圧が好ましくは１８ボルトＤＣである最大バッテリ端子電圧を超えていることを示している。これが起こると、トランジスタ２４２は、ＬＡＴＣＨＯＵＴ信号によってオフになり、それによって、トランジスタ２３６がオフになって、バッテリ・パックＢにそれ以上の充電がされることが回避される。トランジスタ２４４がオンに切り換えられてラッチされることにより、トランジスタ２４２が再びオンに切り換わることが阻止され、従って、トランジスタ２３６はオフのままに保たれる。ラッチ回路２３５は、トランジスタ２４２とトランジスタ２３６とをオンさせるＵＮＬＡＴＣＨ信号のパルス・アサート動作により、リセットされる。ＬＡＴＣＨＯＵＴ信号の発生に関しては図６の説明の際に、ＵＮＬＡＴＣＨ信号の発生に関しては図５の説明の際に、更に詳細に論じる。
【００４０】
図５は、バッテリ・マイクロコントローラ１０６の回路図を示している。この図５には、バッテリ・マイクロコントローラ３００が示されている。コントローラ３００のための電源電圧ピンは、＋５ＶＲＥＧ信号に接続され、コントローラ３００の接地ピンは、−ＶＢＡＴ１信号に接続されている。マイクロコントローラ３００のＲＡ０＿ＡＩＮ０、ＲＡ１＿ＡＩＮ１、ＲＡ２＿ＡＩＮ２、ＲＡ３＿ＡＩＮ３、及びＲＡ４＿ＴＯＣＫＩピンは、マイクロコントローラ３００の中にある多重化されたＡ／Ｄ変換器のへのアナログ入力である。ＶＲＥＦ信号はＲＡ１＿ＡＩＮ０ピンに与えられ、ＣＧＡＴＥ信号はＲＡ１＿ＡＩＮ１ピンに接続され、ＤＧＡＴＥ信号はＲＡ３＿ＡＩＮ３＿ＶＲＥＦピンに接続され、ＴＨＥＲＭ信号はＲＡ４＿ＴＯＣＫＩピンに接続されている。ＲＢ１ピンはＵＮＬＡＴＣＨ信号に接続され、ＲＢ２ピンはＣＨＡＲＧＥ信号に接続され、ＲＢ３信号はＤＩＳＣＨ信号に接続され、そして、ＲＢ４信号はＰＷＲ２信号に接続されている。ＯＳＣ２＿ＣＬＫＯＵＴピンが、振動子３０２の一端とコンデンサ３０４の一端とに接続されている。ＯＳＣ１＿ＣＬＫＩＮピンは、振動子３０２の他端とコンデンサ３０６の一端とに接続されている。コンデンサ３０６の他端は、−ＶＢＡＴ１信号に接続されている。コンデンサ３０４の他端は、−ＶＢＡＴ１信号に接続されている。
【００４１】
マイクロコントローラ３００のＲＢ５出力ピンから、Ｔ５０信号が供給され、この信号は、電力制御回路１０２がバッテリ・パックＢに充電されることを阻止する際に、バッテリ１００の充電終了を電源マイクロコントローラ１０８に指示するのに用いられる。ＲＢ５出力ピンは、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ３０８のゲートと、抵抗３１０の一端とに接続されている。抵抗３１０の他端は、＋５ＶＲＥＧ信号に接続されている。トランジスタ３０８は、ソースが−ＶＢＡＴ１信号に接続され、ドレインがＰチャンネルＭＯＳＦＥＴであるトランジスタ３１２のゲートと抵抗３１４の一端とに接続されている。抵抗３１４の他端は、＋５ＶＲＥＧ信号に接続されている。トランジスタ３１２は、ソースが＋ＶＢＡＴ５信号に接続され、ドレインがＰＷＲ１信号に接続されている。
【００４２】
マイクロコントローラ３００のＲＢ６出力ピンは、Ｔ７０信号を提供して温度信号Ｔ＋及びＴ−を操作し、バッテリ１００の過剰温度条件を電源マイクロコントローラ１０８に指示する。Ｔ７０信号は、Ｎチャンネル・エンハンスメント・タイプのＭＯＳＦＥＴであるトランジスタ３１６のゲートと抵抗３１８の一端とに接続されている。抵抗３１８の他端は、＋５ＶＲＥＧ信号に接続されている。トランジスタ３１６は、ドレインが、ＰチャンネルＭＯＳＦＥＴであるトランジスタ３２０のゲートと抵抗３２２の一端とに接続され、ソースが、−ＶＢＡＴ１信号に接続されている。抵抗３２２の他端は、＋ＶＢＡＴ５信号に接続されている。トランジスタ３２０は、ソースが＋ＶＢＡＴ信号に接続され、ドレインがエンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ３２４のゲートに接続されている。
【００４３】
図５には、また、Ｔ＋及びＴ−信号を操作する切り換え型（switched）抵抗ネットワークが示されている。トランジスタ３２４は、ソースがＴ−端子に接続され、ドレインが抵抗３２６の一端と抵抗３２８の一端とに接続されている。抵抗３２６の他端は、Ｔ＋端子に接続されている。抵抗３２８の他端は、抵抗３３０の一端とエンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ３３２のドレインとに接続されている。抵抗３３０の他端は、Ｔ−端子に接続されている。抵抗３３４は、ＰＷＲ１信号とＴ−端子との間に接続されている。抵抗３３６は、一端が抵抗３２４のゲートに接続され、他端がＴ−端子に接続されている。
【００４４】
ＢＤＡＴ信号によって、マイクロコントローラ３００は、バッテリ・パックＢがホスト・コンピュータ・システムＣの中にあるかどうかが判断できる。ＢＤＡＴ信号は、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ３３８のゲートと抵抗３４０の一端とに接続されている。抵抗３４０の他端は、Ｔ−端子に接続されている。トランジスタ３３８は、ソースがＴ−端子に接続され、ドレインがＰチャンネルＭＯＳＦＥＴであるトランジスタ３４２のゲートと抵抗３４４の一端とに接続されている。抵抗３４４の他端は、＋ＶＢＡＴ５信号に接続されている。トランジスタ３４２は、ソースが＋ＶＢＡＴ５信号に接続され、ドレインがＢＤＡＴ１信号に接続されている。エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ３４６は、ドレインがマイクロコントローラ３００の割り込みＲＢ０＿ＩＮＴに接続され、ゲートがＢＤＡＴ１信号に接続され、ソースが−ＶＢＡＴ１信号に接続されている。抵抗３４８は、ＢＤＡＴ１信号と−ＶＢＡＴ１信号との間に接続されている。抵抗３５０は、マイクロコントローラ３００のＲＢ０＿ＩＮＴピンと＋５ＶＲＥＧ信号との間に接続されている。
【００４５】
マイクロコントローラ３００のＭＣＬＲ＿ＶＰＰ及びＯＳＣ２＿ＣＬＫＯＵＴピンが、マイクロコントローラ３００のクロック周波数を設定する。マイクロコントローラ３００のＭＣＬＲ＿ＶＰＰピンは、抵抗３５２の一端に接続され、抵抗３５２の他端は、抵抗３５４の一端、コンデンサ３５６の一端、及びダイオード３５８のアノードに接続されている。コンデンサ３５６の他端は、−ＶＢＡＴ信号に接続されている。抵抗３５４の他端は、＋５ＶＲＥＧ信号に接続されている。ダイオード３５８のカソードは、＋５ＶＲＥＧ信号に接続されている。ダイオード３５８、抵抗３５４、及び抵抗３５２は、マイクロコントローラ３００をパワーアップするのに必要な回路を提供する。
【００４６】
更に図５を参照すると、この図には、バッテリ１００の温度をモニタする回路が示されている。マイクロコントローラ３００のＲＡ１＿ＡＩＮ１ピンは、サーミスタ３６０の一端、抵抗３６２の一端、及び抵抗３６４の一端に接続されている。サーミスタ３６０の他端は、＋５ＶＲＥＧ信号に接続されている。抵抗３６２の他端は、＋５ＶＲＥＧ信号に接続されている。抵抗３６４の他端は、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ３６６のドレイン、ショットキー・ダイオード３６８のアノード、及びＮＰＮトランジスタ３７０のコレクタに接続されている。ダイオード３６８のカソードは、ＬＡＴＣＨＯＵＴ信号に接続されている。トランジスタ３７０のベースは、ＣＵＲＲＥＮＴ信号に接続され、トランジスタ３７０のエミッタは、ＶＢＡＴ−端子に接続されている。トランジスタ３６６は、ゲートがコントローラ３００のＲＢ７ピンに接続され、ソースが−ＶＢＡＴ信号に接続されている。抵抗３７２は、コントローラ３００のＲＢ７ピンと−ＶＢＡＴ１信号との間に接続されている。コントローラ３００のＲＢ７ピンは、ＳＡＭＰＬＥ信号を供給する。
【００４７】
次にバッテリ・マイクロコントローラ１０６の動作を説明する。ＢＤＡＴ信号がトランジスタ３３８に提供され、従って、電源マイクロコントローラ１０８がＢＤＡＴ信号を高レベルにアサートすると、トランジスタ３３８のドレインは否定状態にされ、それによって、トランジスタ３４２がオンして、ＢＤＡＴ１信号をアサートする。図４に戻ると、ＢＤＡＴ１信号は、バッテリ・パックＢがホスト・コンピュータ・システムＣの中にインストールされているときは、レギュレータ１１０をイネーブル状態に保つ。通常は高レベルであるＢＤＡＴ１信号は、コンデンサ２６６を充電状態に、ＥＮＡＢＬＥ信号を高レベルに維持し、それによって、電圧レギュレータ２５４が動作可能（イネーブル）状態に保たれ、従って、バッテリ・マイクロコントローラ３００のパワーアップを維持する。バッテリ・パックＢがホスト・コンピュータ・システムＣから取り外されると、ＢＤＡＴ信号は、もはや、電源マイクロコントローラ１０８には供給されず、従って、ＢＤＡＴ１信号は否定状態にされる。よって、マイクロコントローラ３００は、別の信号ＰＷＲ１をアサートしてレギュレータ２５４を動作可能状態に保つ。
【００４８】
バッテリ・マイクロコントローラ３００は、バッテリ・パックがホスト・コンピュータ・システムＣから取り外されると、ＰＷＲ１信号をアサートすることによりレギュレータ２５４をイネーブル状態に維持する。マイクロコントローラ３００は、Ｔ５０信号をアサートすることによってトランジスタ３０８と３１２とをオンし、それによって、ＰＷＲ１信号とＥＮＡＢＬＥ信号とをアサートする。Ｔ５０信号は、マイクロコントローラ３００がそれ自身がホスト・コンピュータ・システムＣの中にあると判断したときに否定状態にされる。ホスト・コンピュータ・システムＣの中にある場合は、ＢＤＡＴ信号は、レギュレータ２５４の機能を完全に維持し、よって、電力をマイクロコントローラ３００に供給する。
【００４９】
リチウム・イオン・バッテリの温度は充電の間にほとんど変動しないので、温度信号Ｔ＋及びＴ−は、バッテリ１００の異なる温度状態をエミュレートするためには、切り換え型抵抗回路によって、操作されなければならない。例えば、トランジスタ３３２がＴ５０信号をアサートしているマイクロコントローラ３００によってオンに切り換えられるときには、Ｔ＋及びＴ−信号が、あたかもバッテリの温度が７０℃であるかのように、提供される。マイクロコントローラ３００は、Ｔ５０信号をパルス化してバッテリ１００の温度上昇をシミュレートする。バッテリ・パックＢがホスト・コンピュータ・システムＣの外にあるときには、ＰＷＲ１信号がアサートされてレギュレータ２５４を動作可能にし、従って、トランジスタ３３２もまたＰＷＲ１に接続されているから、トランジスタ３３２がオンして、これにより、バッテリ１００が５０℃であるとする信号が現れる。しかし、バッテリ・パックＢがホスト・コンピュータ・システムＣの外にあるので、温度信号Ｔ＋及びＴ−は不要である。マイクロコントローラ３００により、バッテリ・パックＢがホスト・コンピュータ・システムＣの中にあると判断されると、ＰＷＲ１信号はもはやアサートされず、従って、トランジスタ３３２が生じる５０℃のＴ＋及びＴ−信号は供給されないことになる。
【００５０】
更に図５を参照すると、バッテリ・パックＢが最初にホスト・コンピュータ・システムＣの中に挿入されてＢＤＡＴ信号が最初にアサートされるときには、トランジスタ３４６は、マイクロコントローラ３００のＲＢ０＿ＩＮＴ入力ピンにおいて、立ち下がりエッジ信号を与え、それによって割り込みが生じる。これが生じると、マイクロコントローラ３００は、制御をあるアルゴリズム（後に図９及び図１０との関係で論じる）に移動させ、バッテリ・パックＢがホスト・コンピュータ・システムＣの中に挿入されているかどうかをチェックする。バッテリ・マイクロコントローラ３００は、バッテリ・パックＢがホスト・コンピュータ・システムＣの中には挿入されていないと判断したときには、ＣＨＡＲＧＥ信号とＤＩＳＣＨ信号とが否定状態にされたまま維持され、従って、バッテリ・パックＢのＶＢＡＴ＋及びＶＢＡＴ−端子をブロックすることを保証する。バッテリ・パックＢがホスト・コンピュータ・システムＣの中に存在しない限り、バッテリ・マイクロコントローラ３００は、ＰＷＲ１信号をアサートし、それによって、レギュレータ２５４がパワーアップされた状態に保たれることが保証され、よって、マイクロコントローラ３００がパワーアップされた状態に保たれることが保証される。
【００５１】
更に図５の実施例においては、また、バッテリ１００を構成するバッテリ・セルの電圧がモニタされ、それによって、バッテリ１００の中の任意のセルの電圧が過剰放電スレショルド電圧よりも低下する場合には、バッテリ・パックＢのＶＢＡＴ＋端子及びＶＢＡＴ−端子がブロックされることが保証される。この過剰放電スレショルド電圧は、２.５ボルトから２.７ボルトの値を有し、製造業者によって変動する。この過剰放電スレショルド電圧の値は、この実施例では、２.７ボルトである。バッテリ１００の中の任意の１つのセルの電圧がこの過剰放電スレショルド電圧よりも低下すると、マイクロコントローラ３００は、ＤＩＳＣＨ信号が否定状態にされ、従って、バッテリが更に放電することはない。バッテリ１００の中の１つのバッテリ・セルがこの過剰放電スレショルド電圧よりも低下する場合には、バッテリ・マイクロコントローラ３００は、ＣＨＡＲＧＥ信号をアサートし、バッテリ１００が、いったん既知のシグニチャがマイクロコントローラ３００によってＢＤＡＴ信号上で検出されれば、充電することを可能にする。
【００５２】
バッテリ１００の任意の１つのセルのセル電圧がこの実施例では２.０ボルトである過剰放電スレショルド電圧よりも低下する場合には、これは、バッテリ１００が過剰放電し、恒久的に動作不能にされていなければならないことを指示している。これが生じると、マイクロコントローラ３００は、ＣＨＡＲＧＥ及びＤＩＳＣＨ信号が否定状態にされることを保証し、従って、バッテリ・パックＢのＶＢＡＴ＋及びＶＢＡＴ−端子が恒久的にブロックされたままで維持されることを保証し、これによって、バッテリ１００が再び用いられないことが保証される。この状態が生じると、ＰＷＲ１信号は、バッテリ・パックＢがホスト・コンピュータ・システムＣから取り外される場合には、もはやアサートされない。これによって、いったん過剰放電されたバッテリが検出されると、電圧レギュレータ２５４は動作不能にされ、従って、バッテリ・パックＢがいったんホスト・コンピュータ・システムＣから取り外されると、バッテリ・パックＢの回路を恒久的にパワーダウンさせることが保証される。
【００５３】
図４及び図５を参照すると、バッテリ・パックＢがホスト・コンピュータ・システムＣの中に存在しないときは常に、ＰＷＲ１がアサートされる。従って、バッテリ・マイクロコントローラ３００がバッテリ・パックＢがホスト・コンピュータ・システムＣの中にあると判断するまで、ＰＷＲ１は、アサートされた状態に維持される。ＰＷＲ１のアサートによって、トランジスタ２７４がオンして、それにより、微小放電電流が流される。この微小放電電流は、無効なシステムを損傷するほどには大きくないが、補助バッテリ１１４が動作しないときに、マイクロコントローラ１０８をパワーアップするには十分な電流である。微小放電電流は、抵抗２８４によって、制限される。従って、この微小放電の性質によって、補助バッテリ１１４が動作しないときでも、電源マイクロコントローラ１０８を動作させることができる。既に述べたように、いったんバッテリ・パックＢがそれ自身がホスト・コンピュータ・システムＣの外にあると判断すると、ＰＷＲ１信号がアサートされ、従って、トランジスタ２７４をオンすることにより、微小充電電流を流すことを可能にする。
【００５４】
バッテリ・パック１００の中のセルの１つが過剰放電スレショルド電圧よりも低下した場合には、ほんの僅かな放電電流でも危険であり、その理由は、バッテリ１００の中の１つのバッテリ・セルが過剰放電しているからである。従って、バッテリ１００の中の任意のセルが、この実施例では２.０ボルトであるこの過剰放電スレショルド電圧よりも低下したときには、ＰＷＲ１信号はもはやアサートされず、従って、微小放電電流が全く流れないことを保証することができる。
【００５５】
サーミスタ３６０、抵抗３６２、トランジスタ３６６、及びトランジスタ３７０は、バッテリ１００の温度をモニタするために用いられる。この回路は、バッテリ１００の充電を許容する前にバッテリ１００の周囲の温度をモニタしている間にバッテリ１００が損傷を受けた場合には、警報を発する。抵抗３６２は、サーミスタ３６０を線形にするために用いられる。マイクロコントローラ３００のＲＢ７ピンによって与えられるＳＡＭＰＬＥ信号は、バッテリ１００の温度をサンプリングするときにだけ、この回路をマイクロコントローラ３００が動作可能にするために供給され、それによって、電力が節約される。図４及び図５の両方を参照すると、バッテリ・パックＢが充電しているときには、ＣＵＲＲＥＮＴ信号がアサートされ、それによって、トランジスタ３７０がオンする。従って、バッテリ・パックＢが充電している間は、この温度モニタ回路はオンのままにされ、過剰温度状態を連続的にモニタする。
【００５６】
図６は、バッテリ・パックＢのモニタ回路１１６の回路図を示している。図６のモニタ回路４００は、好ましくは、モトローラ社によって製造されるリチウム充電制御型集積回路（ＬＣＣＩＣ）である。モニタ回路４００の電源電圧は、＋ＶＢＡＴ５信号に接続され、アース端子は、−ＶＢＡＴ１信号に接続されている。回路４００の電圧ロー（ＶＬ）ピンは、抵抗４０２の一端と抵抗４０４の一端とに接続されている。回路４００の電圧ハイ（ＶＨ）ピンは、抵抗４０６の一端と抵抗４０２の他端とに接続されている。回路４００のＭＵＸ＋ピンは、抵抗４０４の他端に接続されている。回路４００の基準アース（ＲＥＦ＿ＧＮＤ）ピンは、抵抗４０６の他端に接続されている。
【００５７】
回路４００の過剰放電電流（ＯＶ＿ＤＩＳＣＨ）ピンは、＋ＶＢＡＴ４信号に接続されている。過剰充電電流（ＯＶ＿ＣＨＡＲ）ピンは、＋ＶＢＡＴ３信号に接続されている。回路４００のＶ１＋ピンは、＋ＶＢＡＴ８信号に接続されている。回路４００のＶ２＋ピンは、＋ＶＢＡＴ７信号に接続されている。回路４００のＶ３＋ピンは、＋ＶＢＡＴ６信号に接続されている。回路４００のＰＲＯＧ２ピンとＰＲＯＧ１ピンとは、−ＶＢＡＴ１信号に接続されている。回路４００のＴＥＳＴピンは、コンデンサ４０８の一端に接続されている。コンデンサ４０８の他端は、抵抗４１０の一端ととＮチャンネルのエンハンスメント・タイプのＭＯＳＦＥＴであるトランジスタ４１２のドレインとに接続されている。抵抗４１０の他端は、＋ＶＢＡＴ５信号に接続されている。
【００５８】
トランジスタ４１２は、ゲートがＴＥＳＴ信号に接続され、ソースが−ＶＢＡＴ１信号に接続されている。回路４００のＰＡＣＫピンは、−ＶＢＡＴ１信号に接続されている。回路４００のＣＧＡＴＥピンは、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ４１４のゲートに接続されている。トランジスタ４１４は、ドレインがＣＧＡＴＥ信号に接続され、ソースが−ＶＢＡＴ１信号に接続されている。抵抗４１６は、ＣＧＡＴＥ信号と＋５ＶＲＥＧ信号との間に接続されている。回路４００のＤＧＡＴＥピンは、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ４１８のゲートに接続されている。トランジスタ４１８は、ドレインがＤＧＡＴＥ信号に接続され、ソースが−ＶＢＡＴ１信号に接続されている。抵抗４２０は、ＤＧＡＴＥ信号と＋５ＶＲＥＧ信号との間に接続されている。回路４００のＴＨＥＲＭピンは、ＴＨＥＲＭ信号を与える。抵抗４２２は、ＴＨＥＲＭ信号と＋５ＶＲＥＧ信号との間に接続されている。回路４００のＶＰＭＰピンは、コンデンサ４２４の一端に接続され、コンデンサ４２４の他端は、−ＶＢＡＴ１信号に接続されている。
【００５９】
図４には、バッテリ１００のセルの過剰充電を防止する回路も示されている。図６には、リチウム・イオン・バッテリの充電コントローラ４２６が示されている。充電コントローラ４２６の入力は＋ＶＢＡＴ５信号に接続され、充電コントローラ４２６の出力は、エンハンスメント・タイプのＮチャンネルＭＯＳＦＥＴであるトランジスタ４２８のゲートと抵抗４３０の一端とに接続されている。充電コントローラ４２６の接地入力は、−ＶＢＡＴ１信号に接続される。充電コントローラ４２６のＣＯＭＰピンは、抵抗４３２の一端に接続されている。抵抗４３２の他端は、−ＶＢＡＴ１信号に接続されている。トランジスタ４２８は、ソースが−ＶＢＡＴ１信号に接続され、ドレインがＬＡＴＣＨＯＵＴ信号に接続されている。
【００６０】
充電コントローラ４２６によって、バッテリ１００の電圧が所定の過剰電圧スレショルドを超えないことが保証される。この実施例では、このスレショルド電圧は１８ボルトＤＣである。充電コントローラ４２６は、ナショナル・セミコンダクタ社の製造によるＬＭ３４２０リチウム・イオン・バッテリ充電コントローラであることが好ましい。充電コントローラ４２６は、その入力ピンにおける電圧が所定の過剰電圧スレショルドを超えるときにオンになるトランジスタ２４８のゲートに接続されたオープン・エミッタ出力を有する。抵抗４３２は、充電コントローラ４２６の公称電圧レベルである１６.８ボルトを、所定の過剰電圧スレショルドである１８ボルトに調整するために用いられる。トランジスタ４２８のドレインは、バッテリ１００の端子電圧がこの過剰電圧スレショルドを超えるときには、ＬＡＴＣＨＯＵＴ信号を否定状態にする。
【００６１】
ＬＡＴＣＨＯＵＴ信号は、バッテリ１００の充電の間に否定状態にされる場合には、その充電が終了するまで、再びアサートされることはない。図４及び図５を参照すると、バッテリ１００の充電の間には、ＣＵＲＲＥＮＴ信号が、抵抗２８４内の充電電流によってアサートされる。ＣＵＲＲＥＮＴ信号のアサートによって、トランジスタ３７０がオンし、ダイオード３６８のアノードが低レベルになり、それにより、ＬＡＴＣＨＯＵＴ信号がその通常の高レベルの電圧にリセットされることが阻止される。抵抗２８４に充電電流が存在しないならば、トランジスタ３７０は、オフになり、従って、ＬＡＴＣＨＯＵＴ信号は、その通常の高レベルの電圧にリセットされる。
モニタ回路４００は、バッテリ・パックＢの電流と電圧とをモニタする。図６に示されているように、モニタ回路４００は、バッテリ１００を形成するセル・バンク１００ａ、１００ｂ、１００ｃ、及び１００ｄをモニタする。それぞれのセル・バンクには、２つの並列リチウム・イオン・セルが含まれている。回路４００は、バッテリ１００の状態についての情報、すなわちＣＧＡＴＥ信号、ＤＧＡＴＥ信号、及びＴＨＥＲＭ信号を、マイクロコントローラ３００に供給する。
【００６２】
図６及び図７において、バッテリ・パックＢの通常の動作においては、ＴＨＥＲＭ信号、ＤＧＡＴＥ信号、及びＣＧＡＴＥ信号は、すべて高レベルである。モニタ回路４００は、バンク１００ａ、１００ｂ、１００ｃ、及び１００ｄの電圧を、＋ＶＢＡＴ６信号、＋ＶＢＡＴ７信号、＋ＶＢＡＴ８信号、及び＋ＶＢＡＴ５信号により、それぞれモニタする。モニタ回路４００は、バッテリ１００のセルの間の等しくない電圧を検出した場合には、すべての過剰電圧のセルを放電させるための並列のＭＯＳＦＥＴと抵抗とを用いて、セルの間での電圧を等しくさせる。従って、モニタ回路４００は、セル・バンク１００ａ、１００ｂ、１００ｃ、及び１００ｄをモニタすることによって、すべてのセル上に同じ電圧が存在することを保証する。過剰電圧状態が生じると、モニタ回路４００が、ＴＨＥＲＭ信号を否定し、それにより、過剰電圧状態がバッテリ１００に存在することをマイクロコントローラ３００に知らせる。ＣＧＡＴＥ信号とＤＧＡＴＥ信号とは、過剰電圧状態が生じても、否定状態にされない。モニタ回路１１６は、ＬＡＴＣＨＯＵＴ信号を否定状態にすることにより、過剰電圧状態の間には、それ以上の充電がバッテリ１００にされないことを保証する。
【００６３】
図６及び図７において、モニタ回路４００は、また、バッテリ１００に過剰充電電流状態が存在するときには、警報を発する。モニタ回路４００は、ＴＨＥＲＭ信号とＣＧＡＴＥ信号とを否定状態にすることによって、これを実現する。ＤＧＡＴＥ信号は、すべての他の条件が許せば、高レベルに保たれる。モニタ回路４００は、ＣＧＡＴＥ信号を、過剰充電電流状態が少なくとも２から３秒存在するまで、否定状態にせず、それによって、バッテリ１００を充電するのにパルス充電法が用いられている場合には、正の電流パルスが、モニタ回路４００によって与えられる過剰充電電流保護メカニズムを始動させる（trip）ことが保証される。
モニタ回路４００は、また、低電圧及び過剰放電電流保護の機能も提供する。バッテリ１００に低電圧又は過剰放電電流状態のどちらかが存在する場合には、マイクロコントローラ４００はＤＧＡＴＥ信号を否定状態にする。バッテリ・マイクロコントローラ３００は、以下で論じるが、その場合には、ＤＧＡＴＥ信号の否定状態がバッテリ１００における低電圧又は過剰放電電流状態によってトリガされたのかどうかを判断しなければならない。
【００６４】
低電圧及び過剰電圧スレショルドは、抵抗４０４、４０２、４０６によって設定される。この好適実施例においては、低電圧スレショルドは、バッテリ・セルが過剰放電されたことを示す２.０ボルトに設定され、過剰電圧スレショルドは、バッテリ・セルの過剰充電電圧状態を示す４.２９ボルトに設定される。後に更に説明するように、バッテリ・マイクロコントローラ３００は、ＶＲＥＦ信号をモニタすることによって、低電圧又は過剰放電電流条件が存在するかどうかを判断する。
【００６５】
次に、図８を参照すると、電源マイクロコントローラ１０８とＲＡＭ／ＲＴＣ１１２との間で進まなければならない初期化手順が示されている。マイクロコントローラ１０８は、ＲＡＭ／ＲＴＣ１１２との通信を望んでいることを示すため、リセット・パルスをＲＡＭ／ＲＴＣ１１２に送るが、そのためには、通常は高レベルであるＢＤＡＴ信号を否定状態にしなければならない。図８のＡに示されているように、マイクロコントローラ１０８は、時刻Ｔ０において、ＢＤＡＴ信号を否定する。次に、マイクロコントローラ１０８は、ＢＤＡＴ信号をリリースし、それによって、時刻Ｔ１において、ＢＤＡＴ信号は再び通常の高レベルの状態に戻る。リセット・パルスは、このように、時刻Ｔ０から時刻Ｔ１までの時間間隔として定義される。リセット・パルスは、長さが少なくとも４８０μｓ必要であり、しかし、９６０μｓより長くてはならない。図８のＡから分かるように、ＲＡＭ／ＲＴＣ１１２は、時刻Ｔ２まで待機してから、ＢＤＡＴ信号を否定状態にし、それによって、ＲＡＭ／ＲＴＣ１１２がリセット・パルスを認識し、マイクロコントローラ１０８と通信する準備ができていることをマイクロコントローラ１０８に示すための、存在（ＰＲＥＳＥＮＣＥ）パルスを提供する。ＲＡＭ／ＲＴＣ１１２は、次に、時刻Ｔ３までＢＤＡＴ信号を否定状態にし、それにより、存在パルスの終了を示す。存在パルスは、長さが少なくとも６０μｓである必要があり、また２４０μｓより長くてはならない。
【００６６】
次に図８のＢを参照すると、この図には、マイクロコントローラ１０８による、ＢＤＡＴ信号の「１」書き込み又は「１」読み出しの動作が図解されている。マイクロコントローラ１０８による読み出し動作では、マイクロコントローラ１０８は、時刻Ｔ０においてＢＤＡＴ信号を否定状態にし、ＢＤＡＴ信号を時刻Ｔ１まで低レベルに保つ。これは、マイクロコントローラ１０８が、ＢＤＡＴ信号から１ビットを読み出す準備ができていることを示す。時刻Ｔ０からＴ１までの間隔は、１μｓよりも大きくなければならない。次に、ＲＡＭ／ＲＴＣ１１２は、時刻Ｔ２において高レベルになるように、ＢＤＡＴ信号をアサートする。次に、マイクロコントローラ１０８は、時刻Ｔ３においてＢＤＡＴ信号をサンプリングし、それによって、１を読み出す。マイクロコントローラ１０８は、１を読み出すには、時刻Ｔ０から１５μｓ以上は経過していない時点で、ＢＤＡＴ信号をサンプリングしなければならない。従って、「１」読み出し動作のためには、Ｔ０からＴ３までの間隔は、１５μｓよりも短くなければならない。
【００６７】
マイクロコントローラ１０８による「１」書き込みも、図８のＢに示されているとうりである。ＲＡＭ／ＲＴＣ１１２に書き込み中断動作について知らせるために、マイクロコントローラ１０８は、時刻Ｔ０においてＢＤＡＴ信号を否定状態にしなければならない。次に、マイクロコントローラ１０８は、１μｓよりも長くなければならない時刻Ｔ１まで、ＢＤＡＴ信号を否定する。マイクロコントローラ１０８は、次に、Ｔ０から１５μｓ以内に、ＢＤＡＴ信号をハイにアサートしなければならないが、その理由は、ＲＡＭ／ＲＴＣ１１２が、時刻Ｔ０から１５μｓから６０μｓだけ後に、書き込み動作を読み出すからである。
【００６８】
図８のＣには、マイクロコントローラ１０８による「０」書き込み又は「０」読み出しの動作が図解されている。「０」書き込み動作においては、マイクロコントローラ１０８は、時刻Ｔ０においてＢＤＡＴ信号を否定状態にする。マイクロコントローラ１０８は、時刻Ｔ１まで、ＢＤＡＴ信号を否定状態にされた状態に維持しなければならない。マイクロコントローラ１０８は、「０」を示すために、ＢＤＡＴ信号を、最小で６０μｓの間、否定状態にしなければならない。よって、時刻Ｔ０から時刻Ｔ２は、少なくとも６０μｓでなければならない。従って、ＢＤＡＴ信号が、時刻Ｔ０から６０μｓより長く経過している時刻Ｔ１においてＲＡＭ／ＲＴＣ１１２によってサンプリングされるときには、「０」がＲＡＭ／ＲＴＣ１１２によって検出される。
マイクロコントローラ１０８は、「０」を読み出すためには、時刻Ｔ０においてＢＤＡＴ信号を再び否定状態にしてＢＤＡＴ信号を読み出す準備ができていることを示さなければならない。マイクロコントローラ１０８は、時刻Ｔ０から１５μｓ以内である時刻Ｔ１において、ＢＤＡＴ信号をサンプリングしなければならない。
【００６９】
マイクロコントローラ１０８は、バッテリ・パックＢがホスト・コンピュータ・システムＣの中に挿入された後で、最初にＲＡＭ／ＲＴＣ１１２と通信する際には、ＲＡＭ／ＲＴＣ１１２に関して既に述べた初期化手順を実行する。すなわち、マイクロコントローラ１０８は、リセット・パルスを送信し、ＲＡＭ／ＲＴＣ１１２は、存在パルスを用いて応答する。この初期化シーケンスの後で、マイクロコントローラ１０８は、次に、ＲＤ＿ＲＯＭコマンドを送信するが、これは、好ましくは、３３ｈに等しい１と０とのバイナリ・シーケンスである。これによって、ＲＡＭ／ＲＴＣ１１２は、マイクロコントローラ１０８がＲＡＭ／ＲＴＣ１１２のＲＯＭの中の８バイトのデータを読み出す準備ができていることを知る。ＲＡＭ／ＲＴＣ１１２によって送信されるＲＯＭの１番目のバイトは、バッテリ・パックＢに対するファミリ・コードＦＡＭ＿ＣＤＥである。
【００７０】
次に、この好適実施例が用いられるＢＤＡＴ信号のシグニチャ（signature）認識手順は、既に述べた、初期化手順プロトコルと送信されたコマンド及びデータとを求める。概略的にいえば、最初に、バッテリ・マイクロコントローラ３００は、初期化手順に対するＢＤＡＴ信号をモニタし、次に、バッテリ・マイクロコントローラ３００は、ＲＤ＿ＲＯＭコマンドに対するＢＤＡＴ信号をモニタし、そして、最後に、バッテリ・マイクロコントローラ３００は、送信されたファミリ・コードＦＡＭ＿ＣＤＥに対するＢＤＡＴ信号をモニタする。マイクロコントローラ３００がこの通信シーケンスを検出すると、マイクロコントローラ１０６は、バッテリ・パックＢがホスト・コンピュータ・システムＣの中に挿入されていることを知ることができる。
【００７１】
次に、ＢＤＡＴ信号の通信をモニタするマイクロコントローラ３００のアルゴリズムを、図９を参照して説明する。図９は、バッテリ・パックＢがホスト・コンピュータ・システムＣの中にあるときに、バッテリ１００のモニタリング・ルーチンＰＯＬＬを呼び出す（コールする）ＭＡＩＮルーチンを示すフローチャートである。図９では、動作はステップ５００で開始され、そしてステップ５０２に移動し、ＴＵＲＮＯＦＦ＿ＦＬＧがリセットされる。ＴＵＲＮＯＦＦ＿ＦＬＧフラグは、バッテリ・パックＢが恒久的にオフに切り換えられるべきとき、従ってバッテリ・セルが過剰放電しているときに、設定される。ＢＤＡＴ＿ＦＬＧフラグもまた、リセットされる。ＢＤＡＴ＿ＦＬＧフラグがセットされたときには、これは、バッテリ・パックＢがホスト・コンピュータ・システムＣの中にあることを示す。ＤＧＡＴＥ信号とＣＧＡＴＥ信号とが共にリセットされ、マイクロコントローラ３００がバッテリ・パックＢがホスト・コンピュータ・システムＣの中に挿入されているかどうかを判断する前に、トランジスタ２００とトランジスタ２８０とをオフに切り換える。割り込みサービス・ルーチンのための割り込みであるＳＹＳ＿ＣＨＫもまた、イネーブル状態にされる。
【００７２】
マイクロコントローラ３００のＲＢ０＿ＩＮＴ入力に負の勾配が現れるときには常に、割り込みが発生される。従って、ＢＤＡＴ信号パルスが高レベルであり、ＲＢ０＿ＩＮＴ入力における負の勾配をトリガするときには、制御は、割り込みサービス・ルーチンＳＹＳ＿ＣＨＫに移る。ステップ５０２では、ＣＨＫ＿ＦＬＧフラグもまた、リセットされる。このフラグは、バッテリ・パックＢがホスト・コンピュータ・システムＣからいつ取り出されたかを判断するのに用いられる。更に、ステップ５０２では、ＶＭＩＮ＿ＦＬＧフラグが、リセットされる。ＶＭＩＮ＿ＦＬＧフラグは、バッテリ１００が放電状態になったときに常に設定される。
【００７３】
制御は、次に、ステップ５０４に進み、ここでは、ＢＤＡＴ信号がテストされる。そして、制御は、ステップ５０６に進み、ＢＤＡＴ＿ＦＬＧフラグがチェックされる。セットされていると、それは、バッテリ・パックＢがホスト・コンピュータ・システムＣの中にあることを示している。ＢＤＡＴ＿ＦＬＧがセットされていない場合には、制御は、ステップ５０４に戻る。ＢＤＡＴ＿ＦＬＧフラグがセットされている場合には、制御は、ステップ５０８に進み、そこで、ＴＵＲＮＯＦＦ＿ＦＬＧがテストされる。セットされている場合には、これは、バッテリの過剰放電（すなわち、過剰に低電圧レベルに放電されたこと）を示すので、制御は、ステップ５０４に移動する。その理由は、マイクロコントローラ３００は、マイクロコントローラ３００が恒久的にパワーダウンするように、バッテリ・パックＢがホスト・コンピュータ・システムＣから取り外されるのを待機しているからである。ＴＵＲＮＯＦＦ＿ＦＬＧがセットされていない場合には、制御は、ステップ５１０に移動し、そこでは、バッテリ・パックＢのホスト・コンピュータ・システムＣからの取り外しのチェックが始まる。
【００７４】
ステップ５１０では、マイクロコントローラ３００は、ＢＤＡＴ信号が低レベルであるかどうかを判断する。ＢＤＡＴ信号は、通常は高レベルであるから、９６０μｓよりも長い時間低レベルに留まることはない。ＢＤＡＴ信号が低レベルである場合には、制御は、ステップ５１２に進み、ＣＨＫ＿ＦＬＧが増加される。ＢＤＡＴラインが再び高レベルになりＲＢ０＿ＩＮＴ入力において負の勾配を生じるときには常に、ＳＹＳ＿ＣＨＫ割り込みサービス・ルーチンがＣＨＫ＿ＦＬＧをリセットし（図１０を参照のこと）、従って、ＣＨＫ＿ＦＬＧは、ＢＤＡＴ信号がどのくらい長く低レベルに留まるかをトラッキングするのに用いられる。
【００７５】
制御は、次に、ステップ５１４に進み、このステップでは、マイクロコントローラ３００が、ＢＤＡＴ信号が９６０μｓよりも長く否定状態にされていたかどうかを判断する。そうであれば、バッテリ・パックＢはホスト・コンピュータ・システムＣから取り外されており、制御は、次に、ステップ５１６に進み、そこでは、ＴＩＭＥＯＵＴ＿ＢＤＡＴが呼び出される（図１１を参照して説明する）。次に、制御は、ステップ５１７に進み、このステップでは、ＳＹＳ＿ＣＨＫ割り込みルーチンのための割り込みがイネーブル状態にされ、ＣＧＡＴＥ信号がリセットされ、ＤＧＡＴＥ信号がリセットされ、ＢＤＡＴ＿ＦＬＧフラグがリセットされ、ＣＨＫ＿ＦＬＧフラグがリセットされる。次に、制御は、ステップ５０４に戻る。バッテリ・パックＢがホスト・コンピュータ・システムＣから取り外されていないか、又はＢＤＡＴ信号が高レベルである場合には、制御は、ステップ５１８に進み、ＣＨＫ＿ＦＬＧフラグがリセットされ、ＰＯＬＬルーチンが呼び出される。制御は、そして、ステップ５０４に戻る。
【００７６】
図１０のＳＹＳ＿ＣＨＫ割り込みサービス・ルーチンを参照すると、ＢＤＡＴ信号がアサートされるときは常に、制御は、ステップ６１０に進む。制御は、ステップ６１１に進み、ＣＨＫ＿ＦＬＧがリセットされる。制御は、次に、ステップ６１２に進み、そこで、マイクロコントローラ３００が、ＢＤＡＴ＿ＦＬＧフラグをテストする。設定されている場合には、これは、バッテリ・パックＢがホスト・コンピュータ・システムＣの中にあることを示しており、制御は、ステップ６１８に進む。ＢＤＡＴ＿ＦＬＧが設定されていない場合には、制御は、ステップ６１４に進み、Ｂ＿ＩＤルーチンが呼び出され、このルーチンは、ＢＤＡＴ信号上の既知の通信シグニチャをチェックする。制御は、次に、ステップ６１４からステップ６１８に進む。ステップ６１８では、ＳＹＳ＿ＣＨＫルーチンに対する割り込みが再びイネーブル状態にされ、制御は、ステップ６２０に進み、割り込みサービス・ルーチンは終了する。
【００７７】
図１１は、ＢＤＡＴ信号が９６０μｓよりも長く否定状態にされている場合に、ＭＡＩＮルーチンによって呼び出されるＴＩＭＥＯＵＴ＿ＢＤＡＴルーチンを示している。制御は、ステップ６２４で開始し、ステップ６２６に移動し、そこで、バッテリ・マイクロコントローラ３００が、ＴＵＲＮＯＦＦ＿ＦＬＧかＶＭＩＮ＿ＦＬＧかのどちらかがセットされているかどうかをチェックする。どちらのフラグもがセットされている場合には、微小放電トランジスタ２７４は、オンされていない。そうでない場合には、制御は、ステップ６２８に進み、そこでは、Ｔ５０信号がアサートされ、微小放電トランジスタ２７４をオンし、それによって、バッテリ・パックＢからの微小電流が流れ、ＥＮＡＢＬＥ信号がアサートされる。更に、ＰＷＲ２信号が否定状態にされ、よって、不必要な回路を動作不能にする。ＤＧＡＴＥ及びＣＧＡＴＥ信号の両方が否定状態にされ、それぞれ、主放電トランジスタ２８０と充電トランジスタ２００とをオフにする。更に、ＢＤＡＴ＿ＦＬＧがリセットされ、再び、バッテリ・パックＢがホスト・コンピュータ・システムＣの中にないことを示す。制御は、次に、ステップ６３０に進み、そこからＭＡＩＮルーチンに戻る。ＴＵＲＮＯＦＦ＿ＦＬＧがセットされている場合には、制御は、ステップ６２６からステップ６３０に移動する。
【００７８】
図１２は、ＳＹＳ＿ＣＨＫによってホスト・コンピュータ・システムＣを識別するために呼び出されるＢ＿ＩＤルーチンを示している。制御は、ステップ６５０で開始して、ステップ６５２に進み、バッテリ・マイクロコントローラ３００は、未知のシステムが検出されるときに設定されるＵＮＫ＿ＳＹＳフラグをリセットする。更に、ステップ６５２では、ＢＤＡＴ信号信号に関する初期化手順をチェックするＩＮＴ＿ＣＨＫルーチンが呼び出される。初期化手順がマイクロコントローラ１０８とＲＡＭ／ＲＴＣ１１２との間で検出されない場合には、ＵＮＫ＿ＳＹＳフラグがセットされる。制御は、ステップ６５４に進み、そこで、ＵＮＫ＿ＳＹＳフラグの状態がチェックされる。ＵＮＫ＿ＦＬＧが設定されていて未知のシステムであることを示している場合には、制御は、ステップ６５６に進み、ＳＹＳ＿ＣＨＫ割り込みサービス・ルーチンに戻る。初期化手順が検出されている場合には、制御は、ステップ６５８に進み、図１６との関係で論じられることになるＲＥＡＤ＿ＢＹＴが呼び出され、ＢＤＡＴ信号から１バイトＲＢＹＴＥを読み出す。次に、制御は、ステップ６６０に進み、再び、ＵＮＫ＿ＳＹＳフラグがチェックされる。
【００７９】
未知のシステムが検出されていると、制御は、ステップ６６２に進み、ＳＹＳ＿ＣＨＫルーチンに戻る。しかし、未知のシステムが検出されていないと、制御は、ステップ６６４に進み、そこで、バッテリ・マイクロコントローラ３００が、ＲＥＡＤ＿ＢＹＴによって読み出されたバイトであるＲＢＹＴＥがＲＤ＿ＲＯＭであるかどうかを判断する。そうでない場合には、制御は、ステップ６６２に戻り、ＳＹＳ＿ＣＨＫルーチンに戻る。ＲＤ＿ＲＯＭが検出される場合には、制御は、ステップ６６６に進み、そこで、ＲＥＡＤ＿ＢＹＴが再び呼び出される。次に、制御は、６６８に進み、バッテリ・パックＢが未知のシステムの中にあるかどうかをチェックする。そうであれば、制御は、ステップ６７４に進み、ＳＹＳ＿ＣＨＫルーチンに戻る。そうでなければ、制御は、ステップ６７０に進み、ＲＢＹＴＥがファミリ・コードＦＡＭ＿ＣＯＤＥであるかどうかをチェックする。そうでなければ、制御は、ステップ６７４に進み、ＢＤＡＴ＿ＦＬＧフラグをセットすることなくＳＹＳ＿ＣＨＫに戻る。ＲＢＹＴＥがファミリ・コードＦＡＭ＿ＣＯＤＥである場合には、バッテリ・パックＢは、ホスト・コンピュータ・システムＣの中に置かれている。従って、制御は、ステップ６７２に進み、そこで、ＢＤＡＴ＿ＦＬＧフラグがセットされ、バッテリ・パックＢがホスト・コンピュータ・システムＣの中にあることを指示し、次に、制御は、ステップ６７４に進み、ＳＹＳ＿ＣＨＫルーチンに戻る。
【００８０】
図１４及び図１５は、初期化手順チェック・ルーチンＩＮＩＴ＿ＣＨＫの流れ図を示しており、このルーチンは、マイクロコントローラ１０８とＲＡＭ／ＲＴＣ１１２との間の任意の通信に続かなければならない、初期化手順をチェックする。初期化手順チェック・ルーチンＩＮＩＴ＿ＣＨＫは、ステップ７００で開始される。制御は、次に、ステップ７０２に進み、そこで、ＢＤＡＴ信号がテストされる。制御は、そして、ステップ７０４に進み、ＢＤＡＴ信号がその通常の状態である高レベルならば、制御は、ステップ７０２に戻る。ＢＤＡＴ信号が低レベルである場合には、制御は、ステップ７０６に進み、そこで、マイクロコントローラ３００のプログラマブル・タイマが初期化され、タイマがオーバフローすると常に割り込みがトリガされる。図１３との関係で説明する割り込みサービス・ルーチンＴＩＭＥＯＵＴ＿ＩＤが、割り込みを与える。ＢＤＡＴ信号が最初に否定状態にされるときには、ＢＤＡＴが否定状態にされてからアサートされるまでの時間は、リセット・パルスと一貫（consistent）していなければならない。
【００８１】
次に、プログラマブル・タイマが初期化されて、リセット・パルスに対する最大許容時間の後に、割り込みが発生される。図１３を参照すると、ＴＩＭＥＯＵＴ＿ＩＤ割り込みサービス・ルーチンが、これが生じるときに、ＵＮＫ＿ＳＹＳフラグをセットする。図１４に戻ると、制御は、ステップ７０８に進み、そこで、ＢＤＡＴが再びテストされる。制御は、７１０に進み、そこで、ＵＮＫ＿ＳＹＳがセットされている場合には、制御は、ステップ７１２に進み、Ｂ＿ＩＤルーチンに戻る。そうでない場合には、制御は、ステップ７１４に進み、マイクロコントローラ３００が、ＢＤＡＴ信号が高レベルであるかどうかを判断する。そうでなければ、制御は、ステップ７０８に戻る。ＢＤＡＴ信号が高レベルでありリセット・パルスの潜在的な検出を指示している場合には、制御は、ステップ７１６に進み、プログラマブル・タイマが読み出され、タイマ割り込みが動作不能にされる。制御は、次に、ステップ７１８に進み、そこで、タイマが評価され、電源マイクロコントローラ１０８がリセット・パルスを送信したかどうかを調べる。そうであれば、制御は、ステップ７２２に進む。リセット・パルスが検出されていない場合には、制御は、ステップ７２０に進み、ＵＮＫ＿ＳＹＳフラグがセットされて未知のシステムであることを示し、制御は７１２に進み、Ｂ＿ＩＤルーチンに戻る。
【００８２】
制御が７２２に進む場合には、リセット・パルスが検出される。ステップ７２２（図１５）では、ＢＤＡＴ信号が再びテストされる。制御は、ステップ７２４に進み、ＢＤＡＴ信号が高レベルである場合には、制御は、次に、ステップ７２２に戻り、再び、ＢＤＡＴ信号をテストする。ＢＤＡＴ信号が高レベルである場合には、制御は、ステップ７２６に進み、バッテリ・マイクロコントローラ３００は、タイマを初期化して、タイマがオーバフローするときには、割り込みを発生する。タイマは、存在パルスに対する最大許容時間が経過したときにオーバフローする。ＴＩＭＥＯＵＴ＿ＩＤルーチンは、タイマが発生する割り込みを与える。制御は、次に、ステップ７２８に進み、バッテリ・マイクロコントローラ３００はＢＤＡＴ信号をテストする。制御は、次に、ステップ７３０に進み、バッテリ・マイクロコントローラ３００は、ＵＮＫ＿ＳＹＳをテストすることによって、道のシステムが検出されたかどうかを判断する。そうであれば、制御は、ステップ７３２に進み、Ｂ＿ＩＤルーチンに戻る。
【００８３】
未知のシステムが検出されていない場合には、制御は、ステップ７３０からステップ７３４に進んで、ＢＤＡＴ信号が高レベルであるかどうかを判断し、そうでない場合には、制御は、ステップ７２８に戻り、そこで、ＢＤＡＴ信号が再びテストされる。ステップ７３４でＢＤＡＴ信号が高レベルである場合には、制御は、ステップ７３６に進み、そこで、マイクロコントローラ３００は、タイマの値を読み出す。制御は、次に、ステップ７３８に進み、存在パルスが検出される場合には、制御は、ステップ７３２に戻り、Ｂ＿ＩＤに戻る。存在パルスが検出されない場合には、制御は、ステップ７４０に進み、そこで、ＵＮＫ＿ＳＹＳフラグがセットされ、制御は、ステップ７３２に進む。
図１３は、タイマ・オーバフロー割り込みを与える割り込みサービス・ルーチンとして機能することによって、ＵＮＫ＿ＳＹＳを設定するのに用いられるＴＩＭＥＯＵＴ＿ＩＤルーチンを示している。図１３において、ステップ８００が呼び出され、タイマによって発生された割り込みが与えられる。制御は、次に、ステップ８０２に進み、ＵＮＫ＿ＳＹＳフラグがセットされる。制御は、次に、ステップ８０４に進み、そこで、割り込みサービス・ルーチンが終了する。
【００８４】
図１６には、１バイトのデータであるＲＢＹＴＥをＢＤＡＴ信号から読み出すＲＥＡＤ＿ＢＹＴルーチンが示されている。このルーチンは、ステップ８５０で開始して、そこで、ＲＥＡＤ＿ＢＹＴルーチンがＢ＿ＩＤルーチンによって呼び出される。制御は、次に、ステップ８５２に進み、プログラマブル・タイマが初期化され、低レベルであるＢＤＡＴ信号がある時間内に検出されない場合には、割り込みが発生される。ＴＩＭＥＯＵＴ＿ＩＤ割り込みサービス・ルーチンが、タイマ・オーバフロー割り込みを与える。ＢＤＡＴ信号を否定状態にすることは、電源マイクロコントローラ１０８が１ビットのデータを読み出すまたは書き込むことの準備ができていることを示す。第１の時間は、４０秒に設定されるが、その理由は、電源マイクロコントローラ１０８は２７秒以内に応答しなければならないからである。制御は、次に、ステップ８５４に進み、ＢＤＡＴ信号をテストする。制御は、次に、ステップ８５６に進み、ＢＤＡＴ信号が高レベルであるかどうかを評価し、そうであれば、制御は、ステップ８５８に進んで、マイクロコントローラ３００は、割り込みサービス・ルーチンであるＴＩＭＥＯＵＴ＿ＩＤルーチンが呼び出されていることに起因してＵＮＫ＿ＳＹＳがセットされているかどうかを判断する。バッテリ・パックＢが未知のシステムの中にある場合には、制御は、ステップ８６０に進み、Ｂ＿ＩＤルーチンに戻る。バッテリ・パックＢがホスト・コンピュータ・システムＣの中にある場合には、制御は、ステップ８５２に戻る。ステップ８５６においてＢＤＡＴ信号が低レベルである場合には、制御は、ステップ８６２に進み、遅延が発生されるが、その長さは、マイクロコントローラ１０８による書き込み又は読み出し動作が検出されるかどうかに依存する。
【００８５】
図８のＢ及びＣに関して既に述べたように、マイクロコントローラ１０８による１又は０の読み出しの検出のために、マイクロコントローラ３００は、ＢＤＡＴ信号が最初に否定状態にされてから１５μｓ以内に、ＢＤＡＴ信号をサンプリングしなければならない。「１」又は「０」の書き込みの検出のために、ＢＤＡＴ信号は、ＢＤＡＴ信号が最初に否定状態にされてから１５μｓから６０μｓの後に、サンプリングされなければならない。従って、ステップ８６２では、ＢＤＡＴ信号は、適切な時刻にサンプリングされて、ＲＢＹＴＥを形成する。制御は、次に、ステップ８６４に進み、そこで、マイクロコントローラ３００は、８ビットが読み出されたかどうかを評価する。そうであれば、制御は、ステップ８６６に進み、Ｂ＿ＩＤに戻り、ＲＢＹＴＥを評価する。８ビットが読み出されていない場合には、制御は、ステップ８５２に進み、更なるビットを読み出す。
【００８６】
図１７には、バッテリ１００の状態を調べ、充電トランジスタ２００、微小放電トランジスタ２７４、及び主放電トランジスタ２８０をそれぞれオン・オフさせる、ＰＯＬＬルーチンが示されている。ＰＯＬＬルーチンは、ステップ９００で開始する。制御は、ステップ９０２に進み、そこで、バッテリ・マイクロコントローラ３００のＡ／Ｄ変換器が、ＶＲＥＦ、ＣＧＡＴＥ、ＤＧＡＴＥ、ＴＨＥＲＭ、及びＴＳＥＮＳＥ信号を読み出して、そのデジタル値を、それぞれ、ＶＲＥＦ＿ＳＡＭ、ＣＧＡＴＥ＿ＦＬＧ、ＤＧＡＴＥ＿ＦＬＧ、ＴＨＥＲＭ＿ＦＬＧ、及びＴＳＥＮＳＥ＿ＳＡＭレジスタに記憶する。この好適実施例では、バッテリ１００の状態は、回路４００を、毎秒当たり約１μｓの間モニタすることによって、測定される。制御は、ステップ９０４に進み、そこで、マイクロコントローラ３００は、ＴＨＥＲＭ＿ＦＬＧがリセットされているかどうかを判断する。そうであれば、バッテリ１００のバッテリ・セルに過剰電圧条件が存在するか、又は、バッテリ１００に過剰充電電流条件が存在するかのどちらかである。モニタ回路４００は、図５との関係で既に述べたように、ＣＧＡＴＥ信号をアサート又は否定状態にする。ＴＨＥＲＭ＿ＦＬＧがセットされている場合には、制御は、ステップ９１０に進み、そこで、ＵＮＬＡＴＣＨ信号が高レベルにパルス化される。これにより、充電コントローラ４２６がＬＡＴＣＨＯＵＴ信号をバッテリ１００における瞬間的な過剰電圧状態の間に否定状態にされている場合には、トランジスタ２３６は、過剰電圧状態が現在存在しないならば、再びオンされることが保証される。
【００８７】
制御は、次に、ステップ９１２に進み、そこで、バッテリ・マイクロコントローラ３００は、ＤＧＡＴＥ＿ＦＬＧフラグが低レベルであるかどうかをチェックする。そうであれば、バッテリ１００が過剰に低電圧まで放電しているか、又は、バッテリ１００に過剰放電電流が存在するか、のどちらかである。ＤＧＡＴＥ＿ＦＬＧが低レベルである場合には、制御は、ステップ９１４に進み、そこで、マイクロコントローラ３００が、ＶＲＥＦ＿ＳＡＭフラグがＶDEEPよりも小さいかどうかを判断する。ここで、ＶDEEPは、バッテリ１００のバッテリ・セルが過剰に低電圧まで放電しているときのＶＲＥＦの値である。ＶＲＥＦ＿ＳＡＭがＶＤＥＥＰよりも大きい場合には、バッテリ１００のセルは、どれも過剰に低電圧まで放電しておらず、制御は、ステップ９２０に進む。過剰に低電圧まで放電したバッテリ・セルが存在する場合には、制御は、代わりに、ステップ９１６に進み、そこで、ＣＧＡＴＥ＿ＦＬＧがリセットされ、ＴＵＲＮＯＦＦ＿ＦＬＧがセットされ、よって、バッテリ・パックＢのＶＢＡＴ−及びＶＢＡＴ＋端子を恒久的にブロックする。制御は、次に、ステップ９２０に進む。ステップ９２０では、バッテリ・マイクロコントローラ３００は、ＶＲＥＦ＿ＳＡＭは放電電圧スレショルドＶMINよりも小さく、放電したバッテリを示しているかどうかを判断する。そうである場合には、制御は、ステップ９２２に進み、ＤＧＡＴＥ＿ＦＬＧフラグがリセットされ、ＶＭＩＮ＿ＦＬＧフラグがセットされる。制御は、次に、ステップ９２４に進む。ＶＲＥＦ＿ＦＬＧフラグがＶMINよりも大きな場合には、制御は、ステップ９２０からステップ９２１に進み、そこで、ＶＭＩＮ＿ＦＬＧフラグがリセットされる。制御は、次に、ステップ９２４に進む。
【００８８】
ステップ９２４では、マイクロコントローラ３００は、ＴＳＥＮＳＥ＿ＳＡＭが最大の温度スレショルドＴMAXよりも大きく、従ってバッテリ１００における過剰温度状態を指示しているかどうかが判断される。そうであれば、制御は、ステップ９２６に進み、ＣＧＡＴＥ＿ＦＬＧフラグがリセットされ、Ｔ７０信号がアサートされ、よって、電源マイクロコントローラ１０８に過剰温度状態を指示し、ＣＨＡＲＧＥ信号が否定状態にされる。ＴＳＥＮＳＥ＿ＦＬＧがＴMAXよりも小さい場合には、制御は、ステップ９２４からステップ９２８まで進み、マイクロコントローラ３００は、ＣＧＡＴＥ＿ＦＬＧがリセットされているかどうかを評価する。そうであれば、制御は、ステップ９３０に進み、そこで、マイクロコントローラ３００は、ＣＨＡＲＧＥ信号が低レベルであるかどうかを判断する。そうでなければ、制御は、ステップ９３２に進み、そこで、ＣＨＡＲＧＥ信号が否定状態にされ、ＴＥＭＰルーチンが呼び出され、このルーチンが、Ｔ５０信号をパルス化し、電源マイクロコントローラ１０８に、充電が終了したことを通信する。電源マイクロコントローラ１０８は、次に、ＲＡＭ／ＲＴＣ１１２を更新し、適切な態様で充電を終了する。制御は、次に、ステップ９３２からステップ９３８に進む。
【００８９】
ＣＨＡＲＧＥ信号がステップ９３０において低レベルである場合には、制御は、ステップ９３８に移動する。ステップ９２８では、ＣＧＡＴＥ＿ＦＬＧがセットされている場合には、制御は、ステップ９３４に進み、そこで、ＣＨＡＲＧＥ信号が評価される。ＣＨＡＲＧＥ信号が高レベルである場合には、制御は、ステップ９３８に進む。ＣＨＡＲＧＥ信号が低レベルである場合には、制御は、ステップ９３４からステップ９３６に進み、そこで、バッテリ・マイクロコントローラ３００がＣＨＡＲＧＥ信号をアサートし、パルス幅変調されたＴ５０信号（図１８及び図１９との関係で後に論じる）を提供するのに用いられるタイマ割り込みを不能化（ディセーブル）し、Ｔ５０信号を否定状態にする。これにより、バッテリ１００が再び充電されることが保証される。制御は、次に、ステップ９３６からステップ９３８に進む。
【００９０】
ステップ９３８では、ＤＧＡＴＥ＿ＦＬＧがセットされている場合には、制御は、ステップ９４０に進み、ＤＩＳＣＨ信号がアサートされ、次に、制御は、ステップ９４４に進む。ＤＧＡＴＥ＿ＦＬＧがリセットされている場合には、制御は、ステップ９３８からステップ９４２に進み、そこで、ＤＩＳＣＨ信号が否定状態にされ、制御は、ステップ９４４に進む。ステップ９４４では、制御は、ＭＡＩＮルーチンに戻る。
【００９１】
図１８及び図１９は、ＴＥＭＰルーチンとＰＷＭルーチンとがそれぞれ示されている。これらのルーチンは、Ｔ５０信号をパルス化し温度の上昇を指示するのに用いられ、これにより、電源マイクロコントローラ１０８が充電を適切な態様で終了し、それにより、ＲＡＭ／ＲＴＣ１１２への充電情報を更新することが可能になる。図１８を参照すると、ＴＥＭＰルーチンはステップ９５０で開始する。制御は、次に、ステップ９５２に進み、そこで、プログラマブルなタイマがパルス幅変調されたＴ５０信号のオン時刻を用いて初期化され、タイマ・オーバフロー割り込みが動作可能（イネーブル）にされる。制御は、次に、ステップ９５２からステップ９５４に進み、そこで、Ｔ５０信号がアサートされる。制御は、次に、ステップ９５６に進み、そこで、制御は、ＰＯＬＬルーチンに戻る。
【００９２】
図１９は、ＰＷＭルーチンは、タイマ・オーバフローによって発生される割り込みを与えるのに用いられる割り込みサービス・ルーチンを示している。最初に、プログラマブル・タイマがＴＥＭＰルーチンによって初期化され、ＰＷＭルーチンは、その後で、ＰＷＭルーチンにおいて与えられたものとしてのタイマ指示の結果として、タイマ・オーバフローによって呼び出される。ＰＷＭルーチンは、ステップ９６０で開始する。制御は、ステップ９６２に進み、そこで、Ｔ５０信号がテストされる。制御は、次に、ステップ９６４に進み、そこではＴ５０は高レベルであり、制御は、ステップ９６６に進み、そこで、プログラマブルなタイマがオフ時刻によって初期化され、タイマは、オーバフロー割り込みがイネーブルされ、Ｔ５０信号が否定状態にされる。制御は、次に、ステップ９６６からステップ９６８に進み、そこで、ＰＷＭルーチンは、終了する。ステップ９６４では、Ｔ５０信号が低レベルである場合には、制御は、ステップ９７０に進み、そこで、プログラマブル・タイマはオン時刻によって初期化され、オーバフロー割り込みがイネーブルされ、Ｔ５０信号がアサートされる。制御は、次に、ステップ９７０からステップ９６８に進み、そこで、制御は、割り込みから戻る。
【００９３】
本発明に関する以上の開示及び説明は、例示的なものである。サイズ、形状、材料、成分、回路素子、ワイヤ接続、及び接点、更には、図解した回路と構成、動作方法については、様々な変更が、本発明の発明思想から離れずに、可能である。
【図面の簡単な説明】
【図１】本発明によるバッテリ・パックが既知のホスト・コンピュータ・システムの中に挿入されている様子を図解するブロック図である。
【図２】本発明によってリチウム・イオン及びニッケル・ベースのバッテリ・パックと共に用いられている図１の既知のホスト・コンピュータ・システムを図解するブロック図である。
【図３】図１の充電管理回路の回路図である。
【図４】図１の電力制御回路の回路図である。
【図５】図１の電源マイクロコントローラ回路の回路図である。
【図６】図１のモニタ回路の回路図である。
【図７】本発明によるモニタ回路の動作を図解する状態表を示す図である。
【図８】Ａは、本発明による、バッテリ・パック・メモリと電源マイクロコントローラとの間で用いられる初期化プロトコルを図解するタイミング図である。Ｂは、本発明による、１のバッテリ・データ信号の書き込み又は読み出しのためのプロトコルを図解するタイミング図である。Ｃは、本発明による、０のバッテリ・データ信号の書き込み又は読み出しのためのプロトコルを図解するタイミング図である。
【図９】バッテリ・パックの既知のホスト・コンピュータ・システムへの挿入をチェックする主ルーチンのフローチャートである。
【図１０】既知のホスト・コンピュータ・システムとバッテリ・パック・メモリとの間のバッテリ・データ通信の特性シグニチャをチェックするシステム・チェック・ルーチンのフローチャートである。
【図１１】既知のホスト・コンピュータ・システムからのバッテリ・パックの取り外しをチェックするバッテリ・データ・タイムアウト・ルーチンのフローチャートである。
【図１２】バッテリ・パック・メモリと既知のホスト・コンピュータ・システムとの間の通信に関する特性シグニチャを確認するバッテリ識別ルーチンのフローチャートである。
【図１３】バッテリ・データの通信の初期化手順を確認するのに用いられるタイムアウト確認ルーチンのフローチャートである。
【図１４】バッテリ・データ信号の初期化プロトコルをチェックする初期化プロトコル・チェック・ルーチンのフローチャートである。
【図１５】バッテリ・データ信号の初期化プロトコルをチェックする初期化プロトコル・チェック・ルーチンのフローチャートである。
【図１６】バッテリ・データ信号から１バイトを読み出す読み出しバイト・ルーチンのフローチャートである。
【図１７】モニタ回路を用いてバッテリ・パックへの充電又はバッテリ・パックからの放電を制御するＰＯＬＬルーチンのフローチャートである。
【図１８】バッテリ・パック・サーミスタ信号を操作して、既知のシステムへの充電オフを指示する温度ルーチンのフローチャートである。
【図１９】バッテリ・パック・サーミスタ信号のパルス幅変調を制御するパルス幅変調ルーチンのフローチャートである。
【図１】
0003766491.tif 000002
【図２】
0003766491.tif 000003
【図３】
0003766491.tif 000004
【図４】
0003766491.tif 000005
【図５】
0003766491.tif 000006
【図６】
0003766491.tif 000007
【図７】
0003766491.tif 000008
【図８】
0003766491.tif 000009
【図９】
0003766491.tif 000010
【図１０】
0003766491.tif 000011
【図１１】
0003766491.tif 000012
【図１２】
0003766491.tif 000013
【図１３】
0003766491.tif 000014
【図１４】
0003766491.tif 000015
【図１５】
0003766491.tif 000016
【図１６】
0003766491.tif 000017
【図１７】
0003766491.tif 000018
【図１８】
0003766491.tif 000019
【図１９】
0003766491.tif 000020