要約
ノートブックコンピュータは、益々複雑なバッテリ充電アルゴリズムとシステムを必要としています。この記事では、リチウムイオン(Li+)、ニッケルカドミウム(NiCd)、およびニッケル水素(NiMH)バッテリ、および関連するシステムレベルのスイッチモードとリニアバッテリチャージャの情報および背景について説明します。これらの電圧レギュレータおよび電流レギュレータは8051やMicrochip PICのような外部マイクロプロセッサによって制御され、これらのコントローラに例が提供されます。マキシムのバッテリチャージャICで一般的なバッテリケミストリを充電するための要件の概要とともに、システムレベルのトレードオフおよびファームウェア設計のヒント、WWWのエンジニアリングリソースリストが提供されます。
前号のマキシムのエンジニアリング・ジャーナル(27号)では、スタンドアロンバッテリ充電器の新しい展開について説明しました。2部シリーズの第2部に当たる今回は、バッテリ充電器ICを使用する際のシステムレベルの問題について考察します。
過去5年間のポータブル機器への市場圧力の結果、かつては単純だったバッテリ充電器が30分で高級バッテリを充電できる複雑なスイッチモード機器に変貌しました。この展開はまた、僅か数年前の独立したスタンドアロン充電器ICからの離脱を意味します。これらのICの一部は、高級バッテリの急速充電という複雑な作業を行うために十分な高レベルのインテリジェンスを備えていました。
マキシムは、スタンドアロン充電器ICを製造し続けていますが、市場の需要は最近変化を遂げてきています。今日のバッテリ充電器サブシステムは、外部マイクロコントローラ(µC)のインテリジェンスを使用して充電電圧および電流を制御します(µCはシステム内の別の場所にあるのが標準的です)。この方法を使用すると、大量生産のアプリケーションで低コストを達成できると共に、特定のアプリケーションに合せて充電器を調節する柔軟性が最大限に与えられます。
かつては、必要な全インテリジェンスがバッテリ充電器コントローラICそのものにありましたが、今日ではシステムデザイナーが充電アルゴリズムを作成し、関連するファームウェアを作成する必要があります。本記事では、マキシムの全汎用バッテリタイプ用の広範囲のバッテリ充電器ICを使用した充電システムを製作するために必要な事項を説明します。
本文では、一般的なタイプのバッテリをマキシムのバッテリ充電器ICで充電するための必要条件について概説します。システムレベルにおける長所短所のバランスおよびファームウェア設計のヒントについて説明すると共に、デザイナーが利用できるワールド・ワイド・ウェブ(WWW)資料のリストが記載されています。最後に、2つの一般的なµCである8051とマイクロチップPICを使用した設計例を示します。これらの例を基にして、カスタム充電器回路を開発することもできます。
バッテリ充電技法の概説
今日実際に使用されているバッテリのタイプは、ニッケルカドミウム(NiCd)、ニッケル水素化金属(NiMH)、ゲル化鉛蓄電池(PbSO4)およびリチウムイオン(Li+)の4つです。これらの長所短所の比較は本稿では論じませんが、参考資料の欄にその関係の資料が記載されています。
注意:特定の推奨事項については、バッテリメーカに直接お問い合わせください。本稿では、様々なバッテリのタイプの充電に必要な条件についてのみ説明します。
ここでは、4つの一般的なタイプについて一般的な充電技法および限界について説明します。詳細および背景となる情報については、マキシムのデータシートおよび本稿の最後に記載されているその他の文献を参照してください。
本文および一般的充電器の状態図(図1)に示すように、急速充電にはいくつかの段階があります。
図1. 一般充電器状態図
初期化
実際の充電手順には含まれていませんが、初期化は重要な段階です。充電器はそれ自体を初期化して、自己テストを実行します。充電は、電源異常とその結果行われる再初期化によって中断されることがあります。スマートバッテリまたは何らかのタイムスタンプ付の非揮発性記憶機能がない限り、こうした出来事は検出されません。殆どの充電器は、電源異常が起こると完全に再初期化します。過充電が問題になる場合、充電器に特別な自己テストシーケンスを実行させてバッテリがすでに充電されているかどうかを確かめることができます。例えば、パワーアップ時にすでにバッテリがある場合にそうした動作がトリガされるようにします。
この初期化によって、充電上の問題が生じる場合があります。例えば、固定時間充電器の場合は、固定された4時間だけバッテリを充電しますが、3時間59分充電した後で電源異常が発生すると、充電器はもう1度4時間の充電を始め、バッテリは4時間過充電されることになります。これではバッテリが損傷する恐れがあるため、固定時間充電がめったに使用されない理由の1つとなっています。また、この例はなぜ充電器がバッテリの温度を監視したり、その他の完了方法を予備対策として使用するべきかを示しています。
セルの適性検査
充電手順のこの段階では、バッテリがいつ装着されたか、またそのバッテリが充電可能かどうかを検出します。セルの検出は充電器の電源がオフのときに充電器の端子に電圧があるかどうかで行うのが普通ですが、この方法はセルが完全に放電しており、殆ど電圧を発生していない場合には問題になります。代替方法として、充電器にセルそのものでなくサーミスタまたは短絡ジャンパを利用することがあります。このハードウェアの存在は、バッテリパックの識別にも役立ちます。一方、スマートバッテリの場合はバッテリパックとの間で多くのシリアルデータが交換されるため、システムマネジメントバス(SMBus™)と呼ばれる専用のI2C的なプロトコルで必要な充電パラメータの全てが得られるのが普通です。
セルが装着されていることを充電器が検出すると、次にそのセルが良好かどうかを調べる必要があります。この準段階(適性検査)では、セルの基本的な機能状態(オープン、短絡、高温または低温)がチェックされます。一部の充電器(特に鉛蓄電池タイプ)では、セルが充電可能かどうかを調べるために小さな充電電流(急速充電の約5分の1)を流して一定時間内でセルが指定された電圧に達することを確認します。この技法を使用すると、完全放電したPbSO4バッテリを誤って不合格にする誤りを防ぐことができます。バッテリメーカの承認が得られれば、この技法を他のバッテリタイプに適用することもできます。
周囲温度およびセル温度のチェックも適性検査段階で行われます。充電器が高温または低温を検出した場合、通常は温度が公称範囲に戻るまで予め決められた時間待ちます。割り当てられた時間内に戻らなかった場合、充電器は充電電流を低減します。この動作によりバッテリ温度が下がるため、効率が向上します。最後に、オープンおよび短絡のチェックが行われます。セルがオープンの場合は簡単に検出できますが、セルが短絡しているかどうかを決めるには、誤って不合格とするのを防ぐための確認手順が必要です。これら全てのチェックに合格した場合にセルは充電可能であり、図1に示すように状態が進行します。
プレコンディショニング段階(オプション)
一部の充電器(主にNiCdバッテリ用)は、充電前にバッテリを完全に放電させるプレコンディショニング段階をオプションとして備えています。完全放電によりバッテリの電圧は1V/セルまで低減し、電解質内の樹枝状形成物が排除されます。この樹枝状形成物は、しばしば記憶効果と誤って呼ばれる現象を引き起こします。このいわゆる記憶効果とは、セルの動作寿命を短くする樹枝状形成物が存在する状態のことですが、完全な充電放電サイクルによってこの問題が解決される場合があります。
プレコンディショニングは各充電の前に行うか、あるいは(負荷テストその他の動作で)セルの充電量の半分以上がまだ残っていることがわかったときに行うようにすることもできます。プレコンディショニングには、1~10時間かかります。バッテリを1時間以下で放電することは一般にお勧めできません。プレコンディショニングを急速に行う場合、負荷抵抗で発生する熱をどうするかという実際的な問題が生じます。また、容量が低下していることがわかった上で手動で行う場合を除き、プレコンディショニングを10時間以上行うこともお勧めできません。NiCdの「記憶効果」は混乱と誤解に包まれているため、設計者はそれに対抗するボタンを充電器に付けることを避けてください。
急速充電段階および充電完了
急速充電および充電完了の方法は、セルのタイプおよびその他の設計因子に依存します。以下に、今日の一般的なバッテリタイプに対して広く使用されている急速充電技法について説明します。特定のガイドラインおよび推奨方法については、バッテリメーカのアプリケーション部門にお問い合わせください。
NiCdおよびNiMHセル
NiCdとNiMHバッテリの急速充電手順は非常に似ていますが、主な違いは充電完了方法にあります。いずれの場合も、充電器は一定の電流を流しながらバッテリ電圧その他の変数を監視して充電の停止時を決めます。2Cを超える急速充電レートも可能ですが、最も一般的なレートは約C/2です。充電効率は100%よりもやや低いため、レートがC/2の時に完全充電に達するには2時間よりもやや長くかかります。
一定電流を流すと、セル電圧はゆっくりと上昇してやがてピーク(勾配がゼロ)に達します。NiMHの充電は、このピーク(ΔVが0になるポイント)で完了します。NiCdの充電の場合は、このピークを過ぎたポイント、即ちバッテリ電圧が初めて下がりだしたところ(ΔVが負)で完了します(図2)。いずれのバッテリでも、完了ポイントを過ぎて急速充電が続行されるとセルを損傷する恐れがあります。
図2. レートがC/2の時のNiCdバッテリ充電特性
C/2を超えるレート(充電時間が2時間以下)の場合、充電器によってセルの温度および電圧も監視されます。セルが完全充電状態に達するとセル温度は急速に上昇するため、温度モニタによって別の充電完了方法が提供されます。正の温度勾配で完了するこの方法は、ΔT完了と呼ばれます。充電完了をトリガし得るその他の因子としては、充電時間および最大セル電圧があります。これらの因子を組み合わせると、良い充電器を設計できます。
注:セルが最初に充電し始めるときに充電完了条件に類似した状態になることがあるため、充電器は勾配検出による充電完了モードを起動する前に1~5分待つのが通常です。また、レートがC/8以下の場合、充電完了条件を検出することが難しくなります。これは測定される電圧および温度勾配(ΔV/ΔtおよびΔT/Δt)が小さくなり、システムのその他の部分からの影響と区別しにくくなるためです。急速充電中の安全を期するため、これらのシステムのハードウェアおよびソフトウェアは何か間違いがあったときに充電完了が必ず早まるようにしてください。
リチウムイオンセル
Li+バッテリの充電は、ニッケルタイプの電池の充電方式とは異なります。エネルギー保存量を最大限にするためのトップオフ充電を安全に行うことができます。Li+充電器は充電電圧を0.75%より優れた精度でレギュレーションします。また、最大充電レートは丁度ベンチ電源のように電流リミットで設定されます(図3)。急速充電が始まる時は、セル電圧は低く、充電電流は電流リミット値になります。
図3. Li+バッテリ電圧 対 充電電流
充電中にバッテリ電圧はゆっくりと増加します。やがて電流は次第に低下し、電圧が4.2V/セルのフロート電圧レベルまで上昇します(図4)。
図4. Li+バッテリ充電プロファイル
充電器はバッテリがフロート電圧に達したときに充電を完了できますが、この方法ではトップオフ動作が行われません。1つの方法として、フロート電圧に達したときにタイマをスタートし、固定遅延の後で充電を完了することができます。もう1つの方法としては、充電電流を監視して、低いレベル(通常はリミット値の5%ですが、一部のメーカは最小値を大きめの100mAとしています)になると充電を完了する方法があります。トップオフサイクルがこの技法で行われることも頻繁にあります。
近年Li+バッテリ、充電器およびこのバッテリタイプに対する理解が進んできています。初期のコンシューマアプリケーション用のLi+は安全性に影響する短所を持っていましたが、今日のよく設計されたシステムではこうした問題は起こりません。メーカの推奨方法は不変ではなく、また完全に一貫してはおらず、Li+バッテリは引き続き発展を遂げています。
鉛蓄電池セル
PbSO4バッテリは、電流制限法またはより一般的でシンプルな電圧制限法で充電されるのが普通です。電圧制限充電法はLi+セルに使用される方法と似ていますが、高精度は要求されません。電流制限電圧ソースをセルのフロート電圧よりもやや高いレベル(約2.45V)に設定する必要があります。
プレコンディショニング動作によってバッテリが充電を受け付けることを確認した後、充電器は急速充電を始め、最小充電電流に達するまで続行します。(この手順はLi+充電器の場合と似ています。)それから急速充電は完了し、充電器はVFLOAT (通常約2.2V)で維持充電を行います。PbSO4セルは、このフロート電圧における維持充電を無期限に許容します(図5)。
図5. PbSO4バッテリの充電プロファイル
高温におけるPbSO4バッテリの急速充電電流は、標準温度係数0.3%/℃に従って低減してください。急速充電で推奨される最高温度は約50℃ですが、維持充電はこれより高い温度でも一般的に可能です。
オプションのトップオフ充電(全タイプ)
どのバッテリタイプの充電器でも、オプションとしてトップオフ段階を含んでいることがよくあります。この段階は急速充電が完了した後で始まり、バッテリを完全充電レベルまで充電する中程度の充電電流を流します。(この動作はガソリンポンプが自動的に止まった後でさらに満杯まで注入するトップオフ操作と似ています。)トップオフ充電は、セル電圧、温度または時間がリミットに達した時に完了します。場合によっては、トップオフ充電によって標準的な急速充電より5%~10%長い動作寿命を得ることができます。但し、バッテリが完全あるいは完全に近い充電状態であるため、過充電による損傷が起こらないように十分に注意する必要があります。
オプションのトリクル充電(Li+以外の全てのバッテリタイプ)
どのバッテリタイプの充電器でも、オプションとしてトリクル充電段階を備えていることがよくあります。この段階は、バッテリの自己放電に対する対策です。PbSO4バッテリは最も高い自己放電レート(1日に数%)を持っており、Li+セルは最も低くなっています。Li+はレートが低すぎるためトリクル充電は必要なく、また推奨もされていません。しかし、NiCdは無期限にC/16のトリクル充電を許容するのが普通です。NiMHセルに対して安全な連続電流は通常C/50ですが、NiMHセルのトリクル充電が常に推奨されるわけではありません。
パルストリクルは充電器から約C/8のレートで短いパルス電流を流すもので、デューティサイクルは標準平均トリクル電流がC/512になるような低い値になっています。パルストリクル充電は両方のニッケルタイプに適用される上、オン/オフタイプのマイクロプロセッサ(µP)制御に適しているため、ほとんどの場合に使用されています。
一般的な充電システム
特定の回路を考察する前に、設計者は一般的なブロックおよび機能について熟知しておくべきです(図6)。全ての急速充電器は何らかの形でこれらのブロック機能を備えているはずです。バルク電源はACアダプタから生のDC電源を供給します。電流および電圧コントロールによって、バッテリに印加される電流と電圧のレギュレーションが行われます。安価な充電器の場合、レギュレータは電力を熱として放出するパワートランジスタやその他のリニアパス素子であるのが普通です。バックスイッチング電源を使用することもできます。この場合、標準的なフリーホイールダイオードを使用すると中程度の効率、同期整流器を使用すると最高の効率が得られます。
図6. 一般的な充電のシステムブロック図
図6の右側のブロックは様々な測定および制御機能を表しています。アナログ電流制御ループがバッテリに供給される最大電流を制限し、電圧ループがセルに印加される電圧を一定に維持します。(Li+セルでは、印加される充電電圧に高精度が要求されることに注意してください。)
充電器の電流電圧(I-V)特性は完全にプログラマブルの場合、および電流だけがプログラマブルで電圧にリミットを設ける場合(その逆も可)があります。セル温度は常に測定され、充電完了はこの測定値のレベルまたは勾配に基づいて行うことができます。充電器で充電時間も測定されます(通常はインテリジェンスブロックで計算)。
このブロックはシステムのインテリジェンスを提供し、前述の状態マシンを実現します。このブロックは急速充電をどのように、いつ完了するべきかを知っています。インテリジェンスはスタンドアロン充電器ICのチップに内蔵されています。内蔵されていない場合は、ホストµCまたは充電器ICの中の他のハードウェアブロックにあります。前述のように、今日では後者の構造が好適とされています。
マキシムの充電器製品の概要
マキシムでは、広範囲のスタンドアロンおよびコントローラタイプバッテリ充電器ICを製造しています。このため、システム設計者は性能、特長およびコストのバランスを取ることができます。表1に、これらのICがサポートされているバッテリタイプ毎に記載されています(新しく発売されたものから順番に並んでいます)。
Part | Control Method | Standard Regulation Mode** | Features | Chemistry | Charge Rate | Charge Termination Method |
MAX1647 | µC control, SMBus | Synchronous switching | Smart-battery system, level 2 compliant, smart-battery charger with SMBus, Li+, independent I-V control | All | Programmed | Programmed |
MAX1648 | User | Synchronous switching | Analog-controlled version of MAX1647, high-accuracy switching, I/V source: Li+ | All | Programmed | Programmed |
MAX745 | DAC or stand-alone | Synchronous switching | Advanced, low-cost, switch-mode Li+ charger, stand-alone, Li+ only | Li+ | Constant voltage, Li+ | Li+ float |
MAX846A | DAC or stand-alone | Linear | Low-cost, universal charger, accurate reference for Li+, external CPU support, reset and regulator | All | Constant voltage, Li+, programmed | Li+ float or programmed |
MAX1540 | DAC or stand-alone | Synchronous switching | Analog-controlled, switch-mode current source, Li+ or universal | Li+, NiCd, NiMH | Fast, trickle, pulse-trickle, top-off | Programmed or Li+ stand-alone |
MAX712 | Stand-alone | Linear | Complete, low-cost NiMH with termination modes, max times, LED outputs. No Li+. | NiMH | Fast, trickle | 0ΔV, max voltage, max temperature, max time |
MAX713 | Stand-alone | Linear | Complete, low-cost NiCd with termination modes, max times, LED outputs. No Li+. | NiCd | Fast, trickle | 0ΔV, max voltage, max temperature max time |
* DAC入力タイプではDACおよびµCの使用も可能。 ** 全てのリニアタイプは、ヒステリシス式スイッチングモードにより効率を高めることが可能。 |
レギュレーションをリニアにするかスイッチモードにするかは、設計上の大きな判断点です。リニアモードは安価ですが、放熱のため熱くなります。大きなデスクトップ充電器の場合、熱は問題でありませんが、ノートブックPC等の小さな機器では許されません。同期スイッチングレギュレータは最高の効率(95%付近)を提供するため、セル電話を含む超小型機器に適しています。リスト中の非同期スイッチモード回路の一部も妥当な効率を提供します。さらに、これらのリニア素子のほとんどは、中程度の効率のヒステリシス式スイッチングモードで使用できます。(詳細については、該当するデータシートを参照してください。)
充電器の自立性のレベルは、設計上のもう1つの判断点です。例えば、スタンドアロン充電器は完全に自立しています。MAX712/MAX713は、ユーザの最終製品用のLED制御出力も備えています。
スタンドアロンとしても使用でき、ディジタルアナログコンバータ(DAC)およびµPと共に使用することもできる素子としては、MAX1640/MAX1641、MAX846AおよびMAX745があります。MAX1640は主にニッケルタイプのバッテリ充電用の電圧制限電流ソースですが、充電タイマおよびパルストリクル回路を内蔵しています。本素子はスタンドアロン機能を備えており、高効率同期スイッチングレギュレータまたは(低コストアプリケーション用に)標準的なスイッチャと共に動作します。
MAX846AおよびMAX745はいずれもスタンドアロン動作でLi+バッテリを充電することができる上、汎用コントローラに必要な電圧と電流の独立制御および高精度リファレンスを備えています。MAX846Aはリニアタイプで、MAX745は同期スイッチングタイプです。いずれもスタンドアロンで使用できますが、通常は充電プロセスを部分的に制御するµCと共に動作します。LEDの点灯および急速充電の完了には、標準的にソフトウェアを使用します。MAX846Aは、リニアレギュレータおよびµC用のCPUリセット出力を備えています。
最も自立性が低く、最もフレキシブルな素子はMAX1647とMAX1648です。この2つは、MAX1647が内蔵DACおよびSMBusシリアルポートを備え、MAX1648が電圧および電流制御用としてアナログ入力を持っていることを除いて互いに類似しています。MAX1647は独立の電圧および電流レジスタを備えた完全シリアル制御DC電源です。スマートバッテリとの間でSMBus通信を行う能力を持ち、Intel/Duracellスマートバッテリ規格のレベル2に適合しています。
µC設計のヒント
これらの充電器ICは、8051、PIC、68HC11および68HC05等の低コスト8ビットコントローラと動作するのが普通です。ファームウェアは、アセンブリ言語またはC言語で書くことができます。いずれの言語も入手しやすく、低コストな上、無料ツールもあります。これらの素子のメーカおよび第三者メーカは、コンパイラ、アセンブラ、エミュレータおよびコードライブラリを豊富に用意しています。このソースコードの多くはワールド・ワイド・ウェブで入手できます(特にアセンブリ言語のツールボックスルーチン)。これらの資料の詳細については、「充電器プログラム構造のヒント」の項を参照してください。
全ての一般的な8ビットµCを使用することができますが、特定のµCを選択することは本稿の趣旨を越えています。これらのµCはアナログ-ディジタルコンバータ(ADC)、DACおよびSMBusシリアルインタフェース等の周辺機器を備えており、また外部ADCまたはDACを必要とするシンプルなµCも有用です。外部ADCまたはDACを必要とするシンプルなµCの方がフレキシブルで最終的に有用であることが往々にしてあります。
充電器アプリケーションには、それほど大きなROMおよびRAMが必要ありません。一般的に、単一バッテリタイプの充電器の場合はコードが0.5キロバイト以下、RAMが32バイトで実現できます(これは低級PICでもまかなえる範囲です)。工夫を凝らせば、複数バッテリタイプの充電器でもコードを約50%増やすだけで実現できます。
µCコードを作成する最もシンプルな方法は、骨格コードまたは類似コードから始めて、必要に合せて修正していくことです。この方法を使用すると、多くの空白ページ、コンパイラ/アセンブラ・シンタックスの問題を迅速に克服してプロトタイプを作動させることができます。残念ながら、ウェブ上および標準アプリケーションノートに記載されているバッテリ充電器ファームウェアは限られています。しかし、「ハードウェアおよびソフトウェア例」の項にある2つの設計例を出発点として利用できます。SMBus通信および数学ルーチン等のより困難なツールボックスルーチンの詳細およびこれらの設計方法を示すプログラム設計例については、「資料および参考文献」の項を参照してください。
充電器プログラム構造のヒント
バッテリ充電器のソフトウェアを書くのは難しくはなく、状態マシンで行うのが最良です。その時の状態を表す一連のフラグまたは状態変数を定義してください。コードは、挙動がこの状態変数に従う大きなケース文になるのが普通です。コードモジュールはその時の条件に従って状態変数を修正します。問題になり得るのは、許容されない、あるいはコーディングできない状態のみです。全てのケース文は、これらの許容されないまたは「不可能な」状態を拾って修正するデフォルトケースを持っている必要があります。こうした条件を検出する機構を常に含め、充電器を止める等の賢明な処置を取ってください。
コードはシンプルなものにしてください。できるかぎり複数の割込み、複雑なマルチタスクまたはキュー構造は避けてください。単一のタイマチック割込みは非常に効果的な時間測定法です。CPUが割込み付のタイマを備えている場合、それを使用してシステムタイマフラグを維持してください。この効果的な技法は、割込みを使わないという規則の例外です。(PIC16C5xの場合のように)タイマ割込みが使用できない時は、システムタイマ(RTC)を使用してそれをポーリングしてください。タイマがポーリングとポーリングの間でオーバーフローしないようにコードを工夫してください。
ハードウェア割込みは避けてください。そのかわりに、タイマチックで設定された一定の間隔でハードウェア入力をポーリングしてください。コードはリアルタイムで実行されますが、刺激に対して直ちに反応する必要はありません。バッテリの充電に1時間かかることを考えれば、バッテリが装着されているかを確かめるために100msを要してもかまいません。スタンドアロン充電器の標準的な動作では、充電完了のための計算は1分間に1回が標準的です。
これらのプログラムの構造としてシンプルで効果的なものとして、ペースド・ループが挙げられます。メインプログラムはループになっており、このループはタイマ割込みサービスルーチンまたはループ自身によって設定されるタイマフラグを監視し、必要な複数タスクを実行するサブルーチンを呼び出します。一部のルーチンは各パスで実行され、その他は「n番目」のループまたはチック毎に実行されます。基本的なチック時間は100msなどがあります。半秒周期の点滅光サブルーチンは5チック毎にLEDを補足するために呼び出され、温度リミットデテクタはループをパスする毎にチェックされます。この結果、非常に堅固な構造が得られます。
タイマ割込みを持たないコントローラの場合は、ルーチンそのものがそれ自身の実行時間を使用してペースド・ループを実現し、システムタイミングを維持します。この技法は次の項で8ピンPICコントローラ用のコード例により実現されています。図7は、この構造のシンプルなフローチャートです。詳細は、参考文献7で説明されています。
図7. メインペースド・ループのフローチャート
ハードウェアのフェイルセーフについての注意
いくつかの例を検討する前に、ウォッチドッグタイマおよびハードウェア・フェイルセーフシステムを備えたµP監視回路の使用をお勧めします。監視回路のリセット機能によりパワーアップ時にクリーンなシステムリセットが得られるだけでなく、ウォッチドッグタイマはCPUが機能停止したりファームウェアがループにはまったことを検出できます。マキシムはいくつかのシンプルな温度測定/制御製品も製造しています。MAX6501温度スイッチは、特に優れたバックアップシステムです。これは、固定温度スレッショルドを通過すると出力レベルが変化するSOT23素子です。
監視回路は、充電器アプリケーションで特に重要です。これは、充電器のパワーを連続的に印加したり除去したりすることはCPUを混乱させる場合があるためです。例えば、プロセッサが機能停止して急速充電を完了できなくなると、破壊的な結果をもたらす場合があります。また、システムにはソフトウェアの介入なしに急速充電を終了することのできる温度センサやその他のハードウェアオーバーライドが望まれます。マキシムのSOT23リセット監視回路の一部は、ウォッチドッグを備えています(MAX823を参照)。
ハードウェアおよびソフトウェア例
- 充電タイマおよびLED状態出力付のMAX846A Li+充電器(8ピンPICで制御)
- MAX1647搭載の2A Li+充電器(8051µC付)
- MAX1647およびMAX846A充電器用のソフトウェアの例
この例では、小型の外部µPがMAX846Aの機能を強化して、図8に示すLED (充電プロセスおよび状態を表示)等のユーザインタフェース機能を含む完全デスクトップ充電器システムを形成しています。MAX846Aは、この種の動作用に設計されています。本素子の補助リニアレギュレータおよびµPリセット回路(外部µCをサポート)により、標準的なデスクトップ充電器アプリケーションのコストが節減できます。
図8. LED状態インジケータ付のLi+デスク充電器
完全機能のMAX1647充電器および8051 µCにより、完全機能のLi+充電器(図9)が形成されます。図中のAtmel 80C2051コントローラ(小型パッケージの拡張不能な8051)は高級充電器を必要とするシステムで、通常使用できる標準的なコントローラです。アプリケーションのソースコードには、SMBus通信、一般状態マシン構造およびその他の有用なルーチンが含まれています。「Other Software」の箇所でLI1647.docおよびPIC846.docをご覧ください。充電器の状態は、µPに常駐している追加ソフトウェアまたはUARTから読み出すことができます。
図9. 完全機能Li+充電器
MAX1647およびMAX846Aの例(図9)のためのソフトウェアはマキシムのウェブサイトから入手できます。8ピンPIC12C508コントローラ用のMAX846AソフトウェアはMicrochip PICアセンブリ言語で書かれています。これはLEDユーザインタフェースおよびLi+電圧リミットに達した5分後に急速充電を完了するタイマを実現しています。このシンプルな例には、状態マシンや完全充電器の複雑な機能は含まれていませんが、これはそうした能力の多くが殆どスタンドアロンに近いMAX846Aの中に装備されているためです。 前述のように、この例は割込みのないペースド・ループ構造に依存しています。
MAX1647の例は、AtmelのATM80C2051 (8051の20ピンバージョン)用の8051アセンブリコードで書かれています。このコードには、一般的な状態マシン構造およびMAX1647の内部レジスタと通信するためのSMBusドライバルーチンが含まれています。これもペースド・ループ構造ですが、80C2051のタイマ割込みを使用して全てのタイミングのタイマチックの元を生成しています。詳細については、マキシムのウェブサイトのソースコード説明書を参照してください。
この記事に関して
製品カテゴリ
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}