(57)【特許請求の範囲】
【請求項１】
モータのロータの回転に伴って所定角度間隔で所定の位相差を有するＡ相信号とＢ相信号を出力するエンコーダと、
電源投入後の初期駆動時に前記モータの通電相の切り換えを所定のタイムスケジュールで一巡させることで、いずれかの通電相で前記ロータの回転位置と該通電相とを一致させて該ロータを回転駆動して前記エンコーダのＡ相信号とＢ相信号をカウントして初期駆動終了時のカウント値と前記ロータの回転位置と通電相との対応関係を学習する初期位置学習処理を実行する学習手段と、
前記初期駆動の終了後の通常駆動時に前記エンコーダのＡ相信号とＢ相信号をカウントしてそのカウント値から前記学習手段による学習結果を基準にして前記ロータの回転位置を判定して前記モータの通電相を順次切り換えることで前記ロータを回転駆動する制御手段とを備えたモータ制御装置において、
前記学習手段は、前記初期駆動終了時に前記エンコーダのＡ相信号とＢ相信号のパターンに基づいて学習結果の正誤を判定し、誤学習と判定した場合には初期駆動を再実行して前記初期位置学習処理を再実行することを特徴とするモータ制御装置。
【請求項２】
前記学習手段は、前記初期駆動時に２相通電と１相通電とを交互に切り換えて前記ロータを回転駆動し、２相通電となる位置で初期駆動を終了し、その初期駆動終了時における前記エンコーダのＡ相信号とＢ相信号のパターンが２相通電に対応するパターンとなっていない場合は、誤学習と判定し、初期駆動を再実行して前記初期位置学習処理を再実行することを特徴とする請求項１に記載のモータ制御装置。
【請求項３】
前記学習手段は、誤学習と判定した後に初期駆動を再実行する場合は、前記ロータの駆動方向を前回の初期駆動の駆動方向とは反対にして初期駆動を再実行することを特徴とする請求項１又は２に記載のモータ制御装置。
【請求項４】
前記モータは、自動変速機のレンジ切換機構を駆動するモータであることを特徴とする請求項１乃至３のいずれかに記載のモータ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンコーダの出力信号に基づいてモータの通電相を順次切り換えることでロータを回転駆動するモータ制御装置に関する発明である。
【背景技術】
【０００２】
近年、自動車においても、省スペース化、組立性向上、制御性向上等の要求を満たすために、機械的な駆動システムを、モータによって電気的に駆動するシステムに変更する事例が増加する傾向にある。その一例として、特許文献１（特許第３８００５２９号公報）に示すように、車両の自動変速機のレンジ切換機構をモータで駆動するようにしたものがある。このシステムでは、モータに、ロータの回転位置を検出するエンコーダを搭載し、レンジ切換時には、このエンコーダの出力パルスのカウント値に基づいてモータを目標のレンジに相当する目標回転位置（目標カウント値）まで回転させることで、レンジ切換機構を目標のレンジに切り換えるようにしている。
【０００３】
この種のエンコーダ付きのモータは、起動後のエンコーダの出力パルスのカウント値に基づいてロータの起動位置からの回転量（回転角度）を検出できるだけであるので、電源投入後に、何等かの方法で、ロータの絶対的な回転位置を検出して、エンコーダカウント値とロータの回転位置（通電相）との対応関係をとらないと、モータを正常に駆動することができない。
【０００４】
そこで、特許文献１では、電源投入後の初期駆動時にモータの通電相の切り換えを所定のタイムスケジュールで一巡させることで、いずれかの通電相でロータの回転位置と該通電相とを一致させて該ロータを回転駆動してエンコーダの出力信号をカウントして初期駆動終了時のエンコーダのカウント値とロータの回転位置と通電相との対応関係を学習する初期位置学習処理を実行し、その後の通常駆動時に、初期駆動終了時の学習結果を基準にしてエンコーダカウント値からロータの回転位置を検出して通電相を決定するようにしている。
【特許文献１】特許第３８００５２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、モータの回転量（回転角度）は、減速機構等の回転伝達系を介して出力軸の回転量（レンジ切換機構の操作量）に変換されるが、回転伝達系を構成する部品間には、ガタ（遊び）が存在する。例えば、減速機構の歯車間に遊び（バックラッシ）があり、また、減速機構の回転軸の先端部に形成した断面非円形（角形、Ｄカット形状等）の連結部を出力軸の嵌合穴に嵌め込んで連結する構成では、両者の嵌め込み作業を容易にするためのクリアランスが必要となる。このように、モータの回転量（回転角度）を制御対象の操作量に変換する回転伝達系には、ガタが存在するため、初期駆動時のロータの回転は、ガタの範囲内で行われる場合もあるし、初期駆動の途中でガタの片方の限界位置（側壁）に突き当たってモータに負荷が加わった状態になる場合もある。もし、初期駆動時にモータに負荷が加わった状態になると、初期駆動終了時までにロータを通電相に応じた位置に回転できないことがあり、誤学習する可能性があった。
【０００６】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、電源投入後の初期駆動時に実行する初期位置学習処理で誤学習することを防止できるモータ制御装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、請求項１に係る発明は、モータのロータの回転に伴って所定角度間隔で所定の位相差を有するＡ相信号とＢ相信号を出力するエンコーダと、電源投入後の初期駆動時に前記モータの通電相の切り換えを所定のタイムスケジュールで一巡させることで、いずれかの通電相で前記ロータの回転位置と該通電相とを一致させて該ロータを回転駆動して前記エンコーダのＡ相信号とＢ相信号をカウントして初期駆動終了時のカウント値と前記ロータの回転位置と通電相との対応関係を学習する初期位置学習処理を実行する学習手段と、前記初期駆動の終了後の通常駆動時に前記エンコーダのＡ相信号とＢ相信号をカウントしてそのカウント値から前記学習手段による学習結果を基準にして前記ロータの回転位置を判定して前記モータの通電相を順次切り換えることで前記ロータを回転駆動する制御手段とを備えたモータ制御装置において、前記学習手段は、前記初期駆動終了時に前記エンコーダのＡ相信号とＢ相信号のパターンに基づいて学習結果の正誤を判定し、誤学習と判断した場合には初期駆動を再実行して前記初期位置学習処理を再実行するようにしたものである。
【０００８】
初期駆動時の通電相の切り換えによりロータを正しく回転できた場合と正しく回転できなかった場合とでエンコーダのＡ相信号とＢ相信号のパターンが異なるため、初期駆動終了時のエンコーダのＡ相信号とＢ相信号のパターンから学習結果の正誤を判定することが可能となり、その結果、誤学習と判定した場合には、初期駆動を再実行して初期位置学習処理を再実行することで、間違った学習結果のままで通常のフィードバック制御に移行することを防止できて、正しい学習結果が得られてから通常のフィードバック制御に移行することができ、初期位置学習処理の信頼性を向上させることができる。
【０００９】
この場合、請求項２のように、初期駆動時に２相通電と１相通電とを交互に切り換えてロータを回転駆動し、２相通電となる位置で初期駆動を終了し、その初期駆動終了時におけるエンコーダのＡ相信号とＢ相信号のパターンが２相通電に対応するパターンとなっていない場合は、誤学習と判定し、初期駆動を再実行して初期位置学習処理を再実行するようにすると良い。
【００１０】
初期駆動時に１相通電と２相通電とを交互に切り換えるようにすれば、常に１相のみに通電する１相励磁方式や常に２相ずつ通電する２相励磁方式で初期駆動を行う場合と比較して、１ステップ（１回の励磁）当たりのロータ回転角度が１／２となるため、初期駆動中にロータの回転位置と通電相とを確実に同期させることができると共に、トルクが大きい２相通電でロータの振動を停止させて、エンコーダの出力信号を安定させることができる。従って、２相通電となる位置で初期駆動を終了すれば、その初期駆動終了時におけるエンコーダのＡ相信号とＢ相信号のパターンに基づいて学習結果の正誤を精度良く判定することができる。
【００１１】
また、請求項３のように、誤学習と判定した後に初期駆動を再実行する場合は、ロータの駆動方向を前回の初期駆動の駆動方向とは反対にして初期駆動を再実行するようにしても良い。例えば、初期駆動の途中でガタ（遊び）の片方の限界位置（側壁）に突き当たってモータに負荷が加わったことが原因で誤学習した場合には、ロータの駆動方向を前回の初期駆動の駆動方向とは反対にして初期駆動を再実行すれば、モータへの負荷を解除してロータをガタの範囲内で回転させてエンコーダのカウント値とロータの回転位置と通電相との対応関係を正しく学習することができる。
【００１２】
以上説明した請求項１〜３に係る発明は、モータを駆動源とする各種の位置切換装置に適用することが可能であり、例えば、請求項４のように、自動変速機のレンジ切換機構を駆動するモータの制御装置に適用しても良い。これにより、信頼性の高いモータ駆動式のレンジ切換制御装置を構成することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を実施するための最良の形態を自動変速機のレンジ切換装置に適用して具体化した２つの実施例１，２を説明する。
【実施例１】
【００１４】
本発明の実施例１を図１乃至図１３に基づいて説明する。
まず、図１に基づいてレンジ切換機構１１の構成を説明する。
レンジ切換機構１１の駆動源となるモータ１２は、例えばスイッチトリラクタンスモータにより構成され、減速機構２６（図４参照）を内蔵し、その出力軸１３の回転位置を検出する出力軸センサ１４が設けられている。この出力軸１３には、ディテントレバー１５が固定されている。
【００１５】
また、ディテントレバー１５にはＬ字形のパーキングロッド１８が固定され、このパーキングロッド１８の先端部に設けられた円錐体１９がロックレバー２１に当接している。このロックレバー２１は、円錐体１９の位置に応じて軸２２を中心にして上下動してパーキングギヤ２０をロック／ロック解除するようになっている。パーキングギヤ２０は、自動変速機２７の出力軸に設けられ、このパーキングギヤ２０がロックレバー２１によってロックされると、車両の駆動輪が回り止めされた状態（パーキング状態）に保持される。      
【００１６】
一方、ディテントレバー１５をパーキングレンジ（以下「Ｐレンジ」と表記する）と他のレンジ（以下「ＮｏｔＰレンジ」と表記する）に保持するためのディテントバネ２３が支持ベース１７に固定され、このディテントバネ２３の先端に設けられた係合部２３ａがディテントレバー１５のＰレンジ保持凹部２４に嵌まり込んだときに、ディテントレバー１５がＰレンジの位置に保持され、該ディテントバネ２３の係合部２３ａがディテントレバー１５のＮｏｔＰレンジ保持凹部２５に嵌まり込んだときに、ディテントレバー１５がＮｏｔＰレンジの位置に保持されるようになっている。
【００１７】
Ｐレンジでは、パーキングロッド１８がロックレバー２１に接近する方向に移動して、円錐体１９の太い部分がロックレバー２１を押し上げてロックレバー２１の凸部２１ａがパーキングギヤ２０に嵌まり込んでパーキングギヤ２０をロックした状態となり、それによって、自動変速機２７の出力軸（駆動輪）がロックされた状態（パーキング状態）に保持される。
【００１８】
一方、ＮｏｔＰレンジでは、パーキングロッド１８がロックレバー２１から離れる方向に移動して、円錐体１９の太い部分がロックレバー２１から抜け出てロックレバー２１が下降し、それによって、ロックレバー２１の凸部２１ａがパーキングギヤ２０から外れてパーキングギヤ２０のロックが解除され、自動変速機２７の出力軸が回転可能な状態（走行可能な状態）に保持される。
【００１９】
尚、前述した出力軸センサ１４は、モータ１２の減速機構２６の出力軸１３の回転角度に応じた電圧を出力する回転センサ（例えばポテンショメータ）によって構成され、その出力電圧によって現在のレンジがＰレンジとＮｏｔＰレンジのいずれであるかを確認できるようになっている。
【００２０】
次に、図２に基づいてモータ１２の構成を説明する。
本実施例１では、モータ１２として、スイッチトリラクタンスモータ（以下「ＳＲモータ」と表記する）が用いられている。このＳＲモータ１２は、ステータ３１とロータ３２が共に突極構造を持つモータで、永久磁石が不要で構造が簡単であるという利点がある。円筒状のステータ３１の内周部には、例えば１２個の突極３１ａが等間隔に形成され、これに対して、ロータ３２の外周部には、例えば８個の突極３２ａが等間隔に形成され、ロータ３２の回転に伴い、ロータ３２の各突極３２ａがステータ３１の各突極３１ａと微小ギャップを介して順番に対向するようになっている。
【００２１】
ステータ３１の合計１２個の突極３１ａには、Ｕ相、Ｖ相、Ｗ相の合計６個の巻線３３と、Ｕ’相、Ｖ’相、Ｗ’相の合計６個の巻線３４が順番に巻回されている。尚、ステータ３１とロータ３２の突極３１ａ，３２ａの数は適宜変更しても良いことは言うまでもない。
【００２２】
本実施例１の巻線３３，３４の巻回順序は、ステータ３１の１２個の突極３１ａに対して、例えば、Ｖ相→Ｗ相→Ｕ相→Ｖ相→Ｗ相→Ｕ相→Ｖ’相→Ｗ’相→Ｕ’相→Ｖ’相→Ｗ’相→Ｕ’相の順序で巻回されている。図３に示すように、Ｕ相、Ｖ相、Ｗ相の合計６個の巻線３３と、Ｕ’相、Ｖ’相、Ｗ’相の合計６個の巻線３４は、２系統のモータ励磁部３５，３６を構成するように結線されている。
【００２３】
一方のモータ励磁部３５は、Ｕ相、Ｖ相、Ｗ相の合計６個の巻線３３をＹ結線して構成され（同じ相の２個の巻線３３はそれぞれ直列に接続されている）、他方のモータ励磁部３６は、Ｕ’相、Ｖ’相、Ｗ’相の合計６個の巻線３４をＹ結線して構成されている（同じ相の２個の巻線３４はそれぞれ直列に接続されている）。２つのモータ励磁部３５，３６は、Ｕ相とＵ’相が同時に通電され、Ｖ相とＶ’相が同時に通電され、Ｗ相とＷ’相が同時に通電される。
【００２４】
これら２つのモータ励磁部３５，３６は、車両に搭載されたバッテリ４０を電源として、それぞれ別個のモータドライバ３７，３８によって駆動される。このように、モータ励磁部３５，３６とモータドライバ３７，３８をそれぞれ２系統ずつ設けることで、一方の系統が故障しても、他方の系統でＳＲモータ１２を回転させることができるようになっている。図３に示すモータドライバ３７，３８の回路構成例では、各相毎にトランジスタ等のスイッチング素子３９を１個ずつ設けたユニポーラ駆動方式の回路構成としているが、各相毎にスイッチング素子を２個ずつ設けたバイポーラ駆動方式の回路構成を採用しても良い。尚、本発明は、モータ励磁部とモータドライバをそれぞれ１系統ずつ設けた構成としても良いことは言うまでもない。
【００２５】
各モータドライバ３７，３８の各スイッチング素子３９のオン／オフは、ＥＣＵ４１（制御手段）によって制御される。図４に示すように、このＥＣＵ４１と各モータドライバ３７，３８は、レンジ切換制御装置４２に搭載され、このレンジ切換制御装置４２には、Ｐレンジへの切換操作を行うＰレンジスイッチ４３と、ＮｏｔＰレンジへの切換操作を行うＮｏｔＰレンジスイッチ４４の操作信号が入力される。Ｐレンジスイッチ４３又はＮｏｔＰレンジスイッチ４４の操作により選択されたレンジは、インストルメントパネル（図示せず）に設けられたレンジ表示部４５に表示される。
【００２６】
ＳＲモータ１２には、ロータ３２の回転位置を検出するためのエンコーダ４６が設けられている。このエンコーダ４６は、例えば磁気式のロータリエンコーダにより構成されており、その具体的な構成は、図５及び図６に示すように、Ｎ極とＳ極が円周方向に交互に等ピッチで着磁された円環状のロータリマグネット４７がロータ３２の側面に同軸状に固定され、このロータリマグネット４７に対向する位置に、３個のホールＩＣ等の磁気検出素子４８，４９，５０が配置された構成となっている。
【００２７】
本実施例１では、ロータリマグネット４７のＮ極とＳ極の着磁ピッチが７．５°に設定されている。このロータリマグネット４７の着磁ピッチ（７．５°）は、ＳＲモータ１２の励磁１回当たりのロータ３２の回転角度と同じに設定されている。後述するように、１−２相励磁方式でＳＲモータ１２の通電相の切り換えを６回行うと、全ての通電相の切り換えが一巡してロータ３２とロータリマグネット４７が一体的に７．５°×６＝４５°回転する。このロータリマグネット４７の４５°の回転角度範囲に存在するＮ極とＳ極の数は、合計６極となっている。
【００２８】
更に、ロータ３２の基準回転位置に相当する位置のＮ極（Ｎ’）とその両側のＳ極（Ｓ’）がそれ以外の磁極よりも径方向の幅が広くなるように形成されている。尚、本実施例１では、ＳＲモータ１２の通電相の切り換えが一巡する間にロータ３２とロータリマグネット４７が一体的に４５°回転することを考慮して、ロータ３２の基準回転位置に相当する幅広な着磁部分（Ｎ’）が４５°ピッチで形成されており、従って、ロータリマグネット４７全体として、基準回転位置に相当する幅広な着磁部分（Ｎ’）が合計８個形成されている。尚、基準回転位置に相当する幅広な着磁部分（Ｎ’）は、ロータリマグネット４７全体として、１個のみ形成した構成としても良い。
【００２９】
このロータリマグネット４７に対して３個の磁気検出素子４８，４９，５０が次のような位置関係で配置されている。Ａ相信号を出力する磁気検出素子４８とＢ相信号を出力する磁気検出素子４９は、ロータリマグネット４７の幅狭な着磁部分（Ｎ，Ｓ）と幅広な着磁部分（Ｎ’，Ｓ’）の両方に対向し得る位置の同一円周上に配置されている。一方、Ｚ相信号を出力する磁気検出素子５０は、ロータリマグネット４７の幅狭な着磁部分（Ｎ，Ｓ）よりも径方向外側又は内側の位置で、且つ、幅広な着磁部分（Ｎ’，Ｓ’）のみに対向し得る位置に配置されている。Ａ相信号とＢ相信号を出力する２個の磁気検出素子４８，４９の間隔は、図７に示すように、Ａ相信号とＢ相信号の位相差が、電気角で９０°（機械角で３．７５°）となるように設定されている。ここで、“電気角”はＡ・Ｂ相信号の発生周期を１周期（３６０°）とした場合の角度で、“機械角”は機械的な角度（ロータ３２の１回転を３６０°とした場合の角度）であり、Ａ相信号の立ち下がり（立ち上がり）からＢ相信号の立ち下がり（立ち上がり）までにロータ３２が回転する角度がＡ相信号とＢ相信号の位相差の機械角に相当する。また、Ｚ相信号を出力する磁気検出素子５０は、Ｚ相信号とＢ相信号（又はＡ相信号）との位相差が０となるように配置されている。
【００３０】
各磁気検出素子４８，４９，５０の出力は、Ｎ極（Ｎ’極）と対向したときにハイレベル“Ｈｉ”となり、Ｓ極（Ｓ’極）と対向したときにローレベル“Ｌｏｗ”となる。
尚、Ｚ相信号用の磁気検出素子５０の出力は、ロータ３２の基準回転位置に相当する幅広なＮ’極に対向する毎にハイレベル“Ｈｉ”となり、それ以外の位置では、ローレベル“Ｌｏｗ”となる。
【００３１】
本実施例１では、ＥＣＵ４１は、特許請求の範囲でいう制御手段として機能し、エンコーダ４６のＡ相信号とＢ相信号の立ち上がり／立ち下がりの両方のエッジをカウントして、そのエンコーダカウント値に応じてＳＲモータ１２の通電相を切り換えることでロータ３２を回転駆動する。この際、Ａ相信号とＢ相信号の発生順序によってロータ３２の回転方向を判定し、正回転（Ｐレンジ→ＮｏｔＰレンジの回転方向）ではエンコーダカウント値をカウントアップし、逆回転（ＮｏｔＰレンジ→Ｐレンジの回転方向）ではエンコーダカウント値をカウントダウンする。これにより、ロータ３２が正回転／逆回転のいずれの方向に回転しても、エンコーダカウント値とロータ３２の回転位置との対応関係が維持されるため、正回転／逆回転のいずれの回転方向でも、エンコーダカウント値によってロータ３２の回転位置（回転角度）を検出して、その回転位置に対応した相の巻線３３，３４に通電してロータ３２を回転駆動する。
【００３２】
図７は、ロータ３２を逆回転方向（ＮｏｔＰレンジ→Ｐレンジの回転方向）に回転させたときのエンコーダ４６の出力波形と通電相の切換パターンを示している。逆回転方向（ＮｏｔＰレンジ→Ｐレンジの回転方向）と正回転方向（Ｐレンジ→ＮｏｔＰレンジの回転方向）のいずれの場合も、ロータ３２が７．５°回転する毎に１相通電と２相通電とを交互に切り換えるようになっており、ロータ３２が４５°回転する間に、例えば、Ｕ相通電→ＵＷ相通電→Ｗ相通電→ＶＷ相通電→Ｖ相通電→ＵＶ相通電の順序で通電相の切り換えを一巡するようになっている。
【００３３】
そして、この通電相の切り換え毎に、ロータ３２が７．５°ずつ回転して、Ａ相、Ｂ相信号用の磁気検出素子４８，４９に対向するロータリマグネット４７の磁極がＮ極→Ｓ極（Ｎ’極→Ｓ’極）又はＳ極→Ｎ極（Ｓ’極→Ｎ’極）に変化してＡ相信号とＢ相信号のレベルが交互に反転し、それによって、ロータ３２が７．５°回転する毎に、エンコーダカウント値が２ずつカウントアップ（又はカウントダウン）する。また、通電相の切り換えが一巡してロータ３２が４５°回転する毎に、Ｚ相用の磁気検出素子５０がロータ３２の基準回転位置に相当する幅広なＮ’極に対向して、Ｚ相信号がハイレベル“Ｈｉ”となる。尚、本明細書では、Ａ相、Ｂ相、Ｚ相信号がハイレベル“Ｈｉ”になることを、Ａ相、Ｂ相、Ｚ相信号が出力されると言う場合がある。
【００３４】
ところで、エンコーダカウント値は、ＥＣＵ４１のＲＡＭに記憶されるため、ＥＣＵ４１の電源がオフされると、エンコーダカウント値の記憶データが消えてしまう。そのため、ＥＣＵ４１の電源投入直後のエンコーダカウント値（０）は、実際のロータ３２の回転位置（通電相）に対応したものとはなっていない。従って、エンコーダカウント値に応じて通電相を切り換えるためには、電源投入後にエンコーダカウント値と実際のロータ３２の回転位置とを対応させて、エンコーダカウント値と通電相との対応関係を学習する初期位置学習処理が必要となる。
【００３５】
そこで、本実施例１では、レンジ切換制御装置４２のＥＣＵ４１によって後述する図８及び図９に示す初期駆動ルーチンを実行することで、ＥＣＵ４１への電源投入後の初期駆動時に、１−２相励磁方式でＳＲモータ１２の通電相の切り換えを所定のタイムスケジュールで一巡させることで、いずれかの通電相でロータ３２の回転位置と該通電相とを一致させて該ロータ３２を回転駆動し、エンコーダ４６のＡ相信号とＢ相信号のエッジをカウントして、初期駆動終了時のエンコーダカウント値とロータ３２の回転位置と通電相との対応関係を学習し、その後の通常駆動時に、エンコーダカウント値と初期駆動終了時の学習結果とに基づいて通電相を決定するようにしている。
【００３６】
この初期駆動時の初期位置学習処理は、具体的には次のようにして行われる。
図１２に示すように、ＰレンジでＥＣＵ４１に電源が投入されたときに初期駆動を行う場合は、例えば、Ｗ相通電→ＵＷ相通電→Ｕ相通電→ＵＶ相通電→Ｖ相通電→ＶＷ相通電の順序で通電相の切り換えを所定のタイムスケジュールで一巡し、ロータ３２を正回転方向（Ｐレンジ→ＮｏｔＰレンジの回転方向）に駆動する。
【００３７】
一方、ＮｏｔＰレンジでＥＣＵ４１に電源が投入されたときに初期駆動を行う場合は、例えば、Ｖ相通電→ＵＶ相通電→Ｕ相通電→ＵＷ相通電→Ｗ相通電→ＶＷ相通電の順序で通電相の切り換えを所定のタイムスケジュールで一巡し、ロータ３２を逆回転方向（ＮｏｔＰレンジ→Ｐレンジの回転方向）に駆動する。
【００３８】
この初期駆動時には、１相通電の時間Ｔ１を２相通電の時間Ｔ２よりも短くし、例えばＴ１＝１０ｍｓ、Ｔ２＝１００ｍｓに設定する。初期駆動中にロータ３２の回転位置と通電相との同期がとれた後でも、トルクが小さい１相通電では、ロータ３２が振動するため、１相通電の時間Ｔ１を短くして、できるだけ速やかに次の２相通電に切り換えることで、ロータ３２の振動を速やかに停止させてエンコーダ４６の出力信号を安定させるようにしている。
【００３９】
このように、初期駆動時に通電相の切り換えを一巡させれば、初期駆動が終了するまでに、いずれかの通電相で必ずロータ３２の回転位置と通電相とが一致して、それ以後、通電相の切り換えに同期してロータ３２が回転して、このロータ３２の回転に同期してエンコーダ４６からＡ相信号とＢ相信号が出力されるようになる。
【００４０】
この初期駆動中に、エンコーダ４６のＡ相信号とＢ相信号の立ち上がり／立ち下がりの両方のエッジをカウントする。従って、初期駆動終了時のエンコーダカウント値を見れば、初期駆動が終了するまでにロータ３２が実際に通電相の切り換えに同期して回転した角度（回転量）が分かり、それによって、初期駆動終了時のエンコーダカウント値とロータ３２の回転位置と通電相との対応関係が分かる。
【００４１】
図１２の例では、初期駆動時に最初の通電相（Ｗ相）からロータ３２が回転し、通電相の切り換え毎にロータ３２が７．５°ずつ回転してエンコーダカウント値が２ずつカウントアップし、初期駆動終了時にエンコーダカウント値が１２となる。
【００４２】
これに対し、例えば、初めの３回の励磁（Ｗ相通電→ＵＷ相通電→Ｕ相通電）でロータ３２が回転しない場合、つまり４回目以降の励磁（ＵＶ相通電→Ｖ相通電→ＶＷ相通電）でロータ３２の回転位置と通電相とが同期してロータ３２が３回の励磁分だけ回転する場合は、初期駆動終了時までにロータ３２が７．５°×３＝２２．５°回転して、エンコーダカウント値が２×３＝６となる。従って、初期駆動終了時のエンコーダカウント値を見れば、初期駆動が終了するまでにロータ３２が実際に通電相の切り換えに同期して回転した角度（回転量）が判明する。
【００４３】
初期駆動の最後の通電相は、常にＶＷ相（２相通電）となるが、エンコーダカウント値は、必ずしも１２になるとは限らず、例えば、８又は４になる場合もある。初期駆動終了後の通常駆動時には、エンコーダカウント値に基づいて通電相が決定されるため、初期駆動によるエンコーダカウント値のずれを修正しないと、通常駆動時に正しい通電相を選択することができない。
【００４４】
そこで、本実施例１では、初期駆動終了時のエンコーダカウント値を初期位置ずれ学習値として学習し、その後の通常駆動時にエンコーダカウント値を初期位置ずれ学習値で補正することで、初期駆動終了時のエンコーダカウント値と通電相（ロータ３２の回転位置）とのずれを補正して、通常駆動時に正しい通電相を選択できるようにしている。
【００４５】
初期駆動終了後は、図１２に示すように、まず初期駆動終了時の通電相（ＶＷ相）と同じ相に例えば１０ｍｓ通電してロータ３２の位置を初期駆動終了時の位置に保持し、その後、フィードバック制御により、その時点のエンコーダカウント値と初期位置ずれ学習値とに基づいて通電相を切り換えてロータ３２を目標位置Ａｃｎｔの方向へ回転させる。これにより、ロータ３２の回転位置（エンコーダカウント値）が目標位置Ａｃｎｔから例えば０．５°以内に到達した時点で、通電相の切り換えを終了してロータ３２を停止させ、その後は、同じ相に通電し続けてロータ３２の停止状態を保持し、この保持状態を例えば５０ｍｓ継続する。この後、目標位置Ａｃｎｔが変化しなければ、通電を停止する。
【００４６】
ところで、モータ１２の回転量（回転角度）は、減速機構２６等の回転伝達系を介して出力軸１３の回転量（レンジ切換機構１１の操作量）に変換されるが、回転伝達系を構成する部品間には、ガタ（遊び）が存在する。例えば、減速機構２６の歯車間に遊び（バックラッシ）があり、また、減速機構２６の回転軸の先端部に形成した断面非円形（角形、Ｄカット形状等）の連結部を出力軸１３の嵌合穴に嵌め込んで連結する構成では、両者の嵌め込み作業を容易にするためのクリアランスが必要となる。このように、モータ１２の回転量（回転角度）を制御対象であるレンジ切換機構１１の操作量に変換する回転伝達系には、ガタが存在するため、初期駆動時のロータ３２の回転は、ガタの範囲内で行われる場合もあるし、初期駆動の途中でガタの片方の限界位置（側壁）に突き当たってモータ１２に負荷が加わった状態になる場合もある。もし、初期駆動時にモータ１２に負荷が加わった状態になると、初期駆動終了時までにロータ３２を通電相に応じた位置に回転できないことがあり、誤学習する可能性があった。
【００４７】
そこで、本実施例１では、初期駆動終了時にエンコーダ４６のＡ相信号とＢ相信号のパターンに基づいて学習結果の正誤を判定し、誤学習と判断した場合には初期駆動を再実行して初期位置学習処理を再実行するようにしている。
【００４８】
このような誤学習防止の制御を実現するために、前述したように、初期駆動時に１−２相励磁方式でロータ３２を回転駆動して２相通電となる位置で初期駆動を終了し、その初期駆動終了時におけるエンコーダ４６のＡ相信号とＢ相信号のパターンが２相通電に対応するパターンとなっていない場合は、誤学習と判定するようにしている。
【００４９】
具体的には、図１３に示すように、初期駆動によりロータ３２が正常に回転駆動されて２相通電となる位置で初期駆動を終了したときには、初期駆動終了時の２相通電がＵＷ相通電、ＵＶ相通電、ＶＷ相通電のいずれの場合であっても、初期駆動終了時（学習タイミング）にエンコーダ４６のＡ相信号とＢ相信号が共にハイレベル“Ｈｉ”になるが、ロータ３２に負荷が加わってロータ３２が正常に回転駆動されなかった場合には、初期駆動終了時（学習タイミング）にエンコーダ４６のＡ相信号とＢ相信号のいずれか一方又は両方がローレベル“Ｌｏｗ”となる（図１３にはＡ相信号がローレベル“Ｌｏｗ”となる例を示している）。このような関係から、本実施例１では、初期駆動終了時（学習タイミング）にエンコーダ４６のＡ相信号とＢ相信号が共にハイレベル“Ｈｉ”であれば、学習結果が正しいと判定し、Ａ相信号とＢ相信号のいずれか一方又は両方がローレベル“Ｌｏｗ”であれば、学習結果が間違っている（誤学習）と判定する。
【００５０】
以上説明した初期駆動による初期位置学習処理は、レンジ切換制御装置４２のＥＣＵ４１によって図８及び図９に示す初期駆動ルーチンに従って実行される。本ルーチンは、ＥＣＵ４１への電源投入直後（イグニッションスイッチをＯＮ操作した直後）に、初期駆動が終了するまで所定周期（例えば１ｍｓ周期）で実行され、特許請求の範囲でいう学習手段としての役割を果たす。
【００５１】
本ルーチンが起動されると、まずステップ１０１で、オープンループ制御実行フラグＸｏｐｅｎ＝ＯＮ、又は、リカバリ処理実行フラグＸｒｃｖ＝ＯＮであるか否かを判定する。ここで、オープンループ制御実行フラグＸｏｐｅｎは、エンコーダ４６又はＳＲモータ１２が故障したときに実行されるオープンループ制御（フェイルセーフ処理）が実行されているか否かを判定するフラグであり、ＯＮは実行されていることを意味する。また、リカバリ処理実行フラグＸｒｃｖは、一時的な動作異常が発生したときに一時的に実行されるリカバリ処理（オープンループ制御）が実行されているか否かを判定するフラグであり、ＯＮは実行されていることを意味する。
【００５２】
もし、上記ステップ１０１で、「Ｙｅｓ」と判定されれば、以降の処理を行うことなく、本ルーチンを終了し、「Ｎｏ」と判定されれば、ステップ１０２に進み、ＥＣＵ４１のイニシャル処理から出力軸センサ１４の出力電圧が安定するまで待つための所定時間（例えば１００ｍｓ）が経過したか否かを判定する。そして、イニシャル処理から所定時間経過した時点で、ステップ１０３に進み、出力軸センサ１４の出力電圧を読み込んで、この出力電圧がレンジ判定値以下であるか否かで、現在のレンジがＰレンジかＮｏｔＰレンジかを判定し、Ｐレンジであれば、ステップ１０４に進み、レンジ判定フラグＸｎｐをＰレンジを意味する「０」にセットし、ＮｏｔＰレンジであれば、ステップ１０５に進み、レンジ判定フラグＸｎｐをＮｏｔＰレンジを意味する「１」にセットする。
【００５３】
この後、ステップ１０６に進み、レンジ判定フラグＸｎｐ＝０（Ｐレンジ）であるか否かを判定し、レンジ判定フラグＸｎｐ＝０（Ｐレンジ）であれば、ステップ１０７に進み、図１０のＰレンジ初期駆動ルーチンを実行し、レンジ判定フラグＸｎｐ＝１（ＮｏｔＰレンジ）であれば、ステップ１０８に進み、図１１のＮｏｔＰレンジ初期駆動ルーチンを実行する。
【００５４】
上記ステップ１０７で、図１０のＰレンジ初期駆動ルーチンが起動されると、ステップ２０１〜２０６で、初期駆動中の励磁回数をカウントする励磁回数カウンタＣＡＳＥが０〜５のいずれであるかを判定する。この励磁回数カウンタＣＡＳＥは、イニシャル処理でセットされる初期値が「０」で、励磁を１回行う毎に１ずつカウントアップされる（図９のステップ１１４）。そして、励磁回数カウンタＣＡＳＥの判定結果に応じて通電相と通電時間Ｔを次のように設定する。
【００５５】
ＣＡＳＥ＝０（１回目の励磁）の場合は、ステップ２０７に進み、Ｗ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝１（２回目の励磁）の場合は、ステップ２０８に進み、ＵＷ相通電を選択し、その通電時間ＴをＴ２（例えば１００ｍｓ）にセットする。
【００５６】
ＣＡＳＥ＝２（３回目の励磁）の場合は、ステップ２０９に進み、Ｕ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝３（４回目の励磁）の場合は、ステップ２１０に進み、ＵＶ相通電を選択し、その通電時間ＴをＴ２（例えば１００ｍｓ）にセットする。
【００５７】
ＣＡＳＥ＝４（５回目の励磁）の場合は、ステップ２１１に進み、Ｖ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝５（６回目の励磁）の場合は、ステップ２１２に進み、ＶＷ相通電を選択し、その通電時間ＴをＴ２（例えば１００ｍｓ）にセットする。
【００５８】
これにより、Ｐレンジで初期駆動を行う場合は、Ｗ相通電→ＵＷ相通電→Ｕ相通電→ＵＶ相通電→Ｖ相通電→ＶＷ相通電の順序で通電相の切り換えを一巡して、ロータ３２を正回転方向（Ｐレンジ→ＮｏｔＰレンジの回転方向）に駆動する。この際、１相通電の時間Ｔ１を２相通電の時間Ｔ２よりも短く設定する。
【００５９】
一方、ステップ１０８で、図１１のＮｏｔＰレンジ初期駆動ルーチンが起動されると、ステップ２２１〜２２６で、励磁回数カウンタＣＡＳＥが０〜５のいずれであるかを判定し、その判定結果に応じて通電相と通電時間Ｔを次のように設定する。
【００６０】
ＣＡＳＥ＝０（１回目の励磁）の場合は、ステップ２２７に進み、Ｖ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝１（２回目の励磁）の場合は、ステップ２２８に進み、ＵＶ相通電を選択し、その通電時間ＴをＴ２（例えば１００ｍｓ）にセットする。
【００６１】
ＣＡＳＥ＝２（３回目の励磁）の場合は、ステップ２２９に進み、Ｕ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝３（４回目の励磁）の場合は、ステップ２３０に進み、ＵＷ相通電を選択し、その通電時間ＴをＴ２（例えば１００ｍｓ）にセットする。
【００６２】
ＣＡＳＥ＝４（５回目の励磁）の場合は、ステップ２３１に進み、Ｗ相通電を選択し、その通電時間ＴをＴ１（例えば１０ｍｓ）にセットする。
ＣＡＳＥ＝５（６回目の励磁）の場合は、ステップ２３２に進み、ＶＷ相通電を選択し、その通電時間ＴをＴ２（例えば１００ｍｓ）にセットする。
【００６３】
これにより、ＮｏｔＰレンジで初期駆動を行う場合は、Ｖ相通電→ＵＶ相通電→Ｕ相通電→ＵＷ相通電→Ｗ相通電→ＶＷ相通電の順序で通電相の切り換えを一巡し、ロータ３２を逆回転方向（ＮｏｔＰレンジ→Ｐレンジの回転方向）に駆動する。この場合も、１相通電の時間Ｔ１を２相通電の時間Ｔ２よりも短く設定する。
【００６４】
以上のようにして、図１０のＰレンジ初期駆動ルーチン又は図１１のＮｏｔＰレンジ初期駆動ルーチンを実行した後、図８のステップ１０９に進み、初期駆動中にレンジ切換操作（Ｐレンジスイッチ４３又はＮｏｔＰレンジスイッチ４４の操作）が行われたか否かを判定し、初期駆動中にレンジ切換操作が行われれば、ステップ１１０に進み、レンジ切換操作フラグＸｃｈｇをＯＮにセットし、レンジ切換操作が行われていなければ、ステップ１１１に進み、レンジ切換操作フラグＸｃｈｇをＯＦＦにセットする。
【００６５】
この後、図９のステップ１１２に進み、現在の通電相の通電時間をカウントする通電時間カウンタＣＴをカウントアップし、次のステップ１１３で、現在の通電相の通電時間ＣＴが前記図１０又は図１１のルーチンで設定した通電時間Ｔ（＝Ｔ１又はＴ２）を越えたか否かを判定し、越えていなければ、以降の処理を行うことなく、本ルーチンを終了する。これにより、現在の通電相の通電時間ＣＴが図１０又は図１１のルーチンで設定した通電時間Ｔ（＝Ｔ１又はＴ２）を越えるまで、現在の通電相への通電が継続される。
【００６６】
その後、現在の通電相の通電時間ＣＴが図１０又は図１１のルーチンで設定した通電時間Ｔ（＝Ｔ１又はＴ２）を越えた時点で、ステップ１１４に進み、励磁回数カウンタＣＡＳＥを１だけカウントアップし、通電相を次の通電相に切り換える。そして、次のステップ１１５で、通電時間カウンタＣＴをリセットした後、ステップ１１６に進み、励磁回数カウンタＣＡＳＥが初期駆動の終了を意味する「６」に達したか否かを判定し、もし、励磁回数カウンタＣＡＳＥが「６」に達していれば、ステップ１１８に進み、エンコーダ４６のＡ相信号とＢ相信号が共にハイレベル“Ｈｉ”であるか否かで学習結果が正しいか否かを判定する。その結果、Ａ相信号とＢ相信号が共にハイレベル“Ｈｉ”であると判定されれば、学習結果が正しいと判断して、ステップ１１９に進み、初期駆動終了フラグＸｅｎｄを初期駆動の終了を意味する「ＯＮ」にセットする。
【００６７】
これに対し、上記ステップ１１８で「Ｎｏ」と判定された場合、つまり、Ａ相信号とＢ相信号のいずれか一方又は両方がローレベル“Ｌｏｗ”の場合には、誤学習と判断して、ステップ１２４に進み、励磁回数カウンタＣＡＳＥを「０」にリセットして、初期駆動を再実行して初期位置学習処理を再実行する。
【００６８】
一方、上記ステップ１１６で、励磁回数カウンタＣＡＳＥが「６」に達していないと判定された場合、つまり、初期駆動の途中である場合は、ステップ１１７に進み、初期駆動の途中終了条件が成立しているか否かを判定する。この初期駆動の途中終了条件は、次の３つの条件(1) 〜(3) によって判定される。
【００６９】
(1) レンジ判定フラグＸｎｐが０（Ｐレンジ）であること
(2) 励磁回数カウンタＣＡＳＥが２又は４、つまり２相通電終了時であること
(3) レンジ切換操作フラグＸｃｈｇがＯＮ、つまり初期駆動中にレンジ切換操作が行われたこと
これら３つの条件(1) 〜(3) のうち、１つでも満たさない条件があれば、初期駆動の途中終了条件が成立せず、初期駆動を継続する。
【００７０】
これに対し、上述した３つの条件(1) 〜(3) を全て満たしていれば、初期駆動の途中終了条件が成立して、ステップ１１８に進み、エンコーダ４６のＡ相信号とＢ相信号が共にハイレベル“Ｈｉ”であるか否かで学習結果が正しいか否かを判定する。その結果、Ａ相信号とＢ相信号が共にハイレベル“Ｈｉ”であると判定されれば、学習結果が正しいと判断して、ステップ１１９に進み、初期駆動終了フラグＸｅｎｄを初期駆動の終了を意味する「ＯＮ」にセットする。
【００７１】
一方、ステップ１１８で「Ｎｏ」と判定された場合、つまり、Ａ相信号とＢ相信号のいずれか一方又は両方がローレベル“Ｌｏｗ”の場合には、誤学習と判断して、ステップ１２４に進み、励磁回数カウンタＣＡＳＥを「０」にリセットして、初期駆動を再実行して初期位置学習処理を再実行する。
【００７２】
上記ステップ１１９で、初期駆動終了フラグＸｅｎｄが「ＯＮ」にセットされると、ステップ１２０に進み、レンジ判定フラグＸｎｐ＝１であるか否か（ＮｏｔＰレンジで初期駆動を行ったか否か）を判定し、レンジ判定フラグＸｎｐ＝１であれば、ステップ１２１に進み、初期駆動終了時のエンコーダカウント値Ｎｃｎｔを初期位置ずれ学習値Ｇｃｎｔとして記憶する。そして、次のステップ１２２で、エンコーダカウント値Ｎｃｎｔを次式によりＮｏｔＰレンジを基準にした値に補正する。
Ｎｃｎｔ＝Ｎｃｎｔ＋２８８
【００７３】
本実施例１では、Ｐレンジの保持位置を０点位置としてエンコーダカウント値Ｎｃｎｔをカウントアップし、ＮｏｔＰレンジの保持位置までロータ３２が回転したときに、エンコーダカウント値Ｎｃｎｔが例えば２８８となるようになっている。従って、ＮｏｔＰレンジで初期駆動を行った場合は、初期駆動終了時のエンコーダカウント値Ｎｃｎｔに２８８を加算することで、エンコーダカウント値ＮｃｎｔをＮｏｔＰレンジを基準にした値に補正する。
【００７４】
一方、上記ステップ１２０で、レンジ判定フラグＸｎｐ＝０（Ｐレンジで初期駆動）と判定されれば、ステップ１２３に進み、初期駆動終了時のエンコーダカウント値Ｎｃｎｔを用いて初期位置ずれ学習値Ｇｃｎｔを次式により算出する。
Ｇｃｎｔ＝Ｎｃｎｔ＋２×（６−ＣＡＳＥ）
【００７５】
この場合、初期駆動が最後まで行われれば、ステップ１１４の処理によりＣＡＳＥ＝６となるため、初期駆動終了時のエンコーダカウント値Ｎｃｎｔがそのまま初期位置ずれ学習値Ｇｃｎｔとなるが、Ｐレンジで初期駆動を行う場合は、初期駆動の途中でレンジ切換操作が行われたときに、次の２相通電（２相通電の実行中にレンジ切換要求が発生したときはその２相通電）が終了してから通常駆動に移行するため、その初期駆動を最後まで実行したと仮定して、本来の初期駆動終了時のエンコーダカウント値Ｎｃｎｔを推定し、その推定値を初期位置ずれ学習値Ｇｃｎｔとするようにしている。２×（６−ＣＡＳＥ）は、未終了の励磁回数分の回転角度に相当するカウントアップ値（以下「Ｎｃｎｔ補正量」という）である。
【００７６】
以上説明した本実施例１によれば、初期駆動時に１−２相励磁方式でロータ３２を回転駆動して２相通電となる位置で初期駆動を終了し、その初期駆動終了時におけるエンコーダ４６のＡ相信号とＢ相信号のパターンが２相通電に対応するパターンとなっていない場合は、誤学習と判断して、初期駆動を再実行して初期位置学習処理を再実行するようにしたので、間違った学習結果のままで通常のフィードバック制御に移行することを防止できて、正しい学習結果が得られてから通常のフィードバック制御に移行することができ、初期位置学習処理の信頼性を向上させることができる。
【実施例２】
【００７７】
図１４乃至図１７に示す本願発明の実施例２では、初期駆動による学習結果が間違っている（誤学習）と判定した後に初期駆動を再実行する場合は、ロータ３２の駆動方向を前回の初期駆動の駆動方向とは反対にして初期駆動を再実行する。例えば、図１４に示すように、１回目の初期駆動の途中でガタの片方の限界位置（側壁）に突き当たってロータ３２に負荷が加わったことが原因で誤学習した場合には、本実施例２のように、ロータ３２の駆動方向を１回目の初期駆動の駆動方向とは反対にして２回目の初期駆動を実行すれば、ロータ３２への負荷を解除してロータ３２をガタの範囲内で回転させてエンコーダカウント値とロータ３２の回転位置と通電相との対応関係を正しく学習することができる。
【００７８】
本実施例２の初期駆動は、図１５の初期駆動ルーチンに従って実行される。
図１５の初期駆動ルーチンは、前記実施例１で説明した図８及び図９の初期駆動ルーチンのステップ１１６とステップ１１７の処理をそれぞれステップ１１６ａとステップ１１７ａの処理に変更し、且つ、ステップ１２４の前にステップ１１８ａを追加したものであり、それ以外の処理は前記実施例１と同じである。
【００７９】
また、本実施例２では、Ｐレンジで初期駆動を実行する場合は、図１６のＰレンジ初期駆動ルーチンを実行して、励磁回数カウンタＣＡＳＥが０から６にカウントアップされるまで、１回目の初期駆動を前記実施例１と同様の方法で実行し（ステップ２０１〜２１２）、１回目の初期駆動による学習結果が誤学習と判定された場合は、励磁回数カウンタＣＡＳＥが６から１０にカウントアップされるまで、２回目の初期駆動をロータ３２の駆動方向を１回目の初期駆動の駆動方向とは反対にして実行する（ステップ２１３〜２２０）。これにより、Ｐレンジで１回目の初期駆動を行う場合は、Ｗ相通電→ＵＷ相通電→Ｕ相通電→ＵＶ相通電→Ｖ相通電→ＶＷ相通電の順序で通電相を切り換えて、ロータ３２を正回転方向（Ｐレンジ→ＮｏｔＰレンジの回転方向）に駆動し、１回目の初期駆動による学習結果が誤学習と判定された場合は、２回目の初期駆動を、Ｖ相通電→ＵＶ相通電→Ｕ相通電→ＵＷ相通電の順序で通電相を切り換えて実行し、ロータ３２を逆回転方向（ＮｏｔＰレンジ→Ｐレンジの回転方向）に駆動する。
【００８０】
一方、ＮｏｔＰレンジで初期駆動を実行する場合は、図１７のＮｏｔＰレンジ初期駆動ルーチンを実行して、励磁回数カウンタＣＡＳＥが０から６にカウントアップされるまで、１回目の初期駆動を前記実施例１と同様の方法で実行し（ステップ２２１〜２３２）、１回目の初期駆動による学習結果が誤学習と判定された場合は、励磁回数カウンタＣＡＳＥが６から１０にカウントアップされるまで、２回目の初期駆動をロータ３２の駆動方向を１回目の初期駆動の駆動方向とは反対にして実行する（ステップ２３３〜２４０）。これにより、ＮｏｔＰレンジで１回目の初期駆動を行う場合は、Ｖ相通電→ＵＶ相通電→Ｕ相通電→ＵＷ相通電→Ｗ相通電→ＶＷ相通電の順序で通電相を切り換えて、ロータ３２を逆回転方向（ＮｏｔＰレンジ→Ｐレンジの回転方向）に駆動し、１回目の初期駆動による学習結果が誤学習と判定された場合は、２回目の初期駆動を、Ｗ相通電→ＵＷ相通電→Ｕ相通電→ＵＶ相通電の順序で通電相を切り換えて実行し、ロータ３２を正回転方向（Ｐレンジ→ＮｏｔＰレンジの回転方向）に駆動する。いずれの場合も、１相通電の時間Ｔ１を２相通電の時間Ｔ２よりも短く設定する。
【００８１】
図１５の初期駆動ルーチンでは、通電相を次の通電相に切り換える毎に、ステップ１１６ａに進み、励磁回数カウンタＣＡＳＥが１回目又は２回目の初期駆動の終了を意味する「６」又は「１０」であるか否かを判定し、もし、励磁回数カウンタＣＡＳＥが「６」又は「１０」であれば、ステップ１１８に進み、エンコーダ４６のＡ相信号とＢ相信号が共にハイレベル“Ｈｉ”であるか否かで学習結果が正しいか否かを判定する。その結果、Ａ相信号とＢ相信号が共にハイレベル“Ｈｉ”であると判定されれば、学習結果が正しいと判断して、ステップ１１９に進み、初期駆動終了フラグＸｅｎｄを初期駆動の終了を意味する「ＯＮ」にセットする。
【００８２】
これに対し、上記ステップ１１８で「Ｎｏ」と判定された場合、つまり、Ａ相信号とＢ相信号のいずれか一方又は両方がローレベル“Ｌｏｗ”の場合には、誤学習と判断して、ステップ１１８ａに進み、励磁回数カウンタＣＡＳＥが「１０」であるか否かを判定し、励磁回数カウンタＣＡＳＥが「１０」であれば、２回目の初期駆動終了時と判断して、ステップ１２４に進み、励磁回数カウンタＣＡＳＥを「０」にリセットして、３回目の初期駆動をロータ３２の駆動方向を反対にして実行する。３回目の初期駆動は、１回目の初期駆動と同じである。尚、上記ステップ１１８ａで、励磁回数カウンタＣＡＳＥが「１０」でないと判定された場合（つまり励磁回数カウンタＣＡＳＥが「６」の場合）は、そのまま本ルーチンを終了する。この場合は、２回目の初期駆動をロータ３２の駆動方向を１回目の初期駆動の駆動方向とは反対にして実行する。
【００８３】
一方、上記ステップ１１６ａで、励磁回数カウンタＣＡＳＥが「６」又は「１０」でないと判定された場合、つまり、１回目又は２回目の初期駆動の途中である場合は、ステップ１１７ａに進み、初期駆動の途中終了条件が成立しているか否かを判定する。この初期駆動の途中終了条件は、次の３つの条件(1) 〜(3) によって判定される。
【００８４】
(1) レンジ判定フラグＸｎｐが０（Ｐレンジ）であること
(2) 励磁回数カウンタＣＡＳＥが２又は４又は８、つまり２相通電終了時であること
(3) レンジ切換操作フラグＸｃｈｇがＯＮ、つまり初期駆動中にレンジ切換操作が行われたこと
これら３つの条件(1) 〜(3) のうち、１つでも満たさない条件があれば、初期駆動の途中終了条件が成立せず、初期駆動を継続する。
【００８５】
これに対し、上述した３つの条件(1) 〜(3) を全て満たしていれば、初期駆動の途中終了条件が成立して、ステップ１１８に進み、エンコーダ４６のＡ相信号とＢ相信号が共にハイレベル“Ｈｉ”であるか否かで学習結果が正しいか否かを判定する。その結果、Ａ相信号とＢ相信号が共にハイレベル“Ｈｉ”であると判定されれば、学習結果が正しいと判断して、ステップ１１９に進み、初期駆動終了フラグＸｅｎｄを初期駆動の終了を意味する「ＯＮ」にセットする。
【００８６】
一方、ステップ１１８で「Ｎｏ」と判定された場合、つまり、Ａ相信号とＢ相信号のいずれか一方又は両方がローレベル“Ｌｏｗ”の場合には、誤学習と判断して、ステップ１１８ａに進み、励磁回数カウンタＣＡＳＥが「１０」であるか否かを判定し、励磁回数カウンタＣＡＳＥが「１０」であれば、２回目の初期駆動終了時と判断して、ステップ１２４に進み、励磁回数カウンタＣＡＳＥを「０」にリセットして、３回目の初期駆動をロータ３２の駆動方向を反対にして実行する。尚、上記ステップ１１８ａで、励磁回数カウンタＣＡＳＥが「１０」でないと判定された場合（つまり励磁回数カウンタＣＡＳＥが「６」の場合）は、そのまま本ルーチンを終了する。この場合は、２回目の初期駆動をロータ３２の駆動方向を１回目の初期駆動の駆動方向とは反対にして実行する。
【００８７】
以上説明した本実施例２では、１回目の初期駆動による学習結果が間違っている（誤学習）と判定した後に２回目の初期駆動を再実行する場合に、ロータ３２の駆動方向を１回目の初期駆動の駆動方向とは反対にして２回目の初期駆動を実行するようにしたので、例えば、１回目の初期駆動の途中でガタの片方の限界位置（側壁）に突き当たってロータ３２に負荷が加わったことが原因で誤学習した場合には、２回目の初期駆動でロータ３２への負荷を解除してロータ３２をガタの範囲内で回転させてエンコーダカウント値とロータ３２の回転位置と通電相との対応関係を正しく学習することができる。
【００８８】
本発明は、Ｚ相信号を出力しないエンコーダ（Ａ相信号とＢ相信号のみを出力するエンコーダ）を用いても良く、また、エンコーダ４６は、磁気式のエンコーダに限定されず、例えば、光学式のエンコーダやブラシ式のエンコーダを用いても良い。
【００８９】
また、上記各実施例１，２では、ＳＲモータ１２を用いたが、エンコーダの出力信号のカウント値に基づいてロータの回転位置を検出してモータの通電相を順次切り換えるブラシレス型の同期モータであれば、ＳＲモータに限定されず、他の種類のブラシレス型の同期モータであっても良い。
【００９０】
また、上記各実施例１，２のレンジ切換装置は、ＰレンジとＮｏｔＰレンジの２つのレンジを切り換える構成であるが、例えば、ディテントレバー１５の回動動作に連動して自動変速機のレンジ切換弁とマニュアルバルブを切り換えて、自動変速機のＰ、Ｒ、Ｎ、Ｄ、…の各レンジを切り換えるレンジ切換装置にも本発明を適用して実施できる。
【００９１】
その他、本発明は、レンジ切換装置に限定されず、ＳＲモータ等のブラシレス型の同期モータを駆動源とする各種の位置切換装置に適用して実施できることは言うまでもない。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施例１を示すレンジ切換装置の斜視図である。
【図２】ＳＲモータの構成を説明する図である。
【図３】ＳＲモータを駆動する回路構成を示す回路図である。
【図４】レンジ切換装置の制御システム全体の構成を概略的に示す図である。
【図５】エンコーダのロータリマグネットの構成を説明する平面図である。
【図６】エンコーダの側面図である。
【図７】（ａ）はエンコーダの出力波形を示すタイムチャート、（ｂ）は通電相切り換えパターンを示すタイムチャートである。
【図８】実施例１の初期駆動ルーチンの処理の流れを示すフローチャートである（その１）。
【図９】実施例１の初期駆動ルーチンの処理の流れを示すフローチャートである（その２）。
【図１０】実施例１のＰレンジ初期駆動ルーチンの処理の流れを示すフローチャートである。
【図１１】実施例１のＮｏｔＰレンジ初期駆動ルーチンの処理の流れを示すフローチャートである。
【図１２】実施例１のＰレンジで初期駆動を行ったときの制御例を示すタイムチャートである。
【図１３】実施例１の初期駆動による学習結果の正誤の判定方法を説明する図である。
【図１４】実施例２の初期駆動による学習方法を説明するタイムチャートである。
【図１５】実施例２の初期駆動ルーチンの処理の流れを示すフローチャートである。
【図１６】実施例２のＰレンジ初期駆動ルーチンの処理の流れを示すフローチャートである。
【図１７】実施例２のＮｏｔＰレンジ初期駆動ルーチンの処理の流れを示すフローチャートである。
【符号の説明】
【００９３】
１１…レンジ切換機構、１２…ＳＲモータ、１４…出力軸センサ、１５…ディテントレバー、１８…パーキングロッド、２０…パーキングギヤ、２１…ロックレバー、２３…ディテントバネ、２４…Ｐレンジ保持凹部、２５…ＮｏｔＰレンジ保持凹部、２６…減速機構、２７…自動変速機、３１…ステータ、３２…ロータ、３３，３４…巻線、３５，３６…モータ励磁部、３７，３８…モータドライバ、４１…ＥＣＵ（制御手段，学習手段）、４３…Ｐレンジスイッチ、４４…ＮｏｔＰレンジスイッチ、４６…エンコーダ、４７…ロータリマグネット、４８…Ａ相信号用の磁気検出素子、４９…Ｂ相信号用の磁気検出素子、５０…Ｚ相信号用の磁気検出素子
【図１】
0004936069.tif 000002
【図２】
0004936069.tif 000003
【図３】
0004936069.tif 000004
【図４】
0004936069.tif 000005
【図５】
0004936069.tif 000006
【図６】
0004936069.tif 000007
【図７】
0004936069.tif 000008
【図８】
0004936069.tif 000009
【図９】
0004936069.tif 000010
【図１０】
0004936069.tif 000011
【図１１】
0004936069.tif 000012
【図１２】
0004936069.tif 000013
【図１３】
0004936069.tif 000014
【図１４】
0004936069.tif 000015
【図１５】
0004936069.tif 000016
【図１６】
0004936069.tif 000017
【図１７】
0004936069.tif 000018