JP2008185459A - 位置検出装置 - Google Patents

位置検出装置 Download PDF

Info

Publication number
JP2008185459A
JP2008185459A JP2007019275A JP2007019275A JP2008185459A JP 2008185459 A JP2008185459 A JP 2008185459A JP 2007019275 A JP2007019275 A JP 2007019275A JP 2007019275 A JP2007019275 A JP 2007019275A JP 2008185459 A JP2008185459 A JP 2008185459A
Authority
JP
Japan
Prior art keywords
calculation
coordinates
register
quadrant
angle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007019275A
Other languages
English (en)
Inventor
Ryuji Aono
野 竜 二 青
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shibaura Machine Co Ltd
Original Assignee
Toshiba Machine Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Machine Co Ltd filed Critical Toshiba Machine Co Ltd
Priority to JP2007019275A priority Critical patent/JP2008185459A/ja
Publication of JP2008185459A publication Critical patent/JP2008185459A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】小規模な演算回路で運動体の角度または位置を高精度に検出することができる位置検出回路を提供する。
【解決手段】位置検出装置は、正弦波信号を用いて運動体の位置を検出する位置検出装置であって、仮の角度および該仮の角度の三角関数の値を記憶するメモリと、運動体の現実の座標のx1またはy1の一方と、三角関数の値に基いてその他方の桁をシフトした結果値との加減算によって表された第1の計算座標を第1の演算として実行し、該第1の計算座標を用いて第1の演算を繰り返す第1の演算部と、基準座標のy0またはx0の一方と、三角関数の値に基いてその他方の桁をシフトした結果値との加減算によって表された第2の計算座標を第2の演算として実行し、該第2の計算座標を用いて第2の演算を繰り返す第2の演算部とを備え、第1および第2の演算部は第1および第2の計算座標とを接近させるように演算する。
【選択図】図1

Description

