図1はこの発明の実施例に係る内燃機関の制御装置を全体的に示す概略図である。
図1において符号10は、図示しない車両(例えば自動二輪車)に搭載された内燃機関(以下「エンジン」という)を示す。エンジン10は4サイクル単気筒の水冷式で、排気量250cc程度のガソリン・エンジンからなる。尚、符号10aはエンジン10のクランクケースを示す。
エンジン10の吸気管12にはスロットルバルブ14が配置される。スロットルバルブ14は、車両のハンドルバーに運転者の手動操作自在に設けられたアクセラレータ(スロットルグリップ)にスロットルワイヤ(共に図示せず)を介して機械的に接続され、アクセラレータの操作量に応じて開閉され、エアクリーナ16から吸気管12を通ってエンジン10に吸入される空気の量を調整する。
吸気管12においてスロットルバルブ14の下流側の吸気ポート付近にはインジェクタ20が配置され、スロットルバルブ14で調整された吸入空気にガソリン燃料を噴射する。噴射された燃料は吸入空気と混合して混合気を形成し、混合気は、吸気バルブ22が開弁されるとき、燃焼室24に流入する。
燃焼室24に流入した混合気は、点火コイル26から供給された高電圧で点火プラグ30が火花放電されるときに点火されて燃焼し、ピストン32を図1において下方に駆動してクランク軸34を回転させる。燃焼によって生じた排ガスは、排気バルブ36が開弁されるとき、排気管40を流れる。排気管40には触媒装置42が配置され、排ガス中の有害成分を除去する。触媒装置42で浄化された排ガスはさらに下流に流れ、エンジン10の外部に排出される。
スロットルバルブ14の付近にはポテンショメータからなるスロットル開度センサ44が設けられ、スロットルバルブ14の開度θTHを示す出力を生じる。吸気管12のスロットルバルブ14の上流側には吸気温センサ46が設けられて吸入空気の温度TAを示す出力を生じると共に、下流側には絶対圧センサ50が設けられ、吸気管内絶対圧(エンジン負荷)PBAを示す出力を生じる。
エンジン10のシリンダブロックの冷却水通路10bには水温センサ52が取り付けられ、エンジン10の温度(エンジン冷却水温)TWに応じた出力を生じる。エンジン10のクランク軸34の付近であってクランクケース10aの壁面(静止位置)には、電磁ピックアップからなるクランク角センサ(クランク角度信号出力手段。突起位置信号出力手段)54が配置される。尚、クランク角センサ54については、後に詳説する。
エンジン10のクランク軸34には、交流発電機(以下、単に「発電機」という)60が接続される。発電機60は、クランク軸34に接続されるロータ(タイミングロータ)60aと、ロータ60aに取り付けられる永久磁石60bと、永久磁石60bと対向する位置に配置される3相のステータコイル60c,60d,60eおよび逆転検出用コイル60fなどからなる。
図2は図1に示す発電機60を構成するロータ60aなどの説明図である。
図2に示す如く、ロータ60aは円筒状を呈すると共に、クランク軸34に連動(同期)して回転する。尚、ロータ60aはエンジン10のフライホイールを兼用する。ロータ60aの円周(外周側)には、磁性体からなると共に、所定の円周方向長さを有する複数個(18個)の突起60gが所定距離をおいて等角度間隔に配置される。具体的には、18個の突起60gは、ロータ60aの回転方向において各突起60gの後端位置が、クランク軸34の所定クランク角度(より具体的には20°)ごとの等間隔となるように配置される。
複数個の突起60gの内の1つはクランク角基準位置を検出するための基準突起(図2において符号60g1で示す)である。基準突起60g1は、前端位置から後端位置までの円周方向長さが残余の(他の)突起60g2のそれと異なるように形成される、具体的には突起60g2のそれに比べて長く形成されると共に、その後端位置は上死点前10°(BTDC10°(クランク角基準位置))となるように設定される。尚、基準突起60g1は、クランク軸34が逆転から正転に復帰したことを判定するための正転判定用突起としても機能するが、それについては後述する。
ロータ60aの突起60gと対向する静止位置には、前記したクランク角センサ54が配置される。従って、クランク角センサ54は、ロータ60aの回転に伴って突起60gが近傍を通過するごとにパルス信号を出力する。詳しくは、クランク角センサ54は、回転方向に対して各突起60gの前端位置が通過したときに負極性の振幅を有するパルス信号(前端位置信号)を出力すると共に、後端位置が通過したときに正極性の振幅を有するパルス信号(後端位置信号)を出力する。即ち、クランク角センサ54は、クランク軸34の所定クランク角度(20°)ごとに負極性あるいは正極性の振幅を有するパルス信号(クランク角度信号)を出力する。尚、基準突起60g1の円周方向長さは残余の突起60g2より長いため、クランク角センサ54による基準突起60g1の前端位置を検出するタイミングは、残余の突起60g2のそれに比して早くなる。
永久磁石60bは、ロータ60aの内周側に取着されると共に、S極とN極が等角度(具体的には30°ごと)に交互に配置、別言すれば、S極とN極を1組(1対)として60°ごとに配置される。また、逆転検出用コイル60fは、クランク角基準位置(BTDC10°)となるように配置される。
これにより、発電機60は、クランク軸34の回転に伴ってロータ60a(詳しくはロータ60aに取着された永久磁石60b)が回転させられると、電磁誘導によってステータコイル60c,60d,60eおよび逆転検出用コイル60fから交流電圧を出力する。具体的には、ステータコイル60c,60d,60eはU,V,W相からなる3相の交流電圧を出力すると共に、逆転検出用コイル60fは1相の交流電圧を出力する。
このように、発電機60は永久磁石式の交流発電機からなり、クランク軸34の回転で駆動されて交流電圧を出力する。尚、上記した逆転検出用コイル60fから出力される交流電圧は、ロータ60a(クランク軸34)が60°回転するのに要する時間を1周期とする交流電圧となる。
図1の説明に戻ると、発電機60のステータコイル60c,60d,60eから出力される3相の交流電圧は、レギュレートレクチファイヤ62を介してバッテリ64に入力される。
レギュレートレクチファイヤ62は、整流回路62aと出力電圧調整回路62bを備える。整流回路62aは、ステータコイル60c,60d,60eから入力される3相の交流電圧を、図示しないブリッジ回路で直流電圧に整流して出力電圧調整回路62bに出力する。出力電圧調整回路62bは、入力された直流電圧を調整して電源電圧を生成し、電源電圧をバッテリ64に供給して充電すると共に、後述する電子制御ユニット(Electronic Control Unit。以下「ECU」という)70にも動作電源として供給する。バッテリ64は、例えばエンジン始動時など発電機60から交流電圧が出力されないとき、ECU70に動作電源を供給する。
上記したクランク角センサ54などの各センサの出力および発電機60の逆転検出用コイル60fから出力される交流電圧はECU70に入力される。
図3はECU70の構成を全体的に示すブロック図である。
ECU70はマイクロコンピュータからなり、図3に示すように、波形整形回路70aと、回転数カウンタ70bと、基準電圧源70cと、コンパレータ回路70dと、A/D変換回路70eと、CPU70fと、点火回路70gと、駆動回路70hと、ROM70iと、RAM70jおよびタイマ70kを備える。
波形整形回路70aは、クランク角センサ54の出力(パルス信号。信号波形)を矩形状のパルス信号に波形整形し、回転数カウンタ70bに出力する。回転数カウンタ70bは入力されたパルス信号をカウントしてエンジン回転数NEを検出(算出)し、エンジン回転数NEを示す信号をCPU70fへ出力する。基準電圧源70cは、負極の直流電圧を基準電圧としてコンパレータ回路70dの非反転入力端子に出力する。
コンパレータ回路70dはオペアンプからなると共に、逆転検出用コイル60fの交流電圧が反転入力端子に入力される。コンパレータ回路70dは、交流電圧と基準電圧を比較し、交流電圧が基準電圧より大きいとき(換言すれば、交流電圧の極性が正極のとき)にハイレベルの比較結果信号を、交流電圧が基準電圧より小さいとき(交流電圧の極性が負極のとき)にローレベルの比較結果信号をCPU70fに出力する。A/D変換回路70eは、スロットル開度センサ44や吸気温センサ46などの各センサの出力が入力され、アナログ信号値をデジタル信号値に変換してCPU70fに出力する。
CPU70fは、変換されたデジタル信号やコンパレータ回路70dからの比較結果信号などに基づき、ROM70iに格納されているプログラムに従って演算を実行し、クランク角度が点火出力タイミングのときに点火コイル26の点火制御信号を点火回路70gに出力する(即ち、点火時期制御を行う)。また、CPU70fは、各信号などに基づき、同様にROM70iに格納されているプログラムに従って演算を実行し、燃料噴射タイミングのときに燃料噴射制御信号を駆動回路70hに送る(燃料噴射制御を行う)。
点火回路70gは、CPU70fからの点火制御信号に応じ、点火コイル26を通電して点火を行う。駆動回路70hは、CPU70fからの燃料噴射制御信号に応じ、インジェクタ20を駆動して燃料を噴射させる。RAM70jは、例えば点火時期制御および燃料噴射制御において算出された点火時期や燃料噴射量などのデータが書き込まれる。また、タイマ70kは、後述するプログラムにおいて行われる時間計測の処理に利用される。
図4はこの実施例に係る内燃機関の制御装置の動作を示すフロー・チャートである。図示のプログラムは、ECU70においてロータ60aの突起60gの前端位置と後端位置のいずれかに相当するクランク角度信号が入力されるごとに実行(ループ)される。
先ずS10においてクランク角基準位置を検出する処理を行う。図5はS10のクランク角基準位置検出処理のサブ・ルーチン・フロー・チャートであり、図6はクランク角基準位置の検出を説明するためのタイム・チャートである。
図5フロー・チャートの説明に入る前に、図6を参照してクランク角基準位置の検出について説明する。尚、図6においては、上から順にロータ60aの外周の形状、クランク角センサ54の出力信号、波形整形回路70aの出力信号などを示す。
クランク角基準位置の検出は、クランク角センサ54の出力に基づいてロータ60aの基準突起60g1が検出されたか否か判断することで行われる。即ち、図6に示すように、クランク角センサ54は、ロータ60aの突起60gの前端位置が通過したときに前端位置信号(具体的には負極性のパルス信号)を、後端位置が通過したときに後端位置信号(正極性のパルス信号)を出力する。波形整形回路70aは、クランク角センサ54から入力される信号が前端位置信号で所定電圧−Vth以下のときにハイレベル、後端位置信号で所定電圧Vth以上のときにローレベルとなるパルス信号を出力する。
従って、波形整形回路70aにおいてハイレベルのパルス信号が出力される時間は、クランク角センサ54において前端位置信号が出力されてから後端位置信号が出力されるまでの時間、換言すれば、突起60gが通過する時間に相当する。一方、ローレベルのパルス信号が出力される時間は、後端位置信号が出力されてから次の突起60gの前端位置信号が出力されるまでの時間、即ち、隣接する2個の突起60gの間の部位が通過する時間に相当する。尚、以下において、突起60gが通過する時間を「突起経過時間」といい、隣接する2個の突起60gの間の部位が通過する時間を「突起間経過時間」という。
基準突起60g1にあっては、前述したように、クランク角センサ54による前端位置の検出タイミングが残余の突起60g2より早いため、基準突起60g1の突起経過時間と突起間経過時間は他の突起60g2のそれとは相違することとなる。
以上から、この実施例に係る内燃機関の制御装置にあっては、上記した突起経過時間と突起間経過時間を計測し、計測された各時間に基づいて基準突起60g1が検出されたか否か(通過したか否か)判断し、基準突起60g1が検出されるときにクランク軸34はクランク角基準位置にあると判断するようにした。
これについて図5フロー・チャートを参照して具体的に説明すると、先ずS100においてクランク角センサ54から前端位置信号が出力されたか否か判断、具体的には、波形整形回路70aにおいて立ち上がりエッジが検出されたか否か判断する。S100で肯定されるときはS102に進み、タイマ70kによる突起間経過時間の計測(後述)を終了し、S104に進んで前回設定された突起間経過時間TCDENTを前回突起間経過時間TCDENT1にセットすると共に、S102で得られた突起間経過時間を今回計測された値として突起間経過時間TCDENTにセット、即ち、突起間経過時間TCDENTと前回突起間経過時間TCDENT1を更新する。
次いでS106に進み、突起経過時間の計測を開始する。S106の処理後またはS100で否定されるときはS108に進み、クランク角センサ54から後端位置信号が出力されたか否か(具体的には、波形整形回路70aにおいて立ち下がりエッジが検出されたか否か)判断する。S108で否定されるときは以降の処理をスキップする一方、肯定されるときはS110に進み、S106で開始した突起経過時間の計測を終了する。
次いでS112に進んで前回設定された突起経過時間TCPRJを前回突起経過時間TCPRJ1にセットすると共に、S110で得られた突起経過時間を今回計測された値として突起経過時間TCPRJにセット、即ち、突起経過時間TCPRJと前回突起経過時間TCPRJ1を更新する。そしてS114に進んで突起間経過時間の計測を開始する。
このように、S100からS114までの処理は、クランク角センサ54から前端位置信号が出力されてから後端位置信号が出力されるまでの突起経過時間TCPRJを計測すると共に、後端位置信号が出力されてから次の突起60gの前端位置信号が出力されるまでの突起間経過時間TCDENTを計測する処理である。尚、突起経過時間TCPRJと突起間経過時間TCDENTは、上記の如く突起60gの前端位置信号と後端位置信号が出力される度に計測される。
次いでS116に進み、クランクステージCALSTGの値を1つインクリメントする。クランクステージCALSTGは、クランクシャフト1回転(360CA)を突起60gによって等間隔に分けてなるステージ番号であり、例えば上死点後10°(ATDC10°)を0番として17番までの18個のクランク角度位置を示す番号であって点火時期制御や燃料噴射制御などに利用される。
次いでS118に進み、前回算出された突起経過時間TCPRJと突起間経過時間TCDENTの比率を示す第1の比率RTCPDを、前回値として前回第1の比率RTCPD1にセットする。そしてS120に進み、S104とS112で得られた突起経過時間TCPRJと突起間経過時間TCDENTの比率を算出し、算出された値を今回値として第1の比率RTCPDにセットする。具体的には、今回の第1の比率RTCPDは下記の式(1)に従って算出される。
RTCPD=TCPRJ/TCDENT ・・・式(1)
次いでS122に進み、基準突起60g1が検出されたことを示す基準突起検出フラグF_LONGのビットが1か否か判断する。フラグF_LONGは初期値が0とされるため、S122の処理を最初に実行するときは否定されてS124に進み、第1の比率RTCPDと前回第1の比率RTCPD1の変化量を算出(正確には、第1の比率RTCPDから前回第1の比率RTCPD1を減算して差を算出)し、算出された変化量が第1の判定しきい値A以上か否か判断する。
S124の処理について図6を参照して説明する。基準突起60g1は円周方向長さが他の突起60g2に比して長く形成されるため、基準突起60g1の後端位置が通過した時点t11にあっては、突起経過時間TCPRJを突起間経過時間TCDENTで除して得られる第1の比率RTCPDが前回第1の比率RTCPD1に比して大きくなる。
従って、S124では第1の比率RTCPDと前回第1の比率RTCPD1の変化量を算出し、算出された変化量が第1の判定しきい値A以上のとき、基準突起60g1が通過したと判定するようにした。そのため、第1の判定しきい値Aは、基準突起60g1の円周方向長さなどを考慮して基準突起60g1が通過したと判定できるような値に適宜設定される。
S124で肯定されるときはS126に進み、基準突起検出フラグF_LONGのビットを1にセットする一方、否定されるとき(基準突起60g1が通過したと判定されないとき)はS128に進んでフラグF_LONGのビットを0にセットする。
フラグF_LONGのビットが1にセットされると、次回以降のプログラムループにおいてS122で肯定されてS130に進み、前回第1の比率RTCPD1と第1の比率RTCPDの変化量(正確には、前回第1の比率RTCPD1から第1の比率RTCPDを減算して差)を算出し、算出された変化量が第2の判定しきい値B以上か否か判断する。
この処理について詳説すると、図6から分かるように、基準突起60g1通過後に次の突起60g2の後端位置が通過する時点t12にあっては、想像線で示す突起経過時間TCPRJを突起間経過時間TCDENTで除して得られる第1の比率RTCPDが前回第1の比率RTCPD1に比して小さくなる。
従って、S130では前回第1の比率RTCPD1から第1の比率RTCPDを減算して算出される変化量が第2の判定しきい値B以上のとき、基準突起60g1後に次の突起60g2が通過したと判定するようにした。第2の判定しきい値Bは、基準突起60g1や突起60g2の円周方向長さなどを考慮して次の突起60g2が通過したと判定できるような値に適宜設定される。
S130で否定されるときはS132に進み、基準位置検出フラグF_TCTDCのビットを0にセットする。他方、S130で肯定(即ち、基準突起60g1、次の突起60g2の順で確実に通過したと判定)されるときはクランク角基準位置(BTDC10°)が確実に検出されたとしてS134に進み、基準突起検出フラグF_LONGのビットを0にセットし、S136に進んで基準位置検出フラグF_TCTDCのビットを1にセットする。
即ち、フラグF_TCTDCのビットが1にセットされることはクランク角基準位置が確実に検出されたことを、0にセットされることはクランク角基準位置が検出されていないことを意味する。S136の処理後はS138に進んでクランクステージCALSTGの値を0にリセットする。
ここで、クランク軸34が逆転方向に回転しているときのクランク角基準位置検出処理について説明する。
図7はクランク軸34が逆転したときのクランク角基準位置の検出を説明するための、図6と同様なタイム・チャートである。
図7に示す如く、クランク軸34が逆転している状態で基準突起60g1が通過する時点t21にあっては、第1の比率RTCPDから前回第1の比率RTCPD1を減算して得られる変化量が正転時のそれに比して小さくなる、別言すれば、第1の判定しきい値A未満となる。また、基準突起60g1通過後に次の突起60g2が通過する時点t22にあっても同様に、想像線で示す如く、前回第1の比率RTCPD1から第1の比率RTCPDを減算して得られる変化量は正転時のそれに比して小さく、第2の判定しきい値B未満となる。
そのため、クランク軸34が逆転しているときはS124,S130の判断で否定され、クランク角基準位置が検出されることはなく、基準位置検出フラグF_TCTDCのビットが1になることはない。従って、後に説明するが、クランク軸34が逆転と判定された後において、フラグF_TCTDCのビットが0から1となり、クランク角基準位置を検出することができる場合、クランク軸34が逆転から正転に復帰したと判定することが可能となる。
このように、今回計測された突起経過時間TCPRJおよび突起間経過時間TCDENTの比率(第1の比率RTCPD)と、前回計測された突起経過時間TCPRJ1および突起間経過時間TCDENT1の比率(前回第1の比率RTCPD1)との変化量を算出し、算出された変化量に基づいて基準突起60g1が検出される場合、クランク軸34が逆転から正転に復帰したと判定することができる。このことから分かるように、基準突起60g1は、クランク軸34が正転復帰したことを判定するための正転判定用突起としても機能する。
図4の説明に戻ると、次いでS12に進み、クランク角センサ54から後端位置信号が出力されたか否か判断する。S12で否定されるときは以降の処理をスキップする一方、肯定されるときはS14に進んで突起経過時間TCPRJなどに基づいてクランク軸34の逆転および正転復帰を判定する第1の逆転・正転復帰判定処理を行う。
図8はS14の第1の逆転・正転復帰判定処理のサブ・ルーチン・フロー・チャートであり、図9は第1の逆転・正転復帰判定処理を説明するためのタイム・チャートである。
図8に示すように、先ずS200において第1の逆転判定フラグF_REVCRK(後述)のビットが1か否か判断する。フラグF_REVCRKは初期値が0とされるため、S200の処理を最初に実行するときは通例否定されてS202に進み、突起間経過時間TCDENTと前回突起間経過時間TCDENT1の比率(第2の比率RTCDENT)を算出すると共に、突起経過時間TCPRJと前回突起経過時間TCPRJ1の比率(第3の比率RTCPRJ)を算出する。具体的には、第2、第3の比率RTCDENT,RTCPRJは、下記の式(2)(3)に従って算出される。
RTCDENT=TCDENT/TCDENT1 ・・・式(2)
RTCPRJ=TCPRJ/TCPRJ1 ・・・式(3)
次いでS204に進み、第2の比率RTCDENTが第1の所定値以上か否か判断する。S204で否定されるときはS206に進み、第3の比率RTCPRJが第2の所定値以上か否か判断する。このS202からS206までの処理は、クランク軸34が逆転したか否か判断する処理である。
図9を参照しつつ具体的に説明すると、クランク軸34にあっては、正転方向の回転から逆転方向の回転に反転する場合、正転方向の回転速度が徐々に低下して一旦停止し、その後逆転方向の速度を生じることとなる。そのため、クランク軸34が逆転した時点t31においては、クランク軸34の減速・停止などに起因して突起経過時間TCPRJまたは突起間経過時間TCDENTの今回値が前回値に比して大きくなる。
このことからS202からS206までの処理にあっては、突起間経過時間TCDENTと突起経過時間TCPRJにおける今回値と前回値の比率(第2、第3の比率RTCDENT,RTCPRJ)を算出し、算出された第2の比率RTCDENTが第1所定値以上、または第3の比率RTCPRJが第2の所定値以上のとき、クランク軸34が逆転したと判定するようにした。そのため、第1、第2の所定値は共に、クランク軸34が逆転したと判定できるような値に適宜設定される。尚、図9の時点t31にあっては、第3の比率RTCPRJが第2の所定値以上となるような場合を示した。
図8の説明を続けると、S206で否定されるときはS208に進み、第1の逆転判定フラグF_REVCRKのビットを0にセットする一方、S204またはS206で肯定されるときはS210に進み、フラグF_REVCRKのビットを1にセットする。即ち、フラグF_REVCRKのビットが1にセットされることは、計測された突起経過時間TCPRJや突起間経過時間TCDENTに基づいてクランク軸34が逆転と判定されることを、0にセットされることはクランク軸34が正転と判定されることを意味する。
クランク軸34が逆転と判定されてフラグF_REVCRKのビットが1にセットされると、次回以降のプログラムループにおいてS200で肯定されてS212に進み、基準位置検出フラグF_TCTDCのビットが1か否か判断する。前述したように、クランク軸34が逆転と判定された後に、フラグF_TCTDCのビットが0から1となってクランク角基準位置を検出できる場合、クランク軸34が逆転から正転に復帰したと判定することができるため、S212で肯定されるときはS208に進み、第1の逆転判定フラグF_REVCRKのビットを0にセットする(時点t32)。尚、S212で否定されるときはS208をスキップする。
図4に戻ると、次いでS16に進み、交流発電機60から出力される交流電圧に基づいてクランク軸34の逆転と正転復帰を判定する第2の逆転・正転復帰判定処理を行う。
図10は第2の逆転・正転復帰判定処理のサブ・ルーチン・フロー・チャートである。
同図の説明に入る前に、図11タイム・チャートを参照して第2の逆転・正転復帰判定処理における逆転判定について説明する。
図11においては、上から順にクランク軸34の実際の回転方向、波形整形回路70aとクランク角センサ54の出力信号、発電機60の逆転検出用コイル60fから出力される交流電圧、その交流電圧の極性の検出状態、後述する正転周期計数カウンタCTFORWARDおよび第2の逆転判定フラグF_REVACGを示す。
クランク軸34が正転方向に回転している時点t41からt46までを例にとって説明すると、波形整形回路70aから出力された各パルス信号の立ち下がりエッジ(後端位置信号)の間隔は、図示の如く、クランク軸34が20°(20CA)回転するのに要した時間に相当する。
発電機60の逆転検出用コイル60fは、ロータ60a(クランク軸34)が60°回転するのに要する時間を1周期とする交流電圧を出力する。この交流電圧の極性を、クランク角センサ54からクランク角度信号が出力されるとき、正確には波形整形回路70aの各パルス信号が立ち下がりエッジとなる(後端位置信号が出力される)ときにコンパレータ回路70dの比較結果信号に基づいて検出(判定)すると、図示のように、時点t41で正極、時点t42で正極、時点t43で負極となることが分かる。
図11において、時点t46でクランク軸34が逆転しているが、時点t46で逆転しない場合(正転方向の回転を継続する場合)の発電機60の交流電圧を想像線で示すと、その極性は、続く時点t44からt46においても同様に、時点t44で正極、時点t45で正極、時点t46(具体的には、点火出力タイミング)で負極となることが分かる。
即ち、クランク角度信号が出力される時点において、クランク軸34が正転方向に回転させられるときに交流発電機60から出力されるべき交流電圧の極性の周期は「正極」「正極」「負極」の順となる。以下において、この周期を「正転時極性周期」ともいう。
従って、この実施例に係る内燃機関の制御装置にあっては、クランク角度信号が出力されるとき、発電機60から出力される交流電圧の極性を判定すると共に、判定された極性の周期を正転時極性周期と比較し、判定された極性の周期が正転時極性周期に一致するときにクランク軸34は正転であると判定する(クランク軸34の正転を検出する)一方、一致しないときにクランク軸34は逆転であると判定する(クランク軸34の逆転を検出する)ようにした。
以上を前提とし、図11を参照しつつ図10の説明に入ると、先ずS300において前回のプログラム実行時に設定された今回電圧極性REVACG0(後述)を前回電圧極性REVACG1にセットすると共に、前回のプログラム実行時に設定された前回電圧極性REVACG1を前々回電圧極性REVACG2にセットし、前回電圧極性REVACG1と前々回電圧極性REVACG2を更新する。
次いでS302に進み、現在の(正確にはクランク角度信号が出力されるときに)発電機60から出力される交流電圧の極性を判定(検出)する。具体的には、コンパレータ回路70dの比較結果信号に基づいて極性を判定、より具体的には、図11に示す如く、発電機60の交流電圧が基準電圧より大きいときは正極、小さいときは負極と判定する。
次いでS304に進み、判定された交流電圧の極性を今回電圧極性REVACG0にセット(更新)する。即ち、今回電圧極性REVACG0は、現在の交流電圧の極性を意味すると共に、前回電圧極性REVACG1は前回のクランク角度信号が出力されたとき(例えば現在を図11の時点t43としたときの時点t42)の交流電圧の極性を、前々回電圧極性REVACG2は前々回のクランク角度信号が出力されたとき(例えば現在を時点t43としたときの時点t41)の交流電圧の極性を意味する。
次いでS306に進み、第2の逆転判定フラグF_REVACG(後述)のビットが1か否か判断する。フラグF_REVACGは初期値が0とされるため、S306の処理を最初に実行するときは否定されてS308に進み、クランクステージCALSTGなどに基づき、クランク角度が点火制御信号を出力すべき点火出力タイミング(例えばBTDC10°(クランク角基準位置))か否か判断する。
S308で否定されるときは以降の処理をスキップする一方、肯定されるときはS310に進み、前々回電圧極性REVACG2が正極か否か判断する。S310で肯定されるときはS312に進み、前回電圧極性REVACG1が正極か否か判断し、肯定されるときはS314に進んで今回電圧極性REVACG0が負極か否か判断する。
即ち、S310からS314は、S300からS304の処理で得られた交流電圧の極性の周期を正転時極性周期(具体的には、正極・正極・負極からなる極性周期)と比較し、交流電圧の極性の周期が正転時極性周期に一致するか否か判定する処理である。
S314で肯定、換言すれば、交流電圧の極性の周期が正転時極性周期に一致しているときはクランク軸34が正転と判定し、以降の処理をスキップする。一方、S310からS314の処理の内のいずれかにおいて否定、即ち、例えば図11の時点t46に示すように、交流電圧の極性の周期が正転時極性周期に一致しない(不一致の)ときはクランク軸34が逆転と判定し、S316に進んで第2の逆転判定フラグF_REVACGのビットを1にセットする。よって、フラグF_REVACGが1にセットされることは、発電機60から出力される交流電圧の極性の周期に基づき、クランク軸34が逆転と判定されることを、0にセットされることはクランク軸34が正転と判定されることを意味する。
次いでS318に進み、後述する処理で利用される正電圧計数カウンタCTACGPと正転周期計数カウンタCTFORWARDの値を0にリセットする。
クランク軸34が逆転と判定されてフラグF_REVACGのビットが1にセットされると、次回以降のプログラムループにおいてS306で肯定されてS320に進む。このS320以降は、クランク軸34が逆転から正転に復帰したことを判定する処理である。
以下説明すると、S320において今回電圧極性REVACG0が負極か否か判断し、否定されるときはS322に進み、正電圧計数カウンタCTACGPの値を1つインクリメントする。S322の処理はS320で肯定されるまで繰り返し実行されるため、カウンタCTACGPの値は、S320で現在の交流電圧の極性が負極と判定される以前のプログラムループにおいて正極と判定された(具体的にはS320で否定された)回数を意味する。
S320で肯定されるときはS324に進み、正電圧計数カウンタCTACGPの値が2か否か判断する。即ち、S320,S324は、交流電圧の極性が現在は負極と判定され、それ以前の2回のプログラムループにおいて正極と判定されているか否か、別言すれば、交流電圧の極性の周期が正転時極性周期(具体的には、正極・正極・負極からなる極性周期)に一致するか否か判定する処理である。
S324で否定、即ち、一致しないとき(例えば図11における時点t47やt48のとき)はS326に進み、正転周期計数カウンタCTFORWARDの値を0にリセットする一方、肯定されるとき(一致するとき。図11にあっては、実際のクランク軸34が時点t49で正転に復帰したとすると、時点t50のとき)はS328に進み、カウンタCTFORWARDの値を1つインクリメントする。従って、このカウンタCTFORWARDは、クランク軸34が逆転と判定された後、前記一致と判定される回数を示す。
次いでS330に進み、正電圧計数カウンタCTACGPの値を0にリセットし、S332に進んで正転周期計数カウンタCTFORWARDの値が所定回数(具体的には2回)以上か否か判断、別言すれば、前記一致と判定される回数が所定回数に到達した否か判断する。S332で否定されるときは以降の処理をスキップする一方、肯定されるとき(図11の時点t51のとき)はクランク軸34が逆転から正転に確実に復帰したと判定してS334に進み、第2の逆転判定フラグF_REVACGのビットを0にセットする。
図4の説明に戻ると、次いでS18に進み、S14やS16で行われたクランク軸34の逆転または正転復帰判定を確定させる処理を行う。
図12は逆転・正転復帰判定確定処理のサブ・ルーチン・フロー・チャートである。
図12に示す如く、先ずS400において第2の逆転判定フラグF_REVACGのビットが1か否か判断する。S400で肯定されるときはS402に進み、履歴フラグF_RVACGRCD(初期値0)のビットを1にセットする。即ち、フラグF_RVACGRCDのビットが1にセットされることは、第2の逆転・正転復帰判定処理においてクランク軸34が逆転と判定された履歴があることを、0にセットされることはその履歴がないことを意味する。
次いでS404に進み、逆転検出確定フラグF_REVERSEのビットが1か否か判断する。フラグF_REVERSEは初期値が0に設定されるため、S404の処理を最初に実行するときは否定されてS406に進み、フラグF_REVERSEのビットを1にセットする。尚、フラグF_REVERSEのビットが0のときは、後述する処理においてエンジン10の点火および燃料噴射が行われる一方、1のときは点火および燃料噴射が禁止される。
次いでS408に進み、基準位置検出フラグF_TCTDCと基準突起検出フラグF_LONGのビットを0にセットし、クランク角基準位置の検出によって行われるクランク軸34の正転復帰判定処理に備える。尚、S406でフラグF_REVERSEのビットが1にセットされると、次回以降のプログラムループにあってはS404で肯定され、S406,S408の処理をスキップする。
他方、S400で否定されるときはS410に進み、履歴フラグF_RVACGRCDのビットが1か否か判断する。S410で否定されるときはS412に進み、第1の逆転判定フラグF_REVCRKのビットが1か否か判断する。S412で肯定されるときは前述したS404〜S408の処理に進み、フラグF_REVERSEのビットが0の場合はS406で1にセットし、1の場合はそのままプログラムを終了する。
このように、逆転判定条件が異なる第1、第2の逆転・正転復帰判定処理の少なくともいずれかにおいてクランク軸34は逆転と判定されるとき(具体的には、第1、第2の逆転判定フラグF_REVCRK,F_REVACGの少なくともいずれかが1のとき)、フラグF_REVERSEのビットを1にセットしてクランク軸34の逆転検出を確定させ、エンジン10の点火および燃料噴射を禁止する。
エンジン10の点火と燃料噴射が禁止された後のプログラムループにおいて、S400で否定されるとき、即ち、第2の逆転・正転復帰判定処理においてクランク軸34が逆転から正転に復帰したと判定されて第2の逆転判定フラグF_REVACGのビットが1から0になったときはS410に進む。
履歴フラグF_RVACGRCDのビットは未だ1のままであるため、S410の判断は肯定されてS414に進み、第1の逆転判定フラグF_REVCRKのビットを0にセットする。即ち、エンジン10の点火などが禁止された後、第2の逆転・正転復帰判定処理においてクランク軸34は正転復帰と判定される場合、第1の逆転・正転復帰判定処理の結果に関わらず、第1の逆転判定フラグF_REVCRKのビットを0にセットする。
次いでS416に進み、逆転検出確定フラグF_REVERSEのビットを0にセットし、S418に進んで履歴フラグF_RVACGRCDのビットを0にセットする。
また、エンジン10の点火と燃料噴射が禁止された後のプログラムループにおいて、S412で否定されるとき、即ち、第1の逆転・正転復帰判定処理においてクランク軸34が逆転から正転に復帰したと判定されて第1の逆転判定フラグF_REVCRKのビットが1から0になったときは前述したS414からS418の処理を実行する。
このように、エンジン10の点火と燃料噴射が禁止された後、正転復帰判定条件が異なる第1、第2の逆転・正転復帰判定処理の少なくともいずれかにおいてクランク軸34が逆転から正転に復帰したと判定される場合(具体的には、第1、第2の逆転判定フラグF_REVCRK,F_REVACGの少なくともいずれかが1から0になった場合)、S416でフラグF_REVERSEのビットを0にセットしてクランク軸34の逆転検出を解除し、後述の如くエンジン10の点火の禁止および燃料噴射の禁止を解除する。
次いで図4フロー・チャートにおいてS20に進んで点火出力処理を行い、S22に進んで燃料噴射処理を行う。
図13はその点火出力処理を示すサブ・ルーチン・フロー・チャートであり、図14は燃料噴射処理を示すサブ・ルーチン・フロー・チャートである。
図13に示す如く、S500においてクランク角センサ54の出力に基づいてエンジン回転NEを算出(検出)し、S502に進んでスロットル開度センサ44の出力に基づいてスロットルバルブ14の開度θTHを算出(検出)する。次いでS504に進み、算出されたエンジン回転数NEとスロットル開度θTHに基づき、予め設定されたマップ値を検索して点火時期を算出する。
次いでS506に進んでクランク角度が点火出力タイミングか否か判断し、否定されるときは以降の処理をスキップする一方、肯定されるときはS508に進み、逆転検出確定フラグF_REVERSEのビットが1か否か判断する。
S508で否定、即ち、クランク軸34が正転と判定、または逆転から正転に復帰したと判定されるときはS510に進み、算出された点火時期で点火が行われるように点火制御信号を出力する。他方、S508で肯定、即ち、クランク軸34が逆転と判定されるときはS512に進み、点火制御信号の出力を禁止、換言すれば、エンジン10の点火を禁止する。
燃料噴射処理は、図14に示す如く、S600においてエンジン回転数NEとスロットル開度θTHなどから予め設定されたマップ値を検索して燃料噴射量と燃料噴射タイミングを算出する。次いでS602に進み、クランク角度が算出された燃料噴射タイミングか否か判断し、否定されるときは以降の処理をスキップする一方、肯定されるときはS604に進み、逆転検出確定フラグF_REVERSEのビットが1か否か判断する。
S604で否定されるときはS606に進み、インジェクタ20から燃料を噴射させる燃料噴射制御信号を出力する一方、肯定されるときはS608に進み、燃料噴射制御信号の出力を禁止、換言すれば、エンジン10の燃料噴射を禁止する。
図15は、図4フロー・チャートと平行してECU70によって所定時間、例えば5msecごとに実行される内燃機関の制御装置の動作を示すフロー・チャートである。
以下説明すると、S700において、前回のプログラム実行時から今回のプログラム実行までにクランク角センサ54からクランク角度信号の入力があったか否か判断する。S700で肯定されるときは以降の処理をスキップする一方、否定されるときはS702に進んでエンジン10が停止しているか否か判断、正確にはクランク軸34が完全に停止しているか否か判断する。S702にあっては、クランク角度信号がクランク角センサ54から所定時間(例えば200msec)入力されないとき、エンジン10は停止していると判断する。
S702で否定されるときはそのままプログラムを終了する一方、肯定されるときはS704に進み、基準位置検出フラグF_TCTDCと基準突起検出フラグF_LONGのビットを0にセットし、S706に進んで逆転検出確定フラグF_REVERSE、第1、第2の逆転判定フラグF_REVCRK,F_REVACGのビットを0にセットする。このように、エンジン10が停止するときは各フラグのビットを0にセットして点火禁止・燃料噴射禁止を解除し、次回のプログラム実行に備える。
以上の如く、この発明の実施例にあっては、内燃機関(エンジン)10のクランク軸34が正転方向の回転から逆転したことを異なる逆転判定条件に基づいて判定する複数の逆転判定手段と(ECU70。第1、第2の逆転・正転復帰判定処理。S14,S16)、前記複数の逆転判定手段の少なくともいずれかにおいて前記クランク軸34は逆転と判定されるとき、前記内燃機関の点火を禁止する点火禁止手段と(ECU70。S14〜S20,S210,S316,S406,S508,S512)、前記点火禁止手段によって前記内燃機関の点火が禁止された後、前記クランク軸が逆転から正転に復帰したことを異なる正転復帰判定条件に基づいて判定する複数の正転復帰判定手段と(ECU70。第1、第2の逆転・正転復帰判定処理。S10〜S16)を備えると共に、前記点火禁止手段は、前記複数の正転復帰判定手段の少なくともいずれかにおいて前記クランク軸34が逆転から正転に復帰したと判定される場合、前記内燃機関の点火の禁止を解除するように構成した(S14〜S20,S208,S334,S416,S508,S510)。
このように、逆転判定条件が異なる複数の逆転判定手段の少なくともいずれかにおいてクランク軸34は逆転と判定されるとき、エンジン10の点火を禁止するように構成したので、クランク軸34の逆転を正確に検知して点火を禁止することができ、よってクランク軸34などに逆転負荷が作用することがなく、エンジン本体の損傷などを防止することができる。
また、エンジン10の点火が禁止された後、正転復帰判定条件が異なる複数の正転復帰判定手段の少なくともいずれかにおいてクランク軸34が逆転から正転に復帰したと判定される場合、エンジン10の点火の禁止を解除するように構成、即ち、複数の正転復帰判定手段の全てではなく、少なくともいずれかにおいてクランク軸34は正転復帰と判定されるとき、点火禁止を解除するように構成したので、点火禁止の解除を早期に適切なタイミングで実行でき、よって再始動性を向上させることができる。
また、前記クランク軸34の所定クランク角度ごとにクランク角度信号を出力するクランク角度信号出力手段と(クランク角センサ54)、前記クランク軸34の回転で駆動されて交流電圧を出力する交流発電機60と、前記クランク角度信号が出力されるとき、前記交流発電機60から出力される交流電圧の極性を判定する極性判定手段と(ECU70。S16,S302)を備えると共に、前記複数の逆転判定手段の少なくともいずれかは、前記判定された極性の周期と前記クランク軸34が正転方向に回転させられるときに前記交流発電機60から出力されるべき正転時極性周期が一致しないとき、前記クランク軸34は逆転と判定し(S16,S310〜S316)、前記複数の正転復帰判定手段の少なくともいずれかは、前記点火禁止手段によって前記内燃機関の点火が禁止された後、前記判定された極性の周期が前記正転時極性周期に一致するとき、前記クランク軸34が逆転から正転に復帰したと判定するように構成したので(S16,S306,S320〜S334)、クランク軸34が逆転したことおよび逆転から正転に復帰したことをより正確に検知することができる。
また、前記クランク軸34に連動して回転するロータ60aの円周に所定の円周方向長さを有して等角度間隔に配置される複数個の突起60g(基準突起60g1、突起60g2)と、前記突起60gと対向する静止位置(クランクケース10a)に配置され、前記突起60gの前端位置と後端位置を示す前端位置信号と後端位置信号を出力する突起位置信号出力手段と(クランク角センサ54)、前端位置信号が出力されてから後端位置信号が出力されるまでの突起経過時間TCPRJを計測すると共に、前記後端位置信号が出力されてから次の突起60gの前端位置信号が出力されるまでの突起間経過時間TCDENTを計測する時間計測手段と(ECU70。S10,S100〜S114)を備えると共に、前記複数の逆転判定手段の少なくともいずれかは、前記計測された突起経過時間TCPRJと突起間経過時間TCDENTに基づいて前記クランク軸34は逆転と判定し(S14,S202〜S206,S210)、前記複数の正転復帰判定手段の少なくともいずれかは、前記点火禁止手段によって前記内燃機関の点火が禁止された後、前記計測された突起経過時間TCPRJと突起間経過時間TCDENTに基づいて前記クランク軸34が逆転から正転に復帰したと判定するように構成した(S10,S14,S118〜S136,S200,S208,S212)。これにより、クランク軸34が逆転したことおよび逆転から正転に復帰したことをより一層正確に検知することができる。
また、前記時間計測手段は、前記突起60gの前端位置信号と後端位置信号が出力される度に前記突起経過時間TCPRJと突起間経過時間TCDENTを計測すると共に(S10,S100〜S114)、前記逆転判定手段は、今回計測された突起間経過時間TCDENTと前回計測された突起間経過時間(前回突起間経過時間TCDENT1)の比率(第2の比率RTCDENT)が第1の所定値以上の場合、または今回計測された突起経過時間TCPRJと前回計測された突起経過時間(前回突起経過時間TCPRJ1)の比率(第3の比率RTCPRJ)が第2の所定値以上の場合、前記クランク軸34は逆転と判定するように構成した(S14,S202〜S206,S210)ので、クランク軸34が逆転したことをより一層正確に検知することができる。
また、前記複数個の突起60gのいずれかは、前記円周方向長さが残余の突起60g2のそれと異なるように形成される正転判定用突起(基準突起60g1)からなると共に、前記時間計測手段は、前記突起の前端位置信号と後端位置信号が出力される度に前記突起経過時間TCPRJと突起間経過時間TCDENTを計測すると共に(S10,S100〜S114)、前記正転復帰判定手段は、今回計測された突起経過時間TCPRJおよび突起間経過時間TCDENTの比率(第1の比率RTCPD)と、前回計測された突起経過時間TCPRJ1および突起間経過時間TCDENT1の比率(前回第1の比率RTCPD1)との変化量を算出し、前記算出された変化量に基づいて前記正転判定用突起60g1が検出される場合、前記クランク軸34が逆転から正転に復帰したと判定するように構成した(S10,S14,S118〜S136,S200,S208,S212)。これにより、クランク軸34が逆転から正転に復帰したことをより一層正確に検知でき、点火禁止の解除をより一層適切なタイミングで実行することができる。
また、前記複数の逆転判定手段の少なくともいずれかにおいて前記クランク軸34は逆転と判定されるとき、前記内燃機関(エンジン)10の燃料噴射を禁止する燃料噴射禁止手段を備えると共に(ECU70。S14,S16,S22,S210,S316,S406,S604,S608)、前記燃料噴射禁止手段は、前記複数の正転復帰判定手段の少なくともいずれかにおいて前記クランク軸34が逆転から正転に復帰したと判定される場合、前記内燃機関の燃料噴射の禁止を解除するように構成した(S14,S16,S22,S208,S334,S416,S604,S606)。
このように、複数の逆転判定手段の少なくともいずれかにおいてクランク軸34は逆転と判定されるとき、エンジン10の燃料噴射を禁止するように構成したので、逆転による負荷がクランク軸34などに作用することはなく、エンジン本体の損傷などをより確実に防止することができる。
また、複数の正転復帰判定手段の少なくともいずれかにおいてクランク軸34が逆転から正転に復帰したと判定される場合、エンジン10の燃料噴射の禁止を解除するように構成、即ち、複数の正転復帰判定手段の全てではなく、少なくともいずれかにおいてクランク軸34は正転復帰と判定されるとき、燃料噴射火禁止を解除するように構成したので、燃料噴射禁止の解除を早期に適切なタイミングで実行でき、よって再始動性をより一層向上させることができる。
尚、上記において、正転時極性周期を正極・正極・負極からなる極性周期としたが、それらは例示であって、発電機60の仕様に応じて適宜変更されることはいうまでもない。
また、基準突起60g1の円周方向の長さを他の突起60g2のそれに比して長くなるようにしたが、短くなるように構成しても良く、その意味から、請求項5において「複数個の突起のいずれかは、前記円周方向長さが残余の突起のそれと異なるように形成される」と記載した。その場合、第1、第2の判定しきい値A,Bや第1、第2の所定値は適宜変更される。
また、正転周期計数カウンタCTFORWARDと比較する所定回数やエンジン10の排気量などを具体的な数値で示したが、それらは例示であって限定されるものではない。
また、車両の例として自動二輪車を挙げたが、それに限られるものではなく、例えばスクータやATV(All Terrain Vehicle)など、運転者がシート(サドル)に跨って乗る型の、いわゆる鞍乗り型車両であれば良く、さらには他の車両(例えば四輪自動車)であっても良い。