(57)【特許請求の範囲】
【請求項１】
酸素濃度に比例した限界電流を出力する酸素濃度検出素子と該検出素子を加熱するヒータとを有する限界電流式酸素センサと、
前記酸素センサを活性化させるべく、前記ヒータの通電を制御するヒータ制御手段と、
前記酸素センサの素子抵抗を検出する素子抵抗検出手段と、
前記素子抵抗検出手段により検出された酸素センサの素子抵抗が所定範囲内にあるか否かに応じて、前記酸素センサの異常を診断するセンサ異常診断手段とを備え、
前記センサ異常診断手段は、前記素子抵抗が許容範囲よりも大きいか又は小さいかに応じて素子低温異常又は素子高温異常を判別することを特徴とする酸素濃度検出装置。
【請求項２】
前記センサ異常診断手段は、前記酸素センサが活性状態であるか又は当然活性化しているはずの状態であることを条件として、前記酸素センサの異常診断を実施する請求項１に記載の酸素濃度検出装置。
【請求項３】
ヒータ通電の開始からのヒータ供給電力の積算値を推定するヒータ供給電力推定手段を備え、
前記センサ異常診断手段は、前記ヒータ供給電力推定手段により推定されたヒータ供給電力の積算値が所定量以上であると判断された時に、前記酸素センサの異常診断を実施する請求項１に記載の酸素濃度検出装置。
【請求項４】
前記素子抵抗検出手段は、前記酸素センサの素子抵抗の出力特性のうち、温度変化に伴って素子抵抗が変化する抵抗支配域にて素子抵抗を検出する請求項１〜３のいずれか一項に記載の酸素濃度検出装置。
【請求項５】
前記酸素センサに負の電圧を印加したときに同酸素センサに流れる電流を検出するセンサ電流検出手段をさらに備え、
前記素子抵抗検出手段は、前記印加された負の電圧と前記センサ電流検出手段により検出された電流とから前記酸素センサの素子抵抗を検出する請求項１〜４のいずれか一項に記載の酸素濃度検出装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、酸素濃度に比例した限界電流を出力する酸素濃度検出素子と、前記検出素子を加熱するヒータとからなる限界電流式酸素センサを備えた酸素濃度検出装置に係り、特に前記限界電流式酸素センサの異常を診断することができる酸素濃度検出装置に関するものである。
【０００２】
【従来の技術】
近年の空燃比制御システムにおいては、排気ガス中の酸素濃度に比例した限界電流を出力する限界電流式酸素センサ（酸素濃度検出装置）が用いられており、マイクロコンピュータは前記センサによる検出結果を取り込んで空燃比を算出すると共に、当該空燃比に基づき空燃比フィードバック制御を実施する。これにより、内燃機関での最適な燃焼が実現され、排気ガス中の有害成分（ＣＯ，ＨＣ，ＮＯX 等）が低減される。
【０００３】
一方で、上記空燃比制御システムでは、酸素センサによる検出信号の信頼性が低下すると制御精度が著しく悪化するため、従来より同酸素センサの異常診断を精度良く実施するための技術が要望されている。そこで、従来技術として例えば特開平１−２３２１４３号公報の「内燃機関の空燃比制御装置」では、酸素センサ（酸素濃度検出素子）の温度を検出する温度センサを設け、該センサによる検出温度が所定温度まで上昇しない場合にヒータ異常を検出する旨が記載されている。また、特開平３−１８９３５０号公報の「酸素センサのヒータ制御装置」では、ヒータ抵抗値が目標抵抗値になるようヒータの供給電力を制御する装置において、ヒータの供給電力が所定範囲外になる場合に前記目標抵抗値の異常を検出する旨が記載されている。
【０００４】
【発明が解決しようとする課題】
ところが、上記従来技術では、以下に示す問題を生ずる。
上述した前者の技術（特開平１−２３２１４３号公報）では、センサ温度を検出するセンサが要件となっており、コスト高となる問題を含んでいる。また、後者の技術（特開平３−１８９３５０号公報）では、目標抵抗値が適正に設定されているか否かが判断されるだけで、この異常診断処理で異常と判定されるのはバッテリ交換時やセンサ交換時に限定される。従って、実際に酸素センサの信頼性を判断することはできなかった。
【０００５】
本発明は、上記従来の問題点に着目してなされたものであってその目的は、新規な構成からなる異常診断技術を提案し、それにより限界電流式酸素センサの異常を精度良く且つ容易に診断することができる酸素濃度検出装置を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、請求項１に記載の発明は、酸素濃度に比例した限界電流を出力する酸素濃度検出素子と該検出素子を加熱するヒータとを有する限界電流式酸素センサと、前記酸素センサを活性化させるべく、前記ヒータの通電を制御するヒータ制御手段と、前記酸素センサの素子抵抗を検出する素子抵抗検出手段と、前記素子抵抗検出手段により検出された酸素センサの素子抵抗が所定範囲内にあるか否かに応じて、前記酸素センサの異常を診断するセンサ異常診断手段とを備え、前記センサ異常診断手段は、前記素子抵抗が許容範囲よりも大きいか又は小さいかに応じて素子低温異常又は素子高温異常を判別することを要旨としている。
【０００８】
請求項２に記載の発明は、請求項１に記載の発明において、前記センサ異常診断手段は、前記酸素センサが活性状態であるか又は当然活性化しているはずの状態であることを条件として、前記酸素センサの異常診断を開始する。
【０００９】
請求項３に記載の発明では、請求項１に記載の発明において、ヒータ通電の開始からのヒータ供給電力の積算値を推定するヒータ供給電力推定手段を備え、前記センサ異常診断手段は、前記ヒータ供給電力推定手段により推定されたヒータ供給電力の積算値が所定量以上であると判断された時に、前記酸素センサの異常診断を実施する。
【００１０】
請求項４に記載の発明では、請求項１〜３のいずれか一項に記載の発明において、前記素子抵抗検出手段は、前記酸素センサの素子抵抗の出力特性のうち、温度変化に伴って素子抵抗が変化する抵抗支配域にて素子抵抗を検出する。
【００１１】
請求項５に記載の発明では、請求項１〜４のいずれか一項に記載の発明において、前記酸素センサに負の電圧を印加したときに同酸素センサに流れる電流を検出するセンサ電流検出手段をさらに備え、前記素子抵抗検出手段は、前記印加された負の電圧と前記センサ電流検出手段により検出された電流とから前記酸素センサの素子抵抗を検出する。
【００１４】
【作用】
請求項１に記載の発明によれば、ヒータ制御手段は、酸素センサ（限界電流式酸素センサ）を活性化させるべくヒータの通電を制御する。そして、ヒータ通電により酸素センサが正常に活性した状態では、酸素センサの素子抵抗（酸素濃度検出素子の抵抗）が活性化温度に相当する値に保持され、酸素センサは酸素濃度に比例した限界電流を出力する。また、素子抵抗検出手段は酸素センサの素子抵抗を検出し、センサ異常診断手段は、酸素センサの素子抵抗が所定範囲内にあるか否かに応じて酸素センサの異常を診断する。つまり、限界電流式酸素センサでは、その出力特性が抵抗支配域における傾き（図３において、電圧軸Ｖに平行な直線部分よりも小さい電圧域の傾き）、即ち素子抵抗の大きさにより特定される。この場合、酸素センサが異常であれば素子抵抗が過小又は過大になり、その異常が精度良く且つ容易に診断される。なお、酸素センサの異常としては、酸素濃度検出素子の劣化やヒータ故障（断線や短絡等）を含む。また、センサ異常診断手段は、前記素子抵抗が許容範囲よりも大きいか又は小さいかに応じて素子低温異常又は素子高温異常を判別する。つまり、酸素センサの素子抵抗が過大であることは素子温が低過ぎることを意味し、素子低温異常が判定される。また、酸素センサの素子抵抗が過小であることは素子温が高過ぎることを意味し、素子高温異常が判定される。
【００１６】
請求項２に記載の発明によれば、センサ異常診断手段は、酸素センサが活性状態であるか又は当然活性化しているはずの状態であることを条件として、酸素センサの異常診断を開始する。つまり、これらの条件が成立すれば、センサ活性状態であるか又は当然活性化しているはずの状態であるとみなし、異常診断が許可される。この条件設定により異常診断がより正確に実施できる。
【００１８】
請求項３に記載の発明によれば、ヒータ供給電力推定手段は、ヒータ通電の開始からのヒータ供給電力の積算値を推定する。センサ異常診断手段は、ヒータ供給電力推定手段により推定されたヒータ供給電力の積算値が所定量以上であると判断された時に、酸素センサの異常診断を実施する。つまり、酸素センサの異常をより正確に診断するには、同異常診断をセンサの活性状態（又は、当然活性化しているはずの状態）で実施するのがよい。そこで、本構成では、上記したヒータ供給電力の積算値からセンサ活性状態を推定し、当該活性状態で異常診断を許可している。
【００１９】
請求項４に記載の発明によれば、素子抵抗検出手段は、酸素センサの素子抵抗の出力特性のうち、温度変化に伴って素子抵抗が変化する抵抗支配域にて素子抵抗を検出する。つまり、限界電流式酸素センサでは、その出力特性が抵抗支配域における傾き（図３において、電圧軸Ｖに平行な直線部分よりも小さい電圧域の傾き）、即ち素子抵抗の大きさにより特定される。この場合、酸素センサが異常であれば素子抵抗が過小又は過大になり、その異常が精度良く且つ容易に診断される。
【００２１】
請求項５に記載の発明によれば、センサ電流検出手段は、酸素センサに負の電圧を印加したときに同酸素センサに流れる電流を検出する。素子抵抗検出手段は、印加された負の電圧とセンサ電流検出手段により検出された電流とから酸素センサの素子抵抗を検出する。つまり、酸素センサに負の電圧を印加すれば、酸素濃度に依存せず、温度のみに比例する負の温度電流を検出することができる。
【００２４】
【実施例】
（第１実施例）
以下、この発明の酸素濃度検出装置を自動車用内燃機関の空燃比制御装置にて具体化した第１実施例を図面に従って説明する。
【００２５】
図１は、本実施例における内燃機関の空燃比制御装置の概要を示す構成図である。図１において、４気筒火花点火式ガソリン内燃機関（以下、エンジンという）１には吸気管２と排気管３とが接続されている。吸気管２の最上流部にはエアクリーナ４が設けられ、吸気管２の途中にはサージタンク５が設けられている。サージタンク５の上流側には、図示しないアクセルペダルの踏み込み操作に連動するスロットルバルブ１７が配設されている。スロットルバルブ１７をバイパスするバイパス通路１８には、ＩＳＣ弁（アイドル回転数制御弁）１９が設けられている。
【００２６】
また、エンジン１における各気筒毎の吸気管（吸気ポート）２にはインジェクタ６が配設されている。燃料タンク７内の燃料は燃料ポンプ８により吸い上げられ、燃料フィルタ９を通してプレッシャレギュレータ１０に供給される。プレッシャレギュレータ１０は、一定圧力に調圧した燃料をインジェクタ６に供給すると共に、余剰燃料を燃料タンク７にリターンさせる。インジェクタ６はバッテリ１５からの電力供給により開弁して燃料を噴射する。そして、インジェクタ６による噴射燃料が吸入空気と混合されて混合気となり、吸気弁１１を介して各気筒の燃焼室１２に供給される。
【００２７】
エアクリーナ４の近傍には吸気温センサ２０が設けられ、同センサ２０により吸気温が検出される。また、サージタンク５には吸気管内圧力センサ２２が設けられ、同センサ２２により吸気管内圧力（吸気負圧）が検出される。エンジン１のシリンダブロックにはエンジン冷却水の温度を検出するための水温センサ２３が設けられている。
【００２８】
各気筒の燃焼室１２には点火プラグ１３が配設されている。イグナイタ１４ではバッテリ１５の電圧から高電圧が生成され、その高電圧がディストリビュータ１６により各点火プラグ１３に分配される。ディストリビュータ１６内には気筒判別センサ２４とクランク角センサ２５が配設されている。クランク角センサ２５は、エンジン１のクランク軸の回転に伴う所定のクランク角毎（例えば、３０°ＣＡ毎）にクランク角信号を発生する。また、気筒判別センサ２４は、エンジン１のクランク軸の回転に伴う特定気筒の特定位置（例えば、第１気筒の圧縮ＴＤＣ）で気筒判別信号を発生する。
【００２９】
また、エンジン１の排気管３には限界電流式の酸素センサ２６が設けられており、この酸素センサ２６は排気ガス中の酸素濃度に比例してリニアな検出信号を出力する。なお、酸素センサ２６下流には図示しない触媒コンバータが配設されており、同コンバータにて排気ガスが浄化されるようになっている。
【００３０】
上記各センサの検出信号は電子制御装置（以下、ＥＣＵという）４０に入力される。ＥＣＵ４０は、バッテリ１５を電源として動作し、イグニションスイッチ２８のオン信号によりエンジン１を始動させると共に、エンジン運転中は酸素センサ２６の出力信号に基づいて空燃比補正係数を増減補正することで空燃比を目標空燃比（例えば、理論空燃比）近傍にフィードバック制御する。また、ＥＣＵ４０は後述するセンサ異常診断処理を実行して酸素センサ２６の異常の有無を診断し、異常時には警告灯２９を点灯して運転者に異常発生の旨を警告する。
【００３１】
図２は、酸素センサ２６の概略断面、及び酸素センサ２６に接続されたＥＣＵ４０の電気的構成を示す図である。図２において、酸素センサ２６は排気管３の内部に向けて突設されており、同センサ２６はカバー３１、センサ本体３２及びヒータ３３に大別される。カバー３１は断面コ字状をなし、その周壁にはカバー内外を連通する多数の小孔３１ａが形成されている。センサ本体３２は空燃比リーン領域における酸素濃度、若しくは空燃比リッチ領域における一酸化炭素（ＣＯ）濃度に対応する限界電流を発生する。
【００３２】
センサ本体３２の構成について詳述する。センサ本体３２において、断面カップ状に形成された固体電解質層３４の外表面には、排気ガス側電極層３６が固着され、内表面には大気側電極層３７が固着されている。また、排気ガス側電極層３６の外側には、プラズマ溶射法等により拡散抵抗層３５が形成されている。固体電解質層３４は、ＺｒＯ2 、ＨｆＯ2 、ＴｈＯ2 、Ｂｉ2 Ｏ3 等にＣａＯ、ＭｇＯ、Ｙ2 Ｏ3 、Ｙｂ2 Ｏ3 等を安定剤として固溶させた酸素イオン伝導性酸化物焼結体からなり、拡散抵抗層３５は、アルミナ、マグネシャ、ケイ石質、スピネル、ムライト等の耐熱性無機物質からなる。排気ガス側電極層３６及び大気側電極層３７は共に、白金等の触媒活性の高い貴金属からなりその表面には多孔質の化学メッキ等が施されている。なお、排気ガス側電極層３６の面積及び厚さは、１０〜１００ｍｍ2 及び０．５〜２．０μｍ程度となっており、一方、大気側電極層３７の面積及び厚さは、１０ｍｍ2 以上及び０．５〜２．０μｍ程度となっている。固体電解質層３４は酸素濃度検出素子に相当する。
【００３３】
ヒータ３３は大気側電極層３７内に収容されており、その発熱エネルギーによりセンサ本体３２（大気側電極層３７、固体電極質層３４、排気ガス側電極層３６及び拡散抵抗層３５）を加熱する。ヒータ３３は、センサ本体３２を活性化するに十分な発熱容量を有している。
【００３４】
上記構成の酸素センサ２６において、センサ本体３２は理論空燃比点にて濃淡起電力を発生し、理論空燃比点よりリーン領域の酸素濃度に応じた限界電流を発生する。この場合、酸素濃度に対応する限界電流は、排気ガス側電極層３６の面積、拡散抵抗層３５の厚さ、気孔率及び平均孔径により決定される。また、センサ本体３２は酸素濃度を直線的特性にて検出し得るものであるが、このセンサ本体３２を活性化するのに約６５０℃以上の高温が必要とされると共に、同センサ本体３２の活性温度範囲が狭いため、エンジン１の排気ガスのみによる加熱では活性領域を制御できない。そのため、本実施例では、後述するヒータ３３の加熱制御によりセンサ本体３２の温度制御が実施される。なお、理論空燃比よりもリッチ側の領域では、未燃ガスである一酸化炭素（ＣＯ）の濃度が空燃比に対してほぼリニアに変化し、センサ本体３２はＣＯ濃度に応じた限界電流を発生する。
【００３５】
センサ本体３２の電圧−電流特性について図３を用いて説明する。図３に示すように電流−電圧特性は、酸素センサ２６の検出酸素濃度（空燃比）に比例するセンサ本体３２の固体電解質層３４への流入電流と、同固体電解質層３４への印加電圧との関係が直線的であることを示す。そして、センサ本体３２が温度Ｔ＝Ｔ１にて活性状態にあるとき、図３の実線で示すように特性線Ｌ１でもって安定した状態を示す。かかる場合、特性線Ｌ１の電圧軸Ｖに平行な直線部分がセンサ本体３２の限界電流を特定する。この限界電流の増減は空燃比の増減（即ち、リーン・リッチ）に対応しており、空燃比がリーン側になるほど限界電流は増大し、空燃比がリッチ側になるほど限界電流は減少する。
【００３６】
また、この電圧−電流特性において電圧軸Ｖに平行な直線部分よりも小さい電圧域は抵抗支配域となっており、その抵抗支配域における特性線Ｌ１の傾きは、センサ本体３２における固体電解質層３４の内部抵抗（以下、これを素子抵抗という）により特定される。この素子抵抗は温度変化に伴い変化するため、センサ本体３２の温度が低下すると素子抵抗の増大により上記傾きが小さくなる。つまり、センサ本体３２の温度ＴがＴ１よりも低いＴ２にあるとき、電流−電圧特性は図３の破線で示すように特性線Ｌ２でもって特定される。かかる場合、特性線Ｌ２の電圧軸Ｖに平行な直線部分がＴ＝Ｔ２におけるセンサ本体３２の限界電流を特定するもので、この限界電流は特性線Ｌ１による限界電流とほぼ一致している。
【００３７】
そして、特性線Ｌ１において、センサ本体３２の固体電解質層３４に正の印加電圧Ｖpos を印加すれば、センサ本体３２に流れる電流が限界電流Ｉpos となる（図３の点Ｐａ参照）。また、センサ本体３２の固体電解質層３４に負の印加電圧Ｖneg を印加すれば、センサ本体３２に流れる電流が酸素濃度に依存せず、温度のみに比例する負の温度電流Ｉneg となる（図３の点Ｐｂ参照）。
【００３８】
また、図２において、センサ本体３２の排気ガス側電極層３６には、バイアス制御回路４１が接続され、同バイアス制御回路４１にはセンサ電流検出回路４５を介してセンサ本体３２の大気側電極層３７が接続されている。バイアス制御回路４１は正バイアス用直流電源４２、負バイアス用直流電源４３及び切り換えスイッチ回路４４によって構成されている。正バイアス用直流電源４２の負側電極及び負バイアス用直流電源４３の正側電極は共に排気ガス側電極層３６に接続されている。
【００３９】
切り換えスイッチ回路４４は、第１切り換え状態にて正バイアス用直流電源４２の正側電極のみをセンサ電流検出回路４５に接続すると共に、第２切り換え状態にて負バイアス用直流電源４３の負側電極のみをセンサ電流検出回路４５に接続する。つまり、切り換えスイッチ回路４４が第１切り換え状態にある場合、正バイアス用直流電源４２がセンサ本体３２の固体電解質層３４を正バイアスし、同固体電解質層３４には正方向の電流が流れる。一方、切り換えスイッチ回路４４が第２切り換え状態にある場合、負バイアス用直流電源４３が固体電解質層３４を負バイアスし、同固体電解質層３４には負方向の電流が流れる。かかる場合、各直流電源４２，４３の端子電圧は上述の印加電圧Ｖpos ，Ｖneg にそれぞれ相当する。
【００４０】
センサ電流検出回路４５は、センサ本体３２の大気側電極層３７から切り換えスイッチ回路４４へ流れる電流又はその逆方向へ流れる電流、つまり、固体電解質層３４を流れる電流を検出する。また、ヒータ制御回路４６は、酸素センサ２６の素子温やヒータ温度に応じてバッテリ電源ＶＢからヒータ３３に供給される電力をデューティ制御し、ヒータ３３の加熱制御を行う。ヒータ３３に流れる電流（以下、ヒータ電流Ｉｈという）は電流検出抵抗５０により検出される。
【００４１】
Ａ／Ｄ変換器４７は、センサ電流検出回路４５による検出電流（図３のＩpos ，Ｉneg ）、ヒータ電流Ｉｈ、及びヒータ３３の印加電圧（以下、ヒータ電圧Ｖｈという）をデジタル信号に変換してマイクロコンピュータ４８に出力する。マイクロコンピュータ４８は、各種演算処理を実行するＣＰＵ４８ａやＲＯＭ，ＲＡＭからなるメモリ４８ｂ等により構成され、所定のコンピュータプログラムに従いバイアス制御回路４１、ヒータ制御回路４６及び燃料噴射制御装置（以下、ＥＦＩという）４９を制御する。ＥＦＩ４９は、エンジン情報としての前記各種センサ信号を入力し、吸気温Ｔａｍ、吸気負圧Ｐｍ、冷却水温Ｔｈｗ、エンジン回転数ＮＥ、車速Ｖｓ等を検知する。そして、これらのエンジン情報に基づきインジェクタ６による燃料噴射を制御する。なお、本実施例では、マイクロコンピュータ４８内のＣＰＵ４８ａによりヒータ制御手段、素子抵抗検出手段、センサ異常診断手段及びヒータ供給電力推定手段が構成されている。
【００４２】
次いで、本実施例の作用についてマイクロコンピュータ４８内のＣＰＵ４８ａにより実行される各種制御プログラムに沿って説明する。以下、ヒータ通電制御、空燃比検出処理、センサ異常診断処理の順に説明する。
【００４３】
図４のフローチャートは、イグニションスイッチ２８のオン操作に従い起動され、ＣＰＵ４８ａにより所定時間周期で実行されるヒータ通電制御ルーチンを示す。図４において、ＣＰＵ４８ａは、ステップ１０１でヒータ３３の制御状態を示すヒータ制御フラグＦ１，Ｆ２を判定する。即ち本第１実施例では、イグニションスイッチ２８のオン操作に従い、デューティ１００％制御→第１のヒータ通電制御→第２のヒータ通電制御の順にヒータ制御が移行するようになっており、ヒータ制御フラグＦ１＝１は第１のヒータ通電制御が実行中であることを表し、ヒータ制御フラグＦ２＝１は第２のヒータ通電制御が実行中であることを表す。
【００４４】
この場合、ヒータ通電制御の開始当初であれば、ヒータ制御フラグＦ１，Ｆ２が共に「０」（初期値）にクリアされており、ＣＰＵ４８ａはステップ１０２に進んでデューティ１００％制御を実施する。つまり、図２のヒータ制御回路４６を１００％デューティで制御してヒータ３３への供給電力を最大値に固定し、ヒータ３３を急速加熱する。また、ＣＰＵ４８ａは、ステップ１０３でヒータ電圧Ｖｈ及びヒータ電流Ｉｈにより算出されたヒータ抵抗ＲＨを読み込み（ＲＨ＝Ｖｈ／Ｉｈ）、続くステップ１０４でヒータ抵抗ＲＨが２Ω以上であるか否か（ＲＨ≧２Ωか否か）を判別する。ＲＨ＜２Ωであれば、ＣＰＵ４８ａはそのまま本ルーチンを終了する。この場合、デューティ１００％制御が継続される。
【００４５】
また、前記ステップ１０４でヒータ抵抗ＲＨ≧２Ωになると、ＣＰＵ４８ａはステップ１０５に進んでヒータ制御フラグＦ１に「１」をセットし、続くステップ１０６で第１のヒータ通電制御を実施する。ここで、第１のヒータ通電制御では、エンジン負荷（例えば、吸気負圧Ｐｍ）とエンジン回転数ＮＥとからなる第１のマップにてヒータ３３の制御デューティが求められる。ここで、前記マップは酸素センサ２６の素子温が所定の活性化温度になるよう設定されるものであって、例えば低負荷又は低回転域では排気ガスの熱量が少ないために大きなデューティが設定されるようになっている。フラグＦ１のセット後は、ＣＰＵ４８ａはステップ１０１から直接ステップ１０６へ進み、第１のヒータ通電制御を実施する。
【００４６】
そして、ステップ１０６からステップ１０７に進むと、ＣＰＵ４８ａは、酸素センサ２６の素子抵抗（固体電解質層３４の内部抵抗）Ｚｄｃを読み込む。素子抵抗Ｚｄｃは素子印加電圧Ｖneg （負の印加電圧）及びセンサ電流検出回路４５にて検出された負の電流Ｉneg から算出できる（Ｚｄｃ＝Ｖneg ／Ｉneg ）。また、ＣＰＵ４８ａは、ステップ１０８で素子抵抗Ｚｄｃが９０Ω以下になったか否か（Ｚｄｃ≦９０Ωか否か）を判別し、Ｚｄｃ＞９０Ωであればそのまま本ルーチンを終了する。この場合、第１のヒータ通電制御が継続される。なお、図５は素子温と素子抵抗Ｚｄｃとの関係を示す。
【００４７】
また、前記ステップ１０８でＺｄｃ≦９０Ωになると、ＣＰＵ４８ａはステップ１０９に進んでヒータ制御フラグＦ１を「０」に、ヒータ制御フラグＦ２を「１」に操作し、続くステップ１１０で第２のヒータ通電制御を実施する。ここで、第２のヒータ通電制御では、前記第１のマップとは異なる第２のマップを用い、エンジン負荷（例えば、吸気負圧Ｐｍ）とエンジン回転数ＮＥとに応じてヒータ３３の制御デューティが算出される（但し、特性はほぼ同じ）。そして、フラグＦ２＝１のセット後は、ＣＰＵ４８ａはステップ１０１から直接ステップ１１０へ進み、第２のヒータ通電制御を実施する。このように本実施例では、制御開始当初の１００％デューティと、その後の第１，第２のヒータ通電制御とによりヒータ３３の通電がオープン制御される。
【００４８】
一方、図６のフローチャートは、イグニションスイッチ２８のオン操作に従い起動され、ＣＰＵ４８ａにより例えば８ｍｓｅｃ毎に実行される空燃比検出ルーチンを示す。
【００４９】
図６において、ＣＰＵ４８ａは、先ずステップ２０１〜２０４でセンサ活性判定処理を実行する。即ちＣＰＵ４８ａは、ステップ２０１で図７の素子抵抗検出域における所定電圧Ｖｍを印加し（例えば、Ｖｍ＝−１ボルト）、続くステップ２０２で図２のセンサ電流検出回路４５にて検出された電流Ｉｍを読み込む（図７参照）。また、ＣＰＵ４８ａは、ステップ２０３で上記印加電圧Ｖｍと検出電流Ｉｍとから素子抵抗Ｚｄｃを算出する（Ｚｄｃ＝Ｖｍ／Ｉｍ）。
【００５０】
さらに、ＣＰＵ４８ａは、ステップ２０４で上記素子抵抗Ｚｄｃが所定の活性判定域（ＫＲＥＬ〜ＫＲＥＨ）にあるか否かにより酸素センサ２６の活性判定を行う（例えば、ＫＲＥＬ＝１０Ω，ＫＲＥＨ＝９０Ω）。つまり、ＫＲＥＬ≦Ｚｄｃ≦ＫＲＥＨでありステップ２０４が肯定判別されれば、ＣＰＵ４８ａはセンサ活性化が完了したとみなし、続くステップ２０５に進む。一方、ステップ２０４が否定判別されれば、ＣＰＵ４８ａは活性化判定がなされるまでステップ２０１〜２０４を繰り返し実行する。
【００５１】
ステップ２０５に進むと、ＣＰＵ４８ａは図７のＡ／Ｆ検出域における印加電圧Ｖｐの初期値として「０．４ボルト」を酸素センサ２６に印加する。さらに、ＣＰＵ４８ａは、ステップ２０６で図２のセンサ電流検出回路４５にて検出された限界電流Ｉｐ（ｎ）を読み込み、続くステップ２０７で限界電流Ｉｐ（ｎ）を空燃比（Ａ／Ｆ）に換算する。また、ＣＰＵ４８ａは、ステップ２０８で次の空燃比検出のための印加電圧Ｖｐ（ｎ＋１）を算出すると共に｛Ｖｐ（ｎ＋１）＝ｆ（Ｉｐ）｝、その印加電圧Ｖｐ（ｎ＋１）を酸素センサ２６に印加する。つまり図７において、（ｎ）時の空燃比（Ａ／Ｆ）が「１６」、（ｎ＋１）時の空燃比（Ａ／Ｆ）が「１５」の場合、Ｖｐ（ｎ）の印加によりＩｐ（ｎ）が検出され、Ｖｐ（ｎ＋１）の印加によりＩｐ（ｎ＋１）が検出される。
【００５２】
その後、ＣＰＵ４８ａは、ステップ２０９で空燃比検出を開始してから所定時間が経過したか否かを判別する。この場合、所定時間が経過していなければ、ＣＰＵ４８ａは前述のステップ２０６〜２０９を繰り返し実行し、所定時間が経過しておればステップ２１０に進む。ＣＰＵ４８ａは、ステップ２１０〜２１３で上記ステップ２０１〜２０４と同様のセンサ活性判定処理を行う。
【００５３】
つまり、ＣＰＵ４８ａは、ステップ２１０〜２１２で算出した素子抵抗Ｚｄｃが所定の活性判定域（ＫＲＥＬ〜ＫＲＥＨ）にあるか否かを判別する。そして、ＫＲＥＬ≦Ｚｄｃ＜ＫＲＥＨであれば、ＣＰＵ４８ａはセンサ活性化しているとみなして前記ステップ２０６に進み、上述の空燃比検出処理を実施する。また、ステップ２１３が否定判別されれば、ＣＰＵ４８ａはステップ２１０〜２１３を繰り返し実行する。
【００５４】
次に、図８に従いセンサ異常診断ルーチンを説明する。図８のフローチャートは、ＣＰＵ４８ａにより所定時間毎（例えば、３２ｍｓｅｃ毎）に実行される。図８において、ＣＰＵ４８ａは、先ずステップ３０１〜３０７でセンサ異常診断の前提条件を判別する。詳しくは、ステップ３０１では吸気温Ｔａｍが所定の判定値ＫＴＡ（例えば、５℃）以上であるか否かを判別し、ステップ３０２では冷却水温Ｔｈｗが所定の判定値ＫＴＷ（例えば、５℃）以上であるか否かを判別する。また、ステップ３０３ではエンジン回転数ＮＥが所定の判定値ＫＮＥ（例えば、５００ｒｐｍ）以上であるか否かを判別し、ステップ３０４では車速Ｖｓが所定の判定値ＫＳＰＤ（例えば、１００ｋｍ／ｈ）未満であるか否かを判別する。さらに、ステップ３０５ではエンジン始動後の経過時間ＣＡＳＴが所定の判定値ＫＣＡＳＴ（例えば、２０秒）以上であるか否かを判別し、ステップ３０６ではバッテリ電圧ＶＢが所定の判定値ＫＶＢ（例えば、１３Ｖ）以上であるか否かを判別する。ステップ３０７では燃料カット実行中を表す燃料カットフラグＸＦＣが「０」にクリアされているか否か、即ち燃料カットが実施されていないか否かを判別する。
【００５５】
なお本実施例では、上記前提条件のうち、エンジン始動後の経過時間ＣＡＳＴとバッテリ電圧ＶＢとによりヒータ供給電力の積算値が推定され、これらの値が所定値以上の時に、ヒータ供給電力の積算値が所定値以上に達したものと判断する。つまり、これらの条件が成立すれば、センサ活性状態であるか又は当然活性化しているはずの状態であるとみなし、異常診断が許可される。この条件設定により異常診断がより正確に実施できる。
【００５６】
上記ステップ３０１〜３０７のいずれかが否定判別されれば、ＣＰＵ４８ａはそのまま本ルーチンを終了し、ステップ３０１〜３０７が全て肯定判別されれば、続くステップ３０８に進んで酸素センサ２６の素子抵抗Ｚｄｃに基づきセンサ異常診断を実施する。ここで、酸素センサ２６の素子抵抗Ｚｄｃは、前述した図６のステップ２０１〜２０３の如く算出される。
【００５７】
ステップ３０８に進むと、ＣＰＵ４８ａは、素子抵抗Ｚｄｃが第１の抵抗判定値ＫＲＥＬ（本実施例では、１０Ω）よりも小さいか否かを判別し、Ｚｄｃ＜ＫＲＥＬであればステップ３０９に進む。素子抵抗Ｚｄｃが第１の抵抗判定値ＫＲＥＬよりも小さいことは、素子温が上昇し過ぎていることを意味し、ＣＰＵ４８ａは、ステップ３０９で酸素センサ２６が素子高温異常であると判断する。なお、この素子高温異常には以下のモードをも含む。即ち、酸素センサ２６のヒータ抵抗が小さい方にばらつき、電流が流れ過ぎるモードや、ヒータ３３のグランド側のワイヤハーネスが常時グランドショートして電流制御ができず電流が流れ過ぎるモードをも含む。
【００５８】
また、Ｚｄｃ≧ＫＲＥＬの場合、ＣＰＵ４８ａは、ステップ３１０で素子抵抗Ｚｄｃが第２の抵抗判定値ＫＲＥＨ（本実施例では、９０Ω）以上であるか否かを判別し、Ｚｄｃ≧ＫＲＥＨであればステップ３１１に進む。素子抵抗Ｚｄｃが第２の抵抗判定値ＫＲＥＨ以上であることは、素子温が上昇せずに低いままであることを意味し、ＣＰＵ４８ａは、ステップ３１１で酸素センサ２６が素子低温異常であると判断する。なお、この素子低温異常には以下のモードをも含む。即ち、酸素センサ２６のヒータ抵抗が大きい方にばらつき、電流が少なくなるモードや、ヒータ３３が劣化して抵抗が大きくなり、電流が小さくなるモードや、ヒータ３３のワイヤハーネスの断線のために電流が流れなくなるモードをも含む。
【００５９】
そして、上記の如く酸素センサ２６の素子異常が判断された場合には、図９に示すフェイルセーフルーチンが実行される（例えば３２ｍｓｅｃ周期）。図９において、ＣＰＵ４８ａは、先ずステップ４０１で素子異常であるか否かを判別する。ここで、上記図８により素子異常（高温異常或いは低温異常）が判定されていれば、ＣＰＵ４８ａはステップ４０２に進んで空燃比フィードバックを停止する。また、ＣＰＵ４８ａは、ステップ４０３でヒータ通電を停止すると共に続くステップ４０４で素子異常を表す警告灯２９を点灯させる。このとき、高温異常と低温異常とを分けて表示するようにしてもよい。
【００６０】
以上の第１実施例では、酸素センサ２６の素子抵抗が所定範囲内にあるか否かに応じて同センサ２６の異常を診断するようにした（図８のステップ３０８〜３１１）。つまり、限界電流式の酸素センサ２６では、その出力特性が抵抗支配域における傾き（図３において、電圧軸Ｖに平行な直線部分よりも小さい電圧域の傾き）、即ち素子抵抗の大きさにより特定される。この場合、酸素センサ２６が異常であれば素子抵抗が過小又は過大になり、その異常を精度良く且つ容易に診断することができる。
【００６１】
また、本実施例では、素子抵抗が許容範囲よりも大きいか又は小さいかに応じて、酸素センサ２６の素子低温異常又は素子高温異常を判別するよにした。つまり、酸素センサ２６の素子抵抗が過大であることは素子温が低過ぎることを意味し、素子低温異常が判定される。また、酸素センサ２６の素子抵抗が過小であることは素子温が高過ぎることを意味し、素子高温異常が判定される。
【００６２】
さらに、本実施例では、従来技術のように温度センサを要件としないため、コスト高を招くことはない。また、従来技術では主にバッテリやセンサ交換時に異常の旨が診断される構成であったが、本実施例では車両の通常走行時において常に異常の旨を診断することができ、センサ出力の信頼性を向上させると共に、それにより高精度な空燃比制御システムを実現することができる。
【００６３】
なお、ヒータ通電制御方法は本実施例の方法に限定されるものではない。即ち上記実施例では、１００％デューティ制御、第１及び第２のヒータ通電制御を順次実施したが、例えば第１又は第２のヒータ通電制御のみを常に実施する構成にしたり、エンジン始動後の所定時間のみ１００％デューティ制御を行い、その後は常に第１又は第２のヒータ通電制御を実施する構成にしたりすることもできる。
【００６４】
（第２実施例）次に、第２実施例について、上記第１実施例との相違点を中心に説明する。なお、本実施例では、マイクロコンピュータ４８内のＣＰＵ４８ａによりヒータ制御手段、燃料増減手段及びセンサ異常診断手段が構成されている。図１０は第２実施例におけるセンサ異常診断ルーチンを示す。
【００６５】
図１０において、ＣＰＵ４８ａは、ステップ５０１でセンサ異常診断の前提条件が成立しているか否かを判別する。この前提条件は図８のステップ３０１〜３０７に相当する。また、ＣＰＵ４８ａは、ステップ５０２で空燃比フィードバック中であるか否かを判別する。この場合、ステップ５０１，５０２のいずれかが否定判別されれば、ＣＰＵ４８ａは本ルーチンを終了し、ステップ５０１，５０２が共に肯定判別されれば、ステップ５０３に進む。
【００６６】
ステップ５０３に進むと、ＣＰＵ４８ａは、その時点で図２のセンサ電流検出回路４５により検出された限界電流Ｉｐを「Ｉｐｏ」として記憶する。また、ＣＰＵ４８ａは、続くステップ５０４で現在の運転条件（吸気負圧Ｐｍ，エンジン回転数ＮＥ）を「Ｐｍｏ」，「ＮＥｏ」として記憶する。
【００６７】
その後、ＣＰＵ４８ａは、ステップ５０５でインジェクタ６による燃料噴射量をα％（例えば、１０％）増量し（減量でも可）、続くステップ５０６で燃料増量後に所定時間が経過したか否かを判別する。ここで、燃料増量は空燃比を強制的にリッチ側に移行させることを意味する。そして、燃料増量後に所定時間が経過すると、ＣＰＵ４８ａはステップ５０７に進む。ＣＰＵ４８ａは、ステップ５０７でその時点での吸気負圧Ｐｍ，エンジン回転数ＮＥが燃料増量前の数値「Ｐｍｏ」，「ＮＥｏ」（ステップ５０４での記憶値）にほぼ一致するか否かを判別する。この場合、運転条件が変化していれば、ＣＰＵ４８ａは以降の異常診断を実施せずにそのまま本ルーチンを終了する。また、運転条件が変化していなければ、ＣＰＵ４８ａは以降の異常診断を実施すべくステップ５０８に進む。
【００６８】
ステップ５０８に進むと、ＣＰＵ４８ａはその時点でセンサ電流検出回路４５により検出された限界電流Ｉｐを読み込み、続くステップ５０９で燃料増量前後の電流値変化から電流変化量ΔＩｐを算出する（ΔＩｐ＝Ｉｐ−Ｉｐｏ）。その後、ＣＰＵ４８ａは、ステップ５１０で電流変化量ΔＩｐ（絶対値）が第１の電流判定値ＫＤＩＬを越えるか否か（ΔＩｐ＞ＫＤＩＬか否か）を判別すると共に、ステップ５１１で電流変化値ΔＩｐが第２の電流判定値ＫＤＩＨ以下であるか否か（ΔＩｐ≦ＫＤＩＨか否か）を判別する（但し、ＫＤＩＬ＜ＫＤＩＨ）。ここで、「ＫＤＩＬ〜ＫＤＩＨ」で規定される変化許容範囲は、燃料増量による実際の空燃比の変化相当量にて設定されている。
【００６９】
この場合、電流変化値ΔＩｐが「ＫＤＩＬ〜ＫＤＩＨ」の範囲内にあれば、ＣＰＵ４８ａは、ステップ５１０，５１１を共に肯定判別する。また、ΔＩｐ≦ＫＤＩＬであれば、ＣＰＵ４８ａはステップ５１０を否定判別し、ステップ５１２で素子低温異常である旨を判定する。ΔＩｐ＞ＫＤＩＨであれば、ＣＰＵ４８ａはステップ５１１を否定判別し、ステップ５１３で素子高温異常である旨を判定する。
【００７０】
図１１（ａ）〜（ｃ）は、正常時、素子低温異常時、素子高温異常時における酸素センサ２６の出力信号を示す図である。図中、電流変化量ΔＩp1，ΔＩp2，ΔＩp3は、酸素センサ２６への印加電圧が「Ｖｐ１」から「Ｖｐ２」に変化した時の限界電流の差を示す。つまり、図１１（ｂ）に示す素子低温異常時には素子抵抗が大きく、抵抗支配域における特性線の傾きが小さい。従って、「ΔＩp2」は正常時における「ΔＩp1」よりも小さくなる（ΔＩp2＜ΔＩp1）。このような場合、前記図１０のステップ５１０が否定判別され、素子低温異常である旨が判定される。また、図１１（ｃ）に示す素子高温異常時には素子抵抗が小さく、抵抗支配域における特性線の傾きが大きい。従って、「ΔＩp3」は正常時における「ΔＩp1」よりも大きくなる（ΔＩp3＞ΔＩp1）。このような場合、前記図１０のステップ５１１が否定判別され、素子高温異常である旨が判定される。
【００７１】
以上第２実施例によれば、エンジン１への燃料供給量を増量させ（図１０のステップ５０５）、その燃料増量時において、酸素センサ２６の出力値（限界電流）が所定範囲内で変化したか否かに応じて同センサ２６の異常を診断するようにした（図１０のステップ５１０〜５１３）。これにより、燃料増量による空燃比のリッチ化（酸素濃度の低下）がセンサ出力に正常に反映されたか否かが判定され、センサ異常を精度良く且つ容易に診断することができる。また、本実施例では、異常診断時の異常判定値に範囲を設けたため、素子低温異常と素子高温異常とを判別することができる。
【００７２】
（第３実施例）次に、第３実施例を説明する。上記第１及び第２実施例では、ヒータ３３をオープン制御していたが、本第３実施例では、酸素センサ２６のヒータ３３を素子温フィードバック制御する。なお、本実施例では、マイクロコンピュータ４８のＣＰＵ４８ａにより素子抵抗検出手段、ヒータ供給電力制御手段及びセンサ異常診断手段が構成されている。
【００７３】
図１２は本実施例におけるヒータ制御のタイムチャートであり、同図には、エンジン始動に伴うヒータ３３への通電開始後、酸素センサ２６が十分に活性するまでの動作を示している。本実施例では、ヒータ制御がその目的及び制御方法の違いから図１２の▲１▼〜▲４▼の制御に分けられており、それぞれを順に説明する。なお、▲１▼〜▲３▼の制御は、酸素センサ２６の活性前のヒータ制御を示し、▲４▼の制御は酸素センサ２６の活性後のヒータ制御を示す。
【００７４】
先ずエンジン始動直後における▲１▼の制御では、１００％デューティのヒータ電圧がヒータ３３に印加される（以下、これを全導通制御と呼ぶ）。つまり、ヒータ３３及びセンサ素子（センサ本体３２）の冷間時には短時間でヒータ３３を加熱すべく、最大電力がヒータ３３に供給される。
【００７５】
▲２▼、▲３▼の制御では、ヒータ温を所定の目標ヒータ温（例えば、ヒータ上限温度である１２００℃）に保持するよう、ヒータ３３への供給電力が制御される（以下、これを電力制御と呼ぶ）。つまり、素子温が活性化温度（７００℃）にあればヒータ温は供給電力から一義的に決まるため、ヒータ３３を一定の温度に保持するには所定電力を供給し続ければよい。しかしながら素子温が低い時には、ヒータ温を一定に保持するために必要な供給電力は素子温に応じて変動する。一般に、素子温が低いほど大きな供給電力が必要になる。そこで、上記電力制御では、素子抵抗（素子温と素子抵抗とは図５に示す関係にある）に応じて供給電力が制御される。
【００７６】
但し、電力制御の開始当初は、素子抵抗が非常に大きく検出可能な最大値（例えば、６００Ω）を越える。そのため、素子抵抗の検出不可域ではヒータ３３への供給電力は一定電力（例えば、６０Ｗ）に保持される（▲２▼の制御）。そして、素子温が上昇し素子抵抗が６００Ω以下になると、以降、素子抵抗に応じた電力がヒータ３３に供給される（▲３▼の制御）。
【００７７】
また、▲４▼の制御では、素子の活性状態を維持すべく、素子抵抗３０Ω（素子温７００℃相当）になるように、ヒータ３３への供給電力がフィードバック制御される（以下、素子温フィードバック制御と呼ぶ）。
【００７８】
図１３に従いヒータ制御ルーチンを説明する。
図１３において、ＣＰＵ４８ａは、ステップ６０１で素子温フィードバック制御の実行条件が成立したか否かを判別する。この実行条件は、酸素センサ２６の素子抵抗が３０Ω以下であれば成立する。また、ＣＰＵ４８ａは、ステップ６０２で電力制御実行条件が成立したか否かを判別する。この電力制御実行条件としては、酸素センサ２６（センサ本体３２及びヒータ３３）が冷間状態にあるか否かに応じて２通りの条件が設定されており、酸素センサ２６が冷間状態であれば全導通制御（図１２の▲１▼の制御）を開始してから所定時間が経過した時に条件が成立し、冷間状態でなければヒータ抵抗値が目標ヒータ抵抗値以上になった時に成立する。このように酸素センサ２６の冷間状態に応じて全導通制御を実行することによりエンジン再始動時においてヒータ温の過上昇が防止される。
【００７９】
従って、ヒータ制御の開始当初においてステップ６０１，６０２が共に否定判別されれば、ＣＰＵ４８ａはステップ６０３に進み、ヒータ３３の全導通制御を実行する（▲１▼の制御）。即ち１００％デューティのヒータ電圧をヒータ３３に印加する。
【００８０】
また、ステップ６０２の電力制御実行条件が成立すると、ＣＰＵ４８ａはステップ６０４に進み、電力制御を実行する（▲２▼，▲３▼の制御）。この場合、前述したように素子抵抗が検出不可域（素子抵抗＞６００Ω）にあれば供給電力が固定値にて制御され（▲２▼の制御）、素子抵抗が検出可能になるとヒータ温を目標ヒータ温に保持するよう、素子抵抗に応じてヒータ３３への供給電力が制御される（▲３▼の制御）。
【００８１】
その後、ステップ６０１の素子温フィードバック制御実行条件が成立すると、ＣＰＵ４８ａは、ステップ６０５で素子温フィードバック制御を実行する（▲４▼の制御）。このとき、ＣＰＵ４８ａは、次の（１）〜（３）式に基づきヒータ電圧の制御デューティＤＵＴＹを演算する。
【００８２】
ＤＵＴＹ＝ＤＵＴＹ．Ｉ＋ＧＰ＋ＧＩ        ・・・（１）
ＧＰ＝ＫＰ・（Ｚｄｃ−ＺｄｃＴ）          ・・・（２）
ＧＩ＝ＧＩ＋ＫＩ・（Ｚｄｃ−ＺｄｃＴ）    ・・・（３）
但し、「ＤＵＴＹ．Ｉ」は制御デューティＤＵＴＹの初期値、「ＺｄｃＴ」は制御目標値である（本実施例では、ＤＵＴＹ．Ｉ＝２０％、ＺｄｃＴ＝３０Ω）。また、「ＧＰ」は比例項、「ＧＩ」は積分項、「ＫＰ」は比例定数、「ＫＩ」は積分定数を表す（本実施例では、ＫＰ＝４．２％、ＫＩ＝０．２％）。なお、これらの数値は実験的に求められるものであり、酸素センサ２６の仕様に応じて変更される。
【００８３】
図１４は、ＣＰＵ４８ａにより例えば１２８ｍｓ毎に実行される処理データ演算ルーチンを示す。図１４において、ＣＰＵ４８ａは、ステップ７０１で図２の電流検出抵抗５０により検出されたヒータ電流Ｉｈを読み込み、続くステップ７０２でヒータ電圧Ｖｈを読み込む。また、ＣＰＵ４８ａは、ステップ７０３でヒータ電圧Ｖｈをヒータ電流Ｉｈで除算してヒータ抵抗ＲＨを算出し（ＲＨ＝Ｖｈ／Ｉｈ）、続くステップ７０４でヒータ電圧Ｖｈとヒータ電流Ｉｈとを乗算してヒータ供給電力ＷＨを算出する（ＷＨ＝Ｖｈ・Ｉｈ）。さらに、ＣＰＵ４８ａは、ステップ７０５で１／６４なまし演算によりヒータ供給電力ＷＨのなまし値（以下、電力平均値ＷＨＡＶという）を算出する｛ＷＨＡＶ＝（６３・ＷＨＡＶi-1 ＋ＷＨ）／６４｝。
【００８４】
図１５のフローチャートは、ＣＰＵ４８ａにより例えば１秒周期で実行されるセンサ異常診断ルーチンを示す。この異常診断ルーチンでは、素子温フィードバック制御の実行時において必要とされたヒータ供給電力ＷＨに応じてセンサ異常が判定される。つまり、センサ異常時（例えばセンサの経時劣化）には、素子温を目標値（例えば、７００℃）に保持するために必要となるヒータ供給電力ＷＨが増大し、正常時のそれと容易に比較判定することができる。以下、図１５に従って異常診断手順を説明する。
【００８５】
図１５において、ＣＰＵ４８ａは、ステップ８０１で素子温フィードバック開始後に所定時間ＫＳＴＦＢ（例えば、１０秒）が経過したか否かを判別し、続くステップ８０２で前回の異常診断後に所定時間ＫＡＦＳＴ（例えば、１００秒）が経過したか否かを判別する。さらに、ＣＰＵ４８ａは、ステップ８０３で定常運転状態（例えば、アイドル状態であること）が所定時間ＫＳＭＳＴ（例えば、５秒）以上継続されたか否かを判別する。そして、ステップ８０１〜８０３のいずれかが否定判別されれば、ＣＰＵ４８ａはそのまま処理を終了し、ステップ８０１〜８０３が全て肯定判別されればステップ８０４に進む。
【００８６】
ＣＰＵ４８ａは、ステップ８０４で電力平均値ＷＨＡＶが所定のヒータ電力判定値ＫＷＨＡＶ以上であるか否か（ＷＨＡＶ≧ＫＷＨＡＶか否か）を判別する。このとき、ＷＨＡＶ＜ＫＷＨＡＶであれば、ＣＰＵ４８ａはセンサ異常無しとみなしてステップ８０５に進み、異常判定フラグＸＥＬＥＲを「０」にクリアして処理を終了する。
【００８７】
また、ＷＨＡＶ≧ＫＷＨＡＶであれば、ＣＰＵ４８ａはステップ８０６に進み、センサ以外の異常が検出されているか否かを判別し、他の異常が無ければステップ８０７に進む。そして、ＣＰＵ４８ａは、ステップ８０７で異常判定フラグＸＥＬＥＲが既に「１」にセットされているか否かを判別し、ＸＥＬＥＲ＝０であれば、ステップ８０８で異常判定フラグＸＥＬＥＲに「１」をセットする。また、ＸＥＬＥＲ＝１であれば、ＣＰＵ４８ａはステップ８０９に進み、ダイアグ処理として異常発生を表す警告灯２９を点灯する。つまり、ステップ８０４〜８０９では、異常発生（ＷＨＡＶ≧ＫＷＨＡＶ）の旨が２回続けて判別された場合に、ダイアグ処理が実施される。
【００８８】
以上第３実施例では、酸素センサ２６の素子抵抗（素子温）が目標素子抵抗３０Ω（素子温７００℃相当）になるようヒータ３３への供給電力をフィードバック制御し（図１３の素子温フィードバック制御）、その際にヒータ供給電力が所定の異常判定値を越えるか否かにより酸素センサ２６の異常を診断するようにした（図１５のステップ８０４〜８０９）。要するに、素子温フィードバック制御が実行される場合、劣化等のセンサ異常時であっても素子抵抗（素子温）は所望の活性領域に制御され、センサ異常時には過多量のヒータ供給電力が必要となる。このことから、センサ異常を精度良く且つ容易に診断することができる。また、本実施例では、異常診断を定常運転時に限定したため（図１５のステップ８０３）、排気温によるヒータ供給電力への影響を排除し、適正な診断結果を得ることができる。
【００８９】
（第４実施例）
次に、請求項６に記載した発明を具体化した第４実施例を説明する。第４実施例は、第３実施例の一部を変更して異常診断処理を実行するものであり、図１６は第４実施例におけるセンサ異常診断ルーチンを示す。
【００９０】
図１６のルーチンでは、前述の図１５のステップ８０３に代えてステップ８２０の処理を実行する。つまり、ステップ８２０では、エンジン運転状態に応じたヒータ電力判定値ＫＷＨＡＶが設定される。ここで、ヒータ電力判定値ＫＷＨＡＶは図１７に示すマップにて設定されるものであり、その時のエンジン回転数ＮＥ及びエンジン負荷（吸気負圧Ｐｍ又は吸入空気量ＧＮ）に応じて設定される（例えば、図のＫＷＨＡＶ１，ＫＷＨＡＶ２）。この場合、ヒータ電力判定値ＫＷＨＡＶは高回転域であるほど又は高負荷域であるほど低く、低回転域であるほど又は低負荷域であるほど高くなるように設定される。以上第４実施例によれば、エンジン運転状態に応じた最適な異常診断を実施することができる。
【００９１】
（第５実施例）次に、第５実施例を説明する。なお、本実施例では、マイクロコンピュータ４８のＣＰＵ４８ａにより電力積算値算出手段、ヒータ初期抵抗値検出手段及びセンサ異常診断手段が構成されている。
【００９２】
図１８は第５実施例におけるヒータ制御のタイムチャートであり、同図には、エンジン始動に伴うヒータ３３への通電開始後、酸素センサ２６が十分に活性するまでの動作を示す。なお、本実施例では、ヒータ制御がその目的及び制御方法の違いから図１８の▲１▼〜▲３▼の制御に分けられており（▲１▼は全導通制御、▲２▼は電力制御、▲３▼は素子温フィードバック制御）、それぞれを順に説明する。
【００９３】
先ずエンジン始動直後における全導通制御（▲１▼の制御）では、１００％デューティのヒータ電圧がヒータ３３に印加される。つまり、ヒータ３３及びセンサ素子の冷間時には短時間でヒータ３３を加熱すべく、最大電力がヒータ３３に供給される。電力制御（▲２▼の制御）では、ヒータ温を所定の目標ヒータ温（例えば、ヒータ上限温度である１２００℃）に保持するよう、素子抵抗Ｚｄｃに応じてヒータ３３への供給電力が制御される。また、素子温フィードバック制御（▲３▼の制御）では、素子の活性状態を維持すべく、素子抵抗３０Ω（素子温７００℃相当）になるように、ヒータ３３への供給電力がフィードバック制御される。なお、素子温フィードバック制御時には、ヒータ２６への供給電力が上限値を越えると、ヒータ３３への供給電力が制限されるようになっている。
【００９４】
図１９及び図２０のフローチャートは、ＣＰＵ４８ａにより例えば１２８ｍｓ毎に実行されるヒータ制御ルーチンを示す。以下、フローチャートに従いヒータ制御及び異常診断処理を説明する。
【００９５】
図１９において、ＣＰＵ４８ａは、ステップ９０１でイグニションスイッチ２８がオン操作されているか否か（電源ＯＮか否か）を判別し、電源ＯＦＦであればそのまま本ルーチンを終了し、電源ＯＮであればステップ９０２に進む。また、ＣＰＵ４８ａは、ステップ９０２でイニシャル終了済フラグＸＩＮＩＴが「０」か否かを判断し（このイニシャル終了済フラグＸＩＮＩＴは電源ＯＮの際に「０」に初期化される）、ＸＩＮＩＴ＝０であればステップ９０３に進み、ＸＩＮＩＴ＝１であればステップ９０８に進む。
【００９６】
ステップ９０３では、ＣＰＵ４８ａは、ヒータ電流Ｉｈとヒータ電圧Ｖｈとから求められたヒータ抵抗ＲＨ（＝Ｖｈ／Ｉｈ）を初期ヒータ抵抗ＲＨＩＮＴとして記憶する。また、ＣＰＵ４８ａは、ステップ９０４で図２１に示す関係に従い、初期ヒータ抵抗ＲＨＩＮＴに基づき目標電力積算値ＷＡＤＴＧを設定する。さらに、ＣＰＵ４８ａは、ステップ９０５で初期ヒータ抵抗ＲＨＩＮＴが酸素センサ２６の半活性状態を判定するための判定値ＫＲＨＩＮＴ以下か否かを判別し、ＲＨＩＮＴ≦ＫＲＨＩＮＴであれば、異常診断許可フラグＸＷＡＤＥＲに「１」をセットする。
【００９７】
次に、ＣＰＵ４８ａはステップ９０７に進み、イニシャル終了済フラグＸＩＮＩＴを「１」にセットしてからステップ９０８に進む。つまり、電源ＯＮ後に一度目標電力積算値ＷＡＤＴＧが求められると、それ以降はステップ９０２で「ＮＯ」と判別され、直接ステップ９０８に進むことになる。
【００９８】
その後、ＣＰＵ４８ａは、ステップ９０８で素子温フィードバック実施フラグＸＥＦＢが「１」か否かを判別する。ヒータ制御開始当初（図１８の時間ｔ１以前）はＸＥＦＢ＝０のためステップ９０８が否定判別され、ＣＰＵ４８ａはステップ９０９に進む。ステップ９０９では、ＣＰＵ４８ａは、酸素センサ２６の素子抵抗Ｚｄｃが素子温フィードバック実施温度に対応する値３０Ω（素子温７００℃相当）以下か否かを判別する。そして、ＣＰＵ４８ａは、素子抵抗Ｚｄｃが３０Ω以下の場合はステップ９１５に進み、素子抵抗Ｚｄｃが３０Ω以下でない場合はステップ９１０に進む。
【００９９】
ＣＰＵ４８ａは、ステップ９１０でその時のヒータ抵抗ＲＨがヒータ抵抗学習値ＲＨＡＤＰ以上であるか否かを判別する。ヒータ抵抗学習値ＲＨＡＤＰとは、電力制御時の目標ヒータ温（１２００℃）でのヒータ抵抗値を製品毎や経時変化によるバラツキを解消できるよう学習した値である。また、ステップ９１１では、ＣＰＵ４８ａは、電力積算値ＷＡＤＤが目標電力積算値ＷＡＤＴＧ（ステップ９０４の数値）以上であるか否かを判別する。電力積算値ＷＡＤＤとは、図示しない演算ルーチンで求められるものであって、例えば１２８ｍｓ毎に検出されるヒータ供給電力ＷＨ（＝Ｖｈ・Ｉｈ）を逐次積算した数値である（ＷＡＤＤ＝ＷＡＤＤi-1 ＋ＷＨ）。
【０１００】
この場合、ステップ９１０，９１１のいずれかが否定判別されると（ＲＨ＜ＲＨＡＤＰ、又はＷＡＤＤ＜ＷＡＤＴＧ）、ＣＰＵ４８ａはステップ９１２に進んで全導通制御を実行する（▲１▼の制御）。即ち図１８の時間ｔ１以前では、ＣＰＵ４８ａは、図２０のステップ９０８→９０９→９１０（→９１１）→９１２の順に進み、１００％デューティのヒータ電圧をヒータ３３に印加する。
【０１０１】
また、ステップ９１０，９１１が共に肯定判別されると（ＲＨ≧ＲＨＡＤＰ、且つＷＡＤＤ≧ＷＡＤＴＧ）、ＣＰＵ４８ａはステップ９２０に進み、電力制御を実行する（▲２▼の制御）。即ち図１８の時間ｔ１〜ｔ２では、ＣＰＵ４８ａは、図２０のステップ９０８→９０９→９１０→９１１→９２０の順に進み、ヒータ温を目標ヒータ温に保持するよう、素子抵抗に応じてヒータ３３への供給電力を制御する。このステップ９２０では、電力制御実行フラグＸＥＷＡＴに「１」がセットされる。
【０１０２】
また、図１８の時間ｔ２になると、前記ステップ９０９が肯定判別され、ＣＰＵ４８ａはステップ９１５に進んで電力制御実施フラグＸＥＷＡＴが「１」であるか否かを判別する。そして、ＸＥＷＡＴ＝１であれば、ＣＰＵ４８ａはステップ９３０に進んでヒータ抵抗の学習処理を実行し、その後、ステップ９５０に進む。また、ＸＥＷＡＴ＝０であれば、ＣＰＵ４８ａはそのままステップ９５０に進む。なお、ステップ９３０のヒータ抵抗学習処理では、その時点でのヒータ抵抗ＲＨがヒータ抵抗学習値ＲＨＡＤＰ＋α％（例えば、α＝２％）を越える数値であるか否かが判別され、越える数値であればヒータ抵抗学習値ＲＨＡＤＰがその時のヒータ抵抗ＲＨに更新される。
【０１０３】
その後、ＣＰＵ４８ａは、ステップ９４０で後述するヒータ異常判定ルーチンを実行し、さらにステップ９５０で素子温フィードバック制御を実行する。この場合、ＣＰＵ４８ａは、電力制御実施フラグＸＥＷＡＴを「０」にリセットすると共に素子温フィードバック実施フラグＸＥＦＢに「１」をセットする。また、ＣＰＵ４８ａは、次の（イ）〜（ハ）の３態様に分けてヒータ制御回路４６の制御デューティＤＵＴＹを設定する。
【０１０４】
（イ）電源ＯＮからの経過時間が所定時間（例えば、２４．５秒）以上の場合、次の（４）〜（７）式により制御デューティＤＵＴＹを計算する。但し、「ＺｄｃＴ」は制御目標値、「ＧＰ」は比例項、「ＧＩ」は積分項、「ＧＤ」は微分項ＧＤを表し、「ＫＰ」は比例定数、「ＫＩ」は積分定数、「ＫＤ」は微分定数を表す。
【０１０５】
ＤＵＴＹ＝ＧＰ＋ＧＩ／１６＋ＧＤ              ・・・（４）
ＧＰ＝ＫＰ・（Ｚｄｃ−ＺｄｃＴ）              ・・・（５）
ＧＩ＝ＧＩi-1 ＋ＫＩ・（Ｚｄｃ−ＺｄｃＴ）    ・・・（６）
ＧＤ＝ＫＤ・（Ｚｄｃi −Ｚｄｃi-1 ）          ・・・（７）
（ロ）電源ＯＮからの経過時間が所定時間（例えば、２４．５秒）未満であり、且つ空燃比＞１２の場合、比例項ＧＰと積分項ＧＩとを用いて、次の（８）式により制御デューティＤＵＴＹを計算する。
【０１０６】
ＤＵＴＹ＝ＧＰ＋ＧＩ／１６＋ＧＤ              ・・・（８）
（ハ）電源ＯＮからの経過時間が所定時間（例えば、２４．５秒）未満であり、且つ空燃比≦１２の場合、次の（９）式により制御デューティＤＵＴＹを計算する。即ち、この場合（空燃比≦１２の場合）には、ＰＩＤによる素子温フィードバック制御が困難であり、素子温フィードバック制御ではなくヒータ抵抗フィードバック制御が実行される。但し、「ＫＰＡ」は定数、「ＲＨＧ」は目標ヒータ抵抗（２．１Ω＝１０２０℃相当）である。
【０１０７】
ＤＵＴＹ＝ＨＤＵＴＹi-1 ＋ＫＰＡ・（ＲＨＧ−ＲＨ）  ・・・（９）
次に、前記図２０のステップ９４０におけるヒータ異常診断ルーチンを図２２に従い説明する。
【０１０８】
図２２において、ＣＰＵ４８ａは、ステップ９４１で異常診断許可フラグＸＷＡＤＥＲが「１」であるか否かを判別し、ＸＷＡＤＥＲ＝０であれば、そのまま本ルーチンを終了する。また、ＸＷＡＤＥＲ＝１であれば、ＣＰＵ４８ａはステップ９４２に進み、電力積算値ＷＡＤＤが所定の異常判定値ＫＷＡＤＥＲ以上であるか否か（ＷＡＤＤ≧ＫＷＡＤＥＲか否か）を判別する。ＷＡＤＤ＜ＫＷＡＤＥＲであれば、ＣＰＵ４８ａはステップ９４３に進み、異常判定フラグＸＥＬＥＲを「０」にクリアする。
【０１０９】
また、ＷＡＤＤ≧ＫＷＡＤＥＲであれば、ＣＰＵ４８ａはステップ９４４に進み、異常判定フラグＸＥＬＥＲが既に「１」であるか否かを判別する。この場合、ステップ９４４〜９４６では、２回続けて異常判定がなされるとダイアグ処理が実施される（警告灯２９が点灯する）。
【０１１０】
本第５実施例によれば、ヒータ通電の開始当初からのヒータ供給電力の積算値（電力積算値ＷＡＤＤ）を算出し、該電力積算値ＷＡＤＤが所定の異常判定値ＫＷＡＤＥＲを越えるか否かにより酸素センサ２６の異常を診断するようにした（図２２のステップ９４２〜９４６）。この場合、ヒータ供給電力の積算値により異常診断を行うことによって、その診断データの精度が増し、正確な異常診断が可能となる。
【０１１１】
また、本実施例では、ヒータ通電の開始当初におけるヒータの初期抵抗値を検出し（図１９のステップ９０３）、ヒータの初期抵抗値が、酸素センサ２６の冷間状態を判定する所定域にある場合のみ（図１９のステップ９０５がＹＥＳの場合のみ）、センサ異常診断を許可するようにした（図１９の９０６のフラグ操作）。つまり、例えば機関の暖機再始動時においてヒータ通電が開始される場合には、ヒータ供給電力の積算値が比較的小さく、当該積算値によりセンサ異常を診断することは診断精度上、望ましくない。そこで、異常診断をセンサの冷間時に限定し、常に良好な異常診断が実施できるようにしている。
【０１１２】
【発明の効果】
請求項１に記載の発明によれば、酸素センサの素子抵抗が所定範囲内にあるか否かに応じて酸素センサの異常を診断することにより、センサ異常を精度良く且つ容易に診断することができるという優れた効果を発揮する。また、センサ異常を素子低温異常又は素子高温異常のいずれであるかを判別することができる。
【０１１４】
請求項２および３に記載の発明によれば、酸素センサの活性状態、又は当然活性化しているはずの状態でセンサ異常が診断され、より正確な異常診断が可能となる。請求項４に記載の発明によれば、酸素センサの出力特性を抵抗支配域における傾き、即ち素子抵抗の大きさにより特定することにより、その異常を精度良く且つ容易に診断することができる。
【０１１５】
請求項５に記載の発明によれば、酸素センサに負の電圧を印加することにより、酸素濃度に依存せず、温度のみに比例する負の温度電流を検出することができる。
【図面の簡単な説明】
【図１】実施例における空燃比制御装置の全体構成を示す概略図。
【図２】酸素センサの断面構成、及びＥＣＵ内の電気的構成を示す図。
【図３】酸素センサの電圧−電流特性を示す図。
【図４】ヒータ通電制御ルーチンを示すフローチャート。
【図５】素子温と素子抵抗との関係を示す図。
【図６】空燃比検出ルーチンを示すフローチャート。
【図７】酸素センサの電流−電圧特性を示す図。
【図８】センサ異常診断ルーチンを示すフローチャート。
【図９】フェイルセーフルーチンを示すフローチャート。
【図１０】第２実施例のセンサ異常診断ルーチンを示すフローチャート。
【図１１】酸素センサの電流−電圧特性を正常、素子低温異常、素子高温異常に分けて示す図。
【図１２】第３実施例のヒータ制御動作を示すタイムチャート。
【図１３】第３実施例のヒータ制御ルーチンを示すフローチャート。
【図１４】処理データ演算ルーチンを示すフローチャート。
【図１５】第３実施例のセンサ異常診断ルーチンを示すフローチャート。
【図１６】第４実施例のセンサ異常診断ルーチンを示すフローチャート。
【図１７】ヒータ電力判定値を検索するためのマップ。
【図１８】第５実施例のヒータ制御動作を示すタイムチャート。
【図１９】第５実施例のヒータ制御ルーチンを示すフローチャート。
【図２０】図１９に続くフローチャート。
【図２１】初期ヒータ抵抗と目標電力積算値との関係を示す図。
【図２２】第５実施例のヒータ異常診断ルーチンを示すフローチャート。
【符号の説明】
２６…酸素センサ（限界電流式酸素センサ）、３３…ヒータ、３４…酸素濃度検出素子としての固体電解質層、４８ａ…ヒータ制御手段，素子抵抗検出手段，センサ異常診断手段，ヒータ供給電力推定手段，燃料増減手段，ヒータ供給電力制御手段，電力積算値算出手段，ヒータ初期抵抗値検出手段としてのＣＰＵ。
【図１】
0003711582.tif 000002
【図２】
0003711582.tif 000003
【図３】
0003711582.tif 000004
【図４】
0003711582.tif 000005
【図５】
0003711582.tif 000006
【図６】
0003711582.tif 000007
【図７】
0003711582.tif 000008
【図８】
0003711582.tif 000009
【図９】
0003711582.tif 000010
【図１０】
0003711582.tif 000011
【図１１】
0003711582.tif 000012
【図１２】
0003711582.tif 000013
【図１３】
0003711582.tif 000014
【図１４】
0003711582.tif 000015
【図１５】
0003711582.tif 000016
【図１６】
0003711582.tif 000017
【図１７】
0003711582.tif 000018
【図１８】
0003711582.tif 000019
【図１９】
0003711582.tif 000020
【図２０】
0003711582.tif 000021
【図２１】
0003711582.tif 000022
【図２２】
0003711582.tif 000023