本発明は、位置検出装置に関する。
一般に、機械の高精度な運動制御のために、ロータリエンコーダが回転運動を行う運動体(例えば、サーボモータ)の位置検出器として用いられ、リニアスケールが直線往復運動を行う運動体の位置検出器として用いられる。これらの位置検出器の方式として、角度あるいは位置に応じたアナログ正弦波信号から角度あるいは位置を演算している。一般に、アナログ正弦波信号は、互いに90°位相のずれた2つの信号(cos信号、sin信号)である。
従来、正弦波信号から角度あるいは位置を得るために、sin信号をcos信号で除算することでtan−1θの値を得て、tan−1θの表を参照することで角度θ、あるいは、θに対応した位置を得ていた。この表は、通常、コンピュータシステムのメモリやハードウェアのROM(Read Only Memory)に予め格納されている。
杉本 英彦等"ACサーボシステムの理論と設計の実際"総合電子出版社 (P142〜P149)
近年、位置検出のために、LSI(Large-Scale Integrated circuit)等のデジタルロジック回路で演算を実現することが考えられている。
しかし、アークタンジェント(tan−1)は、sin/cosという割り算を必要とする。アークタンジェントの計算には次の2つの問題点がある。その1つの問題点は、単位円上のcos信号が0に近づくと、タンジェント(sin÷cos)の値が絶対値が非常に大きくなることである。その結果、アークタンジェントの結果の誤差が非常に大きくなってしまう。
もう1つの問題点は、アークタンジェントを求めるために割り算(sin÷cos)が必要になることである。除算器は、デジタル回路で実現することが困難な回路であり、実現するためには加減算に比べてかなり大規模なデジタル回路を用いる必要がある。尚、乗算器も、デジタル回路で実現するためには加減算に比べてかなり大規模なデジタル回路を用いる必要がある。従って、除算および乗算をデジタルロジックで実現するためには、多くの回路素子を必要とするため、回路規模が大きくなり、コスト高となる。よって、除算や乗算を安価なFPGA(Field Programmable Gate Array)等で実現することは困難であった。
さらに、tan−1θから精度良く角度あるいは位置を得るためには、その精度に見合う分だけの詳細な変換表が必要である。よって、高精度に角度あるいは位置を検出しようとすると、大規模な変換表が必要であった。
そこで、本発明の目的は、小規模な演算回路で運動体の角度または位置を高精度に検出することができる位置検出回路を提供することである。
本発明に係る実施形態に従った位置検出装置は、回転運動または往復運動を行う運動体の位置を示す正弦波信号を周期的にサンプリングし、前記正弦波信号を用いて前記運動体の位置を検出する位置検出装置であって、
予め設定された複数の仮の角度、および、該複数の仮の角度のそれぞれに対する三角関数の値を記憶するメモリと、前記サンプリングで得られた運動体の現実の座標(x1、y1)のx1またはy1の一方と、前記三角関数の値に基いてx1またはy1の他方の桁をシフトした結果値との加減算によって表された第1の計算座標を第1の演算として実行し、該第1の計算座標を前記(x1、y1)として前記第1の演算を繰り返す第1の演算部と、前記現実の座標に対して基準となる基準座標(x0、y0)のy0またはx0の一方と、前記三角関数の値に基いてy0またはx0の他方の桁をシフトした結果値との加減算によって表された第2の計算座標を第2の演算として実行し、該第2の計算座標を前記(x0、y0)として前記第2の演算を繰り返す第2の演算部と、前記第1の演算または前記第2の演算で用いられた複数の前記三角関数に対応する複数の前記仮の角度を積算する第3の演算部とを備え、前記第1および前記第2の演算部は、前記現実の座標と前記基準座標とを互いに接近させるように演算し、かつ、前記第1の計算座標と前記第2の計算座標とを互いに接近させるように演算する。
前記第1および前記第2の演算部は、前記仮の角度を小さくしつつ、前記第1および前記第2の計算座標を収束させるように前記演算Aおよび前記演算Bをそれぞれ繰り返し、
前記第3の演算部は、前記第1および前記第2の計算座標が収束するまで、あるいは、次のサンプリングが実行されるまで、前記仮の角度を積算する。
前記メモリは、前記仮の角度としてΦ(Φ>Φ>Φ>・・・>Φ>・・・Φ)(nは自然数)、前記三角関数の値としてtanΦを記憶し、
前記第1または前記第2の計算座標を(xxc,yyc)とすると、
Figure 2008185459
(但し、Φ=tan−1−i(i=0、1、2・・・n)であり、i=0のとき、前記第1の演算部においては、xxci−1=x1、yyci−1=y1であり、前記第2の演算部においては、xxci−1=x0、yyci−1=y0である)
前記第1および前記第2の演算部は、i=0、1、2・・・nの順に式1または式2を演算し、
前記第3の演算部は、前記仮の角度をiごとに積算する。
前記第1および前記第2の演算部は、i=0、1、2・・・nの順に式1および式2を交互または相補に演算し、かつ、前記第1の演算部が式1を演算するときには、前記第2の演算部は式2を演算し、前記第1の演算部が式2を演算するときには、前記第2の演算部は式1を演算する。
前記位置検出装置は、前記第1の演算が実行されるごとに、前記第1の計算座標を格納する第1のレジスタと、前記第2の演算が実行されるごとに、前記第2の計算座標を格納する第2のレジスタと、前記第3の演算部が積算するごとに、その積算された前記仮の角度を格納する第3のレジスタと、前記現実の座標をサンプリングするごとに、前記第3のレジスタに格納された角度を保持する第4のレジスタとをさらに備えている。
前記位置検出装置は、前記現実の座標の符号に基づいて前記現実の座標が存在する象限を判別する象限判別部と、前記現実の座標が第1象限にある場合、0(rad)を、前記現実の座標が第2象限にある場合、π/2(rad)を、前記現実の座標が第3象限にある場合、π(rad)を、前記現実の座標が第4象限にある場合、(3/2)π(rad)を、前記第4のレジスタに保持された角度またはこの角度の2倍に加算する第4の演算部とをさらに備えている。
前記位置検出装置は、前記現実の座標(x1、y1)のx1またはy1のいずれか一方の符号が一定である期間の間にサンプリングされた複数の前記現実の座標(x1、y1)のうちx1の最大値xmax、x1の最小値xmin、y1の最大値ymaxおよびy1の最小値yminを保持するピーク・ボトムレジスタをさらに備え、
前記象限判別部は、前記xmax、前記xmin、前記ymaxまたは前記yminのいずれかとゼロとを前記基準座標として選択する。
前記位置検出装置は、前記ピーク・ボトムレジスタと前記象限判別部との間に設けられ、カットオフ周波数が前記正弦波信号の周波数よりも低い低域通過フィルタをさらに備えている。
本発明に係る実施形態に従った位置検出装置は、回転運動または往復運動を行う運動体の位置を示す正弦波信号を周期的にサンプリングし、前記正弦波信号を用いて前記運動体の位置を検出する位置検出装置であって、
予め設定された複数の仮の角度Φ(Φ>Φ>Φ>・・・>Φ>・・・Φ)(nは自然数)、および、該複数の仮の角度のそれぞれに対する三角関数の値tanΦを記憶するメモリと、前記サンプリングで得られた運動体の現実の座標(x1,y1)と前記三角関数の値tanΦに基いて式1または式2を繰り返し演算する第1の演算部と、前記現実の座標に対して基準となる基準座標(x0、y0)と前記三角関数の値tanΦに基いて式2または式1を繰り返し演算する第2の演算部と、前記第1または前記第2の演算部における演算で用いられた前記仮の角度Φを積算する第3の演算部とを備え、
Figure 2008185459
(但し、Φ=tan−1−i(i=0、1、2・・・n)であり、i=0のとき、前記第1の演算部においては、xxci−1=x1、yyci−1=y1であり、前記第2の演算部においては、xxci−1=x0、yyci−1=y0である)
前記第1および前記第2の演算部は、i=0、1、2・・・nの順に式1または式2を演算し、前記第3の演算部は、前記仮の角度をiごとに積算する。
前記第1および前記第2の演算部は、i=0、1、2・・・nの順に式1および式2を交互または相補に演算し、かつ、前記第1の演算部が式1を演算するときには、前記第2の演算部は式2を演算し、前記第1の演算部が式2を演算するときには、前記第2の演算部は式1を演算する。
前記位置検出装置は、前記第1の演算が実行されるごとに、前記第1の計算座標を格納する第1のレジスタと、前記第2の演算が実行されるごとに、前記第2の計算座標を格納する第2のレジスタと、前記第3の演算部が積算するごとに、前記仮の角度を格納する第3のレジスタと、前記現実の座標をサンプリングするごとに、前記第3のレジスタに格納された角度を保持する第4のレジスタとを備えている。
前記位置検出装置は、前記現実の座標の符号の変化に基づいて前記運動体が存在する象限を判別する象限判別部と、前記現実の座標が第1象限にある場合、0(rad)を、前記現実の座標が第2象限にある場合、π/2(rad)を、前記現実の座標が第3象限にある場合、π(rad)を、前記現実の座標が第4象限にある場合、(3/2)π(rad)を、前記第4のレジスタに保持された角度の2倍に加算する第4の演算部とをさらに備えている。
前記位置検出装置は、前記現実の座標(x1、y1)のx1またはy1のいずれか一方の符号が一定である期間の間にサンプリングされた複数の前記現実の座標(x1、y1)のうちx1の最大値xmax、x1の最小値xmin、y1の最大値ymaxおよびy1の最小値yminを保持するピーク・ボトムレジスタをさらに備え、
前記象限判別部は、前記xmax、前記xmin、前記ymaxまたは前記yminのいずれかとゼロとを前記基準座標として選択する。
前記位置検出装置は、前記ピーク・ボトムレジスタと前記象限判別部との間に設けられ、カットオフ周波数が前記正弦波信号の周波数よりも低い低域通過フィルタをさらに備えている。
本発明による位置検出回路は、小規模な演算回路で運動体の角度または位置を高精度に検出することができる。
以下、図面を参照して本発明に係る実施形態を説明する。本実施形態は、本発明を限定するものではない。
図1は、本発明に係る実施形態に従った位置検出装置100のブロック図である。位置検出装置100は、ロータリエンコーダまたはリニアスケール10と、A/Dコンバータ40と、ピーク・ボトム検出部60と、MO−CORDIC(Mutual Oncoming COordinate Rotation Digital Computer)演算部(以下、演算部)50とを備えている。演算部50は、汎用CPUまたはカスタムLSIである。演算部50は、例えば、FPGAでよい。位置検出装置100は、例えば、回転運動または往復運動を行う運動体を備えた機械に配設されてもよい。運動体は、例えば、工作機械に配備されたサーボモータのロータまたは往復運動するアーム等である。
ロータリエンコーダまたはリニアスケール10は、回転運動または往復運動を行う運動体の位置を示すアナログ正弦波信号(cos波,sin波)を出力する。運動体は、等速運動を行うとは限らないので、sin波,cos波の周波数は変化する。sin波,cos波は、直交位相の正弦波の値である。A/Dコンバータ40は、ロータリエンコーダまたはリニアスケール10からのsin波およびcos波を周期的にサンプリングし、これをデジタル信号へ変換する。これにより、デジタル化された座標(cos,sin)の信号が生成される。
演算部50は、A/Dコンバータ40からのsin信号およびcos信号を受け、運動体の角度または位置を算出する。ピーク・ボトム検出部60は、A/Dコンバータ40からのsin信号およびcos信号を受け、sin信号およびcos信号のそれぞれの最大値および最小値を検出する。これらの最大値および最小値は、演算部50において基準座標の一部として用いられる。
演算部50およびピーク・ボトム検出部60は、FPGAでよいが、FPGAに代えて、他の任意のLSIを用いることができる。演算部50およびピーク・ボトム検出部60をカスタムLSI上でロジック回路として実現した場合、同じ処理を繰り返す反復処理を短時間で行うことができる。一方で、演算部50およびピーク・ボトム検出部60は、汎用CPUおよびソフトウェアで実現してもよい。演算部50およびピーク・ボトム検出部60を汎用CPUおよびソフトウェアで実現した場合、プログラムの変更で様々な処理を行うことができる。
図2は、現実の座標(x1、y1)および基準座標(x0、y0)の関係を示す概念図である。図2を参照して、本実施形態による位置検出装置100の動作の概略を説明する。尚、本実施形態では、sin波およびcos波の各振幅はほぼ等しいものとする。
現実の座標(x1、y1)は、A/Dコンバータ40においてサンプリングされた円周上の座標であり、運動体の現実の位置を示す。基準座標(x0、y0)は、ピーク・ボトム検出部60で検出されたsin信号およびcos信号のそれぞれの最大値xmax、ymax、最小値xmin、yminのいずれかとゼロとによって示された座標である。即ち、基準座標(x0、y0)は、(xmax、0)、(0、ymax)、(xmin、0)または(0、ymin)のいずれかである。
ピーク・ボトム検出回路60は、xmax、ymax、xminおよびyminを検出し、これらを演算部50に送信する。演算部50は、現実の座標の符号に基づいて運動体が存在する象限(第1〜第4象限)を判別する。例えば、x1およびy1がともに正数であれば、現実の座標は第1象限にある。x1が負数であり、y1が正数であれば、現実の座標は第2象限にある。x1およびy1がともに負数であれば、現実の座標は第3象限にある。x1が正数であり、y1が負数であれば、現実の座標は第4象限にある。
演算部50は、運動体が存在する象限に応じて基準座標を(xmax、0)、(0、ymax)、(xmin、0)および(0、ymin)の中から選択する。例えば、図2に示すように、現実の座標が第1象限にある場合、演算部50は、(xmax、0)を基準座標として選択する。演算部50は、基準座標(xmax、0)から現実の座標までの角度θを求める。現実の座標が第2象限にある場合、演算部50は、(0、ymax)を基準座標として選択する。演算部50は、基準座標(0、ymax)から現実の座標までの角度θを求める。現実の座標が第3象限にある場合、演算部50は、(xmin、0)を基準座標として選択する。演算部50は、基準座標(xmin、0)から現実の座標までの角度θを求める。現実の座標が第4象限にある場合、演算部50は、(0、ymin)を基準座標として選択する。演算部50は、基準座標(0、ymin)から現実の座標までの角度θを求める。角度θは、0≦θ≦π/2である。これにより、基準座標から現実の座標までの角度(偏角)θがCORDICアルゴリズムを用いて求めることができる。
さらに、演算部50は、現実の座標が存在する象限に応じて、0(rad)、π/2(rad)または(3/2)π(rad)を角度θに加算する。例えば、現実の座標が第1象限にある場合、演算部50は、0(rad)を角度θに加算する。現実の座標が第2象限にある場合、演算部50は、π/2(rad)を角度θに加算する。現実の座標が第3象限にある場合、演算部50は、π(rad)を角度θに加算する。現実の座標が第4象限にある場合、演算部50は、(3/2)π(rad)を角度θに加算する。これにより、基準座標(xmax、0)から現実の座標までの絶対角度AA(0≦AA≦2π)が求められる。角度AAが運動体の位置を表す。
図3は、ピーク・ボトム検出部60の構成を示すブロック図である。ピーク・ボトム検出部60は、基準検出回路101と、符号変化レジスタ102〜104と、遷移検出回路105と、ピーク・ボトム検出回路PDymax、PDymin、PDxmax、PDxminとを備えている。
基準検出回路101は、現実の座標(x1、y1)=(cos信号、sin信号)を受け取る。基準検出回路101は、運動体が4つの基準座標を通過したことを検出する。基準座標の通過は、sin信号およびcos信号の符号の変化によって検出することができる。符号変化レジスタ102〜104は、運動体が基準座標を通過したときに変化する実際の座標(x1、y1)の符号の変化を保持する。3つの符号変化レジスタ102〜104は、実際の座標(x1、y1)の符号の過去3回の履歴を保持することができる。
遷移検出回路105は、符号変化レジスタ102〜104に保持された実際の座標(x1、y1)の符号の遷移に基づいて、ピーク・ボトム検出回路へ指令を送る。例えば、運動体の現実の座標が0、π/2、πの順に回転した場合、符号変化レジスタ102〜104は、(x1の符号、y1の符号)としてそれぞれ(+、+)、(−、+)、(−、−)のデータを保持する。遷移検出回路105は、符号変化レジスタ102〜104のデータによって、現実の座標が第1象限、第2象限、第3象限へと移動していることを識別することができる。運動体の現実の座標がπ/2、π、(3/2)πの順に回転した場合、符号変化レジスタ102〜104は、それぞれ(−、+)、(−、−)、(+、−)のデータを保持する。遷移検出回路105は、符号変化レジスタ102〜104のデータによって、現実の座標が第2象限、第3象限、第4象限へと移動していることを識別することができる。運動体の現実の座標がπ、(3/2)π、0の順に回転した場合、符号変化レジスタ102〜104は、それぞれ(−、−)、(+、−)、(+、+)のデータを保持する。遷移検出回路105は、符号変化レジスタ102〜104のデータによって、現実の座標が第3象限、第4象限、第1象限へと移動していることを識別することができる。運動体の現実の座標が(3/2)π、0、π/2の順に回転した場合、符号変化レジスタ102〜104は、それぞれ(+、−)、(+、+)、(−、+)のデータを保持する。遷移検出回路105は、符号変化レジスタ102〜104のデータによって、現実の座標が第4象限、第1象限、第2象限へと移動していることを識別することができる。尚、上記具体例は、運動体が反時計回りCCWに回転している場合の具体例である。
運動体が時計回りCWに回転している場合も、遷移検出回路105は、運動体の現実の座標の遷移を検出することができる。即ち、運動体の現実の座標がπ、π/2、0の順に回転した場合、符号変化レジスタ102〜104は、それぞれ(−、+)、(+、+)、(+、−)のデータを保持する。遷移検出回路105は、符号変化レジスタ102〜104のデータによって、現実の座標が第2象限、第1象限、第4象限へと移動していることを識別することができる。運動体の現実の座標が(3/2)π、π、π/2の順に回転した場合、符号変化レジスタ102〜104は、それぞれ(−、−)、(−、+)、(+、+)のデータを保持する。遷移検出回路105は、符号変化レジスタ102〜104のデータによって、現実の座標が第3象限、第2象限、第1象限へと移動していることを識別することができる。運動体の現実の座標が0、(3/2)π、πの順に回転した場合、符号変化レジスタ102〜104は、それぞれ(+、−)、(−、−)(−、+)のデータを保持する。遷移検出回路105は、符号変化レジスタ102〜104のデータによって、現実の座標が第4象限、第3象限、第2象限へと移動していることを識別することができる。運動体の現実の座標がπ/2、0、(3/2)πの順に回転した場合、符号変化レジスタ102〜104は、それぞれ(+、+)、(+、−)(−、−)のデータを保持する。遷移検出回路105は、符号変化レジスタ102〜104のデータによって、現実の座標が第1象限、第4象限、第3象限へと移動していることを識別することができる。
ピーク・ボトム検出回路は、現実の座標(x1、y1)のx1またはy1のいずれか一方の符号が一定である期間の間にサンプリングされた複数の現実の座標(x1、y1)のうちx1の最大値xmax、x1の最小値xmin、y1の最大値ymaxおよびy1の最小値yminを保持するように構成されている。
例えば、ピーク・ボトム検出回路PDymaxは、現実の座標(x1、y1)のy1の符号が正(+)である期間にサンプリングされた複数の現実の座標のうちy1の最大値ymaxを保持するように構成されている。より詳細には、ピーク・ボトム検出回路PDymaxは、y1の仮の最大値を保持する仮レジスタPR1と、仮レジスタのデータと現実のy座標y1とを比較する比較器COMP1と、最大値ymaxを保持するピーク・ボトムレジスタPKR1と、ピーク・ボトムレジスタPKR1と演算部50の象限判別部(図5)との間に設けられた低域通過フィルタLPF1とを備えている。低域通過フィルタLPF1は、そのカットオフ周波数が正弦波信号の周波数よりも低く、ピーク・ボトムレジスタからの最大値ymaxを安定化させる。
仮レジスタPR1は、最初にサンプリングされた現実の座標のy1を保持する。比較器COMP1は、次にサンプリングされたy1と仮レジスタPR1に格納されたy1とを比較し、より大きい値を仮レジスタPR1へ戻す。これを繰り返すことによって、仮レジスタPR1に格納された値は、サンプリングごとに更新され、最大値ymaxに次第に近づいてゆく。
ピーク・ボトムレジスタPKR1は、遷移検出回路105からの保持指令によって仮レジスタPR1の値を保持する。この保持指令は、y1の符号が正(+)である期間の終了時に出力される。この時、運動体の1回転または1往復において、仮レジスタPR1に格納された値が最大となっているからである。ピーク・ボトムレジスタPKR1に格納された値は、運動体が1回転または1往復するごとに更新される。サンプリングは或る一定期間を置いて周期的に実行されるため、ピーク・ボトムレジスタPKR1に格納された最大値ymaxは、sin波のほぼ頂点を示すが、必ずしも正確にその頂点の値を示すものではない。よって、ピーク・ボトムレジスタPKR1に格納された最大値ymaxは、運動体の回転または往復ごとに幾分変化する。そこで、ピーク・ボトムレジスタPKR1に格納された値を低域通過フィルタLPF1に通すことによって、ピーク・ボトム検出部60から出力される最大値ymaxを安定化させる。
仮レジスタPR1は、遷移検出回路105からのクリア指令によってクリア(リセット)される。クリア指令は、保持指令と同時、あるいは、その直後に出力される。これにより、ピーク・ボトムレジスタPK1が仮レジスタPR1の値を保持した後に、仮レジスタPR1をクリアすることができる。
ピーク・ボトム検出回路PDxmaxは、x1の符号が正(+)である期間にサンプリングされた複数の現実の座標のうちx1の最大値xmaxを保持するように構成されている。より詳細には、ピーク・ボトム検出回路PDxmaxは、x1の仮の最大値を保持する仮レジスタPR4と、仮レジスタのデータと現実のx座標x1とを比較する比較器COMP4と、最大値xmaxを保持するピーク・ボトムレジスタPKR4と、ピーク・ボトムレジスタPKR4と演算部50の象限判別部(図5)との間に設けられた低域通過フィルタLPF4とを備えている。低域通過フィルタLPF4は、そのカットオフ周波数が正弦波信号の周波数よりも低く、ピーク・ボトムレジスタからの最大値xmaxを安定化させる。ピーク・ボトム検出回路PDxmaxの動作は、ピーク・ボトム検出回路PDymaxの動作から容易に推測できるので、ここでは省略する。ただし、ピーク・ボトム検出回路PDxmaxは、保持指令およびクリア指令のタイミングがピーク・ボトム検出回路PDymaxのそれらと異なる。これについては、図4を参照して後述する。
ピーク・ボトム検出回路PDyminは、y1の符号が負(−)である期間にサンプリングされた複数の現実の座標のうちy1の最小値yminを保持するように構成されている。より詳細には、ピーク・ボトム検出回路PDyminは、y1の仮の最小値を保持する仮レジスタPR2と、仮レジスタのデータと現実のy座標y1とを比較する比較器COMP2と、最小値yminを保持するピーク・ボトムレジスタPKR2と、ピーク・ボトムレジスタPKR2と演算部50の象限判別部(図5)との間に設けられた低域通過フィルタLPF2とを備えている。低域通過フィルタLPF2は、そのカットオフ周波数が正弦波信号の周波数よりも低く、ピーク・ボトムレジスタからの最小値yminを安定化させる。
仮レジスタPR2は、最初にサンプリングされた現実の座標のy1を保持する。比較器COMP2は、次にサンプリングされたy1と仮レジスタPR2に格納されたy1とを比較し、より小さい値を仮レジスタPR2へ戻す。これを繰り返すことによって、仮レジスタPR2に格納された値は、サンプリングごとに更新され、最小値yminに次第に近づいてゆく。
ピーク・ボトム検出回路PDyminのその他の動作は、ピーク・ボトム検出回路PDymaxの動作から容易に推測できるので、ここでは省略する。ただし、ピーク・ボトム検出回路PDyminは、保持指令およびクリア指令のタイミングがピーク・ボトム検出回路PDymaxのそれらと異なる。これについては、図4を参照して後述する。
ピーク・ボトム検出回路PDxminは、x1の符号が負(−)である期間にサンプリングされた複数の現実の座標のうちx1の最小値xminを保持するように構成されている。より詳細には、ピーク・ボトム検出回路PDxminは、x1の仮の最小値を保持する仮レジスタPR3と、仮レジスタのデータと現実のx座標x1とを比較する比較器COMP3と、最小値xminを保持するピーク・ボトムレジスタPKR3と、ピーク・ボトムレジスタPKR3と演算部50の象限判別部(図5)との間に設けられた低域通過フィルタLPF3とを備えている。低域通過フィルタLPF3は、そのカットオフ周波数が正弦波信号の周波数よりも低く、ピーク・ボトムレジスタからの最小値xminを安定化させる。
ピーク・ボトム検出回路PDxminのその他の動作は、ピーク・ボトム検出回路PDyminの動作から容易に推測できるので、ここでは省略する。ただし、ピーク・ボトム検出回路PDxminは、保持指令およびクリア指令のタイミングがピーク・ボトム検出回路PDyminのそれらと異なる。これについては、図4を参照して後述する。
図4は、現実の座標(x1、y1)の遷移に関して、保持指令の対象レジスタおよびクリア指令の対象レジスタを示した表である。現実の座標が0、π/2、πの順に遷移する場合、あるいは、π、π/2、0の順に遷移する場合、y1の符号は正(+)である。よって、現実の座標が遷移した後、遷移検出回路105は、ピーク・ボトムレジスタPKR1へ保持指令を出力する。ピーク・ボトムレジスタPKR1は、保持指令を受けて、仮レジスタPR1に格納された値をymaxとして保持する。この時、あるいは、この直後、遷移検出回路105は、仮レジスタPR1へクリア指令を出力する。これにより、仮レジスタPR1に格納された値はリセットされる。
現実の座標がπ/2、π、(3/2)πの順に遷移する場合、あるいは、(3/2)π、π、π/2の順に遷移する場合、x1の符号が負(−)である。よって、現実の座標が遷移した後、遷移検出回路105は、ピーク・ボトムレジスタPKR3へ保持指令を出力する。ピーク・ボトムレジスタPKR3は、保持指令を受けて、仮レジスタPR3に格納された値をxminとして保持する。また、この時、あるいは、この直後、遷移検出回路105は、仮レジスタPR3へクリア指令を出力する。これにより、仮レジスタPR3に格納された値はリセットされる。
現実の座標がπ、(3/2)π、0の順に遷移する場合、あるいは、0、(3/2)π、πの順に遷移する場合、y1の符号が負(−)である。よって、現実の座標が遷移した後、遷移検出回路105は、ピーク・ボトムレジスタPKR2へ保持指令を出力する。ピーク・ボトムレジスタPKR2は、保持指令を受けて、仮レジスタPR2に格納された値をyminとして保持する。この時、あるいは、この直後、遷移検出回路105は、仮レジスタPR2へクリア指令を出力する。これにより、仮レジスタPR2に格納された値はリセットされる。
現実の座標が(3/2)π、0、π/2の順に遷移する場合、あるいは、π/2、0、(3/2)πの順に遷移する場合、x1の符号が正(+)である。よって、現実の座標が遷移した後、遷移検出回路105は、ピーク・ボトムレジスタPKR4へ保持指令を出力する。ピーク・ボトムレジスタPKR4は、保持指令を受けて、仮レジスタPR4に格納された値をxmaxとして保持する。この時、あるいは、この直後、遷移検出回路105は、仮レジスタPR4へクリア指令を出力する。これにより、仮レジスタPR4に格納された値はリセットされる。
図5は、MO−CORDIC演算部50の構成を示すブロック図である。演算部50は、第1の演算部としてのCORDICローテーション(以下、ローテータともいう)51と、第2の演算部としてのCORDICローテーション58と、メモリ52、59と、回転方向判別部53と、エリア判別部54、55と、選択部56、57と、第1および第2のレジスタR11、R21と、第3のレジスタとしての回転角度レジスタR31と、第4のレジスタとしての角度保持レジスタR41と、第3の演算部としての加算器80と、現象判別部95と、第4の演算部としての角度加算器90とを備えている。
図6は、基準座標(x0、y0)および現実の座標(x1、y1)の位置関係を示す図である。現実の座標は、図6に示すように基準座標(x0、y0)を基準としてθだけ運動体を移動させたときの現実の座標(cosθ,sinθ)である。図6の紙面において、運動体はCCW(Counter Clock Wise)方向に回転している。尚、θの単位は、rad(ラジアン)である。
図5および図6を参照し、運動体が基準座標から現実の座標まで回転するときの角度θを、sin信号およびcos信号から算出する過程を説明する。尚、往復運動を行う運動体の位置は、角度から簡単に算出することができるので、ここでは、角度の算出のみを説明する。
本実施形態では、角度を算出するためにMO−CORDICアルゴリズムが利用される。MO−CORDICアルゴリズムには、ベクタリングモードおよびローテーションモードがある。本実施形態では、ローテーションモードを利用する。MO−CORDICアルゴリズムは、演算部50内に内蔵されており、本実施形態では、カスタムLSI等のロジック回路によって実現されている。
理解を容易にするために、運動体が1回転すると、ロータリエンコーダ10が1サイクルのsin波およびcos波を出力するものとする。位置検出装置100は、1サイクルの間に周期的に運動体の座標をサンプリングする。位置検出装置100は、或るサンプリングでロータの2次元座標(ユークリッド座標)(x1,y1)を獲得する。x1はsin値であり、y1はcos値である。位置検出装置100は、現実の座標(x1,y1)および基準座標(x0,y0)に基づいて角度θをCORDICアルゴリズムによって計算する。基準座標(x0,y0)は、絶対的な座標として判明しているので、角度θが判明することによって、運動体の位置が判明する。
まず、現象判別部95が現実の座標(x1,y1)の符号に基づいて現実の座標が存在する象限を判別する。例えば、(x1の符号、y1の符号)が(+、+)である場合、現実の座標は第1象限にあることが分かる。(x1の符号、y1の符号)が(−、+)である場合、現実の座標は第2象限にあることが分かる。(x1の符号、y1の符号)が(−、−)である場合、現実の座標は第3象限にあることが分かる。(x1の符号、y1の符号)が(+、−)である場合、現実の座標は第4象限にあることが分かる。
現象判別部95は、現実の座標が存在する象限に基づいて、xmax、xmin、ymaxまたはyminのいずれかとゼロとを基準座標として選択する。例えば、現実の座標が第1象限にある場合、現象判別部95は、(xmax、0)を基準座標として選択する。現実の座標が第2象限にある場合、現象判別部95は、(0、ymax)を基準座標として選択する。現実の座標が第3象限にある場合、現象判別部95は、(xmin、0)を基準座標として選択する。現実の座標が第4象限にある場合、現象判別部95は、(0、ymin)を基準座標として選択する。これにより、角度θは、常にπ/2(rad)以下となり、1つのtanθの絶対値に対して1つの角度θが対応するので、CORDICアルゴリズムの適用が容易となる。
本実施形態では、図6に示すように、現実の座標(x1、y1)が第1象限に存在するので、(xmax、0)が基準座標として選択されている。
メモリ52は、予め設定された複数の仮の角度Φ〜Φ(Φ>Φ>Φ>・・・Φ)(nは自然数)、および、該複数の仮の角度のそれぞれに対する三角関数の値tanΦ〜tanΦを記憶している。位置検出装置100の初期状態において、第1および第2のレジスタR11、R21は特定値を格納していない。第3のレジスタR31は、ゼロである。尚、第3のレジスタR31は、サンプリングごとにゼロにリセットされる。
選択部56は、最初に現実の座標(x1,y1)を選択する。ローテータ51は、現実の座標(x1,y1)=(cosθ,sinθ)を受け取り、この現実の座標を演算して第1の計算座標を算出する。ローテータ51は、現実の座標(cosθ,sinθ)、および、メモリ52からの三角関数の値tanΦを用いて第1の計算座標(xxc,yyc)を計算する。一方、選択部57は、最初に、象限判別部95で選択された基準座標(x0,y0)を選択する。ローテータ58は、基準座標(x0,y0)=(xmax、0)を受け取り、基準座標(xmax、0)、および、メモリ59からの三角関数の値tanΦを用いて第2の計算座標(xxc,yyc)を計算する。ローテータ58は、この基準座標を演算して第2の計算座標を算出する。
ローテータ51および58の具体的な演算内容に関しては後述する。尚、ローテータ51および58は、ともに後述の式1および式2を演算するので、第1および第2の計算座標は、(xxc,yyc)で表現されている。しかし、第1の計算座標および第2の計算座標は、収束するまでは、互いに異なる座標である。iは、ローテータ51、58が既に実行した演算回数に等しい。
第1のレジスタR11は、第1の計算座標(xxc,yyc)を格納する。第2のレジスタR21は、第2の計算座標(xxc,yyc)を格納する。その後、選択部56および57は、次の周期のサンプリングが行われるまで、それぞれ第1および第2のレジスタR11およびR21を選択する。ローテータ51および58は、それぞれ第1および第2のレジスタR11およびR21に格納された座標と、三角関数の値tanΦとを用いて同様の計算を繰り返す。それらの計算結果は、第1の計算座標(xxc,yyc)および第2の計算座標(xxc,yyc)として、それぞれ第1および第2のレジスタR11およびR21に上書きされる。即ち、ローテータ51および58の演算が実行されるごとに、第1のレジスタR11は第1の計算座標を格納し、第2のレジスタR21は第2の計算座標を格納する。このように、ローテータ51および58は、三角関数の値tanΦ、tanΦ、tanΦ、・・・tanΦを順に用いてそれぞれ第1の計算座標および第2の計算座標を繰り返し計算する。i=0、1、2・・・に対応する各演算において、ローテータ51および58は、第1の計算座標および第2の計算座標を互いに接近させるように演算する。これにより、第1の計算座標および第2の計算座標は、ローテータ51および58による計算ごとに、現実の座標と基準座標と間の中間座標(cos(θ/2),sin(θ/2))へ収束していく。尚、最初の演算では、ローテータ51および58は、現実の座標と基準座標とを互いに接近させるように演算する。
ローテータ51の演算で用いられた三角関数の値tanΦに対応する仮の角度Φは、加算器80へ送られ、回転角度レジスタR31に格納されたデータに積算される。加算器80は、ローテータ51の演算ごとに、仮の角度ΦをレジスタR31のデータに積算する。レジスタR31は、加算器80の積算ごとに、その積算の結果を保持する。より詳細には、加算器80は、回転角度レジスタR31に格納されている仮の角度+Φi−1または−Φi−1に仮の角度−Φまたは+Φを加算し、その加算結果を回転角度レジスタR31へ戻す。このように、加算器80は、ローテータ51の演算ごとに仮の角度±Φ、±Φ、±Φ、・・・±Φを積算し、回転角度レジスタR31は、加算器80の積算ごとに、その積算された仮の角度を保持する。ここで、積算とは、前回の演算結果に対して加算または減算をさらに繰り返して演算することである。例えば、積算された仮の角度は、Φ−Φ+Φ−Φ+・・・のように表すことができる。仮の角度Φが収束したときに、回転角度レジスタR31に格納された角度は、基準座標と現実の座標との中間座標の角度θ/2となる。角度θ/2またはθは、角度保持レジスタR41に格納される。角度θ/2またはθは、現実の座標のサンプリングごとに変化するので、角度保持レジスタR41の角度データは、現実の座標のサンプリングごとに更新される。
実際の運動体の角度θは、角度データθ/2を2倍にすることによって求め得る。データを2倍にすることは、デジタル値を1ビットだけ左シフトすれば足りる。左シフトとは、或る数値がより大きい値になる方向へ桁をシフトさせることである。従って、このとき乗算器は不要である。この演算は、加算器80、回転角度レジスタR31、角度保持レジスタR41または角度加算器90のいずれが行ってもよい。
角度加算器90は、現実の座標が存在する象限に基づいて、0、π/2、π、(3/2)πradを角度保持レジスタR41に格納された角度θまたは角度(θ/2)*2(=θ)に加算する。より詳細には、現実の座標が第1象限にある場合、角度加算器90は、0radを角度θに加算する。現実の座標が第2象限にある場合、角度加算器90は、π/2radを角度θに加算する。現実の座標が第3象限にある場合、角度加算器90は、πradを角度θに加算する。現実の座標が第4象限にある場合、角度加算器90は、(3/2)πradを角度θに加算する。これにより、現実の座標の絶対角度AA(0≦AA≦2π)が判明する。尚、本実施形態では、絶対的な角度AAの基準は、(xmax、0)としている。
尚、加算器80は、ローテータ58から中間座標(cos(θ/2),sin(θ/2))を獲得してもよい。第1の計算座標および第2の計算座標は、同一中間座標へ収束するからである。
エリア判別部54は、現実の座標が属する領域または第1のレジスタR11に格納された第1の計算座標が属する領域のいずれか一方を判別する。即ち、エリア判別部54は、選択部56により選択された座標が属する領域を判別する。エリア判別部55は、基準座標が属する領域または第2のレジスタR21に格納された第2の計算座標が属する領域のいずれか一方を判別する。即ち、エリア判別部55は、選択部57により選択された座標が属する領域を判別する。
回転方向判別部53は、選択部56により選択された座標が属する領域および選択部57により選択された座標が属する領域に応じて、ローテータ51および58が実行する計算式(式1または式2)を選択する。これにより、ローテータ51および58は、現実の座標と基準座標とを互いに接近させるように演算し、あるいは、第1の計算座標と第2の計算座標とを互いに接近させるように演算することができる。
次に、ローテータ51および58の具体的演算内容を説明する。第1および第2の計算座標(xxc,yyc)は式1または式2のように表わすことができる。回転方向判別部53は、判別部54および55の判別結果に基づいて式1または式2のいずれかを選択する。ローテータ51および58は、回転方向判別部53の比較結果に基づいて式1または式2の演算を実行する。ローテータ58は、インバータ60によって回転方向判別部53の比較結果の反転信号を受信する。従って、ローテータ58は、基準座標または第2の計算座標を、現実の座標または第1の計算座標の移動方向と反対方向へ移動させるように演算を行う。
Figure 2008185459
但し、tanΦ=2−i(i=0、1、2・・・n)である。i=0のとき、ローテータ51に与える初期値としての現実の座標は、xxci−1=x1、yyci−1=y1である。また、ローテータ58に与える初期値としての現実座標は、xxci−1=x0、yyci−1=y0である。
式1および式2ついて説明する。まず、運動体が第1の座標(cosα、sinα)から第2の座標(cos(α+Φ)、sin(α+Φ))へ移動すると考える。一般的に、第1の座標は、式3および式4で表され、第2の座標は、式5および式6のように表わすことができる。
x(i−1)=cosα (式3)
y(i−1)=sinα (式4)
x(i)=cos(α+Φ) (式5)
y(i)=sin(α+Φ) (式6)
式5および式6を三角関数の加法定理を用いて変形すると、式7および式8となる。
x(i)=cosα・cosΦ−sinα・sinΦ (式7)
y(i)=sinα・cosΦ+cosα・sinΦ (式8)
式7および式8に式3および式4を代入し、変形すると、式9〜式12が得られる。
x(i)/cosΦ=x(i−1)−y(i−1)・tanΦ(式9)
y(i)/cosΦ=y(i−1)+x(i−1)・tanΦ(式10)
x(i)/cosΦをxxc(i)とし、y(i)/cosΦをyyc(i)とすると、式9および式10はそれぞれ式11および式12のように表すことができる。
xxc(i)=x(i−1)−y(i−1)・tanΦ (式9)
yyc(i)=y(i−1)+x(i−1)・tanΦ (式10)
ここで、CORDICアルゴリズムを利用する。より詳細には、tanΦの値を式11のように±2−iに制限する。このように制限されたtanΦをtanΦiとする。
tanΦi=±2−i=±1,±2−1,±2−2,・・・ (i=0、1、2、・・・n) (式11)
このとき、Φiが取り得る値は、式12のように制限される。この角度Φiは離散的な数値をとり、このΦiが“仮の角度”である。
Φi=tan−1(±2−i)=±0.78rad,±0.46rad,±0.25rad,±0.12rad・・・ (式12)
式9および式10に三角関数の値tanΦiを代入すると計算座標が得られる。ここで、ローテータ51および58の各初期値(i=0)は、それぞれ図6に示す現実の座標(x1、y1)および基準座標(x0、y0)である。即ち、ローテータ51において、(xxc(0)、xxc(0))=(x1、y1)、ローテータ58において、(xxc(0)、xxc(0))=(x0、y0)である。
(最初の演算(i=0))
ローテータ51は、初期値としての現実の座標(x1、y1)を式9および式10に代入した演算を最初に実行する。即ち、ローテータ51は、式13および式14を実行する。このとき、選択部56は、現実の座標(x1、y1)を選択する。
xxc1=x1+y1・tanΦ0 (式13)
yyc1=y1−x1・tanΦ0 (式14)
式11に示したとおり、tanΦi=±2−iである。従って、式13および式14に含まれる乗算項(y1・tanΦ0)および(x1・tanΦ0)は、三角関数の値tanΦ0=±2−iに基いて、デジタル値(バイナリ値)として表されたy1およびx1の桁を単にシフトすれば足りる。つまり、ローテータ51は、実際には乗算を演算する必要は無い。これにより、ローテータ51には、乗算器が不要となる。ただし、式13、式14で示す最初の演算では、tanΦ0=1であるので、ローテータ51は、桁のシフトを行わない。その後、ローテータ51は、x1またはy1と乗算項の結果値とを加算または減算する。これにより、ローテータ51は、乗算なしに、式13および式14を演算することができる。
一方、ローテータ58は、初期値としての基準座標(x0、y0)を式9および式10に代入した演算を最初に実行する。即ち、ローテータ58は、式15および式16を実行する。このとき、選択部57は、基準座標(x0、y0)を選択する。
xxc1=x0−y0・tanΦ0 (式15)
yyc1=y0+x0・tanΦ0 (式16)
ローテータ58も、式15および式16に含まれる乗算項(y0・tanΦ0)および(x0・tanΦ0)の演算をするために、実際には乗算を演算する必要は無く、デジタル値(バイナリ値)として表されたy0またはx0の桁を単にシフトすればよい。これにより、ローテータ58には、乗算器が不要となる。ただし、式15および式16で示された最初の演算では、tanΦ0=1であるので、ローテータ58は、実際には桁のシフトを行わない。その後、ローテータ58は、x0またはy0と乗算項の結果値とを加算または減算する。これにより、ローテータ58は、乗算なしに、式15および式16を演算することができる。
(2回目以降の演算(i=1・・・))
2回目以降の演算では、ローテータ51および58は、式1または式2を用いる。
ローテータ51において演算された第1の計算座標(xxc1、yyc1)は、第1のレジスタR11に格納される。その後、選択部56は、第1のレジスタR11を選択し、第1の計算座標(xxc1、yyc1)をローテータ51に送る。ローテータ51は、第1の計算座標(xxc1、yyc1)を、それぞれ式1または式2のxxci−1およびyyci−1に代入し、演算を繰り返す。これにより、第1の計算座標(xxc2、yyc2)が得られる。第1の計算座標(xxc2、yyc2)は、(xxc1、yyc1)に代わり、第1のレジスタR11に上書きされる。つまり、ローテータ51は、最初の1回目の演算では式13および式14を演算し、その後は、式1または式2の演算を繰り返す。
式1および式2に含まれる乗算項(yyci−1・tanΦ0)および(xxci−1・tanΦ0)は、三角関数の値tanΦi=±2−iに基いて、デジタル値(バイナリ値)として表されたyyci−1およびxxci−1の桁を単にシフトすれば足りる。本実施形態では、ローテータ51は、yyci−1およびxxci−1をiだけ右シフトさせる。右シフトとは、或る数値がより小さい値になる方向へ桁をシフトさせることである。つまり、式1および式2に関して、ローテータ51は、実際には乗算を演算する必要は無い。その後、ローテータ51は、xxci−1またはyyci−1と乗算項の結果値とを加算または減算する。これにより、ローテータ51は、乗算なしに、式1または式2を演算することができる。iの値は演算ごとに1つずつ大きくなるので、乗算項のシフト量は演算ごとに大きくなる。これにより、第1の計算座標(xxc、yyc)は、演算ごとに収束する。この演算で用いられた仮の角度Φiは、演算ごとに回転角度レジスタR31に積算される。
また、ローテータ58で演算された第2の計算座標(xxc1、yyc1)は、第2のレジスタR21に格納される。その後、選択部57は第2のレジスタR21を選択し、xx1およびyy1をローテータ58に送る。ローテータ58は、xx1およびyy1を、式1または式2のxxi−1およびyyi−1に代入し、演算を繰り返す。これにより、xx2およびyy2が得られる。つまり、ローテータ58は、最初の1回目の演算では式15および式16を演算し、その後、ローテータ51と同様に式1または式2の演算を繰り返す。
ローテータ58も、ローテータ51と同様に、式1および式2に関して乗算を演算する必要は無い。その後、ローテータ58は、xxci−1またはyyci−1と乗算項の結果値とを加算または減算する。これにより、ローテータ58も、乗算なしに、式1または式2を演算することができる。
式9および式10において、x(i)/cosΦをxxc(i)と置換し、y(i)/cosΦをyyc(i)と置換した意味は、cosΦの乗算を演算から除くためである。このように置換することで、ローテータが実質的に乗算を演算する必要が無くなる。尚、計算座標として得られる結果(xxc1、yyc2)は、座標にcosΦを割り算した値である。これは、あくまでも演算途中の計算上の結果であり、角度Φ/2が最終的に得られれば差し支えない。
上記ローテータ51および58の演算動作は、演算時間短縮のために各iについて同時に実行される。尚、ロータの回転方向によって、式13〜式16内の+、−の符号は、逆符号になる場合もある。
式11および式12に示す各iに対する離散的な数値は、予め設定されており、メモリ52および59に記憶されている。即ち、メモリ52および59は、仮の角度Φi、仮の角度Φiのそれぞれに対する三角関数の値tanΦiを各iごとに記憶している。
ローテータ51および58は、それぞれメモリ52および59に記憶された式11に示す数値を獲得する。ローテータ51および58は、式1または式2に示す第1および第2の計算座標(xxc,yyc)を各iに関してi=0、1、2・・・の順番で計算する。
式1は、仮の角度が正である場合に成り立つ式であり、式2は、仮の角度が負である場合に成り立つ式である。式1および式2のΦiは、絶対値で表示されている。即ち、式2は、式1のΦiに−Φiを代入して得られる式である。仮の角度が正(+Φi)である場合、ローテータ51および58は、図7に示す反時計回り方向CCWへ計算座標を移動させる。仮の角度が負(−Φi)である場合、ローテータ51および58は、図7に示す時計回り方向CWへ計算座標を移動させる。ローテータ51および58は、回転方向判断部53からの信号に応じて式1または式2のいずれかを選択する。
ローテータ51および58は、第1および第2の計算座標を互いに接近させるために、i=0、1、2・・・nの順に式1および式2を交互または相補に演算する。つまり、ローテータ51が式1を演算するときには、ローテータ58は式2を演算し、ローテータ51が式2を演算するときには、ローテータ58は式1を演算する。第1の計算座標の移動方向および第2の計算座標の移動方向は、一方が決まれば、他方も決まるので、回転方向判別部53は1つで足りる。
仮の角度Φiは、式12に示すようにiが大きくなるにつれて小さくなる。従って、図7に示すように、第1の計算座標および第2の計算座標を、現実の座標(x1,y1)と基準座標(x0,y0)との中間座標へ収束させることができる。ローテータ51および58は、第1および第2の計算座標を互いに接近させるように演算するので、仮の角度Φiは、収束の結果、実際の回転角度の2分の1(θ/2)となる。仮の角度±Φiの積算は、レジスタR31に格納されたローテータ51の演算結果を、加算器80がローテータ51の演算ごとに積算することによって実行される。
仮の角度が収束する前に、次のサンプリングが実行された場合、ローテータ51、58は、第1および第2の計算座標の演算を中止し、回転角度レジスタR31に保持された角度データを角度保持レジスタR41へ出力する。この場合、加算器80は、サンプリングが実行されるまで仮の角度を積算すれば足りる。
図7を参照して、演算部50の動作を概念的に説明する。ローテータ51は、まず、現実の座標(x1,y1)をCCW方向へΦ0だけ回転させる。実際には、ローテータ51は、式13および式14を演算し、第1の計算座標を算出する。CCWは、現実の座標(x1,y1)を基準として基準座標(x0,y0)へ向かう方向である。
これと同時に、ローテータ58は、基準座標(x0,y0)をCW方向へΦ0だけ回転させる。実際には、ローテータ58は、式15および式16を演算し、第2の計算座標(xxc1,yyc1)を算出する。CWは、基準座標(x0,y0)を基準として現実の座標(x1,y1)へ向かう方向である。結果として、ローテータ51および58は、現実の座標と基準座標とを互いに接近させる方向(互いに向かい合う方向)へ回転させるように演算する。
次に、ローテータ51は、第1の計算座標(xxc1,yyc1)をCW方向へΦ1だけ回転させる。実際には、ローテータ51は、式2(i=1)を演算し、第1の計算座標を再計算する。
これと同時に、ローテータ58は、第2の計算座標(xxc2,yyc2)をCCW方向へΦ1だけ回転させる。実際には、ローテータ58は、式1を演算し、第2の計算座標を再計算する。
次に、ローテータ51は、第1の計算座標(xxc1,yyc1)をCW方向へΦ1だけ回転させる。実際には、ローテータ51は、式2(i=1)を演算し、第1の計算座標を再計算する。これと同時に、ローテータ58は、第2の計算座標(xxc2,yyc2)をCCW方向へΦ1だけ回転させる。実際には、ローテータ58は、式1を演算し、第2の計算座標を再計算する。
次に、ローテータ51は、第1の計算座標をCCW方向へΦ2だけ回転させる。実際には、ローテータ51は、式1(i=2)を演算し、第1の計算座標を再計算する。これと同時に、ローテータ58は、第2の計算座標をCW方向へΦ2だけ回転させる。実際には、ローテータ58は、式2を演算し、第2の計算座標を再計算する。
式12に示すようにiが大きくなるにつれて、仮の角度Φiの値は小さくなっていく。また、ローテータ51および58は、各演算において、第1の計算座標と第2の計算座標とを互いに接近させる方向(互いに向かい合う方向)へ回転させるように演算する。よって、ローテータ51および58が演算を繰り返すごとに、第1の計算座標および第2の計算座標は、中間座標(cos(θ2),sin(θ/2))へ収束する。第1の計算座標および第2の計算座標が中間座標に収束したとき、仮の角度Φiの積算値は、ほぼθ/2に等しい。
次に、回転方向判別部53が方向CWまたはCCW(式1または式2)を選択する方法を説明する。
図8は、座標を分割した8つの領域を示す図である。図9は、或る座標(x,y)が図8に示す領域I〜VIIIのいずれに属するかを判別するためのフロー図である。判別部54および55は、現実の座標、基準座標、第1の計算座標および第2の計算座標が図8の領域I〜VIIIのいずれに属するかを判別する。尚、現実の座標および基準座標の象限は、象限判別部95において既に判明している。よって、現実の座標および基準座標は判別部54および55に送る必要は本来無い。しかし、敢えて、現実の座標および基準座標を第1の計算座標および第2の計算座標と区別することは、回路を複雑化するので、本実施形態では、現実の座標および基準座標を第1の計算座標および第2の計算座標と同等に取り扱っている。
現実の座標を判別する場合には、図9の(x,y)に(x1,y1)を代入すればよい。基準座標を判別する場合には、図9の(x,y)に(x0,y0)を代入すればよい。第1または第2の計算座標を判別する場合には、図9の(x,y)に(xxc,yyc)を代入すればよい。
ステップS11およびS12において、x>0かつy>0である場合、座標(x,y)は、図8の領域IまたはIIに属する。さらに、ステップS13において、x≧yである場合、座標(x,y)は領域Iに属し、x<yである場合、座標(x,y)は領域IIに属することがわかる。
ステップS11およびS12において、x>0かつy≦0である場合、座標(x,y)は、図8の領域VIIまたはVIIIに属する。さらに、ステップS14において、|x|≧|y|である場合、座標(x,y)は領域VIIIに属し、|x|<|y|である場合、座標(x,y)は領域VIIに属することがわかる。
ステップS11およびS15において、x≦0かつy>0である場合、座標(x,y)は、図8の領域IIIまたはIVに属する。さらに、ステップS16において、|x|≧|y|である場合、座標(x,y)は領域IVに属し、|x|<|y|である場合、座標(x,y)は領域IIIに属することがわかる。
ステップS11およびS15において、x≦0かつy≦0である場合、座標(x,y)は、図8の領域VまたはVIに属する。さらに、ステップS17において、|x|≧|y|である場合、座標(x,y)は領域Vに属し、|x|<|y|である場合、座標(x,y)は領域VIに属することがわかる。
尚、基準座標(xmax、0)、(0、ymax)、(xmin、0)、(0、ymin)は、それぞれ、領域VIII、III、V、VIIに属する。
エリア判別部54および55は、図9のフローをASIC(Application Specific Integrated Circuit)のようなカスタムLSIで構成すればよい。
図10(A)および図10(B)は、現実の座標および基準座標、または、第1の計算座標および第2の計算座標が属する領域に基づいて、第1および第2の計算座標の回転方向(CCWまたはCW)を規定した表である。回転方向判別部53は、図10(A)および図10(B)の表に従って、ローテータ51および58が用いる演算式(式1または式2)を選択する。
図10(A)および図10(B)の“目標”は、目標となる座標が属する領域を示す。現実の座標および基準座標は、その一方が他方を目標とする。第1の計算座標および第2の計算座標は、その一方が他方を目標とする。図10(A)および図10(B)の“前回”は、前回の演算によって得られた計算座標(xxci−1,yyci−1)が属する領域を示す。あるいは、最初の演算では、現実の座標および基準座標を示す。例えば、現実の座標が領域Iに属する場合、基準座標は(xmax、0)である。よって、現実の座標にとって、目標は領域VIIIとなる。従って、回転方向判別部53は、“目標”の領域がVIIIであり、かつ、“前回”の領域がIである回転方向CWを選択する。つまり、回転方向判別部53は、ローテータ51が式1を選択するように信号を送る。このとき、ローテータ58は式2を選択する。
同様に、i=1における第1の計算座標が領域IIに属し、第2の計算座標が領域Iに属する場合、第1の計算座標にとって、目標は領域Iとなる。従って、回転方向判別部53は、“目標”の領域がI であり、かつ、“前回”の領域がIIである回転方向CWを選択する。つまり、回転方向判別部53は、ローテータ51が式2を選択するように信号を送る。このとき、ローテータ58は式1を選択する。
第1の計算座標と第2の計算座標とが同一の領域に属する場合、第1の計算座標のxxciと第2の計算座標のxxciとを比較する。あるいは、第1の計算座標のyyciと第2の計算座標のyyciとを比較する。例えば、i=1において第1の計算座標と第2の計算座標とがともに領域Iに属する場合、第1の計算座標のxxc1と第2の計算座標のxxc1とを比較する。第1の計算座標のxxc1が第2の計算座標のxxc1より大きい場合には、第1の計算座標をCCW方向へ回転させ、第2の計算座標をCW方向へ回転させる。
このように、第1の計算座標と第2の計算座標とが同一の領域に属する場合であっても、回転方向判別部53は、式1または式2を正確に選択することができる。
回転方向判別部53は、図10(A)および図10(B)の選択条件をASICのようなカスタムLSIで構成すればよい。
本実施形態において、位置検出装置100は、運動体の角度を算出する。しかし、位置検出装置100は、往復運動をする運動体にも適用することができる。この場合、位置検出装置100は、FPGA50で得られた角度を運動体の位置に変換すればよい。
本実施形態によれば、位置検出装置100は、位置検出の精度を悪化させていた除算や乗算を用いることなく、sin信号およびcos信号の加算および減算のみを用いて回転角度を検出することができるので高精度である。ここで、式1および式2には、tanΦを乗算する項が存在する。しかし、tanΦは、=2−iであるので、tanΦの乗算は、xxci−1またはyyci−1のデジタル値をiビットだけ右シフトすることと等価である。従って、ローテータ51および58は、実際には、乗算器を含まず、単に、デジタル値の桁を右シフトする回路を含むだけである。
一般に、演算器をロジック回路で実現しようとすると、除算器および乗算器は、加算器および減算器に比べ、非常に回路規模が大きくなる。本実施形態では、FPGA50は、2つのローテータを含むが、これらのローテータから除算器および乗算器を省くことによって、全体の回路規模は、非常に小さいものとなる。また、除算器および乗算器がないので、本実施形態によるFPGA50は、カスタムロジックLSIで実現しやすい。本実施形態のローテータ51、58は、上述のように簡単な式を繰り返し演算する。カスタムロジックLSIは、このように簡単な演算を高速に演算することに適している。従って、本実施形態によるFPGA50は、カスタムロジックLSIを用いて演算速度を高速化することができる。即ち、本実施形態によるFPGA50は、ロジックLSIで実現した場合に特に有利であるということができる。
本発明に係る実施形態に従った位置検出装置100のブロック図。 現実の座標(x1、y1)および基準座標(x0、y0)の関係を示す概念図。 ピーク・ボトム検出部60の構成を示すブロック図。 現実の座標(x1、y1)の遷移に関して、保持指令の対象レジスタおよびクリア指令の対象レジスタを示した表。 MO−CORDIC演算部50の構成を示すブロック図。 基準座標(x0、y0)および現実の座標(x1、y1)の位置関係を示す図。 演算部50の動作を概念的に示す説明図。 座標を分割した8つの領域を示す図。 或る座標(x,y)が図8に示す領域I〜VIIIのいずれに属するかを判別するためのフロー図。 第1および第2の計算座標の回転方向(CCWまたはCW)を規定した表。
符号の説明
位置検出装置100
10…ロータリエンコーダまたはリニアスケール
40…A/Dコンバータ
50…MO−CORDIC演算部
60…ピーク・ボトム検出部
51、58…CORDICローテーション
52、59…メモリ
53…回転方向判別部
54、55…エリア判別部
56、57…選択部
R11…第1のレジスタ
R21…第2のレジスタ
R31…回転角度レジスタ
R41…角度保持レジスタ
80…加算器
95…現象判別部
90…角度加算器
60…ピーク・ボトム検出部
101…基準検出回路
102〜104…符号変化レジスタ
105…遷移検出回路
PDymax、PDymin、PDxmax、PDxmin…ピーク・ボトム検出回路

