【実施例】
【0022】
図1〜
図8に、実施例での磁気式の位置センサ2とその特性を示す。各図において、4はホール素子アレイで、5,6は個々のホール素子である。この発明ではk個毎にホール素子の出力を走査し、0クロッシングポイントの概略位置を検出する。kの値は例えば2,4,6,8,12等で、実施例ではk=4として説明する。そして走査時に出力を読み出すホール素子(k個毎に配置)を6で表し、他のホール素子を5で表す。ホール素子アレイ4の全長は例えば50mm〜500mm程度で、合計で例えば数十個〜数百個のホール素子5,6を1直線上に配列する。各ホール素子には直流電源8から電流を加え、ホール起電力を出力として取り出す。
【0023】
10は磁石対で、一対の磁極11,12が、表面がホール素子アレイと平行に向き合うように間隔を置いて配置されている。磁極は、
図1の左側(+X側)にN極11、右側(−X側)にS極12が配置され、周囲を鋼板等のヨーク14で囲って、磁石対10の取り付けに用いると共に、外部磁界を遮断する。磁極11,12は極性が逆で、磁力が等しく、磁極11,12の中間を通って、ホール素子アレイ4の長手方向に垂直な面内では、X軸に垂直な磁束密度は0となる。そしてこの面とホール素子アレイ4との交点が0クロッシングポイントである。この明細書では、ホール素子アレイ4に平行な方向をX軸とし、
図1の左側を+X、右側を−Xとする。0クロッシングポイントの周囲での位置を表すため、磁極11の+X側の端部を+180°、磁極12の−X側の端部を-180°とする位相を用いる。またホール素子アレイ4内でのホール素子5,6の番号をホール素子のアドレスとし、ホール素子アレイ4内での位置を表すために用いる。アドレスは+X側が先頭で小さく、−X側が末尾で大きいものとする。
【0024】
実施例では、ホール素子アレイ4等の磁気式位置センサ2が移動体に搭載され、磁石対10等の被検出用の磁気マークが地上側に固定されているものとする。そして1対の磁極11,12の代わりに、多数個の磁極を、1個毎に極性が反転するように、配列しても良い。また常時位置を検出できるように、ホール素子アレイ4の検出レンジよりも短い間隔で磁石対10を繰り返し配置しても良い。この場合に、磁石対10の間隔が一定である必要はない。また特定のレンジが重要な場合、例えば工作機械で工具等を精密送りするレンジ、あるいは何らかの位置決めを行うレンジ等を検出する場合、磁石対10をそのレンジにのみ配置しても良い。また実施例とは逆に、磁気式位置センサ2を地上側に固定し、磁気マークを移動体に搭載しても良い。さらに磁石対10の代わりに、リニアモータ用の磁石の列等を磁気マークとして検出しても良い。この明細書では、ホール素子アレイ4とその駆動回路とを磁気式の位置センサ2とし、磁石対10等は位置センサ2の外部にあるものとする。
【0025】
図2に磁気式の位置センサ2の駆動回路を示す。マルチプレクサ18はアンプ20へ接続するホール素子5,6を切り換え、アンプ20はホール起電力を増幅すると共に積分フィルタ等により起電力中の高周波成分を除去する。ADコンバータ22は例えば1MHz以上の高速ADコンバータで、8-16ビット程度の分解能で、その出力を処理部16が記憶する。また処理部16は、ADコンバータの出力からホール素子5,6毎に固有の補正値を引き算し、引き算後の出力から0クロッシングポイントを検出する。この補正値は、磁石対10からの磁界がない状態でのホール素子の出力で、不揮発性のメモリから成る補正テーブル24に記憶する。
【0026】
処理部16の詳細を
図3に示す。クロック発生部25はホール起電力の読み出しからメモリ34への記憶までのタイミング信号を発生し、この信号に従ってマルチプレクサ18を切り換え、アドレス制御部26,30がデータの読み出しと書き込みのアドレスを発生する。アドレス制御部26はADコンバータ22の信号をメモリ28へ書き込む際のアドレスを発生し、アドレス制御部30は補正テーブル24からの読み出しアドレスと、メモリ34への書き込みアドレスとを発生する。差分部32はADコンバータ22の出力から、同じホール素子に対する補正テーブル24のデータ(補正用起電力)を引き算する。以上の処理により、ホール素子5,6毎のオフセット(外部磁界がない環境でのホール起電力)を補正した起電力を、ホール素子5,6の起電力が例えば100KHz以上の周期で更新されるように、メモリ34へ書き込む。
【0027】
コア部36はCPU38とレジスタ39、あるいは他のキャッシュメモリと、プログラムメモリ40とを備え、プログラムの内容は
図4に示す。プログラム駆動のCPU38の代わりに、デジタルシグナルプロセッサ、ゲートアレイ等の他の演算素子を用いても良い。コア部36を機能ブロックとして
図3の下側に示すと、0クロッシングポイント概略検出部44は0クロッシングポイントの両側のホール素子のアドレスを求め、位置検出部45は0クロッシングポイントの左右の各1素子〜各4素子の出力から、0クロッシングポイントの正確な位置を検出する。
【0028】
ホール素子5,6のアドレスと実際の位置との間の誤差等を除くため、好ましくはリニアリティ補正部42を設ける。リニアリティ補正部42は、コア部36が求めた位置を、誤差を補正済みの位置へ変換するための変換表、あるいはホール素子5,6のアドレス毎の位置のオフセットのテーブルとオフセットを除くための加減算回路、等で構成する。
【0029】
図4,
図5に位置検出のアルゴリズムを示す。ホール素子5,6は外部磁界が無い場合でも起電力を生じることがあり、ノイズとなる磁界がない環境でホール素子からの出力(ADコンバータ22の出力)を不揮発性メモリから成る補正テーブル24へ書き込む(ステップ1)。また地磁気等の常時存在する外部磁界は遮断する必要がない。
【0030】
図2,
図3のマルチプレクサ18〜差分部32は、各ホール素子5,6の出力をオフセット補正し、メモリ34へ書き込むサイクルを実行する。コア部36はステップS3〜S5を、メモリ34への書き込みサイクルと同じ時間内に実行する。ステップ3では、ホール素子6の出力のみを走査し、言い換えるとk個毎に出力を走査し、左側の素子がn極からの磁束密度を受け(記号n)、右側の素子がs極からの磁束密度を受けて(記号s)、ホール素子の対を検出する。例えば+X側にN極11が−X側にS極12が有り、+X側から−X側へk個毎に磁気検出素子6の出力を読み出す。磁気検出素子(ホール素子)の出力が始めてs(S極12を検出)となった際に、そのk個上流側のホール素子は必ずN極11を検出している。このことは、k個のホール素子のスパン(ホール素子のピッチをaとして、k×a)が1個の磁極の長さ以下であれば、成り立つ。そこで0クロッシングポイントは、出力が始めてsとなったホール素子とそのk個上流のホール素子との間にあることが分かる。走査の方向は−X側から+X側向きでも良く、また0クロッシングポイントの概略位置を推定できる場合、推定位置の上流あるいは下流の一方から他方へと走査すればよい。ステップ4で、このペアの間の3個の素子の出力、及び条件によってペアの外側の1個の素子の出力とを読み出し、出力の極性が(n,s)の順となる2素子、あるいは極性が(n,n,s,s)の順となる4素子等、適宜の個数の素子を抽出する。これらの素子の出力を(n-1,s+1)、あるいは(n-2,n-1,s+1,s+2)とする。また前記の2素子は、0クロッシングポイントに最近接した2素子である。
【0031】
ステップ5で、0クロッシングポイントの左側の素子の出力(n-1)と、右側の素子の出力(s+1)と、2素子の出力の和T=|n-1|+|s+1|とを求める。なお出力は起電力の絶対値である。0クロッシングポイントの位置をPとし、例えば出力がn-1のホール素子の位置をPn-1、ホール素子のピッチをaとすると、0クロッシングポイントの位置Pは
P=−|n-1|/(|n-1|+|s+1|)×a+Pn-1 で与えられる。ここで先頭の−は、
図1の左側を+Xと定めたためである。なおホール素子の位置はそのアドレスから判明し、P=+|s+1|/(|n-1|+|s+1|)×a+Ps+1 等としても良い。0クロッシングポイントの両側の隣接した2素子を用いると、位置を正確にかつ少ない演算量で検出できるが、それには限らない。例えば前記の例では、出力がn-2の素子と出力がs+1の素子等を用いても良い。また例えば4個の素子の出力を求める場合、4個の素子の出力に合致する直線を求め、この直線で出力が0となる点を0クロッシングポイントとしても良い。
【0032】
図5に0クロッシングポイントの付近での、ホール素子の出力を示す。0クロッシングポイントは磁石対での一対の磁極から対称な位置にあり、ホール素子アレイと磁石対との距離が変動し、磁束密度の強度分布が変動しても影響を受けない。また磁束密度は0クロッシングポイントの両側の位相が±30°程度の範囲でほぼ直線状に変化する。そして磁束密度が直線状に変化する範囲のホール素子、特に0クロッシングポイントに最近接した2個のホール素子、あるいは0クロッシングポイントに最近接の4個のホール素子等を抽出し、0クロッシングポイントの位置を求める。さらに、磁束密度の比を用いるので、磁束密度の強弱が変動し、またホール素子の起電力が周囲温度等により変動しても、影響は小さい。
【0033】
図6〜
図8にデータを示す。
図6は磁極表面からの距離による磁束密度の変化を示し、距離が大きすぎても小さすぎても、磁束密度の分布はsin波から外れてくる。ここで磁束密度が左側でn,右側でsとなる点は0クロッシングポイントのみである。そしてk個毎にホール素子の出力を抽出する場合、k個のホール素子の配列長さ、即ちaをホール素子のピッチとして、a×kがホール素子アレイの長手方向での1個の磁極の長さ以下であれば、0クロッシングポイントを見逃すことがない。なお磁石をほぼ隙間なく交互に繰り返して配置する場合も同様にk個毎にホール素子の出力を抽出する。その場合は、磁束密度がnからsへ変化することのみでなく、sからnへ変化することも検出できる。
【0034】
図7はホール起電力のオフセットを補正した際の誤差を、
図8はオフセットを補正しなかった際の誤差を示し、いずれも基準となる信頼性の高いセンサからの誤差を示す。なおいずれも、磁極とホール素子アレイとの間隔が5mmの位置で求めたデータにより、リニアリティを補正データした。オフセット補正により誤差は1/2〜1/3に減少した。
【0035】
図9に変形例の位置検出アルゴリズムを示し、
図4と同じステップは同じ符号で表す。
図4のステップ2〜5を実行する際に、適宜のタイミングで0クロッシングポイントの両側のホール素子のアドレスをレジスタに記憶する。次の位置の検出では、記憶したアドレスの対の間に0クロッシングポイントがあるか否かを確認し(ステップ7)、有ればステップ3の走査を省略でき、無ければステップ3の走査を実行する。このアルゴリズムは、前回の0クロッシングポイントから今回の0クロッシングポイントを推定するもので、推定の手法は適宜に変更できる。例えば0クロッシングポイントの左右各2素子等の範囲で0クロッシングポイントを探索しても良い。また
図1の状況で右側の磁石対10bが検出レンジに入り、元の磁石対10が検出レンジから外れると、ステップ7の次にステップ3を実行する。
【0036】
実施例では以下の効果が得られる。
1) k個毎のホール素子6のホール起電力を走査して、0クロッシングポイントの概略位置を求めるので、全てのホール素子5,6を走査するよりも時間を要しない。特にk個毎にホール素子の出力を走査し、始めてS極あるいはN極を検出するホール素子を抽出した時に走査を打ち切ると、処理時間をさらに短縮できる。
2) 出力の比を用いるため、コア部36で最も時間を要する除算は1回で足り、時間を要しない。
3) ホール素子の起電力のオフセットを補正するので、正確な位置検出ができる。
4) 0クロッシングポイントを検出するので、磁石列からの磁束密度がsin波状か三角波状か台形状か等の影響を受けない。
5) 出力の比を用いるので、磁石列から受ける磁束密度の強弱、ホール素子5,6の温度係数等の影響を小さくできる。
【0037】
実施例では、ホール素子5,6を用いたが、磁束密度の方向と磁束密度の強弱を検出でき、かつコイルではない、他のホール素子を用いても良い。実施例ではk=4の例を説明したが、k=2,6,8,12等でも良く、k個分のホール素子の配列長さが、磁石1個の長さ(ホール素子アレイの長手方向に沿った長さ)以下であることが好ましい。また0クロッシングポイントの左右各1素子の出力を用いたが、左右各2素子、あるいは左右各4素子等でも良い。検出の精度が低くても良い場合、補正テーブル24とリニアリティ補正部42は不要である。極端な高速性が要求される場合、0クロッシングポイントの推定位置付近のホール素子の出力のみをメモリ34へ書き込んでも良い。