(57)【特許請求の範囲】
【請求項１】
内燃機関のバルブリフト可変機構を駆動すべく所定の回転角範囲内での回転駆動が行われるブラシレスモータと、このブラシレスモータの回転に伴い同モータに設けられた複数の電気角センサから位相をずらして出力されるパルス信号の出力パターンに応じて電気角カウンタのカウンタ値を変化させ、その電気角カウンタのカウンタ値に基づき前記ブラシレスモータの通電相を切り換えることで同モータを駆動する駆動装置と、前記ブラシレスモータの回転に伴い各電気角センサから出力されるパルス信号のエッジ間隔よりも短いエッジ間隔のパルス信号を出力する位置センサとを備え、その位置センサからのパルス信号のエッジを計数するとともにイグニッションオフ時にリセットされる位置カウンタのカウンタ値に基づき、前記ブラシレスモータの回転角を検出するモータ制御装置において、
イグニッションオフ時の前記電気角カウンタのカウンタ値Ｅｇ、及び、そのイグニッションオフ後におけるイグニッションオン時の前記電気角カウンタのカウンタ値Ｅｉに基づき、前記イグニッションオフからオンまでの間における前記ブラシレスモータの回転角の変化量を、前記位置カウンタのカウンタ値の変化に置き換えた値である変化量相当値として算出する第１の算出手段と、
前記変化量相当値と前記イグニッションオフ直前の位置カウンタのカウンタ値Ｐｇとの差分に基づき、前記位置カウンタのカウンタ値の補正に用いられる補正値を算出する第２の算出手段と、
前記イグニッションオン後に前記位置カウンタのカウンタ値に対し前記補正値の分の補正を加え、その補正後の値を前記ブラシレスモータの回転角の検出に用いられる検出用位置カウンタのカウンタ値とする補正手段と、
を備えることを特徴とするモータ制御装置。
【請求項２】
前記電気角カウンタは、前記ブラシレスモータの正回転時には各電気角センサからのパルス信号の出力パターンに応じて「０」〜「ｍ」の範囲内の連続した各整数値を順方向にカウンタ値として当てはめ、前記ブラシレスモータの逆回転時には各電気角センサからのパルス信号の出力パターンに応じて「０」〜「ｍ」の範囲内の連続した各整数値を逆方向にカウンタ値として当てはめるものであり、
前記第１の算出手段は、前記カウンタ値Ｅｇと前記カウンタ値Ｅｉとの差分に対し前記複数の電気角センサから出力されるパルス信号のエッジ間において前記位置センサから出力されるパルス信号のエッジ数ｎを乗算し、その後に前記乗算により得られた値に対し前記カウンタ値Ｐｇを前記エッジ数ｎで除算した余りを加算することにより、前記変化量相当値を算出する
請求項１記載のモータ制御装置。
【請求項３】
前記位置カウンタは、前記ブラシレスモータの正回転時には前記位置センサからのパルス信号のエッジ毎にカウンタ値を「１」ずつ増加させ、前記ブラシレスモータの逆回転時には前記位置センサからのパルス信号のエッジ毎にカウンタ値を「１」ずつ減少させるものであり、
前記補正手段は、前記イグニッションオン後、最初に前記電気角センサからのパルス信号のエッジを迎えたとき、前記ブラシレスモータの正回転時には前記位置カウンタのカウンタ値を前記複数の電気角センサから出力されるパルス信号のエッジ間において前記位置センサから出力されるパルス信号のエッジ数ｎに等しい値とし、前記ブラシレスモータの逆回転時には前記位置カウンタのカウンタ値を「０」とするものである
請求項１又は２記載のモータ制御装置。
【請求項４】
前記電気角カウンタは、前記ブラシレスモータの正回転時には各電気角センサからのパルス信号の出力パターンに応じて「０」〜「ｍ」の範囲内の連続した各整数値を順方向にカウンタ値として当てはめ、前記ブラシレスモータの逆回転時には各電気角センサからのパルス信号の出力パターンに応じて「０」〜「ｍ」の範囲内の連続した各整数値を逆方向にカウンタ値として当てはめるものであり、
前記第１の算出手段は、前回のイグニッションオン時における電気カウンタのカウンタ値Ｅib、今回のイグニッションオフ時における位置カウンタのカウンタ値Ｐｇ、及び、前記複数の電気角センサから出力されるパルス信号のエッジ間において前記位置センサから出力されるパルス信号のエッジ数ｎを用いて式「Ｐｇ／ｎ＋Ｅib」に基づき、前回のイグニッションオン後における電気カウンタのカウンタ値の変化量を算出し、その変化量を当該カウンタ値がとり得る値の種類数（ｍ＋１）で除算した余りを、前記イグニッションオフ時の電気角カウンタのカウンタ値Ｅｇとして算出する
請求項３記載のモータ制御装置。
【請求項５】
請求項１〜４のいずれか一項に記載のモータ制御装置において、
イグニションオン時に位置カウンタのカウンタ値に前記補正値の分の補正を加えた値が前記検出用位置カウンタのカウンタ値とされた後、前記ブラシレスモータの回転角を前記所定の回転角範囲の端まで変化させ、そのときの前記検出用位置カウンタのカウンタ値を学習値として不揮発性メモリに記憶する学習手段と、
前記検出用位置カウンタに前記不揮発性メモリに記憶された学習値の正負を反転させた値を加算したものであるストロークカウンタのカウンタ値に基づき、前記ブラシレスモータの回転角を検出する検出手段と、
を備え、
前記補正手段は、前記学習手段による学習値の記憶が行われたとき、前記補正値を「０」とするものである
ことを特徴とするモータ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関に搭載されるバルブリフト可変機構を駆動すべく所定の回転角範囲内での回転駆動が行われるブラシレスモータの制御装置に係り、詳しくは同モータの回転角検出の改良に関するものである。
【背景技術】
【０００２】
従来より、吸気バルブや排気バルブといった機関バルブのバルブ特性を可変とするバルブリフト可変機構を搭載した内燃機関が知られている。こうした内燃機関のバルブリフト可変機構の駆動は、例えば、所定の回転角範囲内で回転駆動するモータによって行うことが可能である。この場合、モータ制御装置を通じて同モータが上記所定の回転角範囲内で回転駆動され、機関バルブのバルブ特性が当該回転角範囲内におけるモータの回転角に対応したものとなる。従って、機関バルブのバルブ特性を精密に制御するには、モータの回転角を正確に検出し、その回転角を目標とするバルブ特性に対応した回転角とすることが重要になる。
【０００３】
ここで、モータの回転角を検出する方法としては、特許文献１に示される方法、すなわちモータの回転に伴いパルス信号を出力するエンコーダを設け、そのエンコーダからのパルス信号を計数するという方法を採用することが考えられる。この方法によれば、上記パルス信号を計数した値がモータの回転角に対応した値になり、上記パルス信号の計数値に基づきモータの回転角を検出することができるようになる。
【０００４】
しかし、内燃機関の停止に伴い上記計数値が「０」にリセットされると、その停止後の運転再開時に上記パルス信号の計数を行ったとしても、同パルス信号の計数値がモータの回転角に対応しなくなる。このため、内燃機関の停止時には上記計数値を不揮発性のメモリに記憶し、その停止後の運転再開時にはメモリに記憶された計数値を初期値として上記パルス信号の計数を開始することが必要になる。このように、機関停止に際し上記計数値を記憶する処理を行うとともに、機関運転の再開に際し当該計数値を初期値として設定する処理を行うことで、内燃機関の運転再開後も上記パルス信号の計数値をモータの回転角に対応した値とすることが可能になる。
【特許文献１】特開平２００４−７６２６５公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上述したように機関停止時の計数値の記憶、及び、機関運転再開時の当該記憶された計数値の初期値としての設定を行ったとしても、機関停止中に機械的ながたつき等に起因してモータの回転角が変化することがある。
【０００６】
この場合、機関運転再開時におけるモータの回転角が機関停止時に記憶された計数値と対応しなくなり、機関運転再開後に計数開始される上記パルス信号の計数値がモータの回転角に対応した値からずれた状態になる。その結果、計数値に基づき検出されるモータの回転角が不正確になり、その回転角等に基づきモータを駆動し、機関バルブのバルブ特性を目標の特性に制御しようとしても、それを正しく行えなくなって機関運転への悪影響に繋がる。
【０００７】
本発明はこのような実情に鑑みてなされたものであって、その目的は、内燃機関の運転再開後にモータの回転角を正確に検出することのできるモータ制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
以下、上記目的を達成するための手段及びその作用効果について記載する。
上記目的を達成するため、請求項１記載の発明では、内燃機関のバルブリフト可変機構を駆動すべく所定の回転角範囲内での回転駆動が行われるブラシレスモータと、このブラシレスモータの回転に伴い同モータに設けられた複数の電気角センサから位相をずらして出力されるパルス信号の出力パターンに応じて電気角カウンタのカウンタ値を変化させ、その電気角カウンタのカウンタ値に基づき前記ブラシレスモータの通電相を切り換えることで同モータを駆動する駆動装置と、前記ブラシレスモータの回転に伴い各電気角センサから出力されるパルス信号のエッジ間隔よりも短いエッジ間隔のパルス信号を出力する位置センサとを備え、その位置センサからのパルス信号のエッジを計数するとともにイグニッションオフ時にリセットされる位置カウンタのカウンタ値に基づき、前記ブラシレスモータの回転角を検出するモータ制御装置において、イグニッションオフ時の前記電気角カウンタのカウンタ値Ｅｇ、及び、そのイグニッションオフ後におけるイグニッションオン時の前記電気角カウンタのカウンタ値Ｅｉに基づき、前記イグニッションオフからオンまでの間における前記ブラシレスモータの回転角の変化量を、前記位置カウンタのカウンタ値の変化に置き換えた値である変化量相当値として算出する第１の算出手段と、前記変化量相当値と前記イグニッションオフ直前の位置カウンタのカウンタ値Ｐｇとの差分に基づき、前記位置カウンタのカウンタ値の補正に用いられる補正値を算出する第２の算出手段と、前記イグニッションオン後に前記位置カウンタのカウンタ値に対し前記補正値の分の補正を加え、その補正後の値を前記ブラシレスモータの回転角の検出に用いられる検出用位置カウンタのカウンタ値とする補正手段と、を備えた。
【０００９】
上記構成によれば、バルブリフト可変機構の駆動がブラシレスモータによって行われる。ここで、ブラシレスモータの回転時には、同モータの駆動に用いられる電気角センサからパルス信号が互いに位相をずらした状態で出力される。従って、各電気角センサからのパルス信号のエッジを計数すれば、その計数値に基づき所定の回転角範囲内で回転駆動されるブラシレスモータの回転角を大まかに検出することはできる。しかし、バルブリフト可変機構を駆動制御するうえでのブラシレスモータの回転角の検出のように、同モータの回転角の検出に高精度が要求されるような場合には、上記のような大まかな回転角検出では検出精度が足りなくなる。このため、ブラシレスモータの回転に伴い各電気角センサから出力されるパルス信号のエッジ間隔よりも短いエッジ間隔でパルス信号を出力する位置センサが設けられ、その位置センサからのパルス信号のエッジを計数する位置カウンタのカウンタ値に基づき、ブラシレスモータの回転角を検出することが行われている。これにより、ブラシレスモータの回転角の検出を高精度で行うことが可能になる。
【００１０】
ところで、機関運転を停止すべくイグニッションオフしてから機関運転再開時のイグニッションオンまでの間には、機械的ながたつき等の何らかの理由によりブラシレスモータの回転角が変化することがあり得る。こうした状況への対処として次の処理が実行される。
【００１１】
すなわち、イグニッションオフ時の電気角カウンタのカウンタ値Ｅｇ、及び、イグニッションオン時の電気角カウンタのカウンタ値Ｅｉに基づき、上記ブラシレスモータの回転角の変化量を位置カウンタのカウンタ値の変化に置き換えた値である変化量相当値が算出される。なお、ここで用いられるカウンタ値Ｅｉについてはイグニッションオン時に得ることができる。これは、電気角カウンタのカウンタ値は、各電気角センサから互いに位相をずらした状態で出力されるパルス信号の出力パターンに応じて変化するものであり、イグニッションオン直後であっても上記出力パターンに応じて直ちに決定されるためである。更に、上述したように変化量相当値が算出されると、その変化量相当値と上記イグニッションオフ直前の位置カウンタのカウンタ値Ｐｇとの差分に基づき、位置カウンタのカウンタ値を補正するのに用いられる補正値が算出される。このように算出された補正値は、イグニッションオン時におけるブラシレスモータの実際の回転角に対応した位置カウンタのカウンタ値に相当する値となる。そして、この補正値分の補正は機関運転再開時のイグニッションオン時に位置カウンタのカウンタ値に対して加えられ、その補正後の値がブラシレスモータの回転角の検出に用いられる検出用位置カウンタのカウンタ値とされる。
【００１２】
ここで、位置カウンタのカウンタ値はイグニッションオフ時にリセットされて「０」となるため、機関運転再開のためのイグニッションオン時に位置カウンタのカウンタ値に上記補正値分の補正が加えたものを上記検出用位置カウンタのカウンタ値とすることで、当該カウンタ値がそのときのブラシレスモータの実際の回転角に対応した値となる。従って、機関停止から機関運転再開までの間にブラシレスモータの回転角が変化したとしても、機関運転再開後の検出用位置カウンタのカウンタ値をブラシレスモータの実際の回転角に対応した値とすることができ、そのカウンタ値に基づきブラシレスモータの回転角を正確に検出することができるようになる。
【００１３】
請求項２記載の発明では、請求項１記載の発明において、前記電気角カウンタは、前記ブラシレスモータの正回転時には各電気角センサからのパルス信号の出力パターンに応じて「０」〜「ｍ」の範囲内の連続した各整数値を順方向にカウンタ値として当てはめ、前記ブラシレスモータの逆回転時には各電気角センサからのパルス信号の出力パターンに応じて「０」〜「ｍ」の範囲内の連続した各整数値を逆方向にカウンタ値として当てはめるものであり、前記第１の算出手段は、前記カウンタ値Ｅｇと前記カウンタ値Ｅｉとの差分に対し前記複数の電気角センサから出力されるパルス信号のエッジ間において前記位置センサから出力されるパルス信号のエッジ数ｎを乗算し、その後に前記乗算により得られた値に対し前記カウンタ値Ｐｇを前記エッジ数ｎで除算した余りを加算することにより、前記変化量相当値を算出するものとした。
【００１４】
カウンタ値Ｅｇとカウンタ値Ｅｉとの差分（「Ｅｇ−Ｅｉ」）に対し上記エッジ数ｎを乗算して得られる値「（Ｅｇ−Ｅｉ）・ｎ」は、上記差分「Ｅｇ−Ｅｉ」を位置カウンタのカウンタ値の変化に置き換えた値ということになる。なお、イグニッションオフ時の位置カウンタのカウンタ値が電気角センサからのパルス信号のエッジ発生時の値となっていれば、上記値「（Ｅｇ−Ｅｉ）・ｎ」をそのまま上述した変化量相当値として用いることが可能である。
【００１５】
しかし、位置カウンタのカウンタ値が電気角センサからのパルス信号のエッジに対応する値でない場合、その値からの上記カウンタ値のずれ分だけ、上記値「（Ｅｇ−Ｅｉ）・ｎ」も正確な変化量相当値からずれた状態になる。この変化量相当値からの上記値「（Ｅｇ−Ｅｉ）・ｎ」のずれ分は、イグニッションオフ時における位置カウンタのカウンタ値Ｐｇをエッジ数ｎで除算した余りによって表されることになる。従って、値「（Ｅｇ−Ｅｉ）・ｎ」に上記余りを加算して上記変化量相当値を算出することで、その算出された変化量相当値をより正確な値とすることができる。
【００１６】
請求項３記載の発明では、請求項１又は２記載の発明では、前記位置カウンタは、前記ブラシレスモータの正回転時には前記位置センサからのパルス信号のエッジ毎にカウンタ値を「１」ずつ増加させ、前記ブラシレスモータの逆回転時には前記位置センサからのパルス信号のエッジ毎にカウンタ値を「１」ずつ減少させるものであり、前記補正手段は、前記イグニッションオン後、最初に前記電気角センサからのパルス信号のエッジを迎えたとき、前記ブラシレスモータの正回転時には前記位置カウンタのカウンタ値を前記複数の電気角センサから出力されるパルス信号のエッジ間において前記位置センサから出力されるパルス信号のエッジ数ｎに等しい値とし、前記ブラシレスモータの逆回転時には前記位置カウンタのカウンタ値を「０」とするものであることを要旨とした。
【００１７】
イグニッションオン時の電気角カウンタのカウンタ値Ｅｉは、ブラシレスモータの回転角に大まかに対応したものであり、同モータの回転角に正確に対応したものではない。このため、イグニッションオン後、「０」となっている位置カウンタのカウンタ値に対し、上記カウンタ値Ｅｉ等に基づき算出される補正値分の補正を加え、その補正後の値を検出用位置カウンタのカウンタ値にしたとしても、当該カウンタ値がブラシレスモータの回転角に正確に対応した値になるとは限らない。より詳しくは、検出用位置カウンタのカウンタ値が、ブラシレスモータの実際の回転角に対し、最大、上述したエッジ数ｎ分だけずれる可能性がある。これは、イグニッションオン直後であって位置カウンタのカウンタ値が「０」であるとき、ブラシレスモータがカウンタ値Ｅｉをとり得る回転角範囲（エッジ数ｎ分の回転角範囲）内の任意の値をとり得るためである。
【００１８】
しかし、上記構成によれば、イグニッションオン後、最初に電気角センサからのパルス信号のエッジを迎えたとき、位置カウンタのカウンタ値がモータ正回転であればエッジ数ｎに設定され、モータ逆回転であれば「０」に設定される。
【００１９】
ここで、モータ正回転により上記エッジを迎えた場合、ブラシレスモータの回転角が上記エッジ数ｎ分の回転角範囲における位置カウンタ増大側の端に位置したことを意味する。従って、上述したように位置カウンタのカウンタ値をエッジ数ｎに設定することで、位置カウンタのカウンタ値に上記補正値分の補正を加えた値である検出用位置カウンタのカウンタ値とブラシレスモータの実際の回転角とを対応させることができる。一方、モータ逆回転により上記エッジを迎えた場合、ブラシレスモータの回転角が上記エッジ数ｎ分の回転角範囲における位置カウンタ減少側の端に位置したことを意味する。従って、上述したように位置カウンタのカウンタ値を「０」に設定することで、位置カウンタのカウンタ値に上記補正値を加えた値である検出用位置カウンタのカウンタ値とブラシレスモータの実際の回転角とを対応させることができる。
【００２０】
以上のように位置カウンタのカウンタ値を「０」あるいは「エッジ数ｎ」に設定することで、そのカウンタ値に上記補正値分の補正を加えた値である検出用位置カウンタのカウンタがブラシレスモータの実際の回転角に対しずれるのを回避することできる。従って、上記検出用位置カウンタのカウンタ値に基づき検出されるブラシレスモータの回転角をより正確なものとすることができる。
【００２１】
請求項４記載の発明では、請求項３記載の発明では、前記電気角カウンタは、前記ブラシレスモータの正回転時には各電気角センサからのパルス信号の出力パターンに応じて「０」〜「ｍ」の範囲内の連続した各整数値を順方向にカウンタ値として当てはめ、前記ブラシレスモータの逆回転時には各電気角センサからのパルス信号の出力パターンに応じて「０」〜「ｍ」の範囲内の連続した各整数値を逆方向にカウンタ値として当てはめるものであり、前記第１の算出手段は、前回のイグニッションオン時における電気カウンタのカウンタ値Ｅib、今回のイグニッションオフ時における位置カウンタのカウンタ値Ｐｇ、及び、前記複数の電気角センサから出力されるパルス信号のエッジ間において前記位置センサから出力されるパルス信号のエッジ数ｎを用いて式「Ｐｇ／ｎ＋Ｅib」に基づき、前回のイグニッションオン後における電気カウンタのカウンタ値の変化量を算出し、その変化量を当該カウンタ値がとり得る値の種類数（ｍ＋１）で除算した余りを、前記イグニッションオフ時の電気角カウンタのカウンタ値Ｅｇとして算出するものとした。
【００２２】
電気角センサからのパルス信号のエッジは位置センサからのパルス信号のエッジ間にて生じる。このため、電気角センサからのパルス信号のエッジが生じる前後では、位置カウンタの一つのカウンタ値に対し、電気角カウンタのカウンタ値が二つの異なる値をとり得ることになる。従って、電気角センサからのパルス信号のエッジが生じる前後でイグニッションオフがなされる場合について考えてみると、上記エッジ発生前にイグニッションオフがなされたときと、上記エッジ発生後にイグニッションオフがなされたときとでは、位置カウンタのカウンタ値が同じでも電気角カウンタのカウンタ値は異なるようになる。
【００２３】
ここで、位置カウンタのカウンタ値は、イグニッションオン後であって最初に電気角センサからのパルス信号のエッジを迎えた時点で「０」あるいは「エッジ数ｎ」に設定されているため、当該カウンタ値の基準値である「０」は電気角センサからのパルス信号のエッジ発生時点に対応していることになる。従って、上述したように、位置カウンタの一つのカウンタ値に対し、電気角カウンタのカウンタ値が二つの異なる値をとり得る状況のとき、それら二つの値のうちイグニッションオフ時の電気角カウンタのカウンタ値Ｅｇとして正しい値は、上記エッジ発生後であって電気角カウンタが変化した後の値ということになる。
【００２４】
なお、仮に電気角カウンタのカウンタ値をそのままイグニッションオフ時のカウンタ値Ｅｇとして用いたとすると、上記エッジ発生後にイグニッションオフがなされた場合にはカウンタ値Ｅｇが正しい値になるものの、上記エッジ発生前にイグニッションオフがなされた場合にはカウンタ値Ｅｇが正しくない値になる。このように、位置カウンタの一つのカウンタ値に対し、電気角カウンタのカウンタ値Ｅｇが正しい値と正しくない値との二値をとり得るため、そのカウンタ値Ｅｇ等に基づき算出される上記補正値も同様に二値をとり得ることになり、当該補正値を一定に定めることができなくなる。
【００２５】
上記構成によれば、式「Ｐｇ／ｎ＋Ｅib」に基づき前回のイグニッションオン後における電気カウンタのカウンタ値の変化量を算出し、その変化量を上記種類数（ｍ＋１）で除算した余りをイグニッションオフ時の電気角カウンタのカウンタ値Ｅｇとしている。この場合、電気角センサからのパルス信号のエッジが生じる前後でイグニッションオフがなされる状況下であって、当該イグニッションオフが上記エッジ発生前と発生後とのいずれの状況でなされたとしても、カウンタ値Ｅｇを上述した正しい値に定めることができる。従って、上述したように、カウンタ値Ｅｇ等に基づき算出される上記補正値を一定に定めることができなくなるのを回避することができる。
【００２６】
請求項５記載の発明では、請求項１〜４のいずれか一項に記載の発明において、請求項１〜４のいずれか一項に記載のモータ制御装置において、イグニションオン時に位置カウンタのカウンタ値に前記補正値の分の補正を加えた値が前記検出用位置カウンタのカウンタ値とされた後、前記ブラシレスモータの回転角を前記所定の回転角範囲の端まで変化させ、そのときの前記検出用位置カウンタのカウンタ値を学習値として不揮発性メモリに記憶する学習手段と、前記検出用位置カウンタに前記不揮発性メモリに記憶された学習値の正負を反転させた値を加算したものであるストロークカウンタのカウンタ値に基づき、前記ブラシレスモータの回転角を検出する検出手段と、を備え、前記補正手段は、前記学習手段による学習値の記憶が行われたとき、前記補正値を「０」とするものとした。
【００２７】
上記構成によれば、イグニッションオン後に不揮発性メモリへの学習値の記憶が行われ、その学習値がストロークカウンタのカウンタ値に反映されるときには、同カウンタ値に上記補正値が反映されることになる。従って、上記学習値の不揮発性メモリへの記憶後においては、検出用位置カウンタのカウンタ値に含まれる上記補正値分は不要であって、この補正値分を含んだ状態ではストロークカウンタのカウンタ値が不適切になり、ひいてはストロークカウンタのカウンタ値に基づき検出されるブラシレスモータの回転角が不正確なものになる。しかし、上記構成によれば、イグニッションオフ後に上記学習値がメモリに記憶されると、それ以降は上記補正値が「０」とされて検出用位置カウンタのカウンタ値から当該補正値分が除かれた状態になる。このため、上述した不具合が生じるのを回避することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明を自動車用エンジンに適用した一実施形態を図１〜図９に従って説明する。
図１は、エンジン１における所定気筒のシリンダヘッド２周りの構造を示す拡大断面図である。このエンジン１においては、シリンダヘッド２、シリンダブロック３、及びピストン５によって燃焼室６が区画され、この燃焼室６には吸気通路７及び排気通路８が接続されている。そして、吸気通路７と燃焼室６との間は吸気バルブ９の開閉動作によって連通・遮断され、排気通路８と燃焼室６との間は排気バルブ１０の開閉動作によって連通・遮断されるようになる。
【００２９】
シリンダヘッド２には、吸気バルブ９及び排気バルブ１０を駆動するための吸気カムシャフト１１及び排気カムシャフト１２が設けられている。これら吸気カムシャフト１１及び排気カムシャフト１２は、エンジン１のクランクシャフトからの回転伝達によって回転するようになっている。また、吸気カムシャフト１１及び排気カムシャフト１２には、それぞれ吸気カム１１ａ及び排気カム１２ａが設けられている。そして、これら吸気カム１１ａ及び排気カム１２ａの吸気カムシャフト１１及び排気カムシャフト１２との一体回転を通じて、吸気バルブ９及び排気バルブ１０が開閉動作するようになっている。
【００３０】
また、エンジン１には、吸気バルブ９及び排気バルブ１０といった機関バルブのバルブ特性を可変とするバルブリフト可変機構として、吸気バルブ９の最大リフト量及び吸気カム１１ａの作用角を可変とするバルブリフト可変機構１４が吸気カム１１ａと吸気バルブ９との間に設けられている。このバルブリフト可変機構１４の駆動を通じて、例えば吸入空気量を多く必要とするエンジン運転状態になるほど、最大リフト量及び作用角が大となるよう制御される。これは最大リフト量及び作用角を大とするほど、吸気通路７から燃焼室６への空気の吸入が効率よく行われ、上述した吸入空気量に関する要求を満たすことが可能なためである。
【００３１】
次に、バルブリフト可変機構１４の詳細な構造について説明する。
バルブリフト可変機構１４は、回転する吸気カム１１ａにより押されて上記吸気カムシャフト１１と平行に延びるロッカシャフト１５及びコントロールシャフト１６の軸線を中心に揺動する入力アーム１７と、この入力アーム１７の揺動に基づき上記軸線を中心に揺動する出力アーム１８とを備えている。入力アーム１７については、ローラ１９が回転可能に取り付けられるとともに、そのローラ１９が吸気カム１１ａに押しつけられるようコイルスプリング２０によって吸気カム１１ａ側に付勢されている。また、出力アーム１８は、その揺動時にロッカアーム２１に押しつけられ、同ロッカアーム２１を介して吸気バルブ９をリフトさせる。
【００３２】
このロッカアーム２１の基端部はラッシュアジャスタ２２によって支持され、同ロッカアーム２１の先端部は吸気バルブ９に接触している。また、ロッカアーム２１は吸気バルブ９のバルブスプリング２４によって出力アーム１８側に付勢され、これによりロッカアーム２１の基端部と先端部との間に回転可能に支持されたローラ２３が出力アーム１８に押しつけられている。従って、吸気カム１１ａの回転に基づき入力アーム１７及び出力アーム１８が揺動すると、出力アーム１８がロッカアーム２１を介して吸気バルブ９をリフトさせ、吸気バルブ９の開閉動作が行われるようになる。
【００３３】
バルブリフト可変機構１４では、パイプ状のロッカシャフト１５内に配置されたコントロールシャフト１６を軸方向に変位させることで、入力アーム１７と出力アーム１８との揺動方向についての相対位置を変更することが可能となっている。このように、入力アーム１７と出力アーム１８との揺動方向についての相対位置を変更すると、上記吸気バルブ９の最大リフト量、及び吸気カム１１ａの吸気バルブ９に対する作用角が可変とされる。即ち、入力アーム１７と出力アーム１８とを揺動方向について互いに接近させるほど、吸気バルブ９の最大リフト量及び吸気カム１１ａの作用角は小となってゆく。逆に、入力アーム１７と出力アーム１８とを揺動方向について互いに離間させるほど、吸気バルブ９の最大リフト量及び吸気カム１１ａの作用角は大となってゆく。
【００３４】
次に、バルブリフト可変機構１４を駆動すべく上記コントロールシャフト１６を軸方向に変位させるための駆動機構、及び、その駆動機構を駆動制御する制御装置について、図２を参照して説明する。
【００３５】
同図に示されるように、コントロールシャフト１６の基端部（図中右端部）には、ブラシレスモータ４７が変換機構４８を介して連結されている。この変換機構４８は、ブラシレスモータ４７の回転運動をコントロールシャフト１６の軸方向への直線運動に変換するためのものである。そして、上記ブラシレスモータ４７の所定の回転角範囲内での回転駆動、例えば同モータ４７の１０回転分の回転角範囲（０〜３６００°）内での回転駆動を通じて、コントロールシャフト１６が軸方向に変位させられ、バルブリフト可変機構１４が駆動されることとなる。
【００３６】
ちなみに、ブラシレスモータ４７を正回転させると、コントロールシャフト１６は先端（図中左端）側に変位し、入力アーム１７と出力アーム１８との揺動方向についての相対位置が互いに接近するように変更される。また、ブラシレスモータ４７を逆回転させると、コントロールシャフト１６は基端（図中右端）側に変位し、入力アーム１７と出力アーム１８との揺動方向についての相対位置が互いに離間するように変更される。こうしたブラシレスモータ４７の回転駆動による入力アーム１７及び出力アーム１８の揺動方向についての相対位置の変更を通じて、吸気カム１１ａの回転により出力アーム１８が揺動したときの吸気バルブ９の最大リフト量、及び吸気カム１１ａの作用角が可変とされる。
【００３７】
ブラシレスモータ４７には、三つの電気角センサＳ１〜Ｓ３、及び  二つの位置センサＳ４，Ｓ５が設けられている。
三つの電気角センサＳ１〜Ｓ３は、ブラシレスモータ４７の回転時、同モータ４７のロータと一体回転する４極の多極マグネットの磁気に応じて、図３（ａ）〜（ｃ）に示されるようなパルス状の信号を互いに位相をずらした状態で出力するものである。すなわち、こうしたパルス信号の波形がえられるよう、上記ロータに対する各電気角センサＳ１〜Ｓ３の周方向位置が定められている。なお、各電気角センサＳ１〜Ｓ３のうちの一つのセンサから出力されるパルス信号のエッジは、ブラシレスモータ４７の４５°回転毎に発生している。また、上記一つのセンサからのパルス信号は、他のセンサからのパルス信号に対し、ブラシレスモータ４７の３０°回転分だけ進み側及び遅れ側に位相をずらした状態となっている。
【００３８】
二つの位置センサＳ４，Ｓ５は、ブラシレスモータ４７の回転時、同モータ４７のロータと一体回転する４８極の多極マグネットの磁気に応じて、図３（ｄ）及び（ｅ）に示されるようなパルス状の信号を出力するものである。すなわち、こうしたパルス信号の波形が得られるよう、上記ロータに対する各位置センサＳ４，Ｓ５の周方向位置が定められている。なお、各位置センサＳ４，Ｓ５の内の一方のセンサから出力するパルス信号のエッジは、ブラシレスモータ４７の７．５°回転毎に発生している。また、上記一方のセンサからのパルス信号は、他方のセンサからのパルス信号に対し、ブラシレスモータ４７の３．７５°回転分だけ位相をずらした状態となっている。
【００３９】
従って、電気角センサＳ１〜Ｓ３からのパルス信号のエッジ間隔が１５°であるのに対し、位置センサＳ４，Ｓ５からのパルス信号のエッジ間隔は３．７５°と上記１５°というエッジ間隔よりも短くなっている。更に、電気角センサＳ１〜Ｓ３からのパルス信号のエッジ発生から次回のエッジ発生までには、位置センサＳ４，Ｓ５からのパルス信号のエッジが４回発生するようになっている。
【００４０】
コントロールシャフト１６を軸方向に変位させるべく回転駆動されるブラシレスモータ４７の制御装置は、吸気バルブ９の最大リフト量及び吸気カム１１ａの作用角といった吸気バルブ９のバルブ特性の制御など、エンジン１の各種制御を行う電子制御装置５０（図２）を備えている。この電子制御装置５０は、上記各種制御にかかる演算処理を実行するＣＰＵ、その制御に必要なプログラムやデータの記憶されたＲＯＭ、ＣＰＵの演算結果が一時的に記憶されるＲＡＭ、外部との間で信号を入・出力するための入・出力ポート等を備えて構成されている。
【００４１】
電子制御装置５０の入力ポートには、上述した電気角センサＳ１〜Ｓ３及び位置センサＳ４，Ｓ５が接続されるほか、更に以下のセンサを含む各種センサが接続されている。
・自動車の運転者によって踏み込み操作されるアクセルペダルの踏み込み量（アクセル踏込量）を検出するアクセルポジションセンサ５１。
【００４２】
・エンジン１の吸気通路７に設けられたスロットルバルブの開度（スロットル開度）を検出するスロットルポジションセンサ５２。
・上記吸気通路７を通じて燃焼室６に吸入される空気の量を検出するエアフローメータ５３。
【００４３】
・エンジン１の出力軸の回転に対応する信号を出力してエンジン回転速度の検出等に用いられるクランクポジションセンサ５４。
・自動車の運転者により切り換え操作され、現在の切換位置に対応した信号を出力するイグニッションスイッチ５５。
【００４４】
また、電子制御装置５０の出力ポートには、ブラシレスモータ４７の駆動回路等が接続されている。電子制御装置５０は、上記各種センサから入力した検出信号に基づきエンジン運転状態を把握する。そして、その把握したエンジン運転状態に基づきブラシレスモータ４７を駆動してコントロールシャフト１６を軸方向に変位させることで、バルブリフト可変機構１４が駆動されて吸気バルブ９のバルブ特性制御が行われる。なお、ブラシレスモータ４７の駆動は、各電気角センサＳ１〜Ｓ３から出力される同モータ４７の回転時のパルス信号の出力パターンに応じて、ブラシレスモータ４７の通電相を切り換えることによって行われる。
【００４５】
吸気バルブ９のバルブ特性、すなわち吸気バルブ９の最大リフト量及び吸気カム１１ａの作用角は、コントロールシャフト１６の軸方向位置、言い換えればブラシレスモータ４７の上記所定回転角範囲内での回転角に対応したものとなる。従って、吸気バルブ９のバルブ特性を精密に制御するには、ブラシレスモータ４７の回転角を正確に検出し、その回転角が目標とするバルブ特性に対応する回転角となるようブラシレスモータ４７を駆動することが重要になる。
【００４６】
以下、本実施形態におけるブラシレスモータ４７の回転角の検出手順について、図３のタイミングチャート及び図４のフローチャートを併せ参照して説明する。
図３において、（ａ）〜（ｅ）は、ブラシレスモータ４７の回転時における同モータ４７の回転角変化に対し、各センサＳ１〜Ｓ５からパルス信号がどのように出力されるかを示す波形図である。また、（ｆ）〜（ｈ）ではそれぞれ、ブラシレスモータ４７の回転時における同モータ４７の回転角の変化に対し、電気角カウンタＥ、位置カウンタＰ（検出用位置カウンタＰｋ）、及びストロークカウンタＳのカウンタ値がどのように推移するかを示している。
【００４７】
なお、上記電気角カウンタＥは、ブラシレスモータ４７を駆動すべく同モータ４７の通電相を切り換える際に用いられるものである。また、上記位置カウンタＰは、エンジン１を運転開始する際のイグニッションスイッチ５５のオン操作（イグニッションオン）後、コントロールシャフト１６が軸方向にどれだけ変位したか、言い換えればブラシレスモータ４７の回転角がどれだけ変化したかを表すものである。更に、上記ストロークカウンタＳは、コントロールシャフト１６の最も先端側に変位した状態を基準とする軸方向位置、言い換えればブラシレスモータ４７の上記所定回転角範囲におけるコントロールシャフト１６の上記変位状態に対応する端を基準とした同モータ４７の回転角を表すものである。
【００４８】
図４は、上記電気角カウンタＥ、位置カウンタＰ（検出用位置カウンタＰｋ）、及びストロークカウンタＳのカウンタ値を変化させるためのカウント処理ルーチンを示すフローチャートである。同ルーチンは、電子制御装置５０を通じて、位置センサＳ４，Ｓ５からのパルス信号のエッジ間隔に対応する時間間隔よりも短い間隔をもって周期的に実行される。
【００４９】
同ルーチンにおいては、まず図３（ａ）〜（ｃ）に示される各電気角センサＳ１〜Ｓ３からのパルス信号の出力パターンに基づき、図３（ｆ）に示されるように電気角カウンタＥのカウンタ値を変化させる（Ｓ１０１）。具体的には、ブラシレスモータ４７の正回転時（図中右向き）には、電気角センサＳ１〜Ｓ３からのパルス信号の出力パターンに応じて、「０」〜「ｍ（この実施形態では５）」の範囲内の連続した各整数値が「０」→「１」→「２」→「３」→「４」→「５」→「０」といった順序で順方向に電気角カウンタＥのカウンタ値として当てはめられる。また、ブラシレスモータ４７の逆回転時（図中左向き）には、電気角センサＳ１〜Ｓ３からのパルス信号の出力パターンに応じて、「０」〜「ｍ（５）」の範囲内の連続した各整数値が「５」→「４」→「３」→「２」→「１」→「０」→「５」といった順序で逆方向に電気角カウンタＥのカウンタ値として当てはめられる。そして、この電気角カウンタＥのカウンタ値に基づき、ブラシレスモータ４７の通電層を切り換えることで、同モータの正回転方向または逆回転方向への駆動が行われる。
【００５０】
続いて、各位置センサＳ４，Ｓ５からのパルス信号の出力パターンに基づき、位置カウンタＰのカウンタ値を増減させる（Ｓ１０２）。
より詳しくは、図５に示されるように、各位置センサＳ４，Ｓ５のうち、一方のセンサからパルス信号の立ち上がりエッジと立ち下がりエッジとのいずれが生じているか、及び、他方のセンサからハイ信号「Ｈ」とロー信号「Ｌ」とのいずれが出力されているかに応じて、位置カウンタＰのカウンタ値に対し「＋１」と「−１」とのいずれかが加算される。なお、同図において、「↑」はパルス信号の立ち上がりエッジを表し、「↓」はパルス信号の立ち下がりエッジを表している。こうした処理を通じて得られる位置カウンタＰのカウンタ値は、各位置センサＳ４，Ｓ５からのパルス信号のエッジを計数した値ということになる。
【００５１】
ここで、ブラシレスモータ４７の正回転中であれば、位置カウンタＰのカウンタ値は、図３（ｄ）及び（ｅ）に示される位置センサＳ４，Ｓ５からのパルス信号のエッジ毎に「１」ずつ加算されてゆき、図３（ｇ）中の右方向に変化してゆく。また、ブラシレスモータ４７の逆回転中であれば、位置カウンタＰのカウンタ値は、上記エッジ毎に「１」ずつ減算されてゆき、図３（ｇ）中の左方向に変化してゆく。なお、この位置カウンタＰは、イグニッションスイッチ５５のオフ操作（イグニッションオフ）がなされたとき、「０」にリセットされる。従って、位置カウンタＰのカウンタ値は、イグニッションオン後に、コントロールシャフト１６が軸方向にどれだけ変位したか、言い換えればブラシレスモータ４７の回転角がどれだけ変化したかを表すものとなる。
【００５２】
そして、図３（ｇ）に示されるように変化する位置カウンタＰに応じて、図３（ｈ）に示されるようにストロークカウンタＳが変化させられるようになる。具体的には、位置カウンタＰに対し補正値ΔＰを加算することで検出用位置カウンタＰｋが算出され（Ｓ１０３）、更に検出用位置カウンタＰｋに対して学習値Ｐｒの正負を反転させた値（「−Ｐｒ」）を加算して得られる値がストロークカウンタＳのカウンタ値として設定される（Ｓ１０４）。なお、上記補正値ΔＰについては詳しくは後述するが通常は「０」となっており、ここでは位置カウンタＰと検出用位置カウンタＰｋとが等しい値となっている。また、上記学習値Ｐｒは、コントロールシャフト１６をその移動範囲における図２の左端（先端）側の変位端まで変位させたとき、すなわちブラシレスモータ４７の回転角を上記所定の回転角範囲内における上記コントロールシャフト１６の変位状態に対応する端まで変化させたときの検出用位置カウンタＰｋのカウンタ値に対応した値である。この学習値Ｐｒは、イグニッションオン後に所定の条件下で学習が行われて電子制御装置５０の不揮発性メモリ５６に記憶されるものである。従って、検出用位置カウンタＰｋのカウンタ値に学習値Ｐｒの正負を反転して値を加算して得られる値であるストロークカウンタＳのカウンタ値は、コントロールシャフト１６の最も先端側に変位した状態を基準とする同シャフト１６の軸方向位置を表すものということになる。このことは言い換えれば、ストロークカウンタＳのカウンタ値が、ブラシレスモータ４７の上記所定回転角範囲におけるコントロールシャフト１６の上記変位状態に対応する端を基準とした同モータ４７の回転角を表すものになるということである。
【００５３】
電子制御装置５０は、上記ストロークカウンタＳのカウンタ値に基づき、ブラシレスモータ４７の回転角を検出する。そして、電子制御装置５０は、バルブリフト可変機構１４を駆動して吸気バルブ９の最大リフト量及び吸気カム１１ａの作用角といったバルブ特性を制御する際、上記のように検出されたブラシレスモータ４７の回転角が目標とするバルブ特性に対応する回転角となるようブラシレスモータ４７を駆動する。これにより、吸気バルブ９のバルブ特性を目標とする特性へと精密に制御することができるようになる。
【００５４】
なお、ブラシレスモータ４７の回転時に位置センサＳ４，Ｓ５からのパルス信号のエッジを上述したように計数する代わりに、電気角センサＳ１〜Ｓ３からのパルス信号のエッジを計数しても、その計数値に基づきブラシレスモータ４７の回転角を大まかにならば検出することは可能である。しかし、バルブリフト可変機構１４を駆動するうえでのブラシレスモータ４７の回転角の検出のように、同モータ４７の回転角の検出に高精度が要求されるような場合には、上記のような大まかな回転角検出では検出精度が足りなくなる。このため、電気角センサＳ１〜Ｓ３からのパルス信号のエッジ間隔よりも短いエッジ間隔でパルス信号を出力する位置センサＳ４，Ｓ５が設けられ、それら位置センサＳ４，Ｓ５からのパルス信号のエッジを計数する位置カウンタＰのカウンタ値に基づき、ブラシレスモータ４７の回転角検出が行われている。
【００５５】
ところで、エンジン１の停止を行うためのグニッションオフ時、位置カウンタＰのカウンタ値が「０」にリセットされると、その後にイグニッションオンされてエンジン運転が再開されたとき、位置カウンタＰ等に応じて設定されるストロークカウンタＳのカウンタ値がブラシレスモータ４７の回転角に対応しなくなる。このため、イグニッションオフ時に位置カウンタＰのカウンタ値が「０」にリセットされる前に、当該カウンタ値を不揮発性メモリ５６にカウンタ値Ｐｇとして記憶しておき、その後のイグニッションオン時には不揮発性メモリ５６に記憶されたカウンタ値Ｐｇを位置カウンタＰの初期値として設定することが必要になる。こうした処理を行うことで、エンジン１の運転再開後も、位置カウンタＰ等に応じて設定されるストロークカウンタＳのカウンタ値をブラシレスモータ４７の回転角に対応した値とすることが可能になる。
【００５６】
しかしながら、上述した処理を行ったとしても、イグニッションオフ後のエンジン停止中、機械的ながたつき等に起因してブラシレスモータ４７の回転角が変化することがあり、この場合には上記と同様の不具合が生じる。なお、上記のようなブラシレスモータ４７の回転角の変化は、バルブスプリング２４の作用によりコントロールシャフト１６が入力アーム１７と出力アーム１８とを接近させる方向、すなわち同シャフト１６を先端側に変位させる方向に付勢されているため、ブラシレスモータ４７の正回転方向には生じにくく、逆回転方向には生じやすい傾向がある。
【００５７】
ここで、上述した不具合に対処するための処理の概要について、図３のタイミングチャートを参照して説明する。
今、位置カウンタＰのカウンタ値が例えば「２９」であるとき、イグニッションオフされて不揮発性メモリ５６に「２９」をカウンタ値Ｐｇとして記憶したとする。しかし、イグニッションオフ後のエンジン停止中、機械的ながたつき等によりブラシレスモータ４７の回転角が逆回転方向（図中左側）に、例えば図３（ｇ）の矢印ａで示される変化量だけ変化したとすると、上記カウンタ値Ｐｇ（「２９」）がブラシレスモータ４７の実際の回転角と対応しなくなる。このときのブラシレスモータ４７の実際の回転角に対応する位置カウンタＰのカウンタ値は同図に示されるように「１６」であり、その値に対し、不揮発性メモリ５６に記憶されたカウンタ値Ｐｇは「１３」だけ増加側にずれていることになる。
【００５８】
従って、イグニッションオン時に上記カウンタ値Ｐｇを位置カウンタＰの初期値に設定したとしても、同位置カウンタＰ等に基づき設定されるストロークカウンタＳのカウンタ値がブラシレスモータ４７の実際の回転角に対応しなくなる。すなわち、図３（ｈ）に示されるストロークカウンタＳのカウンタ値が、コントロールシャフト１６の実際の軸方向位置に対応する値（この場合は「３３１」）に対し、「１３」だけ増加側にずれた状態（「３４４」）になる。その結果、ストロークカウンタＳのカウンタ値に基づき検出されるブラシレスモータ４７の回転角が不正確になり、その軸方向位置等に基づきブラシレスモータ４７を駆動し、吸気バルブ９のバルブ特性を目標の特性に制御しようとしても、それを正しく行えなくなってエンジン運転への悪影響に繋がる。
【００５９】
そこで本実施形態では、イグニッションオン時の位置カウンタＰ（正確には検出用位置カウンタＰｋ）のカウンタ値をブラシレスモータ４７の実際の回転角に対応させるため、図４のステップＳ１０３で用いられる補正値ΔＰに関係した、以下に示される［１］〜［３］の処理が実行される。
【００６０】
［１］イグニッションオフ時の電気角カウンタＥのカウンタ値Ｅｇ、及び、そのイグニッションオフ後におけるイグニッションオン時の電気角カウンタＥのカウンタ値Ｅｉに基づき、エンジン停止中におけるブラシレスモータ４７の回転角の変化量を位置カウンタＰのカウンタ値の変化に置き換えた値である変化量相当値Ｘを算出する。なお、ここで用いられるカウンタ値Ｅｉについてはイグニッションオン時に得ることができる。これは、電気角カウンタＥのカウンタ値は電気角センサＳ１〜Ｓ３の出力パターンに応じて変化するものであって、イグニッションオン直後であっても上記出力パターンに応じて直ちに決定されるためである。そして、イグニッションオン時の電気角カウンタＥのカウンタ値は、イグニッションオン毎に電子制御装置５０の不揮発性メモリ５６にカウンタ値Ｅｉとして記憶される。
【００６１】
［２］イグニッションオン時に上記変化量相当値Ｘ（この場合は「１３」）が算出された後、その変化量相当値Ｘと上記不揮発性メモリ５６に記憶された位置カウンタＰのカウンタ値Ｐｇ（「２９」）との差分が、ブラシレスモータ４７の実際の回転角に対応する位置カウンタＰのカウンタ値（「１６」）として算出される。そして、上記差分（Ｘ−Ｐｇ）が位置カウンタＰのカウンタ値の補正に用いられる補正値ΔＰとして設定される。
【００６２】
［３］上記イグニッションオン時、イグニッションオフの際に「０」にリセットされている位置カウンタＰのカウンタ値に対し上記補正値ΔＰ分の補正を加え、その補正後の値をブラシレスモータ４７の回転角の検出に用いられる検出用位置カウンタＰｋのカウンタ値として設定する。この検出用位置カウンタＰｋのカウンタ値の設定は、図４のステップＳ１０３の処理を通じて行われる。
【００６３】
以上の［１］〜［３］の処理を実行することで、イグニッションオン時の位置カウンタＰに対し検出用位置カウンタＰｋが補正値ΔＰ分だけ変化し、その検出用位置カウンタＰｋのカウンタ値がブラシレスモータ４７の実際の回転角に対応した値となる。そして、その検出用位置カウンタＰｋ等を用いて設定されるストロークカウンタＳのカウンタ値に基づき、ブラシレスモータ４７の回転角を正確に検出することができ、上述した不具合が生じるのを回避することができるようになる。
【００６４】
次に、上記［１］の処理で行われる変化量相当値Ｘの算出について、更に詳しく説明する。
変化量相当値Ｘは、「Ｘ＝（Ｅｇ−Ｅｉ）・ｎ＋（Ｐｇをｎで割った余り）      …（１）」という式に基づき算出される。この式（１）で用いられる「ｎ」は、電気角センサＳ１〜Ｓ３からのパルス信号のエッジ間において位置センサＳ４，Ｓ５から出力されるパルス信号のエッジ数を表しており、この実施形態では「４」となっている。そして、式（１）の「（Ｅｇ−Ｅｉ）・４」という項は、イグニッションオフ時のカウンタ値Ｅｇと、その後のイグニッションオン時のカウンタ値Ｅｉとの差分を、位置カウンタＰのカウンタ値の変化に置き換えた値ということになる。なお、イグニッションオフ時の位置カウンタＰのカウンタ値Ｐｇが電気角センサＳ１〜Ｓ３からのパルス信号のエッジ発生時の値、例えば「２８」という値になっていれば、「（Ｅｇ−Ｅｉ）・４」という項をそのまま変化量相当値Ｘとして用いることが可能である。
【００６５】
しかし、上記位置カウンタＰのカウンタ値Ｐｇが電気角センサＳ１〜Ｓ３からのパルス信号のエッジ発生時の値（「２８」等）でない場合、その値からのずれ分だけ「（Ｅｇ−Ｅｉ）・４」という項も正確な変化量相当値Ｘからずれた状態になる。例えば、カウンタ値Ｐｇが上述したように「２９」であるとすると、「（Ｅｇ−Ｅｉ）・４」という項が「２８」からのカウンタ値Ｐｇのずれ分である「１」だけ正確な変化量相当値Ｘからずれた状態になる。この正確な変化量相当値Ｘからの「（Ｅｇ−Ｅｉ）・４」という項のずれ分は、イグニッションオフ時の位置カウンタＰのカウンタ値Ｐｇを上記エッジ数ｎである「４」で割った余りによって表されることになる。従って、上記式（１）に示されるように、「（Ｅｇ−Ｅｉ）・４」という項に上記余りを加算して変化量相当値Ｘを算出することで、その算出された変化量相当値Ｘを正確な値とすることができる。
【００６６】
ところで、イグニッションオン時の電気角カウンタＥのカウンタ値Ｅｉは、ブラシレスモータ４７の回転角に対して大まかに対応したものでしかなく、同シャフト１６の軸方向位置に正確に対応したものではない。このため、イグニッションオン後、「０」となっている位置カウンタＰに対し、上記カウンタ値Ｅｉ等に基づき算出される補正値ΔＰ分の補正を加えて検出用位置カウンタＰｋを求めたとしても、この検出用位置カウンタＰｋのカウンタ値がブラシレスモータ４７の回転角に正確に対応した値になるとは限らない。より詳しくは、検出用位置カウンタＰｋのカウンタ値が、ブラシレスモータ４７の実際の回転角に対し、最大、上述したエッジ数ｎ（＝４）だけずれる可能性がある。これは、イグニッションオン直後であって位置カウンタＰのカウンタ値が「０」であるとき、ブラシレスモータ４７の回転角がカウンタ値Ｅｉをとり得る回転角範囲（エッジ数ｎ分の回転角範囲）内の任意の値をとり得るためである。
【００６７】
例えば、エンジン停止中、機械的ながたつき等に起因してブラシレスモータ４７の回転角が矢印ａで示される変化量だけ変化したとすると、同モータ４７の回転角は電気角センサＳ１〜Ｓ３からのパルス信号のエッジ発生時に対応する回転角となる。この場合、上記カウンタ値Ｅｉはブラシレスモータ４７の実際の軸線方向位置に正確に対応する値になる。従って、イグニッションオン時に位置カウンタＰのカウンタ値に対し、上記カウンタ値Ｅｉ等に基づき算出される補正値ΔＰ分の補正を加え、補正後の値を検出用位置カウンタＰｋのカウンタ値とすることで、当該検出用位置カウンタＰｋのカウンタ値をコントロールシャフト１６の実際の軸方向位置に正確に対応させることができる。これにより、検出用位置カウンタＰｋのカウンタ値及びストロークカウンタＳのカウンタ値をそれぞれ、そのときのブラシレスモータ４７の実際の回転角に対応する「１６」及び「３３１」という値とすることができる。
【００６８】
しかし、エンジン停止中、機械的ながたつき等に起因してブラシレスモータ４７の回転角が図６（ｇ）に矢印ｂで示される変化量だけ変化したとすると、同モータ４７の回転角は電気角センサＳ１〜Ｓ３からのパルス信号のエッジ間に対応した回転角になる。なお、この図６の（ａ）〜（ｈ）も、図３と同様に、ブラシレスモータ４７の回転角の変化に対する電気角センサＳ１〜Ｓ３のパルス信号の波形、位置センサＳ４，Ｓ５のパルス信号の波形、電気角カウンタＥのカウンタ値の推移、位置カウンタＰ（ｐｋ）のカウンタ値の推移、及び、ストロークカウンタＳのカウンタ値の推移を表している。
【００６９】
上記矢印ｂ分の変化量に対応してコントロールシャフト１６が変位すると、上記カウンタ値Ｅｉがブラシレスモータ４７の実際の回転角に対して正確に対応したものにならなくなる。従って、イグニッションオン時に「０」となっている位置カウンタＰのカウンタ値に対し、上記カウンタ値Ｅｉ等に基づき算出される補正値ΔＰ分の補正を加え、その補正後の値を検出用位置カウンタＰｋのカウンタ値としたとき、当該カウンタ値とブラシレスモータ４７の実際の回転角に対応するカウンタ値との間にずれが生じる。すなわち、この例ではブラシレスモータ４７の実際の回転角に対応するカウンタ値が「１８」であるのに対し、検出用位置カウンタＰｋのカウンタ値は「１６」にしかならず、両者の間に「２」というずれが生じる。更に、検出用位置カウンタＰｋ等に基づき設定されるストロークカウンタＳのカウンタ値（「３３１」）と、ブラシレスモータ４７の実際の回転角に対応するストロークカウンタＳのカウンタ値（「３３３」）との間にも、上記と同様のずれが生じる。
【００７０】
こうした問題に対処するため、本実施形態では、イグニッションオン後、最初に電気角センサＳ１〜Ｓ３からのパルス信号のエッジを迎えたとき、位置カウンタＰのカウンタ値をモータ正回転時であれば「エッジ数ｎ（＝４）」に設定し、モータ逆回転であれば「０」に設定するようにしている。
【００７１】
ここで、モータ正回転により上記エッジを迎えた場合、ブラシレスモータ４７の回転角がエッジ数ｎ分の回転角範囲における位置カウンタ増加側の端、すなわちこの例では電気角カウンタＥのカウンタ値Ｅｉが「１」をとり得る回転角範囲における位置カウンタ増加側の端に位置したことを意味する。このとき、位置カウンタＰのカウンタ値は「２」でありブラシレスモータ４７の実際の回転角に対応する値である「４」からずれた状態となる。しかし、上述したように位置カウンタＰのカウンタ値をエッジ数ｎに設定することで、その位置カウンタＰのカウンタ値に上記補正値ΔＰ分の補正を加えた値である検出用位置カウンタＰｋのカウンタ値を、ブラシレスモータ４７の実際の回転角に対応させることができる。
【００７２】
一方、モータ逆回転により上記エッジを迎えた場合、ブラシレスモータ４７の回転角がエッジ数ｎ分の回転角範囲における位置カウンタ減少側の端、すなわちこの例では電気角カウンタＥのカウンタ値Ｅｉが「１」をとり得る回転角範囲における位置カウンタ減少側の端に位置したことを意味する。このとき、位置カウンタＰのカウンタ値は「−２」でありブラシレスモータ４７の実際の回転角に対応する値である「０」からずれた状態となる。しかし、上述したように位置カウンタＰのカウンタ値を「０」に設定することで、その位置カウンタＰのカウンタ値に上記補正値ΔＰ分の補正を加えた値である検出用位置カウンタＰｋのカウンタ値を、ブラシレスモータ４７の実際の回転角に対応させることができる。
【００７３】
以上のように、検出用位置カウンタＰｋのカウンタ値をブラシレスモータ４７の実際の回転角に対応させることで、その検出用位置カウンタＰｋ等に基づき設定されるストロークカウンタＳも、ブラシレスモータ４７の実際の回転角に対応した値、すなわちモータ正回転時なら「３３５」、モータ逆回転時なら「３３１」という値になる。従って、同ストロークカウンタＳのカウンタ値に基づき検出されるブラシレスモータ４７の回転角を正確なものとすることができる。
【００７４】
ところで、電気角センサＳ１〜Ｓ３からのパルス信号のエッジは、位置センサＳ４，Ｓ５からのパルス信号のエッジ間にて生じる。このため、電気角センサＳ１〜Ｓ３からのパルス信号のエッジが生じる前後では、位置カウンタＰの一つのカウンタ値に対し、電気角カウンタＥのカウンタ値が二つの異なる値をとり得ることになる。
【００７５】
こうした状況としては、例えば、図７（ｃ）に示される位置カウンタＰのカウンタ値が「２８」であるとき、図７（ａ）に示されるように電気角センサＳ３からのパルス信号のエッジが生じ、図７（ｂ）に示される電気角カウンタＥのカウンタ値が「３」から「４」に切り換えられるという状況が考えられる。この場合、上記エッジが生じる前後では、位置カウンタＰの「２８」という一つのカウンタ値に対し、電気角カウンタＥのカウンタ値が「３」と「４」との二つの異なる値をとり得ることになる。
【００７６】
従って、電気角センサＳ１〜Ｓ３のパルス信号のエッジが生じる前後でイグニッションオフがなされる場合には、次のようなこと状況が生じる。すなわち、上記エッジ発生前にイグニッションオフがなされたときと上記エッジ発生後にイグニッションオフがなされたときとでは、位置カウンタＰのカウンタ値が例えば「２８」という一つの値に対し、電気角カウンタＥのカウンタ値は「３」または「４」などの異なる値になる。
【００７７】
ここで、位置カウンタＰのカウンタ値は、イグニッションオン後であって最初に電気角センサＳ１〜Ｓ３からのパルス信号のエッジを迎えた時点で「０」あるいは「エッジ数ｎ（＝４）」に設定されるため、当該カウンタ値の基準値である「０」は電気角センサＳ１〜Ｓ３からのパルス信号のエッジ発生時点に対応していることになる。従って、上述したように、位置カウンタＰの一つのカウンタ値に対し、電気角カウンタＥのカウンタ値が二つの異なる値をとり得る状況のとき、それら二つの値のうちイグニッションオフ時の電気角カウンタＥのカウンタ値Ｅｇとして正しい値は、上記エッジ発生後であって電気角カウンタＥが変化した後の値（この場合は「４」）ということになる。
【００７８】
なお、仮に電気角カウンタＥのカウンタ値をそのまま上記カウンタ値Ｅｇとして用いたとすると、上記エッジ発生後にイグニッションオフがなされた場合にはカウンタ値Ｅｇが正しい値（「４」）になるものの、上記エッジ発生前にイグニッションオフがなされた場合にはカウンタ値Ｅｇが正しくない値（「３」）になる。このように、位置カウンタＰの一つのカウンタ値に対し、電気角カウンタＥのカウンタ値が正しい値と正しくない値との二値をとり得るため、そのカウンタ値Ｅｇ等に基づき算出される補正値ΔＰも、図中の（１）及び（２）のように二値をとり得ることになる。その結果、当該補正値ΔＰを一定に定めることができなくなる。
【００７９】
こうした不具合を回避するため、本実施形態では、イグニッションオフ時の電気角カウンタＥのカウンタ値Ｅｇとして電気角カウンタＥのカウンタ値をそのまま用いる代わりに、当該カウンタ値Ｅｇをイグニッションオフ時の位置カウンタＰのカウンタ値Ｐｇ等を用い、以下の［４］及び［５］に示される手順で算出するようにしている。
【００８０】
［４］前回のイグニッションオン時の電気角カウンタＥのカウンタ値Ｅｉｂ、今回のイグニッションオフ時における位置カウンタＰのカウンタ値Ｐｇ、及び、上記エッジ数ｎ（＝４）を用いて式「Ｐｇ／ｎ＋Ｅｉｂ」に基づき、前回のイグニッションオン後における電気角カウンタＥのカウンタ値の変化量を算出する。なお、上記前回のイグニッションオン時の電気角カウンタＥのカウンタ値Ｅｉｂとしては、イグニッションオン毎に電子制御装置５０の不揮発性メモリ５６に記憶される電気角カウンタＥのカウンタ値のうち、前回のイグニッションオン時に対応したカウンタ値が用いられる。
【００８１】
［５］上記変化量を電気角カウンタＥのカウンタ値がとり得る種類数（ｍ＋１）、すなわち「０」〜「５」の整数値の種類数である「６」で除算した余りを、イグニッションオフ時の電気角カウンタＥのカウンタ値Ｅｇとして算出する。
【００８２】
以上のように算出されたカウンタ値Ｅｇは、電気角センサＳ１〜Ｓ３からのパルス信号のエッジが生じる前後でイグニッションオフがなされる状況下であって、当該イグニッションオフが上記エッジ発生前と発生後とのいずれの状況でなされたとしても、上述した正しい値（この場合は「４」）とすることができる。従って、カウンタ値Ｅｇ等に基づき算出される補正値ΔＰを一定に定めることができなくなるという不具合を回避することができる。
【００８３】
次に、イグニッションスイッチ５５のオフ操作及びオン操作がなされたときの位置カウンタＰの処理手順について、停止・始動時位置カウンタ処理ルーチンを示す図８及び図９のフローチャートを参照して説明する。同ルーチンは、電子制御装置５０を通じて、位置センサＳ４，Ｓ５からのパルス信号のエッジ間隔に対応する時間間隔よりも短い間隔をもって周期的に実行される。
【００８４】
同ルーチンにおいては、まずエンジン１の停止のためにイグニッションスイッチ５５がオンからオフに切り換えられた直後であるか否かが判断される（図８のＳ２０１）。ここで肯定判定であれば、位置カウンタＰのカウンタ値がイグニッションオフ時のカウンタ値Ｐｇとして不揮発性メモリ５６に記憶される（Ｓ２０２）。続いて、電気角カウンタＥのイグニッションオフ時のカウンタ値Ｅｇが上記［４］及び［５］に示される手順で算出され（Ｓ２０３）、その後に位置カウンタＰが「０」にリセットされる（Ｓ２０４）。
【００８５】
上記ステップＳ２０１で否定判定であれば、エンジン始動のためにイグニッションスイッチ５５がオフからオンに切り換えられた直後であるか否かの判断が行われる（Ｓ２０５）。ここで肯定判定であれば、上記［１］の処理による変化量相当値Ｘの算出（Ｓ２０６）、及び、上記［２］の処理による補正値ΔＰの算出（Ｓ２０７）が順次行われる。その後、電気角カウンタＥのカウンタ値がイグニッションオン時の電気角カウンタＥのカウンタ値Ｅｉとして不揮発性メモリ５６に記憶される（Ｓ２０８）。
【００８６】
上記ステップＳ２０５で否定判定であれば、イグニッションオン後であって電気角センサＳ１〜Ｓ３からのパルス信号の最初のエッッジを迎えた時点か否かが判断される（図９Ｓ２０９）。ここで肯定判定であれば、位置カウンタＰのカウンタ値をブラシレスモータ４７の正逆回転に応じて「０」または「エッジ数ｎ」に設定するための処理（Ｓ２１０〜Ｓ２１２）が実行される。すなわち、ブラシレスモータ４７の正回転時であれば（Ｓ２１０：ＹＥＳ）、位置カウンタＰのカウンタ値が「エッジ数ｎ（＝４）」に設定される（Ｓ２１１）。また、ブラシレスモータ４７の逆回転時であれば（Ｓ２１０：ＮＯ）、位置カウンタＰのカウンタ値が「０」に設定される（Ｓ２１２）。なお、ステップＳ２１０におけるブラシレスモータ４７が正回転しているか或いは逆回転しているかの判断については、イグニッションオフ後に電気角カウンタＥのカウンタ値が上述した順方向に変化しているか、或いは同じく上述した逆方向に変化しているかに基づき行うことが可能である。
【００８７】
次に、ストロークカウンタＳのカウンタ値を設定するのに用いられる学習値Ｐｒの学習手順、及び、その学習値Ｐｒの学習完了に関係して検出用位置カウンタＰｋのカウンタ値から上記補正値ΔＰ分を除く手順について、位置カウンタ学習ルーチンを示す図１０のフローチャートを参照して説明する。同ルーチンは、電子制御装置５０を通じて、位置センサＳ４，Ｓ５からのパルス信号のエッジ間隔に対応する時間間隔よりも短い間隔をもって周期的に実行される。
【００８８】
同ルーチンにおいては、イグニッションオン後における学習値Ｐｒの学習が未完、すなわちイグニッションオン後に一度も学習値Ｐｒの不揮発性メモリ５６への記憶が行われておらず（Ｓ３０１：ＹＥＳ）、且つ、学習実行条件が成立しているとき（Ｓ３０２：ＹＥＳ）、学習値Ｐｒを学習するための処理（Ｓ３０３〜Ｓ３０５）が実行される。この処理は以下の手順で行われる。
【００８９】
コントロールシャフト１６を吸気バルブ９の最大リフト量及び吸気カム１１ａの作用角が最小となる変位端（コントロールシャフト１６先端側の変位端）に向けて変位させる（Ｓ３０３）。言い換えれば、ブラシレスモータ４７の回転角を上記所定の回転角範囲における上記コントロールシャフト１６の変位状態に対応する端まで変化させる。続いて、コントロールシャフト１６が上記変位端に到達したか否かが、例えば位置カウンタＰの変化が生じていない状態であるか否かに基づき判断される（Ｓ３０４）。そして、位置カウンタＰの変化が生じていない状態であり、コントロールシャフト１６が上記変位端に到達した旨判断されると、そのときの検出用位置カウンタＰｋのカウンタ値が学習値Ｐｒとして不揮発性メモリ５６に記憶される（Ｓ２０５）。こうして学習値Ｐｒの学習が完了することとなる。
【００９０】
なお、上記ステップＳ３０２の学習実行条件としては、エンジン１のフューエルカット中であること等の条件があげられる。なお、こうしたエンジン１のフューエルカット中という条件が学習実行条件に含まれているのは、コントロールシャフト１６を上記変位端まで変位させる際、フューエルカット中であれば上記コントロールシャフト１６の変位によるエンジン１の運転状態への影響を考慮しなくてもよく、学習値Ｐｒの学習を実行するうえで都合がよいためである。
【００９１】
上記のように不揮発性メモリ５６に記憶された学習値Ｐｒは、図４のステップＳ１０４の処理で検出用位置カウンタＰｋに対し正負を反転させた状態で加算され、その加算後の値がストロークカウンタＳのカウンタ値として設定される。そして、イグニッションオン後、位置カウンタＰに補正値ΔＰ分の補正を加えた値を検出用位置カウンタＰｋのカウンタ値とした状態で学習値Ｐｒの学習が行われ、その学習の結果として不揮発性メモリ５６に記憶された学習値ＰｒがストロークカウンタＳに反映されると、同カウンタＳのカウンタ値は補正値ΔＰが反映された状態となる。
【００９２】
従って、学習値Ｐｒの学習後（不揮発性メモリ５６への記憶後）においては、検出用位置カウンタＰｋのカウンタ値に含まれる補正値ΔＰ分は不要であって、この補正値ΔＰ分が検出用位置カウンタＰｋのカウンタに含まれた状態では、同カウンタ値等に基づき設定されるストロークカウンタＳのカウンタ値が不適切になる。その結果、ストロークカウンタＳのカウンタ値に基づき検出されるブラシレスモータ４７の回転角も不正確なものになる。
【００９３】
こうした問題を回避するため、図１０の位置カウンタ学習ルーチンにおいては、学習値Ｐｒの学習（Ｓ３０３〜Ｓ３０５）が完了した後、補正値ΔＰが「０」に設定される（Ｓ３０６）。これにより、検出用位置カウンタＰｋから上記補正値ΔＰ分を除くことができ、上述した問題が生じるのを回避することができるようになる。
【００９４】
以上詳述した本実施形態によれば、以下に示す効果が得られるようになる。
（１）上述した［１］〜［３］の処理を実行することで、エンジン停止中にブラシレスモータ４７の回転角が変化したとしても、イグニッションオン時に検出用位置カウンタＰｋのカウンタ値をブラシレスモータ４７の実際の回転角に対応した値とすることができる。そして、その検出用位置カウンタＰｋ等に基づき設定されるストロークカウンタＳのカウンタ値に基づき、ブラシレスモータ４７の回転角を正確に検出することができる。従って、その回転角等に基づきブラシレスモータ４７を駆動し、吸気バルブ９のバルブ特性を目標の特性に制御しようとしても、それを正しく行えなくなってエンジン運転に悪影響を及ぼすという不具合が生じるのを回避することができる。
【００９５】
（２）上記［１］の処理で算出される変化量相当値Ｘは、「Ｘ＝（Ｅｇ−Ｅｉ）・ｎ＋（Ｐｇをｎで割った余り）      …（１）」という式に基づき算出される。この式（１）の「（Ｅｇ−Ｅｉ）・４」という項は、イグニッションオフ時のカウンタ値Ｅｇと、その後のイグニッションオン時のカウンタ値Ｅｉとの差分を、位置カウンタＰのカウンタ値の変化に置き換えた値ということになる。しかし、位置カウンタＰのカウンタ値Ｐｇが電気角センサＳ１〜Ｓ３からのパルス信号のエッジ発生時の値でない場合、その値からのずれ分だけ「（Ｅｇ−Ｅｉ）・４」という項も正確な変化量相当値Ｘからずれた状態になる。この正確な変化量相当値Ｘからの「（Ｅｇ−Ｅｉ）・４」という項のずれ分は、イグニッションオフ時の位置カウンタＰのカウンタ値Ｐｇを上記エッジ数ｎ（＝４）で割った余りによって表されることになる。従って、上記式（１）に示されるように、「（Ｅｇ−Ｅｉ）・４」という項に上記余りを加算して変化量相当値Ｘを算出することで、その算出された変化量相当値Ｘを正確な値とすることができる。
【００９６】
（３）イグニッションオン時の電気角カウンタＥのカウンタ値Ｅｉは、ブラシレスモータ４７の実際の回転角に対して正確に対応したものとはならない。従って、イグニッションオン時に「０」となっている位置カウンタＰのカウンタ値に対し、上記カウンタ値Ｅｉ等に基づき算出される補正値ΔＰ分の補正を加え、その補正後の値を検出用位置カウンタＰｋのカウンタ値としたとき、そのカウンタ値とブラシレスモータ４７の実際の回転角に対応するカウンタ値との間にずれが生じる可能性がある。これに対処するため、イグニッションオン後、最初に電気角センサＳ１〜Ｓ３からのパルス信号のエッジを迎えたとき、位置カウンタＰのカウンタ値がモータ正回転時であれば「エッジ数ｎ（＝４）」に設定し、モータ逆回転であれば「０」に設定される。このように位置カウンタＰのカウンタ値を設定することで、当該カウンタ値に上記補正値ΔＰを加えた値である検出用位置カウンタＰｋのカウンタ値を、ブラシレスモータ４７の実際の回転角に対応させることができる。従って、検出用位置カウンタＰｋ等に基づき設定されるストロークカウンタＳのカウンタ値をブラシレスモータ４７の実際の回転角に対応した値とし、同ストロークカウンタＳのカウンタ値に基づき検出されるブラシレスモータ４７の回転角を正確なものとすることができる。
【００９７】
（４）イグニッションオフ時の電気角カウンタＥのカウンタ値Ｅｇについては、上記［４］及び［５］に示される手順で算出される。このように算出されたカウンタ値Ｅｇは、電気角センサＳ１〜Ｓ３からのパルス信号のエッジが生じる前後でイグニッションオフがなされる状況下であって、当該イグニッションオフが上記エッジ発生前と発生後とのいずれの状況でなされたとしても正しい値、すなわち上記エッジ発生後であって電気角カウンタＥが変化した後の値になる。従って、イグニッションオフが上記エッジ発生前と発生後とのいずれかに応じて、イグニッションオフ時における位置カウンタＰの一つのカウンタ値Ｐｇに対し上記カウンタ値Ｅｇが正しい値と正しくない値との二値をとるようになり、当該カウンタ値Ｅｇ等に基づき算出される補正値ΔＰを一定に定められなくなるという不具合を回避することができる。
【００９８】
（５）イグニッションオフ後、コントロールシャフト１６を先端側の変位端まで変位させ、そのときの検出用位置カウンタＰｋのカウンタ値が学習値Ｐｒとして不揮発性メモリ５６に記憶することで、当該学習値Ｐｒの学習が完了することとなる。この学習完了後の学習値Ｐｒの正負を反転させた値がストロークカウンタＳ（直接的には検出用位置カウンタＰｋ）に加算されると、同カウンタＳのカウンタ値は補正値ΔＰが反映された状態となる。従って、学習値Ｐｒの学習後においては、検出用位置カウンタＰｋのカウンタ値に含まれる補正値ΔＰ分は不要であって、この補正を含んだ状態では検出用位置カウンタＰｋ等に基づき設定されるストロークカウンタＳのカウンタ値は不適切なものになる。更に、ストロークカウンタＳのカウンタ値に基づき検出されるブラシレスモータ４７の実際の回転角も不正確なものになる。しかし、学習値Ｐｒの学習が完了した後には、補正値ΔＰが「０」とされ、検出用位置カウンタＰｋのカウンタ値から補正値ΔＰ分が除かれるため、上述した問題が生じるのを回避することができる。
【００９９】
なお、上記実施形態は、例えば以下のように変更することもできる。
・電気角カウンタＥを「０」〜「ｍ」の範囲内の連続した各整数値がカウンタ値として当てはめられるものとし、上記「ｍ」を「５」に設定したが、その値を適宜変更することも可能である。この場合、電気角センサの数や位置、及び、それら電気角センサの検出対象である多極マグネットの極数が適宜変更されることとなる。
【０１００】
・電気角センサＳ１〜Ｓ３からのパルス信号のエッジ間において位置センサＳ４，Ｓ５から出力されるパルス信号のエッジ数ｎを「４」に設定したが、その値についてはブラシレスモータ４７の回転角検出精度を確保し得る位置センサＳ４，Ｓ５からのパルス信号のエッジ間隔に対応する値であればよく、「２」以上の整数値に適宜変更可能である。このようにエッジ数ｎを変更する際には、位置カウンタの数や位置、及び、それら位置センサの検出対象である多極マグネットの極数が適宜変更されることとなる。
【０１０１】
・ブラシレスモータ４７と一体回転する多極マグネットの磁気に応じてパルス信号を出力する位置センサＳ４，Ｓ５を設ける代わりに、ブラシレスモータ４７の回転に伴いパルス信号を出力する他のセンサ、例えば光学式のセンサを設けることも考えられる。この場合、ブラシレスモータ４７と一体回転するスリット付円板の厚さ方向側方にそれぞれ発光素子と受光素子を備える光学式のセンサを周方向に複数設け、ブラシレスモータ４７の回転時に当該各センサからパルス信号を出力させるようにすることが考えられる。この場合の各センサからのパルス信号の出力パターンについては、スリット付円板におけるスリットのパターン、及び、光学式のセンサの数や位置によって調整される。
【０１０２】
・上記実施形態では、ブラシレスモータ４７の回転運動をコントロールシャフト１６の軸方向への運動に変換し、そのコントロールシャフト１６の軸方向変位を通じて駆動されるバルブリフト可変機構を例示したが、本発明のバルブリフト可変機構はこれに限定されない。例えば、ブラシレスモータ４７の回転運動を直接的に受けて駆動されるバルブリフト可変機構を採用することも可能である。
【図面の簡単な説明】
【０１０３】
【図１】本実施形態のバルブリフト可変機構が適用されるエンジンのシリンダヘッド周りの構造を示す拡大断面図。
【図２】上記バルブリフト可変機構を駆動すべくコントロールシャフトを軸方向に変位させるための駆動機構、及び、その駆動機構を駆動制御する制御装置を示す略図。
【図３】（ａ）〜（ｈ）は、ブラシレスモータの回転角の変化に対する電気角センサＳ１〜Ｓ３のパルス信号の波形、位置センサＳ４，Ｓ５のパルス信号の波形、電気角カウンタＥのカウンタ値の推移、位置カウンタＰ（検出用位置カウンタＰｋ）のカウンタ値の推移、及び、ストロークカウンタＳのカウンタ値の推移を示すタイミングチャート。
【図４】電気角カウンタＥ、位置カウンタＰ、及びストロークカウンタＳのカウンタ値を変化させる手順を示すフローチャート。
【図５】位置センサＳ４，Ｓ５からの信号に応じた位置カウンタＰのカウンタ値の加減算態様を示す表。
【図６】（ａ）〜（ｈ）は、ブラシレスモータの回転角の変化に対する電気角センサＳ１〜Ｓ３のパルス信号の波形、位置センサＳ４，Ｓ５のパルス信号の波形、電気角カウンタＥのカウンタ値の推移、位置カウンタＰ（検出用位置カウンタＰｋ）のカウンタ値の推移、及び、ストロークカウンタＳのカウンタ値の推移を示すタイミングチャート。
【図７】（ａ）〜（ｃ）は、ブラシレスモータの回転角の変化に対する電気角センサＳ３のパルス信号の波形、電気角カウンタＥのカウンタ値の推移、及び、位置カウンタＰ（検出用位置カウンタＰｋ）のカウンタ値の推移を示すタイミングチャート。
【図８】イグニッションスイッチのオフ操作及びオン操作がなされたときの位置カウンタＰの処理手順を示すフローチャート。
【図９】イグニッションスイッチのオフ操作及びオン操作がなされたときの位置カウンタＰの処理手順を示すフローチャート。
【図１０】ストロークカウンタＳのカウンタ値を設定するのに用いられる学習値Ｐｒの学習手順、及び、その学習値Ｐｒの学習完了に関係して検出用位置カウンタＰｋのカウンタ値から補正値ΔＰ分を除く手順を示すフローチャート。
【符号の説明】
【０１０４】
１…エンジン、２…シリンダヘッド、３…シリンダブロック、５…ピストン、６…燃焼室、７…吸気通路、８…排気通路、９…吸気バルブ、１０…排気バルブ、１１…吸気カムシャフト、１１ａ…吸気カム、１２…排気カムシャフト、１２ａ…排気カム、１４…バルブリフト可変機構、１５…ロッカシャフト、１６…コントロールシャフト、１７…入力アーム、１８…出力アーム、１９…ローラ、２０…コイルスプリング、２１…ロッカアーム、２２…ラッシュアジャスタ、２３…ローラ、２４…バルブスプリング、４７…ブラシレスモータ、４８…変換機構、５０…電子制御装置（駆動装置、第１の算出手段、第２の算出手段、補正手段、学習手段、検出手段）、５１…アクセルポジションセンサ、５２…スロットルポジションセンサ、５３…エアフローメータ、５４…クランクポジションセンサ、５５…イグニッションスイッチ、５６…不揮発性メモリ、Ｓ１〜Ｓ３…電気角センサ、Ｓ４，Ｓ５…位置センサ。
【図１】
0004645339.tif 000002
【図２】
0004645339.tif 000003
【図４】
0004645339.tif 000004
【図５】
0004645339.tif 000005
【図６】
0004645339.tif 000006
【図７】
0004645339.tif 000007
【図８】
0004645339.tif 000008
【図９】
0004645339.tif 000009
【図１０】
0004645339.tif 000010
【図３】
0004645339.tif 000011