(57)【要約】【課題】  エンコーダで得られたアナログエンコーダ信号に基づいて検出された角度に応じて生成されるエンコーダパルス信号のエッジが乱れることを容易に且つ確実に抑制する。【解決手段】  擬似正弦波として入力されたアナログエンコーダ信号１０２、１０４に基づいて、エンコーダで検出した角度を示す角度データ１５２を導出し、導出した角度データ１５２に基づいてエンコーダパルスのデータを順次生成する。この際に、出力したエンコーダパルスのデータをラッチしておく。そして、逓倍設定値に基づくエンコーダパルスの変化点からα度の範囲では、それまでにラッチしておいたデータを使用し、その他の角度の範囲では、生成したデータを使用する。【選択図】  図１
2011180073.tif 000002
【特許請求の範囲】
【請求項１】
測定対象物の回動の角度を検出するエンコーダから出力された信号に基づいて、当該角度を検出する検出手段と、
前記角度に基づいて、角度に応じて値が変化するパルス信号のデータを生成する生成手段と、
出力されるパルス信号のデータをラッチするラッチ手段と、
前記生成されたパルス信号のデータ、及び、前記ラッチされたパルス信号のデータの何れかを、出力するデータとして選択する選択手段と、を有し、
前記選択手段は、前記パルス信号の値を変更する角度閾値から、設定された範囲の角度までは、前記ラッチされたパルス信号のデータを選択し、当該範囲と異なる角度については、前記生成されたパルス信号のデータを選択することを特徴とするエンコーダパルス生成装置。
【請求項２】
前記角度閾値の間隔が大きいときほど、前記範囲が大きくなるように、前記角度閾値の間隔に応じて、前記範囲を変更する変更手段を有することを特徴とする請求項１に記載のエンコーダパルス生成装置。
【請求項３】
測定対象物の回動の角度を検出するエンコーダから出力されたアナログの信号をデジタルの信号に変換する変換手段と、
前記範囲を変更する変更手段と、を有し、
前記検出手段は、前記変換手段により変換されたデジタルの信号をサンプリングした信号に基づいて、前記角度を検出し、
前記変更手段は、前記サンプリングの周期が大きいときほど、前記範囲が大きくなるように、前記サンプリングの周期に応じて、前記範囲を変更することを特徴とする請求項１に記載のエンコーダパルス生成装置。
【請求項４】
測定対象物の回動の角度を検出するエンコーダから出力されたアナログの信号をデジタルの信号に変換する変換手段を有し、
前記アナログの信号から得られる角速度、又は、前記検出手段により検出された角速度が速いときほど、前記範囲が小さくなるように、前記アナログの信号から得られる角速度、又は、前記検出手段により検出された角速度に応じて、前記範囲を変更することを特徴とする請求項１に記載のエンコーダパルス生成装置。
【請求項５】
測定対象物の回動の角度を検出するエンコーダから出力された信号に基づいて、当該角度を検出する検出工程と、
前記角度に基づいて、角度に応じて値が変化するパルス信号のデータを生成する生成工程と、
出力されるパルス信号のデータをラッチするラッチ工程と、
前記生成されたパルス信号のデータ、及び、前記ラッチされたパルス信号のデータの何れかを、出力するデータとして選択する選択工程と、を有し、
前記選択工程は、前記パルス信号の値を変更する角度閾値から、設定された範囲の角度までは、前記ラッチされたパルス信号のデータを選択し、当該範囲と異なる角度については、前記生成されたパルス信号のデータを選択することを特徴とするエンコーダパルス生成方法。
【請求項６】
測定対象物の回動の角度を検出するエンコーダから出力された信号に基づいて、当該角度を検出する検出工程と、
前記角度に基づいて、角度に応じて値が変化するパルス信号のデータを生成する生成工程と、
出力されるパルス信号のデータをラッチするラッチ工程と、
前記生成されたパルス信号のデータ、及び、前記ラッチされたパルス信号のデータの何れかを、出力するデータとして選択する選択工程と、をコンピュータに実行させ、
前記選択工程は、前記パルス信号の値を変更する角度閾値から、設定された範囲の角度までは、前記ラッチされたパルス信号のデータを選択し、当該範囲と異なる角度については、前記生成されたパルス信号のデータを選択することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンコーダパルス生成装置、エンコーダパルス生成方法、及び、コンピュータプログラムに関し、特に、測定対象物の回動の角度を検出するために用いて好適なものである。
【背景技術】
【０００２】
従来から、エンコーダで得られたアナログの信号（以下の説明では、この信号を、必要に応じてアナログエンコーダ信号と称する）より、エンコーダの測定対象物（モータ等）の角度情報や位置情報を検出する方法としていくつかの手法が提案されている。
特許文献１では、ＡＤ変換されたアナログエンコーダ信号より、arctan（逆正接）を計算して角度情報を得る方法が開示されている。
特許文献２では、アナログエンコーダ信号をＡＤ変換した後にノイズの影響を抑えるためにヒステリシスを与える方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平８−１４５７１９号公報
【特許文献２】特開平８−２０１１１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１では、測定対象物の角度情報を計算することは開示されているが、角度情報の利用の仕方は開示されていない。特許文献１に記載の技術では、ＡＤ変換したアナログエンコーダ信号より、arctanを計算して角度情報を得る際に、アナログエンコーダ信号のノイズによって、計算した角度情報にもノイズが含まれている。モータ等が低速で駆動している時には、アナログエンコーダ信号の角速度が遅くなるため、角度値の進みが遅くなり、この結果、アナログエンコーダ信号のノイズに対して角度値のノイズを抑えることが難しくなってきている。また、２相のインクリメンタルエンコーダで発生したパルスを角度情報より単純に生成しようとすると、特に、モータ等が低速で駆動している時には、角度情報の進み方が遅く、生成したエンコーダパルスのエッジに、ばたつきが発生してしまう。このエンコーダエッジにばたつきが発生すると、２相のエンコーダパルスより進行方向、速度、及び位置を計算しているエンコーダカウンタにおいて、速度カウンタが速度値を誤検出してしまう虞がある。エンコーダカウンタが速度値を誤検出すると、この速度値を元にモータ等のメカトロ系を制御する際に、制御値を誤ってしまうことになる。すなわち、エンコーダエッジにばたつきが発生すると、メカトロ系の制御を適切に行うことが困難になる。
【０００５】
特許文献２に記載の技術は、前述したエンコーダで発生したパルスのエッジにばたつきが生じることを防止した従来技術である。特許文献２では、アナログエンコーダ信号をＡＤ変換した後、内挿処理を行う前に、ＡＤ変換した値に対してヒステリシスをかける方法が開示されている。
アナログエンコーダ信号は、元々２相の擬似正弦波であり、２相のエンコーダ信号の角度により信号の傾きが変る。すなわちアナログエンコーダ信号の微分信号が一定ではなく、微分信号もまた擬似正弦波（９０度位相がずれる）である。このために、アナログエンコーダ信号に対してヒステリシスをかけた場合、エンコーダの角度によりヒステリシスの効果が変ってしまう。さらに、微分信号が"０"の近辺になる際にヒステリシスをかけると、アナログエンコーダ信号の値が正しく後段の内挿処理に伝わらなくなってしまう虞がある。このために、特許文献２に記載の技術では、擬似正弦波で入力されたアナログエンコーダ信号の領域によってヒステリシスの効果が変ってしまうことと、一部領域（微分信号が"０"の近辺のところ）において、正しく内挿処理が行われない、という問題があった。
【０００６】
また、エンコーダパルスのエッジのばたつきを抑える方法として、２値信号に対するフィルターを構成する方法が考えられる。この方法では、エンコーダパルスのエッジに対して数クロック程度のノイズであれば、十分にノイズの除去が可能である。しかしながら、モータ等が低速で駆動している時に、アナログエンコーダ信号より得た角度情報よりエンコーダパルスを生成すると、エンコーダの角速度が非常に低速になるため、エンコーダパルスのエッジのノイズ分が数１０クロックと大きくなってしまう。このために、ノイズフィルターとして非常に大きなものを必要とし、現実的ではないと共に、フィルターによる信号の遅延が大きくなってしまう。
【０００７】
本発明は、このような問題点に鑑みてなされたものであり、エンコーダで得られたアナログの信号に基づいて検出された角度に応じて生成されるパルス信号のエッジが乱れることを容易に且つ確実に抑制することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のエンコーダパルス生成装置は、測定対象物の回動の角度を検出するエンコーダから出力された信号に基づいて、当該角度を検出する検出手段と、前記角度に基づいて、角度に応じて値が変化するパルス信号のデータを生成する生成手段と、出力されるパルス信号のデータをラッチするラッチ手段と、前記生成されたパルス信号のデータ、及び、前記ラッチされたパルス信号のデータの何れかを、出力するデータとして選択する選択手段と、を有し、前記選択手段は、前記パルス信号の値を変更する角度閾値から、設定された範囲の角度までは、前記ラッチされたパルス信号のデータを選択し、当該範囲と異なる角度については、前記生成されたパルス信号のデータを選択することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、パルス信号のデータの生成に際し、角度閾値から、設定された範囲の角度までを不感帯にした。したがって、エンコーダで得られたアナログの信号に基づいて検出された角度に応じて生成されるパルス信号のエッジが乱れることを容易に且つ確実に抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】エンコーダパルス生成装置の構成を示すブロック図である。
【図２】生エンコーダデータを示す図である。
【図３】領域分割部、arctan計算部、及び角度計算部の処理を説明する図である。
【図４】第１の実施形態に係るエンコーダパルスの生成方法を説明する図である。
【図５】２相のエンコーダパルスを示す図である。
【図６】第１の実施形態に係る２相パルス生成部の詳細な構成を示す図である。
【図７】ノイズを含む角度値と、Ａ相のエンコーダパルスを示す図である。
【図８】第２の実施形態に係る２相パルス生成部の詳細な構成を示す図である。
【図９】第３の実施形態に係るエンコーダパルスの生成方法を説明する図である。
【発明を実施するための形態】
【００１１】
以下に、本発明の実施形態を、図面に基づいて詳細に説明する。
（第１の実施形態）
まず、本発明の第１の実施形態について説明する。
図１は、エンコーダパルス生成装置の構成の一例を示すブロック図である。エンコーダパルス生成装置は、擬似正弦波としてエンコーダから入力されたアナログエンコーダ信号に基づいてarctanの計算を行い、その結果に基づいて角度値を計算して、任意の角度間隔により２相のエンコーダパルスを生成する。エンコーダは、例えば、モータの回動の角度を検出するものである。エンコーダは、公知の技術で実現できるので、ここでは、その詳細な説明を省略する。
【００１２】
図１において、ＡＤ変換器１００は、Ａ相及びＢ相の２相のアナログエンコーダ信号１０２、１０４（擬似正弦波）を、ＡＤ変換するためのものである。ＡＤＩＦ１１０は、ＡＤ変換器１００を制御し、ＡＤ変換器１００でデジタル化された２相の生エンコーダデータ１１２（Ａ相）、１１４（Ｂ相）を読み出すためのものであり、ＡＤ変換器１００とのインターフェース部である。前処理部１２０は、ＡＤ変換された２相の生エンコーダデータ１１２、１１４のノイズ分を、デジタルフィルターにより除去する。さらに、前処理部１２０は、擬似正弦波の最大値と最小値とを検出してその中心値を計算する。そして、前処理部１２０は、計算した中心値からのオフセット分を２相の生エンコーダデータ１１２、１１４から除去して、２相の生エンコーダデータ１１２、１１４を２の補数で表現された２相の正負エンコーダデータ１２２（Ａ相）、１２４（Ｂ相）に変換する。
【００１３】
領域分割部１３０は、Ａ相、Ｂ相の正負エンコーダデータ１２２、１２４について、符号と絶対値の大きさとを比較し、擬似正弦波で入力された２相のアナログエンコーダ信号１０２、１０４の０〜３６０度（°）の領域を８つの領域に分けるためのものである。また、領域分割部１３０は、Ａ相、Ｂ相の正負エンコーダデータ１２２、１２４のうち、大きさの絶対値が小さい（又は等しい）方のデータの大きさの絶対値を示すＸデータ１３２を生成して出力する。また、領域分割部１３０は、Ａ相、Ｂ相の正負エンコーダデータ１２２、１２４のうち、大きさの絶対値が大きい（又は等しい）方のデータの大きさの絶対値を示すＹデータ１３４を生成して出力する。arctan計算部１４０は、領域分割部１３０により８つの領域に分けられた０−４５度の範囲で、各相のエンコーダデータの絶対値に大きさに基づくarctan（逆正接）を計算する。本実施形態では、arctan計算部１４０は、tan-1Ｘ／Ｙを計算する。これにより、計算した角度を表す角度データ１４２（０〜４５度）が出力される。
【００１４】
角度計算部１５０は、arctan計算部１４０により計算された０−４５度の範囲の値の角度と、領域分割部１３０により分割された８つの領域の情報とに従って、arctan計算部１４０で計算された角度を、０〜３６０度の範囲の値の角度に変換する。これにより、変換した角度を表す角度データ１５２（０〜３６０度）が出力される。２相パルス生成部１６０は、角度計算部１５０により計算された角度データ１５２と、当該角度データ１５２に対して設定された逓倍数（逓倍設定値）とに基づいて２相のエンコーダパルス（パルス信号）１６２（Ａ相）、１６４（Ｂ相）を生成して出力する。
【００１５】
前述したように、２相のアナログエンコーダ信号１０２、１０４は、ＡＤ変換器１００に入力されデジタル化される。ＡＤ変換器１００とのインターフェース部であるＡＤＩＦ１１０の制御のもと、デジタル化されたＡ相、Ｂ相の生エンコーダデータ１１２、１１４がＡＤ変換器１００より取り込まれると、前処理部１２０により、次の処理が行われる。すなわち、前処理部１２０により、ノイズ除去のためのデジタルローパスフィルター処理が行われる。また、前処理部１２０により、各相の擬似正弦波の最大値と最小値とを検出してその中間値を計算する。そして、前処理部１２０は、その中心値からのオフセット分を２相の生エンコーダデータ１１２、１１４から除去して、２相の生エンコーダデータ１１２、１１４を２の補数で表現された２相の正負エンコーダデータ１２２（Ａ相）、１２４（Ｂ相）に変換する。
【００１６】
図２（ａ）は、Ａ相の生エンコーダデータ１１２と、Ｂ相の生エンコーダデータ１１４の一例を示す図である。また、図２（ｂ）は、Ａ相の正負エンコーダデータ１２２と、Ｂ相の正負エンコーダデータ１２４の一例を示す図である。図２では、横軸に角度をとっているが、ある方向に一定速度で測定対象物が動いているという前提では、横軸を時間とみなしてもよい。通常、エンコーダスケール１周期に対してアナログエンコーダ信号も１周期、すなわち、３６０度進む。
【００１７】
前処理部１２０で処理が行われたＡ相、Ｂ相の正負エンコーダデータ１２２、１２４について、符号と、大きさの絶対値との比較が領域分割部１３０により行われ、４５度毎に区画された８つの領域に分割される。図３は、領域分割部１３０、arctan計算部１４０、及び角度計算部１５０による処理の一例を説明するための図である。
図３（ａ）は、Ａ相、Ｂ相の正負エンコーダデータ１２２、１２４の振幅値の一例を示す図である。図３（ａ）において、Ａ軸は、Ａ相の正負エンコーダデータ１２２の振幅値を示し、Ｂ軸は、Ｂ相の正負エンコーダデータ１２４の振幅値を示し、Ａ軸及びＢ軸にそれらの値をプロットすると、位相を表す円３０１が得られる。ここでは、Ａ軸の正の方向の軸を基準として、４５度間隔で、円３０１を８つの領域に分ける。
図３（ｂ）は、図３（ａ）に示す８つの領域のそれぞれにおけるＡ相、Ｂ相の正負エンコーダデータ１２２、１２４の符号（Ａ、Ｂ）、絶対値の大小関係（絶対値）、sign（符号）Ｘ、Ｙ、加算する角度（＋）、計算される角度の関係を示す図である。尚、図３（ｂ）に示す領域０〜７は、それぞれ図３（ａ）に示す"０"〜"７"に対応する。
【００１８】
８つに分割された領域を示す８分割領域データ１３６は、角度計算部１５０に送られる。また、領域分割部１３０は、Ａ相、Ｂ相の正負エンコーダデータ１２２、１２４の符号を除去し、それらのうち、大きさが大きい（又は等しい）データをＹデータ１３４とし、小さい（又は等しい）データをＸデータ１３２としてarctan計算部１４０に出力する。
arctan計算部１４０は、arctan（Ｘ／Ｙ）の計算を行う。まず、Ｘ／Ｙの計算は、Ｙの逆数をテーブルにて求め、Ｘと乗算を行う（Ｘ×（1／Ｙ）を計算する）ことにより実行される。次に、arctanの計算は、テーブルを用いることにより実行される。ここで、Ａ相、Ｂ相の正負エンコーダデータ１２２、１２４の位相を表す円３０１を４５度毎の領域に分割し、また、Ｘ＜＝Ｙという条件がある。このために、０＜＝arctan（Ｘ／Ｙ）＜＝１という関係が成り立つ。よって、０〜１の間に対してテーブルを用意すれば、arctanの計算を行うことができる。このようにして、０〜４５度の範囲の角度を示す角度データ１４２が得られる。
arctan計算部１４０により計算された０〜４５度の範囲の角度を示す角度データ１４２と、領域分割部１３０により得られた８分割領域データ１３６とに基づいて、角度計算部１５０により、０〜３６０度の範囲の角度を示す角度データ１５２が計算される。計算された角度データ１５２に基づいて、２相パルス生成部１６０により、２相のエンコーダパルス（Ａ相のエンコーダパルス１６２、Ｂ相のエンコーダパルス１６４）が生成され、出力される。以下に、ここで生成される２相のエンコーダパルスの生成方法の一例について詳述する。
【００１９】
図４は、角度の不感帯（ヒステリシス）を設けてエンコーダパルス１６２、１６４のエッジを生成する方法の一例を説明するための図である。図４においては、Ａ相、Ｂ相の正負エンコーダデータ１２２、１２４の角度に基づいて２相のエンコーダパルス１６２、１６４のエッジを生成する方法の一例を示している。尚、図４の縦軸と横軸は、図３に示したものと同じである。２相パルス生成部１６０は、角度計算部１５０により計算された角度データ１５２が示す角度と、エンコーダパルスの変化点の情報とに基づいて、２相のエンコーダパルスを生成する。図４では、説明の容易化のために、４５度ずつにパルスエッジを生成する場合、すなわち、１８０度でＡ相、Ｂ相が１周期（４エッジ）となり、３６０度で２逓倍のパルスを生成する（４５度ずつパルスエッジを生成）する場合を例に挙げて示している。実際には、例えば、８逓倍のパルスを生成（11.25度ずつパルスエッジを生成）したり、１６逓倍のパルスを生成（5.625度ずつパルスエッジを生成）したりする。しかしながら、これでは、角度が細かすぎてしまい図で表現しにくい。そこで、ここでは、説明を分かり易くするために、２逓倍のパルスを生成する（４５度ずつパルスエッジを生成する）場合について説明を行う。
【００２０】
図４において、アナログエンコーダ信号１０２、１０４が、ＣＷ方向（正の方向）２００に進んでいる場合、パルス変化点２１０に対しては"＋α"度のヒステリシスを設けて、点２１２をパルス変化点とする。同様に、パルス変化点２２０に対しても"＋α"度のヒステリシスを設けて、点２２２をパルス変化点とする。以下同様に、基準となるパルス変化点に対して"＋α"度のヒステリシスを設けた角度をパルス変化点とする。また、アナログエンコーダ信号１０２、１０４がＣＣＷ方向（負の方向）２０２に進んでいる場合、パルス変化点２１０に対しては"−α"度のヒステリシスを設けて、点２１４をパルス変化点とする。同様に、パルス変化点２２０に対しても"−α"度のヒステリシスを設けて、点２２４をパルス変化点とする。以下同様に、基準となるパルス変化点に対して"−α"度のヒステリシスを設けた角度をパルス変化点とする。すなわち、角度値に対して±αのヒステリシスを設けたことになる。この結果として、モータ等が低速で駆動している時におけるアナログエンコーダ信号１０２、１０４の角速度が低速になる。よって、角度値の進みが遅くなったときに、計算された角度データ１５２にノイズが載っているときにも、生成した２相のエンコーダパルス１６２、１６４のエッジにばたつきが生じることなくなる。そして、後段のエンコーダカウンタ（図示せず）においても、速度データの誤検出をすることがなくなる。
【００２１】
図５は、角度値に対してヒステリシスを設けて生成した２相のエンコーダパルス１６２、１６４の一例を示す図である。図５に示すように、２相のエンコーダパルス１６２、１６４のエッジにばたつきがないことが分かる。
図６は、２相パルス生成部１６０の詳細な構成の一例を示す図である。本実施形態では、角度値より２相のエンコーダパルス１６２、１６４のデータ（２ｂｉｔの０／１信号）を生成する方法としてＬＵＴ（ルックアップテーブル）方式を用いている。２相のエンコーダパルス１６２、１６４を生成する際にヒステリシスを設ける方法として、２つのＬＵＴを設けている。ＬＵＴ３００は、パルス変化点２１０、２２０、・・・に＋α度を加算した点２１４、２２４、・・・を角度閾値とし、その点で２相のエンコーダパルス１６２、１６４が変化するようにするためのルックアップテーブルである。ＬＵＴ３１０は、パルス変化点２１０、２２０、・・・に−α度を加算した点２１２、２２２、・・・を角度閾値とし、その点で２相のエンコーダパルス１６２、１６４が変化するようにするためのルックアップテーブルである。比較器（ＣＭＰ）３２０は、ＬＵＴ３００と、ＬＵＴ３１０の出力を比較する。セレクタ（ＳＥＬ）３３０は、ＬＵＴ３００の出力と出力ラッチ（Ｄ）３４０の出力とを切り替える。出力ラッチ（Ｄ）３４０は、セレクタ３３０の出力をラッチするためのものである。図６において、ＬＵＴ３００、３１０の出力と、比較器３２０の入力と、セレクタ３３０の入出力と、出力ラッチ３４０の入出力は、各２ビットである。
【００２２】
図６において、２相パルス生成部１６０に入力される角度データ１５２に基づく角度値は、ＬＵＴ３００、３１０に入力される。ＬＵＴ３００は、ＣＷ用のルックアップテーブルであり、前述したように、図４に示したヒステリシス"＋α"を含んだ変化点２１４、２２４、・・・において、Ａ相、Ｂ相のパルスが順次変化するテーブルである。また、ＬＵＴ３１０は、ＣＣＷ用のルックアップテーブルであり、図４で示したヒステリシス"−α"を含んだ変化点２１２、２２２、・・・において、Ａ相、Ｂ相のパルスが順次変化するテーブルである。
【００２３】
比較器３２０は、これらのＬＵＴ３００とＬＵＴ３１０の出力とを比較する。ＬＵＴ３００とＬＵＴ３１０の出力とを比較すると、パルス変化点２１０、２２０、・・・の前後±α度の範囲（点２１２、２１４の間、点２２２、２２４の間、・・・）では、ＬＵＴ３００とＬＵＴ３１０の出力は一致しない。一方、パルス変化点の前後±α度の範囲と異なるところでは、ＬＵＴ３００とＬＵＴ３１０の出力は一致する。比較器３２０は、この一致した（又は一致しない）という信号をセレクタ３３０に送る。セレクタ３３０は、比較器３２０により、２つのＬＵＴ３００、３１０の出力が一致したか、しないかによって出力を切替える。すなわち、セレクタ３３０は、２つのＬＵＴ３００、３１０の出力が一致した際には、ＬＵＴ３００の出力を選択する。一方、セレクタ３３０は、２つのＬＵＴ３００、３１０の出力が一致しないときには、角度±αのヒステリシス内ということで、出力データを更新せずにその前のデータ（出力ラッチ３４０）の出力を選択する。このようにして、角度±αのヒステリシスを設ける。別の表現をすると、角度±αの区間、不感帯を設けることになる。
【００２４】
図７は、ノイズを含む角度値と、Ａ相のエンコーダパルスの一例を示す図である。図７では、Ａ相のエンコーダパルスが、角度値２度毎にパルスが反転する状況でのグラフである。これは、９０逓倍に相当するが、逓倍は、一例である。図７において、横軸は時間経過を表し、縦軸はエンコーダの角度と、Ａ相のエンコーダパルスの値（０／１）を表している。
図７（ａ）は、ノイズを含んだ角度値（角度データ１５２）と、ヒステリシスを用いずに生成されたＡ相のエンコーダパルス７０１の波形を示した図である。図７（ａ）では、エンコーダの角度が、０〜１０〜０°と変化しているときに、ノイズを含んだ角度値（角度データ１５２）が得られている状態を示している。
Ａ相のエンコーダパルス７０１が、角度値２度毎に反転する。このために、角度値が２度、４度、６度、８度、１０度を角度閾値として、Ａ相のエンコーダパルス７０１が反転する。しかし、角度値（角度データ１５２）にノイズが乗っているために、Ａ相のエンコーダパルス７０１のエッジにバタツキが生じている。
【００２５】
図７（ｂ）は、ノイズを含んだ角度値と、ヒステリシスを用いて生成されたＡ相のエンコーダパルス１６２の波形を示した図である。図７（ｂ）でも、図７（ａ）と同様に、エンコーダの角度が、０〜１０〜０°と変化しているときに、ノイズを含んだ角度値（角度データ１５２）が得られている状態を示している。
本実施形態では、このノイズを含んだ角度値（角度データ１５２）に対して、ＣＷ方向に対しては"＋α度"のヒステリシスを、ＣＣＷ方向に対しては"−α度"のヒステリシスをそれぞれ設けて、Ａ相のエンコーダパルス１６２を生成している。Ａ相のエンコーダパルス１６２は、角度値２度毎に反転するのであるが、ヒステリシスがついている。このために、ＣＷ方向（角度値が０〜１０度に上がっている方向）では、２＋α度、４＋α度、６＋α度、８＋α度が角度閾値となり、この角度閾値でＡ相のエンコーダパルス１６２が反転している。ここで、角度値（角度データ１５２）が１０＋α度を超えていないために、１０度近辺では、Ａ相のエンコーダパルス１６２は反転していない。同様に、ＣＣＷ方向（角度値が１０〜０度に下がっている方向）では、８−α度、６−α度、４−α度、２−α度が角度閾値となり、この角度閾値でＡ相のエンコーダパルス１６２が反転している。このように、ノイズを含んだ角度値（角度データ１５２）に対してヒステリシスを設けることにより、Ａ相のエンコーダパルスのエッジにばたつきがなく、正しいエンコーダパルスを生成していることがわかる。
【００２６】
以上のように本実施形態では、擬似正弦波として入力されたアナログエンコーダ信号１０２、１０４に基づいて、エンコーダで検出した角度を示す角度データ１５２を導出し、導出した角度データ１５２に基づいてエンコーダパルスのデータを順次生成する。この際に、出力したエンコーダパルスのデータをラッチしておく。そして、逓倍設定値に基づくエンコーダパルスの変化点からα度の範囲では、それまでにラッチしておいたデータを使用し、その他の角度の範囲では、生成したデータを使用する。したがって、生成したエンコーダパルス１６２、１６４エッジのばたつきを抑えることを、容易に且つ確実に実現することができる。特に、本実施形態では、モータ等が低速で駆動している時に、アナログエンコーダ信号１０２、１０４の角速度が低速になった時にも、エンコーダパルス１６２、１６４のエッジのばたつきを抑えることが可能になる。更に、生成したエンコーダパルス１６２、１６４のばたつきを抑えることができたために、後段のエンコーダカウンタにおいて速度値の誤検出を防止することが可能となる。このために、モータ等のメカトロ制御での制御異常を防止することが可能になる。
【００２７】
本実施形態においては、ＬＵＴ３００、３１０をＣＰＵ（図示せず）から書込み可能とすることで、ヒステリシス量"±α"度を任意に変えることが可能である。この際に、２つのＬＵＴ３００、３１０を両方書き替える事でもよいが、結果的に"±α"分のヒステリシスを確保すればよいために、片方のみの書き替えることでもヒステリシスの量を任意に設定することが可能である。
【００２８】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。第１の実施形態では、ＬＵＴを２つ用いた場合を例に挙げて説明した。これに対し、本実施形態では、ＬＵＴを１つのみとし、レジスタを用いてヒステリシスを設定する。このように本実施形態と第１の実施形態とは、エンコーダパルス（ヒステリシス）を生成する処理の一部が主として異なる。したがって、本実施形態の説明において、第１の実施形態と同一の部分については、図１〜図７に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００２９】
以下、図８を参照して、ヒステリシスをつける別の実施形態について説明する。
図８は、２相パルス生成部の詳細な構成の一例を示す図である。
図８において、データ４００は、ヒステリシスなしに相当する"０"を示すデータである。レジスタ（Ｄ）４１０は、ヒステリシスの量（２α）をＣＰＵ（図示せず）からの指令により設定する。セレクタ４２０は、データ４００とレジスタ４１０の出力との何れかを選択する。加算器４３０は、２相パルス生成部に入力された角度データ１５２に基づく角度値に対してセレクタ４２０により選択された値を加算する。ＬＵＴ４４０は、２相パルス生成部に入力された角度データ１５２に基づく角度値に対するエンコーダパルスを格納するルックアップテーブルである。尚、本実施形態では、ＬＵＴ４４０には、Ａ相用のものと、Ｂ相用のものとがある。
【００３０】
第１のラッチ（Ｄ）４５０は、ＬＵＴ４４０の出力をラッチするためのものである。第２のラッチ（Ｄ）４６０は、第１のラッチ４５０の出力をラッチするためのものである。比較器（ＣＭＰ）４７０は、第１のラッチ４５０と第２のラッチ４６０の出力を比較するためのものである。セレクタ（ＳＥＬ）４８０は、第２のラッチ４６０の出力と、出力ラッチ４９０の出力とを切り替える。出力ラッチ４９０は、セレクタ４８０の出力をラッチするためのものである。
【００３１】
図８において、ＬＵＴ４４０の出力と、比較器４７０の入力と、第１のラッチ４５０、第２のラッチ４６０、セレクタ４８０、及び出力ラッチ４９０の入出力は各２ビットである。図８では、２相パルス生成部に入力される角度データ１５２に基づく角度値（１データ）に対して、当該角度値と、これに対してヒステリシスの量（＝２α）を加算した角度値との２データの処理を倍速で行い、Ａ相、Ｂ相のエンコーダパルスを出力する。
まず、２相パルス生成部に入力された角度データ１５２に基づく角度値に対して、セレクタ４２０により、ヒステリシスなしに相当するデータ４００（"０"）が選択される。そして、２相パルス生成部に入力された角度データ１５２に基づく角度値は、加算器４３０でデータ４００と加算される（ただし、データ４００は"０"なので、加算器４３０からは当該角度値が出力される）。そして、ＬＵＴ４４０によって、当該角度値がエンコーダパルスに変換されて出力され、第１のラッチ４５０にラッチされる。
【００３２】
次に、第１のラッチ４５０の出力が第２のラッチ４６０にラッチされる。これと共に、２相パルス生成部１６０に入力された角度データ１５２に基づく角度値と同じ角度値に対して、セレクタ４２０により、ヒステリシスの量に相当するレジスタ４１０の値（＝２α）が選択される。そして、加算器４３０により、当該角度値にヒステリシスの量が加算される。ヒステリシスの量が加算された角度値が、ＬＵＴ４４０によってエンコーダパルスに変換されて出力され、第１のラッチ４５０にラッチされる。この状態により、第２のラッチ４６０には、２相パルス生成部に入力された角度データ１５２に基づく角度値に対するエンコーダパルスのデータがラッチされる。また、第１のラッチ４５０には、２相パルス生成部に入力された角度データ１５２に基づく角度値にヒステリシスの量が加算された角度値に対するエンコーダパルスのデータがラッチされる。
【００３３】
これらの２つのラッチ４５０、４６０の出力を比較器４７０により比較し、２つのデータが等しいか否かの判断を行う。この判断の結果、２つのラッチ４５０、４６０から出力されたデータが等しい場合には、セレクタ４８０により、第２のラッチ４６０の出力が選択されて、出力ラッチ４９０にラッチされる。一方、２つのラッチから出力されたデータが等しくない場合には、セレクタ４８０により、出力ラッチ４９０の出力が選択されて、出力ラッチ４９０の内容は変化しない。
先に説明した第１の実施形態では、ＬＵＴを２つ使用したものであり、ヒステリシスの量を加味したテーブルを作成する必要があった。これに対して、本実施形態では、ＬＵＴは１つのみである。基本的に角度値に対してエンコーダパルスを生成する、Ａ相、Ｂ相のエンコーダパルスのテーブルを持つ。このテーブルに対して、ヒステリシスの量に相当する角度をレジスタ４１０で設定する。このために、テーブルの量を半分にすることができるとともに、レジスタの設定値を書き替えるだけで、ヒステリシスの量を変更することができる、というメリットを持つ。
【００３４】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。第１、第２の実施形態では、ヒステリシスが一定である場合を例に挙げて説明した。これに対し、本実施形態では、ヒステリシスの量を制御する場合について説明する。このように、本実施形態と、第１、第２の実施形態とは、ヒステレシスを設定する構成の一部が主として異なる。したがって、本実施形態の説明において、第１、第２の実施形態と同一の部分については、図１〜図８に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００３５】
（第１の例）
図９は、角度の不感帯（ヒステリシス）を設けてエンコーダパルス１６２、１６４のエッジを生成する方法の一例を説明するための図である。ここでは、２相のエンコーダパルスを22.5度ごとに変化させ、３６０度で４逓倍のパルスを生成する場合を例に挙げて示している。前述したように、実際には、例えば、８逓倍、１６逓倍のパルスを生成するが、これでは、角度が細かすぎてしまい図で表現しにくいので、ここでは、４逓倍のパルスを生成する場合について説明を行う。尚、図９の縦軸と横軸は、図３に示したものと同じである。
【００３６】
第１の実施形態（図４）では、２相のエンコーダパルスを４５度毎に変化させ、これに対して±αのヒステリシスを設けた場合を例に挙げて説明を行った。これに対し、図９においては、２相のエンコーダパルス（パルス変化点５１０、５２０、５３０、・・・）を22.5度毎に変化させ、これに対して±α1のヒステリシスを設ける。図９に示す例では、基準となるパルス変化点５１０、５２０、５３０に対して、"＋α1"度のヒステリシスを設けて、点５１４、５２４、５３４をパルス変換点とする。同様に、基準となるパルス変化点５１０、５２０、５３０に対して、"−α1"度のヒステリシスを設けて、点５１２、５２２、５３２をパルス変換点とする。すなわち、本例では、生成するエンコーダパルス１６２、１６４の角度間隔に応じてヒステリシス量を制御する形態である。このようにすると、生成するエンコーダパルス１６２、１６４の角度間隔の大きい時には、ヒステリシスの量を大きく、小さい時にはヒステリシスの量を小さく制御することにより、エンコーダパルス１６２、１６４のエッジのばたつきを、より適切に抑えられる。このような処理を実現するために、例えば、エンコーダパルスの角度間隔と、ヒステリシスの量との対応関係を記憶したテーブルを予め記憶しておく。そして、ＣＰＵが、生成するエンコーダパルス１６２、１６４の角度間隔に対応するヒステリシスの量を読み出して、ＬＵＴ３００、３１０やレジスタ４１０に設定することにより実現できる。
【００３７】
（第２の例）
また、生成するエンコーダパルス１６２、１６４の角度間隔だけではなく、入力された擬似正弦波である２相のアナログエンコーダ信号１０２、１０４のサンプリング周期に応じて、ヒステリシスの量を制御することも可能である。２相のアナログエンコーダ信号１０２、１０４のサンプリング周期が大きい時には、ヒステリシスの量を大きく、小さい時にはヒステリシスの量を小さく制御する。これによって、サンプリング周期によるノイズの影響によらずに、エンコーダパルスのエッジのばたつきを抑えたエンコーダパルス１６２、１６４の生成が可能になる。このような処理を実現するために、例えば、２相のアナログエンコーダ信号１０２、１０４のサンプリング周期と、ヒステリシスの量との対応関係を記憶したテーブルを予め記憶しておく。そして、ＣＰＵが、ＡＤＩＦ１１０等からサンプリング周期を取得し、取得したサンプリング周期に対応するヒステリシスの量を読み出して、ＬＵＴ３００、３１０やレジスタ４１０に設定する。
【００３８】
（第３の例）
更に、測定対象となるターゲットメカ（図示せず）の移動速度、すなわち、アナログエンコーダ信号１０２、１０４の角速度に応じて、ヒステリシス量を変更することも可能である。アナログエンコーダ信号１０２、１０４の角速度が速い時にはヒステリシス量を小さく、アナログエンコーダ信号１０２、１０４の角速度が遅い時にはヒステリシス量を大きくする。これにより、モータ等が低速で駆動している時に、アナログエンコーダ信号１０２、１０４の角速度が低速になっても、生成するエンコーダパルス１６２、１６４のエッジのばたつきを抑えることができる。さらに、アナログエンコーダ信号１０２、１０４の角速度が高速になっても、生成するエンコーダパルス１６２、１６４のエッジのパルス抜けを防止することが可能となる。このことにより、低速時、高速時ともに、適正なエンコーダパルス１６２、１６４の生成が可能となる。このような処理を実現するために、例えば、アナログエンコーダ信号１０２、１０４の角速度と、ヒステリシスの量との対応関係を記憶したテーブルを予め記憶しておく。そして、ＣＰＵが、エンコーダ（図示せず）等から、アナログエンコーダ信号１０２、１０４の角速度を取得し、取得した角速度に対応するヒステリシスの量を読み出して、ＬＵＴ３００、３１０やレジスタ４１０に設定する。また、アナログエンコーダ信号１０２、１０４の角速度の代わりに、角度計算部１５０で得られた角度データ１５２の角速度を用いるようにしてもよい。
【００３９】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００４０】
（その他の実施例）
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）が当該コンピュータプログラムを読み出して実行する。
【符号の説明】
【００４１】
１３０  領域分割部、１５０  角度計算部、１６０  ２相パルス生成部
【図１】
2011180073.tif 000003
【図２】
2011180073.tif 000004
【図３】
2011180073.tif 000005
【図４】
2011180073.tif 000006
【図５】
2011180073.tif 000007
【図６】
2011180073.tif 000008
【図７】
2011180073.tif 000009
【図８】
2011180073.tif 000010
【図９】
2011180073.tif 000011