(第1実施例)
以下、この発明の酸素濃度検出装置を自動車用内燃機関の空燃比制御装置にて具体化した第1実施例を図面に従って説明する。
図1は、本実施例における内燃機関の空燃比制御装置の概要を示す構成図である。図1において、4気筒火花点火式ガソリン内燃機関(以下、エンジンという)1には吸気管2と排気管3とが接続されている。吸気管2の最上流部にはエアクリーナ4が設けられ、吸気管2の途中にはサージタンク5が設けられている。サージタンク5の上流側には、図示しないアクセルペダルの踏み込み操作に連動するスロットルバルブ17が配設されている。スロットルバルブ17をバイパスするバイパス通路18には、ISC弁(アイドル回転数制御弁)19が設けられている。
また、エンジン1における各気筒毎の吸気管(吸気ポート)2にはインジェクタ6が配設されている。燃料タンク7内の燃料は燃料ポンプ8により吸い上げられ、燃料フィルタ9を通してプレッシャレギュレータ10に供給される。プレッシャレギュレータ10は、一定圧力に調圧した燃料をインジェクタ6に供給すると共に、余剰燃料を燃料タンク7にリターンさせる。インジェクタ6はバッテリ15からの電力供給により開弁して燃料を噴射する。そして、インジェクタ6による噴射燃料が吸入空気と混合されて混合気となり、吸気弁11を介して各気筒の燃焼室12に供給される。
エアクリーナ4の近傍には吸気温センサ20が設けられ、同センサ20により吸気温が検出される。また、サージタンク5には吸気管内圧力センサ22が設けられ、同センサ22により吸気管内圧力(吸気負圧)が検出される。エンジン1のシリンダブロックにはエンジン冷却水の温度を検出するための水温センサ23が設けられている。
各気筒の燃焼室12には点火プラグ13が配設されている。イグナイタ14ではバッテリ15の電圧から高電圧が生成され、その高電圧がディストリビュータ16により各点火プラグ13に分配される。ディストリビュータ16内には気筒判別センサ24とクランク角センサ25が配設されている。クランク角センサ25は、エンジン1のクランク軸の回転に伴う所定のクランク角毎(例えば、30°CA毎)にクランク角信号を発生する。また、気筒判別センサ24は、エンジン1のクランク軸の回転に伴う特定気筒の特定位置(例えば、第1気筒の圧縮TDC)で気筒判別信号を発生する。
また、エンジン1の排気管3には限界電流式の酸素センサ26が設けられており、この酸素センサ26は排気ガス中の酸素濃度に比例してリニアな検出信号を出力する。なお、酸素センサ26下流には図示しない触媒コンバータが配設されており、同コンバータにて排気ガスが浄化されるようになっている。
上記各センサの検出信号は電子制御装置(以下、ECUという)40に入力される。ECU40は、バッテリ15を電源として動作し、イグニションスイッチ28のオン信号によりエンジン1を始動させると共に、エンジン運転中は酸素センサ26の出力信号に基づいて空燃比補正係数を増減補正することで空燃比を目標空燃比(例えば、理論空燃比)近傍にフィードバック制御する。また、ECU40は後述するセンサ異常診断処理を実行して酸素センサ26の異常の有無を診断し、異常時には警告灯29を点灯して運転者に異常発生の旨を警告する。
図2は、酸素センサ26の概略断面、及び酸素センサ26に接続されたECU40の電気的構成を示す図である。図2において、酸素センサ26は排気管3の内部に向けて突設されており、同センサ26はカバー31、センサ本体32及びヒータ33に大別される。カバー31は断面コ字状をなし、その周壁にはカバー内外を連通する多数の小孔31aが形成されている。センサ本体32は空燃比リーン領域における酸素濃度、若しくは空燃比リッチ領域における一酸化炭素(CO)濃度に対応する限界電流を発生する。
センサ本体32の構成について詳述する。センサ本体32において、断面カップ状に形成された固体電解質層34の外表面には、排気ガス側電極層36が固着され、内表面には大気側電極層37が固着されている。また、排気ガス側電極層36の外側には、プラズマ溶射法等により拡散抵抗層35が形成されている。固体電解質層34は、ZrO2 、HfO2 、ThO2 、Bi2O3等にCaO、MgO、Y2O3 、Yb2O3 等を安定剤として固溶させた酸素イオン伝導性酸化物焼結体からなり、拡散抵抗層35は、アルミナ、マグネシャ、ケイ石質、スピネル、ムライト等の耐熱性無機物質からなる。排気ガス側電極層36及び大気側電極層37は共に、白金等の触媒活性の高い貴金属からなりその表面には多孔質の化学メッキ等が施されている。なお、排気ガス側電極層36の面積及び厚さは、10〜100mm2 及び0.5〜2.0μm程度となっており、一方、大気側電極層37の面積及び厚さは、10mm2 以上及び0.5〜2.0μm程度となっている。固体電解質層34は酸素濃度検出素子に相当する。
ヒータ33は大気側電極層37内に収容されており、その発熱エネルギーによりセンサ本体32(大気側電極層37、固体電極質層34、排気ガス側電極層36及び拡散抵抗層35)を加熱する。ヒータ33は、センサ本体32を活性化するに十分な発熱容量を有している。
上記構成の酸素センサ26において、センサ本体32は理論空燃比点にて濃淡起電力を発生し、理論空燃比点よりリーン領域の酸素濃度に応じた限界電流を発生する。この場合、酸素濃度に対応する限界電流は、排気ガス側電極層36の面積、拡散抵抗層35の厚さ、気孔率及び平均孔径により決定される。また、センサ本体32は酸素濃度を直線的特性にて検出し得るものであるが、このセンサ本体32を活性化するのに約650℃以上の高温が必要とされると共に、同センサ本体32の活性温度範囲が狭いため、エンジン1の排気ガスのみによる加熱では活性領域を制御できない。そのため、本実施例では、後述するヒータ33の加熱制御によりセンサ本体32の温度制御が実施される。なお、理論空燃比よりもリッチ側の領域では、未燃ガスである一酸化炭素(CO)の濃度が空燃比に対してほぼリニアに変化し、センサ本体32はCO濃度に応じた限界電流を発生する。
センサ本体32の電圧−電流特性について図3を用いて説明する。図3に示すように電流−電圧特性は、酸素センサ26の検出酸素濃度(空燃比)に比例するセンサ本体32の固体電解質層34への流入電流と、同固体電解質層34への印加電圧との関係が直線的であることを示す。そして、センサ本体32が温度T=T1にて活性状態にあるとき、図3の実線で示すように特性線L1でもって安定した状態を示す。かかる場合、特性線L1の電圧軸Vに平行な直線部分がセンサ本体32の限界電流を特定する。この限界電流の増減は空燃比の増減(即ち、リーン・リッチ)に対応しており、空燃比がリーン側になるほど限界電流は増大し、空燃比がリッチ側になるほど限界電流は減少する。
また、この電圧−電流特性において電圧軸Vに平行な直線部分よりも小さい電圧域は抵抗支配域となっており、その抵抗支配域における特性線L1の傾きは、センサ本体32における固体電解質層34の内部抵抗(以下、これを素子抵抗という)により特定される。この素子抵抗は温度変化に伴い変化するため、センサ本体32の温度が低下すると素子抵抗の増大により上記傾きが小さくなる。つまり、センサ本体32の温度TがT1よりも低いT2にあるとき、電流−電圧特性は図3の破線で示すように特性線L2でもって特定される。かかる場合、特性線L2の電圧軸Vに平行な直線部分がT=T2におけるセンサ本体32の限界電流を特定するもので、この限界電流は特性線L1による限界電流とほぼ一致している。
そして、特性線L1において、センサ本体32の固体電解質層34に正の印加電圧Vposを印加すれば、センサ本体32に流れる電流が限界電流Iposとなる(図3の点Pa参照)。また、センサ本体32の固体電解質層34に負の印加電圧Vnegを印加すれば、センサ本体32に流れる電流が酸素濃度に依存せず、温度のみに比例する負の温度電流Inegとなる(図3の点Pb参照)。
また、図2において、センサ本体32の排気ガス側電極層36には、バイアス制御回路41が接続され、同バイアス制御回路41にはセンサ電流検出回路45を介してセンサ本体32の大気側電極層37が接続されている。バイアス制御回路41は正バイアス用直流電源42、負バイアス用直流電源43及び切り換えスイッチ回路44によって構成されている。正バイアス用直流電源42の負側電極及び負バイアス用直流電源43の正側電極は共に排気ガス側電極層36に接続されている。
切り換えスイッチ回路44は、第1切り換え状態にて正バイアス用直流電源42の正側電極のみをセンサ電流検出回路45に接続すると共に、第2切り換え状態にて負バイアス用直流電源43の負側電極のみをセンサ電流検出回路45に接続する。つまり、切り換えスイッチ回路44が第1切り換え状態にある場合、正バイアス用直流電源42がセンサ本体32の固体電解質層34を正バイアスし、同固体電解質層34には正方向の電流が流れる。一方、切り換えスイッチ回路44が第2切り換え状態にある場合、負バイアス用直流電源43が固体電解質層34を負バイアスし、同固体電解質層34には負方向の電流が流れる。かかる場合、各直流電源42,43の端子電圧は上述の印加電圧Vpos,Vnegにそれぞれ相当する。
センサ電流検出回路45は、センサ本体32の大気側電極層37から切り換えスイッチ回路44へ流れる電流又はその逆方向へ流れる電流、つまり、固体電解質層34を流れる電流を検出する。また、ヒータ制御回路46は、酸素センサ26の素子温やヒータ温度に応じてバッテリ電源VBからヒータ33に供給される電力をデューティ制御し、ヒータ33の加熱制御を行う。ヒータ33に流れる電流(以下、ヒータ電流Ihという)は電流検出抵抗50により検出される。
A/D変換器47は、センサ電流検出回路45による検出電流(図3のIpos,Ineg)、ヒータ電流Ih、及びヒータ33の印加電圧(以下、ヒータ電圧Vhという)をデジタル信号に変換してマイクロコンピュータ48に出力する。マイクロコンピュータ48は、各種演算処理を実行するCPU48aやROM,RAMからなるメモリ48b等により構成され、所定のコンピュータプログラムに従いバイアス制御回路41、ヒータ制御回路46及び燃料噴射制御装置(以下、EFIという)49を制御する。EFI49は、エンジン情報としての前記各種センサ信号を入力し、吸気温Tam、吸気負圧Pm、冷却水温Thw、エンジン回転数NE、車速Vs等を検知する。そして、これらのエンジン情報に基づきインジェクタ6による燃料噴射を制御する。なお、本実施例では、マイクロコンピュータ48内のCPU48aによりヒータ制御手段、素子抵抗検出手段、センサ異常診断手段及びヒータ供給電力推定手段が構成されている。
次いで、本実施例の作用についてマイクロコンピュータ48内のCPU48aにより実行される各種制御プログラムに沿って説明する。以下、ヒータ通電制御、空燃比検出処理、センサ異常診断処理の順に説明する。
図4のフローチャートは、イグニションスイッチ28のオン操作に従い起動され、CPU48aにより所定時間周期で実行されるヒータ通電制御ルーチンを示す。図4において、CPU48aは、ステップ101でヒータ33の制御状態を示すヒータ制御フラグF1,F2を判定する。即ち本第1実施例では、イグニションスイッチ28のオン操作に従い、デューティ100%制御→第1のヒータ通電制御→第2のヒータ通電制御の順にヒータ制御が移行するようになっており、ヒータ制御フラグF1=1は第1のヒータ通電制御が実行中であることを表し、ヒータ制御フラグF2=1は第2のヒータ通電制御が実行中であることを表す。
この場合、ヒータ通電制御の開始当初であれば、ヒータ制御フラグF1,F2が共に「0」(初期値)にクリアされており、CPU48aはステップ102に進んでデューティ100%制御を実施する。つまり、図2のヒータ制御回路46を100%デューティで制御してヒータ33への供給電力を最大値に固定し、ヒータ33を急速加熱する。また、CPU48aは、ステップ103でヒータ電圧Vh及びヒータ電流Ihにより算出されたヒータ抵抗RHを読み込み(RH=Vh/Ih)、続くステップ104でヒータ抵抗RHが2Ω以上であるか否か(RH≧2Ωか否か)を判別する。RH<2Ωであれば、CPU48aはそのまま本ルーチンを終了する。この場合、デューティ100%制御が継続される。
また、前記ステップ104でヒータ抵抗RH≧2Ωになると、CPU48aはステップ105に進んでヒータ制御フラグF1に「1」をセットし、続くステップ106で第1のヒータ通電制御を実施する。ここで、第1のヒータ通電制御では、エンジン負荷(例えば、吸気負圧Pm)とエンジン回転数NEとからなる第1のマップにてヒータ33の制御デューティが求められる。ここで、前記マップは酸素センサ26の素子温が所定の活性化温度になるよう設定されるものであって、例えば低負荷又は低回転域では排気ガスの熱量が少ないために大きなデューティが設定されるようになっている。フラグF1のセット後は、CPU48aはステップ101から直接ステップ106へ進み、第1のヒータ通電制御を実施する。
そして、ステップ106からステップ107に進むと、CPU48aは、酸素センサ26の素子抵抗(固体電解質層34の内部抵抗)Zdcを読み込む。素子抵抗Zdcは素子印加電圧Vneg(負の印加電圧)及びセンサ電流検出回路45にて検出された負の電流Inegから算出できる(Zdc=Vneg/Ineg)。また、CPU48aは、ステップ108で素子抵抗Zdcが90Ω以下になったか否か(Zdc≦90Ωか否か)を判別し、Zdc>90Ωであればそのまま本ルーチンを終了する。この場合、第1のヒータ通電制御が継続される。なお、図5は素子温と素子抵抗Zdcとの関係を示す。
また、前記ステップ108でZdc≦90Ωになると、CPU48aはステップ109に進んでヒータ制御フラグF1を「0」に、ヒータ制御フラグF2を「1」に操作し、続くステップ110で第2のヒータ通電制御を実施する。ここで、第2のヒータ通電制御では、前記第1のマップとは異なる第2のマップを用い、エンジン負荷(例えば、吸気負圧Pm)とエンジン回転数NEとに応じてヒータ33の制御デューティが算出される(但し、特性はほぼ同じ)。そして、フラグF2=1のセット後は、CPU48aはステップ101から直接ステップ110へ進み、第2のヒータ通電制御を実施する。このように本実施例では、制御開始当初の100%デューティと、その後の第1,第2のヒータ通電制御とによりヒータ33の通電がオープン制御される。
一方、図6のフローチャートは、イグニションスイッチ28のオン操作に従い起動され、CPU48aにより例えば8msec毎に実行される空燃比検出ルーチンを示す。
図6において、CPU48aは、先ずステップ201〜204でセンサ活性判定処理を実行する。即ちCPU48aは、ステップ201で図7の素子抵抗検出域における所定電圧Vmを印加し(例えば、Vm=−1ボルト)、続くステップ202で図2のセンサ電流検出回路45にて検出された電流Imを読み込む(図7参照)。また、CPU48aは、ステップ203で上記印加電圧Vmと検出電流Imとから素子抵抗Zdcを算出する(Zdc=Vm/Im)。
さらに、CPU48aは、ステップ204で上記素子抵抗Zdcが所定の活性判定域(KREL〜KREH)にあるか否かにより酸素センサ26の活性判定を行う(例えば、KREL=10Ω,KREH=90Ω)。つまり、KREL≦Zdc≦KREHでありステップ204が肯定判別されれば、CPU48aはセンサ活性化が完了したとみなし、続くステップ205に進む。一方、ステップ204が否定判別されれば、CPU48aは活性化判定がなされるまでステップ201〜204を繰り返し実行する。
ステップ205に進むと、CPU48aは図7のA/F検出域における印加電圧Vpの初期値として「0.4ボルト」を酸素センサ26に印加する。さらに、CPU48aは、ステップ206で図2のセンサ電流検出回路45にて検出された限界電流Ip(n)を読み込み、続くステップ207で限界電流Ip(n)を空燃比(A/F)に換算する。また、CPU48aは、ステップ208で次の空燃比検出のための印加電圧Vp(n+1)を算出すると共に{Vp(n+1)=f(Ip)}、その印加電圧Vp(n+1)を酸素センサ26に印加する。つまり図7において、(n)時の空燃比(A/F)が「16」、(n+1)時の空燃比(A/F)が「15」の場合、Vp(n)の印加によりIp(n)が検出され、Vp(n+1)の印加によりIp(n+1)が検出される。
その後、CPU48aは、ステップ209で空燃比検出を開始してから所定時間が経過したか否かを判別する。この場合、所定時間が経過していなければ、CPU48aは前述のステップ206〜209を繰り返し実行し、所定時間が経過しておればステップ210に進む。CPU48aは、ステップ210〜213で上記ステップ201〜204と同様のセンサ活性判定処理を行う。
つまり、CPU48aは、ステップ210〜212で算出した素子抵抗Zdcが所定の活性判定域(KREL〜KREH)にあるか否かを判別する。そして、KREL≦Zdc<KREHであれば、CPU48aはセンサ活性化しているとみなして前記ステップ206に進み、上述の空燃比検出処理を実施する。また、ステップ213が否定判別されれば、CPU48aはステップ210〜213を繰り返し実行する。
次に、図8に従いセンサ異常診断ルーチンを説明する。図8のフローチャートは、CPU48aにより所定時間毎(例えば、32msec毎)に実行される。図8において、CPU48aは、先ずステップ301〜307でセンサ異常診断の前提条件を判別する。詳しくは、ステップ301では吸気温Tamが所定の判定値KTA(例えば、5℃)以上であるか否かを判別し、ステップ302では冷却水温Thwが所定の判定値KTW(例えば、5℃)以上であるか否かを判別する。また、ステップ303ではエンジン回転数NEが所定の判定値KNE(例えば、500rpm)以上であるか否かを判別し、ステップ304では車速Vsが所定の判定値KSPD(例えば、100km/h)未満であるか否かを判別する。さらに、ステップ305ではエンジン始動後の経過時間CASTが所定の判定値KCAST(例えば、20秒)以上であるか否かを判別し、ステップ306ではバッテリ電圧VBが所定の判定値KVB(例えば、13V)以上であるか否かを判別する。ステップ307では燃料カット実行中を表す燃料カットフラグXFCが「0」にクリアされているか否か、即ち燃料カットが実施されていないか否かを判別する。
なお本実施例では、上記前提条件のうち、エンジン始動後の経過時間CASTとバッテリ電圧VBとによりヒータ供給電力の積算値が推定され、これらの値が所定値以上の時に、ヒータ供給電力の積算値が所定値以上に達したものと判断する。つまり、これらの条件が成立すれば、センサ活性状態であるか又は当然活性化しているはずの状態であるとみなし、異常診断が許可される。この条件設定により異常診断がより正確に実施できる。
上記ステップ301〜307のいずれかが否定判別されれば、CPU48aはそのまま本ルーチンを終了し、ステップ301〜307が全て肯定判別されれば、続くステップ308に進んで酸素センサ26の素子抵抗Zdcに基づきセンサ異常診断を実施する。ここで、酸素センサ26の素子抵抗Zdcは、前述した図6のステップ201〜203の如く算出される。
ステップ308に進むと、CPU48aは、素子抵抗Zdcが第1の抵抗判定値KREL(本実施例では、10Ω)よりも小さいか否かを判別し、Zdc<KRELであればステップ309に進む。素子抵抗Zdcが第1の抵抗判定値KRELよりも小さいことは、素子温が上昇し過ぎていることを意味し、CPU48aは、ステップ309で酸素センサ26が素子高温異常であると判断する。なお、この素子高温異常には以下のモードをも含む。即ち、酸素センサ26のヒータ抵抗が小さい方にばらつき、電流が流れ過ぎるモードや、ヒータ33のグランド側のワイヤハーネスが常時グランドショートして電流制御ができず電流が流れ過ぎるモードをも含む。
また、Zdc≧KRELの場合、CPU48aは、ステップ310で素子抵抗Zdcが第2の抵抗判定値KREH(本実施例では、90Ω)以上であるか否かを判別し、Zdc≧KREHであればステップ311に進む。素子抵抗Zdcが第2の抵抗判定値KREH以上であることは、素子温が上昇せずに低いままであることを意味し、CPU48aは、ステップ311で酸素センサ26が素子低温異常であると判断する。なお、この素子低温異常には以下のモードをも含む。即ち、酸素センサ26のヒータ抵抗が大きい方にばらつき、電流が少なくなるモードや、ヒータ33が劣化して抵抗が大きくなり、電流が小さくなるモードや、ヒータ33のワイヤハーネスの断線のために電流が流れなくなるモードをも含む。
そして、上記の如く酸素センサ26の素子異常が判断された場合には、図9に示すフェイルセーフルーチンが実行される(例えば32msec周期)。図9において、CPU48aは、先ずステップ401で素子異常であるか否かを判別する。ここで、上記図8により素子異常(高温異常或いは低温異常)が判定されていれば、CPU48aはステップ402に進んで空燃比フィードバックを停止する。また、CPU48aは、ステップ403でヒータ通電を停止すると共に続くステップ404で素子異常を表す警告灯29を点灯させる。このとき、高温異常と低温異常とを分けて表示するようにしてもよい。
以上の第1実施例では、酸素センサ26の素子抵抗が所定範囲内にあるか否かに応じて同センサ26の異常を診断するようにした(図8のステップ308〜311)。つまり、限界電流式の酸素センサ26では、その出力特性が抵抗支配域における傾き(図3において、電圧軸Vに平行な直線部分よりも小さい電圧域の傾き)、即ち素子抵抗の大きさにより特定される。この場合、酸素センサ26が異常であれば素子抵抗が過小又は過大になり、その異常を精度良く且つ容易に診断することができる。
また、本実施例では、素子抵抗が許容範囲よりも大きいか又は小さいかに応じて、酸素センサ26の素子低温異常又は素子高温異常を判別するよにした。つまり、酸素センサ26の素子抵抗が過大であることは素子温が低過ぎることを意味し、素子低温異常が判定される。また、酸素センサ26の素子抵抗が過小であることは素子温が高過ぎることを意味し、素子高温異常が判定される。
さらに、本実施例では、従来技術のように温度センサを要件としないため、コスト高を招くことはない。また、従来技術では主にバッテリやセンサ交換時に異常の旨が診断される構成であったが、本実施例では車両の通常走行時において常に異常の旨を診断することができ、センサ出力の信頼性を向上させると共に、それにより高精度な空燃比制御システムを実現することができる。
なお、ヒータ通電制御方法は本実施例の方法に限定されるものではない。即ち上記実施例では、100%デューティ制御、第1及び第2のヒータ通電制御を順次実施したが、例えば第1又は第2のヒータ通電制御のみを常に実施する構成にしたり、エンジン始動後の所定時間のみ100%デューティ制御を行い、その後は常に第1又は第2のヒータ通電制御を実施する構成にしたりすることもできる。
(第2実施例)
次に、第2実施例について、上記第1実施例との相違点を中心に説明する。なお、本実施例では、マイクロコンピュータ48内のCPU48aによりヒータ制御手段、燃料増減手段及びセンサ異常診断手段が構成されている。図10は第2実施例におけるセンサ異常診断ルーチンを示す。
図10において、CPU48aは、ステップ501でセンサ異常診断の前提条件が成立しているか否かを判別する。この前提条件は図8のステップ301〜307に相当する。また、CPU48aは、ステップ502で空燃比フィードバック中であるか否かを判別する。この場合、ステップ501,502のいずれかが否定判別されれば、CPU48aは本ルーチンを終了し、ステップ501,502が共に肯定判別されれば、ステップ503に進む。
ステップ503に進むと、CPU48aは、その時点で図2のセンサ電流検出回路45により検出された限界電流Ipを「Ipo」として記憶する。また、CPU48aは、続くステップ504で現在の運転条件(吸気負圧Pm,エンジン回転数NE)を「Pmo」,「NEo」として記憶する。
その後、CPU48aは、ステップ505でインジェクタ6による燃料噴射量をα%(例えば、10%)増量し(減量でも可)、続くステップ506で燃料増量後に所定時間が経過したか否かを判別する。ここで、燃料増量は空燃比を強制的にリッチ側に移行させることを意味する。そして、燃料増量後に所定時間が経過すると、CPU48aはステップ507に進む。CPU48aは、ステップ507でその時点での吸気負圧Pm,エンジン回転数NEが燃料増量前の数値「Pmo」,「NEo」(ステップ504での記憶値)にほぼ一致するか否かを判別する。この場合、運転条件が変化していれば、CPU48aは以降の異常診断を実施せずにそのまま本ルーチンを終了する。また、運転条件が変化していなければ、CPU48aは以降の異常診断を実施すべくステップ508に進む。
ステップ508に進むと、CPU48aはその時点でセンサ電流検出回路45により検出された限界電流Ipを読み込み、続くステップ509で燃料増量前後の電流値変化から電流変化量ΔIpを算出する(ΔIp=Ip−Ipo)。その後、CPU48aは、ステップ510で電流変化量ΔIp(絶対値)が第1の電流判定値KDILを越えるか否か(ΔIp>KDILか否か)を判別すると共に、ステップ511で電流変化値ΔIpが第2の電流判定値KDIH以下であるか否か(ΔIp≦KDIHか否か)を判別する(但し、KDIL<KDIH)。ここで、「KDIL〜KDIH」で規定される変化許容範囲は、燃料増量による実際の空燃比の変化相当量にて設定されている。
この場合、電流変化値ΔIpが「KDIL〜KDIH」の範囲内にあれば、CPU48aは、ステップ510,511を共に肯定判別する。また、ΔIp≦KDILであれば、CPU48aはステップ510を否定判別し、ステップ512で素子低温異常である旨を判定する。ΔIp>KDIHであれば、CPU48aはステップ511を否定判別し、ステップ513で素子高温異常である旨を判定する。
図11(a)〜(c)は、正常時、素子低温異常時、素子高温異常時における酸素センサ26の出力信号を示す図である。図中、電流変化量ΔIp1,ΔIp2,ΔIp3は、酸素センサ26への印加電圧が「Vp1」から「Vp2」に変化した時の限界電流の差を示す。つまり、図11(b)に示す素子低温異常時には素子抵抗が大きく、抵抗支配域における特性線の傾きが小さい。従って、「ΔIp2」は正常時における「ΔIp1」よりも小さくなる(ΔIp2<ΔIp1)。このような場合、前記図10のステップ510が否定判別され、素子低温異常である旨が判定される。また、図11(c)に示す素子高温異常時には素子抵抗が小さく、抵抗支配域における特性線の傾きが大きい。従って、「ΔIp3」は正常時における「ΔIp1」よりも大きくなる(ΔIp3>ΔIp1)。このような場合、前記図10のステップ511が否定判別され、素子高温異常である旨が判定される。
以上第2実施例によれば、エンジン1への燃料供給量を増量させ(図10のステップ505)、その燃料増量時において、酸素センサ26の出力値(限界電流)が所定範囲内で変化したか否かに応じて同センサ26の異常を診断するようにした(図10のステップ510〜513)。これにより、燃料増量による空燃比のリッチ化(酸素濃度の低下)がセンサ出力に正常に反映されたか否かが判定され、センサ異常を精度良く且つ容易に診断することができる。また、本実施例では、異常診断時の異常判定値に範囲を設けたため、素子低温異常と素子高温異常とを判別することができる。
(第3実施例)
次に、第3実施例を説明する。上記第1及び第2実施例では、ヒータ33をオープン制御していたが、本第3実施例では、酸素センサ26のヒータ33を素子温フィードバック制御する。なお、本実施例では、マイクロコンピュータ48のCPU48aにより素子抵抗検出手段、ヒータ供給電力制御手段及びセンサ異常診断手段が構成されている。
図12は本実施例におけるヒータ制御のタイムチャートであり、同図には、エンジン始動に伴うヒータ33への通電開始後、酸素センサ26が十分に活性するまでの動作を示している。本実施例では、ヒータ制御がその目的及び制御方法の違いから図12のI〜IVの制御に分けられており、それぞれを順に説明する。なお、I〜IIIの制御は、酸素センサ26の活性前のヒータ制御を示し、IVの制御は酸素センサ26の活性後のヒータ制御を示す。
先ずエンジン始動直後におけるIの制御では、100%デューティのヒータ電圧がヒータ33に印加される(以下、これを全導通制御と呼ぶ)。つまり、ヒータ33及びセンサ素子(センサ本体32)の冷間時には短時間でヒータ33を加熱すべく、最大電力がヒータ33に供給される。
II、IIIの制御では、ヒータ温を所定の目標ヒータ温(例えば、ヒータ上限温度である1200℃)に保持するよう、ヒータ33への供給電力が制御される(以下、これを電力制御と呼ぶ)。つまり、素子温が活性化温度(700℃)にあればヒータ温は供給電力から一義的に決まるため、ヒータ33を一定の温度に保持するには所定電力を供給し続ければよい。しかしながら素子温が低い時には、ヒータ温を一定に保持するために必要な供給電力は素子温に応じて変動する。一般に、素子温が低いほど大きな供給電力が必要になる。そこで、上記電力制御では、素子抵抗(素子温と素子抵抗とは図5に示す関係にある)に応じて供給電力が制御される。
但し、電力制御の開始当初は、素子抵抗が非常に大きく検出可能な最大値(例えば、600Ω)を越える。そのため、素子抵抗の検出不可域ではヒータ33への供給電力は一定電力(例えば、60W)に保持される(IIの制御)。そして、素子温が上昇し素子抵抗が600Ω以下になると、以降、素子抵抗に応じた電力がヒータ33に供給される(IIIの制御)。
また、IVの制御では、素子の活性状態を維持すべく、素子抵抗30Ω(素子温700℃相当)になるように、ヒータ33への供給電力がフィードバック制御される(以下、素子温フィードバック制御と呼ぶ)。
図13に従いヒータ制御ルーチンを説明する。図13において、CPU48aは、ステップ601で素子温フィードバック制御の実行条件が成立したか否かを判別する。この実行条件は、酸素センサ26の素子抵抗が30Ω以下であれば成立する。また、CPU48aは、ステップ602で電力制御実行条件が成立したか否かを判別する。この電力制御実行条件としては、酸素センサ26(センサ本体32及びヒータ33)が冷間状態にあるか否かに応じて2通りの条件が設定されており、酸素センサ26が冷間状態であれば全導通制御(図12のIの制御)を開始してから所定時間が経過した時に条件が成立し、冷間状態でなければヒータ抵抗値が目標ヒータ抵抗値以上になった時に成立する。このように酸素センサ26の冷間状態に応じて全導通制御を実行することによりエンジン再始動時においてヒータ温の過上昇が防止される。
従って、ヒータ制御の開始当初においてステップ601,602が共に否定判別されれば、CPU48aはステップ603に進み、ヒータ33の全導通制御を実行する(Iの制御)。即ち100%デューティのヒータ電圧をヒータ33に印加する。
また、ステップ602の電力制御実行条件が成立すると、CPU48aはステップ604に進み、電力制御を実行する(II,IIIの制御)。この場合、前述したように素子抵抗が検出不可域(素子抵抗>600Ω)にあれば供給電力が固定値にて制御され(IIの制御)、素子抵抗が検出可能になるとヒータ温を目標ヒータ温に保持するよう、素子抵抗に応じてヒータ33への供給電力が制御される(IIIの制御)。
その後、ステップ601の素子温フィードバック制御実行条件が成立すると、CPU48aは、ステップ605で素子温フィードバック制御を実行する(IVの制御)。このとき、CPU48aは、次の(1)〜(3)式に基づきヒータ電圧の制御デューティDUTYを演算する。
DUTY=DUTY.I+GP+GI ・・・(1)
GP=KP・(Zdc−ZdcT) ・・・(2)
GI=GI+KI・(Zdc−ZdcT) ・・・(3)
但し、「DUTY.I」は制御デューティDUTYの初期値、「ZdcT」は制御目標値である(本実施例では、DUTY.I=20%、ZdcT=30Ω)。また、「GP」は比例項、「GI」は積分項、「KP」は比例定数、「KI」は積分定数を表す(本実施例では、KP=4.2%、KI=0.2%)。なお、これらの数値は実験的に求められるものであり、酸素センサ26の仕様に応じて変更される。
図14は、CPU48aにより例えば128ms毎に実行される処理データ演算ルーチンを示す。図14において、CPU48aは、ステップ701で図2の電流検出抵抗50により検出されたヒータ電流Ihを読み込み、続くステップ702でヒータ電圧Vhを読み込む。また、CPU48aは、ステップ703でヒータ電圧Vhをヒータ電流Ihで除算してヒータ抵抗RHを算出し(RH=Vh/Ih)、続くステップ704でヒータ電圧Vhとヒータ電流Ihとを乗算してヒータ供給電力WHを算出する(WH=Vh・Ih)。さらに、CPU48aは、ステップ705で1/64なまし演算によりヒータ供給電力WHのなまし値(以下、電力平均値WHAVという)を算出する{WHAV=(63・WHAVi−1+WH)/64}。
図15のフローチャートは、CPU48aにより例えば1秒周期で実行されるセンサ異常診断ルーチンを示す。この異常診断ルーチンでは、素子温フィードバック制御の実行時において必要とされたヒータ供給電力WHに応じてセンサ異常が判定される。つまり、センサ異常時(例えばセンサの経時劣化)には、素子温を目標値(例えば、700℃)に保持するために必要となるヒータ供給電力WHが増大し、正常時のそれと容易に比較判定することができる。以下、図15に従って異常診断手順を説明する。
図15において、CPU48aは、ステップ801で素子温フィードバック開始後に所定時間KSTFB(例えば、10秒)が経過したか否かを判別し、続くステップ802で前回の異常診断後に所定時間KAFST(例えば、100秒)が経過したか否かを判別する。さらに、CPU48aは、ステップ803で定常運転状態(例えば、アイドル状態であること)が所定時間KSMST(例えば、5秒)以上継続されたか否かを判別する。そして、ステップ801〜803のいずれかが否定判別されれば、CPU48aはそのまま処理を終了し、ステップ801〜803が全て肯定判別されればステップ804に進む。
CPU48aは、ステップ804で電力平均値WHAVが所定のヒータ電力判定値KWHAV以上であるか否か(WHAV≧KWHAVか否か)を判別する。このとき、WHAV<KWHAVであれば、CPU48aはセンサ異常無しとみなしてステップ805に進み、異常判定フラグXELERを「0」にクリアして処理を終了する。
また、WHAV≧KWHAVであれば、CPU48aはステップ806に進み、センサ以外の異常が検出されているか否かを判別し、他の異常が無ければステップ807に進む。そして、CPU48aは、ステップ807で異常判定フラグXELERが既に「1」にセットされているか否かを判別し、XELER=0であれば、ステップ808で異常判定フラグXELERに「1」をセットする。また、XELER=1であれば、CPU48aはステップ809に進み、ダイアグ処理として異常発生を表す警告灯29を点灯する。つまり、ステップ804〜809では、異常発生(WHAV≧KWHAV)の旨が2回続けて判別された場合に、ダイアグ処理が実施される。
以上第3実施例では、酸素センサ26の素子抵抗(素子温)が目標素子抵抗30Ω(素子温700℃相当)になるようヒータ33への供給電力をフィードバック制御し(図13の素子温フィードバック制御)、その際にヒータ供給電力が所定の異常判定値を越えるか否かにより酸素センサ26の異常を診断するようにした(図15のステップ804〜809)。要するに、素子温フィードバック制御が実行される場合、劣化等のセンサ異常時であっても素子抵抗(素子温)は所望の活性領域に制御され、センサ異常時には過多量のヒータ供給電力が必要となる。このことから、センサ異常を精度良く且つ容易に診断することができる。また、本実施例では、異常診断を定常運転時に限定したため(図15のステップ803)、排気温によるヒータ供給電力への影響を排除し、適正な診断結果を得ることができる。
(第4実施例)
次に、第4実施例を説明する。第4実施例は、第3実施例の一部を変更して異常診断処理を実行するものであり、図16は第4実施例におけるセンサ異常診断ルーチンを示す。
図16のルーチンでは、前述の図15のステップ803に代えてステップ820の処理を実行する。つまり、ステップ820では、エンジン運転状態に応じたヒータ電力判定値KWHAVが設定される。ここで、ヒータ電力判定値KWHAVは図17に示すマップにて設定されるものであり、その時のエンジン回転数NE及びエンジン負荷(吸気負圧Pm又は吸入空気量GN)に応じて設定される(例えば、図のKWHAV1,KWHAV2)。この場合、ヒータ電力判定値KWHAVは高回転域であるほど又は高負荷域であるほど低く、低回転域であるほど又は低負荷域であるほど高くなるように設定される。以上第4実施例によれば、エンジン運転状態に応じた最適な異常診断を実施することができる。
(第5実施例)
次に、第5実施例を説明する。なお、本実施例では、マイクロコンピュータ48のCPU48aにより電力積算値算出手段、ヒータ初期抵抗値検出手段及びセンサ異常診断手段が構成されている。
図18は第5実施例におけるヒータ制御のタイムチャートであり、同図には、エンジン始動に伴うヒータ33への通電開始後、酸素センサ26が十分に活性するまでの動作を示す。なお、本実施例では、ヒータ制御がその目的及び制御方法の違いから図18のI〜IIIの制御に分けられており(Iは全導通制御、IIは電力制御、IIIは素子温フィードバック制御)、それぞれを順に説明する。
先ずエンジン始動直後における全導通制御(Iの制御)では、100%デューティのヒータ電圧がヒータ33に印加される。つまり、ヒータ33及びセンサ素子の冷間時には短時間でヒータ33を加熱すべく、最大電力がヒータ33に供給される。電力制御(IIの制御)では、ヒータ温を所定の目標ヒータ温(例えば、ヒータ上限温度である1200℃)に保持するよう、素子抵抗Zdcに応じてヒータ33への供給電力が制御される。また、素子温フィードバック制御(IIIの制御)では、素子の活性状態を維持すべく、素子抵抗30Ω(素子温700℃相当)になるように、ヒータ33への供給電力がフィードバック制御される。なお、素子温フィードバック制御時には、ヒータ26への供給電力が上限値を越えると、ヒータ33への供給電力が制限されるようになっている。
図19及び図20のフローチャートは、CPU48aにより例えば128ms毎に実行されるヒータ制御ルーチンを示す。以下、フローチャートに従いヒータ制御及び異常診断処理を説明する。
図19において、CPU48aは、ステップ901でイグニションスイッチ28がオン操作されているか否か(電源ONか否か)を判別し、電源OFFであればそのまま本ルーチンを終了し、電源ONであればステップ902に進む。また、CPU48aは、ステップ902でイニシャル終了済フラグXINITが「0」か否かを判断し(このイニシャル終了済フラグXINITは電源ONの際に「0」に初期化される)、XINIT=0であればステップ903に進み、XINIT=1であればステップ908に進む。
ステップ903では、CPU48aは、ヒータ電流Ihとヒータ電圧Vhとから求められたヒータ抵抗RH(=Vh/Ih)を初期ヒータ抵抗RHINTとして記憶する。また、CPU48aは、ステップ904で図21に示す関係に従い、初期ヒータ抵抗RHINTに基づき目標電力積算値WADTGを設定する。さらに、CPU48aは、ステップ905で初期ヒータ抵抗RHINTが酸素センサ26の半活性状態を判定するための判定値KRHINT以下か否かを判別し、RHINT≦KRHINTであれば、異常診断許可フラグXWADERに「1」をセットする。
次に、CPU48aはステップ907に進み、イニシャル終了済フラグXINITを「1」にセットしてからステップ908に進む。つまり、電源ON後に一度目標電力積算値WADTGが求められると、それ以降はステップ902で「NO」と判別され、直接ステップ908に進むことになる。
その後、CPU48aは、ステップ908で素子温フィードバック実施フラグXEFBが「1」か否かを判別する。ヒータ制御開始当初(図18の時間t1以前)はXEFB=0のためステップ908が否定判別され、CPU48aはステップ909に進む。ステップ909では、CPU48aは、酸素センサ26の素子抵抗Zdcが素子温フィードバック実施温度に対応する値30Ω(素子温700℃相当)以下か否かを判別する。そして、CPU48aは、素子抵抗Zdcが30Ω以下の場合はステップ915に進み、素子抵抗Zdcが30Ω以下でない場合はステップ910に進む。
CPU48aは、ステップ910でその時のヒータ抵抗RHがヒータ抵抗学習値RHADP以上であるか否かを判別する。ヒータ抵抗学習値RHADPとは、電力制御時の目標ヒータ温(1200℃)でのヒータ抵抗値を製品毎や経時変化によるバラツキを解消できるよう学習した値である。また、ステップ911では、CPU48aは、電力積算値WADDが目標電力積算値WADTG(ステップ904の数値)以上であるか否かを判別する。電力積算値WADDとは、図示しない演算ルーチンで求められるものであって、例えば128ms毎に検出されるヒータ供給電力WH(=Vh・Ih)を逐次積算した数値である(WADD=WADDi−1+WH)。
この場合、ステップ910,911のいずれかが否定判別されると(RH<RHADP、又はWADD<WADTG)、CPU48aはステップ912に進んで全導通制御を実行する(Iの制御)。即ち図18の時間t1以前では、CPU48aは、図20のステップ908→909→910(→911)→912の順に進み、100%デューティのヒータ電圧をヒータ33に印加する。
また、ステップ910,911が共に肯定判別されると(RH≧RHADP、且つWADD≧WADTG)、CPU48aはステップ920に進み、電力制御を実行する(IIの制御)。即ち図18の時間t1〜t2では、CPU48aは、図20のステップ908→909→910→911→920の順に進み、ヒータ温を目標ヒータ温に保持するよう、素子抵抗に応じてヒータ33への供給電力を制御する。このステップ920では、電力制御実行フラグXEWATに「1」がセットされる。
また、図18の時間t2になると、前記ステップ909が肯定判別され、CPU48aはステップ915に進んで電力制御実施フラグXEWATが「1」であるか否かを判別する。そして、XEWAT=1であれば、CPU48aはステップ930に進んでヒータ抵抗の学習処理を実行し、その後、ステップ950に進む。また、XEWAT=0であれば、CPU48aはそのままステップ950に進む。なお、ステップ930のヒータ抵抗学習処理では、その時点でのヒータ抵抗RHがヒータ抵抗学習値RHADP+α%(例えば、α=2%)を越える数値であるか否かが判別され、越える数値であればヒータ抵抗学習値RHADPがその時のヒータ抵抗RHに更新される。
その後、CPU48aは、ステップ940で後述するヒータ異常判定ルーチンを実行し、さらにステップ950で素子温フィードバック制御を実行する。この場合、CPU48aは、電力制御実施フラグXEWATを「0」にリセットすると共に素子温フィードバック実施フラグXEFBに「1」をセットする。また、CPU48aは、次の(イ)〜(ハ)の3態様に分けてヒータ制御回路46の制御デューティDUTYを設定する。
(イ)電源ONからの経過時間が所定時間(例えば、24.5秒)以上の場合、次の(4)〜(7)式により制御デューティDUTYを計算する。但し、「ZdcT」は制御目標値、「GP」は比例項、「GI」は積分項、「GD」は微分項GDを表し、「KP」は比例定数、「KI」は積分定数、「KD」は微分定数を表す。
DUTY=GP+GI/16+GD ・・・(4)
GP=KP・(Zdc−ZdcT) ・・・(5)
GI=GIi−1+KI・(Zdc−ZdcT) ・・・(6)
GD=KD・(Zdci−Zdci−1) ・・・(7)
(ロ)電源ONからの経過時間が所定時間(例えば、24.5秒)未満であり、且つ空燃比>12の場合、比例項GPと積分項GIとを用いて、次の(8)式により制御デューティDUTYを計算する。
DUTY=GP+GI/16+GD ・・・(8)
(ハ)電源ONからの経過時間が所定時間(例えば、24.5秒)未満であり、且つ空燃比≦12の場合、次の(9)式により制御デューティDUTYを計算する。即ち、この場合(空燃比≦12の場合)には、PIDによる素子温フィードバック制御が困難であり、素子温フィードバック制御ではなくヒータ抵抗フィードバック制御が実行される。但し、「KPA」は定数、「RHG」は目標ヒータ抵抗(2.1Ω=1020℃相当)である。
DUTY=HDUTYi−1+KPA・(RHG−RH) ・・・(9)
次に、前記図20のステップ940におけるヒータ異常診断ルーチンを図22に従い説明する。
図22において、CPU48aは、ステップ941で異常診断許可フラグXWADERが「1」であるか否かを判別し、XWADER=0であれば、そのまま本ルーチンを終了する。また、XWADER=1であれば、CPU48aはステップ942に進み、電力積算値WADDが所定の異常判定値KWADER以上であるか否か(WADD≧KWADERか否か)を判別する。WADD<KWADERであれば、CPU48aはステップ943に進み、異常判定フラグXELERを「0」にクリアする。
また、WADD≧KWADERであれば、CPU48aはステップ944に進み、異常判定フラグXELERが既に「1」であるか否かを判別する。この場合、ステップ944〜946では、2回続けて異常判定がなされるとダイアグ処理が実施される(警告灯29が点灯する)。
本第5実施例によれば、ヒータ通電の開始当初からのヒータ供給電力の積算値(電力積算値WADD)を算出し、該電力積算値WADDが所定の異常判定値KWADERを越えるか否かにより酸素センサ26の異常を診断するようにした(図22のステップ942〜946)。この場合、ヒータ供給電力の積算値により異常診断を行うことによって、その診断データの精度が増し、正確な異常診断が可能となる。
また、本実施例では、ヒータ通電の開始当初におけるヒータの初期抵抗値を検出し(図19のステップ903)、ヒータの初期抵抗値が、酸素センサ26の冷間状態を判定する所定域にある場合のみ(図19のステップ905がYESの場合のみ)、センサ異常診断を許可するようにした(図19の906のフラグ操作)。つまり、例えば機関の暖機再始動時においてヒータ通電が開始される場合には、ヒータ供給電力の積算値が比較的小さく、当該積算値によりセンサ異常を診断することは診断精度上、望ましくない。そこで、異常診断をセンサの冷間時に限定し、常に良好な異常診断が実施できるようにしている。
請求項1に記載の発明によれば、燃料供給量の増量又は減量時において、酸素センサの出力値の変化が、燃料供給量の増量又は減量による実際の空燃比の変化相当量にて設定される所定範囲から外れているときに酸素センサが異常であると診断することにより、センサ異常を精度良く且つ容易に診断することができる。
請求項2に記載の発明によれば、酸素センサの活性状態、又は当然活性化しているはずの状態でセンサ異常が診断され、より正確な異常診断が可能となる。
26…酸素センサ(限界電流式酸素センサ)、33…ヒータ、34…酸素濃度検出素子としての固体電解質層、48a…ヒータ制御手段,素子抵抗検出手段,センサ異常診断手段,ヒータ供給電力推定手段,燃料増減手段,ヒータ供給電力制御手段,電力積算値算出手段,ヒータ初期抵抗値検出手段としてのCPU。