(57)【要約】      （修正有）【課題】ハンチングの発生による消費電力の増加を抑制することのできる回転位置検出装置、回転位置検出方法、及び回転位置検出プログラムを提供する。【解決手段】エンコーダは、センサ１２、１３と、マイクロコントローラ１１と、を備える。センサ１２、１３は、回転体の回転位置を検出するための複数のセンサである。マイクロコントローラ１１は、センサ１２、１３に間欠的に電力を供給して駆動し、センサ１２、１３からの出力信号を得る。そして、マイクロコントローラ１１は、センサ１２、１３からの出力信号に基づいて、回転体の回転方向を検出し、検出した回転方向の変化に基づいて、センサ１２、１３に電力を供給する駆動周期を変更する。【選択図】図１
2020193942.tif 000002
【特許請求の範囲】
【請求項１】
回転体の回転位置を検出するための複数のセンサと、
前記複数のセンサに間欠的に電力を供給して駆動し、前記複数のセンサからの出力信号を得るセンサ制御部と、を備え、
前記センサ制御部は、前記出力信号に基づいて、前記回転体の回転方向を検出し、検出した前記回転方向の変化に基づいて、前記センサに電力を供給する駆動周期を変更する、回転位置検出装置。
【請求項２】
請求項１記載の回転位置検出装置であって、
前記センサ制御部は、前記出力信号に変化がない場合、及び前記出力信号の変化毎に前記回転方向が変化した場合は、第１周期で前記センサを駆動し、他の場合は、前記第１周期より短い第２周期で前記センサを駆動する、回転位置検出装置。
【請求項３】
請求項２記載の回転位置検出装置であって、
前記回転方向が変化している場合は、前記回転方向が前記出力信号の変化毎に反転するハンチング状態を検出した場合である、回転位置検出装置。
【請求項４】
請求項３記載の回転位置検出装置であって、
前記センサ制御部は、前記出力信号の変化毎の前記回転方向の反転が所定回数以上連続した場合に、前記ハンチング状態であると判断する、回転位置検出装置。
【請求項５】
請求項４記載の回転位置検出装置であって、
前記所定回数は、２である、回転位置検出装置。
【請求項６】
請求項２から５のいずれか１項記載の回転位置検出装置であって、
前記センサ制御部は、主電源又はバックアップ用の電池によって動作するものであり、
前記センサ制御部は、前記主電源によって動作している場合は前記第２周期より短い周期で前記センサを駆動する、回転位置検出装置。
【請求項７】
請求項１から５のいずれか１項記載の回転位置検出装置であって、
前記センサ制御部は、主電源又はバックアップ用の電池によって動作するものであり、
前記主電源による前記センサ制御部の動作と、前記電池による前記センサ制御部の動作と、が同一である、回転位置検出装置。
【請求項８】
回転体の回転位置を検出するための複数のセンサを備える回転位置検出装置における回転位置検出方法であって、
前記複数のセンサに間欠的に電力を供給して駆動し、前記複数のセンサからの出力信号を得る工程と、
前記出力信号に基づいて、前記回転体の回転方向を検出し、検出した前記回転方向の変化に基づいて、前記センサに電力を供給する駆動周期を変更する工程と、を備える回転位置検出方法。
【請求項９】
回転体の回転位置を検出するための複数のセンサを備える回転位置検出装置における回転位置検出プログラムであって、
前記複数のセンサに間欠的に電力を供給して駆動し、前記複数のセンサからの出力信号を得るステップと、
前記出力信号に基づいて、前記回転体の回転方向を検出し、検出した前記回転方向の変化に基づいて、前記センサに電力を供給する駆動周期を変更するステップと、をコンピュータに実行させるための回転位置検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回転体の回転位置を検出する回転位置検出装置、回転位置検出方法、及び回転位置検出プログラムに関する。
【背景技術】
【０００２】
従来、サーボモータのロータの回転位置（回転角度）を検出するエンコーダが知られている（例えば、特許文献１参照）。このエンコーダは、ロータを構成する回転軸等に固定されるセンサ磁石と、センサ磁石に対向配置される磁気抵抗素子及び２個のホール素子を含むセンサとを備えている。また、このエンコーダは、主電源から供給される電力によってエンコーダが動作する通常動作モードと、主電源からの電力の供給が停止された場合にバックアップ用の電池から供給される電力によってエンコーダが動作するバックアップモードとに切り替え可能となっている。また、このエンコーダでは、センサに対して電力を周期的に供給する間欠駆動が行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許６１９６５３２号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、上記特許文献１に記載の従来のエンコーダにおいて、消費電力を低減するために、ロータが回転していないと判定されているときには、ロータが回転していると判定されているときよりもセンサの駆動周期を長くする構成が考えられる。
【０００５】
しかしながら、このような構成において、サーボモータが停止した際に、ロータの回転位置が、エンコーダにおいて判別される２つの回転位置の境界付近になっていると、ロータの位置のわずかな変化や、電源電圧の変化などによって、センサから得られるセンサ値が交互に変化するハンチングが発生する場合がある。ハンチングが発生すると、センサ値が変化するためロータが回転していると判定され、サーボモータが停止しているにも拘らず、センサの駆動周期が短く設定されて消費電力が増加する。
【０００６】
本発明は、上述した事情に鑑みてなされたものであり、ハンチングの発生による消費電力の増加を抑制することができる回転位置検出装置、回転位置検出方法、及び回転位置検出プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００７】
（１）
回転体の回転位置を検出するための複数のセンサと、
前記複数のセンサに間欠的に電力を供給して駆動し、前記複数のセンサからの出力信号を得るセンサ制御部と、を備え、
前記センサ制御部は、前記出力信号に基づいて、前記回転体の回転方向を検出し、検出した前記回転方向の変化に基づいて、前記センサに電力を供給する駆動周期を変更する、回転位置検出装置。
【０００８】
（１）のように構成すると、検出した回転体の回転方向の変化に基づいて、ハンチングが発生している場合にはセンサの駆動周期を短くしないようにすることが可能になる。これにより、ハンチングの発生による消費電力の増加を抑制することができる。
【０００９】
（２）
（１）記載の回転位置検出装置であって、
前記センサ制御部は、前記出力信号に変化がない場合、及び前記出力信号の変化毎に前記回転方向が変化した場合は、第１周期で前記センサを駆動し、他の場合は、前記第１周期より短い第２周期で前記センサを駆動する、回転位置検出装置。
【００１０】
（２）のように構成すると、回転体が回転していない場合は、センサの駆動周期を長くし、消費電力を低減することができる。また、回転体が回転している場合は、その回転に追従できるようにセンサの駆動周期を短くし、検出漏れなく回転位置を検出することができる。そして、ハンチングが発生している場合は、センサの出力信号が変化していてもセンサの駆動周期を長くし、消費電力の増加を抑制することができる。
【００１１】
（３）
（２）記載の回転位置検出装置であって、
前記回転方向が変化している場合は、前記回転方向が前記出力信号の変化毎に反転するハンチング状態を検出した場合である、回転位置検出装置。
【００１２】
（３）のように構成すると、ハンチングの発生による消費電力の増加を抑制することができる。
【００１３】
（４）
（３）記載の回転位置検出装置であって、
前記センサ制御部は、前記出力信号の変化毎の前記回転方向の反転が所定回数以上連続した場合に、前記ハンチング状態であると判断する、回転位置検出装置。
【００１４】
（４）のように構成すると、ハンチングの発生を検出することが可能になり、ハンチングの発生による消費電力の増加を抑制することができる。
【００１５】
（５）
（４）記載の回転位置検出装置であって、
前記所定回数は、２である、回転位置検出装置。
【００１６】
（５）のように構成すると、回転体の回転方向が正常な駆動によって変化した場合にハンチング状態であると誤判定することを抑制しつつ、ハンチングの発生を早期に検出することが可能になり、ハンチングの発生による消費電力の増加を抑制することができる。
【００１７】
（６）
（２）から（５）のいずれか１つに記載の回転位置検出装置であって、
前記センサ制御部は、主電源又はバックアップ用の電池によって動作するものであり、
前記センサ制御部は、前記主電源によって動作している場合は前記第２周期より短い周期で前記センサを駆動する、回転位置検出装置。
【００１８】
（６）のように構成すると、主電源によって動作しており電池切れのおそれがない状況において、回転体の高速な回転にも追従して検出漏れなく回転位置を検出することができる。
【００１９】
（７）
（１）から（５）のいずれか１つに記載の回転位置検出装置であって、
前記センサ制御部は、主電源又はバックアップ用の電池によって動作するものであり、
前記主電源による前記センサ制御部の動作と、前記電池による前記センサ制御部の動作と、が同一である、回転位置検出装置。
【００２０】
（７）のように構成すると、センサ制御部が主電源及び電池のいずれにより動作中であるかの判断を含まない処理により、駆動周期の制御を行うことができる。したがって、駆動周期の制御を行うための処理の量を低減することができる。これにより、処理遅延による検出漏れを抑制して検出漏れなく回転位置を検出することができるとともに、駆動周期の制御を行うための処理による消費電力を低減することができる。
【００２１】
（８）
回転体の回転位置を検出するための複数のセンサを備える回転位置検出装置における回転位置検出方法であって、
前記複数のセンサに間欠的に電力を供給して駆動し、前記複数のセンサからの出力信号を得る工程と、
前記出力信号に基づいて、前記回転体の回転方向を検出し、検出した前記回転方向の変化に基づいて、前記センサに電力を供給する駆動周期を変更する工程と、を備える回転位置検出方法。
【００２２】
（８）のように構成すると、検出した回転体の回転方向の変化に基づいて、ハンチングが発生している場合にはセンサの駆動周期を短くしないようにすることが可能になる。これにより、ハンチングの発生による消費電力の増加を抑制することができる。
【００２３】
（９）
回転体の回転位置を検出するための複数のセンサを備える回転位置検出装置における回転位置検出プログラムであって、
前記複数のセンサに間欠的に電力を供給して駆動し、前記複数のセンサからの出力信号を得るステップと、
前記出力信号に基づいて、前記回転体の回転方向を検出し、検出した前記回転方向の変化に基づいて、前記センサに電力を供給する駆動周期を変更するステップと、をコンピュータに実行させるための回転位置検出プログラム。
【００２４】
（９）のように構成すると、検出した回転体の回転方向の変化に基づいて、ハンチングが発生している場合にはセンサの駆動周期を短くしないようにすることが可能になる。これにより、ハンチングの発生による消費電力の増加を抑制することができる。
【発明の効果】
【００２５】
本発明によれば、ハンチングの発生による消費電力の増加を抑制することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の回転位置検出装置の一実施形態であるエンコーダ１０のセンサ１２、１３及びユニット１０ａの概略構成を説明するためのブロック図である。
【図２】エンコーダ１０の機械的な構成を説明するための概略図である。
【図３】モータ駆動装置がモータ駆動を開始する場合の、マイクロコントローラ１１による駆動周期の制御を説明するための図である。
【図４】ハンチングが発生している場合の、マイクロコントローラ１１による駆動周期の制御を説明するための図である。
【図５】エンコーダ１０による回転位置及び回転方向の判定方法を説明するための図である。
【図６】ロータの回転位置の変化に応じたセンサ１２、１３の各センサ値及びマルチターンデータの変化の例を示す図である。
【図７】エンコーダ１０においてハンチングが発生する状態を説明するための図である。
【図８】エンコーダ１０による処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００２７】
以下、図面を参照しながら、本発明に係る実施の形態を説明する。
【００２８】
（回転位置検出装置の構成）
図１は、本発明の回転位置検出装置の一実施形態であるエンコーダ１０のセンサ１２、１３及びユニット１０ａの概略構成を説明するためのブロック図である。図２は、エンコーダ１０の機械的な構成を説明するための概略図である。本実施形態のエンコーダ１０は、少なくとも回転体の回転位置（回転角度）を検出する回転位置検出装置の一実施形態である。エンコーダ１０は、ユニット１０ａ、センサ１２、１３及び検出用磁石１９により構成される。ユニット１０ａは、マイクロコントローラ１１、抵抗１４、１５、主電源１６及び電池１７を含む、エンコーダ１０の回路部である。
【００２９】
具体的には、エンコーダ１０は、回転体としてのサーボモータのロータの回転位置を検出する回転位置検出装置であり、サーボモータに取り付けられている。このエンコーダ１０は、サーボモータの駆動及び制御を行うモータ駆動装置（モータドライバ）に電気的に接続されている。また、エンコーダ１０は、ロータの１回転以上の回転量を検出するバッテリバックアップ方式のアブソリュートエンコーダである。
【００３０】
また、本実施形態のエンコーダ１０は、磁気式のロータリエンコーダである。具体的には、エンコーダ１０は、２個のセンサ１２、１３と、検出用磁石１９と、マイクロコントローラ１１と、を備えたＱＥＰ（Ｑｕａｄｒａｔｕｒｅ  Ｅｎｃｏｄｅｒ  Ｐｕｌｓｅ）方式のロータリエンコーダである。センサ１２、１３は、磁界を検出するホール素子（Ｈａｌｌ１、Ｈａｌｌ２）である。ただし、センサ１２、１３は、ホール素子に限らず、ＭＲ（Ｍａｇｎｅｔｏ  Ｒｅｓｉｓｔｉｖｅ）センサや磁気インピーダンス素子などの、磁界を検出可能な各種の磁気センサ又は光学式のセンサとすることができる。センサ１２、１３は、検出用磁石１９に対向配置されている。センサ１２、１３は、回転体の回転位置を検出するための複数のセンサを構成する。
【００３１】
検出用磁石１９は、円板状に形成された永久磁石であって、サーボモータのロータを構成する回転軸１８に固定される。図２は、センサ１２、１３、及び検出用磁石１９を、回転軸１８の反対側から見た状態を示している。検出用磁石１９の、センサ１２、１３との対向面には、ロータの周方向において、Ｎ極とＳ極とが１極ずつ形成されている。検出用磁石１９は、回転軸１８の軸方向から見たときに、ロータの回転中心と検出用磁石１９の中心とが一致するように回転軸１８に固定されている。
【００３２】
センサ１２、１３は、回転軸１８の軸方向から見たときに、ロータの回転中心に対して（すなわち検出用磁石１９の中心に対して）互いに９０度ずれた位置に配置されている。センサ１２、１３のそれぞれは、マイクロコントローラ１１から電力が供給されると、検出用磁石１９からの磁気を検出し、その検出結果を示す信号をマイクロコントローラ１１へ出力する。
【００３３】
仮にロータを回転させながらセンサ１２に電力を供給し続けた場合、センサ１２が出力する信号は、ロータの１回転を１周期とする正弦波信号となる。また、仮にロータを回転させながらセンサ１３に電力を供給し続けた場合、センサ１３が出力する信号は、ロータの１回転を１周期とする余弦波信号となる。すなわち、センサ１２、１３は、ロータの回転位置の変化に応じて周期的にそのレベルが変動する正弦波信号及び余弦波信号を出力する。センサ１２が出力する正弦波信号の位相と、センサ１３が出力する余弦波信号の位相とは、互いに９０度ずれている。ただし、後述のように、エンコーダ１０においては、周期的な駆動タイミングにおいてのみセンサ１２、１３に対して電力が供給されることにより、センサ１２、１３が間欠的に駆動される。
【００３４】
マイクロコントローラ１１は、センサ１２、１３に間欠的に電力を供給することによりセンサ１２、１３を駆動し、駆動したセンサ１２、１３からの出力信号を得るセンサ制御部を構成する。例えば、マイクロコントローラ１１は、それぞれ抵抗１４、１５を介してセンサ１２、１３に電力を供給する。抵抗１４、１５は、それぞれセンサ１２、１３に印加される電圧を制限するための素子である。
【００３５】
また、マイクロコントローラ１１は、センサ１２に電力を供給することによってセンサ１２が出力した信号と所定の閾値とを比較し、この比較結果を示すセンサ値を生成するコンパレータを有する。また、マイクロコントローラ１１は、センサ１３に電力を供給することによってセンサ１３が出力した信号と所定の閾値とを比較し、この比較結果を示すセンサ値を生成するコンパレータを有する。これらのセンサ値は、例えば信号の電圧が閾値を超えた場合はハイ（Ｈｉｇｈ）、信号の電圧が閾値を超えていない場合はロー（Ｌｏｗ）となる２値の情報である。なお、マイクロコントローラ１１は、上記の各比較を行う１個のコンパレータのみを有していてもよい。この場合に、マイクロコントローラ１１は、センサ１２、１３が出力する各信号を、その１個のコンパレータにより交互に閾値と比較することにより、センサ１２、１３の各センサ値を生成する。
【００３６】
また、エンコーダ１０は、主電源１６と、バックアップ用の電池１７とを備えている。主電源１６及び電池１７のそれぞれは、マイクロコントローラ１１に接続されている。エンコーダ１０では、通常、主電源１６からマイクロコントローラ１１に電力が供給されており、マイクロコントローラ１１は、主電源１６から供給される電力によって動作している。また、主電源１６からの電力の供給が停止されると、電池１７からマイクロコントローラ１１に電力が供給され、マイクロコントローラ１１は、電池１７から供給される電力によって動作する。すなわち、エンコーダ１０は、主電源１６から供給される電力によってマイクロコントローラ１１が動作するモードである通常動作モードと、電池１７から供給される電力によってマイクロコントローラ１１が動作するモードであるバックアップモードと、に切り替え可能である。
【００３７】
例えば、主電源１６は、サーボモータのモータ駆動装置に含まれる電源である。この場合に、モータ駆動装置の動作中（モータの駆動中）は、主電源１６が動作しており、主電源１６からの電力がマイクロコントローラ１１にも供給される。一方で、モータ駆動装置の停止中は、主電源１６も停止しており、主電源１６からマイクロコントローラ１１への電力の供給が停止される。これにより、エンコーダ１０は、モータ駆動装置の動作中は通常動作モードとなり、モータ駆動装置の停止中はバックアップモードとなる。
【００３８】
このように、エンコーダ１０は、モータ駆動装置の停止中はバックアップモードとなって電池１７によりマイクロコントローラ１１を動作させることにより、モータ駆動装置の停止中においてもロータの回転量の情報を保持し、またモータ駆動装置の停止中のロータの回転量も検出する。
【００３９】
（駆動周期の制御）
図３は、モータ駆動装置がモータ駆動を開始する場合の、マイクロコントローラ１１による駆動周期の制御を説明するための図である。図３において、横軸は時間を示している。駆動タイミング３１は、マイクロコントローラ１１がセンサ１２、１３を駆動するタイミングであって、マイクロコントローラ１１が制御する駆動周期毎のタイミングである。マイクロコントローラ１１は、駆動タイミング３１毎に、センサ１２、１３に電力を供給してセンサ１２、１３を駆動することによりロータの回転位置を検出し、その結果に応じて以降の駆動周期を制御する。
【００４０】
図３の例では、期間３２において、サーボモータのモータ駆動装置によるモータ駆動が停止しておりロータが停止している。また、期間３２の直後の期間３３において、サーボモータのモータ駆動装置によるモータ駆動中でありロータが回転している。この場合に、期間３２においては、センサ１２、１３の各センサ値は変化しない（センサ値の変化なし）。この場合に、期間３２において、マイクロコントローラ１１は、上記の駆動周期を、後述の第２周期Ｔ２より長い第１周期Ｔ１（一例としては４．６［ｍｓ］）に設定する。
【００４１】
期間３３においては、モータ駆動により、センサ１２、１３の各センサ値の少なくともいずれかが変化する（センサ値の変化あり）。また、期間３３において、後述のハンチングは未発生であるとする（ハンチングなし）。この場合に、期間３３において、マイクロコントローラ１１は、上記の駆動周期を、上記の第１周期Ｔ１より短い第２周期Ｔ２（一例としては２．４［ｍｓ］）に設定する。第２周期Ｔ２は、センサ１２、１３のセンサ値の取りこぼしがないように、例えば、ロータの最大回転数及びロータの最大加速度においてセンサ１２、１３のセンサ値の変化を追従できる周期とする。
【００４２】
図３において説明したように、マイクロコントローラ１１は、センサ１２、１３の各センサ値が変化していない場合は駆動周期を長く（低速に）し、センサ１２、１３の各センサ値が変化した場合は駆動周期を短く（高速に）する。これにより、モータ駆動が停止しているときのセンサ１２、１３への電力供給等による消費電力を抑制しつつ、モータ駆動中のロータの回転位置の変化等を検出漏れなく検出することができる。
【００４３】
ただし、マイクロコントローラ１１は、センサ１２、１３の各センサ値が変化した場合であっても、ハンチングが発生している場合には駆動周期を短くしない。この処理について、図４を用いて説明する。
【００４４】
図４は、ハンチングが発生している場合の、マイクロコントローラ１１による駆動周期の制御を説明するための図である。図４の例では、期間４１においてモータ駆動が停止しておりロータが回転しておらず、期間４１の直後の期間４２において、モータ駆動が停止しているが丁度センサ出力が変化する位置で停止していた為、わずかな振動等によりセンサ１２、１３の各センサ値が振動するハンチングが発生したとする。期間４１におけるマイクロコントローラ１１の動作は、図３の期間３２における動作と同様である。
【００４５】
期間４２においては、ハンチングにより、センサ１２、１３の各センサ値の少なくともいずれかが変化する。このため、マイクロコントローラ１１は、期間４２の先頭において、一旦、駆動周期を、上記の第２周期Ｔ２（一例としては２．４［ｍｓ］）に設定する。ただし、マイクロコントローラ１１は、センサ１２、１３の各センサ値の変化に基づいてハンチングが発生していると判定し、期間４２の途中から駆動周期を第１周期Ｔ１に戻す。これにより、モータ駆動が停止しており高速な検出が必要ない場合において消費電力が増加することを抑制することができる。
【００４６】
なお、図３、図４において、センサ１２、１３の各センサ値が変化していない期間３２、４１と、センサ１２、１３の各センサ値が変化しているがハンチングを検出した期間４２と、の両方において駆動周期を第１周期Ｔ１とする例について説明したが、このような処理に限らない。例えば、期間３２、４１の第１周期Ｔ１と、期間４２の第１周期Ｔ１とは、期間３３の第２周期Ｔ２より長ければ、必ずしも一致していなくてもよい。
【００４７】
（回転位置及び回転方向の判定方法）
図５は、エンコーダ１０による回転位置及び回転方向の判定方法を説明するための図である。図５に示す回転状態５０〜５３は、ロータの４通りの回転状態である。具体的には、回転状態５０〜５３は、それぞれロータの回転位置Ｐｏｓが０〜３となっている状態である。回転位置Ｐｏｓの０〜３は、ロータの一周を４等分した各回転位置、すなわちそれぞれ９０度ずつ異なる各回転位置であって、センサ１２、１３の各センサ値の組み合わせによって判別される。
【００４８】
例えば、ロータの回転位置がＰｏｓ＝０である回転状態５０において、センサ１２のセンサ値はロー（Ｌ）となり、センサ１３のセンサ値はハイ（Ｈ）となる（Ｌ・Ｈ）。ロータの回転位置がＰｏｓ＝１である回転状態５１において、センサ１２、１３の各センサ値はともにハイ（Ｈ）となる（Ｈ・Ｈ）。ロータの回転位置がＰｏｓ＝２である回転状態５２において、センサ１２のセンサ値はハイ（Ｈ）となり、センサ１３のセンサ値はロー（Ｌ）となる（Ｈ・Ｌ）。ロータの回転位置がＰｏｓ＝３である回転状態５３において、センサ１２、１３の各センサ値はともにロー（Ｌ）となる（Ｌ・Ｌ）。したがって、マイクロコントローラ１１は、センサ１２、１３の各センサ値の組み合わせによって、現在のロータの４通りの回転状態５０〜５３（Ｐｏｓ＝０〜３）を判別できる。
【００４９】
また、マイクロコントローラ１１は、判別した回転位置の時系列的な変化に基づいて、ロータの回転方向を判定することができる。例えば、ロータが時計回り（ＣＷ）に回転すると、ロータの回転状態は、回転状態５０、回転状態５１、回転状態５２、回転状態５３、回転状態５０、回転状態５１、…のように遷移する。また、ロータが反時計回り（ＣＣＷ）に回転すると、ロータの回転状態は、回転状態５０、回転状態５３、回転状態５２、回転状態５１、回転状態５０、回転状態５３、…のように遷移する。
【００５０】
したがって、例えば、ある駆動タイミングにおいて回転状態５０が検出され、次の駆動タイミングにおいて回転状態５１が検出された場合は、ロータの回転方向は時計回り（ＣＷ）であると判定できる。具体的には、ある駆動タイミングにおけるセンサ１２、１３のセンサ値がそれぞれロー及びハイであり、次の駆動タイミングにおけるセンサ１２、１３のセンサ値がともにハイであった場合は、ロータの回転方向は時計回りであると判定できる。同様に、回転状態５１の次に回転状態５２が検出された場合、回転状態５２の次に回転状態５３が検出された場合、及び、回転状態５３の次に回転状態５０が検出された場合も、ロータの回転方向は時計回りであると判定できる。
【００５１】
また、例えば、ある駆動タイミングにおいて回転状態５０が検出され、次の駆動タイミングにおいて回転状態５３が検出された場合は、ロータの回転方向は反時計回り（ＣＣＷ）であると判定できる。同様に、回転状態５３の次に回転状態５２が検出された場合、回転状態５２の次に回転状態５１が検出された場合、及び、回転状態５１の次に回転状態５０が検出された場合も、ロータの回転方向は反時計回りであると判定できる。
【００５２】
なお、例えば回転状態５０の次に回転状態５２が検出された場合等、隣接しない回転状態への遷移が検出された場合は、ロータの回転速度に駆動タイミングが追いついていなかったり、センサ１２、１３が故障したりしているなどの異常状態であると判断できる。この場合、マイクロコントローラ１１は、例えばエラー情報を出力する。
【００５３】
また、マイクロコントローラ１１は、ロータの回転方向を判定する毎に、判定した回転方向に応じた加減算を行うことにより、ロータの回転量を示すマルチターンデータを生成する。マルチターンデータの生成について、図６において説明する。
【００５４】
（ロータの回転位置の変化に応じた各センサ値及びマルチターンデータの変化）
図６は、ロータの回転位置の変化に応じたセンサ１２、１３の各センサ値及びマルチターンデータの変化の例を示す図である。図６において、横軸は時間を示す。図６の例では、期間６５においてはロータが時計回りに回転しており、期間６５の直後の期間６６においてはロータが反時計回りに回転している。具体的には、期間６５において、ロータの回転位置が、Ｐｏｓ＝０、Ｐｏｓ＝１、Ｐｏｓ＝２、Ｐｏｓ＝３、Ｐｏｓ＝０、Ｐｏｓ＝１、Ｐｏｓ＝２の順に変化している。また、期間６６において、ロータの回転位置が、Ｐｏｓ＝１、Ｐｏｓ＝０、Ｐｏｓ＝３、Ｐｏｓ＝２、Ｐｏｓ＝１の順に変化している。
【００５５】
センサ値変化６１は、センサ１２（Ｈａｌｌ１）の期間６５、６６におけるセンサ値の変化を示している。センサ値変化６２は、センサ１３（Ｈａｌｌ２）の期間６５、６６におけるセンサ値の変化を示している。上記のように、マイクロコントローラ１１は、センサ１２、１３の各センサ値に基づいてロータの回転位置（Ｐｏｓ＝０〜３のいずれか）を判定し、ロータの回転位置の時系列的な変化に基づいてロータの回転方向を判定する。
【００５６】
そして、マイクロコントローラ１１は、判定したロータの回転方向の時系列的な変化に基づいて、ロータが、基準となる回転位置である原点位置からいずれの方向に何回転した状態であるかを示すマルチターンデータを生成して出力する。具体的には、マイクロコントローラ１１は、ロータの回転方向が時計回り（ＣＷ）であると判定された場合にインクリメント（＋１）し、ロータの回転方向が反時計回り（ＣＣＷ）であると判定された場合にデクリメント（−１）する回転カウント値を記憶している。そして、マイクロコントローラ１１は、この回転カウント値をマルチターンデータとして出力する。
【００５７】
図６のマルチターンデータ変化６３（Ｍｕｌｔｉ＿ｔｕｒｎ＿ｄａｔａ）は、マルチターンデータの期間６５、６６における変化を示している。マルチターンデータ変化６３に示すように、マルチターンデータは、期間６５においてはロータの回転位置（Ｐｏｓ＝０〜３のいずれか）が変化する毎にインクリメントされ、期間６６においてはロータの回転位置が変化する毎にデクリメントされている。
【００５８】
ここで、期間６５の開始時におけるロータの状態を原点位置とする。例えば、期間６５の終了時におけるマルチターンデータは、期間６５の開始時におけるマルチターンデータに対して６だけ増加した情報となっている。これは、期間６５の終了時におけるロータが、原点位置から時計回りに９０度×６（１回転半）だけ回転した状態であることを意味する。また、期間６６の終了時におけるマルチターンデータは、期間６５の開始時におけるマルチターンデータに対して１だけ増加した情報となっている。これは、期間６６の終了時におけるロータが、原点位置から時計回りに９０度×１だけ回転した状態であることを意味する。
【００５９】
このように、マイクロコントローラ１１は、ロータの回転方向も考慮した、ロータの１回転以上の回転量を示すマルチターンデータを生成し、出力することができる。これにより、例えば、サーボモータのロータの回転を減速し、減速した回転を用いてアームを動作させるロボットにおいて、アームの現在の位置や姿勢を正しく判定することができる。これにより、アームの位置や姿勢の正確な制御が可能になる。
【００６０】
（ハンチングが発生する状態）
図７は、エンコーダ１０においてハンチングが発生する状態を説明するための図である。図７において、図６に示した部分と同様の部分については同一の符号を付して説明を省略する。図７の例では、停止中のサーボモータのロータが、Ｐｏｓ＝１とＰｏｓ＝２との間の境界である回転位置７１で停止している。このような状態では、ロータの位置のわずかな変化や、電源電圧の変化などによって、センサ１３（Ｈａｌｌ２）のセンサ値がハイとローに交互に変化する振動状態となる場合がある。
【００６１】
そして、この場合、例えばロータの回転位置がＰｏｓ＝１とＰｏｓ＝２とに交互に判定され、それによってロータの回転方向が時計回りと反時計回りの交互に判定されるハンチング状態となる。このようなハンチング状態においては、ロータの回転方向が時計回りと反時計回りの交互に判定されるため、上記の回転カウント値はインクリメントとデクリメントを交互に繰り返す。
【００６２】
一方で、ハンチング状態は、ロータが高速に回転していない状態であるため、上記の駆動周期を短くする必要がない状態である。しかしながら、ロータの回転が検出された場合は常に駆動周期を短くする制御においては、ハンチング状態においても駆動周期が短くなり、消費電力が増加してしまう。特に、上記のバックアップモードにおいては、電池１７によってマイクロコントローラ１１が動作するため、ハンチングによって消費電力が増加すると、電池１７の電池切れが早まり、マイクロコントローラ１１が動作できる時間が短くなる。電池１７が電池切れとなりマイクロコントローラ１１が電源を失うと、マイクロコントローラ１１は正しいマルチターンデータを保持しておくことができない。
【００６３】
例えば、マルチターンデータがマイクロコントローラ１１の揮発性メモリに記憶されている場合、マイクロコントローラ１１が電源を失うと、そのマルチターンデータが失われることになる。また、マルチターンデータがマイクロコントローラ１１の不揮発性メモリに記憶されている場合は、マイクロコントローラ１１が電源を失っている間におけるロータの回転はマルチターンデータに反映されない。マイクロコントローラ１１が正しいマルチターンデータを保持しておくことができないと、例えばサーボモータにより動作するロボット等の現在の位置や姿勢が不明になるため、そのロボット等の制御が困難になる。
【００６４】
これに対して、本実施形態のエンコーダ１０は、ロータの回転が検出されてもハンチング状態である場合は駆動周期を短くしないことにより、サーボモータのモータ駆動装置が停止中にハンチングが発生した場合の消費電力の増加を抑制することができる。そのためのエンコーダ１０による処理について、図８を用いて説明する。
【００６５】
（エンコーダの処理）
図８は、エンコーダ１０による処理を説明するためのフローチャートである。エンコーダ１０のマイクロコントローラ１１は、駆動周期毎の駆動タイミングにおいて、例えば図８に示す処理を実行する。図８に示す処理は、例えばタイマ割り込みによって実行される。また、図８に示す処理は、例えば上記の通常動作モード及びバックアップモードのいずれにおいても実行される。
【００６６】
まず、マイクロコントローラ１１は、センサ１２、１３の電源をＯＮにする（ステップＳ８０１）。具体的には、マイクロコントローラ１１は、抵抗１４、１５を介したセンサ１２、１３に対する電力の供給を開始する。このとき、上記の通常動作モードにおいては、マイクロコントローラ１１は、主電源１６から供給される電力を用いてセンサ１２、１３に電力を供給する。また、上記のバックアップモードにおいては、マイクロコントローラ１１は、電池１７から供給される電力を用いてセンサ１２、１３に電力を供給する。
【００６７】
次に、マイクロコントローラ１１は、ステップＳ８０１によってセンサ１２、１３から出力される各信号に基づく各センサ値を取得する（ステップＳ８０２）。具体的には、マイクロコントローラ１１は、センサ１２、１３から出力される各信号の各レベル（ハイ又はロー）を、センサ１２、１３の各センサ値として取得する。このとき、上記のようにマイクロコントローラ１１が有するコンパレータが１個の場合、マイクロコントローラ１１は、例えばまずセンサ１２から出力される信号の電圧と閾値とをコンパレータにより比較し、次にセンサ１３から出力される信号の電圧と閾値とをコンパレータにより比較することにより、センサ１２、１３の各センサ値を取得する。
【００６８】
次に、マイクロコントローラ１１は、センサ１２、１３の電源をＯＦＦにする（ステップＳ８０３）。具体的には、マイクロコントローラ１１は、ステップＳ８０１によって開始したセンサ１２、１３に対する電力の供給を停止する。
【００６９】
次に、マイクロコントローラ１１は、ステップＳ８０２によって取得した各センサ値の少なくともいずれかが前回から変化したか否かを判断する（ステップＳ８０４）。具体的には、マイクロコントローラ１１は、今回のステップＳ８０２によって取得したセンサ１２、１３の各センサ値と、前回の駆動タイミングのステップＳ８０２によって取得したセンサ１２、１３の各センサ値と、を比較することにより、センサ１２、１３の各センサ値が変化したか否かを判断する。なお、マイクロコントローラ１１が起動してから初回の駆動タイミングにおいては、前回のセンサ１２、１３の各センサ値が存在しないため、マイクロコントローラ１１は、例えば取得した各センサ値のいずれも前回から変化していないと判断する。
【００７０】
ステップＳ８０４において、各センサ値のいずれも前回から変化していない場合（ステップＳ８０４：Ｎｏ）は、現在はロータが停止していると判断できる。この場合に、マイクロコントローラ１１は、停止カウント値をインクリメント（＋１）する（ステップＳ８０５）。停止カウント値は、ロータの停止を検出するための、センサ１２、１３のセンサ値が変化していないと連続して判断された回数を示す情報であり、例えばマイクロコントローラ１１のメモリに記憶されている。
【００７１】
次に、マイクロコントローラ１１は、現在の停止カウント値が所定の設定値を超えたか否かを判断する（ステップＳ８０６）。この設定値は、例えば１以上の任意の自然数とすることができる。現在の停止カウント値が所定の設定値を超えていない場合（ステップＳ８０６：Ｎｏ）は、センサ１２、１３の各センサ値が変化しなくなってから間もなく、ロータが停止しているか否かを判断できない。この場合に、マイクロコントローラ１１は、待機状態へ移行する。
【００７２】
ステップＳ８０６において、現在の停止カウント値が所定の設定値を超えた場合（ステップＳ８０６：Ｙｅｓ）は、センサ１２、１３の各センサ値が変化しなくなってからある程度の時間が経過しており、ロータが停止していると判断できる。この場合に、マイクロコントローラ１１は、駆動周期を低速に設定し（ステップＳ８０７）、待機状態へ移行する。具体的には、マイクロコントローラ１１は、駆動周期を、後述の第２周期Ｔ２より長い第１周期Ｔ１ａ（一例としては４．６［ｍｓ］）に設定する。この場合、以降は図８に示す処理が第１周期Ｔ１ａで実行されることになる。
【００７３】
ステップＳ８０４において、各センサ値の少なくともいずれかが前回から変化した場合（ステップＳ８０４：Ｙｅｓ）は、ロータが回転しているか、ハンチングが発生していると判断できる。この場合に、マイクロコントローラ１１は、前回及び今回のセンサ１２、１３の各センサ値に基づいて、ロータの回転方向がＣＷ（時計回り）か否か判断する（ステップＳ８０８）。具体的には、マイクロコントローラ１１は、図５において説明したように、今回のステップＳ８０２によって取得したセンサ１２、１３の各センサ値と、前回の駆動タイミングのステップＳ８０２によって取得したセンサ１２、１３の各センサ値と、に基づいて、ロータの回転方向がＣＷか否かを判断する。
【００７４】
ステップＳ８０８において、ロータの回転方向がＣＷである場合（ステップＳ８０８：Ｙｅｓ）は、マイクロコントローラ１１は、回転方向ＦＬＧがＣＷであるか否かを判断する（ステップＳ８０９）。回転方向ＦＬＧは、前回の駆動タイミングにおいて判定されたロータの回転方向を示す情報であり、例えばマイクロコントローラ１１のメモリに記憶されている。なお、マイクロコントローラ１１が起動してから初回の駆動タイミングや、マイクロコントローラ１１が起動してからロータの回転がまだ検出されていない場合には、まだ回転方向ＦＬＧの値は設定されていないため、マイクロコントローラ１１は、例えば回転方向ＦＬＧがＣＷであると判断する。
【００７５】
ステップＳ８０９において、回転方向ＦＬＧがＣＷである場合（ステップＳ８０９：Ｙｅｓ）は、現在のロータの回転方向が、前回の駆動タイミングにおけるロータの回転方向と同じ（ＣＷ）であり、ロータが一定方向（ＣＷ）に回転していると判断できる。この場合に、マイクロコントローラ１１は、ハンチングカウント値を０に設定するとともに、駆動周期を高速に設定し（ステップＳ８１０）、ステップＳ８１４へ移行する。
【００７６】
ステップＳ８１０において、具体的には、マイクロコントローラ１１は、駆動周期を、上記の第１周期Ｔ１ａより短い第２周期Ｔ２（一例としては２．４［ｍｓ］）に設定する。この場合、以降は図８に示す処理が第２周期Ｔ２で実行されることになる。ハンチングカウント値は、ハンチングの発生を検出するための、駆動タイミング毎のロータの回転方向の判定結果が連続して反転した回数を示す情報であり、例えばマイクロコントローラ１１のメモリに記憶されている。
【００７７】
ステップＳ８０９において、回転方向ＦＬＧがＣＷでない場合、すなわち回転方向ＦＬＧがＣＣＷ（反時計回り）である場合（ステップＳ８０９：Ｎｏ）は、現在のロータの回転方向が、前回の駆動タイミングにおけるロータの回転方向と異なると判断できる。この場合に、マイクロコントローラ１１は、現在のハンチングカウント値が所定の設定値未満であるか否かを判断する（ステップＳ８１１）。この設定値は、２以上の任意の自然数とすることができるが、一例としては２とすることができる。
【００７８】
ステップＳ８１１において、現在のハンチングカウント値が所定の設定値未満である場合（ステップＳ８１１：Ｙｅｓ）は、ロータの回転方向が変化したが、ロータの回転方向が継続して振動するハンチング状態であるかどうかは不明な状態である。この場合に、マイクロコントローラ１１は、ハンチングカウント値をインクリメント（＋１）するとともに、駆動周期を高速に設定し（ステップＳ８１２）、ステップＳ８１４へ移行する。ステップＳ８１２において、具体的には、マイクロコントローラ１１は、駆動周期を、上記の第２周期Ｔ２に設定する。この場合、以降は図８に示す処理が第２周期Ｔ２で実行されることになる。
【００７９】
ステップＳ８１１において、現在のハンチングカウント値が所定の設定値以上である場合（ステップＳ８１１：Ｎｏ）は、ロータの回転方向が継続して振動するハンチング状態であると判断できる。この場合に、マイクロコントローラ１１は、駆動周期を低速に設定し（ステップＳ８１３）、ステップＳ８１４へ移行する。ステップＳ８１３において、具体的には、マイクロコントローラ１１は、駆動周期を、上記の第２周期Ｔ２より長い第１周期Ｔ１ｂに設定する。この場合、以降は図８に示す処理が第１周期Ｔ１ｂで実行されることになる。第１周期Ｔ１ｂは、一例としては上記の第１周期Ｔ１ａと同じ４．６［ｍｓ］とすることができるが、上記の第１周期Ｔ１ａと異なっていてもよい。例えば、第１周期Ｔ１ａを４．６［ｍｓ］とし、第１周期Ｔ１ｂを４．５［ｍｓ］としてもよい。
【００８０】
次に、マイクロコントローラ１１は、回転方向ＦＬＧにＣＷを設定し、回転カウント値をインクリメント（＋１）し、停止カウント値を０に設定する（ステップＳ８１４）。そして、マイクロコントローラ１１は、待機状態へ移行する。
【００８１】
ステップＳ８０８において、ロータの回転方向がＣＷ（時計回り）でない場合、すなわちロータの回転方向がＣＣＷである場合（ステップＳ８０８：Ｎｏ）は、マイクロコントローラ１１は、回転方向ＦＬＧがＣＣＷであるか否かを判断する（ステップＳ８１５）。なお、マイクロコントローラ１１が起動してから初回の駆動タイミングや、マイクロコントローラ１１が起動してからロータの回転がまだ検出されていない場合には、まだ回転方向ＦＬＧの値は設定されていないため、マイクロコントローラ１１は、例えば回転方向ＦＬＧがＣＣＷであると判断する。
【００８２】
ステップＳ８１５において、回転方向ＦＬＧがＣＣＷである場合（ステップＳ８１５：Ｙｅｓ）は、現在のロータの回転方向が、前回の駆動タイミングにおけるロータの回転方向と同じ（ＣＣＷ）であり、ロータが一定方向（ＣＣＷ）に回転していると判断できる。この場合に、マイクロコントローラ１１は、ハンチングカウント値を０に設定するとともに、駆動周期を高速に設定し（ステップＳ８１６）、ステップＳ８２０へ移行する。ステップＳ８１６において駆動周期を高速に設定する処理は、上記のステップＳ８１０と同様である。
【００８３】
ステップＳ８１５において、回転方向ＦＬＧがＣＣＷでない場合、すなわち回転方向ＦＬＧがＣＷである場合（ステップＳ８１５：Ｎｏ）は、現在のロータの回転方向が、前回の駆動タイミングにおけるロータの回転方向と異なると判断できる。この場合に、マイクロコントローラ１１は、現在のハンチングカウント値が所定の設定値未満であるか否かを判断する（ステップＳ８１７）。この設定値はステップＳ８１１の設定値と同様である。
【００８４】
ステップＳ８１７において、現在のハンチングカウント値が所定の設定値未満である場合（ステップＳ８１７：Ｙｅｓ）は、ロータの回転方向が変化したが、ロータの回転方向が継続して振動するハンチング状態であるかどうかは不明な状態である。この場合に、マイクロコントローラ１１は、ハンチングカウント値をインクリメント（＋１）するとともに、駆動周期を高速に設定し（ステップＳ８１８）、ステップＳ８２０へ移行する。ステップＳ８１８において駆動周期を高速に設定する処理は、上記のステップＳ８１２と同様である。
【００８５】
ステップＳ８１７において、現在のハンチングカウント値が所定の設定値以上である場合（ステップＳ８１７：Ｎｏ）は、ロータの回転方向が継続して振動するハンチング状態であると判断できる。この場合に、マイクロコントローラ１１は、駆動周期を低速に設定し（ステップＳ８１９）、ステップＳ８２０へ移行する。ステップＳ８１９において駆動周期を低速に設定する処理は、上記のステップＳ８１３と同様である。
【００８６】
次に、マイクロコントローラ１１は、回転方向ＦＬＧにＣＣＷを設定し、回転カウント値をデクリメント（−１）し、停止カウント値を０に設定する（ステップＳ８２０）。そして、マイクロコントローラ１１は、待機状態へ移行する。
【００８７】
図８に示した処理により、マイクロコントローラ１１は、センサ１２、１３の各センサ値（出力信号）に基づいて、ロータの回転方向を検出し、検出した回転方向の時系列的な変化に基づいて、センサ１２、１３に電力を供給する駆動周期を変更することができる。具体的には、マイクロコントローラ１１は、センサ１２、１３の各センサ値に変化がない場合は、ステップＳ８０７により駆動周期を比較的長い第１周期Ｔ１ａに設定する。これにより、ロータが回転していない場合は、センサ１２、１３の駆動周期を長くし、消費電力を低減することができる。また、マイクロコントローラ１１は、ハンチングが発生している場合は、ステップＳ８１３又はステップＳ８１９により駆動周期を比較的長い第１周期Ｔ１ｂに設定する。これにより、ハンチングが発生している場合は、センサ１２、１３のセンサ値（出力信号）が変化していてもセンサ１２、１３の駆動周期を長くし、消費電力の増加を抑制することができる。また、マイクロコントローラ１１は、これら以外の場合は、ステップＳ８１０、ステップＳ８１２、ステップＳ８１６、又はステップＳ８１８により駆動周期を比較的短い第２周期Ｔ２に設定する。これにより、ロータが回転している場合は、その回転に追従できるようにセンサ１２、１３の駆動周期を短くし、検出漏れなく回転位置を検出することができる。
【００８８】
例えば、サーボモータのモータ駆動装置が停止してバックアップモードとなった場合に、ロータがどのような位置で停止していても、消費電力が増加することを抑制しつつ、電池１７の容量から期待される時間、モータの位置（回転量）を記憶することが可能となる。また、ハンチングによる消費電流の増加を抑制できるため、容量が小さい電池１７を用いることが可能になる。
【００８９】
また、マイクロコントローラ１１は、図８の処理によって更新される回転カウント値を、ロータが原点位置からいずれの方向に何回転した状態であるかを示すマルチターンデータとして出力する。これにより、エンコーダ１０は、ロータの１回転以上の回転量を検出するインクリメンタル型のマルチターンエンコーダとして動作しつつ、消費電力の増加を抑制することができる。
【００９０】
また、図８に示した処理において、マイクロコントローラ１１は、センサ１２、１３のセンサ値が変化した場合は一旦駆動周期を高速にしておき、その後にハンチングカウント値が設定値以上になってハンチングであると判定してから駆動周期を低速にしている。これにより、センサ１２、１３のセンサ値が変化したがハンチングではない場合にまで駆動周期を低速にし、検出漏れが発生することを抑制することができる。
【００９１】
ただし、このような処理に限らず、マイクロコントローラ１１は、例えば、ステップＳ８１２及びステップＳ８１８において駆動周期を低速に設定するようにしてもよい。これにより、判定したロータの回転方向が変化しておりハンチングの可能性がある場合は駆動周期を低速にしておき、消費電力の増加を抑制することができる。このような処理においては、例えば図４に示した例のように、サーボモータのモータ駆動装置が停止中にハンチングが発生した場合、駆動周期を一旦高速にすることなく、駆動周期を低速に維持することができる。
【００９２】
また、マイクロコントローラ１１は、例えば、マイクロコントローラ１１が備えるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に記憶された回転位置検出プログラムをマイクロコントローラ１１が備えるプロセッサにより実行することにより、図８に示す処理を実行する。ここで、上記のように図８に示した処理を通常動作モード及びバックアップモードのいずれにおいても実行する構成とすることにより、現在が通常動作モード及びバックアップモードのいずれであるかの判断を含まない処理（プログラム）により、駆動周期の制御を行うことができる。これにより、駆動周期の制御を行うためのマイクロコントローラ１１における処理の量を減らし、処理遅延による検出漏れの抑制や、消費電力の低減を図ることができる。
【００９３】
（本実施形態の主な効果）
以上説明したように、本実施形態では、マイクロコントローラ１１が、センサ１２、１３のセンサ値に基づいて、ロータの回転方向を検出し、検出した回転方向の変化に基づいて、センサ１２、１３に電力を供給する駆動周期を変更することができる。このため、検出したロータの回転方向の変化に基づいて、ハンチングが発生している場合にはセンサ１２、１３の駆動周期を短くしないようにすることが可能になる。これにより、ハンチングの発生による消費電力の増加を抑制することができる。
【００９４】
具体的には、本実施形態では、マイクロコントローラ１１が、センサ１２、１３のセンサ値に変化がない場合、及びセンサ１２、１３のセンサ値の変化毎にロータの回転方向が変化しているハンチング状態である場合は、第１周期でセンサ１２、１３を駆動し、他の場合は、第１周期より短い第２周期でセンサ１２、１３を駆動することができる。このため、ロータが回転していない場合は、センサ１２、１３の駆動周期を長くし、消費電力を低減することができる。また、ロータが回転している場合は、その回転に追従できるようにセンサ１２、１３の駆動周期を短くし、検出漏れなく回転位置を検出することができる。そして、ハンチングが発生している場合は、センサ１２、１３のセンサ値が変化していてもセンサ１２、１３の駆動周期を長くし、消費電力の増加を抑制することができる。
【００９５】
また、本実施形態では、マイクロコントローラ１１が、センサ１２、１３のセンサ値の変化毎のロータの回転方向の反転が所定回数以上連続した場合に、ハンチング状態であると判断することができる。すなわち、例えば所定回数を２回とすると、マイクロコントローラ１１は、ロータの回転方向が反転した後、ロータの同方向への回転を検出することなく、ロータの回転方向が再び反転した場合に、ハンチング状態であると判断することができる。このため、ハンチングの発生を検出することが可能になり、ハンチングの発生による消費電力の増加を抑制することができる。
【００９６】
例えば、本実施形態では、マイクロコントローラ１１が、センサ１２、１３のセンサ値の変化毎のロータの回転方向の反転が２回以上連続した場合に、ハンチング状態であると判断することができる。ロータの回転方向が正常な駆動によって変化した場合にハンチング状態であると誤判定することを抑制しつつ、ハンチングの発生を早期に検出することが可能になり、ハンチングの発生による消費電力の増加を抑制することができる。
【００９７】
また、本実施形態では、マイクロコントローラ１１が、主電源１６又はバックアップ用の電池１７によって動作するものであり、主電源１６によるマイクロコントローラ１１の動作と、電池１７によるマイクロコントローラ１１の動作と、が同一（例えば図８に示した処理）である。このため、マイクロコントローラ１１が主電源１６及び電池１７のいずれにより動作中であるかの判断を含まない処理により、駆動周期の制御を行うことができる。したがって、駆動周期の制御を行うための処理の量を低減することができる。これにより、処理遅延による検出漏れを抑制して検出漏れなく回転位置を検出することができるとともに、駆動周期の制御を行うための処理によるマイクロコントローラ１１の消費電力を低減することができる。
【００９８】
（他の実施形態）
上述した実施形態は、本発明の好適な形態の一例ではあるが、これに限定されるものではなく本発明の要旨を変更しない範囲において種々変形実施が可能である。
【００９９】
例えば、マイクロコントローラ１１が図８に示した処理を通常動作モード及びバックアップモードのいずれにおいても実行する構成について説明したが、このような構成に限らない。例えば、マイクロコントローラ１１は、バックアップモードにおいては図８に示す処理を実行し、通常動作モードにおいては図８に示す処理と異なる処理を実行してもよい。例えば、マイクロコントローラ１１は、主電源１６からの電力の供給があり消費電力の抑制の必要性が比較的少ない通常動作モードにおいては、駆動周期を常に第２周期Ｔ２（高速）とする処理を実行してもよい。これにより、例えばロータが急に回転し始めた場合においても、駆動周期が長いことによる検出漏れを抑制し、ロータの回転位置を検出漏れなく検出することができる。
【０１００】
また、マイクロコントローラ１１は、主電源１６からの電力の供給があり消費電力の抑制の必要性が比較的少ない通常動作モードにおいては、駆動周期を常に第２周期（高速）より短い周期とする処理を実行してもよい。これにより、主電源１６によって動作しており電池切れのおそれがない通常動作モードにおいて、ロータの高速な回転にも追従して検出漏れなく回転位置を検出することができる。
【０１０１】
また、上述した実施形態では、エンコーダ１０は磁気式のエンコーダであるが、エンコーダ１０は光学式のエンコーダであってもよい。この場合、エンコーダ１０は、磁気センサであるセンサ１２、１３に代えて、発光素子及び受光素子を有する光学式のセンサを複数備えていてもよい。また、エンコーダ１０は、ロータの回転位置を検出するための複数のセンサとして、磁気式のセンサ及び光学式のセンサ以外のセンサを備えていてもよい。
【０１０２】
また、上述した実施形態では、エンコーダ１０がＱＥＰ方式のエンコーダである場合について説明したが、エンコーダ１０はＱＥＰ方式以外の方式のエンコーダであってもよい。また、上述した実施形態では、エンコーダ１０はアブソリュートエンコーダ（絶対値エンコーダ）であるが、エンコーダ１０は、インクリメンタルエンコーダであってもよい。
【０１０３】
また、上述した実施形態のエンコーダ１０は、他のエンコーダと組み合わせて用いられてもよい。例えば、上述した本実施形態のアブソリュートエンコーダと、インクリメンタルエンコーダと、を組み合わせて、ロータの回転数と、ロータの高精度な回転位置（一例としては１回転を２４分割した１５度間隔の回転位置）と、を検出する構成としてもよい。
【０１０４】
マイクロコントローラ１１のＲＯＭに記憶される回転位置検出プログラムは、プログラムをコンピュータが読取可能な一時的でない（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）記憶媒体に記憶される。このような「コンピュータ読取可能な記憶媒体」は、例えば、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−ＲＯＭ）等の光学媒体や、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ又はメモリカード等の磁気記憶媒体等を含む。また、このようなプログラムを、インターネットを介したダウンロードによって提供することもできる。
【符号の説明】
【０１０５】
１０  エンコーダ（回転位置検出装置）
１０ａ  ユニット
１１  マイクロコントローラ
１２，１３  センサ
１４，１５  抵抗
１６  主電源
１７  電池
１８  回転軸
１９  検出用磁石
３１  駆動タイミング
３２，３３，４１，４２，６５，６６  期間
５０〜５３  回転状態
６１，６２  センサ値変化
６３  マルチターンデータ変化
７１  回転位置
【図１】
2020193942.tif 000003
【図２】
2020193942.tif 000004
【図３】
2020193942.tif 000005
【図４】
2020193942.tif 000006
【図５】
2020193942.tif 000007
【図６】
2020193942.tif 000008
【図７】
2020193942.tif 000009
【図８】
2020193942.tif 000010