(57)【要約】【課題】可動部材の速度が急変したような場合でも実際の速度変化に近いパルス幅の変化が得られるエンコーダを提供する。【解決手段】エンコーダは、スケール１０との相対移動が可能であり、スケールの周期パターン１１を検出して周期信号を出力するセンサ２０と、周期信号の位相を第１の所定時間ごとに検出する位相検出手段３２と、該位相として検出された第１および第２の位相との差に応じた生成パルス数を算出するパルス数算出手段３３と、該生成パルス数を、第１の所定時間よりも長い第２の所定時間で平滑化して第１の所定時間ごとの出力パルス数を算出するパルス数平滑化手段３４と、出力パルス数に応じたパルス信号を第１の所定時間内において生成するパルス生成手段３５とを有する。パルス数平滑化手段は、ｐｉ＝ＣＥＩＬ［（ｑｉ−１＋ｒｉ）／ｃ］，ｑｉ＝ｑｉ−１＋ｒｉ−ｐｉで表される出力パルス数ｐｉを算出する。【選択図】図４
2015094668.tif 000002
【特許請求の範囲】
【請求項１】
周期パターンが設けられたスケールと、
該スケールとの相対移動が可能であり、前記周期パターンを検出して該周期パターンに応じた変化周期を有する周期信号を出力するセンサと、
前記周期信号の位相を第１の所定時間ごとに検出する位相検出手段と、
前記位相として検出された第１の位相とその次に前記位相として検出された第２の位相の差に応じた生成パルス数を算出するパルス数算出手段と、
前記生成パルス数を、前記第１の所定時間よりも長い第２の所定時間で平滑化して前記第１の所定時間ごとの出力パルス数を算出するパルス数平滑化手段と、
前記出力パルス数に応じたパルス信号を前記第１の所定時間内において生成するパルス生成手段とを有し、
ｉを０を含み、前記第１の所定時間ごとの順番を示す自然数とし、ｃを正の定数とし、ｒｉをｉ番目に算出される前記生成パルス数とし、ｐｉをｉ番目の前記第１の所定時間内での前記出力パルス数とし、ｑｉ−１をｉ−１番目に保持されてｉ番目にｒｉに加算されるパルス数とし、ｑ０＝０とし、ＣＥＩＬ［ｘ］をｘ以上の最小の整数とするとき、前記パルス数平滑化手段が算出する前記出力パルス数が、
ｐｉ＝ＣＥＩＬ［（ｑｉ−１＋ｒｉ）／ｃ］
ｑｉ＝ｑｉ−１＋ｒｉ−ｐｉ
を満足することを特徴とするエンコーダ。
【請求項２】
パルス数平滑化手段は、
ｑｉ−１の値を記憶する記憶手段と、
ｑｉ−１＋ｒｉに相当する演算を行う加算手段と、
（ｑｉ−１＋ｒｉ）／ｃに相当する演算を行うとともにＣＥＩＬ［（ｑｉ−１＋ｒｉ）／ｃ］の値を出力する除算手段とを有することを特徴とする請求項１に記載のエンコーダ。
【請求項３】
前記正の定数であるｃは、２のべき乗であることを特徴とする請求項１または２に記載のエンコーダ。
【請求項４】
前記パルス信号が変化する時間間隔を平滑化するパルス幅平滑化手段を有することを特徴とする請求項１から３のいずれか一項に記載のエンコーダ。
【請求項５】
請求項１から４のいずれか一項に記載のエンコーダと、
前記スケールまたは前記センサが設けられ、移動が可能な可動部材と、
前記エンコーダから出力されるパルス信号を用いて前記可動部材の位置または移動を制御する制御手段とを有することを特徴とする装置。
【請求項６】
前記可動部材として光学素子を有する光学機器であることを特徴とする請求項５に記載の装置。
【請求項７】
周期パターンが設けられたスケールと、該スケールとの相対移動が可能であり、前記周期パターンを検出して該周期パターンに応じた変化周期を有する周期信号を出力するセンサとを有するエンコーダに対して用いられる信号処理方法であって、
前記周期信号の位相を第１の所定時間ごとに検出し、
前記位相として検出された第１の位相とその次に前記位相として検出された第２の位相の差に応じた生成パルス数を算出し、
前記生成パルス数を、前記第１の所定時間よりも長い第２の所定時間で平滑化して前記第１の所定時間ごとの出力パルス数を算出し、
前記出力パルス数に応じたパルス信号を前記第１の所定時間内において生成し、
ｉを０を含み、前記第１の所定時間ごとの順番を示す自然数とし、ｃを正の定数とし、ｒｉをｉ番目に算出された前記生成パルス数とし、ｐｉをｉ番目の前記第１の所定時間内での前記出力パルス数とし、ｑｉ−１をｉ−１番目に保持されてｉ番目にｒｉに加算されるパルス数とし、ｑ０＝０とし、ＣＥＩＬ［ｘ］をｘ以上の最小の整数とするとき、
前記生成パルス数の平滑化により算出される前記出力パルス数が、
ｐｉ＝ＣＥＩＬ［（ｑｉ−１＋ｒｉ）／ｃ］
ｑｉ＝ｑｉ−１＋ｒｉ−ｐｉ
を満足することを特徴とするエンコーダ信号処理方法。
【請求項８】
周期パターンが設けられたスケールと、該スケールとの相対移動が可能であり、前記周期パターンを検出して該周期パターンに応じた変化周期を有する周期信号を出力するセンサとを有するエンコーダにおいて用いられるコンピュータプログラムであって、コンピュータに、
前記周期信号の位相を第１の所定時間ごとに検出させ、
前記位相として検出された第１の位相とその次に前記位相として検出された第２の位相の差に応じた生成パルス数を算出させ、
前記生成パルス数を、前記第１の所定時間よりも長い第２の所定時間で平滑化して前記第１の所定時間ごとの出力パルス数を算出させ、
前記出力パルス数に応じたパルス信号を前記第１の所定時間内において生成させ、
ｉを０を含み、前記第１の所定時間ごとの順番を示す自然数とし、ｃを正の定数とし、ｒｉをｉ番目に算出された前記生成パルス数とし、ｐｉをｉ番目の前記第１の所定時間内での前記出力パルス数とし、ｑｉ−１をｉ−１番目に保持されてｉ番目にｒｉに加算されるパルス数とし、ｑ０＝０とし、ＣＥＩＬ［ｘ］をｘ以上の最小の整数とするとき、
前記コンピュータに前記生成パルス数の平滑化により算出させる前記出力パルス数が、
ｐｉ＝ＣＥＩＬ［（ｑｉ−１＋ｒｉ）／ｃ］
ｑｉ＝ｑｉ−１＋ｒｉ−ｐｉ
を満足することを特徴とするエンコーダ信号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光学機器等の各種装置に用いられて、該装置内の可動部材の移動に応じたスケールとセンサとの相対移動に伴って該可動部材の位置を示す信号を出力するエンコーダに関する。
【背景技術】
【０００２】
可動部材の位置や速度を検出するために使用されるエンコーダは、周期パターンが設けられたスケールと、該スケールとの相対移動に伴い、周期パターンに応じて周期的に変化する周期信号を出力するセンサとを有する。また、エンコーダには、センサから出力された周期信号からパルス信号を生成して出力するものがある。このエンコーダからのパルス信号を受け取った上位システムは、該エンコーダからのパルス信号の数や周期から、可動部材の位置や速度を算出し、該可動部材の駆動を制御する。
【０００３】
このようなパルス出力機能を持つエンコーダとして、特許文献１には、分解能の向上のために、内挿回路を用いて離散的に周期信号の位相を求め、単位時間毎の位相の差分に相当する数のパルスのパルス幅を単位時間ごとに平均化して出力するものが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１３２６０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１にて開示されたエンコーダのように、単位時間毎の位相の差分に相当する数のパルスのパルス幅を平均化して出力する構成を採った場合、可動部材の速度が急変した際に、実際の速度変化以上にパルス幅が急変することがある。このため、エンコーダからのパルス信号を受け取る上位システムにおいて、パルス幅の急変が外乱として扱われたり可動部材の位置や速度が誤算出されたりして、可動部材の駆動を制御するための動作が不安定となるおそれがある。
【０００６】
本発明は、可動部材の速度が急変したような場合でも、可動部材の実際の速度変化に近いパルス幅の変化が得られるようにしたエンコーダを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面としてのエンコーダは、周期パターンが設けられたスケールと、該スケールとの相対移動が可能であり、周期パターンを検出して該周期パターンに応じた変化周期を有する周期信号を出力するセンサと、該周期信号の位相を第１の所定時間ごとに検出する位相検出手段と、該位相として検出された第１の位相とその次に該位相として検出された第２の位相の差に応じた生成パルス数を算出するパルス数算出手段と、該生成パルス数を、第１の所定時間よりも長い第２の所定時間で平滑化して第１の所定時間ごとの出力パルス数を算出するパルス数平滑化手段と、出力パルス数に応じたパルス信号を第１の所定時間内において生成するパルス生成手段とを有する。そして、ｉを０を含み、第１の所定時間ごとの順番を示す自然数とし、ｃを正の定数とし、ｒｉをｉ番目に算出される生成パルス数とし、ｐｉをｉ番目の第１の所定時間内での出力パルス数とし、ｑｉ−１をｉ−１番目に保持されてｉ番目にｒｉに加算されるパルス数とし、ｑ０＝０とし、ＣＥＩＬ［ｘ］をｘ以上の最小の整数とするとき、パルス数平滑化手段が算出する出力パルス数が、
ｐｉ＝ＣＥＩＬ［（ｑｉ−１＋ｒｉ）／ｃ］
ｑｉ＝ｑｉ−１＋ｒｉ−ｐｉ
を満足することを特徴とする。
【０００８】
なお、上記エンコーダと、該エンコーダのスケールおよびセンサのうち一方が設けられ、移動が可能な可動部材と、該エンコーダから出力されるパルス信号を用いて前記可動部材の位置または移動を制御する制御手段とを有することを特徴とする装置も、本発明の他の一側面を構成する。
【０００９】
また、本発明の他の一側面としてのエンコーダ信号処理方法は、周期パターンが設けられたスケールと、該スケールとの相対移動が可能であり、周期パターンを検出して該周期パターンに応じた変化周期を有する周期信号を出力するセンサとを有するエンコーダに対して用いられる。該エンコーダ信号処理方法は、周期信号の位相を第１の所定時間ごとに検出し、該位相として検出された第１の位相とその次に該位相として検出された第２の位相の差に応じた生成パルス数を算出し、生成パルス数を、第１の所定時間よりも長い第２の所定時間で平滑化して第１の所定時間ごとの出力パルス数を算出し、該出力パルス数に応じたパルス信号を第１の所定時間内において生成する。そして、ｉを０を含み、第１の所定時間ごとの順番を示す自然数とし、ｃを正の定数とし、ｒｉをｉ番目に算出される生成パルス数とし、ｐｉをｉ番目の第１の所定時間内での出力パルス数とし、ｑｉ−１をｉ−１番目に保持されてｉ番目にｒｉに加算されるパルス数とし、ｑ０＝０とし、ＣＥＩＬ［ｘ］をｘ以上の最小の整数とするとき、生成パルス数の平滑化により算出される出力パルス数が、
ｐｉ＝ＣＥＩＬ［（ｑｉ−１＋ｒｉ）／ｃ］
ｑｉ＝ｑｉ−１＋ｒｉ−ｐｉ
を満足することを特徴とする。
【００１０】
さらに、本発明の他の一側面としてのエンコーダ信号処理プログラムは、周期パターンが設けられたスケールと、該スケールとの相対移動が可能であり、周期パターンを検出して該周期パターンに応じた変化周期を有する周期信号を出力するセンサとを有するエンコーダにおいて用いられるコンピュータプログラムである。該プログラムは、コンピュータに、周期信号の位相を第１の所定時間ごとに検出させ、該位相として検出された第１の位相とその次に該位相として検出された第２の位相の差に応じた生成パルス数を算出させ、該生成パルス数を、第１の所定時間よりも長い第２の所定時間で平滑化して第１の所定時間ごとの出力パルス数を算出させ、該出力パルス数に応じたパルス信号を第１の所定時間内において生成させる。そして、ｉを０を含み、第１の所定時間ごとの順番を示す自然数とし、ｃを正の定数とし、ｒｉをｉ番目に算出される生成パルス数とし、ｐｉをｉ番目の第１の所定時間内での出力パルス数とし、ｑｉ−１をｉ−１番目に保持されてｉ番目にｒｉに加算されるパルス数とし、ｑ０＝０とし、ＣＥＩＬ［ｘ］をｘ以上の最小の整数とするとき、コンピュータに生成パルス数の平滑化により算出させる出力パルス数が、
ｐｉ＝ＣＥＩＬ［（ｑｉ−１＋ｒｉ）／ｃ］
ｑｉ＝ｑｉ−１＋ｒｉ−ｐｉ
を満足することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、第１および第２の位相との差（移動量）に応じた生成パルス数を平滑化して第１の所定時間での出力パルス数を算出するので、可動部材の速度が急変したような場合でも実際の可動部材の速度変化に近いパルス幅の変化が得られる。これにより、該エンコーダを備えた装置において、可動部材の駆動の安定した制御を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例１であるエンコーダの構成を示すブロック図。
【図２】実施例１のエンコーダにて用いられるスケールを示す図。
【図３】実施例１のエンコーダにて用いられるセンサ（受光部）の構成を示す図。
【図４】実施例１のエンコーダにおける信号処理部の構成を示すブロック図。
【図５】上記信号処理部に設けられたパルス数平滑化部の構成を示すブロック図。
【図６】上記信号処理部に設けられたパルス生成部の構成を示すブロック図。
【図７】実施例１における生成パルス数とパルス信号との時系列での関係を示す図。
【図８】実施例１において信号処理部が行うパルス生成処理の流れを示すフローチャート。
【図９】実施例１のエンコーダを用いた本発明の実施例２である装置（光学機器）の構成を示す図。
【発明を実施するための形態】
【００１３】
以下、本発明の実施例について図面を参照しながら説明する。
【実施例１】
【００１４】
図１には、本発明の実施例１であるエンコーダの構成を示している。エンコーダは、トラック１１が設けられたスケール１０と、発光部２２および受光部２１を有するセンサ２０と、信号処理部３０とにより構成されている。本実施例のエンコーダは、スケール１０とセンサ２０との直線方向での相対移動量（位置）に応じた２相パルス信号を信号処理部３０から出力する反射型光学式リニアエンコーダである。
【００１５】
以下、本実施例のエンコーダを搭載した装置において、該エンコーダによる位置または移動（速度）の制御対象である可動部材にスケール１０が取り付けられ、装置の不動部（固定部）にセンサ２０が取り付けられている場合について説明する。つまり、センサ２０に対してスケール１０が移動し、可動部材に取り付けられたスケール１０の位置を検出する場合について説明する。ただし、可動部材にセンサを、不動部にスケールをそれぞれ取り付けてセンサがスケールに対して移動するようにして、センサの位置を検出するようにしてもよい。
【００１６】
図２に詳しく示すように、スケール１０のトラック１１には、スケール１０とセンサ２０の相対移動方向に延びる周期パターンが設けられている。各周期パターンには、反射部（図中の黒色の部分）と非反射部（図中の白抜き部分）とが、該相対移動方向に周期的に交互に配置されている。トラック１１、つまりは周期パターンの周期（ピッチ）は、Ｐ１０である。また、スケール１０とセンサ２０の相対移動方向（周期パターンの周期方向）を、以下の説明では位置検出方向という。
【００１７】
また、図１に示すように、センサ２０の発光部２２と受光部２１とは同一平面上に配置されており、発光部２２からトラック１１に向けて照射された光のうち反射部にて反射した光を受光部２１で受光する。
【００１８】
受光部２１には、図３に示すように、複数の受光素子２１ａ，２１ｂ，２１ｃ，２１ｄが周期パターンの周期Ｐ１０の半分のピッチＰ１０／２で位置検出方向に並んで配置されている。具体的には、４つの受光素子２１ａ，２１ｂ，２１ｃ，２１ｄが循環的に（図３では４回循環するように）位置検出方向に並んでいる。スケール１０がセンサ２０に対して移動すると（スケール１０とセンサ２０とが相対移動すると）、各受光素子にて受光される反射光の強度が変化する。このとき、４つの受光素子２１ａ，２１ｂ，２１ｃ，２１ｄの出力はそれぞれ、センサ２０内でＡ（＋），Ｂ（＋），Ａ（−），Ｂ（−）として扱われる。そして、Ａ＝Ａ（＋）−Ａ（−）およびＢ＝Ｂ（＋）−Ｂ（−）によって、互いに位相が異なり、トラック１１の周期パターン（の周期Ｐ１０）に応じた変化周期を有する２相の擬似正弦波信号（以下、周期信号という）Ａ，Ｂが生成される。この２相の周期信号Ａ，Ｂは、信号処理部３０に出力される。
【００１９】
また、本実施例では、発光部２２に用いられている光源はＬＥＤ等の発散光光源であり、前述したように発光部２２と受光部２１とが同一平面上に配置された反射光学系が構成されている。このため、発光部２２からトラック１１に照射され、ここで反射した光により受光部２１上に投影される周期パターンは２倍に拡大される。したがって、受光部２１上での位置検出方向におけるＰ１０／２の幅は、トラック１１上ではＰ１０／４に相当する。つまり、スケール１０がセンサ２０に対してＰ１０だけ移動すると、受光部２１上に投影される周期パターンは２×Ｐ１０だけ移動する。２×Ｐ１０は４つの受光素子２１ａ，２１ｂ，２１ｃ，２１ｄ１からなる受光素子群の幅と同じであるため、スケール１０のセンサ２０に対するＰ１０の移動によって１周期の２相周期信号Ａ，Ｂが生成および出力される。また、２相周期信号Ａ，Ｂの検出位置の重心はそれぞれ、受光部２１上のＢ（＋）の受光素子２１ｂとＡ（−）の受光素子２１ｃに相当し、これらは相対的にＰ１０／２ずれているため、位相に換算すると、２相周期信号Ａ，Ｂはπ／２だけずれていることになる。
【００２０】
信号処理部３０は、図４に示すように、ＡＤコンバータ３１と、位相検出処理部３２と、パルス数算出部３３と、パルス数平滑化部３４と、パルス生成部３５と、パルス幅平滑化部３６とにより構成されている。信号処理部３０は、センサ２０からの出力信号（２相周期信号Ａ，Ｂ）を用いてパルス生成処理を行い、生成した２相パルス信号を出力する。
【００２１】
図８には、信号処理部３０が行うパルス生成処理（エンコーダ信号処理方法）の流れをフローチャートに示しており、以下の説明におけるステップ１〜６が該フローチャート中のＳ１〜Ｓ６に相当する。
【００２２】
信号処理部３０において、ＡＤコンバータ３１は、センサ２０から出力された２相周期信号をサンプリングしてデジタル信号に変換する（ステップ１）。ＡＤコンバータ３１は、第１の所定時間ごとに動作し、センサ２０からの出力信号を離散的にデジタル信号に変換する。以下の説明では、この第１の所定時間を時間ｔとして説明する。
【００２３】
２相周期信号（擬似正弦波信号）Ａ，Ｂはそれぞれ、位相をθとすると、ｓｉｎθおよびｃｏｓθとして表される。このため、これらに対してａｒｃｔａｎ演算を行うことにより、θ（０≦θ＜２π）を求めることができる。位相検出処理部３２は、ＡＤコンバータ３１によりサンプリングされた２相周期信号Ａ，Ｂのそれぞれに対してａｒｃｔａｎ演算を行い、これらの位相を求める（ステップ２）。前述したように２相周期信号はＡＤコンバータ３１によって時間ｔごとにサンプリングされるため、位相検出処理部３２も、時間ｔごとに新たな位相を求める。以下、パルス生成処理の開始時からｉ番目（ｉ回目）にサンプリングされた２相周期信号Ａ，Ｂの位相をθｉとして説明する。ただし、ｉは０を含み、時間ｔごとの順番を示す自然数（非負整数ともいう）であり、０≦θｉ＜２πとする。
【００２４】
パルス数算出部３３は、今回（最新のｉ番目にサンプリングされた２相周期信号Ａ，Ｂから）求められた位相θｉと、前回（ｉ−１番目にサンプリングされた２相周期信号Ａ，Ｂから）求められた位相θｉ−１との差である位相差を移動量として求める（ステップ３）。位相θｉ−１が第１の位相に相当し、その次に検出される位相θｉが第２の位相に相当する。
【００２５】
そして、パルス数算出部３３は、該移動量から、求められているパルス分解能に応じて、生成するパルス信号の数である生成パルス数を算出する（ステップ４）。つまり、上記位相差から求められた移動量に対応した生成パルス数を算出する。この処理も位相が更新されるごと（時間ｔごと）に行われ、最新の位相がθｉ＋１に更新された際にはθｉ＋１とθｉとの差が移動量として算出される。
【００２６】
本実施例では、θｉとθｉ−１との位相差を以下の式（１）に示すように、−πから＋πの範囲に正規化し、それをΔθｉと表す。ただし、θ０＝０とし、ＭＯＤ（ｘ，ｙ）はｘを被除数とし、ｙを除数としたときの剰余を表す。
【００２７】
【数１】
2015094668.tif 000003
【００２８】
そして、Δθｉから、求められているパルス分解能に応じた生成パルス数ｒｉを求める。Ｉを内挿数とすると、生成パルス数は２πあたりＩパルスとなるため、ｒｉは以下の式（２）で求められる。なお、２πの位相変化はＰ１０の変位に相当するため、このときパルス分解能はＰ１０／Ｉとなる。
【００２９】
【数２】
2015094668.tif 000004
【００３０】
ただし、位相θｉの分解能がパルス分解能に対して高い場合は、端数が生じてｒｉが整数値とならないことがある。この場合は、θｉをパルス分解能にあわせて丸めたり、端数を記憶して次回のｒｉ＋１の算出時に端数を加算したりして対処することができる。
【００３１】
次にパルス数平滑化部３４は、ｔ時間ごとに更新される生成パルス数ｒｉから、ｔ時間内（第１の所定時間内）に出力するパルス信号の数である出力パルス数ｐｉを求める（ステップ５）。本実施例では、ｔ時間の間のスケール１０の移動量に相当する生成パルス数ｒｉを時間ｔよりも長い時間である第２の所定時間で平滑化して出力する。具体的には、パルス数平滑化部３４は、図５（Ａ）に示す処理を行う。すなわち、今回（ｉ番目）の生成パルス数ｒｉを入力とし、今回の出力パルス数ｐｉを出力とするとき、今回の生成パルス数ｒｉと前回（ｉ−１番目）の出力パルス数ｐｉ−１との和の半分を出力パルス数ｐｉとする。なお、ｐ０＝０とし、Ｚ−１は遅延を表す。
【００３２】
このような処理を行うパルス数平滑化部３４は、図５（Ｂ）に示すように、加算部３４１と、シフト部（除算手段）３４２と、記憶部３４３とにより構成することができる。処理の開始時には、記憶部３４３には初期値０が記憶されている。加算部３４１に初回の生成パルス数ｒ１が入力されると、該加算部３４１は、この入力された生成パルス数ｒ１と記憶部３４３に記憶された初期値０とを加算する。続いて、シフト部３４２は、加算部３４１での加算結果であるｒ１を１ビット右シフトし、該シフトの結果にｒ１の最下位ビットを加算した結果を出力パルス数ｐ１として出力する。ここで、１ビット右シフトの演算は２を除数とした除算と同義であり、ｒｉの最下位ビットは２を除数とした除算の剰余である。また、シフト部３４２は、加算結果ｒ１から出力パルス数ｐ１を減じた値を記憶部３４３に記憶する。例えばｒ１が８（偶数）であれば、出力パルス数ｐ１として４が出力され、記憶部３４３には４が記憶される。また、ｒ１が９（奇数）であれば、出力パルス数ｐ１として５が出力され、記憶部３４３には４が記憶される。
【００３３】
パルス数平滑化部３４は、２回目以降の生成パルス数ｒｉ（ｉ≧２）が入力されたときも同様の処理を行う。パルス数平滑化部３４が行う処理（演算）は、以下の式（３），（４）により表される。ただし、ｐｉはｉ番目に算出される出力パルス数であり、ｑｉ−１はｉ−１番目に記憶部３４３に記憶（保持）されてｉ番目にｒｉに加算されるパルス数である。ｑ０＝０である。なお、ｑｉは、ｉ番目までの生成パルス数の積算値とｉ番目までの出力パルス数との差分に相当する。また、ｃは正の定数であり、ＣＥＩＬ（ｘ）はｘ以上の最小の整数を表す天井関数である。
ｐｉ＝ＣＥＩＬ［（ｑｉ−１＋ｒｉ）／ｃ］  ・・・（３）
ｑｉ＝ｑｉ−１＋ｒｉ−ｐｉ      ・・・（４）
続いて、パルス生成部３５は、パルス数平滑化部３４により算出された出力パルス数ｐｉに対応する数の２相パルス信号を生成する（ステップ６）。パルス生成部３５は、図６に示すように、符号分離部３５１と、加算部３５２と、パルス生成判定部３５３と、記憶部３５４と、カウンタ３５５と、パルス変換部３５６とにより構成されている。符号分離部３５１に出力パルス数ｐｉが入力されると、該符号分離部３５１は、パルス信号の出力方向を検出する。カウンタ３５５は出力する２相パルス信号の状態と対応する２ビット（初期値は０）のバイナリカウンタであり、検出された符号が正であればカウンタ３５５の値を１増加し、検出された符号が負であればカウンタ３５５の値を１減少させる。また、出力パルス数ｐｉが０であればカウンタ３５５の値は増減されない。そして、符号分離部３５１は、出力パルス数ｐｉの絶対値を加算器３５２に入力する。
【００３４】
本実施例では、出力パルス数の算出周期に対して、ｎ倍（ｎは自然数）の周期でパルス生成の判定を行う。このため、加算器３５２は、ｔ／ｎ時間ごとに記憶部３５４の値と出力パルス数ｐｉの絶対値とを加算する。ただし、記憶部３５４は、出力パルス数ｐｉが入力されるごとに、つまりは時間ｔごとに０にリセットされる。
【００３５】
パルス生成判定部３５３は、加算部３５２の出力がｎ以上か否かを判定し、ｎ以上であれば上述したように符号に応じてカウンタ３５５の値を１増加または１減少させ、加算器３５２の出力からｎだけ減じた値を記憶部３５４に記憶させる。加算器３５２の出力がｎ以上でなければ、加算器３５２の出力をそのまま記憶部３５４に記憶させる。
【００３６】
ところで、時間ｔ内で出力するパルス数をｐとするとき、時間ｔ／ｐごとにパルス信号を生成することが理想的である。しかし、パルス生成判定部３５３においてパルス信号を生成するか否かの判定は時間ｔ／ｎごとに離散的にしか行えない。そこで、本実施例では、パルス生成判定部３５３を、判定時に時間ｍ×ｔ／ｐを超えていればパルス信号を生成するように構成している。ただし、ｍは時間ｔ内で出力するパルス数のうち既に生成したパルス数を表す。これは判定回数をｊとして、ｊが以下の式（５）を満たしたタイミングでパルス信号を生成していくことを意味する。
【００３７】
【数３】
2015094668.tif 000005
【００３８】
したがって、式（５）に示される判定を回路に実装すればよいのであるが、除算器は乗算器と比較して回路規模が大きく、また乗算器は加算器と比較して回路規模が大きい。そこで、本実施例では、式（５）と等価である以下の式（６）に示される判定を回路に実装し、式（５）の乗算を全て加算器で実現できるように構成している。
【００３９】
【数４】
2015094668.tif 000006
【００４０】
記憶部３５４に記憶されている値が式（６）の左辺に相当し、加算器３５２の出力が式（６）の右辺に相当する。そして、式（６）は、ｋ＝ｊ，ｊ＋１として、以下の式（７）に示される判定を２回行うことと同義である。ｋの値は判定ごとに１ずつ増加するため、同じｋの値の判定を省略することにより、パルス生成判定部３５３では１回の判定のみを行う。
【００４１】
【数５】
2015094668.tif 000007
【００４２】
カウンタ３５５は、前述したように２ビットのバイナリカウンタであるので、上位ビットをＣＯＵＮＴＥＲ［１］、下位ビットをＣＯＵＮＴＥＲ［０］としてパルス変換部３５６において以下の式（８），（９）示す演算を行う。ただし、ＸＯＲは排他的論理和を示す。
ＤＡ１＝ＣＯＵＮＴＥＲ［１］  ＸＯＲ  ＣＯＵＮＴＥＲ［０］     ・・・（８）
ＤＢ１＝ＣＯＵＮＴＥＲ［１］                                   ・・・（９）
このようにして求めたＤＡ１，ＤＢ１が２相パルス信号である。
【００４３】
ｉ，ｒｉ，ｐｉ，ＤＡ１およびＤＢ１の対応関係を、図７を例として説明する。図７は、ｉとｒｉが与えられたときのｐｉ、ＤＡ１およびＤＢ１の状態を表している。本実施例では、生成パルス数ｒｉを平滑化しているため、ｒｉにおいて２０や１５といった極大値に対応する出力パルス数ｐｉの値はそれぞれ１２や１０となり、それらとその前後の値との差は小さくなっている。また、ｒｉ＝０となるｉ≧７の範囲においても、ｐｉはすぐに０とならず、０に向かって徐々に減少する。これらにより、本実施例のエンコーダは、可動部材の実際の速度変化に近いパルス数の変化（つまりはパルス幅の変化）を示すようにパルス信号を生成している。
【００４４】
本実施例では、パルス生成部３５が出力パルス数の算出周期に対してｎ倍（ｎは自然数）の周期でパルス生成の判定を行う場合について説明した。しかし、必ずしもｎが自然数である必要はない。ｎが自然数でない場合にはパルス生成の判定回数がＣＥＩＬ（ｎ）回またはＣＥＩＬ（ｎ）−１回となるため、それに応じて判定条件を修正すればよい。ただし、算出周期を自然数倍とすることで、回路を小型化することができるというメリットが得られる。
【００４５】
さらに、本実施例では、図４に示したパルス幅平滑化部３６が、ＤＡ１またはＤＢ１が変化する時刻の間隔を用いてＤＡ１およびＤＢ１のパルス幅（ＤＡ１，ＤＢ１が変化する時間間隔）を平滑化することにより、２相パルス信号ＤＡ２，ＤＢ２を出力する。具体的には、ｋを自然数とし、ｋ番目にＤＡ１またはＤＢ１が変化した時刻をｓｋとする。そしてｋが２以上の場合において、ｋ番目とｋ−１番目のＤＡ１またはＤＢ１が変化した時刻の差をΔｓｋとし、平滑化後のｋ番目とｋ−１番目のパルス変化の時刻差をｄｋとし、平滑化後のｋ番目にパルス信号を変化させる時刻をｕｋとする。また、Δｓ１＝∞、ｄ１＝０およびｕ１＝ｓ１として、以下の式（１０），（１１），（１２）からｕｋを求める。
【００４６】
【数６】
2015094668.tif 000008
【００４７】
ここで、Δｓｋはパルス信号が変化した時刻の差であるため、パルス幅に相当する。したがって、（Δｓｋ＋Δｓｋ−１）／２を求めることでパルス幅が平滑化される。
【００４８】
ただし、これだけでは平滑化前のパルス信号が変化する時刻ｓｋと平滑化後のパルス信号が変化する時刻ｕｋとの時刻差が大きくなることがある。例えば、可動部材が静止状態から移動を開始したときのように、Δｓｋ−１がΔｓｋに対して非常に大きい場合には、単純に平均すると、平均した値もΔｓｋに対して非常に大きくなる。そこで、本実施例では、３Δｓｋ＜Δｓｋ−１となる場合はｄｋ＝２Δｓｋとして、平滑化前のパルス信号が変化する時刻ｓｋと平滑化後のパルス信号が変化する時刻ｕｋとの時刻差の拡大を抑制している。
【００４９】
なお、パルス幅平滑化部３６において行われる演算はこれに限定されるものではなく、３つ以上の時刻差を使って時刻ｕｋを求めてもよい。また、２つの時刻差が連続していなくてもよい。また、パルス幅を平滑化する効果が得られる条件であれば、本実施例における３Δｓｋ＜Δｓｋ−１といった制約条件を変更してもよい。
【００５０】
そして、パルス幅平滑化部３６は、時刻ｓｋでの２相パルス信号ＤＡ１，ＤＢ１の変化と同じように時刻ｕｋに２相パルス信号ＤＡ２，ＤＢ２を変化させる。例えば、時刻ｓｋにＤＡ１が立ち上がった場合は時刻ｕｋにＤＡ２を立ち上げる。パルス幅平滑化部３６は、このようにして生成したパルスＤＡ２，ＤＢ２を最終的なパルス出力とする。
【００５１】
パルス幅平滑化部３６におけるＤＡ１，ＤＢ１からＤＡ２，ＤＢ２を生成する処理を、図７を例として説明する。表１には、図７に示した時刻ｓｋ，ｕｋ，時刻差Δｓｋ，ｄｋおよび２相パルス信号ＤＡ１，ＤＢ１の数値を示す。ＤＡ１，ＤＢ１が与えられると、パルス幅平滑化部３６は、上述した式（１０）〜（１２）を用いてＤＡ２，ＤＢ２を変化させる時刻ｕｋを求め、２相パルス信号ＤＡ２，ＤＢ２を生成する。図７において時刻５ｔ前後に特に示されるように、ＤＡ２，ＤＢ２はＤＡ１，ＤＢ１と比較して、パルス幅が変化する境界部分において、パルス幅が平滑化されている。
【００５２】
なお、実施例１は反射型光学式リニアエンコーダについて説明したが、実施例１にて説明した処理（エンコーダ信号処理方法）と同様の処理は、透過型光学式エンコーダや、磁気式  静電容量式等の光学式以外のエンコーダや、ロータリエンコーダにも適用できる。言い換えれば、上記処理は、離散的に位相を求め、位相の変化量をパルス信号として出力するエンコーダであれば適用することができる。
【００５３】
また、実施例１では、パルス数算出部３３において位相の差分からパルス数を求め、それ以降の処理を行う場合について説明した。しかし、位相の差分のまま処理を行ってパルス信号の出力時にパルス数を求めるようにしてもよい。これにより、パルス信号の出力時に端数を繰り越す等の処理が必要となるが、より高精度に平滑化を行うことができる。
【００５４】
さらに、実施例１では、パルス数平滑化部３４において出力パルス数を算出する際に２を除数とする除算を行う場合について説明したが、除数は任意に設定することができる。ただし、特に除数が２のべき乗である場合には、回路を小さくすることができるというメリットがある。
【００５５】
また、信号処理部３０をＣＰＵ，ＭＰＵ等のコンピュータにより構成し、図８にフローチャートで示したパルス生成処理を該信号処理部３０がコンピュータプログラム（エンコーダ信号処理プログラム）に従って行うようにしてもよい。
【００５６】
【表１】
2015094668.tif 000009
【実施例２】
【００５７】
図９には、上述した実施例１のエンコーダを搭載した装置の一例として、デジタルスチルカメラやビデオカメラ等の撮像装置（光学機器）を示している。この撮像装置では、エンコーダをレンズ鏡筒内での光学素子の位置を検出するために用いている。
【００５８】
図９において、１０，２０は実施例１のエンコーダを構成するスケールおよびセンサを示す。また、４４は実施例１のエンコーダを構成する信号処理部３０を含み、撮像装置のシステム全体を制御する制御部（ＣＰＵ）を示す。スケール１０は、レンズ鏡筒内において光軸回りで回転する円筒形状のカム環５０の内周面に取り付けられている。カム環５０は、不図示のアクチュエータによって回転駆動される。
【００５９】
レンズ鏡筒内には、撮影光学系４１が収容されている。撮影光学系４１は、カム環５０が回転することで、該カム環５０に形成されたカムによって光軸方向に移動可能な可動部材としての光学素子（例えば、変倍レンズやフォーカスレンズ）４２を含む。
【００６０】
４５は撮影光学系４１により形成された被写体像を光電変換するイメージセンサ（撮像素子）であり、ＣＣＤセンサやＣＭＯＳセンサ等の光電変換素子により構成されている。
【００６１】
光学素子４２を移動させるためにカム環５０が回転すると、エンコーダによりカム環５０の回転位置（つまりは光学素子４２の位置）が検出され、その情報が制御部４４に出力される。
【００６２】
制御部４４は、その回転位置の情報に基づいてカム環５０を回転させるアクチュエータを駆動し、光学素子４２の位置や移動（速度）を制御する。
【００６３】
なお、実施例１のエンコーダは、上述した撮像装置に限らず、プリンタ（光学機器）における印字ヘッドや給紙ローラの位置検出、複写機（光学機器）の感光ドラムの回転位置検出をはじめ、ロボットアームの位置検出等、様々な装置に適用することができる。
【００６４】
以上説明した各実施例は代表的な例にすぎず、本発明の実施に際しては、各実施例に対して種々の変形や変更が可能である。
【産業上の利用可能性】
【００６５】
可動部材の速度変化に対して安定したパルス信号を出力可能なエンコーダを提供できる。
【符号の説明】
【００６６】
１０  スケール
１１  トラック
２０  センサ
３０  信号処理部
【図１】
2015094668.tif 000010
【図２】
2015094668.tif 000011
【図３】
2015094668.tif 000012
【図４】
2015094668.tif 000013
【図５】
2015094668.tif 000014
【図６】
2015094668.tif 000015
【図７】
2015094668.tif 000016
【図８】
2015094668.tif 000017
【図９】
2015094668.tif 000018