Claims (14)

  1. 回転運動または往復運動を行う運動体の位置を示す正弦波信号を周期的にサンプリングし、前記正弦波信号を用いて前記運動体の位置を検出する位置検出装置であって、
    予め設定された複数の仮の角度、および、該複数の仮の角度のそれぞれに対する三角関数の値を記憶するメモリと、
    前記サンプリングで得られた運動体の現実の座標(x1、y1)のx1またはy1の一方と、前記三角関数の値に基いてx1またはy1の他方の桁をシフトした結果値との加減算によって表された第1の計算座標を第1の演算として実行し、該第1の計算座標を前記(x1、y1)として前記第1の演算を繰り返す第1の演算部と、
    前記現実の座標に対して基準となる基準座標(x0、y0)のy0またはx0の一方と、前記三角関数の値に基いてy0またはx0の他方の桁をシフトした結果値との加減算によって表された第2の計算座標を第2の演算として実行し、該第2の計算座標を前記(x0、y0)として前記第2の演算を繰り返す第2の演算部と、
    前記第1の演算または前記第2の演算で用いられた複数の前記三角関数に対応する複数の前記仮の角度を積算する第3の演算部とを備え、
    前記第1および前記第2の演算部は、前記現実の座標と前記基準座標とを互いに接近させるように演算し、かつ、前記第1の計算座標と前記第2の計算座標とを互いに接近させるように演算することを特徴とする位置検出装置。
  2. 前記第1および前記第2の演算部は、前記仮の角度を小さくしつつ、前記第1および前記第2の計算座標を収束させるように前記演算Aおよび前記演算Bをそれぞれ繰り返し、
    前記第3の演算部は、前記第1および前記第2の計算座標が収束するまで、あるいは、次のサンプリングが実行されるまで、前記仮の角度を積算することを特徴とする請求項1に記載の位置検出装置。
  3. 前記メモリは、前記仮の角度としてΦ(Φ>Φ>Φ>・・・>Φ>・・・Φ)(nは自然数)、前記三角関数の値としてtanΦを記憶し、
    前記第1または前記第2の計算座標を(xxc,yyc)とすると、
    Figure 2008185459
    (但し、Φ=tan−1−i(i=0、1、2・・・n)であり、i=0のとき、前記第1の演算部においては、xxci−1=x1、yyci−1=y1であり、前記第2の演算部においては、xxci−1=x0、yyci−1=y0である)
    前記第1および前記第2の演算部は、i=0、1、2・・・nの順に式1または式2を演算し、
    前記第3の演算部は、前記仮の角度をiごとに積算することを特徴とする請求項1または請求項2に記載の位置検出装置。
  4. 前記第1および前記第2の演算部は、i=0、1、2・・・nの順に式1および式2を交互または相補に演算し、かつ、前記第1の演算部が式1を演算するときには、前記第2の演算部は式2を演算し、前記第1の演算部が式2を演算するときには、前記第2の演算部は式1を演算することを特徴とする請求項3に記載の位置検出装置。
  5. 前記第1の演算が実行されるごとに、前記第1の計算座標を格納する第1のレジスタと、
    前記第2の演算が実行されるごとに、前記第2の計算座標を格納する第2のレジスタと、
    前記第3の演算部が積算するごとに、その積算された前記仮の角度を格納する第3のレジスタと、
    前記現実の座標をサンプリングするごとに、前記第3のレジスタに格納された角度を保持する第4のレジスタとを備えたことを特徴とする請求項1から請求項3のいずれかに記載の位置検出装置。
  6. 前記現実の座標の符号に基づいて前記現実の座標が存在する象限を判別する象限判別部と、
    前記現実の座標が第1象限にある場合、0(rad)を、前記現実の座標が第2象限にある場合、π/2(rad)を、前記現実の座標が第3象限にある場合、π(rad)を、前記現実の座標が第4象限にある場合、(3/2)π(rad)を、前記第4のレジスタに保持された角度またはこの角度の2倍に加算する第4の演算部とをさらに備えたことを特徴とする請求項5に記載の位置検出装置。
  7. 前記現実の座標(x1、y1)のx1またはy1のいずれか一方の符号が一定である期間の間にサンプリングされた複数の前記現実の座標(x1、y1)のうちx1の最大値xmax、x1の最小値xmin、y1の最大値ymaxおよびy1の最小値yminを保持するピーク・ボトムレジスタをさらに備え、
    前記象限判別部は、前記xmax、前記xmin、前記ymaxまたは前記yminのいずれかとゼロとを前記基準座標として選択することを特徴とする請求項6に記載の位置検出装置。
  8. 前記ピーク・ボトムレジスタと前記象限判別部との間に設けられた低域通過フィルタをさらに備えたことを特徴とする請求項7に記載の位置検出装置。
  9. 回転運動または往復運動を行う運動体の位置を示す正弦波信号を周期的にサンプリングし、前記正弦波信号を用いて前記運動体の位置を検出する位置検出装置であって、
    予め設定された複数の仮の角度Φ(Φ>Φ>Φ>・・・>Φ>・・・Φ)(nは自然数)、および、該複数の仮の角度のそれぞれに対する三角関数の値tanΦを記憶するメモリと、
    前記サンプリングで得られた運動体の現実の座標(x1,y1)と前記三角関数の値tanΦに基いて式1または式2を繰り返し演算する第1の演算部と、
    前記現実の座標に対して基準となる基準座標(x0、y0)と前記三角関数の値tanΦに基いて式2または式1を繰り返し演算する第2の演算部と、
    前記第1または前記第2の演算部における演算で用いられた前記仮の角度Φを積算する第3の演算部とを備え、
    Figure 2008185459
    (但し、Φ=tan−1−i(i=0、1、2・・・n)であり、i=0のとき、前記第1の演算部においては、xxci−1=x1、yyci−1=y1であり、前記第2の演算部においては、xxci−1=x0、yyci−1=y0である)
    前記第1および前記第2の演算部は、i=0、1、2・・・nの順に式1または式2を演算し、
    前記第3の演算部は、前記仮の角度をiごとに積算することを特徴とする位置検出装置。
  10. 前記第1および前記第2の演算部は、i=0、1、2・・・nの順に式1および式2を交互または相補に演算し、かつ、前記第1の演算部が式1を演算するときには、前記第2の演算部は式2を演算し、前記第1の演算部が式2を演算するときには、前記第2の演算部は式1を演算することを特徴とする請求項9に記載の位置検出装置。
  11. 前記第1の演算が実行されるごとに、前記第1の計算座標を格納する第1のレジスタと、
    前記第2の演算が実行されるごとに、前記第2の計算座標を格納する第2のレジスタと、
    前記第3の演算部が積算するごとに、前記仮の角度を格納する第3のレジスタと、
    前記現実の座標をサンプリングするごとに、前記第3のレジスタに格納された角度を保持する第4のレジスタとを備えたことを特徴とする請求項10に記載の位置検出装置。
  12. 前記現実の座標の符号の変化に基づいて前記運動体が存在する象限を判別する象限判別部と、
    前記現実の座標が第1象限にある場合、0(rad)を、前記現実の座標が第2象限にある場合、π/2(rad)を、前記現実の座標が第3象限にある場合、π(rad)を、前記現実の座標が第4象限にある場合、(3/2)π(rad)を、前記第4のレジスタに保持された角度の2倍に加算する第4の演算部とをさらに備えたことを特徴とする請求項11に記載の位置検出装置。
  13. 前記現実の座標(x1、y1)のx1またはy1のいずれか一方の符号が一定である期間の間にサンプリングされた複数の前記現実の座標(x1、y1)のうちx1の最大値xmax、x1の最小値xmin、y1の最大値ymaxおよびy1の最小値yminを保持するピーク・ボトムレジスタをさらに備え、
    前記象限判別部は、前記xmax、前記xmin、前記ymaxまたは前記yminのいずれかとゼロとを前記基準座標として選択することを特徴とする請求項12に記載の位置検出装置。
  14. 前記ピーク・ボトムレジスタと前記象限判別部との間に設けられた低域通過フィルタをさらに備えたことを特徴とする請求項13に記載の位置検出装置。
