(57)【要約】【課題】電流値の検出誤差を適正に補正する燃料噴射制御装置を提供すること。【解決手段】燃料噴射システムは、低圧電源部（４５）又は高圧電源部（４６）からの電圧印加に基づき通電されるコイル（３１）及びコイルの通電に応じて開閉されるニードル（３３）を有する燃料噴射弁（３０）と、燃料噴射弁の電流値を検出する電流検出回路（４４ａ，４４ｂ）と、マイコン（４１）を備える。マイコンは、コイルの通電の開始及び停止を制御する通電制御部と、通電を停止させた後に、燃料噴射弁における端子の電圧値を取得する電圧取得部と、電圧取得部により取得された電圧値に基づき、電流検出回路により検出される電流値の検出誤差を補正する補正処理を行う補正部と、を備える。【選択図】      図２
2019027299.tif 000002
【特許請求の範囲】
【請求項１】
電源部（４５，４６）からの電圧印加に基づき通電されるコイル（３１）、及び前記コイルの通電に応じて開閉される弁体（３３）を有する燃料噴射弁（３０）と、前記電源部から電圧印加が行われた場合の電流値を検出する電流検出部（４４ａ，４４ｂ）と、を備える燃料噴射システムに適用される燃料噴射制御装置（４１）であって、
前記電源部による前記コイルの通電の開始及び停止を制御する通電制御部（４１ａ）と、
前記通電制御部が前記通電を停止させた後に、前記燃料噴射弁における端子の電圧値を取得する電圧取得部（４１ｂ）と、
前記電圧取得部により取得された電圧値に基づき、前記電流検出部により検出される電流値の検出誤差を補正する補正処理を行う補正部（４１ｃ）と、を備えた燃料噴射制御装置。
【請求項２】
前記通電制御部は、前記弁体が閉弁状態のままとなる条件で前記コイルを非開弁通電し、
前記補正部は、前記非開弁通電される状態で取得された電圧値に基づいて、前記補正処理を実施する請求項１に記載の燃料噴射制御装置。
【請求項３】
前記燃料噴射弁の開弁後において、前記コイルに対して所定の定電流を流すことで開弁状態を維持する燃料噴射制御装置であって、
前記補正処理として、前記電流値の検出誤差を補正する補正値を算出する補正値算出処理が含まれており、
前記補正値算出処理を実施する場合に、前記補正値算出処理を実施しない場合に比べて、前記定電流を小さい値に制御する定電流制御部を備える請求項１又は２に記載の燃料噴射制御装置。
【請求項４】
前記燃料噴射弁の駆動制御として、所定電圧の短パルス通電により前記燃料噴射弁を駆動させる第１駆動制御と、前記電流検出部により検出される電流値と所定の目標電流値との偏差に基づいて前記燃料噴射弁を駆動させる第２駆動制御とを実施可能であり、
前記補正部は、前記第１駆動制御が実施された場合に前記電圧取得部により取得された第１取得電圧値と、前記第２駆動制御が実施された場合に前記電圧取得部により取得された第２取得電圧値との差に基づいて、前記補正処理を実施する請求項１〜３のうちいずれか１項に記載の燃料噴射制御装置。
【請求項５】
前記補正部は、前記通電制御部が前記通電を停止させた後、取得される電圧値の極大値から減衰を開始した時点を始期とし、所定電圧に減衰した時点を終期とする減衰時間を比較することにより、補正値を算出し、当該補正値に基づき前記電流値の検出誤差を補正する請求項１〜４のうちいずれか１項に記載の燃料噴射制御装置。
【請求項６】
燃料噴射システムには、複数の前記燃料噴射弁が設けられており、
前記補正部は、複数の前記燃料噴射弁のうちいずれかを対象として通電させた後に取得された電圧値を基準として、前記電流値の検出誤差を補正する補正処理を行う請求項１〜５のうちいずれか１項に記載の燃料噴射制御装置。
【請求項７】
前記補正部は、予め記憶されている判定値と取得された電圧値との比較に基づき、前記電流値の検出誤差を補正する補正処理を行う請求項１〜５のうちいずれか１項に記載の燃料噴射制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の燃料噴射制御装置に関するものである。
【背景技術】
【０００２】
車両等に搭載される内燃機関の各気筒に燃料を噴射供給する燃料噴射弁として、例えば車載のバッテリから供給される電力によって動作する電磁ソレノイド式のものが知られている。この種の燃料噴射弁においては、燃料噴射制御装置が、燃料噴射弁本体に内蔵されるコイルへの通電時期及び通電時間を制御して弁体（ニードル）を開弁方向に駆動させることで、燃料噴射時期及び燃料噴射量を制御している。
【０００３】
近年では、燃料噴射量等の適正化を図る上で、燃料噴射弁の機差ばらつきや温度変化への配慮がなされている。具体的には、燃料噴射制御装置は、燃料噴射弁における駆動電流をフィードバック制御して、一定の燃料噴射量を得るといった対策が講じられている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１６３５４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、駆動電流の電流値を検出する電流検出回路を構成する回路素子等の違い（例えば、シャント抵抗の違い）により、検出された駆動電流の電流値と、実際の駆動電流の電流値に誤差が生じる場合がある。この場合、正しく制御をすることができなくなるという問題があった。
【０００６】
本発明は、上記課題に鑑みてなされたものであり、その主たる目的は、電流値の検出誤差を適正に補正する燃料噴射制御装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決する燃料噴射制御装置は、電源部からの電圧印加に基づき通電されるコイル、及び前記コイルの通電に応じて開閉される弁体を有する燃料噴射弁と、前記電源部から電圧印加が行われた場合の電流値を検出する電流検出部と、を備える燃料噴射システムに適用される。この燃料噴射制御装置は、前記電源部による前記コイルの通電の開始及び停止を制御する通電制御部と、前記通電制御部が前記通電を停止させた後に、前記燃料噴射弁における端子の電圧値を取得する電圧取得部と、前記電圧取得部により取得された電圧値に基づき、前記電流検出部により検出される電流値の検出誤差を補正する補正処理を行う補正部と、を備えることを要旨とする。
【０００８】
電流検出部を構成する素子などの違いにより、電流検出部により検出される電流値と、実際の電流値に誤差が生じる場合がある。ところで、通電制御部が通電を停止させた場合、燃料噴射弁が有するコイル内の磁場変化に基づく電磁誘導によって、燃料噴射弁の端子に電圧（誘導起電力）が生じる。印加停止後における電圧（誘導起電力）の変化態様は、燃料噴射弁のコイルに流れる電流が同じであれば、同じとなる一方、コイルに流れる電流が異なれば、同様に異なる。
【０００９】
そこで、電圧取得部は通電が停止された後、燃料噴射弁の端子における電圧値を取得し、補正部は、取得された電圧値に基づき、電流検出部により検出される電流値の検出誤差を補正する補正処理を行うように構成した。これにより、電流値の検出誤差を適正に補正することができる。
【図面の簡単な説明】
【００１０】
【図１】エンジン制御システムの概略構成を示す図。
【図２】ＥＣＵの構成を示すブロック図。
【図３】燃料噴射弁の構成及び状態を示す図。
【図４】燃料噴射弁の駆動動作を説明するためのタイミングチャート。
【図５】駆動電流と誘導起電力の関係を示す図。
【図６】補正値算出時における駆動電流を示す図。
【図７】補正値算出処理を示すフローチャート。
【図８】電流値設定処理を示すフローチャート。
【図９】（ａ）は、第２駆動制御を示す図、（ｂ）は、第１駆動制御を示す図。
【図１０】第２実施形態の補正値算出処理を示すフローチャート。
【図１１】第２実施形態の電流値設定処理を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、実施形態について説明を行う。なお、以下の実施形態相互において、互いに同一もしくは均等である部分には、図中、同一符号を付しており、同一符号の部分についてはその説明を援用する。本実施形態では、車両用のガソリンエンジンを制御するエンジン制御システムとして具体化している。
【００１２】
（第１実施形態）
図１に基づいてエンジン制御システムの概略構成を説明する。筒内噴射式の多気筒内燃機関であるエンジン１１の吸気管１２の最上流部には、エアクリーナ１３が設けられ、このエアクリーナ１３の下流側に、吸入空気量を検出するエアフローメータ１４が設けられている。このエアフローメータ１４の下流側には、モータ１５によって開度調節されるスロットルバルブ１６と、このスロットルバルブ１６の開度（スロットル開度）を検出するスロットル開度センサ１７とが設けられている。
【００１３】
スロットルバルブ１６の下流側にはサージタンク１８が設けられ、このサージタンク１８に、吸気管圧力を検出する吸気管圧力センサ１９が設けられている。サージタンク１８には、エンジン１１の各気筒２１に空気を導入する吸気マニホールド２０が接続され、エンジン１１の各気筒２１には、それぞれ筒内に燃料を直接噴射する電磁式の燃料噴射弁３０が取り付けられている。エンジン１１のシリンダヘッドには、気筒２１ごとに点火プラグ２２が取り付けられており、各気筒２１の点火プラグ２２の火花放電によって筒内の混合気に着火される。
【００１４】
エンジン１１の排気管２３には、排出ガスに基づいて混合気の空燃比又はリッチ／リーン等を検出する排出ガスセンサ２４（空燃比センサ、酸素センサ等）が設けられ、この排出ガスセンサ２４の下流側に、排出ガスを浄化する三元触媒等の触媒２５が設けられている。
【００１５】
エンジン１１のシリンダブロックには、冷却水温を検出する冷却水温センサ２６や、ノッキングを検出するノックセンサ２７が取り付けられている。クランク軸２８の外周側には、クランク軸２８が所定クランク角回転するごとにパルス信号を出力するクランク角センサ２９が取り付けられ、このクランク角センサ２９のクランク角信号に基づいてクランク角やエンジン回転速度が検出される。
【００１６】
これら各種センサの出力はＥＣＵ４０に入力される。ＥＣＵ４０は、マイクロコンピュータを主体として構成された電子制御ユニットであり、各種センサの検出信号を用いてエンジン１１の各種制御を実施する。ＥＣＵ４０は、エンジン運転状態に応じた燃料噴射量を算出して燃料噴射弁３０の燃料噴射を制御するとともに、点火プラグ２２の点火時期を制御する。
【００１７】
これら点火プラグ２２や燃料噴射弁３０には車載のバッテリ５１から電力が供給される。バッテリ５１の電圧が低下している場合には、エンジン１１の出力軸に接続されたオルタネータ５２を回転させてバッテリ５１に電力を供給することにより、バッテリ５１が所定電圧（本実施の形態においては１２Ｖ）となるように充電される。
【００１８】
図２に示すように、ＥＣＵ４０は、エンジン制御用のマイコン４１（エンジン１１の制御用のマイクロコンピュータ）や、インジェクタ駆動用の駆動ＩＣ４２（燃料噴射弁３０の駆動用ＩＣ）、電圧切替回路４３ａ，４３ｂ、電流検出回路４４ａ，４４ｂ等を備えている。マイコン４１が「燃料噴射制御装置」に相当する。マイコン４１は、エンジン運転状態（例えばエンジン回転速度やエンジン負荷等）に応じて要求噴射量を算出するとともに、この要求噴射量に基づき算出される噴射時間から駆動パルスを生成し、駆動ＩＣ４２に出力する。駆動ＩＣ４２は、駆動パルスに基づき燃料噴射弁３０を開弁駆動して、要求噴射量分の燃料を噴射させる。
【００１９】
電圧切替回路４３ａ，４３ｂは、各気筒２１の燃料噴射弁３０に印加される駆動用電圧を高電圧Ｖ２と低電圧Ｖ１とで切り替える回路である。具体的には、電圧切替回路４３ａ，４３ｂは、図示しないスイッチング素子のオンオフにより、低圧電源部４５と高圧電源部４６とのいずれかから燃料噴射弁３０のコイル３１に対して駆動電流を供給させる。
【００２０】
低圧電源部４５は、バッテリ５１のバッテリ電圧（低電圧Ｖ１）を燃料噴射弁３０に印加する低電圧出力回路を有している。高圧電源部４６は、バッテリ電圧を４０Ｖ〜７０Ｖとなるように昇圧した高電圧Ｖ２（昇圧電圧）を燃料噴射弁３０に印加する高電圧出力回路（昇圧回路）を有している。
【００２１】
駆動パルスにより燃料噴射弁３０が開弁駆動される際には、燃料噴射弁３０に対して低電圧Ｖ１と高電圧Ｖ２とが時系列で切り替えられて印加されるようになっている。この場合、開弁初期には高電圧Ｖ２が印加されることで燃料噴射弁３０の開弁応答性が確保され、それに引き続いて低電圧Ｖ１が印加されることで燃料噴射弁３０の開弁状態が保持される。
【００２２】
電流検出回路４４ａ，４４ｂは、「電流検出部」に相当し、燃料噴射弁３０の開弁駆動時における通電電流（駆動電流）の電流値を検出するものであり、その検出結果は駆動ＩＣ４２に逐次出力される。電流検出回路４４ａ，４４ｂは周知構成であればよく、例えばシャント抵抗と比較器とを有するものとなっている。
【００２３】
本実施形態において、高圧電源部４６と、低圧電源部４５と、これら各電源部からの電力供給により駆動される燃料噴射弁３０と、燃料噴射弁の駆動電流を検出する電流検出回路４４ａ，４４ｂと、を備えるシステムが、燃料噴射システムに相当する。
【００２４】
また本実施形態では、エンジン１１を４気筒エンジンとし、気筒２１ごとの燃料噴射弁３０による燃料噴射として、吸気行程と圧縮行程とにおいて各々噴射パルスを出力して燃料噴射を実施することとしている。なお、＃１〜＃４の気筒２１の燃焼順序を＃１→＃２→＃３→＃４としている。この場合、燃焼順序が前後に連続する２つの気筒２１では、各燃料噴射弁３０による燃料噴射の期間が重複することが懸念される。
【００２５】
そのため、図２の構成においては、４気筒エンジンであるエンジン１１において、燃焼順序が一つ置きとなる２つの気筒２１を１まとめにして駆動グループ１，２としており、駆動グループごとに各々電圧切替回路４３ａ，４３ｂ及び電流検出回路４４ａ，４４ｂが設けられている。すなわち、駆動グループ１の電圧切替回路４３ａ及び電流検出回路４４ａでは、＃１，＃３の気筒２１の燃料噴射弁３０について電圧切り替えと電流検出とが行われる構成となっている。また、駆動グループ２の電圧切替回路４３ｂ及び電流検出回路４４ｂでは、＃２，＃４の気筒２１の燃料噴射弁３０について電圧切り替えと電流検出とが行われる構成となっている。これにより、駆動グループ１，２ごとの駆動系統で各燃料噴射弁３０が駆動される。そして、各気筒２１において吸気行程と圧縮行程とで各々燃料噴射が実施されることに起因して、燃焼順序が前後に連続する２つの気筒２１で燃料噴射の期間が重複しても、各気筒２１の燃料噴射が適正に実施されるようになっている。
【００２６】
ここで、図３を参照して燃料噴射弁３０について説明する。燃料噴射弁３０は、通電により電磁力を生じさせるコイル３１と、その電磁力によってプランジャ３２（可動コア）と一体的に駆動されるニードル３３（弁体）と、プランジャ３２を閉弁方向とは反対方向へ付勢するバネ部材３４とを有している。ニードル３３がバネ部材３４の付勢力に抗して開弁位置に移動することで燃料噴射弁３０が開弁状態となり、燃料噴射が行われる。そして、駆動パルスの立ち下がりに伴いコイル３１の通電が停止されると、プランジャ３２とニードル３３とが閉弁位置に戻ることで燃料噴射弁３０が閉弁状態となり、燃料噴射が停止される。以下の説明では、プランジャ３２がストッパ３５に当たってそれ以上の開弁方向への移動が制限される位置を、ニードル３３の「フルリフト位置」と称する。
【００２７】
次に、燃料噴射弁３０の駆動動作を図４に基づき説明する。
【００２８】
時刻ｔａ１では、駆動パルスの立ち上がりに伴いバッテリ電圧を昇圧した高電圧Ｖ２が燃料噴射弁３０に印加される。時刻ｔａ２において、駆動電流の電流値が、あらかじめ定めたピーク値Ｉｐに到達すると、高電圧Ｖ２の印加が停止される。このとき、駆動電流の電流値がピーク値Ｉｐに到達するタイミング又はその直前のタイミングにおいて、ニードルリフトが開始され、そのニードルリフトに伴い燃料噴射が開始される。駆動電流の電流値がピーク値Ｉｐに到達したか否かの判定は、電流検出回路４４ａ，４４ｂにより検出された駆動電流の電流値に基づいて実施される。つまり、昇圧期間（ｔａ１〜ｔａ２）では、駆動ＩＣ４２により駆動電流の電流値がピーク値Ｉｐ以上になったか否かが判定され、駆動電流の電流値≧ピーク値Ｉｐになった時点で、電圧切替回路４３ａ，４３ｂにより印加電圧の切替（Ｖ２印加停止）が実施される。
【００２９】
駆動電流が時刻ｔａ３において、駆動電流の電流値があらかじめ定めた電流閾値Ｉｈを下回ると、バッテリ電圧である低電圧Ｖ１が燃料噴射弁３０に印加される。駆動電流の電流値が電流閾値Ｉｈを下回ったか否かの判定は、電流検出回路４４ａ，４４ｂにより検出された駆動電流の電流値に基づいて実施される。つまり、印加停止期間（ｔａ２〜ｔａ３）では、駆動ＩＣ４２により駆動電流の電流値が電流閾値Ｉｈ以下になったか否かが判定され、駆動電流の電流値≦電流閾値Ｉｈになった時点で、電圧切替回路４３ａ，４３ｂにより印加電圧の切替（Ｖ１印加開始）が実施される。
【００３０】
その後、一定の電流が維持されるように低電圧Ｖ１の印加及び印加停止が繰り返される。例えば、検出された電流値が第１目標電流値Ｉａ１以下となった場合には、低電圧Ｖ１が印加され、検出された電流値が、第１目標電流値Ｉａ１よりも一定値以上高くなった場合には、低電圧Ｖ１の印加が停止される。これにより、ニードル３３がフルリフト位置に到達した後においてそのフルリフト状態が維持され、燃料噴射が継続されることとなる。その後、時刻ｔａ５で駆動パルスがオフになると、燃料噴射弁３０への電圧印加が停止され、駆動電流がゼロになる。そして、燃料噴射弁３０のコイル通電の停止に伴いニードルリフトが終了され、それに合わせて燃料噴射が停止される。
【００３１】
このように、燃料噴射弁３０は駆動電流の電流値に基づき制御され、その駆動電流の電流値は、電流検出回路４４ａ，４４ｂにより検出される。しかしながら、電流検出回路４４ａ，４４ｂは、シャント抵抗などの回路素子を有しており、回路素子の違い等を原因として、実際の電流値（実電流値）と、検出される電流値（検出電流値）との間に誤差が生じる場合がある。このため、検出電流値に基づき、燃料噴射弁３０を駆動制御する場合、実電流値との誤差により、ニードル３３（弁体）が開弁状態又は閉弁状態となるタイミングに誤差が生じる可能性がある（つまり燃料噴射時間に誤差が生じる可能性がある）。すなわち、燃料噴射量に誤差が生じる可能性がある。
【００３２】
そこで、本実施形態のＥＣＵ４０では、電流値の検出誤差を適切に補正する構成及び処理を備えることとした。以下、詳しく説明する。
【００３３】
まず、電流値の検出誤差を把握するための原理について説明する。燃料噴射弁３０への通電を停止させた後（電圧印加を停止させた後）、電流変化に基づきコイル３１における磁束が変化し、誘導起電力が発生することが知られている。この誘導起電力は、同じ実電流値の駆動電流が流れている状態で通電が停止された場合、諸条件（ニードル３３の位置や、通電時間等）も同じであれば、同じとなるはずである。しかしながら、異なる実電流値の駆動電流が流れている状態で通電が停止された場合、諸条件も同じであったとしても、誘導起電力が異なる。なぜならば、コイル３１に流れる駆動電流（実電流値）の大きさに応じて、通電が停止した後における磁束の変化が異なるからである。
【００３４】
具体的には、図５に示すように、コイル３１への通電が停止した後、電圧値（誘導起電力）は、一定時間（時刻Ｔ３〜Ｔ４）極大値Ｖｍａｘを取り、その後（時刻Ｔ４以降）、逓減していく。その際、通電時における駆動電流の実電流値に応じて、逓減する際の傾きが異なる。より詳しくは、通電時における駆動電流の実電流値が大きいほど（実線で示す）、実電流値が小さい場合（破線で示す）と比較して、電圧値は緩やかに逓減する。つまり、通電時における駆動電流の実電流値が小さいほど、実電流値が大きい場合と比較して、急峻に逓減する。よって、実電流値と検出電流値との検出誤差を補正するためには、逓減する際における電圧値の傾きを比較すればよい。
【００３５】
すなわち、基準とする電圧値の傾きと比較して、緩やかに傾いている場合、基準とする電圧値に対応する電流値と比較して実電流値は大きいと判断して、検出電流値を大きくする補正（又は指示電流値を小さくする補正）を行えばよい。その際、基準とする電圧値の傾きと比較して、検出された電圧値の傾きが緩やかであるほど、誤差が大きいとして、検出電流値をより大きくする補正（指示電流値をより小さくする補正）を行えばよい。なお、指示電流値とは、燃料噴射弁３０を駆動制御する際、マイコン４１から駆動ＩＣ４２に指示され、検出電流値の判定基準（比較対象）となる電流値のことであり、例えば、前述したピーク値Ｉｐ、電流閾値Ｉｈ、及び第１目標電流値Ｉａ１等のことである。
【００３６】
同様に、基準とする電圧値の傾きと比較して、急峻に傾いている場合、基準とする電圧値に対応する電流値と比較して実電流値は小さいと判断して、検出電流値を小さくする補正（又は指示電流値を大きくする補正）を行えばよい。その際、基準とする電圧値の傾きと比較して、検出された電圧値の傾きが急であるほど、誤差が大きいとして、検出電流値をより小さくする補正（又は指示電流値をより大きくする補正）を行えばよい。
【００３７】
なお、本実施形態では、指示電流値を補正することにより、検出誤差を補正することとしている。また、電圧値の傾きをどのような方法で把握してもよい。例えば、所定時間における電圧値の変化量に基づき、電圧値の傾きを特定してもよいし、極大値Ｖｍａｘから所定電圧値に低下するまでの時間に基づき、電圧値の傾きを特定してもよい。また、所定電圧値における電圧値の傾きを微分等により算出してもよい。
【００３８】
本実施形態において、マイコン４１は、検出された電圧値が極大値Ｖｍａｘよりも小さい初期値Ｖｓとなった時刻Ｔ５から、初期値よりも小さい終期値Ｖｅとなった時刻Ｔ６，Ｔ７までの逓減時間を取得し、この逓減時間に基づき、電圧値の傾きを特定する。初期値Ｖｓ及び終期値Ｖｅは、誘電起電力（電圧値）の極大値Ｖｍａｘに応じてあらかじめ設定される。
【００３９】
そこで、本実施形態では、通電停止後の電圧値（誘電起電力）に基づき電流値の検出誤差を補正する。このため、燃料噴射弁３０の端子（本実施形態ではマイナス端子）における電圧値を検出する電圧検出回路４７を備えた。電圧検出回路４７が検出した電圧値は、マイコン４１に入力されるように構成されている。
【００４０】
また、誘電起電力に係る電圧値を検出するため、燃料噴射弁３０のマイナス端子と高圧電源部４６との間に、燃料噴射弁３０への通電を停止させた後において、燃料噴射弁３０のマイナス端子からの電流が流れることを許容する電気経路Ｌ１を設けた。この電気経路Ｌ１には、還流機構としてのダイオード４８が設けられている。このダイオード４８は、燃料噴射弁３０のマイナス端子から高圧電源部４６への電流を許可するように設けられている。これにより、誘電起電力が発生した場合、燃料噴射弁３０のマイナス端子から高圧電源部４６への素早く電流が流れるようになっている。
【００４１】
なお、本実施形態では、高圧電源部４６に電力（エネルギ）を還流させていたが、電圧値を検出できるのであれば、接続先は任意に変更してもよい。例えば、任意の抵抗を介してグランドに接続してもよい。また、燃料噴射弁３０のマイナス端子の電圧値を検出したが、プラス端子の電圧値を検出する構成としてもよい。
【００４２】
そして、マイコン４１は、コイル３１への通電開始及び通電停止を制御する通電制御部４１ａとしての機能を備えている。また、マイコン４１は、コイル３１への通電を停止させた後に、燃料噴射弁３０におけるマイナス端子の電圧値を、電圧検出回路４７により検出された電圧値を取得する電圧取得部４１ｂとしての機能を備えている。また、マイコン４１は、取得した電圧値に基づき、電流検出回路４４ａ，４４ｂにより検出される電流値の検出誤差を補正する補正処理を行う補正部４１ｃとしての機能を備えている。より詳しくは、マイコン４１は、取得した電圧値の傾きと、基準とする電圧値の傾きとの比較に基づき、補正値を算出する。そして、マイコン４１は、燃料噴射弁３０を駆動させる場合、補正値を利用して指示電流値（ピーク値、閾値、目標電流値等）を補正する。これにより、電流検出回路４４により検出される電流値の検出誤差が適正に補正される。
【００４３】
ところで、通電を停止させた後、ニードル３３がコイル３１から離れるように移動すると、コイル３１の磁束変化に影響を与える。つまり、誘電起電力に影響を与え、誤差の要因となり得る（適切な補正値を算出できない可能性がある）。
【００４４】
そこで、マイコン４１は、補正値を算出する場合、ニードル３３が閉弁状態のままとなる条件でコイル３１を非開弁通電し、非開弁通電される状態で検出された電圧値を取得する。そして、マイコン４１は、この電圧値に基づき、補正値を算出することとしている。
【００４５】
また、駆動電流の電流値が一定となるように電圧印加及び印加停止しても、通電開始後、所定時間が経過するまで駆動電流は変化する。駆動電流の変化中に通電を停止させると、コイル３１の磁束変化に影響を与える可能性がある。つまり、誘電起電力に影響を与え、誤差の要因となり得る（適切な補正値を算出できない可能性がある）。
【００４６】
そこで、マイコン４１は、補正値を算出する場合、補正値を算出しない場合（通常の燃料噴射制御）に比べて、小さい値の定電流が駆動電流として流れるように制御する。具体的には、マイコン４１は、補正値を算出する場合、第１目標電流値Ｉａ１よりも低い第２目標電流値Ｉａ２を基準として一定の駆動電流が流れるように制御する。
【００４７】
すなわち、図６に示すように、駆動ＩＣ４２は、駆動パルスの立ち上がりに伴い、高電圧Ｖ２を印加する。そして、駆動ＩＣ４２は、検出電流値が第２目標電流値Ｉａ２以上となった場合には、高電圧Ｖ２の印加を停止する。その後、駆動ＩＣ４２は、駆動パルスがオフされるまで、検出電流値が第２目標電流値Ｉａ２以下となった場合には、低電圧Ｖ１を印加し、第２目標電流値Ｉａよりも一定値以上、高くなった場合には、低電圧Ｖ１の印加を停止する。これにより、通電時における駆動電流の変化に基づく磁束変化を早く収束させ、通電停止後、補正値を精度よく算出することが可能となる。このため、マイコン４１は、定電流制御部として機能する。
【００４８】
次に、図７を参照して、補正値を算出するための補正値算出処理について説明する。この補正値算出処理は、所定周期ごとにマイコン４１により実行され、補正値が算出（確定）されるまで繰り返される。なお、補正値は、所定時期ごとに算出されればよく、例えば、１日に一度又はイグニッションスイッチがオンされた場合に一度算出されればよい。
【００４９】
そして、補正値算出処理は、気筒２１毎にそれぞれ実行されるように構成されている。また、補正値算出処理が各気筒２１について万遍なく実行されるように構成されている。例えば、＃１→＃２→＃３→＃４の順番で対象とする気筒２１を変更して補正値算出処理が実行される。なお、以下の説明で、今回の補正値算出処理において対象とする気筒２１のことを、単に対象とする気筒２１と示す場合がある。
【００５０】
補正値算出処理において、マイコン４１は、まず、燃料噴射が要求されているか否かを判定する（ステップＳ１１）。すなわち、前述したように、補正値を算出する場合、非開弁通電される状態で検出された電圧値を取得する必要がある。そこで、ステップＳ１１において、マイコン４１は、燃料噴射が要求されているか否かを判定する。例えば、マイコン４１は、エンジン運転状態などに基づき算出された燃料噴射量が０でない場合には、燃料噴射が要求されていると判定し、燃料噴射量が０である場合には、燃料噴射が要求されていないと判定する。
【００５１】
ステップＳ１１の判定結果が肯定の場合（燃料噴射が要求されている場合）、マイコン４１は、補正値を算出することなく、補正値算出処理を終了する。一方、ステップＳ１１の判定結果が否定の場合（燃料噴射が要求されていない場合）、マイコン４１は、補正値を算出するため、ステップＳ１２に移行する。
【００５２】
ステップＳ１１の判定結果が否定の場合、マイコン４１は、図８に示す電流値設定処理を実施し（ステップＳ１２）、ステップＳ１３に移行する。この電流値設定処理では、第２目標電流値Ｉａ２の指示や、補正比率γの算出等が行われる。この電流値設定処理については、詳しくは後述する。
【００５３】
そして、マイコン４１は、電流値設定処理で指示された第２目標電流値Ｉａ２に基づき対象となる気筒２１の燃料噴射弁３０を通電（駆動）させる（ステップＳ１３）。具体的には、マイコン４１は、第２目標電流値Ｉａ２が駆動ＩＣ４２に指示された後、駆動パルスを駆動ＩＣ４２に出力する。
【００５４】
駆動ＩＣ４２は、駆動パルスの立ち上がりに伴い、対象とする気筒２１の燃料噴射弁３０に対して高電圧Ｖ２を印加する。そして、駆動ＩＣ４２は、電流検出回路４４ａ，４４ｂの検出電流値が、第２目標電流値Ｉａ２以上となった場合には、高電圧Ｖ２の印加を停止する。その後、駆動ＩＣ４２は、駆動パルスがオフされるまで、検出電流値が第２目標電流値Ｉａ２以下となった場合には、対象とする気筒２１の燃料噴射弁３０に対して低電圧Ｖ１を印加する。また、駆動ＩＣ４２は、第２目標電流値Ｉａ２よりも一定値以上、高くなった場合には、低電圧Ｖ１の印加を停止する。所定時間経過後、マイコン４１は、駆動パルスの出力を停止して、対象とする気筒２１の燃料噴射弁３０への通電を停止させ（電圧印加を停止させ）、ステップＳ１４に移行する。このステップＳ１３により、マイコン４１は、定電流制御部として機能する。
【００５５】
通電を停止させた後、マイコン４１は、電圧検出回路４７から、対象とする気筒２１の燃料噴射弁３０のマイナス端子における電圧値を取得する（ステップＳ１４）。そして、マイコン４１は、取得した電圧値に基づき、電圧値の傾きとしての逓減時間を取得し、ＥＣＵ４０が備える記憶部に記憶する（ステップＳ１５）。具体的には、マイコン４１は、取得した電圧値が初期値Ｖｓとなった時刻から、終期値Ｖｅとなった時刻までの逓減時間を取得し、記憶部に記憶する。その際、逓減時間を取得した取得回数（すなわち、誘電起電力を検出した回数）も合わせて記憶する。つまり、取得回数に１加算する。
【００５６】
なお、対象とする気筒２１ごとに区別して逓減時間及び取得回数を記憶する。すなわち、♯１の気筒２１を対象としている場合、♯１の気筒２１における逓減時間であること及び♯１の気筒２１における取得回数であることを記憶部に記憶する。他の気筒２１（♯２〜４）も同様である。
【００５７】
その後、マイコン４１は、取得回数が所定回数（例えば、４０回）以上となったか否かを判定する（ステップＳ１６）。ステップＳ１６においては、各気筒２１における取得回数がすべて所定回数以上となったか否かを判定する。この所定回数は、任意に変更してもよく、例えば、４０〜１００回における任意の回数に変更してもよい。ステップＳ１６の判定結果が否定の場合、補正値算出処理を終了し、ステップＳ１６の判定結果が肯定の場合、ステップＳ１７に移行する。
【００５８】
ステップＳ１６の判定結果が肯定の場合、マイコン４１は、気筒２１毎に、取得回数分の逓減時間を読みだし、駆動グループ１，２毎の平均値（逓減時間の平均）を算出する（ステップＳ１７）。そして、マイコン４１は、駆動グループ１，２毎の平均値を比較し、平均値に差があるか否かを判定する（ステップＳ１８）。
【００５９】
ステップＳ１８において、マイコン４１は、例えば、駆動グループ１，２における平均値の差が閾値以上である場合、差があると判定する。閾値は、０又は０近傍の値であり、あらかじめ設定されている。すなわち、ステップＳ１７，１８において、各駆動グループ１，２における電圧値（誘導起電力）の傾きが同一であるか否か（差がないか否か）を判定している。なお、本実施形態では、差分に基づき判定したが、比率に基づき判定してもよい。
【００６０】
ステップＳ１８の判定結果が肯定の場合（差がある場合）、補正値算出処理を終了する。一方、ステップＳ１８の判定結果が否定の場合（差がない場合）、マイコン４１は、電流値設定処理において、算出された補正比率γを補正値（補正係数）として確定し、記憶部に記憶する（ステップＳ１９）。電流値設定処理において、補正比率γは、気筒２１ごとに算出される（後述）。このため、ステップＳ１９では、気筒２１毎の補正比率γが気筒２１毎の補正値としてそれぞれ確定されて、記憶される。なお、補正比率γは、取得回数分記憶されている。このため、ステップＳ１９において補正値として確定される補正比率γは、最新の補正比率γであってもよく、記憶されている補正比率γの平均値であってもよい。
【００６１】
また、マイコン４１は、ステップＳ１９において補正完了フラグを記憶部に設定する。そして、補正値算出処理を終了する。この補正完了フラグが設定されている場合、補正値算出処理は実行されないようになっている。補正完了フラグは任意のタイミングでリセットされる。例えば、前述した所定時期ごとにリセットされるように構成すればよい。これにより、補正値は、所定時期ごとに算出（確定）されることとなる。
【００６２】
以上のように、補正値算出処理では、各気筒２１間において、電圧値にばらつきがある場合、適切な補正比率γが算出されていないとして、適切な補正比率γが算出されるまで繰り返し補正値算出処理が実行される。一方、各気筒２１間において、電圧値にばらつきがない場合、適切な補正比率γが算出されているとして、当該補正比率γを補正値として確定する。
【００６３】
次に、図８に基づきステップＳ１２の電流値設定処理について説明する。
【００６４】
電流値設定処理において、まず、マイコン４１は、対象とする気筒２１に関して、すでに補正値算出処理が実行されて、その結果（前回の結果）が記憶部に記憶されているか否かを判定する（ステップＳ２１）。前回の結果とは、前回補正値算出処理が実行されたときにおいて指示された第２目標電流値Ｉａ２、及び当該第２目標電流値Ｉａ２に基づき駆動制御された後における電圧値の傾き（逓減時間）のことである。
【００６５】
この判定結果が否定の場合、マイコン４１は、予め決められた初期値を、今回指示する第２目標電流値Ｉａ２として決定する（ステップＳ２２）。すなわち、初めて第２目標電流値Ｉａ２を決定する場合、初期値を第２目標電流値Ｉａ２とする。第２目標電流値Ｉａ２の初期値は、予め決められており、記憶部に記憶されている。
【００６６】
一方、ステップＳ２１の判定結果が肯定の場合、マイコン４１は、前回の結果に基づき、今回指示する第２目標電流値Ｉａ２を決定する（ステップＳ２３）。ステップＳ２３において、マイコン４１は、前回取得した電圧値の傾きと、基準とすべき電圧値の傾きとを比較して、前回の第２目標電流値Ｉａ２を補正して、今回指示する第２目標電流値Ｉａ２を算出する。
【００６７】
つまり、前述したように、マイコン４１は、基準とする電圧値の傾きと比較して、緩やかに傾いている場合、前回における実電流値は、基準とする電流値（基準とする電圧値に対応する電流値）と比較して大きいと判断できる。そこで、マイコン４１は、基準とする電圧値の傾きと比較して、緩やかに傾いている場合、今回指示する第２目標電流値Ｉａ２を、前回における第２目標電流値Ｉａ２と比較して小さくする補正を行う。
【００６８】
一方、急峻に傾いている場合には、前回における実電流値は、基準とする電流値と比較して小さいと判断できる。そこで、マイコン４１は、基準とする電圧値の傾きと比較して、急峻に傾いている場合には、今回指示する第２目標電流値Ｉａ２を、前回における第２目標電流値Ｉａ２と比較して大きくする補正を行う。
【００６９】
なお、基準とする電圧値の傾きは、予め決められた気筒２１（例えば、♯１の気筒２１）における電圧値の傾きであってもよいし、予め実験により計測された電圧値の傾き（判定値）であってもよい。また、本実施形態において、電圧値の傾きは、逓減時間によって特定される。基準とする電圧値の傾きを予め決められた気筒２１とする場合、複数の電流検出回路４４ａ，４４ｂのうちいずれかを基準として、他の電流検出回路４４ａ，４４ｂにより検出される電流値の検出誤差を補正することとなる。
【００７０】
より具体的には、ステップＳ２３において、数式（１）に基づき、今回指示する第２目標電流値Ｉａ２を算出する。すなわち、基準とする逓減時間（基準とする電圧値の傾き）を、前回取得した逓減時間（前回取得した電圧値の傾き）により除算した値（比率）に、定数β及び前回指示した第２目標電流値Ｉａ２を乗算することにより、今回指示する第２目標電流値を算出する。定数βは実験などにより適切な値が設定され、記憶部に記憶されている。
【００７１】
今回指示する第２目標電流値Ｉａ２＝（基準とする逓減時間／前回取得した逓減時間）×定数β×前回指示した第２目標電流値Ｉａ２・・・（１）
これにより、ステップＳ２３において、マイコン４１は、基準とする電圧値の傾きと取得される電圧値の傾きが一致するように（少なくとも前回よりも差が少なくなるように）、今回指示する第２目標電流値Ｉａ２を算出する。
【００７２】
また、マイコン４１は、ステップＳ２３で算出された今回指示する第２目標電流値Ｉａ２を、第２目標電流値Ｉａ２の初期値で除算することにより、補正比率γを算出する（ステップＳ２４）。補正比率γは、対象とする気筒２１毎に算出される。このため、マイコン４１は、算出した補正比率γを、今回の補正値算出処理において対象とする気筒２１と対応付けて記憶部に記憶する。
【００７３】
その後、マイコン４１は、取得回数が所定回数以上であるか否かを判定する（ステップＳ２５）。このステップＳ２５において、対象とする気筒２１における取得回数が所定回数以上であるか否かを判定する。所定回数は、ステップＳ１６における所定回数と同一回数である。この判定結果が肯定の場合、マイコン４１は、対象とする気筒２１に対応付けて記憶されていた逓減時間及び取得回数をリセットする（ステップＳ２６）。なお、すべての気筒２１に対応付けられて記憶されていた逓減時間及び取得回数をリセットしてもよい。
【００７４】
ステップＳ２５の判定結果が否定の場合、又はステップＳ２２，Ｓ２６の処理後、マイコン４１は、第２目標電流値Ｉａ２を駆動ＩＣ４２に指示する（ステップＳ２７）。
【００７５】
より詳しくは、ステップＳ２５の判定結果が否定の場合、又はステップＳ２６の処理後、マイコン４１は、ステップＳ２３で算出された第２目標電流値Ｉａ２を、駆動ＩＣ４２に指示する。また、ステップＳ２２の処理後、マイコン４１は、ステップＳ２２で決定した第２目標電流値Ｉａ２（初期値）を、駆動ＩＣ４２に指示する。その後、電流値設定処理を終了する。
【００７６】
そして、補正算出処理において確定された補正値は、燃料噴射弁３０を駆動制御する際に利用される。すなわち、マイコン４１は、ピーク値Ｉｐ、電流閾値Ｉｈ、第１目標電流値Ｉａ１など、駆動ＩＣ４２に指示する指示電流値に補正値をそれぞれ乗算して算出された指示電流値（補正後の指示電流値）を駆動ＩＣ４２に指示する。より詳しくは、マイコン４１は、ピーク値Ｉｐの初期値、電流閾値Ｉｈの初期値、及び第１目標電流値Ｉａ１の初期値にそれぞれ補正値を乗算することにより、補正後のピーク値Ｉｐ、補正後の電流閾値Ｉｈ及び補正後の第１目標電流値Ｉａ１を算出する。そして、補正後の指示電流値を駆動ＩＣ４２に指示する。その際、乗算される補正値は、駆動させる燃料噴射弁３０の気筒２１に対応する補正値である。
【００７７】
駆動ＩＣ４２は、これら補正後の指示電流値に基づき、駆動制御を行う。例えば、駆動ＩＣ４２は、駆動パルスの立ち上がりに伴い高電圧Ｖ２を燃料噴射弁３０に印加し、電流検出回路４４ａ，４４ｂにより検出電流値が、補正後のピーク値Ｉｐに到達すると、高電圧Ｖ２の印加を停止する。そして、駆動ＩＣ４２は、検出電流値が、補正後の電流閾値Ｉｈを下回ると、低電圧Ｖ１を燃料噴射弁３０に印加する。その後、駆動ＩＣ４２は、検出電流値が補正後の第１目標電流値Ｉａ１以下となった場合には、低電圧Ｖ１を印加し、補正後の第１目標電流値Ｉａ１よりも一定値以上、高くなった場合には、低電圧Ｖ１の印加を停止する。
【００７８】
電流検出回路４４ａ，４４ｂにより検出された検出電流値は、実電流値との間で検出誤差があるが、それを相殺するように指示電流値を補正値に基づき補正している。このため、電流検出回路４４ａ，４４ｂにより検出された電流値の検出誤差が適切に補正されることとなる。また、気筒２１間で差がなくなるように、補正値が算出されるため、補正後の指示電流値に基づき駆動制御することにより、燃料噴射弁３０（気筒２１）ごとのばらつきが抑制される。
【００７９】
上記第１実施形態によれば以下の優れた効果を奏することができる。
【００８０】
電流検出回路４４ａ，４４ｂを構成する素子などの違いにより、電流検出回路４４ａ，４４ｂにより検出される検出電流値と、実電流値に誤差が生じる場合がある。ところで、マイコン４１が通電を停止させた後、燃料噴射弁３０が有するコイル３１内の磁場変化に基づく電磁誘導によって、燃料噴射弁３０の端子に電圧（誘導起電力）が生じる。通電停止後における電圧（誘導起電力）の変化態様は、燃料噴射弁３０のコイル３１に流れる駆動電流（実電流値）が同じであれば、同じとなる一方、コイル３１に流れる駆動電流（実電流値）が異なれば、同様に異なる。
【００８１】
そこで、マイコン４１は、燃料噴射弁３０の通電が停止された後、燃料噴射弁３０のマイナス端子における電圧値を取得し、取得された電圧値の傾きに基づき、検出電流値と実電流値との検出誤差を補正する補正処理を行うようにした。これにより、電流値の検出誤差を好適に補正することができる。
【００８２】
ニードル３３が開弁した場合、通電停止後、ニードル３３の移動により、コイル３１内の磁束変化に影響を与え、その結果、誘導起電力に影響を与える可能性がある。そこで、マイコン４１は、非開弁通電される状態で取得された電圧値に基づいて、補正値を算出し、当該補正値により、検出誤差を補正することとした。これにより、ニードル３３の挙動による影響を受けない状態で取得した電圧値に基づき検出誤差を補正することができ、誤差をより抑制することができる。
【００８３】
通電開始後、所定時間が経過するまで、駆動電流が安定しない（変化している）可能性があり、その結果、コイル３１の磁束変化に影響を与える。磁束変化に影響を与えた場合、通電停止後においても、その影響を受けて取得される電圧値に誤差が生じる可能性がある。そこで、マイコン４１は、補正値算出処理を実施する場合に、補正値算出処理を実施しない場合に比べて、定電流を小さい値に制御することとした。具体的には、マイコン４１は、補正値を算出する場合に燃料噴射弁３０の通電制御を行う際、第１目標電流値Ｉａ１よりも低い第２目標電流値Ｉａ２を指定し、当該第２目標電流値Ｉａ２を基準とする定電流が流れるようにした。これにより、コイル３１の磁束変化を早く収束させ、補正値の精度を向上させることができる。
【００８４】
電圧値の極大値Ｖｍａｘから減衰開始するまでの時間は、異なる場合がある。この時間は、実電流値に差がない場合であっても、異なる場合がある。そこで、取得される電圧値の極大値Ｖｍａｘから減衰を開始した時点を始期とし、所定電圧に減衰した時点を終期とする減衰時間を電圧値の傾きとして、比較し、補正値を算出することとした。これにより、より適切な補正値を算出することができ、検出誤差を好適に抑制することができる。
【００８５】
マイコン４１は、基準とする逓減時間（電圧値の傾き）と、取得された逓減時間（電圧値の傾き）との比較し、差がなくなるように補正比率γを算出した。そして、気筒２１間に差がない場合には、算出していた補正比率γを補正値として確定した。この補正値に基づき指示電流値を補正することにより、検出誤差を抑制できる。また、気筒２１間の差がない場合に、算出していた補正比率γを補正値として確定する。このため、気筒２１間でばらつきを抑制できる。
【００８６】
検出誤差を補正する際、駆動ＩＣ４２に指示する指示電流値を補正した。これにより、検出電流値を取得する都度、検出電流値を補正する場合と比較して処理量を減らすことができる。また、取得回数が所定回数となるまで繰り返し電圧値を取得する。これにより、検出誤差を適切に抑制することができる。
【００８７】
マイコン４１は、取得した電圧値の平均値が駆動グループ１，２間で差がなくなるまで、前回の結果に基づき、前回指示した第２目標電流値Ｉａ２を補正（修正）して、今回指示する第２目標電流値Ｉａ２を決定することを繰り返す。このため、１回の結果に基づき、検出誤差の補正を行う場合と比較して、適正な補正を行うことができる。
【００８８】
（第２実施形態）
第２実施形態では、補正値を算出する場合、駆動制御の方法を異ならせる点などが第１実施形態と異なる。以下、第１実施形態とは異なる点を中心に、詳しく説明する。
【００８９】
燃料噴射弁３０への通電終了後、電圧検出回路４７により検出される電圧値には、電流検出回路４４ａ，４４ｂ以外の要素により違い（誤差）が生じる可能性がある。例えば、ＥＣＵ４０内における回路や燃料噴射弁３０内の回路等における配線抵抗や、浮遊容量等が異なることにより、違いが生じる可能性がある。このため、基準とする気筒２１において取得された電圧値と、他の気筒２１において取得された電圧値とを比較しても、電流検出回路４４ａ，４４ｂ以外の要素による違いか、電流値の検出誤差を起因とする違いかを区別できず、適切な補正値を算出できない可能性がある。
【００９０】
そこで、第２実施形態では、電流検出回路４４ａ，４４ｂ以外の要素による電圧値の違い（以下、単に第１誤差と示す）と、電流値の検出誤差を起因とする電圧値の違い（以下、単に第２誤差と示す）とを区別し、第２誤差に基づき補正値を算出するようにした。まず、第１誤差と、第２誤差とを区別するための原理について説明する。
【００９１】
図９（ａ）における電圧値Ｖａは、検出電流値と第２目標電流値Ｉａ２との偏差に基づいて燃料噴射弁３０を駆動させ、通電を停止させた後に検出（取得）された電圧値を示している。すなわち、マイコン４１が、第１実施形態のステップＳ１３と同様にして、第２目標電流値Ｉａ２に基づき燃料噴射弁３０を通電させた場合において、その後に取得される電圧値を電圧値Ｖａとして示している。なお、図９において基準となる電圧値を実線で示している。
【００９２】
なお、検出電流値と第２目標電流値Ｉａ２との偏差に基づいて燃料噴射弁３０を駆動させる駆動制御を、第２駆動制御と示す。この電圧値Ｖａの傾きには、前述したように、第１誤差及び第２誤差が含まれている。
【００９３】
一方、図９（ｂ）における電圧値Ｖｂは、所定電圧の短駆動パルスにより燃料噴射弁３０を駆動させ、通電を停止させた後に、検出（取得）される電圧値を示している。より詳しくは、マイコン４１が、短駆動パルスを出力し、当該短駆動パルスの出力期間中、高電圧Ｖ２を燃料噴射弁３０に印加させた場合において、その後に取得される電圧値を電圧値Ｖｂとして示している。
【００９４】
なお、短駆動パルスは、第２駆動制御における駆動パルスよりも短く、一定時間に定められている。また、第２駆動制御とは異なり、指示電流値（第２目標電流値Ｉａ２）を指示せず、高電圧Ｖ２を印加させる。所定電圧の短パルス通電により燃料噴射弁３０を駆動させる駆動制御を、第１駆動制御と示す。本実施形態では、電流値がピーク値Ｉｐに到達する前まで、短駆動パルスが出力されるように短駆動パルスの出力時間が定められている。
【００９５】
この電圧値Ｖｂの傾きには、指示電流値を指示することなく、高電圧Ｖ２を短時間印加するため、第２誤差が含まれていない。その一方、この電圧値Ｖｂの傾きには、電流検出回路４４ａ，４４ｂ以外の要素による影響を受けるため、第１誤差が含まれることとなる。
【００９６】
したがって、この電圧値Ｖａと、電圧値Ｖｂとを比較することにより、第２誤差を抽出することが可能となる。つまり、電圧値Ｖａから第１誤差を除くこと（少なくとも影響を小さくすること）が可能となる。なお、電圧値を比較する場合、駆動制御の方法が異なる以外は、同じ条件で取得された電圧値を比較することが望ましい。例えば、同じ気筒２１を対象として駆動制御方法を変えて駆動させた場合に、取得される電圧値を比較することが望ましい。
【００９７】
以上のことを踏まえて、第２実施形態では、図１０に示す補正値算出処理を行っている。以下、詳しく説明する。
【００９８】
図１０に示す補正値算出処理は、第１実施形態と同様、所定周期ごとにマイコン４１により実行され、補正値が算出（確定）されるまで繰り返される。なお、補正値算出処理は、第１実施形態と同様、各気筒２１を対象としてそれぞれ実行されるように構成されている。
【００９９】
補正値算出処理において、マイコン４１は、まず、燃料噴射が要求されているか否かを判定する（ステップＳ１１１）。ステップＳ１１１の判定結果が肯定の場合（燃料噴射が要求されている場合）、マイコン４１は、補正値を算出することなく、補正値算出処理を終了する。一方、ステップＳ１１１の判定結果が否定の場合（燃料噴射が要求されていない場合）、マイコン４１は、補正値を算出するため、ステップＳ１１２に移行する。
【０１００】
ステップＳ１１１の判定結果が否定の場合、マイコン４１は、第１駆動制御後の電圧値が取得された取得回数を示す第１取得回数が第１所定回数（例えば４０回）以上であるか否かを判定する（ステップＳ１１２）。
【０１０１】
ステップＳ１１２の判定結果が否定の場合、マイコン４１は、第１駆動制御にて、対象となる気筒２１の燃料噴射弁３０を通電させる（ステップＳ１１３）。具体的には、マイコン４１は、第２目標電流値Ｉａ２を指示せず、短駆動パルスを駆動ＩＣ４２に出力する。駆動ＩＣ４２は、短駆動パルスの立ち上がりに伴い、高電圧Ｖ２を印加する。そして、駆動ＩＣ４２は、短駆動パルスの立ち上がりに伴い、高電圧Ｖ２を印加停止する。
【０１０２】
通電を停止させた後、マイコン４１は、電圧検出回路４７から、対象となる気筒２１の燃料噴射弁３０のマイナス端子における電圧値（第１取得電圧値）を取得する（ステップＳ１１４）。そして、マイコン４１は、取得した電圧値に基づき、第１駆動制御後の電圧値の傾きとしての第１逓減時間を取得し、記憶部に記憶する（ステップＳ１１５）。具体的には、マイコン４１は、取得した電圧値が初期値Ｖｓとなった時刻から、終期値Ｖｅとなった時刻までの時間を第１逓減時間として取得し、記憶部に記憶する。その際、第１取得回数も合わせて更新（記憶）する。つまり、第１取得回数に１加算する。
【０１０３】
なお、対象とする気筒２１ごとに区別して第１逓減時間及び第１取得回数を記憶する。すなわち、♯１の気筒２１を対象としている場合、♯１の気筒２１における第１逓減時間であること及び♯１の気筒２１における第１取得回数であることを記憶部に記憶する。他の気筒２１（♯２〜４）も同様である。
【０１０４】
その後、マイコン４１は、第１取得回数が第１所定回数（例えば、４０回）以上となったか否かを判定する（ステップＳ１１６）。ステップＳ１１６においては、各気筒２１における第１取得回数がすべて第１所定回数以上となったか否かを判定する。ステップＳ１１６の判定結果が否定の場合、補正値算出処理を終了し、ステップＳ１１６の判定結果が肯定の場合、ステップＳ１１７に移行する。
【０１０５】
ステップＳ１１６の判定結果が肯定の場合、マイコン４１は、気筒２１毎に、第１取得回数分、第１逓減時間を読みだし、気筒２１毎に、第１逓減時間の平均値（以下、第１平均値と示す）を算出する（ステップＳ１１７）。そして、マイコン４１は、気筒２１ごとの第１平均値を記憶し、補正値算出処理を終了する。
【０１０６】
一方、ステップＳ１１２の判定結果が肯定の場合、マイコン４１は、ステップＳ１１８に移行する。すなわち、第１取得回数が所定回数以上であり、ステップＳ１１７において、第１平均値がすでに記憶されている場合、ステップＳ１１８に移行する。
【０１０７】
マイコン４１は、図１１に示す電流値設定処理を実施し（ステップＳ１１８）、ステップＳ１１９に移行する。この電流値設定処理では、第２目標電流値Ｉａ２の指示や、補正比率γの算出等が行われる。この電流値設定処理については、詳しくは後述する。
【０１０８】
そして、マイコン４１は、第２駆動制御にて、対象となる気筒２１の燃料噴射弁３０を通電させる（ステップＳ１１９）。すなわち、マイコン４１は、第２目標電流値Ｉａ２が駆動ＩＣ４２に指示された後、駆動パルスを駆動ＩＣ４２に出力する。
【０１０９】
駆動ＩＣ４２は、駆動パルスの立ち上がりに伴い、対象となる気筒２１の燃料噴射弁３０に対して高電圧Ｖ２を印加する。そして、駆動ＩＣ４２は、電流検出回路４４ａ，４４ｂの検出電流値が、第２目標電流値Ｉａ２以上となった場合には、高電圧Ｖ２の印加を停止する。その後、駆動ＩＣ４２は、駆動パルスがオフされるまで、検出電流値が第２目標電流値Ｉａ２以下となった場合には、対象となる気筒２１の燃料噴射弁３０に対して低電圧Ｖ１を印加する。また、駆動ＩＣ４２は、第２目標電流値Ｉａ２よりも一定値以上、高くなった場合には、低電圧Ｖ１の印加を停止する。これにより、マイコン４１は、第２目標電流値Ｉａ２を基準とする定電流を燃料噴射弁３０に流させる。定電流が流れてから所定時間経過後、マイコン４１は、駆動パルスの出力を停止して、燃料噴射弁３０への通電を停止させ（電圧印加を停止させ）、ステップＳ１２０に移行する。
【０１１０】
通電を停止させた後、マイコン４１は、電圧検出回路４７から、対象となる気筒２１の燃料噴射弁３０のマイナス端子における電圧値（第２取得電圧値）を取得する（ステップＳ１２０）。そして、マイコン４１は、取得した電圧値に基づき、第２駆動制御後の電圧の傾きとしての第２逓減時間を取得し、記憶部に記憶する（ステップＳ１２１）。第２逓減時間の取得方法は、前述した第１逓減時間の取得方法と同様である。その際、第２逓減時間を取得した取得回数を示す第２取得回数も合わせて記憶する。つまり、第２取得回数に１加算する。また、対象とする気筒２１ごとに区別して第２逓減時間及び第２取得回数を記憶する。
【０１１１】
その後、マイコン４１は、第２取得回数が第２所定回数（例えば、５０回）以上となったか否かを判定する（ステップＳ１２２）。ステップＳ１２２においては、マイコン４１は、各気筒２１における第２取得回数がすべて第２所定回数以上となったか否かを判定する。ステップＳ１２２の判定結果が否定の場合、マイコン４１は、補正値算出処理を終了し、ステップＳ１２２の判定結果が肯定の場合、ステップＳ１２３に移行する。
【０１１２】
ステップＳ１２２の判定結果が肯定の場合、マイコン４１は、気筒２１毎に、第２所定回数分、第２逓減時間を読みだし、気筒２１毎に、第２逓減時間の平均値（以下、第２平均値と示す）を算出する（ステップＳ１２３）。
【０１１３】
そして、マイコン４１は、気筒２１毎に、第１平均値を記憶部から読み出す。マイコン４１は、気筒２１毎に、第２平均値から読み出した第１平均値を減算することにより、第２誤差に基づく時間差（電流値の検出誤差に基づく時間差）の平均である差分値を算出する（ステップＳ１２４）。ステップＳ１２４では、♯１の気筒２１における第２平均値から、♯１の気筒２１における第１平均値を減算することにより、♯１の気筒２１における差分値を算出する。他の気筒２１も同様である。
【０１１４】
そして、マイコン４１は、各気筒２１における差分値に基づき、駆動グループ１，２毎の差分値の平均を算出し、駆動グループ１，２間で差分値の平均に差があるか否か（差が閾値以上であるか否か）を判定する（ステップＳ１２５）。すなわち、駆動グループ１，２間において、第２誤差に基づく時間差の平均に差があるか否かを判定する。
【０１１５】
ステップＳ１２５の判定結果が肯定の場合（差がある場合）、補正値算出処理を終了する。一方、ステップＳ１２５の判定結果が否定の場合（差がない場合）、マイコン４１は、電流値設定処理において、算出された補正比率γを補正値（補正係数）として確定し、記憶部に記憶する（ステップＳ１２６）。電流値設定処理において、補正比率γは、気筒２１ごとに算出される。このため、ステップＳ１２６では、気筒２１毎の補正比率γが気筒２１毎の補正値としてそれぞれ確定されて、記憶される。なお、補正比率γは、第２取得回数分記憶されている。このため、ステップＳ１２６において補正値として確定される補正比率γは、最新の補正比率γであってもよく、記憶されている補正比率γの平均値であってもよい。また、ステップＳ１２６において補正完了フラグを設定する。そして、補正値算出処理を終了する。
【０１１６】
次に、図１１に基づきステップＳ１１８の電流値設定処理について説明する。
【０１１７】
電流値設定処理において、まず、マイコン４１は、対象とする気筒２１に関して、すでに電流値設定処理が実行されて、その結果（前回の結果）が記憶部に記憶されているか否かを判定する（ステップＳ１３１）。前回の結果とは、前回補正値算出処理のステップＳ１１９が実行されたときにおいて指示された第２目標電流値Ｉａ２、及び当該第２目標電流値Ｉａ２に基づき第２駆動制御された後における電圧値の傾き（第２逓減時間）のことである。この判定結果が否定の場合、マイコン４１は、予め決められた初期値を第２目標電流値Ｉａ２として決定する（ステップＳ１３２）。
【０１１８】
一方、ステップＳ１３１の判定結果が肯定の場合、マイコン４１は、前回の結果と、第１平均値に基づき、今回指示する第２目標電流値Ｉａ２を決定する（ステップＳ１３３）。ステップＳ１３３において、マイコン４１は、前回の第２駆動制御後に取得した電圧値の傾きと、第１平均値（第１駆動制御後に取得した電圧値の傾き）とを比較することにより、第２誤差に基づく時間差（電流値の検出誤差に基づく時間差）を抽出する。そして、第２誤差に基づく時間差と、基準値との比較に基づき、前回の第２目標電流値Ｉａ２を補正して、今回指示する第２目標電流値Ｉａ２を算出する。
【０１１９】
具体的には、マイコン４１は、前回取得した第２逓減時間から、第１平均値（第１逓減時間の平均）を減算し、第２誤差に基づく時間差を抽出する。なお、前回取得した第２逓減時間から、第１平均値を減算した値には、第２誤差に基づく時間差の他、駆動制御の違いによる時間差なども含まれる可能性があるが、本実施形態では、当該値を単に第２誤差に基づく時間差と示す。
【０１２０】
そして、マイコン４１は、第２誤差に基づく時間差と、基準値とを比較して、前回の第２目標電流値Ｉａ２を補正して、今回の第２目標電流値Ｉａ２を算出する。基準値は、予め決められた気筒２１（例えば、♯１の気筒２１）における第２逓減時間から、当該気筒２１における第１平均値を減算した値である。なお、基準値は、予め実験により計測された値であって、記憶部に記憶されている値（判定値）であってもよい。
【０１２１】
そして、マイコン４１は、第２誤差に基づく時間差が、基準値と比較して大きい場合には、今回指示する第２目標電流値Ｉａ２を、前回における第２目標電流値Ｉａ２と比較して小さくする補正を行う。その一方、マイコン４１は、第２誤差に基づく時間差が、第２基準値と比較して小さい場合には、今回指示する第２目標電流値Ｉａ２を、前回における第２目標電流値Ｉａ２と比較して大きくする補正を行う。つまり、第２誤差に基づく時間差が基準値と一致するように、今回指示する第２目標電流値Ｉａ２を決定する。
【０１２２】
より具体的には、ステップＳ１３３において、数式（２）に基づき、今回指示する第２目標電流値Ｉａ２を算出する。すなわち、基準値を、第２誤差に基づく時間差により除算して算出した値（比率）に、定数α及び前回指示した第２目標電流値Ｉａ２を乗算することにより、今回指示する第２目標電流値を算出する。定数αは実験などにより適切な値が設定され、記憶部に記憶されている。
【０１２３】
今回指示する第２目標電流値Ｉａ２＝（基準値／第２誤差に基づく時間差）×定数α×前回指示した第２目標電流値Ｉａ２・・・（２）
これにより、ステップＳ１３３において、マイコン４１は、基準値と第２誤差に基づく時間差が一致するように（少なくとも前回よりも差が少なくなるように）、今回指示する第２目標電流値Ｉａ２を算出する。
【０１２４】
また、マイコン４１は、ステップＳ１３３で算出された今回指示する第２目標電流値Ｉａ２を、第２目標電流値Ｉａ２の初期値で除算することにより、補正比率γを算出する（ステップＳ１３４）。補正比率γは、対象とする気筒２１毎に算出される。このため、マイコン４１は、算出した補正比率γを、今回の補正値算出処理において対象とする気筒２１と対応付けて記憶部に記憶する。
【０１２５】
その後、マイコン４１は、第１取得回数が第１所定回数以上であって、且つ第２取得回数が第２所定回数以上であるか否かを判定する（ステップＳ１３５）。このステップＳ１３５において、対象とする気筒２１についての第１取得回数及び第２所得回数に基づき判定する。この判定結果が肯定の場合、マイコン４１は、対象とする気筒２１の逓減時間及び取得回数をリセットする（ステップＳ１３６）。このステップＳ１３６では、対象とする気筒２１に対応付けられて記憶されているすべての逓減時間（第１逓減時間、第２逓減時間）及び取得回数（第１取得回数、第２取得回数）をリセットする。なお、全ての気筒２１における逓減時間及び取得回数をリセットしてもよい。
【０１２６】
ステップＳ１３５の判定結果が否定の場合、又はステップＳ１３２，Ｓ１３６の処理後、マイコン４１は、第２目標電流値Ｉａ２を駆動ＩＣ４２に指示する（ステップＳ１３７）。
【０１２７】
より詳しくは、ステップＳ１３５の判定結果が否定の場合、又はステップＳ１３６の処理後、マイコン４１は、ステップＳ１３３で算出された第２目標電流値Ｉａ２を、駆動ＩＣ４２に指示する。また、ステップＳ１３２の処理後、マイコン４１は、ステップＳ１３２で決定した第２目標電流値Ｉａ２を、駆動ＩＣ４２に指示する。その後、電流値設定処理を終了する。
【０１２８】
このように確定された補正値は、第１実施形態と同様に、燃料噴射弁３０を駆動制御する際に利用される。このため、電流検出回路４４ａ，４４ｂにより検出された電流値の検出誤差が適切に補正されることとなる。また、気筒２１間で差がなくなるように、補正値が算出されるため、補正後の指示電流値に基づき駆動制御することにより、燃料噴射弁３０ごとのばらつきが抑制される。
【０１２９】
上記第２実施形態によれば以下の優れた効果を奏することができる。
【０１３０】
電流検出回路４４ａ，４４ｂ以外の要因、例えば、ＥＣＵ４０内や燃料噴射弁３０内の回路における抵抗や浮遊容量等により、電圧検出回路４７によって検出される電圧値に誤差が生じる場合がある。
【０１３１】
そこで、第２逓減時間と第１逓減時間とを比較して、第２誤差に基づく時間差を抽出し、当該第２誤差に基づく時間差に基づき、補正値を算出することとした。第２逓減時間には、第２誤差に基づく時間差（電流値の検出誤差に基づく時間差）と、第１誤差に基づく時間差（回路要因に基づく時間差）とが重複して含まれる。一方、第１逓減時間には、第２誤差に基づく時間差が含まれないが、第１誤差に基づく時間差は第２逓減時間と同様に含まれる。このため、第２逓減時間と第１逓減時間とを比較することにより、第２誤差に基づく時間差を抽出することができる。したがって、抽出された第２誤差に基づく時間差を利用して、補正処理を行うことにより、第１誤差に基づく時間差の影響を抑えて、適正に補正をすることができる。
【０１３２】
（他の実施形態）
本発明は、上記実施形態に限定されず、例えば以下のように実施してもよい。なお、以下では、各実施形態で互いに同一又は均等である部分には同一符号を付しており、同一符号の部分についてはその説明を援用する。
【０１３３】
上記実施形態において、第２目標電流値Ｉａ２に応じた所定範囲の駆動電流が燃料噴射弁３０に流れるのであれば、電圧の印加方法を任意の方法に変更してもよい。例えば、低電圧Ｖ１を印加する際、デューティ制御を行い、オンオフを周期的に繰り返すようにしてもよい。また、低電圧Ｖ１を継続して印加してよい。また、低電圧Ｖ１の代わりに高電圧Ｖ２を印加してもよい。
【０１３４】
上記実施形態において、燃料噴射弁３０が非開弁通電される状態で取得された電圧値に基づき、補正処理を行ったが、燃料噴射弁３０が開弁通電される状態で取得された電圧値に基づき、補正処理を行ってもよい。
【０１３５】
上記実施形態において、第２目標電流値Ｉａ２は、第１目標電流値Ｉａ１よりも小さい値としたが、大きい値としてもよい。
上記実施形態において、気筒２１の数は任意に変更してもよい。
上記実施形態において、指示電流値の数及び種類は任意に変更してもよい。
【０１３６】
上記実施形態において、電流検出回路４４ａ，４４ｂは、気筒２１毎に設けてもよい。また、高圧電源部４６を複数設けてもよい。例えば、駆動グループ１，２毎に高圧電源部４６を設けてもよい。この場合、駆動グループ１，２ごとに還流機構（ダイオード４８）を備えることが望ましい。
【０１３７】
上記第１実施形態のステップＳ１８において、各駆動グループ１，２の平均値に差があるか否かを判定したが、各気筒２１における平均値に差があるか否かを判定してもよい。同様に第２実施形態のステップＳ１２５において、各気筒２１における差分値の平均に差があるか否かを判定してもよい。
【０１３８】
上記第１実施形態のステップＳ１８において、駆動グループ１，２の平均値に差があるか否かを判定したが、駆動グループ１，２の平均値がそれぞれ予め決められた基準となる値と差があるか否かを判定してもよい。すなわち、駆動グループ１，２の平均値が基準となる値と一致又はほぼ一致するか否かを判定してもよい。基準となる値は、いずれかの気筒２１における逓減時間としてもよいし、実験により設定された値であって記憶部に記憶されている値もよい。
【０１３９】
上記第２実施形態のステップＳ１２５において、駆動グループ１，２の差分値（平均）に差があるか否かを判定したが、駆動グループ１，２の差分値（平均）がそれぞれ予め決められた基準となる値と差があるか否かを判定してもよい。すなわち、駆動グループ１，２の差分値（平均）が基準となる値と一致又はほぼ一致するか否かを判定してもよい。基準となる値は、いずれかの気筒２１における第２誤差に基づく時間差としてもよいし、実験により設定された値であって記憶部に記憶されている値もよい。
【０１４０】
上記第１実施形態において、補正値を確定するまでに、複数回の電圧値を取得していたが、１回の電圧値に基づき、補正値を確定してもよい。この場合、第１実施形態のステップＳ１５の処理を省略してもよい。同様に、第２実施形態において、補正値を確定するまでに、駆動制御を異ならせて電圧値をそれぞれ複数回取得していたが、それぞれ１回ずつでもよい。この場合、第２実施形態のステップＳ１１６やステップＳ１２２の処理を省略してもよい。
【０１４１】
上記第１実施形態のステップＳ１８では、逓減時間の平均値に差があるか否かを判定したが、最新の電圧値の傾き（逓減時間）に差があるか否かを判定してもよい。同様に、第２実施形態のステップＳ１２５では、第２誤差に基づく時間差（差分値）の平均に差があるか否かを判定したが、最新の差分値に差があるか否かを判定してもよい。
【０１４２】
上記第１実施形態のステップＳ２３において、今回指示する第２目標電流値Ｉａ２の算出方法は、数式（１）に限らず、任意の方法としてもよい。例えば、数式（３）に基づき、今回指示する第２目標電流値Ｉａ２を算出してもよい。すなわち、基準とする逓減時間（基準とする電圧値の傾き）から、前回取得した逓減時間（前回取得した電圧値の傾き）を減算した値に、定数Ｂを乗算し、乗算して得られた値に１加算した値に対して前回指示した第２目標電流値Ｉａ２をさらに乗算することにより、今回指示する第２目標電流値Ｉａ２を算出してもよい。定数Ｂは実験などにより適切な値が設定され、記憶部に記憶されている。
今回指示する第２目標電流値Ｉａ２＝（（基準とする逓減時間−前回取得した逓減時間）×定数Ｂ＋１）×前回指示した第２目標電流値Ｉａ２・・・（３）
【０１４３】
上記第２実施形態のステップＳ１３３において、今回指示する第２目標電流値Ｉａ２の算出方法は、数式（２）に限らず、任意の方法としてもよい。例えば、数式（４）に基づき、今回指示する第２目標電流値Ｉａ２を算出してもよい。すなわち、基準値から、第２誤差に基づく時間差を減算した値に、定数Ａを乗算し、乗算して得られた値に１加算した値に対して前回指示した第２目標電流値Ｉａ２をさらに乗算することにより、今回指示する第２目標電流値を算出してもよい。定数Ａは実験などにより適切な値が設定され、記憶部に記憶されている。
今回指示する第２目標電流値Ｉａ２＝（（基準値−第２誤差に基づく時間差）×定数Ａ＋１）×前回指示した第２目標電流値Ｉａ２・・・（４）
【０１４４】
また、数式（５）〜（７）に基づき、今回指示する第２目標電流値Ｉａ２を算出してもよい。定数Ｃは、実験などにより適切な値が設定され、記憶部に記憶されている。また、基準となる第１逓減時間及び第２逓減時間は、予め決められた気筒２１における第１逓減時間及び第２逓減時間としてもよいし、実験などにより適切な第１逓減時間及び第２逓減時間を設定して記憶しておいてもよい。
【０１４５】
基準となる第１逓減時間−前回取得された第１逓減時間＝検出値Ｄ・・・（５）
基準となる第２逓減時間−前回取得された第２逓減時間＝検出値Ｅ・・・（６）
今回指示する第２目標電流値Ｉａ２＝（（検出値Ｅ−検出値Ｄ）×定数Ｃ＋１）×前回指示した第２目標電流値Ｉａ２・・・（７）
【０１４６】
上記実施形態では、電流値がピーク値Ｉｐに到達する前まで、短駆動パルスが出力されるように短駆動パルスの出力時間が設定されていたが、これに限らず任意に変更してもよい。例えば、電流値がピーク値Ｉｐに到達した後、低電圧Ｖ１の印加開始前まで短駆動パルスが出力されるように短駆動パルスの出力時間が設定されていてもよい。
【符号の説明】
【０１４７】
３０…燃料噴射弁、３１…コイル、３３…ニードル、４１…マイコン、４１ａ…通電制御部、４１ｂ…電圧取得部、４１ｃ…補正部、４４ａ…電流検出回路、４４ｂ…電流検出回路、４５…低圧電源部、４６…高圧電源部。
【図１】
2019027299.tif 000003
【図２】
2019027299.tif 000004
【図３】
2019027299.tif 000005
【図４】
2019027299.tif 000006
【図５】
2019027299.tif 000007
【図６】
2019027299.tif 000008
【図７】
2019027299.tif 000009
【図８】
2019027299.tif 000010
【図９】
2019027299.tif 000011
【図１０】
2019027299.tif 000012
【図１１】
2019027299.tif 000013