《実施形態(1)》
以下、本発明を車両のレンジ切換制御装置に適用した実施形態(1)を図1乃至図20に基づいて説明する。
まず、図1に基づいてレンジ切換機構11(位置切換機構)の構成を説明する。レンジ切換機構11の駆動源となるモータ12は、例えばスイッチトリラクタンスモータにより構成され、減速機構26(図4参照)が内蔵されている。このモータ12の出力軸13には、ディテントレバー15が固定されている。
また、ディテントレバー15にはL字形のパーキングロッド18が固定され、このパーキングロッド18の先端部に設けられた円錐体19がロックレバー21に当接している。このロックレバー21は、円錐体19の位置に応じて軸22を中心にして上下動してパーキングギヤ20をロック/ロック解除するようになっている。パーキングギヤ20は、自動変速機27の出力軸に設けられ、このパーキングギヤ20がロックレバー21によってロックされると、車両の駆動輪が回り止めされた状態(パーキング状態)に保持される。
一方、ディテントレバー15をパーキングレンジ(以下「Pレンジ」と表記する)と他のレンジ(以下「NotPレンジ」と表記する)に保持するためのディテントバネ23が支持ベース17に固定され、このディテントバネ23の先端に設けられた係合部23aがディテントレバー15のPレンジ保持凹部24に嵌まり込んだときに、ディテントレバー15がPレンジの位置に保持され、該ディテントバネ23の係合部23aがディテントレバー15のNotPレンジ保持凹部25に嵌まり込んだときに、ディテントレバー15がNotPレンジの位置に保持されるようになっている。
Pレンジでは、パーキングロッド18がロックレバー21に接近する方向に移動して、円錐体19の太い部分がロックレバー21を押し上げてロックレバー21の凸部21aがパーキングギヤ20に嵌まり込んでパーキングギヤ20をロックした状態となり、それによって、自動変速機27の出力軸(駆動輪)がロックされた状態(パーキング状態)に保持される。
一方、NotPレンジでは、パーキングロッド18がロックレバー21から離れる方向に移動して、円錐体19の太い部分がロックレバー21から抜け出てロックレバー21が下降し、それによって、ロックレバー21の凸部21aがパーキングギヤ20から外れてパーキングギヤ20のロックが解除され、自動変速機27の出力軸が回転可能な状態(走行可能な状態)に保持される。
次に、図2に基づいてモータ12の構成を説明する。本実施形態では、モータ12として、スイッチトリラクタンスモータ(以下「SRモータ」と表記する)が用いられている。このSRモータ12は、ステータ31とロータ32が共に突極構造を持つモータで、永久磁石が不要で構造が簡単であるという利点がある。円筒状のステータ31の内周部には、例えば12個の突極31aが等間隔に形成され、これに対して、ロータ32の外周部には、例えば8個の突極32aが等間隔に形成され、ロータ32の回転に伴い、ロータ32の各突極32aがステータ31の各突極31aと微小ギャップを介して順番に対向するようになっている。ステータ31の12個の突極31aには、U相、V相、W相の合計6個の巻線33と、U’相、V’相、W’相の合計6個の巻線34が順番に巻回されている。尚、ステータ31とロータ32の突極31a,32aの数は適宜変更しても良いことは言うまでもない。
本実施形態の巻線33,34の巻回順序は、ステータ31の12個の突極31aに対して、例えば、V相→W相→U相→V相→W相→U相→V’相→W’相→U’相→V’相→W’相→U’相の順序で巻回されている。図3に示すように、U相、V相、W相の合計6個の巻線33と、U’相、V’相、W’相の合計6個の巻線34は、2系統のモータ励磁部35,36を構成するように結線されている。一方のモータ励磁部35は、U相、V相、W相の合計6個の巻線33をY結線して構成され(同じ相の2個の巻線33はそれぞれ直列に接続されている)、他方のモータ励磁部36は、U’相、V’相、W’相の合計6個の巻線34をY結線して構成されている(同じ相の2個の巻線34はそれぞれ直列に接続されている)。2つのモータ励磁部35,36は、U相とU’相が同時に通電され、V相とV’相が同時に通電され、W相とW’相が同時に通電される。
これら2つのモータ励磁部35は、車両に搭載されたバッテリ40を電源として、それぞれ別個のモータドライバ37,38によって駆動される。このように、モータ励磁部35,36とモータドライバ37,38をそれぞれ2系統ずつ設けることで、一方の系統が故障しても、他方の系統でSRモータ12を回転させることができるようになっている。図3に示すモータドライバ37,38の回路構成例では、各相毎にトランジスタ等のスイッチング素子39を1個ずつ設けたユニポーラ駆動方式の回路構成としているが、各相毎にスイッチング素子を2個ずつ設けたバイポーラ駆動方式の回路構成を採用しても良い。尚、本発明は、モータ励磁部とモータドライバをそれぞれ1系統ずつ設けた構成としても良いことは言うまでもない。
各モータドライバ37,38の各スイッチング素子39のオン/オフは、ECU41によって制御される。図4に示すように、このECU41と各モータドライバ37,38は、レンジ切換制御装置42に搭載され、このレンジ切換制御装置42には、Pレンジへの切換操作を行うPレンジスイッチ43と、NotPレンジへの切換操作を行うNotPレンジスイッチ44の操作信号が入力される。Pレンジスイッチ43又はNotPレンジスイッチ44の操作により選択されたレンジは、インストルメントパネル(図示せず)に設けられたレンジ表示部45に表示される。
SRモータ12には、ロータ32の回転角を検出するためのエンコーダ46(回転角検出手段)が設けられている。このエンコーダ46は、例えば磁気式のロータリエンコーダにより構成されており、その具体的な構成は、図5及び図6に示すように、N極とS極が円周方向に交互に等ピッチで着磁された円環状のロータリマグネット47がロータ32の側面に同軸状に固定され、このロータリマグネット47に対向する位置に、3個のホールIC等の磁気検出素子48,49,50が配置された構成となっている。本実施形態では、ロータリマグネット47のN極とS極の着磁ピッチが7.5°に設定されている。このロータリマグネット47の着磁ピッチ(7.5°)は、SRモータ12の励磁1回当たりのロータ32の回転角度と同じに設定されている。これにより、1−2相励磁方式でSRモータ12の通電相の切り換えを6回行うと、全ての通電相の切り換えが一巡してロータ32とロータリマグネット47が一体的に7.5°×6=45°回転する。このロータリマグネット47の45°の回転角度範囲に存在するN極とS極の数は、合計6極となっている。
更に、ロータ32の基準回転位置に相当する位置のN極(N’)とその両側のS極(S’)がそれ以外の磁極よりも径方向の幅が広くなるように形成されている。尚、本実施形態では、SRモータ12の通電相の切り換えが一巡する間にロータ32とロータリマグネット47が一体的に45°回転することを考慮して、ロータ32の基準回転位置に相当する幅広な着磁部分(N’)が45°ピッチで形成されており、従って、ロータリマグネット47全体として、基準回転位置に相当する幅広な着磁部分(N’)が合計8個形成されている。尚、基準回転位置に相当する幅広な着磁部分(N’)は、ロータリマグネット47全体として、1個のみ形成した構成としても良い。
このロータリマグネット47に対して3個の磁気検出素子48,49,50が次のような位置関係で配置されている。A相信号を出力する磁気検出素子48とB相信号を出力する磁気検出素子49は、ロータリマグネット47の幅狭な着磁部分(N,S)と幅広な着磁部分(N’,S’)の両方に対向し得る位置の同一円周上に配置されている。一方、Z相信号を出力する磁気検出素子50は、ロータリマグネット47の幅狭な着磁部分(N,S)よりも径方向外側又は内側の位置で、且つ、幅広な着磁部分(N’,S’)のみに対向し得る位置に配置されている。A相信号とB相信号を出力する2個の磁気検出素子48,49の間隔は、図7に示すように、A相信号とB相信号の位相差が、電気角で90°(機械角で3.75°)となるように設定されている。ここで、“電気角”はA・B相信号の発生周期を1周期(360°)とした場合の角度で、“機械角”は機械的な角度(ロータ32の1回転を360°とした場合の角度)であり、A相信号の立ち下がり(立ち上がり)からB相信号の立ち下がり(立ち上がり)までにロータ32が回転する角度がA相信号とB相信号の位相差の機械角に相当する。また、Z相信号を出力する磁気検出素子50は、Z相信号とB相信号(又はA相信号)との位相差が0となるように配置されている。
各磁気検出素子48,49,50の出力は、N極(N’極)と対向したときにハイレベル“1”となり、S極(S’極)と対向したときにローレベル“0”となる。尚、Z相信号用の磁気検出素子50の出力は、ロータ32の基準回転位置に相当する幅広なN’極に対向する毎にハイレベル“1”となり、それ以外の位置では、ローレベル“0”となる。
本実施形態では、ECU41が後述するエンコーダカウンタルーチンによってA相信号とB相信号の立ち上がり/立ち下がりの両方のエッジをカウントして、そのエンコーダカウント値に応じてSRモータ12の通電相を切り換えることでロータ32を回転駆動する。この際、A相信号とB相信号の発生順序によってロータ32の回転方向を判定し、正回転(Pレンジ→NotPレンジの回転方向)ではエンコーダカウント値をカウントアップし、逆回転(NotPレンジ→Pレンジの回転方向)ではエンコーダカウント値をカウントダウンする。これにより、ロータ32が正回転/逆回転のいずれの方向に回転しても、エンコーダカウント値とロータ32の回転位置との対応関係が維持されるため、正回転/逆回転のいずれの回転方向でも、エンコーダカウント値によってロータ32の回転位置(回転角度)を検出して、その回転位置に対応した相の巻線33,34に通電してロータ32を回転駆動する。
図7は、ロータ32を逆回転方向(NotPレンジ→Pレンジの回転方向)に回転させたときのエンコーダ46の出力波形と通電相の切換パターンを示している。逆回転方向(NotPレンジ→Pレンジの回転方向)と正回転方向(Pレンジ→NotPレンジの回転方向)のいずれの場合も、ロータ32が7.5°回転する毎に1相通電と2相通電とを交互に切り換えるようになっており、ロータ32が45°回転する間に、例えば、U相通電→UW相通電→W相通電→VW相通電→V相通電→UV相通電の順序で通電相の切り換えを一巡するようになっている。そして、この通電相の切り換え毎に、ロータ32が7.5°ずつ回転して、A相、B相信号用の磁気検出素子48,49に対向するロータリマグネット47の磁極がN極→S極(N’極→S’極)又はS極→N極(S’極→N’極)に変化してA相信号とB相信号のレベルが交互に反転し、それによって、ロータ32が7.5°回転する毎に、エンコーダカウント値が2ずつカウントアップ(又はカウントダウン)する。また、通電相の切り換えが一巡してロータ32が45°回転する毎に、Z相用の磁気検出素子50がロータ32の基準回転位置に相当する幅広なN’極に対向して、Z相信号がハイレベル“1”となる。尚、本明細書では、A相、B相、Z相信号がハイレベル“1”となることを、A相、B相、Z相信号が出力されると言う場合がある。
ところで、ロータ32の回転量(ロータ回転角)は、減速機構26、出力軸13、ディテントレバー15等からなる回転伝達系を介してレンジ切換機構11の操作量(パーキングロッド18のスライド量)に変換されるが、回転伝達系を構成する部品間には、遊び(ガタ)が存在する。例えば、減速機構26の歯車間のバックラッシが存在し、また、モータ12の回転軸の先端部に形成した断面非円形の連結部を出力軸13の嵌合穴に嵌め込んで連結する構成では、両者の嵌め込み作業を容易にするためのクリアランスが必要となる。
また、図14に示すように、ディテントバネ23の係合部23aがディテントレバー15のPレンジ保持凹部24やNotPレンジ保持凹部25に嵌まり込んだときに、係合部23aと各保持凹部24,25の側壁との間に僅かな隙間(ガタ)が存在する。このように、ロータ32の回転量をレンジ切換機構11の操作量(パーキングロッド18のスライド量)に変換する回転伝達系には、バックラッシや部品間の隙間等による遊び(ガタ)が存在するため、たとえ、エンコーダカウント値に基づいてロータ32の回転量を正確に制御しても、レンジ切換機構11の操作量には回転伝達系の遊び(ガタ)分の誤差が生じてしまい、レンジ切換機構11の操作量を精度良く制御することができない。
そこで、本実施形態(1)では、この回転伝達系の遊び量を学習する機能を備えている。具体的には、回転伝達系の遊び量を学習する際に、ディテントバネ23の係合部23aがレンジ切換機構11の可動範囲のPレンジ側の限界位置であるPレンジ保持凹部24の側壁に突き当たるまでロータ32を回転させるPレンジ側突き当て制御と、NotPレンジ側の限界位置であるNotPレンジ保持凹部25の側壁に突き当たるまでロータ32を回転させるNotPレンジ側突き当て制御とを実行して、Pレンジ側の限界位置からNotPレンジ側の限界位置までのエンコーダカウント値の増減量をレンジ切換機構11の可動範囲の実測値として求める(図14、図15参照)。そして、この可動範囲の実測値と該可動範囲の設計値との差分を回転伝達系の遊び量として学習し、その後、ロータ32を目標位置まで回転させる際に、当該目標位置を回転伝達系の遊び量の学習値を考慮して設定する。このようにすれば、回転伝達系に遊び(ガタ)があっても、その遊びを含めた目標位置を設定することができるので、レンジ切換機構11の操作量を精度良く制御することができる。
この場合、SRモータ12を制御するECU41の電源投入(イグニッションスイッチのオン操作)からレンジ切換機構11の制御開始までに回転伝達系の遊び量(作動基準位置)を学習する時間的な余裕があれば、ECU41の電源投入後に、Pレンジ側突き当て制御とNotPレンジ側突き当て制御とを連続して実行して、レンジ切換機構11の制御開始前に回転伝達系の遊び量を学習するようにしても良いが、ECU41の電源投入後にレンジ切換機構11の制御を速やかに開始する必要がある場合は、ECU41の電源投入後に回転伝達系の遊び量を学習する時間的な余裕がない場合がある。
そこで、本実施形態(1)では、遊び量学習(作動基準位置学習)を行わずにレンジ切換機構11の制御を開始した後、ロータ32がPレンジで停止しているときに、Pレンジ側突き当て制御を実行して、Pレンジ側突き当て時のエンコーダカウント値をECU41のRAMに記憶し、ロータ32がNotPレンジで停止しているときに、NotPレンジ側突き当て制御を実行して、NotPレンジ側突き当て時のエンコーダカウント値をECU41のRAMに記憶し、前記Pレンジ側突き当て時のエンコーダカウント値と前記NotPレンジ側突き当て時のエンコーダカウント値との差分をレンジ切換機構11の可動範囲の実測値として求め、この可動範囲の実測値と該可動範囲の設計値との差分を回転伝達系の遊び量として学習して作動基準位置を学習するようにしている。
このようにすれば、ECU41の電源投入からレンジ切換機構11の制御開始までに回転伝達系の遊び量を学習する時間的な余裕がなく、遊び量学習を行わずにレンジ切換機構11の制御を開始しても、その後、ロータ32がPレンジ又はNotPレンジで停止している期間に各突き当て制御を実行して回転伝達系の遊び量を学習することができる。この場合、遊び量学習が完了する前は、回転伝達系の遊び量を考慮しない従来同様の制御を行うようにしても良いが、予め設定した平均的な遊び量又は前回の遊び量学習値の記憶値を用いて制御対象を制御するようにしても良い。尚、以下の説明で、単に「突き当て制御」と表記する場合は、Pレンジ側突き当て制御とNotPレンジ側突き当て制御の両方に該当することを意味する。
ところで、レンジ切換動作終了後は、次のレンジ切換操作が行われるまで、モータ12の過熱防止や節電のために、モータ12の通電がオフされるため、この通電オフ期間中にモータ12のロータ回転角が回転伝達系の遊び(ガタ)の範囲内でずれてしまうことがあり、しかも、このずれ量がどの程度になるのか不明である。このため、通電オフ期間中に実シフトレンジを確認するときに、エンコーダカウント値と回転伝達系の遊び量の学習値を用いてシフトレンジ(ロータ回転角)を判定しても、通電オフ期間中のずれによってシフトレンジを誤判定する可能性がある。
この対策として、本実施形態(1)では、モータ12の通電オフ時に、Pレンジ/NotPレンジの切換判定範囲をモータ12の通電オン時よりも広げるようにしている。ここで、切換判定範囲とは、ロータ回転角がこの切換判定範囲内に収まっていれば、ディテントバネ23のバネ力により該ディテントバネ23の係合部23aがディテントレバー15のレンジ保持凹部24,25の底部に自然に滑り落ちてシフトレンジがPレンジ又はNotPレンジに保持される範囲である。
モータ12の通電オン時は、回転伝達系の遊び(ガタ)によるロータ回転角のずれ量をモータ12の駆動力で一定に保持した状態でレンジ切換機構11を駆動できるため、このずれ量を学習等によって既知の値にしておけば、回転伝達系の遊び(ガタ)の影響を受けないレンジ切換制御が可能である。従って、モータ12の通電オン時は、切換判定範囲を比較的狭くしてシフトレンジの判定精度を高めることが可能である。しかし、モータ12の通電オフ時は、ロータ回転角が回転伝達系の遊び(ガタ)の範囲内でどの程度ずれるのか不明であるため、切換判定範囲が狭いと、却ってシフトレンジを誤判定しやすくなる。この対策として、本実施形態では、図20に示すように、モータ12の通電オフ時に切換判定範囲をモータ12の通電オン時よりも広げるようにしたものであり、これにより、モータ12の通電オフ時でも、シフトレンジを従来よりも精度良く判定することが可能となる。
以上説明したレンジ切換制御は、レンジ切換制御装置42のECU41によって後述する各ルーチンに従って実行される。以下、これら各ルーチンの処理内容を説明する。
[エンコーダカウンタ]
図8に示すエンコーダカウンタルーチンの処理内容を説明する。本ルーチンは、AB相割り込み処理によりA相信号とB相信号の立ち上がり/立ち下がりの両方のエッジに同期して起動され、A相信号とB相信号の立ち上がり/立ち下がりの両方のエッジを次のようにしてカウントする。本ルーチンが起動されると、まずステップ101で、A相信号とB相信号の値A(i) 、B(i) を読み込み、次のステップ102で、図9のカウントアップ値ΔN算出マップを検索して、A相信号とB相信号の今回値A(i) 、B(i) と、前回値A(i-1) 、B(i-1) に応じたカウントアップ値ΔNを算出する。
ここで、A相信号とB相信号の今回値A(i) 、B(i) と、前回値A(i-1) 、B(i-1) を用いる理由は、A相信号とB相信号の発生順序によってロータ32の回転方向を判定するためであり、図10に示すように、正回転(Pレンジ→NotPレンジの回転方向)ではカウントアップ値ΔNをプラス値にしてエンコーダカウント値Ncntをカウントアップし、逆回転(NotPレンジ→Pレンジの回転方向)ではカウントアップ値ΔNをマイナス値にしてエンコーダカウント値Ncntをカウントダウンする。
カウントアップ値ΔNの算出後、ステップ103に進み、前回のエンコーダカウント値Ncntに上記ステップ102で算出したカウントアップ値ΔNを加算して、今回のエンコーダカウント値Ncntを求める。この後、ステップ104に進み、次回のカウント処理のために、A相信号とB相信号の今回値A(i) 、B(i) をそれぞれA(i-1) 、B(i-1) として記憶して本ルーチンを終了する。
以上説明した図8のエンコーダカウンタルーチンは、特許請求の範囲でいう回転角検出手段としての役割を果たす。
[通電相設定]
図11に示す通電相設定ルーチンは、AB相割り込み処理により実行され、次のようにしてエンコーダカウント値Ncntに基づいて通電相を設定してモータ12を駆動する。本ルーチンが起動されると、まずステップ201で、回転方向指示が正回転方向(Pレンジ→NotPレンジの回転方向)であるか否かを判定する。その結果、回転方向指示が正回転方向と判定されれば、ステップ202に進み、現在の回転方向が回転方向指示に反して逆転したか否か(エンコーダカウント値Ncntが減少したか否か)を判定し、逆転していなければ、ステップ203に進み、現在のエンコーダカウント値Ncnt、初期位置ずれ学習値Gcnt、正回転方向位相進み量K1、速度補正量Ksを用いて通電相判定値Mptnを次式により更新する。
Mptn=Ncnt−Gcnt+K1+Ks ……(1)
ここで、初期位置ずれ学習値Gcntは、エンコーダカウント値Ncntと実際のロータ32の回転位置(ロータ回転角)とのずれ量に相当する学習値であり、ECU41への電源投入後に実行される初期駆動によって学習される。初期駆動時には、モータ12の通電相の切り換えを、オープンループ制御によって、例えば、W相通電→UW相通電→U相通電→UV相通電→V相通電→VW相通電の順序で一巡させてエンコーダ46のA相信号及びB相信号のエッジをカウントし、初期駆動終了時のエンコーダカウント値Ncntとロータ32の回転位置(通電相)との対応関係を学習する。具体的には、初期駆動終了時のエンコーダカウント値Ncntを初期位置ずれ学習値Gcntとして学習し、その後の通常駆動時にエンコーダカウント値Ncntを初期位置ずれ学習値Gcntで補正することで、初期駆動終了時のエンコーダカウント値Ncntと通電相(ロータ32の回転位置)とのずれを補正して、通常駆動時に正しい通電相を選択できるようにしている。
上記(1)式において、正回転方向位相進み量K1は、ロータ32を正回転させるのに必要な通電相の位相進み量(ロータ32の現在位置に対する通電相の位相進み量)であり、例えばK1=4に設定されている。また、速度補正量Ksは、ロータ32の回転速度に応じて設定される位相進み補正量である。低速域では、速度補正量Ksが0に設定され、高速になるに従って、速度補正量Ksが例えば1又は2に増加される。これにより、ロータ32の回転速度に適した通電相となるように通電相判定値Mptnが補正される。
一方、上記ステップ202で、回転方向が回転方向指示に反して逆転したと判定された場合は、逆転防止のために通電相判定値Mptnを更新しない。この場合は、逆転直前の通電相(前回の通電相)に通電され、ロータ32の逆転を抑制する方向に制動トルクが発生する。
また、上記ステップ201で、回転方向指示が逆回転方向、つまりNotPレンジ→Pレンジの回転方向と判定された場合は、ステップ204に進み、現在の回転方向が回転方向指示に反して逆転したか否か(エンコーダカウント値Ncntが増加したか否か)を判定し、逆転していなければ、ステップ205に進み、現在のエンコーダカウント値Ncnt、初期位置ずれ学習値Gcnt、逆回転方向位相進み量K2、速度補正量Ksを用いて通電相判定値Mptnを次式により更新する。
Mptn=Ncnt−Gcnt−K2−Ks ……(2)
ここで、逆回転方向位相進み量K2は、ロータ32を逆回転させるのに必要な通電相の位相進み量(ロータ32の現在位置に対する通電相の位相進み量)であり、例えばK2=3に設定されている。速度補正量Ksは正回転の場合と同じである。
一方、上記ステップ204で、現在の回転方向が回転方向指示に反して逆転したと判定された場合は、逆転防止のために通電相判定値Mptnを更新しない。この場合は、逆転直前の通電相(前回の通電相)に通電され、ロータ32の逆転を抑制する方向に制動トルクが発生する。
以上のようにして、今回の通電相判定値Mptnを決定した後、ステップ206に進み、通電相判定値Mptnを“12”で割り算して、その余りMptn%12を求める。ここで、“12”は、通電相を一巡させる間のエンコーダカウント値Ncntの増減量に相当する。
Mptn%12の算出後、ステップ207に進み、図12の変換テーブルを検索して、Mptn%12に対応する通電相を選択し、これを今回の通電相に設定する。
図13はU相から回転を開始する場合に最初に通電する相を説明するタイムチャートである。この場合、速度補正量Ks=0となるため、正回転(Pレンジ→NotPレンジ方向への回転)を開始する場合は、通電相判定値Mptnは次式により算出される。
Mptn=Ncnt−Gcnt+K1=Ncnt−Gcnt+4
U相から正回転を開始する場合は、(Ncnt−Gcnt)/12の余りは、6となるため、Mptn%12=6+4=10となり、最初の通電相はV相となる。
一方、U相から逆回転(NotPレンジ→Pレンジ方向への回転)を開始する場合は、通電相判定値Mptnは次式により算出される。
Mptn=Ncnt−Gcnt−K2=Ncnt−Gcnt−3
U相から逆回転を開始する場合は、Mptn%12=6−3=3となり、最初の通電相はW相となる。
このように、正回転方向位相進み量K1と逆回転方向位相進み量K2をそれぞれ4と3に設定することで、正回転方向と逆回転方向の通電相の切換パターンを対称にすることができ、正回転方向と逆回転方向のいずれの場合も、ロータ32の現在位置から2ステップ分ずらした位置の相を最初に励磁して回転を開始することができる。
[遊び量学習]
図16に示す遊び量学習ルーチンは、初期駆動終了後に所定周期(例えば8ms周期)で実行される。本ルーチンが起動されると、まずステップ300で、遊び量学習完了フラグXg=ON(遊び量学習完了後)であるか否かを判定し、もし、遊び量学習完了フラグXg=ONであれば、以降の処理を行うことなく、本ルーチンを終了する。これにより、遊び量学習は、イグニッションスイッチのオン期間中に1回のみ行われる。尚、遊び量学習完了フラグXgは、イグニッションスイッチのオン直後に実行される初期化処理ルーチン(図示せず)によってOFFにセットされる。
一方、上記ステップ300で、遊び量学習完了フラグXg=OFF(遊び量学習完了前)と判定されれば、ステップ301に進み、指令シフトレンジがPレンジであるか否かを判定し、Pレンジであれば、ステップ302に進み、Pレンジ側突き当て制御ルーチン(図示せず)を実行する。これにより、ディテントバネ23の係合部23aがレンジ切換機構11の可動範囲のPレンジ側の限界位置であるPレンジ保持凹部24の側壁に突き当たるまでロータ32を回転させるPレンジ側突き当て制御を実行して、Pレンジ側突き当て時のエンコーダカウント値NpをECU41のRAMに記憶する。このPレンジ側突き当て制御は、イグニッションスイッチのオン期間中に1回のみ行われる。このPレンジ側突き当て制御が行われると、Pレンジ側突き当て完了フラグXpがONにセットされる。
上記ステップ301で、NotPレンジと判定されれば、ステップ303に進み、NotPレンジ側突き当て制御ルーチン(図示せず)を実行する。これにより、ディテントバネ23の係合部23aがレンジ切換機構11の可動範囲のNotPレンジ側の限界位置であるNotPレンジ保持凹部25の側壁に突き当たるまでロータ32を回転させるNotPレンジ側突き当て制御を実行して、NotPレンジ側突き当て時のエンコーダカウント値NnpをECU41のRAMに記憶する。このNotPレンジ側突き当て制御は、イグニッションスイッチのオン期間中に1回のみ行われる。このNotPレンジ側突き当て制御が行われると、NotPレンジ側突き当て完了フラグXnpがONにセットされる。
この後、ステップ304に進み、Pレンジ側とPレンジ側の両方の突き当て制御を完了したか否か(Pレンジ側突き当て完了フラグXp=ON、且つ、NotPレンジ側突き当て完了フラグXnp=ONであるか否か)を判定し、Pレンジ側とPレンジ側のいずれか一方でも突き当て制御が完了していなければ、以降の処理を行うことなく、本ルーチンを終了する。
これに対して、レンジ側とPレンジ側の両方の突き当て制御を完了していれば、ステップ305に進み、Pレンジ側の限界位置(Pレンジ保持凹部24の側壁)からNotPレンジ側の限界位置(NotPレンジ保持凹部25の側壁)までのロータ32の可動範囲(ディテントレバー15の可動範囲)の実測値ΔNactを次式により算出する。
ΔNact=Nnp−Np
ここで、Nnpは、NotPレンジ側突き当て時のエンコーダカウント値で、Npは、Pレンジ側突き当て時のエンコーダカウント値である。
可動範囲の実測値ΔNactの算出後、ステップ306に進み、図15に示す関係を考慮して、Pレンジ側の遊び量ΔGpとNotPレンジ側の遊び量ΔGnpを可動範囲の実測値ΔNactと設計値ΔNdを用いて次式により算出する。
ΔGp=ΔGnp=(ΔNact−ΔNd)/2
ここで、可動範囲の設計値ΔNdは、予め設計データに基づいて算出しても良いし、量産品の可動範囲の製造ばらつきの中心値(標準品の可動範囲の実測値)を用いても良い。
図15に示すように、可動範囲の実測値ΔNactと設計値ΔNdとの差分(ΔNact−ΔNd)は、Pレンジ側とNotPレンジ側の合計遊び量(ΔGp+ΔGnp)に相当する。一般に、Pレンジ側の遊び量ΔGpとNotPレンジ側の遊び量ΔGnpは等しいため、上式により、Pレンジ側とNotPレンジ側の各遊び量ΔGp,ΔGnpを算出することができる。
各遊び量ΔGp,ΔGnpの算出後、ステップ307に進み、遊び量学習完了フラグXgを、遊び量学習完了を意味する「ON」にセットして、本ルーチンを終了する。
尚、上記ステップ305、306で算出された可動範囲の実測値ΔNactと遊び量ΔGp,ΔGnpは、ECU41のSRAM等の不揮発メモリ(図示せず)に更新記憶され、イグニッションスイッチのオフ後も、その記憶値が保持される。次回のイグニッションスイッチのオン後は、後述する図17及び図18の目標カウント値設定ルーチンで目標カウント値Acntを設定する際に、ECU41の不揮発メモリに記憶されている可動範囲の実測値ΔNactと遊び量ΔGp,ΔGnpを用いて目標カウント値Acntを設定する。
[目標カウント値設定]
図17及び図18に示す目標カウント値設定ルーチンは、初期駆動終了後に所定周期(例えば8ms周期)で実行され、次のようにして指令シフトレンジに対応する目標カウント値Acntを設定する。本ルーチンが起動されると、まずステップ401で、突き当て制御実行中であるか否かを判定し、突き当て制御実行中であれば、ステップ402に進み、目標カウント値Acntを突き当て目標カウント値Agに設定する。
一方、突き当て制御実行中でなければ、ステップ403に進み、指令シフトレンジがPレンジであるか否かを判定し、Pレンジであれば、ステップ404に進み、Pレンジ側突き当て制御を完了したか否かを判定し、Pレンジ側突き当て制御が完了していれば、ステップ405に進み、Pレンジの目標カウント値Acntを次式により算出する。
Acnt=Np+ΔGp
ここで、NpはPレンジ側突き当て時のエンコーダカウント値である。また、ΔGpはPレンジ側の遊び量の学習値であり、図16の遊び量学習ルーチンのステップ306で、今回の遊び量の学習値ΔGpが算出されてECU41の不揮発メモリの記憶値が更新されるまでは、該不揮発メモリに記憶されている前回値が用いられる。
一方、Pレンジ側突き当て制御が完了していない場合は、ステップ404で「No」と判定されて、ステップ406に進み、NotPレンジ側突き当て制御を完了したか否かを判定し、NotPレンジ側突き当て制御が完了していれば、ステップ407に進み、Pレンジの目標カウント値Acntを次式により算出する。
Acnt=Nnp−ΔNact+ΔGp
ここで、Nnpは、NotPレンジ側突き当て時のエンコーダカウント値である。また、ΔNactは可動範囲の実測値であり、図16の遊び量学習ルーチンのステップ305で、今回の可動範囲の実測値ΔNactが算出されてECU41の不揮発メモリの記憶値が更新されるまでは、該不揮発メモリに記憶されている前回値が用いられる。
尚、Pレンジ側とNotPレンジ側の突き当て制御が両方とも完了していない場合は、Pレンジ側突き当て時及びNotPレンジ側突き当て時のエンコーダカウント値Np,Nnpが学習されていないため、遊び量ΔGp,ΔGnpによる目標カウント値Acntの補正を行うことができない。従って、この場合は、ステップ408に進み、Pレンジの目標カウント値AcntをPレンジの暫定的な目標カウント値である0に設定する。
一方、上記ステップ403で、指令シフトレンジがNotPレンジと判定された場合は、図18のステップ409に進み、NotPレンジ側突き当て制御を完了したか否かを判定し、NotPレンジ側突き当て制御が完了していれば、ステップ410に進み、NotPレンジの目標カウント値Acntを次式により算出する。
Acnt=Nnp−ΔGnp
ここで、ΔGnpはNotPレンジ側の遊び量の学習値であり、図16の遊び量学習ルーチンのステップ306で、今回の遊び量の学習値ΔGnpが算出されてECU41の不揮発メモリの記憶値が更新されるまでは、該不揮発メモリに記憶されている前回値が用いられる。
一方、NotPレンジ側突き当て制御が完了していない場合には、ステップ409で「No」と判定されて、ステップ411に進み、Pレンジ側突き当て制御を完了したか否かを判定し、Pレンジ側突き当て制御が完了していれば、ステップ412に進み、NotPレンジの目標カウント値Acntを次式により算出する。
Acnt=Np+ΔNact−ΔGnp
また、Pレンジ側とNotPレンジ側の突き当て制御が両方とも完了していない場合は、ステップ413に進み、NotPレンジの目標カウント値AcntをNotPレンジの暫定的な目標カウント値Knotp(例えば18.5°相当値)に設定する。
尚、本ルーチンでは、目標カウント値Acntを設定する際に、遊び量の学習値ΔGp,ΔGnpと可動範囲の実測値ΔNactについては、ECU41の不揮発メモリの記憶値が更新されるまでは、該不揮発メモリに記憶されている前回値を用いるようにしたが、該不揮発メモリの記憶値が更新されるまで、暫定的な目標カウント値(0又はKnotp)に設定するようにしても良い。
[レンジ判定]
図19に示すレンジ判定ルーチンは、イグニッションスイッチのオン期間中に所定周期(例えば8ms周期)で実行される。本ルーチンが起動されると、まずステップ501で、モータ12の通電オン中であるか否かを判定し、通電オン中であれば、ステップ502に進み、現在のロータ回転角θmが通電オン時のPレンジの切換判定範囲内(Pレンジ側の限界位置θpから例えば5°以内の範囲)であるか否かを判定する。ここで、通電オン時のPレンジの切換判定範囲の幅(5°)は、通電オン時のPレンジ判定精度を保証できるように適合等により設定すれば良い。
尚、ロータ回転角θmの検出値は、Ncnt−Gcnt(Ncnt:エンコーダカウント値、Gcnt:初期位置ずれ学習値)を用いれば良く、Pレンジの切換判定範囲の幅(5°)もエンコーダカウント値に換算した値を用いれば良い。
上記ステップ502で、現在のロータ回転角θmが通電オン時のPレンジの切換判定範囲内であると判定されれば、ステップ503に進み、現在のシフトレンジがPレンジであると判定して本ルーチンを終了する。
一方、上記ステップ502で、現在のロータ回転角θmが通電オン時のPレンジの切換判定範囲から外れていると判定されれば、ステップ504に進み、現在のロータ回転角θmが通電オン時のNotPレンジの切換判定範囲内(NotPレンジ側の限界位置θnpから例えば7°以内の範囲)であるか否かを判定する。ここで、通電オン時のNotPレンジの切換判定範囲の幅(7°)は、通電オン時のNotPレンジ判定精度を保証できるように適合等により設定すれば良い。このステップ504で、現在のロータ回転角θmが通電オン時のNotPレンジの切換判定範囲内であると判定されれば、ステップ505に進み、現在のシフトレンジがNotPレンジであると判定して本ルーチンを終了する。
尚、上記ステップ502、504で、いずれも「No」と判定された場合は、PレンジとNotPレンジとの中間位置(シフトレンジが確定しない領域)と見なされ、本ルーチンを終了する。
これに対して、前記ステップ501で、モータ12の通電オフ中であると判定されれば、ステップ506に進み、現在のロータ回転角θmが通電オフ時のPレンジの切換判定範囲内(Pレンジ側の限界位置θpから例えば10°以内の範囲)であるか否かを判定する。この通電オフ時のPレンジの切換判定範囲の幅は、通電オン時よりも例えば回転伝達系の遊び量分だけ広げれば良い。切換判定範囲を広げる量は適合値を用いても良いし、図16の遊び量学習ルーチンで学習した値を用いても良い。尚、切換判定範囲を広げる量は、回転伝達系の遊び量分に限定されず、これよりも小さくても大きくても良く、要は、通電オフ時にシフトレンジの誤判定をできるだけ回避できるように設定すれば良い。
上記ステップ506で、現在のロータ回転角θmが通電オフ時のPレンジの切換判定範囲内であると判定されれば、ステップ507に進み、現在のシフトレンジがPレンジであると判定して本ルーチンを終了する。
一方、上記ステップ506で、現在のロータ回転角θmが通電オフ時のPレンジの切換判定範囲から外れていると判定されれば、ステップ508に進み、現在のロータ回転角θmが通電オフ時のNotPレンジの切換判定範囲内(NotPレンジ側の限界位置θnpから例えば12°以内の範囲)であるか否かを判定する。このステップ508で、現在のロータ回転角θmが通電オフ時のNotPレンジの切換判定範囲内であると判定されれば、ステップ509に進み、現在のシフトレンジがNotPレンジであると判定して本ルーチンを終了する。
尚、上記ステップ506、508で、いずれも「No」と判定された場合は、PレンジとNotPレンジとの中間位置(シフトレンジが確定しない領域)と見なされ、本ルーチンを終了する。
このようにして、本ルーチンで判定されたシフトレンジは、例えば、自動変速機27の制御や燃料噴射制御に用いられる。
以上説明した本実施形態(1)では、図20に示すように、モータ12の通電オフ時に、Pレンジ/NotPレンジの切換判定範囲をモータ12の通電オン時よりも広げるようにしている。つまり、モータ12の通電オン時は、回転伝達系の遊び(ガタ)によるロータ回転角のずれ量をモータ12の駆動力で一定に保持した状態でレンジ切換機構11を駆動できるため、このずれ量を学習等によって既知の値にしておけば、回転伝達系の遊び(ガタ)の影響を受けないレンジ切換制御が可能である。従って、モータ12の通電オン時は、切換判定範囲を比較的狭くしてシフトレンジの判定精度を高めることが可能である。しかし、モータ12の通電オフ時は、ロータ回転角が回転伝達系の遊び(ガタ)の範囲内でどの程度ずれるのか不明であるため、切換判定範囲が狭いと、却ってシフトレンジを誤判定しやすくなる。この対策として、本実施形態では、図20に示すように、モータ12の通電オフ時に切換判定範囲をモータ12の通電オン時よりも広げるようにしたものであり、これにより、モータ12の通電オフ時でも、シフトレンジを従来よりも精度良く判定することが可能となり、レンジ切換機構11の操作量を検出するセンサ類を設けなくても、シフトレンジの判定精度を確保できて、低コスト化の要求を満たすことができる。
尚、本実施形態(1)では、回転伝達系の遊び量を学習するようにしたが、これを適合値としても良い。
また、本実施形態(1)では、モータ12の励磁方式を1相通電と2相通電とを交互に切り換える1−2相励磁方式としたが、1相通電のみで駆動する1相励磁方式、又は、2相通電のみで駆動する2相励磁方式を採用しても良い。
《実施形態(2)》
次に、本発明の実施形態(2)で実行する図21乃至図23の各ルーチンの処理内容を説明する。
[モータ制御]
図22に示すモータ制御ルーチンは、イグニッションスイッチのオン期間中に所定周期で実行される。本ルーチンが起動されると、まずステップ601で、F/B制御実行条件が成立しているか否かを判定する。ここで、F/B制御実行条件は、例えば次の(1),(2) の条件を全て満たすことである。
(1) 初期駆動終了後であること(初期位置ずれ学習値Gcntの学習が完了していること)
(2) システムの故障やエンコーダ46の出力パルスの異常(ノイズ、パルス抜け、信号線の断線等)が検出されていないこと
これら2つの条件(1) 、(2) を全て満たせば、F/B制御実行条件が成立し、ステップ602に進み、F/B制御を実行する。このF/B制御では、前記実施形態(1)で説明した方法で、エンコーダカウント値に基づいてモータ12の通電相を順次切り換えてロータ32を回転駆動する。このステップ602の処理が特許請求の範囲でいう通常制御手段としての役割を果たす。
これに対して、上記2つの条件(1) 、(2) のうち、いずれか一方でも満たさない条件があれば、F/B制御実行条件が不成立となり、ステップ601からステップ603に進み、フェールセーフ制御(オープンループ制御)を実行する。このフェールセーフ制御では、エンコーダカウント値の情報をフィードバックせずにモータドライバ37,38(駆動回路)に駆動信号を出力してモータ12の通電相を順次切り換えてロータ32を回転駆動すると共に、上記駆動信号のカウント値に基づいてモータ12のロータ回転角を検出して、ロータ32を目標回転角まで駆動する。このステップ603の処理が特許請求の範囲でいうフェールセーフ制御手段としての役割を果たす。
[切換判定範囲設定]
図22に示す切換判定範囲設定ルーチンは、イグニッションスイッチのオン期間中に所定周期(例えば8ms周期)で実行され、特許請求の範囲でいう切換判定範囲設定手段としての役割を果たす。本ルーチンが起動されると、まずステップ701で、F/B制御実行中であるか否かを判定し、F/B制御実行中であれば、ステップ702に進み、Pレンジ/NotPレンジの切換判定範囲の幅Kp,Knpをそれぞれ通常の幅5°,7°に設定する。
これに対して、ステップ701で、フェールセーフ制御実行中と判定されれば、ステップ703に進み、Pレンジ/NotPレンジの切換判定範囲の幅Kp,Knpを通常よりも広い幅7°,9°に設定して、本ルーチンを終了する。
上記ステップ701で、F/B制御実行中と判定されて、Kp=5°、Knp=7°と設定された場合は、ステップ704に進み、Pレンジ側の遊び量の学習を完了したか否かを判定し、Pレンジ側の遊び量の学習を完了していれば、ステップ705に進み、Pレンジの切換判定範囲の幅Kpを通常の幅5°に維持するが、Pレンジ側の遊び量の学習を完了していなければ、ステップ706に進み、Pレンジの切換判定範囲の幅Kpを通常よりも広い幅7°に設定し直す。
この後、ステップ707に進み、NotPレンジ側の遊び量の学習を完了したか否かを判定し、NotPレンジ側の遊び量の学習を完了していれば、ステップ708に進み、NotPレンジの切換判定範囲の幅Knpを通常の幅7°に維持するが、NotPレンジ側の遊び量の学習を完了していなければ、ステップ709に進み、NotPレンジの切換判定範囲の幅Knpを通常よりも広い幅9°に設定し直す。
[レンジ判定]
図22に示すレンジ判定ルーチンは、イグニッションスイッチのオン期間中に所定周期(例えば8ms周期)で実行され、特許請求の範囲でいう切換判定手段としての役割を果たす。本ルーチンは、前記実施形態(1)で説明した図19のルーチンのステップ502とステップ504の処理をそれぞれステップ502aとステップ504aの処理に変更したものであり、その他のステップの処理は図19のルーチンと同じである。
本ルーチンでは、ステップ501で、モータ12の通電オン中であると判定されると、ステップ502aに進み、現在のロータ回転角θmが通電オン時のPレンジの切換判定範囲内(Pレンジ側の限界位置θpからKp以内の範囲)であるか否かを判定する。この通電オン時のPレンジの切換判定範囲の幅Kpは、前記図22のルーチンで設定された値を用いる。
このステップ502aで、現在のロータ回転角θmが通電オン時のPレンジの切換判定範囲内であると判定されれば、ステップ503に進み、現在のシフトレンジがPレンジであると判定する。
一方、上記ステップ502aで、現在のロータ回転角θmが通電オン時のPレンジの切換判定範囲から外れていると判定されれば、ステップ504aに進み、現在のロータ回転角θmが通電オン時のNotPレンジの切換判定範囲内(NotPレンジ側の限界位置θnpからKnp以内の範囲)であるか否かを判定する。この通電オン時のNotPレンジの切換判定範囲の幅Knpは、前記図22のルーチンで設定された値を用いる。
このステップ504aで、現在のロータ回転角θmが通電オン時のNotPレンジの切換判定範囲内であると判定されれば、ステップ505に進み、現在のシフトレンジがNotPレンジであると判定する。
以上説明した本実施形態(2)では、フェールセーフ制御時に、Pレンジ/NotPレンジの切換判定範囲をF/B制御時よりも広げるようにしている。つまり、フェールセーフ制御中は、駆動信号のカウント値からロータ回転角を推測するだけであるから、その推測値に対して実際のロータ回転角がずれている可能性がある。従って、フェールセーフ制御中は、切換判定範囲が狭いと、却ってシフトレンジを誤判定しやすくなる。
この対策として、本実施形態(2)では、フェールセーフ制御時に、Pレンジ/NotPレンジの切換判定範囲をF/B制御時よりも広げるようにしたものであり、これにより、フェールセーフ制御中でも、シフトレンジを従来よりも精度良く判定することが可能となり、レンジ切換機構11の操作量を検出するセンサ類を設けなくても、シフトレンジの判定精度を確保できて、低コスト化の要求を満たすことができる。
また、本実施形態(2)では、遊び量の学習完了前に切換判定範囲を遊び量の学習完了後よりも広げるようにしている。つまり、遊び量の学習完了前は、遊び量が不明(未知)であるため、切換判定範囲が狭いと、却ってシフトレンジを誤判定しやすくなる。この対策として、本実施形態(2)では、遊び量の学習完了前に切換判定範囲を遊び量の学習完了後よりも広げるようにしたものであり、これにより、遊び量の学習完了前でも、シフトレンジを従来よりも精度良く判定することが可能となり、レンジ切換機構11の操作量を検出するセンサ類を設けなくても、シフトレンジの判定精度を確保できて、低コスト化の要求を満たすことができる。
尚、本発明に用いるエンコーダは、磁気式のエンコーダ46に限定されず、例えば、光学式のエンコーダやブラシ式のエンコーダを用いても良い。
また、本発明に用いるモータは、SRモータに限定されず、エンコーダの出力信号のカウント値に基づいてロータの回転位置を検出してモータの通電相を順次切り換えるブラシレス型のモータであれば、SRモータ以外のブラシレス型のモータを用いても良い。
また、本実施形態(1),(2)のレンジ切換装置は、PレンジとNotPレンジの2つのレンジを切り換える構成であるが、例えば、ディテントレバー15の回動動作に連動して自動変速機のレンジ切換弁とマニュアルバルブを切り換えて、自動変速機のP、R、N、D、…の各レンジを切り換えるレンジ切換装置にも本発明を適用して実施できる。
その他、本発明は、レンジ切換装置に限定されず、SRモータ等のブラシレス型のモータを駆動源とする各種の装置に適用して実施できることは言うまでもない。
11…レンジ切換機構(位置切換機構)、12…SRモータ、15…ディテントレバー、18…パーキングロッド、20…パーキングギヤ、21…ロックレバー、23…ディテントバネ、23a…係合部、24…Pレンジ保持凹部、25…NotPレンジ保持凹部、26…減速機構、27…自動変速機、31…ステータ、32…ロータ、33,34…巻線、35,36…モータ励磁部、37,38…モータドライバ(駆動回路)、41…ECU(回転角検出手段,通常制御手段,フェールセーフ制御手段,切換判定手段,切換判定範囲設定手段)、43…Pレンジスイッチ、44…NotPレンジスイッチ、46…エンコーダ(回転角検出手段)、47…ロータリマグネット、48…A相信号用の磁気検出素子、49…B相信号用の磁気検出素子、50…Z相信号用の磁気検出素子。