JP2007019275A 2007-01-30 2007-01-30 位置検出装置 Pending JP2008185459A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007019275A JP2008185459A (ja) 2007-01-30 2007-01-30 位置検出装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007019275A JP2008185459A (ja) 2007-01-30 2007-01-30 位置検出装置

Publications (1)

Publication Number Publication Date
JP2008185459A true JP2008185459A (ja) 2008-08-14

Family

ID=39728613

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007019275A Pending JP2008185459A (ja) 2007-01-30 2007-01-30 位置検出装置

Country Status (1)

Country Link
JP (1) JP2008185459A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019017042A1 (ja) * 2017-07-19 2019-01-24 ミネベアミツミ株式会社 回転角センサ-デジタルコンバータおよび回転角センサ-デジタル変換方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019017042A1 (ja) * 2017-07-19 2019-01-24 ミネベアミツミ株式会社 回転角センサ-デジタルコンバータおよび回転角センサ-デジタル変換方法

Similar Documents

Publication Publication Date Title
JP5058334B2 (ja) 回転角度検出装置
US8723511B2 (en) Absolute encoder
JP4987448B2 (ja) 速度検出装置
JP4987269B2 (ja) 速度検出装置およびサーボモータ
US11788867B2 (en) Incremental encoder position interpolation
KR101239570B1 (ko) 속도 검출 장치 및 서보 모터
KR100978423B1 (ko) 파형 보정 장치 및 파형 보정 방법
JP4757328B2 (ja) 逆正接演算装置及び逆正接演算プログラム
US10312837B2 (en) Information processing apparatus, and recording medium storing computer program
JP2008185459A (ja) 位置検出装置
JP2016148587A (ja) レゾルバ信号処理装置
JP6750857B2 (ja) 座標データ回転演算装置及び座標データ回転演算方法
JPH05256638A (ja) 誤差補正機能付き位置検出装置
KR20070022597A (ko) 속도 검출 장치 및 서보 모터
JP3967963B2 (ja) アブソリュート変位検出装置
Koli et al. Balancing of a rotating shaft using computed order tracking
JP2021012052A (ja) 座標データ回転演算装置及び座標データ回転演算方法
JP3337014B2 (ja) 位置信号検出装置
JP6716334B2 (ja) 情報処理装置、情報処理方法、およびコンピュータプログラム。
JPH10227657A (ja) 誤差補正機能付き位置検出装置
Glascott-Jones et al. Optimising Efficiency using Hardware Co-Processing for the CORDIC Algorithm
JP2015225027A (ja) エンコーダ