(58)【調査した分野】(Int.Cl.,DB名)
回転体の回転に応じて回転しかつ周方向に複数の磁極が設けられた検出用ロータと、検出用ロータの回転に応じて、所定の位相差を有する複数の正弦波信号をそれぞれ出力する複数の磁気センサとを含み、これらの磁気センサの出力信号に基づいて前記回転体の回転角を検出する回転角検出装置であって、
前記各磁極の角度幅を記憶する記憶手段と、
前記各正弦波信号のゼロクロスのタイミングを検出するゼロクロス検出手段と、
前記ゼロクロス検出手段によって検出されたゼロクロスタイミングに基づいて、前記正弦波信号毎に、隣接するゼロクロスの時間間隔を演算するゼロクロス間隔演算手段と、
前記ゼロクロス間隔演算手段によって演算される時間間隔と、各磁極の角度幅とに基づいて、各磁気センサが感知している磁極を特定する磁極特定手段と、
を含む回転角検出装置。
前記検出用ロータは、複数の磁極のうちの少なくとも一つの磁極の角度幅が、他の磁極の角度幅のいずれとも識別可能に異なっている、請求項1に記載の回転角検出装置。
前記ゼロクロス検出手段は、前記各正弦波信号を一定周期でサンプリングし、前記各正弦波信号の符号が反転する前後のサンプリング値を線形補間することによってゼロクロスのタイミングを検出するものである請求項1〜3のいずれか一項に記載の回転角検出装置。
【背景技術】
【0002】
電動パワーステアリング装置などに使用されるブラシレスモータを制御するためには、ロータの回転角度に合わせてステータ巻線に電流を通電する必要がある。そこで、ブラシレスモータの回転に応じて回転する検出用ロータを用いて、ブラシレスモータのロータの回転角を検出する回転角検出装置が知られている。具体的には、
図10に示すように、検出用ロータ101(以下、「ロータ101」という)は、ブラシレスモータのロータに設けられている磁極対に相当する複数の磁極対を有する円筒状の磁石102を備えている。ロータ101の周囲には、2つの磁気センサ121,122が、ロータ101の回転中心軸を中心として所定の角度間隔をおいて配置されている。各磁気センサ121,122からは、所定の位相差を有する正弦波信号が出力される。これらの2つの正弦波信号に基づいて、ロータ101の回転角(ブラシレスモータのロータの回転角)が検出される。
【0003】
この例では、磁石102は、5組の磁極対を有している。つまり、磁石102は、等角度間隔で配置された10個の磁極を有している。各磁極は、ロータ101の回転中心軸を中心として、36°(電気角では180°)の角度間隔で配置されている。また、2つの磁気センサ121,122は、ロータ101の回転中心軸を中心として18°(電気角では90°)の角度間隔をおいて配置されている。
【0004】
図10に矢印で示す方向を検出用ロータ101の正方向の回転方向とする。そして、ロータ101が正方向に回転されるとロータ101の回転角が大きくなり、ロータ101が逆方向に回転されると、ロータ101の回転角が小さくなるものとする。各磁気センサ121,122からは、
図11に示すように、ロータ101が1磁極対分に相当する角度(72°(電気角では360°))を回転する期間を一周期とする正弦波信号V1,V2が出力される。
【0005】
所定の基準位置からのロータ101の絶対的な回転角を、ロータ101の絶対回転角(機械角)θ
Aということにする。ロータ101の1回転分の角度範囲を、5つの磁極対に対応して5つの区間に分け、各区間の開始位置を0°とし終了位置を360°として表したロータ101の角度を、ロータ101の相対回転角θ
Rということにする。この場合には、10個の磁極の角度幅は等しいので、ロータ101の相対回転角θ
Rは、ブラシレスモータのロータの電気角と一致する。
【0006】
ここでは、第1の磁気センサ121からは、V1=A1・sinθ
Rの出力信号が出力され、第2の磁気センサ122からは、V2=A2・cosθ
Rの出力信号が出力されるものとする。A1,A2は、振幅である。両出力信号V1,V2の振幅A1,A2が互いに等しいとみなすと、ロータ101の相対回転角θ
Rは、両出力信号V1,V2を用いて、次式(1)に基づいて求めることができる。
【0007】
θ
R=tan
−1(sinθ
R/cosθ
R)
=tan
−1(V1/V2) …(1)
このようにして、求められた相対角θ
Rを使って、ブラシレスモータを制御する。
なお、ロータ101の絶対回転角θ
A は、相対角θ
Rを用いて、たとえば、次式(2)に基づいて求めることができる。
【0008】
θ
A ={θ
R+360×(n−1)}/5(ただし、n=1,2,…5) …(2)
【発明を実施するための形態】
【0018】
以下では、この発明を、ブラシレスモータのロータの回転角を検出するための回転角検出装置に適用した場合の実施形態について、添付図面を参照して詳細に説明する。
図1は、この発明の一実施形態に係る回転角検出装置を、ブラシレスモータのロータの回転角を検出するための回転角検出装置に適用した場合の構成を示す模式図である。
この回転角検出装置は、ブラシレスモータ10の回転に応じて回転する検出用ロータ(以下、単に「ロータ1」という)を有している。
図2に示すように、ロータ1は、ブラシレスモータ10のロータに設けられている磁極対に相当する複数の磁極対を有する円筒状の磁石2を含んでいる。つまり、ロータ1には、周方向に並んだ複数の磁極が設けられている。この例では、磁石2は、5組の磁極対(M0,M1),(M2,M3),(M4,M5),(M6,M7),(M8,M9)を有している。つまり、磁石2は、10個の磁極M0〜M9を有している。
【0019】
ブラシレスモータ10のロータに設けられた各磁極の周方向の長さは、全て同じである。つまり、ブラシレスモータ10のロータに設けられた各磁極の角度幅は全て同じであり、36°である。したがって、このブラシレスモータ10では、1磁極対の角度幅は、機械角で72°であり、これが電気角の360°に相当する。これに対し、
図2に示すように、ロータ1に設けられている各磁極M0〜M9のうち、N極の磁極M0,M2,M4,M6,M8の角度幅(a,c,e,g,i)は、それぞれ異なっている。つまり、N極の磁極間では、その着磁面積が異なっている。S極の磁極M1,M3,M5,M7,M9のうち、磁極M9以外の4つの磁極M1,M3,M5,M7は、それぞれ異なっている。磁極M9の角度幅(j)は、磁極M5の角度幅(f)と等しい。
【0020】
この実施形態においては、各磁極M0〜M9の角度幅は、表1に示すようになっている。ただし、表1では、角度幅は、その角度幅に対応する機械角に磁極対数(この実施形態では”5”)を乗算した値で表されている。なお、
図2において、破線は、ロータ1を周方向に36°(前記電気角では180°)間隔で分割した場合の各領域を示している。
【0022】
ロータ1の周囲には、2つの磁気センサ21,22が、ロータ1の回転中心軸を中心として、所定角度(18°(前記電気角では90°))の角度間隔をおいて配置されている。これら2つの磁気センサ21,22を、それぞれ第1の磁気センサ21および第2の磁気センサ22という場合がある。磁気センサとしては、たとえば、ホール素子、磁気抵抗素子(MR素子)等、磁界の作用により電気的特性が変化する特性を有する素子を備えたものを用いることができる。
【0023】
図2に矢印で示す方向をロータ1の正方向の回転方向とする。そして、ロータ1が正方向に回転されるとロータ1の回転角が大きくなり、ロータ1が逆方向に回転されると、ロータ1の回転角が小さくなるものとする。各磁気センサ21,22からは、
図3に示すように、ロータ1の回転にともなって、正弦波状の信号(以下、「正弦波信号」という)V1,V2が出力される。なお、
図3における横軸のロータ角度[deg]は、機械角に磁極対数(この実施形態では”5”)を乗算することにより得られた角度を表している。また、
図3には、正弦波信号V1の各ピーク値付近に、その時点において第1の磁気センサ21が感知している磁極の領域a〜jが明記されている。
【0024】
ロータ1が1つの磁極に相当する角度を回転すると、各磁気センサ21,22からは、半周期分の正弦波信号が出力される。ただし、この実施形態では、各磁極の角度幅は一定幅ではないため、1つの磁気センサから出力される正弦波信号における各磁極に対応する半周期は一定ではない。また、磁極M5および磁極M9を除いて、各磁気センサ21,22の出力信号V1,V2の磁極毎のピーク値は、磁極ごとに異なる。
【0025】
所定の基準位置からのロータ1の絶対的な回転角を、ロータ1の絶対回転角(機械角)θ
Aということにする。ロータ1の1回転分の角度範囲を、5つの磁極対の角度幅に対応して、5つの区間(a+b,c+d,e+f,g+h,i+j)に分け、各区間の開始位置を0°とし終了位置を360°として、絶対回転角θ
Aに対応する角度を0〜360°の範囲内で表した角度を、ロータ1の相対回転角θ
Rということにする。なお、この実施形態では、これらの5つの区間の角度幅は、一定幅ではない。
【0026】
ここでは、第1の磁気センサ21からは、5つの磁極対に対応する区間毎に、V1=A1・sinθ
Rの出力信号が出力され、第2の磁気センサ22からは、5つの磁極対に対応する区間毎に、V2=A2・cosθ
Rの出力信号が出力されるものとする。A1,A2は、それぞれ振幅を表している。ただし、振幅A1は、磁極毎に異なる。同様に、振幅A2も磁極ごとに異なる。また、θ
Rは、対応する区間における相対回転角θ
Rを表している。
【0027】
両出力信号V1,V2の振幅A1,A2が互いに等しいとみなすと、対応する区間におけるロータ1の相対回転角θ
Rは、両出力信号V1,V2を用いて、次式(3)に基づいて求めることができる。
θ
R=tan
−1(sinθ
R/cosθ
R)
=tan
−1(V1/V2) …(3)
図1に戻り、各磁気センサ21,22の出力信号V1,V2は、回転角演算装置20に入力される。回転角演算装置20は、各磁気センサ21,22の出力信号V1,V2に基づいて、ロータ1の相対回転角θ
Rを算出する。また、回転角演算装置20は、得られた相対回転角θ
R等に基いて、ロータ1の絶対回転角(機械角)θ
Aを算出し、得られたロータ1の絶対回転角θ
Aに基づいて、ブラシレスモータのロータの電気角θ
Eを演算する。回転角演算装置20は、たとえば、マイクロコンピュータから構成され、CPU(中央演算処理装置)およびメモリ(ROM,RAM,書き換え可能な不揮発性メモリ等)を含んでいる。
【0028】
回転角演算装置20によって演算された電気角は、モータコントローラ30に与えられる。モータコントローラ30は、回転角演算装置20から与えられた電気角θ
Eと、所与の指令値とに基づいて、ブラシレスモータ10を制御する。
以下、回転角演算装置20の動作について説明する。回転角演算装置20内の書き換え可能な不揮発性メモリには、磁気センサ21,22毎に、振幅補正用テーブルが記憶されている。
【0029】
図4(a)は、第1の磁気センサ21に対応する振幅補正用テーブル(以下、「第1テーブル」という場合がある)の内容例を示している。第1テーブルには、各磁極M0〜M9の磁極番号0〜9毎に、その磁極に対応する第1の磁気センサ21の出力信号V1のピーク値(極大値または極小値)、その磁極の角度幅[deg]および補正ゲインG1が記憶されている。ただし、角度幅は、表1で説明したように、その角度幅に対応する機械角に磁極対数(この実施形態では”5”)を乗算した値である。補正ゲインG1は、第1の磁気センサ21の振幅の磁極毎のばらつきを補正するためのゲインである。
【0030】
任意の磁極に対する振幅補正ゲインG1は、当該磁極に対応する第1の磁気センサ21の出力信号V1のピーク値(極大値または極小値)と基準振幅とを用い、次式(4)に基いて求められる。基準振幅は、たとえば、角度幅(機械角×磁極対数)が180°の磁極に対応する第1の磁気センサ21の出力信号V1のピーク値(絶対値)に相当する値である。基準振幅は、予め設定され、この例では“500”である。
【0031】
G1=基準振幅/|ピーク値| …(4)
図4(b)は、第2の磁気センサ22に対応する振幅補正用テーブル(以下、「第2テーブル」という場合がある)の内容例を示している。第2テーブルには、各磁極M0〜M9の磁極番号0〜9毎に、その磁極に対応する第2の磁気センサ22の出力信号V2のピーク値(極大値または極小値)、その磁極の角度幅[deg]および補正ゲインG2が記憶されている。補正ゲインG2は、第2の磁気センサ22の振幅の磁極毎のばらつきを補正するためのゲインである。
図4(b)では、説明の便宜上、各磁極に対する第2の磁気センサ22のピーク値は、対応する磁極に対する第1の磁気センサ21のピーク値と同じ値となっているが、実際には互いに異なる場合もある。
【0032】
任意の磁極に対する補正ゲインG2は、当該磁極に対応する第2の磁気センサ22の出力信号V2のピーク値(極大値または極小値)と基準振幅とを用い、次式(5)に基いて求められる。基準振幅は、たとえば、角度幅(機械角×磁極対数)が180°の磁極に対応する第2の磁気センサ221の出力信号V2のピーク値(絶対値)に相当する値である。基準振幅は、予め設定され、この例では“500”である。
【0033】
G2=基準振幅/|ピーク値| …(5)
前記振幅補正用テーブルへのピーク値および補正ゲインの記憶は、ブラシレスモータ10の出荷前に行ってもよいし、ブラシレスモータ10の出荷後において、モータ制御中にピーク値を検出することにより、行ってもよい。前記振幅補正用テーブルに記憶されるピーク値および補正ゲインは、1周期分のデータから求めてもよいし、複数周期分のデータの平均値から求めてもよい。
【0034】
この実施形態では、回転角演算装置20は、ロータ1の回転速度が所定速度以下の場合には、第1または第2の磁気センサ21,22の出力信号V1,V2からピーク値を検出し、検出したピーク値に基づいて、各磁気センサ21,22が感知している磁極を特定する。一方、ロータ1の回転速度が所定速度より速い場合には、第1または第2の磁気センサ21,22の出力信号V1,V2からゼロクロスのタイミングを検出し、検出したゼロクロスのタイミングに基づいて、各磁気センサ21,22が感知している磁極を特定する。これは、ロータ1の回転速度が速い場合には、出力信号V1,V2のピークを検出できないおそれがあるからである。
【0035】
図5は、回転角演算装置20による回転角演算処理の手順を示すフローチャートである。
第1の磁気センサ21が感知している磁極の極番号を変数p1で表し、第2の磁気センサ22が感知している磁極の極番号を変数p2で表すものとする。また、回転角演算処理の開始時において第1の磁気センサ21が感知している磁極を基準磁極として、各磁極に番号を割り当てた場合の各磁極の番号を相対的極番号と定義する。第1の磁気センサ21が感知している相対的極番号(第1の相対的極番号)を変数p1’で表し、第2の磁気センサ22が感知している相対的極番号(第2の相対的極番号)を変数p2’で表すことにする。この実施形態では、制御開始時において第1の磁気センサ21が感知している基準磁極には、例えば、0の相対的極番号が割り当てられる。
【0036】
回転角演算処理が開始されると、回転角演算装置20は、各磁気センサ21,22の出力信号(センサ値)V1,V2を読み込む(ステップS1)。このセンサ値の読み込みは、所定の演算周期(サンプリング間隔Ts)毎に行なわれる。なお、回転角演算装置20のメモリ(たとえば、RAM)には、所定回数前に読み込まれたセンサ値から最新に読み込まれたセンサ値までの、複数回数分のセンサ値が記憶されるようになっている。
【0037】
また、この実施形態では、センサ値V1のピーク値(極大値および極小値)を検出するために、読み込まれたセンサ値V1のうち絶対値がより大きいセンサ値が、センサ値V1のピーク値候補としてメモリに保存される。同様に、センサ値V2のピーク値(極大値および極小値)を検出するために、読み込まれたセンサ値V2のうち絶対値がより大きいセンサ値が、センサ値V2のピーク値候補としてメモリに保存される。ただし、これらのピーク値候補は、対応する出力信号のゼロクロスが検出されたときには、後述するような所定のタイミングでゼロにリセットされる。
【0038】
前記ステップS1で各センサ値V1,V2が読み込まれると、回転角演算装置20は、今回の処理が回転角演算処理開始後の初回の処理であるか否かを判別する(ステップS2)。今回の処理が回転角演算処理開始後の初回の処理である場合には(ステップS2:YES)、回転角演算装置20は、相対的極番号の設定処理を行う(ステップS3)。具体的には、回転角演算装置20は、第1の相対的極番号p1’を0に設定する。また、回転角演算装置20は、第1の磁気センサ21が感知している磁極と第2磁気センサ22が感知している磁極とが同じである場合には第2の相対的極番号p2’を0に設定し、異なる場合には第2の相対的極番号p2’を1に設定する。
【0039】
より具体的に説明する。たとえば、ロータ1の磁極M0と磁極M1とからなる磁極対が第1の磁気センサ21を通過する際の、第1および第2の磁気センサ21,22の出力信号V1,V2の信号波形を模式的に表すと、
図6(a)(b)に示すようになる。
図6(a)(b)において、S1で示す領域は、第1の磁気センサ21および第2の磁気センサ22が共に磁極M0を感知している領域である。S2で示す領域は、第1の磁気センサ21が磁極M0を感知し、第2の磁気センサ22が磁極M1を感知している領域である。S3で示す領域は、第1の磁気センサ21および第2の磁気センサ22が共に磁極M1を感知している領域である。S4で示す領域は、第1の磁気センサ21が磁極M1を感知し、第2の磁気センサ22が磁極M2を感知している領域である。
【0040】
つまり、領域S1およびS3では、第2の磁気センサ22が感知している磁極の極番号は、第1の磁気センサ21が感知している磁極の極番号と等しくなる。一方、領域S2およびS4では、第2の磁気センサ22が感知している磁極の極番号は、第1の磁気センサ21が感知している磁極の極番号より1だけ大きくなる。
領域S1においては、両センサ値V1,V2は、V1≧0かつV2>0の第1条件を満たす。領域S2においては、両センサ値V1,V2は、V1≧0かつV2≦0の第2条件を満たす。領域S3においては、両センサ値V1,V2は、V1<0かつV2<0の第3条件を満たす。領域S4においては、両センサ値V1,V2は、V1<0かつV2≧0の第4条件を満たす。
【0041】
そこで、回転角演算装置20は、前記第1条件または前記第3条件を満たしている場合には、第1の相対的極番号p1’および 第2の相対的極番号P2’を0に設定する。一方、前記第2条件または前記第4条件を満たしている場合には、回転角演算装置20は、第1の相対的極番号p1’を0に設定し、第2の相対的極番号P2’を1に設定する。
相対的極番号の設定処理が終了すると、ステップS4に移行する。前記ステップS2において、今回の処理が回転角演算処理開始後の初回の処理ではないと判別された場合には(ステップS2:NO)、ステップS4に移行する。
【0042】
ステップS4では、回転角演算装置20は、メモリに記憶されているセンサ値V1,V2に基づいて、センサ値V1,V2毎に、センサ値の符号が反転するゼロクロスを検出したか否かを判別する。ゼロクロスが検出されなかったときには(ステップS4:NO)、回転角演算装置20は、ステップS17に移行する。
前記ステップS4において、いずれかのセンサ値V1,V2に対してゼロクロスが検出された場合には、回転角演算装置20は、ゼロクロスのタイミング(以下、「ゼロクロスタイミング」という)を演算してメモリに記憶する(ステップS5)。この際、メモリには、当該ゼロクロスタイミングが、出力信号V1,V2のうちのいずれに対応するゼロクロスタイミングであるかが識別可能に記憶される。
【0043】
ゼロクロスタイミングは、センサ値の符号が反転したことを検出したタイミングであってもよい。また、ゼロクロスタイミングは、センサ値の符号が反転する前後の2つのセンサ値(サンプリング値)を線形補間することによって求めてもよい。たとえば、
図7に示すように、符号が反転する直前に検出されたセンサ値がy1で、符号が反転した直後に検出されたセンサ値がy2である場合には、センサ値y1が検出された時点を基準とすると、ゼロクロスタイミングtaは、次式(6)に基づいて演算される。
【0044】
ta=Ts×{y1/(y1−y2)}…(6)
ただし、Tsは、センサ値V1,V2のサンプリング間隔である。
たとえば、y1=0.2,y2=−0.1,Ts=100μsecである場合には、ta=0.0667msecとなる。
また、
図7に示すように、符号が反転する直前に検出されたセンサ値がy3で、符号が反転した直後に検出されたセンサ値がy4である場合には、前記センサ値y1が検出された時点を基準とすると、ゼロクロスタイミングtbは、次式(7)に基づいて演算される。
【0045】
tb=Ts×{y3/(y3−y4)}+ΔT…(7)
ただし、ΔTは、センサ値y1が検出されてからセンサ値y3が検出されるまでの時間間隔である。
たとえば、y3=−0.2,y4=0.1,Ts=100μsec,ΔT=44msecである場合には、tb=44.0667msecとなる。
【0046】
図5に戻り、前記ステップS5において、ゼロクロスタイミングが演算されると、回転角演算装置20は、今回演算されたゼロクロスタイミングと、対応する出力信号に対して前回演算されたゼロクロスタイミングとの時間間隔(以下、「ゼロクロス間隔」という)を演算する(ステップS6)。なお、ステップS6において、前回のゼロクロスタイミングが存在しないために、ゼロクロス間隔が演算されなかった場合には、回転角演算装置20は、前記ステップS4でゼロクロスが検出された出力信号に対応するピーク値候補を0にリセットした後、ステップS17に移行する。
【0047】
前記ステップS6でゼロクロス間隔が演算されると、回転角演算装置20は、演算されたゼロクロス間隔が所定値A未満であるか否かを判別することにより、ロータ1の回転速度が所定速度より速いか否かを判別する(ステップS7)。回転角演算装置20は、ゼロクロス間隔が所定値A未満である場合には、ロータ1の回転速度が所定速度より速いと判別し、ゼロクロス間隔が所定値A以上の場合にはロータ1の回転速度が所定速度以下であると判別する。なお、ロータ1の1回転分のゼロクロス間隔の総和が所定値未満であるか否かを判別することにより、ロータ1の回転速度が所定速度より速いか否かを判別してもよい。このようにすると、各ゼロクロス間隔の誤差によるロータ1の回転速度の検出誤差を低減できる。
【0048】
ゼロクロス間隔が所定値A以上(ロータ1の回転速度が所定速度以下)であると判別された場合には(ステップS7:NO)、回転角演算装置20は、前記ステップS4でゼロクロスが検出された出力信号のピーク値(極大値または極小値)を検出したか否かを判定する(ステップS8)。以下において、ステップS8の判定処理を、ピーク値検出処理という場合がある。
【0049】
ピーク値検出処理について具体的に説明する。前記ステップS4でゼロクロスが検出された出力信号に対応する磁気センサをピーク値検出対象の磁気センサということにする。回転角演算装置20は、まず、ピーク値検出対象の磁気センサが感知している磁極が変化したか否かを判別する。つまり、回転角演算装置20は、ピーク値検出対象の磁気センサが感知している磁極位置が、当該磁気センサの出力信号のゼロクロスが前回検出された時点と、今回検出された時点とで、異なっているか同じであるかを判定する。ロータ1の回転方向が逆転した場合には、前記両時点での磁極位置が同じになる可能性がある。
【0050】
この判定は、たとえば、前回ゼロクロスが検出されたときのロータ1の回転方向と、現在のロータ1の回転方向が同じ方向であるか否かに基づいて行うことができる。すなわち、回転角演算装置20は、ロータ1の回転方向が同じ方向であれば、ピーク値検出対象の磁気センサが感知している磁極が変化したと判定する。一方、ロータ1の回転方向が異なっていれば、回転角演算装置20は、ピーク値検出対象の磁気センサが感知している磁極が変化していないと判定する。
【0051】
当該磁気センサが感知している磁極が変化したと判定された場合には、回転角演算装置20は、ピーク値を検出したと判別するとともに、当該磁気センサに対応するピーク値候補をピーク値として特定する。一方、当該磁気センサが感知している磁極が変化していないと判定された場合には、回転角演算装置20は、ピーク値を検出しなかったと判定する。
【0052】
なお、ロータ1の回転方向は、たとえば、各磁気センサ21,22の出力信号V1,V2の位相に基いて判別することができる。具体的には、V2の位相がV1より進んでいる場合(たとえば、同じ磁極に対するゼロクロス間隔が、V2で演算されてからV1で演算される場合など)には、ロータ1の回転方向が正方向であると判別する。一方、V1の位相がV2より進んでいる場合(たとえば、同じ磁極に対するゼロクロス間隔が、V1で演算されてからV2で演算される場合など)には、ロータ1の回転方向が逆方向であると判別する。
【0053】
前記ステップS8でピーク値が検出されなかった場合には、回転角演算装置20は、前記ステップS4でゼロクロスが検出された出力信号に対応するピーク値候補を0にリセットした後、ステップS17に移行する。一方、前記ステップS8において、ピーク値が検出されたときには(ステップS8:YES)、回転角演算装置20は、前記ステップS4でゼロクロスが検出された出力信号に対応するピーク値候補を0にリセットする。また、回転角演算装置20は、回転角演算処理開始後において後述するステップS11またはS15の極番号特定処理によって各磁気センサ21,22が感知している磁極の極番号p1,p2が既に特定されているか否かを判別する(ステップS9)。
【0054】
各磁気センサ21,22が感知している磁極の極番号p1,p2が特定されていない場合には(ステップS9:NO)、回転角演算装置20は、相対的極番号の更新処理を行なう(ステップS10)。具体的には、前記ステップS8のピーク値検出処理によってピーク値が検出された方の磁気センサに対して既に設定されている相対的極番号p1’またはp2’を、ロータ1の回転方向に基づいて更新する。より具体的には、回転角演算装置20は、当該磁気センサに対して既に設定されている相対的極番号p1’またはp2’を、ロータ1の回転方向に応じて、1だけ多い番号または1だけ少ない番号に変更する。
【0055】
ロータ1の回転方向が正方向(
図2に矢印で示す方向)である場合には、既に設定されている相対的極番号p1’またはp2’を、1だけ多い番号に更新し、ロータ1の回転方向が逆方向である場合には、既に設定されている相対的極番号p1’またはp2’を、1だけ少ない番号に更新する。ただし、”0”の相対的極番号に対して、1だけ少ない相対的極番号は、”9”となる。また、”9”の相対的極番号に対して、1だけ多い相対的極番号は、”0”となる。
【0056】
前記ステップS10の相対的極番号の更新処理が終了すると、回転角演算装置20は、ピーク値検出に基づく極番号特定処理を行なう(ステップS11)。つまり、回転角演算装置20は、前記ステップS8で検出されたピーク値等に基づいて、各磁気センサ21,22がそれぞれ感知している磁極の極番号p1,p2を特定する。
具体的には、回転角演算装置20は、まず、前記ステップS8のピーク値検出処理によって検出されたピーク値(極大値または極小値)と、当該ピーク値を出力した磁気センサに対応する振幅補正用テーブル(第1または第2テーブル)の内容とに基づいて、当該磁気センサが感知している磁極の極番号p1またはp2を特定する。つまり、回転角演算装置20は、振幅補正用テーブルに記憶されている複数のピーク値のうち、ピーク値検出処理によって検出されたピーク値に最も近いピーク値に対応する極番号を、当該磁気センサが感知している磁極の極番号p1またはp2として特定する。
【0057】
この際、センサ信号のピーク値は磁石の温度特性(磁石の温度が高くなるほどピーク値が小さくなる)に応じて変化するので、磁石の温度係数(温度が高くなるほど小さくなる係数)を振幅補正用テーブルのピーク値に乗算することによってテーブル値を補正し、検出されたピーク値と補正後のテーブル値とに基づいて、磁極の極番号を特定するようにしてもよい。
【0058】
ただし、ピーク値検出処理によって検出されたピーク値に最も近いピーク値に対応する極番号が磁極M5または磁極M9に対応する極番号である場合には、回転角演算装置20は、当該磁気センサが感知している磁極を特定しない。
前記磁気センサが感知している磁極の極番号p1またはp2を特定できた場合には、回転角演算装置20は、当該磁気センサが感知している磁極の極番号p1またはp2と、第1および第2の相対的極番号p1’,p2’とに基づいて、他方の磁気センサが感知している磁極を特定する。たとえば、第1の磁気センサ21が感知している磁極の極番号p1が特定された場合には、回転角演算装置20は、p2=(p1−p1’)+p2’に基づいて、第2の磁気センサ22が感知している磁極の極番号p2を特定する。一方、第2の磁気センサ22が感知している磁極の極番号p2が特定された場合には、回転角演算装置20は、p1=(p2−p2’)+p1’に基づいて、第1の磁気センサ21が感知している磁極の極番号p1を特定する。これにより、各磁気センサ21,22がそれぞれ感知している磁極の極番号p1,p2が特定される。ステップS11の処理が終了すると、ステップS17に移行する。
【0059】
前記ステップS9において、各センサ21,22が感知している磁極の極番号p1,p2が既に特定されていると判別された場合には(ステップS9:YES)、回転角演算装置20は、ピーク値検出に基づく極番号更新処理を行なう(ステップS12)。具体的には、回転角演算装置20は、前記ステップS8のピーク値検出処理によってピーク値が検出された方の磁気センサに対して既に特定されている極番号p1またはp2を、ロータ1の回転方向に基づいて更新する。より具体的には、回転角演算装置20は、当該磁気センサに対して既に特定されている極番号p1またはp2を、ロータ1の回転方向に応じて、1だけ多い極番号または1だけ少ない極番号に変更する。
【0060】
ロータ1の回転方向が正方向(
図2に矢印で示す方向)である場合には、既に特定されている前記極番号p1またはp2を、1だけ多い極番号に更新し、ロータ1の回転方向が逆方向である場合には、既に特定されている前記極番号p1またはp2を、1だけ少ない極番号に更新する。ただし、”0”の極番号に対して、1だけ少ない極番号は、”9”となる。また、”9”の極番号に対して、1だけ多い極番号は、”0”となる。ステップS12の処理が終了すると、ステップS17に移行する。
【0061】
前記ステップS7において、ゼロクロス間隔が所定値A未満である(ロータ1の回転速度が所定速度より速い)と判別された場合には(ステップS7:YES)、回転角演算装置20は、前記ステップS4でゼロクロスが検出された出力信号に対応するピーク値候補を0にリセットした後、ステップS13に移行する。
ステップS13では、回転角演算装置20は、回転角演算処理開始後において前記ステップS11の極番号特定処理または後述するステップS15の極番号特定処理によって各磁気センサが感知している磁極が既に特定されているか否かを判別する。各磁気センサが感知している磁極が特定されていない場合には(ステップS13:NO)、回転角演算装置20は、相対的極番号の更新処理を行なう(ステップS14)。具体的には、前記ステップS4でゼロクロスが検出された方の磁気センサに対して既に設定されている相対的極番号p1’またはp2’を、ロータ1の回転方向に基づいて更新する。より具体的には、回転角演算装置20は、当該磁気センサに対して既に設定されている相対的極番号p1’またはp2’を、ロータ1の回転方向に応じて、1だけ多い番号または1だけ少ない番号に変更する。
【0062】
ロータ1の回転方向が正方向(
図2に矢印で示す方向)である場合には、既に設定されている相対的極番号p1’またはp2’を、1だけ多い番号に更新し、ロータ1の回転方向が逆方向である場合には、既に設定されている相対的極番号p1’またはp2’を、1だけ少ない番号に更新する。ただし、”0”の相対的極番号に対して、1だけ少ない相対的極番号は、”9”となる。また、”9”の相対的極番号に対して、1だけ多い相対的極番号は、”0”となる。
【0063】
前記ステップS1
4の相対的極番号の更新処理が終了すると、ゼロクロス検出に基づく極番号特定処理を行なう(ステップS15)。つまり、回転角演算装置20は、前記ステップS6で演算されたゼロクロス間隔等に基づいて、各磁気センサ21,22がそれぞれ感知している磁極を特定する。
具体的には、回転角演算装置20は、まず、前記ステップS6において演算されたゼロクロス間隔と、対応する磁気センサの出力信号に基づいて最新に演算されたロータ1の1回転分のゼロクロス間隔の総和(ロータ1が1回転するのに要している時間に相当)と、ロータ1の回転方向と、当該磁気センサに対応する振幅補正用テーブル(第1または第2テーブル)の内容とに基づいて、当該磁気センサが感知している磁極を特定する。
【0064】
前記ステップS6において演算されたゼロクロス間隔をTxとし、対応する磁気センサの出力信号に基づいて最新に演算されたロータ1の1回転分のゼロクロス間隔の総和をΣTとすると、回転角演算装置20は、次式(8)に基づいて、当該磁気センサ21が直前まで感知していた磁極(直前感知磁極)の角度幅に応じた値Dを演算する。
D=(Tx/ΣT)×1800 …(8)
前記式(8)中の1800は、各磁極M0〜M9の角度幅(機械角×磁極対数)の総和である。つまり、前記式(8)中の1800は、ロータ1の1回転分の回転角度(電気角)である。
【0065】
回転角演算装置20は、振幅補正用テーブルに記憶されている各磁極M0〜M9の角度幅(機械角×磁極対数)のうち、前記式(8)によって演算された値Dに最も近い角度幅に対応する極番号を、直前感知磁極の極番号として特定する。そして、ロータ1の回転方向が正方向である場合には、回転角演算装置20は、前記直前感知磁極の極番号より1だけ多い極番号を、当該磁気センサが感知している磁極の極番号として特定する。一方、ロータ1の回転方向が逆方向である場合には、回転角演算装置20は、前記直前感知磁極の極番号より1だけ少ない極番号を、当該磁気センサが感知している磁極の極番号として特定する。ただし、ただし、”0”の極番号に対して、1だけ少ない極番号は、”9”となる。また、”9”の極番号に対して、1だけ多い極番号は、”0”となる。
【0066】
たとえば、前記ステップS6において演算されたゼロクロス間隔が第1の磁気センサ21に対するゼロクロス間隔であり、ロータ1の回転方向が正方向であるとする。そして、第1の磁極センサ21の出力信号V1が
図8に示されるような信号である場合には、ΣTは、ゼロクロス間隔T0〜T9の総和となる。また、Txは、ゼロクロス間隔T0〜T9のうちのいずれかとなる。また、たとえば、ΣT=0.05sec,Tx=0.0044secである場合には、D=158.6となる。表1から、Dに最も近い角度幅を有する磁極は、M2となる。したがって、磁極M2に対応する極番号”2”が直前感知磁極の極番号として特定される。ロータ1の回転方向が正方向であるので、直前感知磁極の極番号より1だけ多い極番号”3”が第1の磁気センサ21が感知している磁極の極番号として特定される。
【0067】
ただし、前記式(8)によって演算された値Dに最も近い角度幅に対応する極番号が磁極M5または磁極M9に対応する極番号である場合には、回転角演算装置20は、磁気センサが感知している磁極を特定しない。また、回転角演算装置20は、ロータ1の1回転分のゼロクロス間隔が演算されていない場合には、磁気センサが感知している磁極を特定しない。
【0068】
前記磁気センサが感知している磁極の極番号p1またはp2を特定できた場合には、回転角演算装置20は、当該磁気センサが感知している磁極の極番号p1またはp2と、第1および第2の相対的極番号p1’,p2’とに基づいて、他方の磁気センサが感知している磁極を特定する。たとえば、第1の磁気センサ21が感知している磁極の極番号p1が特定された場合には、回転角演算装置20は、p2=(p1−p1’)+p2’に基づいて、第2の磁気センサ22が感知している磁極の極番号p2を特定する。一方、第2の磁気センサ22が感知している磁極の極番号p2が特定された場合には、回転角演算装置20は、p1=(p2−p2’)+p1’に基づいて、第1の磁気センサ21が感知している磁極の極番号p1を特定する。これにより、各磁気センサ21,22がそれぞれ感知している磁極の極番号p1,p2が特定される。ステップS15の処理が終了すると、ステップS17に移行する。
【0069】
前記ステップS13において、各センサ21,22が感知している磁極の極番号が既に特定されていると判別された場合には(ステップS13:YES)、回転角演算装置20は、ゼロクロス検出に基づく極番号更新処理を行なう(ステップS16)。具体的には、回転角演算装置20は、前記ステップS4のゼロクロス検出処理によってゼロクロスが検出された方の磁気センサに対して既に特定されている極番号p1またはp2を、ロータ1の回転方向に基づいて更新する。より具体的には、回転角演算装置20は、当該磁気センサに対して既に特定されている極番号p1またはp2を、ロータ1の回転方向に応じて、1だけ多い極番号または1だけ少ない極番号に変更する。
【0070】
ロータ1の回転方向が正方向である場合には、既に特定されている前記極番号p1またはp2を、1だけ多い極番号に更新し、ロータ1の回転方向が逆方向である場合には、既に特定されている前記極番号p1またはp2を、1だけ少ない極番号に更新する。ただし、”0”の極番号に対して、1だけ少ない極番号は、”9”となる。また、”9”の極番号に対して、1だけ多い極番号は、”0”となる。ステップS16の処理が終了すると、ステップS17に移行する。
【0071】
ステップS17では、回転角演算装置20は、前記ステップS1で読み込んだセンサ値V1,V2に対して振幅補正を行う。具体的には、回転角演算装置20は、各磁気センサ21,22に対して現在特定されている極番号p1,p2に対応する振幅補正ゲインG1,G2を、第1テーブルおよび第2テーブルからそれぞれ読み込む。そして、回転角演算装置20は、前記ステップS1で読み込んだセンサ値V1,V2を、第1テーブルおよび第2テーブルから読み込んだゲインG1,G2を用いて、それぞれ補正する。補正後のセンサ値をV1’,V2’とすると、V1’,V2’は、それぞれ次式(9),(10)で表される。
【0072】
V1’=V1×G1 …(9)
V2’=V1×G2 …(10)
ただし、各磁気センサ21,22が感知している磁極の極番号p1,p2が特定されていない場合には、ステップS17では、センサ値V1,V2の補正は行われずに、ステップS18に移行する。
【0073】
前記ステップS17の振幅補正が行われると、回転角演算装置20は、ロータ1の相対角θ
Rを算出する(ステップS18)。具体的には、回転角演算装置20は、次式(11)に基づいて、ロータ1の相対角θ
Rを算出する。
θ
R=tan
−1(V1’/V2’) …(11)
次に、回転角演算装置20は、ステップS18で算出されたロータ1の相対角θ
Rと、磁気センサ21が感知している磁極の極番号p1と、振幅補正テーブルの内容とに基づいて、ロータ1の絶対角(機械角)θ
Aを算出する(ステップS19)。具体的には、回転角演算装置20は、磁気センサ21が感知している磁極の極番号p1に基づいて、磁気センサ21が感知している磁極を特定する。そして、特定した磁極に対応する角度幅Wを求める。たとえば、磁気センサ21が感知している磁極が、10個の磁極のうち、1番目の磁極M0である場合には、その磁極に対応する角度幅Wは、170[deg]となる。
【0074】
前記ステップS18で算出されたロータ1の相対角θ
Rは、磁気センサ21が感知している磁極の角度幅Wが180°であるとして、算出された角度である。そこで、回転角演算装置20は、前記ステップS18で算出されたロータ1の相対角θ
Rを、次式(12)に基づいて、磁気センサ21が感知している磁極の領域の角度幅に応じた相対角θ
R’に変換(位相補正)する。
【0075】
θ
R’=θ
R×(W/180°) …(12)
そして、回転角演算装置20は、磁気センサ21が感知している磁極と、変換後の相対角θ
R’とに基づいて、ロータ1の絶対角(機械角)θ
Aを算出する。たとえば、磁気センサ21が感知している磁極が1番目の磁極M0である場合には、ロータ1の絶対角θ
Aは、変換後の相対角θ
R’と一致する。つまり、θ
A=θ
R’/5となる。ここで、5は、磁極対数である。
【0076】
磁気センサ21が感知している磁極が2番目の磁極M1である場合には、θ
A={θ
R’+(1番目の磁極M0の角度幅)}/5となる。ただし、角度幅は、表1で説明したように、その角度幅に対応する機械角に磁極対数(この実施形態では”5”)を乗算した値である。磁気センサ21が感知している磁極が3番目の磁極対M2である場合には、θ
A={θ
R’+(1番目および2番目の磁極M0,M1の角度幅の総和)}/5となる。磁気センサ21が感知している磁極が4番目の磁極M3である場合には、θ
A={θ
R’+(1番目〜3番目の磁極M0〜M2の角度幅の総和)}/5となる。磁気センサ21が感知している磁極が5番目の磁極M4である場合には、θ
A={θ
R’+(1番目〜4番目の磁極M0〜M3の角度幅の総和)}/5となる。
【0077】
磁気センサ21が感知している磁極が6番目の磁極M5である場合には、θ
A={θ
R’+(1番目〜5番目の磁極M0〜M4の角度幅の総和)}/5となる。磁気センサ21が感知している磁極対が7番目の磁極M6である場合には、θ
A={θ
R’+(1番目〜6番目の磁極の角度幅M0〜M5の総和)}/5となる。磁気センサ21が感知している磁極が8番目の磁極M7である場合には、θ
A={θ
R’+(1番目〜7番目の磁極の角度幅M0〜M6の総和)}/5となる。磁気センサ21が感知している磁極が9番目の磁極M8である場合には、θ
A={θ
R’+(1番目〜8番目の磁極の角度幅M0〜M7の総和)}/5となる。磁気センサ21が感知している磁極が10番目の磁極M9である場合には、θ
A={θ
R’+(1番目〜9番目の磁極の角度幅M0〜M8の総和)}/5となる。
【0078】
このようにしてロータ1の絶対角θ
Aが算出されると、回転角演算装置20は、電気角θ
Eを、算出する(ステップS20)。具体的には、磁気センサ21が感知している磁極対(M0,M1),(M2,M3),(M4,M5),(M6,M7),(M8,M9)の番号(1〜5)をnとすると、回転角演算装置20は、次式(13)に基づいて、電気角θ
Eを算出して、モータコントローラ30に与える。
【0079】
θ
E=5θ
A −{360×(n−1)} …(13)
この後、回転角演算装置20は、モータ制御が終了したか否かを判別する(ステップS21)。モータ制御が終了していなければ(ステップS21:NO)、ステップS1に戻る。モータ制御が終了していれば(ステップS21:YES)、回転角演算装置20は、制御終了処理を行なう(ステップS22)。
【0080】
図9は、
図5のステップS22の制御終了処理の一例を示すフローチャートである。
制御終了処理においては、回転角演算装置20は、今回のモータ制御期間中において、ブラシレスモータ10が十分に回転したか否かを判定する(ステップS31)。具体的には、回転角演算装置20は、今回のモータ制御期間中におけるモータ10の回転数が、所定回転数以上であるか否かを判定する。ブラシレスモータ10が十分に回転したと判別された場合には(ステップS31:YES)、振幅補正用テーブル(第1テーブルおよび第2テーブル)内の各極番号に対応するピーク値を、その極番号に対応するピーク値として最新に検出されたピーク値に更新する(ステップS32)。そして、制御終了処理を終了する。
【0081】
前記実施形態では、ブラシレスモータ10が起動された後において、ロータ1の回転速度が所定速度以下の場合には、第1または第2の磁気センサ21,22の出力信号V1,V2のピーク値に基づいて、各磁気センサ21,22が感知している磁極の極番号を特定することができる。一方、ブラシレスモータ10が起動された後において、ロータ1の回転速度が所定速度より速い場合には、第1または第2の磁気センサ21,22の出力信号V1,V2のゼロクロスタイミングに基づいて、各磁気センサ21,22が感知している磁極の極番号を特定することができる。これにより、ロータ1の回転速度が速い場合でも、各磁気センサ21,22が感知している磁極を高精度に特定することができる。
【0082】
なお、ロータ1の回転方向を、ゼロクロスが検出された一方の出力信号の前回値および今回値と、他方の出力信号の今回値とに基づいて判定してもよい。第1の磁気センサ21の出力信号V1を第1の出力信号V1とし、第2の磁気センサ22の出力信号V2を第2の出力信号V2として、具体的に説明する。ゼロクロスが検出された一方の出力信号が第1の出力信号V1である場合には、「第1の出力信号V1の前回値が0より大きくかつその今回値が0以下であり、第2の出力信号V2が0未満である」という条件、または「第1の出力信号V1の前回値が0未満でかつその今回値が0以上であり、第2の出力信号V2が0以上である」という条件を満たしている場合には、回転方向が正方向(
図2に矢印で示す方向)であると判定する。一方、「第1の出力信号V1の前回値が0以上でかつその今回値が0未満であり、第2の出力信号V2が0より大きい」という条件、または「第1の出力信号V1の前回値が0以下でかつその今回値が0より大きく、第2の出力信号V2が0未満である」という条件を満たしている場合には、回転方向が逆方向であると判定する。
【0083】
この発明は、ブラシレスモータのロータ以外の回転体の回転角を検出する場合にも、適用することができる。
その他、特許請求の範囲に記載された事項の範囲で種々の設計変更を施すことが可能である。