(57)【特許請求の範囲】
【請求項１】
内燃機関のクランク軸の回転に応じて、圧縮上死点の手前に位置する複数の特定クランク角と、前記複数の特定クランク角以外のクランク角とにおいてパルス信号を発生し、前記複数の特定クランク角以外のクランク角で等間隔のパルス信号を発生し、前記複数の特定クランク角のうち、１つの特定クランク角で前記等間隔のパルス信号と異なる間隔のパルス信号（以下「不等間隔パルス信号」という）を１個発生し、残りの特定クランク角で前記不等間隔パルス信号を２個発生するパルス信号発生手段と、
前記パルス信号発生手段から出力されるパルス信号をカウントすると共に前記不等間隔パルス信号を検出し前記不等間隔パルス信号が１個発生しているか又は２個発生しているかを判別してそれらを基準にして前記パルス信号のカウント値からクランク角を判定するクランク角判定手段と、
前記クランク軸の回転変動を判定する回転変動判定手段と、
最初の気筒判別が完了した後で、前記回転変動判定手段で所定以上の回転変動と判定される期間に、前記複数の不等間隔パルス信号のうちの一部の不等間隔パルス信号の検出を許容し、他の不等間隔パルス信号の検出を禁止することで、前記不等間隔パルス信号が１個又は２個発生しているかの判別を禁止する誤判定防止手段とを備え、
前記クランク角判定手段は、前記回転変動判定手段で所定以上の回転変動と判定される期間において、前記パルス信号発生手段から出力されるパルス信号をカウントするとともに、前記誤判定防止手段により許容された前記一部の不等間隔パルス信号と前記パルス信号のカウント値とからクランク角を判定することを特徴とする内燃機関のクランク角判定装置。
【請求項２】
前記クランク角判定手段は、前記一部の不等間隔パルス信号を検出する毎に、前記パルス信号発生手段から出力されるパルス信号のカウント値を、そのカウント値に応じて特定値に補正することを特徴とする請求項１に記載の内燃機関のクランク角判定装置。
【請求項３】
前記回転変動判定手段は、内燃機関のクランキング開始から所定期間内である時に前記所定以上の回転変動と判定することを特徴とする請求項１又は２に記載の内燃機関のクランク角判定装置。
【請求項４】
前記回転変動判定手段は、機関回転数を検出する回転数検出手段を備え、前記所定期間は、内燃機関のクランキング開始から機関回転数が始動完了回転数に上昇するまでの期間であることを特徴とする請求項３に記載の内燃機関のクランク角判定装置。
【請求項５】
前記回転変動判定手段は、内燃機関の冷却水温を検出する水温検出手段を備え、前記所定期間内で且つ冷却水温が所定温度以下のときに前記所定以上の回転変動と判定することを特徴とする請求項３又は４に記載の内燃機関のクランク角判定装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関のクランク軸の回転に応じて発生するパルス信号のパルス間隔の変化を判別してクランク角を判定する内燃機関のクランク角判定装置に関するものである。
【０００２】
【従来の技術】
従来のクランク角判定装置は、例えば特開平７−１０９９４８号公報に示すように、エンジンのクランク軸に固定したシグナルロータ外周の歯部にクランクセンサを対向させ、シグナルロータ外周の複数箇所に欠歯部を形成し、それ以外の領域の歯部の間隔を等ピッチとすることによって、特定のクランク角（欠歯部の位置）以外の領域でクランクセンサから等間隔のパルス信号を出力すると共に、特定のクランク角（欠歯部の位置）でパルス間隔を長くし、この長いパルス間隔のパルス信号（以下「不等間隔パルス信号」という）を検出し、それを基準にしてパルス信号のカウント値からクランク角を判定するようにしている。
【０００３】
【発明が解決しようとする課題】
しかし、パルス間隔はエンジンの回転数によっても変化するため、エンジンの回転変動が大きいと、等間隔パルス信号の間隔と不等間隔パルス信号の間隔との差が少なくなる場合があり、それによって、両信号を誤認して、クランク角（気筒判別）を誤判定するおそれがある。クランク角を誤判定すると、燃料噴射時期や点火時期がずれてしまい、エンジン回転数の急激な低下やエンジンストールを引き起こす場合がある。
【０００４】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、エンジンの回転変動が大きい時でも、クランク角判定精度を確保できる内燃機関のクランク角判定装置を提供することにある。
【０００５】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項１の内燃機関のクランク角判定装置によれば、パルス信号発生手段は、内燃機関のクランク軸の回転に応じて、圧縮上死点の手前に位置する複数の特定クランク角と、該複数の特定クランク角以外のクランク角とにおいてパルス信号を発生し、複数の特定クランク角以外のクランク角で等間隔のパルス信号を発生し、複数の特定クランク角のうち、１つの特定クランク角で等間隔のパルス信号と異なる間隔のパルス信号（以下「不等間隔パルス信号」という）を１個発生し、残りの特定クランク角で不等間隔パルス信号を２個発生し、クランク角判定手段は、前記パルス信号発生手段から出力されるパルス信号をカウントすると共に前記不等間隔パルス信号を検出し前記不等間隔パルス信号が１個発生しているか又は２個発生しているかを判別してそれを基準にして前記パルス信号のカウント値からクランク角を判定する。この際、クランク軸の回転変動を回転変動判定手段によって判定し、それによって、最初の気筒判別が完了した後で、所定以上の回転変動と判定される期間には、前記複数の不等間隔パルス信号のうちの一部の不等間隔パルス信号の検出を許容し、他の間隔パルス信号の検出を誤判定防止手段によって禁止し、不等間隔パルス信号が１個又は２個発生しているかの判別を禁止する。そして、クランク角判定手段は、回転変動判定手段で所定以上の回転変動と判定される期間において、パルス信号発生手段から出力されるパルス信号をカウントするとともに、誤判定防止手段により許容された前記一部の不等間隔パルス信号とパルス信号のカウント値とからクランク角を判定する。
【０００６】
このようにすれば、従来システムでクランク角を誤判定しやすい回転変動が大きい期間に、誤判定する可能性の少ない一部の不等間隔パルス信号のみを検出して、特定クランク角（複数の特定クランク角のいずれかは不明）を検出することができる。これにより、回転変動が大きい期間でも、誤った特定クランク角情報を排除して、比較的正確な特定クランク角情報のみを用いてクランク角を判定することができ、従来よりもクランク角判定精度を向上させることができて、燃料噴射時期や点火時期の制御精度を向上することができる。
【０００７】
この場合、請求項２のように、前記一部の不等間隔パルス信号を検出する毎に、パルス信号発生手段から出力されるパルス信号のカウント値を、そのカウント値に応じて特定値に補正すると良い。このようにすれば、回転変動が大きい期間においても、パルス信号発生手段の出力信号にノイズが重畳して、そのノイズでパルス信号のカウント値が増加したとしても、一部の不等間隔パルス信号を検出する毎に、ノイズの影響を排除してパルス信号のカウント値を正確な値（特定値）に復帰させることができ、ノイズの影響による燃料噴射時期、点火時期のずれも防止できる。
【０００８】
また、所定以上の回転変動であるか否かの判定は、機関回転数を検出して行っても良いが、一般に、不等間隔パルス信号と等間隔パルス信号とを誤判別するような回転変動は、機関回転数が低い始動時に発生するため、請求項３のように、内燃機関のクランキング開始から所定期間内である時に所定以上の回転変動と判定するようにしても良い。このようにすれば、例えばスタータスイッチの信号から極めて簡単に所定以上の回転変動の期間を判定することができる。
【０００９】
或は、請求項４のように、所定以上の回転変動と判定する“所定期間”を、内燃機関のクランキング開始から機関回転数が始動完了回転数に上昇するまでの期間に設定しても良い。始動が完了すれば、クランク軸の回転が比較的安定し、不等間隔パルス信号を誤判別するような大きな回転変動は発生しにくくなるため、始動完了までの期間を所定以上の回転変動の期間とすることで、クランク角の誤判定防止処理期間の長さを適正化できる。
【００１０】
ところで、冷却水温が低くなるほど、内燃機関のフリクションが大きくなってクランク軸の回転が不安定になるため、冷却水温が低くなるほど、クランク軸の回転変動が大きくなる傾向があるが、冷却水温が高い時には、内燃機関のフリクションが小さくなるため、始動時でも、不等間隔パルス信号を誤判別するような大きな回転変動は生じない。
【００１１】
この点を考慮して、請求項５のように、上記請求項３又は４で所定以上の回転変動と判定する所定期間内で且つ冷却水温が所定温度以下のときに所定以上の回転変動と判定するようにしても良い。このようにすれば、始動時で且つ冷却水温が低い時のみ前述したクランク角の誤判定防止処理が実施され、始動時でも、不等間隔パルス信号を誤判別するような大きな回転変動が生じない冷却水温の時には、クランク角の誤判定防止処理が実施されないので、不必要な誤判定防止処理を行わずに済み、始動時のクランク角判定精度を更に向上することができる。
【００１２】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。この実施形態では、例えば４気筒のエンジン（図示せず）を制御対象とする。４気筒エンジンは、＃１気筒と＃４気筒、＃２気筒と＃３気筒とが、それぞれのピストンが同じ位相で運動する気筒グループを構成し、例えば、気筒グループの一方の気筒が爆発行程にあるときに他方の気筒が吸気行程にある。
【００１３】
次に、この４気筒エンジンのクランク角判定や気筒判別に用いられるクランクセンサ１１（パルス信号発生手段）とカムセンサ１２の構成について説明する。クランクセンサ１１は、図３に示すように、クランク軸１３に嵌着されたクランク側シグナルロータ１４の外周に対向し、その外周に例えば１０℃Ａのピッチで等間隔に形成された歯１５を検出する例えば電磁ピックアップ式センサである。クランク側シグナルロータ１４の外周３箇所に、歯１５が２個ずつ欠損した欠歯部１６〜１８が形成されており、欠歯部１６の位置は、＃１気筒の圧縮上死点前５℃Ａ（以下「＃１ＢＴＤＣ５℃Ａ」と記載、他の気筒についても同様）又は＃４ＢＴＤＣ５℃Ａにてクランクセンサ１１と対向する歯１５ａよりも、クランク軸１３の回転方向（矢印方向）に４，５歯分離れたところに位置する。また、欠歯部１７，１８は、＃２ＢＴＤＣ５℃Ａ又は＃３ＢＴＤＣ５℃Ａにてクランクセンサ１１と対向する歯１５ｂよりも、クランク軸１３の回転方向に４，５歯分、１，２歯分離れたところに連続して位置する。
【００１４】
このクランクセンサ１１は、クランク軸１３の回転に応じて、図５に示すように、特定クランク角（欠歯部１６〜１８の位置）以外のクランク角で、等間隔のパルス信号（クランク信号）を出力し、特定クランク角（欠歯部１６〜１８の位置）でパルス間隔が３倍程度長くなるパルス信号（不等間隔のクランク信号）を出力する。
【００１５】
一方、カムセンサ１２は、図４に示すように、カム軸１９に嵌着されたカム側シグナルロータ２０の外周に対向し、その外周の所定位置に形成された２個の歯２１ａ，２１ｂを検出する例えば電磁ピックアップ式センサである。この場合、一方の歯２１ａがカムセンサ１２と対向する位置は、＃１ＢＴＤＣ３０℃Ａであり、他方の歯２１ｂがカムセンサ１２と対向する位置は、＃３ＢＴＤＣ３０℃Ａである。このカムセンサ１２から出力されるされるカム信号（図５参照）とクランク信号のカウント値とから気筒判別ができるようになっている。尚、クランクセンサ１１、カムセンサ１２は、電磁ピックアップ式センサに限定されるものではなく、ホールセンサやＭＲＥセンサであっても良い。
【００１６】
これらクランクセンサ１１のクランク信号とカムセンサ１２のカム信号は、図示しないエンジン電子制御回路（以下「ＥＣＵ」という）に入力される。このＥＣＵは、マイクロコンピュータを主体として構成され、内蔵されたＲＯＭ（記憶媒体）に記憶されたエンジン制御プログラムに従い、上記クランク信号、カム信号に基づいて後述するクランク角判定、気筒判別、エンジン回転数の演算等を行うと共に、これらの演算結果と各種センサ等から出力される各運転状態情報に基づいて最適な点火時期と燃料噴射量を演算し、点火動作と燃料噴射動作を制御する。
【００１７】
この場合、クランク角判定は、図１及び図２に示すプログラムによって実行される。本プログラムは、イグニッションスイッチ（図示せず）のオン後にクランクセンサ１１からクランク信号が入力される毎に実行され、特許請求の範囲でいうクランク角判定手段としての役割を果たす。本プログラムが起動されると、まず、ステップ１０１で、クランク信号のパルス間隔Ｔi を算出し、次のステップ１０２で、イグニッションスイッチのオン後、最初の気筒判別が完了しているか否かを判定する。
【００１８】
もし、最初の気筒判別が完了していなければ、次のようにして最初の気筒判別を行う（ステップ１０３〜ステップ１１１）。まず、ステップ１０３で、いずれかの欠歯部を検出済みか否か（欠歯部検出済みフラグＸＧＡＰ＝１か否か）を判定し、欠歯部未検出であれば、ステップ１０４に進み、最初の欠歯部１６又は１７を検出するために、次式を満たすか否かを判定する。
（Ｔi-1 ／Ｔi ）＜判定値Ｋ1     （但しＫ1 ＝例えば０．５〜０．７）
【００１９】
ここで、Ｔi-1 は、パルス間隔Ｔi の直前のパルス間隔である。欠歯部１６又は１７のパルス間隔は、通常のクランク信号のパルス間隔の約３倍程度となる（回転変動が少ない場合）。このステップ１０４で、（Ｔi-1 ／Ｔi ）≧Ｋ1 の場合には、欠歯部未検出と判定され、ステップ１０５に進み、欠歯部検出済みフラグＸＧＡＰを欠歯部未検出を意味する「０」にリセットして、本プログラムを終了する。
【００２０】
その後、欠歯部１６又は１７がクランクセンサ１１に到達すると、ステップ１０４で、（Ｔi-1 ／Ｔi ）＜判定値Ｋ1 と判定され、欠歯部１６又は１７が検出される。この場合は、ステップ１０６に進み、欠歯部検出済みフラグＸＧＡＰを欠歯部検出済みを意味する「１」にセットして、本プログラムを終了する。
【００２１】
その後、本プログラムが起動された時には、上記ステップ１０３で、ＸＧＡＰ＝１（欠歯部検出済み）と判定されて、ステップ１０７に進み、上記ステップ１０４で検出した欠歯部１６又は１７の次に検出された歯部が欠歯部１８であるか否かを判定するために、次式を満たすか否かを判定することで、欠歯部１６と欠歯部１７とを判別する。
（Ｔi-1 ／Ｔi ）＜判定値Ｋ2     （但しＫ2 ＝例えば１．５〜２）
ここで、Ｔi-1 は、直前のパルス間隔、つまり、欠歯部１６又は１７のパルス間隔である。もし、今回のパルス間隔Ｔi が欠歯部１８であれば、パルス間隔Ｔi が直前の欠歯部１６又は１７のパルス間隔Ｔi-1 とほぼ同等の長さであり、欠歯部１８でなければ、パルス間隔Ｔi は欠歯部１６又は１７のパルス間隔Ｔi-1 のほぼ１／３程度である（回転変動が少ない場合）。
【００２２】
従って、このステップ１０７で、（Ｔi-1 ／Ｔi ）＜Ｋ2 の場合には、連続した欠歯部１８の検出と判断される。この場合には、今回検出したクランク信号の発生位置を欠歯部１８の直後の歯１５ｂ（＃３ＢＴＤＣ５℃Ａ又は＃２ＢＴＤＣ５℃Ａ）と判断して、ステップ１０８に進み、クランク信号カウンタＣＮＥのカウント値を「０」にリセットする。＃３ＢＴＤＣ５℃Ａと＃２ＢＴＤＣ５℃Ａとの判別は、カム信号の有無によって行われる。尚、このクランク信号カウンタＣＮＥは、図５に示すように、クランク信号が入力される毎（後述する図２のステップ１１２を通過する毎）にカウントアップし、そのカウント値が「２９」を越えると、「０」にリセットされる。
【００２３】
一方、ステップ１０７で、（Ｔi-1 ／Ｔi ）≧Ｋ2 の場合には、連続した欠歯部１８が検出されない（通常のクランク信号である）と判断される。この場合には、今回検出したクランク信号の発生位置を欠歯部１６から１歯分離れた歯１５ｃ（＃１ＢＴＤＣ２５℃Ａ又は＃４ＢＴＤＣ２５℃Ａ）と判断して、ステップ１０９に進んで、クランク信号カウンタＣＮＥのカウント値を「１４」にセットする。尚、＃１ＢＴＤＣ２５℃Ａと＃４ＢＴＤＣ２５℃Ａとの判別は、カム信号の有無によって行われる。
【００２４】
このようにしてステップ１０８又は１０９で、連続した欠歯部１８の検出の有無に応じてクランク信号カウンタＣＮＥのカウント値を「０」又は「１４」にセットした後、ステップ１１０に進み、欠歯部検出済みフラグＸＧＡＰを「０」にリセットし、次のステップ１１１で、最初の気筒判別完了とする。以上説明した最初の気筒判別処理（ステップ１０３〜１１１）は、クランキング開始直後のスタータの駆動力のみでエンジンが回転している状態の時に実行されるため、欠歯部１６〜１８のパルス間隔と通常のクランク信号のパルス間隔とを誤判別させるような大きな回転変動は発生しない。
【００２５】
以上のようにして最初の気筒判別を完了すると、その後、本プログラムを起動する毎（クランク信号が入力される毎）に、ステップ１０２から図２のステップ１１２に進み、クランク信号カウンタＣＮＥをカウントアップする。このクランク信号カウンタＣＮＥのカウント値とカム信号に基づいてクランク角判定と気筒判別を行って、燃料噴射時期や点火時期が制御される。
【００２６】
そして、次のステップ１１３で、欠歯部検出済みフラグＸＧＡＰ＝１（欠歯部検出済み）か否かを判定し、ＸＧＡＰ＝０（欠歯部未検出）であれば、最初の欠歯部１６又は１７を検出するために、図１のステップ１０４〜１０６と同様に、（Ｔi-1 ／Ｔi ）＜判定値Ｋ1 を満たすか否かを判定し（ステップ１１４）、もし、欠歯部未検出［（Ｔi-1 ／Ｔi ）≧Ｋ1 ］であれば、ＸＧＡＰ＝０にリセットし（ステップ１１５）、その後、最初の欠歯部１６又は１７の検出［（Ｔi-1 ／Ｔi ）＜Ｋ1 ］と判定された時に、ＸＧＡＰ＝１にセットする（ステップ１１６）。
【００２７】
次に、欠歯部１６と欠歯部１７とを判別するために、換言すれば、どちらの気筒グループ（＃１気筒と＃４気筒のグループ、＃２気筒と＃３気筒のグループ）の圧縮ＴＤＣに対応する欠歯部であるのかを判別するために、ステップ１１７に進み、クランク信号カウンタＣＮＥのカウント値が、「２９，０，１」のいずれかであるか否かを判定する。このカウント値が、「２９，０，１」のいずれかであれば、ステップ１１８に進み、今回検出したクランク信号の発生位置を欠歯部１７の直後の歯１５ｄ（＃３ＢＴＤＣ３５℃Ａ又は＃２ＢＴＤＣ３５℃Ａ）と判断し、クランク信号カウンタＣＮＥのカウント値を「２９」にセットする。尚、＃３ＢＴＤＣ３５℃Ａと＃２ＢＴＤＣ３５℃Ａとの判別は、カム信号の有無によって行われる。
【００２８】
これに対し、上記ステップ１１７で、クランク信号カウンタＣＮＥのカウント値が、「２９，０，１」のいずれでもないと判定された場合は、ステップ１１９に進み、クランク信号カウンタＣＮＥのカウント値が、「１３，１４，１５」のいずれかであるか否かを判定する。このカウント値が、「１３，１４，１５」のいずれかであれば、ステップ１２０に進み、今回検出したクランク信号の発生位置を欠歯部１６の直後の歯１５ｅ（＃１ＢＴＤＣ３５℃Ａ又は＃４ＢＴＤＣ３５℃Ａ）と判定し、クランク信号カウンタＣＮＥのカウント値を「１３」にセットする。尚、＃１ＢＴＤＣ３５℃Ａと＃４ＢＴＤＣ３５℃Ａとの判別は、カム信号の有無によって行われる。
【００２９】
ここで、ステップ１１７，１１９で、クランク信号カウンタＣＮＥのカウント値の判定に幅を持たせたのは、クランク信号に重畳したノイズの影響を取り除くためである。つまり、クランク信号に大きなノイズが重畳すると、そのノイズによってクランク信号カウンタＣＮＥのカウント値がカウントアップされてしまうため、欠歯部１６又は１７を検出した時点で、それぞれ対応するカウント値「２９」又は「１３」にセットし直すことで、カウント値を正常値に戻すことができる。この場合、１８０℃Ａ中に、ノイズのカウント数が２回までならば、カウント値を正常値に戻すことができるように設定されている。
【００３０】
尚、上述したステップ１１７，１１９で、いずれも「Ｎｏ」と判定され、クランク信号カウンタＣＮＥのカウント値が、「２９，０，１」、「１３，１４，１５」のいずれでもない場合（例えばノイズのカウント数が３回以上であったり、クランク信号のパルス抜けの場合等）には、ステップ１２１に進み、最初の気筒判別完了を「未完了」にリセットして、最初の気筒判別からやり直す。これらステップ１１７〜１２１の処理は、特許請求の範囲の請求項２に記載したクランク角判定手段として機能する。
【００３１】
以上のようにして最初の欠歯部１６又は１７が検出され、ＸＧＡＰ＝１にセットされると（ステップ１１４，１１５）、その後、本プログラムを起動した時にステップ１１３からステップ１２２に進み、クランク軸１３の回転変動が大きいか否かを判定する。
【００３２】
通常、クランク軸１３の回転変動発生時、その回転変動は、圧縮ＴＤＣに向かうほど回転数が低下するような周期的な回転変動となる（圧縮ＴＤＣの直前は回転抵抗が大きいためである）。このため、圧縮ＴＤＣの手前に位置する欠歯部１６を検出した直後に検出される通常のパルス間隔は、回転変動により長く検出される傾向があり、これが原因で、従来システムでは、回転変動が大きいと、欠歯部１６検出直後の通常のパルス間隔を誤って欠歯部と判定してしまうおそれがある。一方、前記ステップ１１４のように、最初の欠歯部１６又は１７を検出する場合には、欠歯部１６又は１７のパルス間隔が長く検出されても、欠歯部１６又は１７を検出するステップ１１４の判定結果には全く影響がなく、欠歯部１６又は１７を正確に検出することができる。
【００３３】
この点を考慮し、最初の欠歯部１６又は１７の検出後に、次の欠歯部１８の有無を判定する際に、ステップ１２２で、クランク軸１３の回転変動が大きいか否かを判定し、回転変動が大きいと判定される時は、次の欠歯部１８の有無を判定する処理（ステップ１２３〜１２５）を省略する。このステップ１２２の処理が特許請求の範囲でいう回転変動判定手段及び誤判定防止手段としての役割を果たす。このステップ１２２では、回転変動が大きいか否かを次の▲１▼〜▲３▼の条件が全て成立するか否かによって判定する。
▲１▼スタータのオン（エンジンのクランキング中であること）
▲２▼エンジン回転数が始動完了回転数以下であること
▲３▼冷却水温が所定温度以下であること
【００３４】
ここで、始動完了回転数は、エンジンが始動完了（完爆）したと判定できる回転数であり、例えば４００〜８００ｒｐｍの範囲内で設定される。また、所定温度は、エンジンオイルの粘性が大きく低下する極低温度、例えば−２０〜−３０℃の範囲内で設定される。極低温時は、エンジンオイルの粘性低下によりエンジンのフリクションが大きくなるため、クランキング開始後の混合気の燃焼が比較的不安定な期間（乱爆期間）に、欠歯部の誤判定を発生させるような大きな回転変動が発生しやすい。始動完了後は、クランク軸１３の回転が比較的安定するため、欠歯部を誤判定させるような大きな回転変動はほとんど発生しない。
【００３５】
このような事情を考慮し、ステップ１２２では、欠歯部の誤判定を発生させるような大きな回転変動の判定基準として上記▲１▼〜▲３▼の条件が設定されている。
【００３６】
これら▲１▼〜▲３▼の条件が全て成立し、クランク軸１３の回転変動が大きいと判定された時には、上述したように、次の欠歯部１８の有無を誤判定する可能性があるため、次の欠歯部１８の有無を判定する処理（ステップ１２３〜１２５）を省略して、ステップ１２６に進み、欠歯部検出済みフラグＸＧＡＰを欠歯部未検出を意味する「０」にリセットして、本プログラムを終了する。
【００３７】
これに対し、ステップ１２２で、上記▲１▼〜▲３▼のうちいずれか１つでも「Ｎｏ」と判定された場合は、クランク軸１３の回転変動が小さく、欠歯部を誤判定するおそれがないと判断し、上記ステップ１１４で検出した欠歯部１６又は１７に連続した欠歯部の有無を判定するために、ステップ１２３に進み、図１のステップ１０７〜１０９と同じように、（Ｔi-1 ／Ｔi ）＜Ｋ2 を満たすか否かを判定する。もし、欠歯部検出［（Ｔi-1 ／Ｔi ）＜Ｋ2 ］と判定された場合は、今回検出したクランク信号の発生位置を歯１５ｂ（＃２ＢＴＤＣ５℃Ａ又は＃３ＢＴＤＣ５℃Ａ）と判断して、ＣＮＥ＝０にセットする（ステップ１２４）。
【００３８】
一方、欠歯部未検出［（Ｔi-1 ／Ｔi ）≧Ｋ2 ］と判定された場合には、今回検出したクランク信号の発生位置を歯１５ｃ（＃１ＢＴＤＣ２５℃Ａ又は＃４ＢＴＤＣ２５℃Ａ）と判断して、ＣＮＥ＝１４にセットする（ステップ１２５）。
【００３９】
このようにしてステップ１２４又は１２５で、連続した欠歯部１８の検出の有無に応じてクランク信号カウンタＣＮＥのカウント値を「０」又は「１４」にセットした後、ステップ１２６に進み、欠歯部検出済みフラグＸＧＡＰを欠歯部未検出を意味する「０」にリセットして、本プログラムを終了する。
【００４０】
このような処理により、クランク軸１３の回転変動が小さい期間（ステップ１２２で「Ｎｏ」と判定される期間）には、最初の欠歯部１６又は１７を検出する処理（ステップ１１４〜１２１）と、次の欠歯部１８の有無を判定する処理（ステップ１２３〜１２５）とを交互に繰り返して特定クランク角（気筒グループ）を判別する。
【００４１】
一方、クランク軸１３の回転変動が大きい期間（ステップ１２２で「Ｙｅｓ」と判定される期間）に、誤判定するおそれのない最初の欠歯部１６又は１７を検出する処理（ステップ１１４〜１２１）のみを実行し、誤判定するおそれのある次の欠歯部１８の有無を判定する処理（ステップ１２３〜１２５）を省略する。これにより、クランク軸１３の回転変動が大きい時に、誤った欠歯部（特定クランク角）の情報を排除して、正確な欠歯部（特定クランク角）の情報のみを用いてクランク角を判定することができ、従来よりもクランク角判定精度を向上させることができて、燃料噴射時期や点火時期の制御精度を向上することができる。
【００４２】
しかも、クランク軸１３の回転変動が大きい期間においても、誤判定するおそれのない最初の欠歯部１６又は１７を検出する毎に、クランク信号カウンタＣＮＥのカウント値を、そのカウント値に応じて特定値（１３又は２９）に補正するようにした。よって、クランク信号にノイズが重畳して、そのノイズでクランク信号カウンタＣＮＥのカウント値が増加したとしても、誤判定するおそれのない最初の欠歯部１６又は１７を検出する毎に、ノイズの影響を排除してクランク信号カウンタＣＮＥのカウント値を正確な値（特定値）に復帰させることができ、ノイズの影響による燃料噴射時期、点火時期のずれも防止することができる。
【００４３】
尚、上記実施形態では、ステップ１１７〜１２０で、クランク信号カウンタＣＮＥの修正範囲をノイズのカウント数が２回までとしたが、３回或は４回（又はそれ以上の回数）までとしても良く、勿論、１回のみとしても良い。
【００４４】
また、上記実施形態では、ステップ１２２で、▲１▼スタータオン、▲２▼エンジン回転数ＮＥ≦始動完了回転数、▲３▼冷却水温ＴＨＷ≦所定温度の３つの条件が全て成立する時に、回転変動が大きいと判断して、誤判定するおそれのある次の欠歯部１８を検出する処理（ステップ１２３〜１２５）を禁止するようにしたが、これ以外に、▲１▼〜▲３▼の３つの条件のうち、いずれか２つの条件、又はいずれか１つの条件のみを用いて、回転変動が大きいか否かを判定するようにしても良い。
【００４５】
また、クランク信号の発生周波数から演算されるエンジン回転数から直接、回転変動を判定するようにしても良い。
その他、本発明は、欠歯部の位置や個数を変更しても良く、また、４気筒以外の気筒数のエンジンに適用しても良い等、要旨を逸脱しない範囲内で種々変更して実施できる。
【図面の簡単な説明】
【図１】本発明の一実施形態におけるクランク角判定制御ルーチンの処理の流れを示すフローチャート
【図２】図１の続きのフローチャート
【図３】クランクセンサとクランク側シグナルロータとの関係を示す図
【図４】カムセンサとカム側シグナルロータとの関係を示す図
【図５】カム信号、クランク信号、クランク信号カウンタＣＮＥのカウント値の変化を示すタイムチャート
【符号の説明】
１１…クランクセンサ（パルス信号発生手段）、１２…カムセンサ、１３…クランク軸、１４…クランク側シグナルロータ、１５，１５ａ〜１５ｅ…歯、１６〜１８…欠歯部、１９…カム軸、２０…カム側シグナルロータ。
【図１】
0004196426.tif 000002
【図２】
0004196426.tif 000003
【図３】
0004196426.tif 000004
【図４】
0004196426.tif 000005
【図５】
0004196426.tif 000006