(57)【要約】【課題】正弦波状の駆動波形を用いるモータ制御装置にて、モータ軸の位置を検出しつつ駆動波形の位相を制御すること。【解決手段】本発明に係るモータ制御装置は、駆動電圧をモータに印加して駆動するモータ制御装置であって、ロータの回転位置に対応した位置信号を出力する位置検出手段と、位置信号に応じたタイミングでモータの駆動電圧の位相値を取得し、位相値に基づき駆動電圧の周期を変更するように制御する制御手段を備え、制御手段は、位置信号の出力に応じたタイミングで取得した駆動電圧の位相値が、所定の進角時における駆動電圧の目標位相値と異なる場合、第１のタイミングから所定時間経過した第２のタイミングにおける駆動電圧の位相値と目標位相値との差が、第１のタイミングにおける駆動電圧の位相値と目標位相値との差よりも小さくなるように、駆動電圧の傾きを変化させて前記駆動電圧の周期を変更する。【選択図】  図２
2019083688.tif 000002
【特許請求の範囲】
【請求項１】
駆動電圧をモータに印加して駆動するモータ制御装置であって、
ロータの回転位置に対応した位置信号を出力する位置検出手段と、
前記位置信号に応じたタイミングで前記モータの駆動電圧の位相値を取得し、前記位相値に基づき前記駆動電圧の周期を変更するように制御する制御手段を備え、
前記制御手段は、前記位置信号の出力に応じたタイミングで取得した前記駆動電圧の位相値が、所定の進角時における前記駆動電圧の目標位相値と異なる場合、第１のタイミングから所定時間経過した第２のタイミングにおける前記駆動電圧の位相値と前記目標位相値との差が、前記第１のタイミングにおける前記駆動電圧の位相値と前記目標位相値との差よりも小さくなるように、前記駆動電圧の傾きを変化させて前記駆動電圧の周期を変更することを特徴とするモータ制御装置。
【請求項２】
駆動電圧をモータに印加して駆動するモータ制御装置であって、
ロータの回転位置に対応した位置信号を出力する位置検出手段と、
前記位置信号に応じたタイミングで前記モータの駆動電圧の位相値を取得し、前記位相値に基づき前記駆動電圧の周期を変更するように制御する制御手段を備え、
前記制御手段は、前記位置信号の出力に応じたタイミングで取得した前記駆動電圧の位相値が、所定の進角時における前記駆動電圧の目標位相値と異なる場合、第１のタイミングから所定時間経過した第２のタイミングにおける前記駆動電圧の位相値と前記目標位相値との差が、前記第１のタイミングにおける前記駆動電圧の位相値と前記目標位相値との差よりも小さくなる駆動波形に関する速度を取得し、取得した駆動電圧に関する速度に基づいて前記駆動電圧の周期を変更する制御を行うことを特徴とするモータ制御装置。
【請求項３】
前記進角は、前記ロータの回転位置と前記駆動電圧との位相差であることを特徴とする請求項１または２に記載のモータ制御装置。
【請求項４】
前記制御手段は、前記駆動電圧の強度を連続的に変化させることを特徴とする請求項１から３のいずれか１項に記載のモータ制御装置。
【請求項５】
前記制御手段は、前記駆動電圧と前記位置信号との位相関係を、前記モータの駆動中に変更する制御を行うことを特徴とする請求項１から４のいずれか１項に記載のモータ制御装置。
【請求項６】
前記所定時間は、前記駆動電圧の周期よりも短いことを特徴とする請求項１から５のいずれか１項に記載のモータ制御装置。
【請求項７】
前記制御手段は、前記駆動電圧の周期に基づいて前記所定時間を前記モータの駆動中に変更する制御を行うことを特徴とする請求項１から６のいずれか１項に記載のモータ制御装置。
【請求項８】
前記制御手段は、前記駆動電圧と前記位置信号が目標とする位相関係となる前記周期を算出するまでに要する遅れ時間を含めて前記駆動電圧の周期を変更する制御を行うことを特徴とする請求項１から７のいずれか１項に記載のモータ制御装置。
【請求項９】
前記位置検出手段は、前記ロータまたは前記ロータに取り付けた被検出部の位置を検出する検出部を有することを特徴とする請求項１から８のいずれか１項に記載のモータ制御装置。
【請求項１０】
前記位置検出手段は、
前記検出部の出力を閾値と比較する比較手段と、
前記比較手段により２値化された信号の変化を測定して前記制御手段に出力するエンコード手段を備えることを特徴とする請求項９に記載のモータ制御装置。
【請求項１１】
前記モータに印加する駆動電圧は、正弦波状であることを特徴とする請求項１から１０のいずれか1項に記載のモータ制御装置。
【請求項１２】
前記位置検出手段が出力する前記信号は、矩形波状であることを特徴とする請求項１から１１のいずれか１項に記載のモータ制御装置。
【請求項１３】
前記位置信号の出力に応じたタイミングは、前記位置信号が切り替わるタイミングであることを特徴とする請求項１２に記載のモータ制御装置。
【請求項１４】
請求項１から１３のいずれか１項に記載のモータ制御装置と、
前記ロータとステータとを有するモータと、を備えることを特徴とするシステム。
【請求項１５】
請求項１４に記載のシステムと、
前記システムが備える前記ロータの回転により移動するレンズホルダと、を備えることを特徴とする光学機器。
【請求項１６】
前記制御手段は、前記レンズホルダの状態に基づいて所定の処理を行う際には、前記周期を変更する制御を停止することを特徴とする請求項１５に記載の光学機器。
【請求項１７】
前記所定の処理は、前記レンズホルダの基準位置を決定する処理と、前記レンズホルダの移動が機械的に妨げられている状態からの脱出処理との少なくともいずれかであることを特徴とする請求項１６に記載の光学機器。
【請求項１８】
駆動電圧をモータに印加して駆動するモータ制御装置にて実行されるモータ制御方法であって、
前記駆動電圧をモータに印加するステップと、
ロータの回転位置に対応した位置信号を出力する位置検出ステップと、
前記位置検出ステップにより出力された位置信号に応じたタイミングで前記モータの駆動電圧の位相値を取得する取得ステップと、
前記取得ステップで取得した前記駆動電圧の位相値が、所定の進角時における前記駆動電圧の目標位相値と異なる場合、第１のタイミングから所定時間経過した第２のタイミングにおける前記駆動電圧の位相値と目標位相値との差が、前記第１のタイミングにおける前記駆動電圧の位相値と目標位相値との差よりも小さくなるように前記駆動電圧の傾きを変更することで前記駆動電圧の周期を変更する変更ステップを有することを特徴とするモータ制御方法。
【請求項１９】
駆動電圧をモータに印加して駆動するモータ制御装置にて実行されるモータ制御方法であって、
前記駆動電圧をモータに印加するステップと、
ロータの回転位置に対応した位置信号の出力に応じたタイミングで前記モータの駆動電圧の位相値を取得するステップと、
前記位置信号の出力に応じたタイミングで取得した前記駆動電圧の位相値が、連進角が所定値である場合に取得される前記駆動電圧の目標位相値と異なる場合、第１のタイミングから所定時間経過した第２のタイミングにおける前記駆動電圧の位相値と前記目標位相値との差が、前記第１のタイミングにおける前記駆動電圧の位相値と目標位相値との差よりも小さくなる駆動波形に関する速度を取得するステップと、
前記取得した駆動電圧に関する速度に基づいて前記駆動電圧の周期を変更するステップを有することを特徴とするモータ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、位置検出手段を備えたモータの制御装置、該モータ制御装置を備えるシステム並びに光学機器、および制御方法に関し、モータの駆動効率を向上させる技術に関するものである。
【背景技術】
【０００２】
ステッピングモータは小型、高トルク、高寿命等の特徴をもち、開ループ制御により容易にデジタル的な位置決め動作を実現できる。このため、撮像装置や光学ディスク装置、プリンタやプロジェクタ等の機器に広く用いられている。しかし、ステッピングモータへの負荷が大きい場合や高速回転時に脱調してしまうという問題がある。これを解決するためにステッピングモータにエンコーダを取り付け、ロータの検出位置に併せて通電を切り替え、いわゆるブラシレスＤＣモータの動作を行わせる脱調防止方法が従来から行われている。
【０００３】
特許文献１では、ステッピングモータにおいてロータの回転に応じて出力信号を出すエンコーダ信号を用い、ロータの磁力位相に対して効率的に矩形波状の駆動波形をかけて脱調を防ぎながら、高速かつ高トルクを実現する方法が開示されている。
【０００４】
一方、従来のブラシレスモータに関しては、組立完了後にモータを実際に正転方向と逆転方向に回転させて各方向でのモータ特性を測定し、モータ特性の測定結果を比較して回転位置センサの物理的位置を調整する技術が知られている。また、特許文献２ではブラシレスモータのロータを外部から別の動力源で回転させ、モータコイルに発生する起電力信号とエンコーダ出力信号との位相差を比較して、エンコーダの物理的な位置ずれ量を検出する方法が開示されている。
【０００５】
また、特許文献３では、ステッピングモータにおいて目標位置まで移動する駆動信号を入力した後に、モータ位置が目標位置まで到達していなかった場合に再び目標位置まで駆動するように移動位置を補正する方法が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−１１９０８９号公報
【特許文献２】特開２００５−１２９５５号公報
【特許文献３】特開２００４−３４８２２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来技術では矩形波状の駆動波形を使用し、該駆動波形に高調波成分が含まれるので、騒音が大きいという問題がある。また矩形波状の駆動波形では、ステッピングモータの停止位置の精度が粗くなってしまうという問題もある。
【０００８】
また、従来のブラシレスモータでは、ブラシレス駆動を行いながら速度を測定して、測定結果から位置ずれを調整する必要があるため、時間がかかる。また、特許文献２に開示された従来技術では、ブラシレスモータを駆動目的の機器に組み込んだ後では調整が不可能になる。ロータを外部の動力源に接続するためには、ロータ部を外部に露出させる必要があるので調整のための設定作業が難しい。
【０００９】
また、従来の移動位置の補正方法では、モータが一旦停止した後で位置判定が行われ、その後に補正動作が行われる。よって、静定時間等も含めて最終的に目標位置まで移動する時間が長い。
【００１０】
本発明の目的は、正弦波状の駆動波形を用いるモータ制御装置にて、モータ軸の位置を検出しつつ駆動波形の位相を制御することである。また、モータに設けた位置検出手段が出力する信号を短時間で簡便に調整することである。さらに、目標位置までの移動中に脱調の有無を検知し、常に脱調による位置ずれを補正することで、モータが脱調した場合でも速やかにモータを目標位置に到達できるようにすることである。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明に係る装置は、駆動電圧をモータに印加して駆動するモータ制御装置であって、ロータの回転位置に対応した位置信号を出力する位置検出手段と、前記位置信号に応じたタイミングで前記モータの駆動電圧の位相値を取得し、前記位相値に基づき前記駆動電圧の周期を変更するように制御する制御手段を備える。前記制御手段は、前記位置信号の出力に応じたタイミングで取得した前記駆動電圧の位相値が、所定の進角時における前記駆動電圧の目標位相値と異なる場合、第１のタイミングから所定時間経過した第２のタイミングにおける前記駆動電圧の位相値と前記目標位相値との差が、前記第１のタイミングにおける前記駆動電圧の位相値と前記目標位相値との差よりも小さくなるように、前記駆動電圧の傾きを変化させて前記駆動電圧の周期を変更する。
【発明の効果】
【００１２】
本発明によれば、正弦波状の駆動波形を用いるモータ制御装置にて、モータ軸の位置を検出しつつ駆動波形の位相を制御することができる。また、本発明によれば、位置検出手段が出力する信号を短時間で簡便に調整することができる。さらに、本発明によれば、目標位置までの移動中に脱調の有無を検知し、常に脱調による位置ずれを補正することで、モータが脱調した場合でも速やかにモータを目標位置に到達させるモータ制御を実現可能である。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態を説明するために、位置検出センサを含むモータユニットを例示する図である。
【図２】システム構成の概要を例示する図である。
【図３】モータ、ステータ、スリット回転板の位置関係を示す図である。
【図４】モータドライバの動作説明図である。
【図５】正弦波発生器の出力を説明する図である。
【図６】正弦波状駆動波形を説明する図である。
【図７】ロータ磁石とスリット回転板との関係を示す模式図である。
【図８】駆動波形とセンサ出力波形との位相関係を説明する図である。
【図９】駆動波形とセンサ出力波形との位相差を説明する図である。
【図１０】図１１ないし図２３と併せて本発明の１／４周期での制御を説明するために、進角０°の状態を説明する図である。
【図１１】進角「−９０°」の状態を説明する図である。
【図１２】正転時での進角０°の状態を例示する図である。
【図１３】正転時での進角０°の状態の別例を示す図である。
【図１４】正転時にて進角０°の状態での位相ずれを説明する図である。
【図１５】図１４（Ａ）ないし（Ｅ）の配置を変更した図である。
【図１６】逆転時での進角０°の状態を説明する図である。
【図１７】逆転時での進角０°の状態の別例を示す図である。
【図１８】逆転時にて進角０°の状態での位相ずれを説明する図である。
【図１９】図１８（Ａ）ないし（Ｅ）の配置を変更した図である。
【図２０】進角制御の概要を示す説明図である。
【図２１】は、図２２とともに処理例を説明するフローチャートである。
【図２２】図２１に続く処理例を説明するフローチャートである。
【図２３】不安定回転状態を説明する図である。
【図２４】図２５ないし図２８と併せて本発明の１／２周期での制御を説明するために、電流遅れについて説明する図である。
【図２５】トルク、スピード、進角の関係を説明する図である。
【図２６】図２７とともに処理例を説明するフローチャートである。
【図２７】図２６に続く処理例を説明するフローチャートである。
【図２８】位置検出の出力調整が適切に行われていない場合の説明図である。
【図２９】図３０ないし図３４と併せて位相ずれ調整工程時の処理例を示すフローチャートである。
【図３０】図２９に関連する処理例を示すフローチャートである。
【図３１】図２９に続く処理例を示すフローチャートである。
【図３２】図３１に関連する処理例を示すフローチャートである。
【図３３】図３１に続く処理例を示すフローチャートである。
【図３４】図３３に続く処理例を示すフローチャートである。
【図３５】センサとロータの基準位置関係を示す図である。
【図３６】センサとロータの基準位置関係からの位相ずれを説明する図である。
【図３７】位相平均値の計算処理を説明する模式図である。
【図３８】センサの出力調整が十分でない状態を説明する図である。
【図３９】２逓倍出力センサを用いる場合の説明図である。
【図４０】ＣＰＵによる処理例を説明するフローチャートである。
【図４１】図４２とともに正弦波発生器に係る処理例を説明するフローチャートである。
【図４２】図４１に続く処理例を説明するフローチャートである。
【図４３】補正処理の一例を示す説明図である。
【図４４】駆動停止後に慣性でロータ軸が回転し続けた場合の処理例を示す説明図である。
【図４５】駆動波形信号の印加を続行してもロータが回転しない場合の処理例を示す説明図である。
【図４６】レンズユニットへの適用例を説明する斜視図である。
【発明を実施するための形態】
【００１４】
以下に、本発明の実施形態を、添付図面に基づいて詳細に説明する。なお、回転駆動型モータを例示してモータ制御装置およびモータ制御方法を説明するが、本発明は、モータ軸が直線移動するリニア駆動型モータにも適用可能である。
【００１５】
図１は、本発明の実施形態に係るモータユニット１００の外観図である。モータユニット１００はステッピングモータ１０１を備え、ロータ軸１０２はスリット回転板１０５を有する。スリット回転板１０５は明領域と暗領域の比率が５０：５０で設計されている。被検出部であるスリット回転板１０５に対して明領域と暗領域を光学的に検出する一対の光学検出手段として、ｃｈ０フォトインタラプタ１０３およびｃｈ１フォトインタラプタ１０４が取り付けられている。ロータ軸１０２の回転に伴ってスリット回転板１０５が回転し、各フォトインタラプタの出力信号が変化する。以下では、モータ軸の回転位置検出に用いるｃｈ０フォトインタラプタをｃｈ０−ＰＩと記し、ｃｈ１フォトインタラプタをｃｈ１−ＰＩと記す。
【００１６】
図２は駆動用の電気回路を含めたシステムの構成例を示す。符号１０１〜１０５に示す各部は既述の通りである。コンパレータ１０６はｃｈ０−ＰＩ１０３とｃｈ１−ＰＩ１０４からの各アナログ入力信号を、設定された閾値電圧と比較することで、２値化された信号を後段に出力する。本実施形態では、モータが回転ムラなく一定速度で回転している状態において、コンパレータ１０６の出力のＨ（HIGH）レベルとＬ（LOW）レベルとの比率が５０：５０となるように閾値が予め調整されているものとする。以後、ｃｈ０−ＰＩ１０３の信号を２値化した第１検出信号をＥＮＣ０信号とし、ｃｈ１−ＰＩ１０４の信号を２値化した第２検出信号をＥＮＣ１信号とする。エンコーダ回路１０７はＥＮＣ０信号とＥＮＣ１信号の各信号の変化時点でタイミング情報を取得し、これらの信号による位置カウントおよび信号周期カウントを行う。エンコード処理ではＥＮＣ０信号の立上りと立下り、ＥＮＣ１信号の立上りと立下りの４種の信号種別が区別され、それぞれの信号入力タイミングにてＣＰＵ（中央演算処理装置）１０８に割り込み処理がかかる。この時、ＣＰＵ１０８は割り込み要因に係る４つの信号種別を判別する。ＣＰＵ１０８はメモリからプログラムを読み出して実行する機能をもち、またバス１１０を介してエンコーダ回路１０７、正弦波発生器１０９、ＰＷＭ（パルス幅変調）発生器１１１にアクセスする。正弦波発生器１０９は正弦波の１周期に対して５１２の分解能をもつ多値波形データの参照テーブルを有する。多値波形のテーブル値に対応するＰＷＭ値の信号を正弦波発生器１０９がＰＷＭ発生器１１１に送ると、ＰＷＭ発生器１１１が出力するＰＷＭ信号がモータドライバ１１２で増幅されてステッピングモータ１０１に供給される。正弦波発生器１０９からステッピングモータ１０１への信号伝達の詳細については、図４および図５を参照して後述する。
【００１７】
次に、図４の模式図を参照して、モータドライバ１１２の構造を説明する。図４（Ａ）は、スイッチ素子４０１〜４０４を介してＡ相用コイル１１３が接続されている様子を表わしている。図４（Ｂ）に示すように、ＰＷＭ発生器１１１からのＡ相用のＰＷＭ信号がHIGH信号（以下、Ｈ信号と記す）のとき、スイッチ素子４０１および４０４のみが閉じた状態となる。この時、Ａ相用コイル１１３の両端には、Ａ側を高電位としてモータドライバ１１２に供給されている電圧Ｖｃｃ分の電位差が生じる。この時にコイル１１３のＢ側に対するＡ側の電位を図４（Ｆ）に示し、流れる電流を図４（Ｉ）に示す。このときＡ相用コイル１１３に流れる駆動電流を便宜的に「Ｉ」と記す。
【００１８】
逆に、ＰＷＭ発生器１１１からのＡ相用のＰＷＭ信号がLOW信号（以下、Ｌ信号と記す）のときには、スイッチ素子４０２および４０３のみが閉じ、図４（Ｃ）の状態となる。この時、Ａ相用コイル１１３の両端には、Ｂ側を高電位としてモータドライバ１１２に供給されている電圧Ｖｃｃ分の電位差が生じる。この時にＡ相用コイル１１３のＢ側に対するＡ側の電位を図４（Ｇ）に示し、駆動電流を図４（Ｊ）に示す。
【００１９】
以上の２つの状態を短時間で繰り返した場合の例を、図４（Ｄ）、（Ｅ）、（Ｈ）、（Ｋ）に示す。図４（Ｄ）と図４（Ｅ）の状態が等時間ずつ繰り返されると、図４（Ｈ）で示すように、−Ｖｃｃと＋Ｖｃｃの２値の矩形波電圧信号が発生することになる。この電圧信号がＡ相コイル１１３に印加されると、コイルの電流遅れ成分により電圧信号が平滑化された形で電流波形が現れる。−Ｖｃｃと＋ＶｃｃとでＨＬ信号比率が５０％の場合、実効電流値が０となる。ＰＷＭ信号のＨＬ信号比率が５０％のときに出力が０Ｖの定常電圧、１００％のときに＋Ｖｃｃの定常電圧、７５％のときに＋Ｖｃｃ／２の定常電圧がかかっているのと実効的に同じとして扱うことができる。
【００２０】
正弦波発生器１０９では、５１２個のテーブル番号のそれぞれに対して、ＰＷＭ制御のＤＵＴＹ（デューティー）比（％）の値が参照テーブルに格納されている。０から５１１までのテーブル番号は正弦波形の位相値に対応する。図５は、正弦波の参照テーブル例の詳細を示す。正弦波の０度位相にテーブル番号０が相当し、正弦波の１８０度位相にテーブル番号２５６が相当する。テーブル番号０にはＤＵＴＹ比５０％の値が格納され、それ以降のテーブル番号には、位相に応じてＰＷＭ出力のＤＵＴＹ比の値が格納されている。図５の例では、ＤＵＴＹ比の値が１００％になると＋Ｖｃｃの値が出力されるので、随時正弦波のゲインを変更できるように、テーブル値のピークを１００％未満の値に設定している。以上の方法により、デジタル２値出力信号でモータコイルに対して実効的に正弦波状の電圧信号を印加することができる。
【００２１】
図２に戻って説明を続けると、Ａ相用コイル１１３、Ｂ相用コイル１１４には、モータドライバ１１２が出力する正弦波信号が印加される。後段のステータＡ+１１５、ステータＡ-１１６、ステータＢ+１１７、ステータＢ-１１８に対して４種類の位相の異なる正弦波電圧が発生する。Ａ相およびＢ相の電圧波形と、ステータ印加電圧、ロータの停止位置、およびその時のスリット回転板１０５の位置について、図３、図５、図６を参照して詳細に説明する。
【００２２】
図３（Ａ）は、本実施形態に係るステッピングモータ１０１の内部構造を例示した模式図である。ロータマグネット１１９は極対数が５（１０極）であり、その周囲に物理角１８度毎にステータが設置されている。時計回り方向を正転方向（第１方向）とする。
【００２３】
ステータＡ+１１５、ステータＡ-１１６、ステータＢ+１１７、ステータＢ-１１８がモータ軸を中心として周期的に配置されている。ステータＡ+１１５、ステータＢ+１１７は、コイルに印加された電圧が正弦波形の正領域にあるときにＮ極の磁力を発生する。またステータＡ-１１６、ステータＢ-１１８はコイルに印加された電圧が正弦波形の正領域にあるときにＳ極の磁力を発生する。図５の正弦波形の正領域にＮ極、負領域にＳ極と記しており、これらはステータＡ+１１５、ステータＢ+１１７に対する発生磁力を示している。ステータＡ-１１６、ステータＢ-１１８に関しては逆の関係になる。
【００２４】
図６は、各相の駆動電圧波形を例示する。図６（Ａ）に示す信号をＡ相用コイル、Ｂ相用コイルにそれぞれかけた場合、図１、図３に示す正転方向にロータ軸１０２が回転する。また、図６（Ｂ）に示す信号をＡ相用コイル、Ｂ相用コイルにそれぞれかけると、図１、図３に示す正転方向とは反対の第２方向にロータ軸１０２が回転する。正転時はテーブル番号を正方向に進めて駆動波形信号が生成され、逆転時はテーブル番号を逆方向に進めて駆動波形信号が生成される。また、Ａ相とＢ相の出力は正転時にＡ相がＳｉｎ（正弦）波となり、Ｂ相がＣｏｓ（余弦）波となるように、Ｂ相がＡ相に対して９０度先行した波形が出力される。よって、逆転時はＢ相がＡ相に対して９０度遅れる波形が出力される。
【００２５】
図３（Ｂ）は、各ステータとフォトインタラプタとの位置関係、およびロータマグネット１１９の着磁位相とスリット回転板１０５の基準位置との位相関係を示す。ロータマグネット１１９のＮ極領域と、スリット回転板１０５の明領域とが丁度重なっている位置関係を基準位置関係と定める。図３（Ｃ）では、基準位置関係から、スリット回転板１０５が逆転方向に電気角でα度（図では１８０度）ずれた位置に固定された場合を示す。電気角とはロータにかける正弦波形の位相角度、およびその時にロータマグネット１１９が進む角度を３６０度と定義し直したものである。よって本実施形態の場合、スリット回転板１０５、ロータマグネット１１９の物理的角度７２度が電気角３６０度に相当する。
【００２６】
図３（Ｂ）にはステータＡ+１１５、ステータＢ+１１７、ｃｈ０−ＰＩ１０３、ｃｈ１−ＰＩ１０４の物理的位置を示す。実際には、図３（Ａ）のように２０個のステータがあるが、ステータＡ+１１５、ステータＢ+１１７の位置を代表して示す。ステータＡ+１１５から逆転方向に物理角１８度離れた位置にステータＢ+１１７が位置する。角度的にはｃｈ０−ＰＩ１０３がステータＢ+１１７に対応する位置となり、ｃｈ１−ＰＩ１０４がステータＡ+１１５に対応する位置となるように設置されているものとする。
【００２７】
図７は、極対数５のモータを、理解し易いように極対数１の構成にモデル化した図である。これにより電気角と物理角が一致するため、以後の説明はこのモデルを使って行う。図７（Ａ）は、ロータマグネット１１９の着磁位相と、スリット回転板１０５の明暗位相とが基準位置関係にある場合を示す。図７（Ａ）の右側のグラフは、回転位置を図の状態からθ度回転させた場合のＥＮＣ０信号およびＥＮＣ１信号の出力変化を表している。図７（Ａ）に対して、スリット回転板１０５の位置が電気角α度だけ逆転方向にずれて取り付けられた場合を表わしたものが図７（Ｂ）である。この時、ＥＮＣ０信号とＥＮＣ１信号の各出力は、図７（Ａ）の場合に比べて、電気角α度分、遅れて出力される。
【００２８】
＜取り付けずれ量αを特定する原理＞
図８は、モータに駆動波形をかけてロータを正転方向に回転させていく様子を表わす図である。図８の上方には電気角９０°ごとの回転状態を０°から２７０°に亘って示している。図８（Ａ）、図８（Ｂ）は、それぞれステータＡ+１１５、ステータＢ+１１７に対する励磁波形を示す。図８（Ｃ）は、励磁している信号（マイクロステップ波形）のテーブル番号を示す。図８（Ａ）、図８（Ｂ）では、＋側の値がステータに対してＮ極の励磁を与えるものとする。
【００２９】
図８（Ｄ）は、ステータＢ+１１７直下のロータマグネット１１９について、駆動波形をあるテーブル位相に固定した時に対応する停止着磁位相を示す。図８（Ｅ）は、ステータＢ+１１７直下のロータマグネット１１９について、駆動波形をかけて回転状態にある場合に対応する着磁位相を示す。図８（Ｅ）の場合、図８（Ｄ）に対してロータの追従遅れ８０２がある。図８（Ｆ）は、ステータＢ+１１７と同じ角度位置に対応するスリット回転板１０５の明暗位相と、その対応位置にあるｃｈ０−ＰＩ１０３が出力して２値化されたＥＮＣ０信号を示す。スリット回転板１０５の明領域から暗領域への立上り位相は、ロータマグネットのＮ極からＳ極への変化位相よりも、取り付け位置ずれ量８０３だけ遅れた位相位置にある。この取り付け位置ずれ量８０３は、図７に示す角度αに相当する。図８（Ｆ）に示すＥＮＣ０信号出力とスリット回転板１０５の位相との間には、微小ではあるが電気的遅れ８０４がある。
【００３０】
ＥＮＣ０信号の立下りタイミングでＣＰＵ１０８に割り込み処理を発生させ、そのタイミングでのマイクロステップ波形のテーブル番号を正弦波発生器１０９から取得する処理が実行される。このとき、追従遅れ８０２、取り付け位相ずれ量８０３、電気的遅れ８０４の和がゼロである場合、取得される値は３８４となる（図８（Ｃ）の位置８０７参照）。しかし、実際には３つの遅れ成分の和がゼロでないため、図８（Ｃ）に位置８０８で示すように、５９という値が取得される。取り付け位相ずれ量８０３のみが遅れ成分であれば、位置８０７でのテーブル番号と位置８０８でのテーブル番号との差分から、位相ずれ量を算出できるが、実際には追従遅れ８０２、電気的遅れ８０４が含まれている。以下では、これを解決する手段について図９を参照して説明する。
【００３１】
図９（Ａ）〜（Ｆ）は、正転方向へのモータ駆動時の波形例を示す。図９（Ａ）から図９（Ｃ）は、図８（Ａ）から図８（Ｃ）に相当し、図９（Ｄ）から図９（Ｆ）は、ＥＮＣ０信号（第１検出信号に相当する）の出力波形を示す。図８の追従遅れ８０２と電気的遅れ８０４を遅れ成分β９０１としてまとめて示し、取り付け位相ずれ量８０３をα９０２としている。図９（Ｇ）〜（Ｌ）は、逆転方向へのモータ駆動時の波形例を示す。図９（Ｇ）から図９（Ｉ）は、図８（Ａ）から（Ｃ）に相当し、図９（Ｊ）から（Ｌ）は、ＥＮＣ０信号（第２検出信号に相当する）の出力波形を示す。なお、図９における回転数については、ステッピングモータが回転ムラや共振動作等のない安定した回転数であって、正転時と逆転時とで同じ回転数でモータが回転する状態を想定する。正転方向へのモータ駆動時には、図９（Ｃ）に示すように、ＥＮＣ０信号の立下りのタイミングで得られるマイクロステップ波形のテーブル番号は、遅れや位置ずれがなければ３８４（点９００参照）である。実際には遅れ分とずれ量があるため、例えば、テーブル番号５９が得られる。この２つの値から差分を計算すると、（５１２−３８４）＋５９＝１８７が得られる。この値は、ずれ量α９０２と、遅れ成分β９０１とを足し合わせた、第１位相差（α＋β）に相当する。
【００３２】
一方、逆転方向へのモータ駆動時には、正転時にスリット回転板１０５が明領域から暗領域に変化するタイミングは、逆転時では暗領域から明領域に変わるタイミングに相当する。よって、図９（Ｌ）にて暗領域から明領域に変化するタイミングでのマイクロステップ波形のテーブル番号が取得されることになる。このタイミングで遅れと位置ずれがともにない場合、正転時と同じく３８４のテーブル番号が取得できるはずである。しかし、実際には位相ずれ量α９０４と、遅れ成分β９０３があるため、例えば、図９（Ｉ）に示す４４８の値が取得される。この場合、テーブル番号の差分を計算すると、４４８−３８４＝６４となる。この値は位相ずれ量α９０４から遅れ成分β９０３を引いた、第２位相差（α−β）に相当する。
【００３３】
以上から分かるように、正転時のテーブル番号の差分と、逆転時のテーブル番号の差分を足したものは１８７＋６４＝２５１となる。この値は（α＋β）+（α−β）＝２αに相当し、２５１を２で除算した値からα、すなわち取り付け位相ずれ量が求まる。よって、正転時と逆転時でモータをオープン制御で等速回転させた状態で、ＥＮＣ０信号の変化タイミングにてマイクロステップ波形のテーブル番号をそれぞれ取得し、両者の和を算出して２で割れば、取り付け位相ずれ量を特定できる。オープン制御では閉ループでのフィードバック制御とは異なり、位置検出信号によらずにモータの駆動制御が行われる。以上がロータマグネット１１９の着磁位相と、スリット回転板１０５の明暗位相との間のずれに相当する、取り付け位相ずれ量の特定方法の原理である。
【００３４】
＜１／４周期での制御＞
図１０、図１１は、ロータマグネット１１９のどの回転位置の時に、どの位相の正弦波駆動波形をＡ相用コイル１１３、Ｂ相用コイル１１４に入力すれば効率的な回転駆動を行えるかを説明するための図である。図１０、図１１ともにステータＡ+１１５、ステータＢ+１１７とロータマグネット１１９を模式化した図を上部に示す。時計回り方向を正転方向と定義し、図の左上のロータマグネット１１９の位置を基準とする。即ち、ステータＢ+１１７の直下での磁極位置が、Ｎ極からＳ極に変化する境目に位置する状態を０度として、この状態からロータマグネットを９０度ずつ回転させた４状態を図示している。各状態を、便宜的にロータ電気角０°、９０°、１８０°、２７０°とする。
【００３５】
図１０（Ａ）、図１１（Ａ）は、ステータＡ+１１５がＮ極に励磁されていた場合、ロータマグネット１１９に対して正転方向のトルクを与える値を正の値とした、ステータＡ+１１５位置でのロータマグネット磁界強度を表わしている。図示のように、ロータ電気角が０°の場合、ステータＡ+１１５がどのように励磁されていようが、ロータマグネット１１９の回転トルクは発生しない。このことは、図１０（Ａ）、図１１（Ａ）のロータ電気角０°位置でのトルク値が０であることから分かる。また、ロータ電気角が９０°の場合、ステータＡ+１１５がＮ極に励磁されているとき、ロータマグネット１１９のＮ極に対して斥力が発生し、ロータマグネット１１９のＳ極に対して引力が発生し、最高値の正転方向トルクが発生する。つまり、図１０（Ａ）、図１１（Ａ）のロータ電気角９０°位置でのトルク値は最大値となっている。図１０（Ｂ）、図１１（Ｂ）は、ステータＢ+１１７位置でのロータマグネット磁界強度を表わしており、位相の相違を除いて図１０（Ａ）、図１１（Ａ）と同様であるので詳細な説明を省略する。
【００３６】
図１０（Ｃ）、図１１（Ｃ）は、ｃｈ０−ＰＩ１０３の位置でのスリット回転板１０５の明暗状態、およびＥＮＣ０信号を表わす。ｃｈ０−ＰＩ１０３の信号を２値化した信号がＥＮＣ０信号であり、厳密にはスリット回転板１０５の明暗状態の切り替わり時点から、電気的な遅れが僅かにあった後にＥＮＣ０信号が切り替わるが、本処理ではこれを無視する。ＥＮＣ０信号は明状態の時にＨｉｇｈレベルであり、暗状態の時にＬｏｗレベルである。図１０（Ｃ）、図１１（Ｃ）の出力について、図７（Ａ）に示す状態でスリット回転板１０５、ｃｈ０−ＰＩ１０３、ｃｈ１−ＰＩ１０４が設置されているものとする。図１０（Ｄ）、図１１（Ｄ）は、ｃｈ１−ＰＩ１０４、およびＥＮＣ１信号に関する図であり、図１０（Ｃ）、図１１（Ｃ）と同様であるため、詳細な説明を省略する。
【００３７】
以下、図１０を参照して、ロータマグネット１１９に対して回転トルクを効率的に発生させる駆動波形のかけ方について説明する。図１０（Ａ）、（Ｂ）に例示した磁界曲線に対して、Ａ相用コイル１１３、Ｂ相用コイル１１４にそれぞれ流れる電流（コイル電流）を掛けたものがトルクである。図１０（Ａ）、（Ｂ）に示す波形がいずれも正弦波状であることから、Ａ相用コイル１１３、Ｂ相用コイル１１４に流れる電流位相はそれぞれ、図１０（Ａ）、（Ｂ）の磁界曲線の位相と一致している時にトルクが最大となる。コイル電流波形については、コイル電圧波形からの遅れが発生するが、この遅れはコイル特性やコイルに生ずる逆起電圧によって変化する。このため、電圧と電流の位相が一致する場合を基準とし、Ａ相用コイル１１３、Ｂ相用コイル１１４に通電した際に最大効率の正弦波電圧波形を、図１０（Ｅ）、（Ｆ）に示す。図１０（Ａ）と図１０（Ｅ）とが同相関係にあり、図１０（Ｂ）と図１０（Ｆ）とが同相関係にあることが分かる。ロータマグネット１１９の回転位置に対して、図１０（Ｅ）、（Ｆ）に示す位相関係で電圧波形をかける駆動状態を、進角「０°」の状態と定義する。１０（Ｇ）、（Ｈ）はそれぞれ、Ａ相コイル１１３に起因するトルク曲線、およびＢ相コイル１１４に起因するトルク曲線を示す。図１０（Ｇ）は、図１０（Ａ）の波形と図１０（Ｅ）の波形を掛け合わせた結果を示す曲線であり、図１０（Ｈ）は、図１０（Ｂ）の波形と図１０（Ｆ）の波形を掛け合わせた結果を示す曲線である。これら２つのトルク曲線を足し合わしたものが、モータ全体に発生するトルク曲線であり、これを図１０（Ｉ）に示す。図１０（Ｉ）にて、常に回転を引き起こす一定のトルクが発生していることが見て取れる。
【００３８】
図１１は、駆動波形を任意の位相に固定した場合の、駆動波形位相とロータマグネット１１９の回転位置を示す。例えば、図１１（Ｅ）でのロータ電気角０°において、Ａ相コイル１１３にかけている電圧波形は負の最大値であり、即ちステータＡ+に最大のＳ極磁界が発生している。図１１（Ｆ）に示すＢ相コイル１１４の電圧値は０であり、即ちステータＢ+は無励磁状態である。この時ロータ電気角０°の図に表わされる位置にロータマグネット１１９が固定され、一切回転トルクは発生しない。このように図１１（Ｅ）、（Ｆ）に示す位相関係で駆動電圧をモータにかけた時、正転方向のトルクは発生しない。極く低速でモータをオープン駆動させた場合には、ロータマグネット１１９の着磁位相と、駆動波形の位相は図１１に極めて近い位相関係で回転する。図１１（Ｇ）は、Ａ相コイル１１３に起因するトルク曲線を示し、図１１（Ｈ）は、Ｂ相コイル１１４に起因するトルク曲線を示す。これらのトルク曲線は互いに逆相であり、符号の異なる同一面積のトルク積分値を持つ。両者の和を図１１（Ｉ）の曲線に示す。モータ全体のトルクは常に０となっている。この時、図１０の場合と比較して駆動波形の位相が９０°遅れた関係になっている。よって、図１１に示すロータマグネット１１９と駆動波形との位相関係を進角「−９０°」と定義する。本処理では、図１０に示す進角「０°」の位相関係で常にモータの回転駆動を行うことを目的とする。以下、図１２〜図１５を参照し、モータ駆動中にてＥＮＣ０信号の立上りと立下り、ＥＮＣ１信号の立上りと立下りの各タイミングで、駆動波形のどの位相値を取得していれば、進角０°の状態になるかについて順を追って説明する。
【００３９】
図１２は、進角「−９０°」の時の、駆動波形とＥＮＣ０信号、ＥＮＣ１信号との関係を示す。図１２（Ａ）、（Ｂ）は、それぞれＡ相コイル１１３、Ｂ相コイル１１４への印加電圧波形を示す。図１２（Ｃ）には、図１２（Ａ）、（Ｂ）の各波形に対応するテーブル番号値を直線状のグラフで視覚化して示す。図１２（Ｄ）、（Ｅ）は、それぞれＥＮＣ０信号、ＥＮＣ１信号の状態を示す。図１２から分かるように、モータの駆動中に進角「−９０°」の状態を保ちたい場合、ＥＮＣ０信号の立上り時点で駆動波形のテーブル番号１２８が取得できていればよい。また、ＥＮＣ０信号の立下り時点ではテーブル番号３８４が取得できていればよい。ＥＮＣ１信号の立上り時点では２５６、ＥＮＣ１信号の立下り時点では０の各テーブル番号が取得できていればよいことになる。
【００４０】
図１３は、進角０°の状態を示す図である。図１２の場合よりも、駆動波形が９０°進んでいることが見て取れる。進角０°での駆動状態を保つには、ＥＮＣ０信号の立上り時点で２５６、ＥＮＣ０信号の立下り時点で０の各テーブル番号が取得できればよい。ＥＮＣ１信号の立上り時点では３８４、ＥＮＣ１信号の立下り時点では１２８の各テーブル番号が取得できていればよいことになる。
【００４１】
以上、特定の進角状態を保つ場合の駆動波形とＥＮＣ０、ＥＮＣ１との位相関係について述べてきた。ここまでの説明では、図７（Ａ）の状態、即ちロータマグネット１１９のＮ極位相とスリット回転板１０５の明状態の位相とが丁度一致していることを前提とした。図１４は、図７（Ａ）の基準位置関係から、図７（Ｂ）に示すスリット回転板１０５の位相がαだけずれた位置に取り付けられている一般の場合について位相関係を示している。
【００４２】
図１４に示すように、スリット回転板１０５が取り付け位置ずれ量αを持つ場合、ロータマグネット１１９の回転に対して、ＥＮＣ０信号、ＥＮＣ１信号は図７（Ｂ）の場合と同様、αの位相遅れが発生する。この時、モータ駆動中に進角０°の状態を保つためには、ＥＮＣ０信号の立上り時点においてテーブル番号２５６＋α（図１４（Ｃ）の１２０２参照）を取得できる関係になくてはならない。また、ＥＮＣ０信号の立下り時点にて０＋α、ＥＮＣ１信号の立上り時点にて３８４＋α、ＥＮＣ１信号の立下り時点にて１２８＋αの各テーブル番号を取得できる関係になくてはならない。これらは、図１４（Ｃ）に示す白点１２０４、１２０３、１２０１の位置にそれぞれ対応する。
【００４３】
図１５は、図１４に示したＥＮＣ０信号、ＥＮＣ１信号を上部に移して書き換えた図である。以下に説明する、進角を一定に保つ制御ではセンサ信号を主導に駆動波形に操作を加えていくので、分かり易さのために図１５を用いる。図１５（Ａ）、（Ｂ）は、ＥＮＣ０信号、ＥＮＣ１信号をそれぞれ示す。図１５（Ｃ）は、駆動波形のテーブル番号を示し、図１５（Ｄ）は、Ａ相コイル１１３への駆動電圧波形を示し、図１５（Ｅ）は、Ｂ相コイル１１４への駆動電圧波形を示す。
【００４４】
以上、正転方向のモータ回転を行う場合について述べてきた。図１６〜図１９は、逆方向回転の場合において図１２〜図１５にそれぞれ対応する図である。図１６、図１７、図１８は逆回転時に、基準位置関係からのスリット回転板１０５の取り付け位置ずれ量がαである場合の進角０°状態を示している。図１２〜図１５について行った説明と重複する部分については詳細な説明を省略する。主な相違点は、図１８、１９に示すように、逆方向の回転の場合、ＥＮＣ０信号、ＥＮＣ１信号の位相がα分進むことが特徴である（これに対して、正転時には、α分位相が遅れる）。
【００４５】
次に図２０を参照して、モータの駆動中にどのように所望の進角状態を保つ制御を行うかについて概要を説明する。なお、処理の詳細は図２１を用いて後述する。図２０は、スリット回転板１０５に係る位相ずれ量αが１９０（正弦波１周期を５１２分割した場合）で正転時の場合に、ＥＮＣ０信号とＡ相用コイル１１３への通電波形例を示す。上部にスリット回転板１０５の明暗状態を示し、図２０（Ａ）は、ＥＮＣ０信号を示す。図２０（Ｂ）は、α＝１９０の時に進角０°状態であるとした場合の、ＥＮＣ０信号位相に対するＡ相用コイル１１３への通電波形例を示す。図１５では、ＥＮＣ０信号の立下り時点で得られる進角０°の状態での駆動波形テーブル番号は０＋αである。図２０（Ｂ）では、それが０＋１９０＝１９０となり、これはＥＮＣ０信号の立下り時点で得られるべき駆動波形のテーブル番号である。しかし実際には、例えば図２０（Ｃ）に示すような状態となる。図２０（Ｃ）は、ある特定の周波数の駆動波形をコイルにかけて回転させた場合の位相関係を例示し、ＥＮＣ０信号の立下り時点でのテーブル番号を１２０とする。この時、進角０°の状態に対して、１９０−１２０＝７０のテーブル番号分の駆動波形がロータに対して遅れている。これは進角値に換算すると、７０×３６０／５１２＝４９．２°の遅れであり、進角「−４９．２°」の状態でモータが回転していることになる。モータの負荷と回転数という、２要因により進角状態が決定される。本処理では、モータに対する特定の負荷の下で、目標とする進角状態になるように最適な回転数を算出し、エンコーダ信号のレベル変化を検出する度にその時点での回転数に応じた駆動周波数を設定する制御が行われる。以下、進角状態を指令された一定の状態に保つ制御のことを「進角制御」と称する。
【００４６】
図２０（Ｃ）に示す例では、本来ならＥＮＣ０信号の立下り時点でテーブル番号１９０が取得される位相関係でありたいところが、実際には１２０が得られている。ここで、正弦波発生器１０９においてテーブル番号を１２０から１９０へと一気に変更した場合、駆動電圧波形に高調波が含まれ、騒音や回転ムラの原因になる。またモータの負荷および回転数によって進角状態が決定されるので、テーブル番号を飛ばして急変させたとしても、駆動電圧波形の周波数自体は変わらない。よって、安定してモータを進角０°状態を保つことはできない。本処理では、滑らかな通電波形を保ちながら進角制御を実現するために、以下の処理を行う。
【００４７】
まず、前回のＥＮＣ０信号の立下り時点から、今回のＥＮＣ０信号の立下り時点までの時間（周期Ｔ１）が算出される。定常スピード状態であれば、周期Ｔ１と通電波形の周期とは一致する。図２０（Ｂ）の進角０°状態において、ＥＮＣ０信号の立下り時点から４分の１周期（Ｔ１／４）が経過した時点で得られるテーブル番号は、１９０＋１２８＝３１８となる。この時点は、ＥＮＣ０信号の立下り時点からＴ１／４の時間が経過した時刻である。そこで、３１８−１２０＝１９８に相当するテーブル番号分をＴ１／４の時間で進む周波数として設定するために、駆動波形の周期をＥＮＣ０信号の立下り時点において変更する処理が行われる。この変更処理により、図２０（Ｄ）に示す通電波形が得られる。図２０（Ｄ）では、ＥＮＣ０信号の立下り時点において、進角０°状態で得られるべき値とはかけ離れたテーブル番号１２０が得られている。しかし、Ｔ１／４の経過後にはロータマグネット１１９の回転位相と、通電波形の位相を表わすテーブル番号が一致している。実際の処理では、ＥＮＣ０信号の立下り時点からＴ１／４の時間が経過する時点付近で、ＥＮＣ１信号の立上り信号が発生し、同様の進角制御が行われる。これ以降、通電波形１周期につき４回の進角制御が行われて、回転駆動が続行することになる。なお、通電波形の周期と、現在の回転数に相当する周期Ｔ１とが一致するものとして説明したが、加速時や減速時、回転ムラがある場合には、必ずしもそうならない。しかし、その場合でも進角制御処理を行い続けることで、次第に進角０°の状態へと安定収束し、通電波形の周期と周期Ｔ１とが一致する状態へと漸近していく。
【００４８】
以上の処理を行うことで、ステッピングモータに対して正弦波形の駆動波形信号をかけながら、設定された進角値の条件下で、モータの負荷に応じたスピードが最適化されるので、ＤＣモータと同様の回転駆動が実現される。図２１および図２２は、以上に説明した処理を実際に適用した場合の処理例を示すフローチャートである。本処理はＣＰＵ１０８がメモリからプログラムを読み出して実行することにより実現される。
【００４９】
Ｓ１９０１で処理が開始し、続くＳ１９０２では、事前に然るべき方法で得られている位相ずれ量αに基づいて、ＥＮＣ０信号、ＥＮＣ１信号の要因タイミング毎に目標位相値に相当するテーブル番号値が算出される。この処理では図１５、図１９で説明したように、α＝０の場合の、ＥＮＣ０信号およびＥＮＣ１信号という要因毎のデフォルトテーブル値にαを加算した値が４変数にそれぞれ代入される。各変数は以下の通りである。
【００５０】
・ＥＮＣ０信号の立上り時に取得すべき目標テーブル番号値を格納する変数
TrgtSameTimeTableNumForEnc0Up＝２５６＋α
・ＥＮＣ０信号の立下り時に取得すべき目標テーブル番号値を格納する変数
TrgtSameTimeTableNumForEnc0Down＝０＋α
・ＥＮＣ１信号の立上り時に取得すべき目標テーブル番号値を格納する変数
TrgtSameTimeTableNumForEnc1Up＝３８４＋α
・ＥＮＣ１信号の立下り時に取得すべき目標テーブル番号値を格納する変数
TrgtSameTimeTableNumForEnc1Down＝１２８＋α
【００５１】
続くＳ１９０３では、Ｓ１９０２で設定した４つの変数値が、０〜５１１の範囲内に入っているか否かについてチェックされる。５１１を超えている値については５１２を減算して設定し直し、０〜５１１内の値に正規化する処理が実行される。Ｓ１９０４で正弦波発生器１０９の駆動が開始し、ＰＷＭ発生器１１１、モータドライバ１１２を通じて、ステッピングモータ１０１の駆動が開始する。回転方向は問わず、通電波形の周波数は自起動周波数以下であるとする。図２２のＳ１９０５は、ＰＩ信号による割り込みがあるか否かの判定処理である。ＰＩ信号とは、ＥＮＣ０信号の立上りと立下り、ＥＮＣ１信号の立上りと立下りでの、４つの信号の総称である。この４つの信号変化要因により、エンコーダ回路１０７を通じてＣＰＵ１０８に割り込みがかかる。ＰＩ割り込みがない場合、ＰＩ割り込みがあるまで待ち処理となる。またＰＩ割り込みがあった場合、Ｓ１９０６へ移り、駆動波形の現在位相値を示すテーブル番号を取得する処理が行われる。現在のテーブル値（以下、現在値という）は変数CurTblNumに保持される。
【００５２】
Ｓ１９０７では、現在の割り込み要因と同じ前回の割り込み要因発生時刻からの時間、即ちＥＮＣ０信号、ＥＮＣ１信号の最新の周期カウント値がエンコーダ回路１０７から取得され、その１／４の値が算出される。この値は変数CurEncQurtPrdCntに保持される。この処理は、図２０に示すＴ１を測定して、Ｔ１／４の値をメモリに保存することに相当する。Ｓ１９０８では割り込み要因がＥＮＣ０信号によるものか、またはＥＮＣ１信号によるものかが判定される。ＥＮＣ０要因の場合、Ｓ１９０９へ進み、ＥＮＣ１要因の場合、Ｓ１９１２へ進む。Ｓ１９０９、Ｓ１９１２では、それぞれ割り込み要因信号が立上り信号であるか、または立下り信号であるのかの判定処理である。Ｓ１９０９でＥＮＣ０立上り信号と判定された場合、Ｓ１９１０に進み、ＥＮＣ０立下り信号と判定された場合、Ｓ１９１１に進む。またＳ１９１２でＥＮＣ１立上り信号と判定された場合、Ｓ１９１３に進み、ＥＮＣ１立下り信号と判定された場合、Ｓ１９１４へ進む。
【００５３】
Ｓ１９１０、Ｓ１９１１、Ｓ１９１３、Ｓ１９１４ではそれぞれ、進角０°の状態であれば現在のタイミングで取得されるべき最適なテーブル番号（目標テーブル番号）が選択される。具体的には、Ｓ１９１０では、変数TrgtSameTimeTableNumForEnc0Upの値が変数TrgtSameTimeTableNumに代入される。同様に、Ｓ１９１１では、変数TrgtSameTimeTableNumForEnc0Downの値が変数TrgtSameTimeTableNumに代入される。Ｓ１９１３では、変数TrgtSameTimeTableNumForEnc1Upの値が変数TrgtSameTimeTableNumに代入される。Ｓ１９１４では、変数TrgtSameTimeTableNumForEnc1Downの値が変数TrgtSameTimeTableNumに代入される。そして、図２１のＳ１９１５へ処理を進める。
【００５４】
Ｓ１９１５は、現在の回転方向が正転方向（ＣＷ）か逆転方向（ＣＣＷ）かの判定処理である。正転方向の場合、Ｓ１９１６へ進み、逆転方向の場合、Ｓ１９１７へ進む。Ｓ１９１６、Ｓ１９１７は、現時点からＴ１／４時間経過後の時点までに進むべきテーブル番号の変化量を算出する処理である。これは、１／４周期に対応するテーブル番号分１２８に、現時点で取得すべきであったテーブル番号値と実際に取得したテーブル番号値との差分値を足したものとなる。Ｓ１９１６では（TrgtSameTimeTableNum−CurTblNum）＋１２８が算出され、結果値は変数TblCntForNextQtrPhsに代入される。またＳ１９１７では（CurTblNum−TrgtSameTimeTableNum）＋１２８が算出され、結果値は変数TblCntForNextQtrPhsに代入される。正転方向と逆転方向とでは、テーブル番号の進む向きが逆であるため、括弧内での減算の順序が逆になる。続くＳ１９１８は、現時点からＴ１／４時間経過後の時点までに進むべきテーブル番号の変化量が負値になっていないかをチェックする判定処理である。変数TblCntForNextQtrPhsの値が負の場合、Ｓ１９１９に進み、ゼロ以上の場合、Ｓ１９２０に進む。変数TblCntForNextQtrPhsの値が負になっている場合について図２３を参照して説明する。図２３（Ａ）は、スリット回転板１０５の明暗位相とＥＮＣ０信号の出力波形を示す。図２３（Ｂ）は、進角０°の状態での駆動波形を示し、図２３（Ｃ）は、進角制御を行わない場合の駆動波形を示す。
【００５５】
図２３（Ｃ）では、現時点からＴ１／４時間後の時点までに進むべきテーブル番号の変化量が負値になっている。この場合、ＥＮＣ０信号の立下り時点で３４０の値が取得される。よって、Ｔ１／４の時間経過後の時点で取得すべきテーブル番号３１８と比較して、変化量は、３１８−３４０＝−２２（負値）になってしまう。これを回避するため、Ｓ１９１９では、予め決められた最低位相進み量が、次のＴ１／４の移行時間内に進むべきテーブル番号の変化量として変数TblCntForNextQtrPhsに設定される。このような事態は、進角が−９０°以下の状態にならないと起らず、正常な回転動作では起こり難いが、モータに異常な負荷がかかった場合や、負荷ムラ、回転ムラが大きい場合に起こり得る。
【００５６】
続くＳ１９２０にて、次のＴ１／４の時間内に進むべきテーブル番号の変化量と、Ｓ１９０７で算出したＴ１／４相当のカウント値と、実際の回転速度に変換するための変換係数から、次に設定すべき駆動電圧波形に関する速度NxtPPS_Valが算出される。回転速度への変換係数Conversion_Rateの値は既知であり、下式から変更後の速度NxtPPS_Valが算出される。
［数式１］
NxtPPS_Val＝（TblCntForNextQtrPhs／CurEncQurtPrdCnt）×Conversion_Rate
【００５７】
Ｓ１９２１では、Ｓ１９２０で算出した速度値が正弦波発生器１０９に設定された後、Ｓ１９０５へ処理を進める。以上から、ロータマグネット１１９の着磁位相と駆動電圧波形とが指定された位相関係を保ちながら、ステッピングモータの回転制御を行うことが可能になる。なお、図２１のＳ１９１９では、現時点からＴ１／４の時間内に進むべきテーブル番号の変化量が負値になった場合、予め決められた変化量を設定し直したが、Ｓ１９２１にて予め決められた一定の速度を設定してもよい。以上の処理により、正弦波状の駆動電圧波形を用いて、ロータの回転位置に応じて駆動波形の位相を最適化する制御が実現される。
【００５８】
＜１／２周期での制御＞
図２４、図２５は、進角操作に関する説明図である。図２４は、低速回転時の印加電圧波形を（Ａ）に示し、その時のコイル電流波形を（Ｂ）に示す。また、高速回転時の印加電圧波形を（Ｃ）に示し、その時のコイル電流波形を（Ｄ）に示す。図２４（Ａ）、（Ｃ）にて、与えている電圧波形のゲインはともにＶａである。これに対して、図２４（Ｂ）、（Ｄ）における電流波形のゲインはそれぞれＩａ、Ｉｂであり、Ｉａ＞Ｉｂの関係である。
【００５９】
モータ構造においては、コイル電流の遅れ成分、モータの逆起電力による影響を受けて、実際に与えている電圧波形に対してコイルに流れる電流は、電圧波形を抵抗値で割った値にはならない。速度に応じて位相遅れが生じ、また電流波形の振幅ゲインは速度が大きくなるに従って小さくなる。図２４に示すように、測定された周期がＴ１である電圧波形の場合、電流波形の位相遅れがＰａであり、測定された周期がＴ２である電圧波形の場合、電流波形の位相遅れはＰｂである。周期がＴ１からＴ２と短くなっていることから、Ｐｂの方が周期Ｔ２に対する比率が大きくなる。このように、低速時にはあまり考慮しなくてもよい電流遅れ成分は、高速駆動時には無視できない要素になる。
【００６０】
上述の処理では、ロータマグネット１１９とスリット回転板１０５との位相ずれ量αが予め判っていることを前提として、ロータマグネット１１９に対して効率の良い電圧位相でモータを回転させる制御を説明した。しかし、モータ速度が高速域に入ると、実際にトルクを発生させる要因は電流の位相であることから、電圧波形に対する電流の遅れを補償することが必要となる。図２５は、モータにおける、トルクＴ、スピードＮ、進角の関係を例示した図である。図２５（Ａ）は、トルク、進角、スピードという３者の関係を３次元グラフ化したものである。図２５（Ｂ）は、図２５（Ａ）をトルク−スピード平面で見たグラフである。進角を等間隔で大きくするに従って、図２５（Ｂ）内に破線の矢印で示す方向に実線のグラフが移っていく。図２５（Ｂ）では、進角の値を大きくするに従ってトルクおよびスピードともに上昇していくが、ある飽和点からはトルクとスピードがトレードオフの関係で変化していくようになる。高進角領域では、低トルク下にて高速を保てるが、高トルクになると極端にスピードが低下するということが発生する。図２５（Ｃ）は、図２５（Ａ）を進角−スピード平面で見たグラフである。トルクを等間隔で大きくするに従って、図２５（Ｃ）内に破線の矢印で示す方向に実線のグラフが移っていく。図２５（Ｃ）では、進角を上昇させるに従ってスピードは上がるが、ある頂点を境に進角を大きくするとスピードが下がるという特性となる。このスピードの頂点は、トルクが大きくなるに従って低進角領域に移動してくるという性質がある。
【００６１】
以上、図２４、図２５の説明から理解されるように、目標とする回転数と、与えられたトルク負荷に応じて、ロータマグネット１１９と駆動波形に関して適切な位相関係に保つための進角制御を行う必要がある。これらに鑑みて、進角０°の状態から任意に進角状態を変化させたロータマグネット１１９の着磁位相と駆動電圧波形の位相との状態を保つための制御について、図２６および図２７のフローチャートを参照して説明する。なお、図２６のＳ２３０１からＳ２３０３までの処理は、上述の処理における図２１のＳ１９０１からＳ１９０３までの処理と同様であるので、それらの詳細な説明は割愛して相違点を説明する。
【００６２】
Ｓ２３０４では、進角０°の状態からどれだけ進角を変化させた状態にするかを示す要求値が設定される。駆動電圧波形の位相をロータマグネット１１９の着磁位相に対して進める場合、目標進角は正の値をとり、その値の５１２カウント換算値が変数PrgDegCntに設定される。一方、駆動電圧波形の位相をロータマグネット１１９の着磁位相に対して遅らせる場合、目標進角は負の値をとり、その値の５１２カウント換算値が変数PrgDegCntに設定される。次のＳ２３０５で正弦波発生器１０９の動作が開始し、ＰＷＭ発生器１１１、モータドライバ１１２を通じて、ステッピングモータ１０１の駆動が開始する。回転方向は問わず、通電波形の周波数は自起動周波数以下であるとする。続く図２７のＳ２３０６は目標進角値の変更指令が外部装置（制御装置やホスト機器など）から来ているか否かについての判定処理である。変更指令が来ている場合、Ｓ２３０７に進み、新たな目標進角値の５１２カウント換算値が変数PrgDegCntに設定される。また、変更指令が来ていない場合はＳ２３０８へそのまま進む。Ｓ２３０８、Ｓ２３０９の処理については、図２２のＳ１９０５、Ｓ１９０６の処理と同様であるので、詳細な説明は割愛する。
【００６３】
Ｓ２３１０では、現在の割り込み要因と同じ前回の割り込み要因の発生時刻からの経過時間、即ちＥＮＣ０信号、ＥＮＣ１信号の最新の周期カウント値をエンコーダ回路１０７より取得する処理が行われる。この周期カウント値（計測値）の２分の１の値を算出して変数CurEncHlfPrdCntに保持する処理が実行される。これは、Ｔ１／２の値をメモリに保存することに相当する。Ｓ２３１１からＳ２３１７までの処理については、図２２のＳ１９０８からＳ１９１４までの処理と同様であるので、詳細な説明は割愛する。
【００６４】
図２６のＳ２３１８は、現在の駆動方向が正転方向か逆転方向かの判定処理である。正転方向の場合、Ｓ２３１９へ進み、逆転方向の場合、Ｓ２３２０へ進む。Ｓ２３１９、Ｓ２３２０では、現時点からＴ１／２の時間経過後の時点までに進むべきテーブル番号の変化量が算出される。１／２周期に対応するテーブル番号分２５６に、現時点で取得すべきであったテーブル番号値と、実際に取得したテーブル番号値との差分値を足し、さらには進角変化の要求値が減算される。具体的には、Ｓ２３１９にて（TrgtSameTimeTableNum−CurTblNum）＋２５６−PrgDegCntが算出され、結果値は変数TblCntForNextHlfPhsに代入される。また、Ｓ２３２０にて（CurTblNum−TrgtSameTimeTableNum）＋２５６−PrgDegCntが算出され、結果値は変数TblCntForNextHlfPhsに代入される。正転方向と逆転方向ではテーブル番号の進む向きが逆であるため、括弧内での減算の順序が逆になる。上述の処理の場合と異なり、Ｔ１／２の時間経過後に目標位相値に相当するテーブル番号値となるように設定している理由は、図２７のＳ２３０７によって目標進角値が変更される場合があることによる。その場合、現在の進角状態から１度の処理でも大きく進角状態が変わることがあり、余裕を持たせるために移行時間を長くする処理を行っている。続くＳ２３２１からＳ２３２４までの処理については、図２１のＳ１９１８から１９２１の処理と同様であるので、詳細な説明を割愛する。なお、Ｓ２３２３で使用する速度の算出式は以下の通りである。
［数式２］
NxtPPS_Val＝（TblCntForNextHlfPhs／CurEncHlfPrdCnt）×Conversion_Rate
【００６５】
以上に説明した処理を行うことにより、任意の進角状態でステッピングモータを効率的に回転させることができる。なお、上述の処理では１／４周期に設定していた移行時間を、この処理では１／２周期に設定し、この時間経過後に目標とする進角状態となるように速度を変更する処理が行われる。これに限らず、現時点から目標とする進角状態になるまでの移行時間、つまり調整用の位相値に相当する時間については任意に設定可能である。駆動波形の周期の測定および算出までにかかる時間を考慮し、算出に要する遅れ時間を含めた移行時間が算出される。また、上述の処理ではステッピングモータを駆動対象として例示したが、本発明はブラシレスＤＣモータ等の各種モータに適用可能である。
【００６６】
またＰＩによるセンサ出力が、定常回転で５０％のＤＵＴＹ比となることを前提として説明したが、ＤＵＴＹ値が５０％からずれた値でも実施可能である。例えば、図２８はＰＩの出力を２値化するための閾値２４０１、２４０２に関して、ＤＵＴＹ比が５０％になる位置に調整されていない場合を示す。ＥＮＣ０信号のHIGHレベル幅はスリット回転板１０５の明期間よりも狭く、ＥＮＣ１信号のHIGHレベル幅はスリット回転板１０５の明期間よりも広い場合である。図２８（Ａ）、（Ｂ）に示す２値出力の場合、事前にＥＮＣ０信号の立上りと立下り、ＥＮＣ１信号の立上りと立下りの各時点にて取得すべき駆動波形のテーブル番号を個別に設定する調整処理が行われる。これによりＰＩの閾値に係るアナログ調整工程を省くことができる。
【００６７】
また、上述の処理ではモータ軸に、被検出部であるスリット回転板を取り付け、位置検出を光学的に行う構成例を説明した。これに限らず、モータ軸にマグネットを取り付けて磁力センサを用いて位置検出を行ってもよい。また、ロータマグネットの着磁位相を直接検知する位置に磁気センサを設置して位置検出を行う実施形態でもよい。
【００６８】
＜位相ずれを調整する処理＞
図８および図９を用いて説明した取り付けずれ量αを特定する原理を使って、実際のモータに対してずれ量を特定して位相ずれを調整する場合の処理について、図２９〜図３４のフローチャートを参照しつつ詳細に説明する。なお、位相以下の処理はＣＰＵ１０８がメモリからプログラムを読み出して実行することで実現される。
【００６９】
図２９のＳ１００１で処理が開始し、Ｓ１００２で処理に使用する変数の確保と初期化処理が行われる。ＥＮＣ０信号、ＥＮＣ１信号の立上りと立下りの各タイミングは、モータ１回転で５回ずつ発生し、かつ正転時と逆転時の２パターンがある。これらの信号変化のタイミングでマイクロステップ波形のテーブル番号値を保持する必要があるため、合計４０個分のテーブル番号の確保用変数が用意される。また、ＥＮＣ０信号、ＥＮＣ１信号の立上りと立下りの各タイミングはそれぞれ１回転当たり５回発生するので、データ取得時にどの回転位置でのデータであるかを記録するためのインデックス番号が４つ用意される。初期化により、それらの値がゼロにクリアされる。以下では、説明の便宜上、各変数を以下のように定義する。
【００７０】
・データ取得番号用のインデックス変数（４個）
ＥＮＣ{X}信号の立上り時点でのデータ取得番号を示す変数：ENC{X}_Nu
ＥＮＣ{X}信号の立下り時点でのデータ取得番号を示す変数：ENC{X}_Nd
ここで、X=0,1であり、ENC0がＥＮＣ０信号、ENC1がＥＮＣ１信号にそれぞれ相当する。
・正転時に使用するデータ変数（２０個）
ＥＮＣ{X}信号の立上り時点でのデータ変数：F_D{X}U[4]
ＥＮＣ{X}信号の立下り時点でのデータ変数：F_D{X}D[4]
これらはいずれも配列変数とし、インデックス番号は０から４のいずれかをとる。X=0,1の２通りと、立上りと立下りの２通りのそれぞれに５個分の変数、つまり計２０個の変数が確保される。逆転時は下記に示す通りである。
・逆転時に使用するデータ変数（２０個）
ＥＮＣ{X}信号の立上り時点でのデータ変数：R_D{X}U[4]
ＥＮＣ{X}信号の立下り時点でのデータ変数：R_D{X}D[4]
変数の接頭部をR_に置き換えただけであり、前記と同様に２０個の変数が確保される。
これらのデータ変数はＳ１００２での初期化によって初期値が設定され、ENC0_Nu，ENC0_Nd，ENC1_Nu，ENC1_Ndはいずれも０に初期化される。
【００７１】
続くＳ１００３では、予め決められた回転速度での正転方向の駆動信号がモータに出力されて、モータの回転が開始する。続くＳ１００４は、位置特定用の位相データを取得する前に、予め決められた距離以上の移動が行われたか否かについての判定処理である。モータの始動直後には、ロータの回転が安定せず不安定な場合があるため、Ｓ１００４の判定処理が設けられる。Ｓ１００４でモータの回転により一定距離以上の移動処理が行われたことが位置検出によって判定された場合、Ｓ１００５に移るが、移動距離が一定距離に満たない場合にはＳ１００４の判定処理が繰り返される。
【００７２】
Ｓ１００５でＣＰＵ１０８は、ＥＮＣ０信号、ＥＮＣ１信号にレベル変化があったかどうかを判定し、割り込みがかかったか否かを判定する。これらの信号にレベル変化があった場合、Ｓ１００６に移り、信号のレベル変化がない場合、Ｓ１００５での待ち処理となる。Ｓ１００６では、出力している駆動用正弦波形（多値波形）における、現在のテーブル番号値（以下、現在値という）が取得され、変数へ一時的に保持される。Ｓ１００７では、ＣＰＵ１０８に対して割り込みを発生させた要因信号がＥＮＣ０信号によるものか、またはＥＮＣ１信号によるものかについて判定される。ＥＮＣ０信号による割り込みと判定された場合、Ｓ１００８に進み、ＥＮＣ１信号による割り込みの場合、図３０のＳ１０２１に進む。Ｓ１００８ではＥＮＣ０信号の変化が立上りであったか否かが判定され、また図３０のＳ１０２１では、ＥＮＣ１信号の変化が立上りであったか否かが判定される。
【００７３】
まず、Ｓ１００８でＥＮＣ０信号の立上りが検出された場合について説明する。続くＳ１００９では、ＥＮＣ０信号の立上りでのデータ取得番号、つまりENC0_Nuの値が５以上であるかについて判定処理が行われる。ENC0_Nuの値が５以上の場合、Ｓ１０３４に移る。一方、ENC0_Nuの値が５未満であれば、Ｓ１０１０に移る。
【００７４】
Ｓ１０１０では、Ｓ１００６で保持している現在値から１２８を減算する処理が行われる。１２８という値は、基準位置にスリット回転板１０５が取り付けられていて、かつロータの追従遅れや信号の電気的遅れがない場合に取得されるテーブル番号である。つまり、テーブル番号１２８を基準として、実際に取得された現在値との差分が算出される。この処理について、図３５、図３６を参照して説明する。
【００７５】
図３５、図３６では、上方に電気角９０°ごとの回転状態を０°から２７０°に亘って例示している。（Ａ）図、（Ｂ）図は、それぞれステータＡ+、ステータＢ+に対する励磁波形例を示す。（Ｃ）図は、マイクロステップ波形のテーブル番号を示す。（Ｄ）は、ｃｈ０−ＰＩ１０３の検出位置とＥＮＣ０信号の出力波形例を示し、（Ｅ）図は、ｃｈ１−ＰＩ１０４の検出位置とＥＮＣ１信号の出力波形例を示す。
【００７６】
図３５は、基準位置にスリット回転板１０５が取り付けられていて、かつロータの追従遅れや、信号の電気的遅れがない場合のロータと出力信号の関係を示す。このときＥＮＣ０信号の立上りタイミングで取得されるテーブル番号は１２８である。これに対して、実際には図３６のように、基準位置にスリット回転板１０５が取り付けられておらず、かつロータの追従遅れや、信号の電気的遅れがある。このため、ＥＮＣ０信号の立上りタイミングは、１２０２の時点での位置（テーブル番号１２８と２５６との間）に現れる。この位置でのテーブル番号から１２８を引くことで、図９で説明した遅れ成分β９０１と、ずれ量α９０２との合成値が取得できることになる。
【００７７】
図２９のＳ１０１０では減算の結果値が一時変数（Tmp_valと記す）に代入され、Ｓ１０１１では、Tmp_valが０未満であるか否かが判定される。Tmp_val≧０の場合、Ｓ１０１３に移り、Tmp_val＜０の場合、Ｓ１０１２に移る。Ｓ１０１３では、Tmp_valの値がデータ変数F_D0U[ENC0_Nu]に保持される。また、Ｓ１０１２ではTmp_valの値に５１２を加えた値が、データ変数F_D0U[ENC0_Nu]に保持される。これは、テーブル番号を０〜５１１の値に正規化するためである。なお、Tmp_valの値をデータ変数F_D0U[ENC0_Nu]に代入する際、現在のデータ取得番号を示すENC0_Nuと関連付けて変数領域に格納される。本明細書では説明の便宜上、ENC0_Nuを配列のインデックス番号として表記している。
【００７８】
続くＳ１０１４ではENC0_Nuの値に１が加算されてインクリメント処理が行われ、Ｓ１０３４に移る。Ｓ１０３４では、予め決められたデータ取得用の移動距離以上に亘ってモータが回転したかどうかについて判定される。所定の移動距離に対応する回転角度量に亘ってモータが回転していない場合、Ｓ１００５に戻って処理を続行する。また、所定の移動距離に相当する回転角度量に亘ってモータが回転した場合、Ｓ１０３５に移り、ＣＰＵ１０８はモータの回転を停止させる。
【００７９】
Ｓ１０１５〜Ｓ１０２０の処理は、ＥＮＣ０信号の立下りタイミングにおいて行われる処理であり、Ｓ１００９〜Ｓ１０１４と同様の処理であるので、その詳細な説明は割愛し、相違点だけを説明する。Ｓ１０１５、Ｓ１０２０での対象はENC0_Ndの値であり、Ｓ１０１６で現在値から減算する値は３８４である。Ｓ１０１８、Ｓ１０１９で使用するデータ変数は、F_D0D[ENC0_Nd]である。
【００８０】
Ｓ１００７でＥＮＣ１信号による割り込みがかかった場合、Ｓ１０２１〜Ｓ１０３３（図３０参照）の処理が実行される。Ｓ１０２１から分岐するＳ１０２２〜Ｓ１０２７の処理は、ＥＮＣ１信号の立上りタイミングにおいて行われる処理であり、Ｓ１００９〜Ｓ１０１４と同様の処理であるので、その詳細な説明は割愛し、相違点だけを説明する。Ｓ１０２２、Ｓ１０２７での対象はENC1_Nuの値であり、Ｓ１０２３で現在値から減算する値は２５６である。Ｓ１０２５、Ｓ１０２６で使用するデータ変数は、F_D1U[ENC1_Nu]である。Ｓ１０２７から図２９のＳ１０３４に進む。また、Ｓ１０２８〜Ｓ１０３３の処理は、ＥＮＣ１信号の立下りタイミングにおいて行われる処理であり、Ｓ１００９〜Ｓ１０１４と同様の処理であるので、その詳細な説明は割愛し、相違点だけを説明する。Ｓ１０２８、Ｓ１０３３での対象はENC1_Ndの値であり、Ｓ１０２９で現在値がTmp_valに代入される。Ｓ１０３１、Ｓ１０３２で使用するデータ変数は、F_D1D[ENC1_Nd]である。Ｓ１０３３から図２９のＳ１０３４に進む。
【００８１】
図３１のＳ１０３６は、正転時にモータが停止した時点から、予め決められた静定時間が経過したか否かの判定処理である。静定時間が経過していない場合、当該時間が経過するまでの間待機し、静定時間が経過した場合にはＳ１０３７へ移る。
【００８２】
Ｓ１０３７では既に確保している、ENC0_Nu，ENC0_Nd，ENC1_Nu，ENC1_Ndの値が全て４に初期化され、以後の処理ではデクリメント（Ｓ１０４９，Ｓ１０５５，Ｓ１０６２，Ｓ１０６８参照）される。こうすることで正転時と逆転時での同じインデックス番号のデータが、モータの１回転で５回発生する内の、どの物理的な位置で起こったかを把握できる。続くＳ１０３８ではモータが逆回転を開始する。この時の回転数は正転時と同じ回転数である。以後、Ｓ１０３９〜Ｓ１０７０の処理は、Ｓ１００４〜Ｓ１０３５の処理とほぼ同様の処理であるので、それらの詳細な説明は割愛する。主な相違点はＥＮＣ０信号、ＥＮＣ１信号の同一回転位相で発生する信号変化において、正転時と逆転時とでは立上りと立下りの関係が反対になることである。このため、ＥＮＣ０信号の立上り時に基準位置からのテーブル番号を処理する場合、正転時には現在値から１２８が減算されるが、逆転時には現在値から３８４が減算される（Ｓ１０４５参照）。同様にＳ１０５１では現在値から１２８が減算される。ＥＮＣ１信号の場合（図３２のＳ１０５６〜Ｓ１０６８参照）も、テーブル番号値として正弦波で１８０度ずれた値を基準値として使用するため、同様に正転時と逆転時で反対の値を使用して処理を行う。つまり、Ｓ１０５８での減算値はゼロであり、Ｓ１０６４での減算値は２５６である。
【００８３】
次に、図３３のＳ１０７１以降の処理を説明する。Ｓ１０７１では、正転時に使用するデータ変数F_D0U[ENC0_Nu]およびF_D0D[ENC0_Nd]、つまり、それぞれ５個の変数に保持した全ての値の中で、最大値と最小値が算出される。最大値は変数MaxValに代入され、最小値は変数MinValに代入される。続くＳ１０７２は、差分MaxVal−MinValの値を２５６と比較し、差分値が２５６より大きいか否かを判定する処理である。差分値が２５６よりも大きい場合、Ｓ１０７４へ移り、差分値が２５６以下である場合にはＳ１０７３へ移る。図３３のＳ１０７３〜Ｓ１０７７を説明する前に、これらの一連の処理を行う必要性について図３７を参照して説明する。図３７は、データ変数F_D0U[ENC0_Nu]およびF_D0D[ENC0_Nd]の値について分布例を点群で示している。
【００８４】
図３７（Ａ）において、サンプルデータ群１１０１および１１０２は、F_D0U[ENC0_Nu]、F_D0D[ENC0_Nd]に係る１０個のデータ群をそれぞれ表わしている。サンプルデータ群１１０１に示す分布の場合、全ての平均値をとることで位相値の平均値（１１０３参照）が得られる。しかし、サンプルデータ群１１０２に示す分布の場合、テーブル番号５１１と０のギャップのある場所を跨いでデータ群が分布している。そのため、サンプルデータ群１１０２は、図３７（Ｂ）に示すサンプルデータ群１１０５と、サンプルデータ群１１０６の２つに分断された形で平均値計算が行われる。その結果、本来０の近辺にあるべき平均値（図３７（Ａ）の１１０４参照）ではなく、１２８と２５６との間にある平均値（図３７（Ｂ）の１１０７参照）が算出されてしまう。
【００８５】
このように、サンプルデータ群が５１１と０の付近に値を持って分布する場合を適切に処理する必要がある。このため、サンプルデータ群１１０２の最小値（図３７（Ｃ）の１１０９参照）と、最大値（図３７（Ｃ）の１１０８参照）を求め、その差分値を判定することで処理の場合分けを行っている。この差分値が２５６を超える場合、すなわちサンプルデータ値に対して位相で１８０以上の差があった場合、サンプルデータ群が５１１、０の境を跨いでいると判定される。この場合、以下のＳ１０７４〜Ｓ１０７７の処理によって所望の値が得られる。サンプルデータ群が５１１と０の境を跨がずに最大値と最小値との差が２５６以上の値になることは、モータの機械的な構成や調整に使用する速度からあり得ない。仮に、そのようなことがあり得るとすると、モータ回転が安定していない状態や、または電気回路に問題があるものと考えられる。よって、この場合には調整エラーとして処理される。以上の説明を踏まえた上で、図３３のＳ１０７３以降の処理を説明する。
【００８６】
Ｓ１０７３では、F_D0U[ENC0_Nu]、R_D0D[ENC0_Nd]に係る計１０個のデータの平均値が算出され、その結果が変数ENC0R_AdjRsltValに代入される。また。Ｓ１０７４では、F_D0U[ENC0_Nu]、R_D0D[ENC0_Nd]に係る計１０個のデータの内、２５６以上の値については５１２を減算した値として扱って平均値が算出され、その結果が一時変数Tmp_Valに代入される。続くＳ１０７５にて、Tmp_Valの値が０未満か否かが判定される。Tmp_Valの値が０以上である場合、Ｓ１０７６に移り、Tmp_Valの値が０未満の場合Ｓ１０７７へ移る。Ｓ１０７６ではTmp_Valの値が変数ENC0R_AdjRsltValに代入される。またＳ１０７７では、Tmp_Valの値に５１２を加えた値がENC0R_AdjRsltValに代入される。Ｓ１０７６、Ｓ１０７７の後、図３４のＳ１０７８に進む。
【００８７】
Ｓ１０７８では、F_D0D[ENC0_Nd]、R_D0U[ENC0_Nu]に係る計１０個のデータを用いて、Ｓ１０７１〜Ｓ１０７７と同様の処理が実行される。結果（平均値）はENC0F_AdjRsltValへ代入される。続くＳ１０７９では、F_D1U[ENC1_Nu]、R_D1D[ENC1_Nd]に係る計１０個のデータを用いて、Ｓ１０７１〜Ｓ１０７７と同様の処理が実行される。結果値（平均値）はENC1R_AdjRsltValへ代入される。続くＳ１０８０では、F_D1D[ENC1_Nd]、R_D1U[ENC1_Nu]に係る計１０個のデータを用いて、Ｓ１０７１〜Ｓ１０７７と同様の処理が実行される。結果（平均値）はENC1F_AdjRsltValへ代入される。
【００８８】
Ｓ１０８１〜Ｓ１０８７の処理ではENC0R_AdjRsltVal、ENC0F_AdjRsltVal、ENC1R_AdjRsltVal、ENC1F_AdjRsltValの４つの値を使用する。Ｓ１０７１〜Ｓ１０７７と同様の処理が実行される。結果値（符号なしの平均値）が変数AdjRsltValへ代入される。続くＳ１０８８では、算出されたAdjRsltValの値が調整位置の結果値としてメモリに保存される。AdjRsltValの値に基づいて位相ずれの調整値を設定する工程が実行される。この工程の後、モータ駆動時には、保存された位相ずれ量に基づく補正に従って適正な駆動制御が行われる。AdjRsltValの値は、スリット回転板１０５の位相ずれ量αに対応する値であるが、Ｓ１０８３の段階では、電気角３６０度分を５１２分割した値となっているので、必要に応じて度（degree）単位に変換してメモリに保存してもよい。Ｓ１０８９にて全処理の終了となる。
【００８９】
この処理では、モータをオープン制御で第１方向とその逆の第２方向に所定量だけ駆動して検出処理を行うだけで、モータに設けられたエンコーダセンサの出力の位相ずれ量を短時間で、簡便に検出できる。位相ずれ量αに基づくモータ調整工程については、モータを調整冶具等に接続する必要がないため、モータユニット単体で行ってもよいし、モータを装置に組み込んだ後でも実施することができる。また装置に組み込んだ状態で、装置を定常使用している時に、他の処理と並行してこの処理を行うことで、経時変化によるエンコーダセンサの出力の位相ずれ量を検出して調整できる。
【００９０】
また、図３８で示すように、ＥＮＣ０信号の２値化閾値１４０１や、ＥＮＣ１信号の２値化閾値１４０２が適切に調整されていない場合でも、立上りと立下りの各タイミングでの平均値を算出することで、位相ずれ量αを正確に算出できる。図３８に例示するＥＮＣ０信号のHIGHレベル幅はスリット回転板１０５の明期間よりも狭く、ＥＮＣ１信号のHIGHレベル幅はスリット回転板１０５の明期間よりも広い場合である。
【００９１】
なお、この処理ではフォトインタラプタとスリット回転板を用いた位置検出手段を採用しているが、被検出部としてロータ軸にエンコーダ用マグネットを取り付け、ホールセンサ等の磁力センサを用いて磁気的に検出手段で実施してもよい。あるいは被検出部がなく、ロータ磁石の磁力を直接に磁気センサで検出する構成でもよい。
【００９２】
また、この処理ではセンサ出力変化のタイミングで、励磁コイルの駆動波形の位相データを取得する方式を実施している。これに限らず、例えば、詳細に時間計測ができるハードウェアタイマを用いて、時間計測を行って実施してもよい。その場合、駆動波形出力の特定タイミングで正弦波発生装置からの割り込み信号が出力され、該タイミングとセンサ出力変化の割り込みタイミングとの時間計測が行われ、その時の駆動波形周期を用いて詳細に位相値が計算される。
【００９３】
さらに、この処理ではフォトインタラプタを２個としたが、もちろんセンサが１つの場合でも実施可能である。また、ステータとフォトインタラプタとの位置関係が機械的に決まっているものとしたが、両者の位置関係が決まっていない構成であっても実施可能である。その場合、図３（Ａ）の位置関係にあるものと仮定して処理の調整を行えばよい。本質的に検出すべきことは、ロータマグネット１１９がステータに対してどのような位置関係にあるときに、センサ出力波形が変化するかに関する情報である。よって、ステータとフォトインタラプタとの位置関係が図３（Ａ）に示す通りであると仮想的に扱って、検出したα値だけロータマグネット１１９とスリット回転板１０５との位相がずれていると認識できれば辻褄が合う。この場合、物理的にロータマグネット１１９とスリット回転板１０５の位相ずれ量はαではない。しかし、フォトインタラプタの位置を図３（Ａ）の位置にあるとして扱う前提で使用すれば、ロータマグネット１１９とスリット回転板１０５の位相ずれ量はαであるとしても問題ない。
【００９４】
ロータマグネット１１９がステータに対してどのような位置関係にあるときに、センサ出力波形が変化するかを検出できれば、センサ出力位置を調整できることが本質的事項である。また、前記の原理により、ステータとフォトインタラプタとの位置関係が機械的に決まっているという前提で測定が実施された場合、フォトインタラプタに機械的な位置ずれがあった場合でも、位相ずれ量はαに吸収される。よって、機械的位置ずれを無視できるという利点がある。
【００９５】
この処理では、駆動波形の周期とセンサ出力の周期が同一であるとして説明したが、センサ出力の周期が駆動波形の２逓倍、３逓倍、・・・等のように、逓倍関係にあっても実施可能である。図３９に２逓倍出力センサの場合を示す。この場合、新たな課題があり、その解決方法を以下に説明する。
【００９６】
図３９の上方には電気角９０°ごとの回転状態を０°から２７０°に亘って例示している。図３９（Ａ）、図３９（Ｂ）は、それぞれステータＡ+１１５、ステータＢ+１１７に対する励磁波形を示す。図３９（Ｃ）は、励磁しているコイルの駆動波形信号（マイクロステップ波形）に係るテーブル番号を示す。図３９（Ｄ）、図３９（Ｅ）は、各センサ出力のタイミングを示す。ＥＮＣ０信号とＥＮＣ１信号がエンコーダ回路によりカウントされるものとする。エンコーダカウント値を図３９（Ｄ）、図３９（Ｅ）の下部にそれぞれ示す。
【００９７】
逓倍出力を利用する処理では、例えばエンコーダカウント値が１の場合と、エンコーダカウント値が５の場合とで、ＥＮＣ０信号の立上り時点の出力の区別が出来ない。そのため、信号出力をエンコーダカウント値と結び付けて処理をする必要がある。図３９に示す例の場合、電気角で３６０度進む期間内に、エンコーダ出力が８回あることになる。よってエンコーダカウント値の８による剰余演算結果を使用する。例えば、２回のＥＮＣ０信号の立上り時点での割り込み時に、その時点でのエンコーダカウントの剰余演算を行うと、テーブル番号値（図３９（Ｃ）の１５０２参照）を取得する場合、ＥＮＣ０信号の立上り割り込みの剰余演算結果は１となる。テーブル番号値（図３９（Ｃ）の１５０６参照）を取得する場合、ＥＮＣ０信号の立上り割り込みの剰余演算結果は５となる。この結果は次の電気角３６０度分の移動を行う場合も同じ結果となる。このように出力元と、立上り、立下りの情報だけでは区別できないテーブル番号値の取得結果については、エンコーダカウント値を、電気角３６０度の移動時に出力されるセンサタイミング回数で除算した剰余演算結果と関連付けることで解決できる。
【００９８】
また、この処理では説明を分かり易くするために便宜上、スリット回転板１０５の、ロータマグネット１１９に対する取り付け位置ずれ量を検出することを主眼に説明した。これに限らず、図３８で例示したセンサ出力状態で、センサの要因種別毎に調整値を算出して利用してもよい。この場合、図３４に示したENC0R_AdjRsltVal、ENC0F_AdjRsltVal、ENC1R_AdjRsltVal、ENC1F_AdjRsltValの４つの値が最終結果となる。この結果を用いての調整処理を行う際には平均値ではなく、検出されたセンサの要因毎に４つの調整結果値を使い分けるようにする。これにより、図３８に示した２値化閾値１４０１と１４０２の調整工程を省略できるという利点が得られる。
【００９９】
また、この処理ではモータ１回転中のセンサ出力信号に応じたデータ総数が２０であり、それらの平均値を使って調整結果としている。これに限らず、センサ信号が変化した時のエンコーダカウント値を２０で除算した剰余演算結果と、そのタイミングでの取得した調整結果とを結び付けて管理してもよい。図２９では、ENC0_Nu，ENC0_Nd，ENC1_Nu， ENC1_Ndがそれぞれ示すインデックス番号を用意し、データ取得時にどの回転位置でのデータかを各データ変数に代入して記録する方法について説明した。インデックス番号が同じ正転時のデータと逆転時のデータを対にした調整結果を得ることにより、ロータマグネット１１９とスリット回転板１０５との間の細かな位相バラツキを全て検出して吸収する調整処理を実現できる。
【０１００】
＜カウント値の補正処理＞
次に、図４０ないし図４２に示すフローチャートを参照して、カウント値の補正処理を説明する。図４０は、ＣＰＵ１０８による正弦波発生器１０９に対する指令発行処理について説明するフローチャートである。Ｓ７０１で処理が開始し、Ｓ７０２では正弦波２−２相カウント値と、ＥＮＣカウント値を同じ値で初期化する処理が行われる。
【０１０１】
ＥＮＣカウント値とは、ＥＮＣ０信号、ＥＮＣ１信号の変化に応じて加減算される値（第１カウント値）である。ＥＮＣ０信号がＥＮＣ１信号よりも先行している状態、すなわち正転方向の駆動時にＥＮＣ０信号、ＥＮＣ１信号にレベル変化があった場合、カウント値に１が加算される。逆転時にＥＮＣ１信号がＥＮＣ０信号よりも先行している場合には、カウント値から１が減算される。
【０１０２】
また、正弦波２−２相カウント値とは、正弦波発生器１０９において正弦波の位相が９０度進むたびにカウントされる値（第２カウント値）である。つまり、正弦波信号がゼロクロス点を通過する位相ごとに計数動作が行われる。正転時にて現在のテーブル番号が０度、９０度、１８０度、２７０度のいずれかに対応する正弦波テーブル番号値を超えた時に、カウント値に１が加算される。逆転時に現在のテーブル番号が０度、９０度、１８０度、２７０度のいずれかに対応する正弦波テーブル番号値を超えた時には、カウント値から１が減算される。本処理では図４３に示すように、正弦波２−２相カウント値とＥＮＣカウント値が１００で初期化されるものとする。図４３は補正処理例を示し、正弦波２−２相カウント値、ＥＮＣカウント値、および両者のカウント差を例示する。Ａ+信号、Ｂ+信号はそれぞれステータＡ+，Ｂ+に係る駆動波形信号を示す。
【０１０３】
続くＳ７０３でＣＰＵ１０８は、回転運動の停止位置を設定し、Ｓ７０４で駆動速度を設定する。この駆動速度に応じた周波数の正弦波信号が正弦波発生器１０９からＰＷＭ発生器１１１に出力される。Ｓ７０３で設定された停止位置と現在位置との比較結果から、ステッピングモータ１０１が正転方向および逆転方向のうちのどちらに回転するかが決定される。Ｓ７０５にてＣＰＵ１０８により駆動開始要求の指令が発行され、Ｓ７０６で処理を終える。
【０１０４】
図４１および図４２は、ＣＰＵ１０８からの指令を受けて動作する正弦波発生器１０９の処理例を示すフローチャートである。Ｓ７０７で処理が開始し、Ｓ７０８では、正弦波発生器１０９の定周期処理を前回行った時点から、所定時間が経過したか否かについて判定される。所定時間が経過していればＳ７０９へ移り、所定時間が経過していない場合、Ｓ７０８の判定処理が繰り返されて待ち処理となる。Ｓ７０９は、ＣＰＵ１０８から速度変更要求を受け付けたか否かの判定処理である。ＣＰＵ１０８から速度変更要求があった場合、Ｓ７１０に処理を進め、要求された速度を示すデータが正弦波発生器１０９内の対応する変数に格納されて速度設定値が変更される。一方、速度変更要求がない場合、Ｓ７１１へ移る。
【０１０５】
Ｓ７１１で正弦波発生器１０９は、ＣＰＵ１０８から駆動開始要求が来ているか否かを判定する。駆動開始要求が来ている場合、Ｓ７１２に進み、正弦波発生器１０９は内部状態を駆動状態へと変更する。例えば、内部状態を示す変数やフラグ等の値が変更される。ＣＰＵ１０８から駆動開始要求がない場合、Ｓ７１３へ移る。Ｓ７１３で正弦波発生器１０９は、停止位置の変更要求がＣＰＵ１０８から来ていないかどうかを判定する。正弦波発生器１０９が停止位置の変更要求をＣＰＵ１０８から受け取った場合、Ｓ７１４に処理を進め、要求された停止位置のデータが正弦波発生器１０９内の対応する変数へ格納されて、停止位置の設定値が変更され、図４２のＳ７１５に進む。また、停止位置の変更要求がない場合には図４２のＳ７１５へ移る。
【０１０６】
Ｓ７１５にて正弦波発生器１０９は、現在の内部状態が駆動状態であるか否かを判定する。現在の状態が駆動状態である場合、Ｓ７１６に移り、駆動状態でない場合、図４１のＳ７２４へ移る。Ｓ７１６では現在設定されている速度、および正弦波発生器１０９の起動周期に応じて進むべき正弦波位相量を算出する処理が実行され、ＰＷＭ発生器１１１に対して出力する正弦波のテーブル値が変更される。この時、正転時にはテーブル値を出力に加算し、逆転時には減算する処理が行われる。この処理で例示するテーブル番号の範囲は０〜５１１であるので、正転時の加算結果が５１２以上の値になる場合、０に戻って連続的な正弦波が出力されるように正規化処理が行われてテーブル番号値が設定される。逆転時の場合も同様に、連続的な正弦波が出力されるように設定される。
【０１０７】
続くＳ７１７において、絶対位置の更新処理が行われる。図４３に例示する絶対値は、駆動前の開始位置での値８８であり、駆動開始後、テーブル番号値の進み分である位相変化量に比例した加算処理が行われてゆく。よって、正弦波が正転方向に１周期分進めば絶対位置に５１２が加算されることになる。一方、正弦波が逆転方向に１周期分進めば絶対位置から５１２が減算されることになる。この絶対位置はモータの駆動波形信号をどれだけ出力したかの積算値になり、現時点でロータがどれだけ回転したかを表している。
【０１０８】
Ｓ７１８においては、Ｓ７１６で現在のテーブル番号を変更した時に、出力正弦波の０度、９０度、１８０度、２７０度にそれぞれ相当する値、即ちテーブル番号では０、１２８、２５６、３８４の値を跨いだかどうかについて判定される。これらの値を跨いでテーブル番号が変更された場合、Ｓ７１９へ進み、そうでない場合にはＳ７２２へ進む。Ｓ７１９では現在の回転方向が正転方向であるか、または逆転方向であるかについて判定される。正転方向の場合、Ｓ７２０へ進み、正弦波２−２相カウントの値に１を加算する処理が行われる。また、逆転方向の場合、Ｓ７２１へ進み、正弦波２−２相カウント値から１を減算する処理が行われる。続くＳ７２２ではモータ駆動に係る現在の絶対位置が、設定されている停止位置を越えたかどうかについて判定され、停止位置を越えた場合、Ｓ７２３へ進み、正弦波発生器１０９は内部状態を停止状態に移行させる。また、Ｓ７２２で停止位置を越えていない場合には、図４１のＳ７２４へ移る。
【０１０９】
Ｓ７２４にて、ＥＮＣカウント値から正弦波２−２相カウント値を減算し、この値が閾値以上であるか否かについて判定される。本例にて閾値は４であり、駆動波形の１周期に対応する値である。減算結果が４以上であった場合、Ｓ７２５へ移り、減算結果が４未満であった場合、Ｓ７２７へ移る。Ｓ７２５では、正弦波２−２相カウント値に４が加算される。続くＳ７２６では現在位置を示す絶対値に対して、正弦波テーブル番号の１周期分に対応する位相量、すなわち５１２が加算され、Ｓ７０８の処理へ戻る。図４４は、Ｓ７２４〜Ｓ７２６に示す一連の処理を行う場合を例示する。この例では、駆動停止後、慣性によりロータ軸１０２が回転し続けて、行き過ぎてしまった場合等を表わしている。
【０１１０】
この場合、絶対位置９６０の位置で駆動波形信号の印加を停止しているため、正弦波２−２相カウント値は１０７で停止してしまう。しかし、ロータが慣性で回転を続けるため、ＥＮＣ０信号、ＥＮＣ１信号の各出力は継続し、ＥＮＣカウント値は１１１まで増加する。モータが脱調した場合、ＥＮＣカウント値が４増加する毎にロータと印加電圧との安定した対応点が現れる。図４４の例では、ロータはロータマグネット１１９の着磁位相で１周期分ずれた所でステータからの印加電圧と釣り合いのとれた状態に落ち着いたことになる。その際、ＥＮＣカウント値が１１１になった時点で絶対位置９６０に対して５１２を加算して１４７２に補正する処理がＣＰＵ１０８により実行され、正弦波２−２相カウント値は４が加算されて１１１となる。
【０１１１】
再び、図４１のフローチャートの説明に戻る。Ｓ７２７にてＥＮＣカウント値から正弦波２−２相カウント値を減算した値が、−４以下であるか否かについて判定される。減算結果値が−４以下であった場合、Ｓ７２８へ移り、また減算結果値が−４より大きい場合、Ｓ７０８へ処理を戻す。Ｓ７２８では、正弦波２−２相カウント値から４が減算される。続くＳ７２９では現在位置を示す絶対値から、正弦波テーブル番号の１周期分に対応する位相量、すなわち５１２が減算された後、Ｓ７０８の処理へ戻る。
【０１１２】
図４５は、Ｓ７２７〜Ｓ７２９に示す一連の処理を行う場合を例示する。この例は、駆動波形信号の印加を続行しても、ロータに過剰な負荷がかかる等の原因により、ロータが回転しない場合を表わしている。この場合、ＥＮＣカウント値が１０６の位置で停止している。しかし、駆動波形信号の印加が続行するため、正弦波２−２相カウント値は増加し続ける。増加後に、正弦波２−２相カウント値が１１０となった時点で、ＥＮＣカウント値から正弦波２−２相カウント値を引いた値が−４となる。このタイミングで正弦波２−２相カウント値から４が減算されて１０６となり、絶対位置から５１２が減算される（１２８０−５１２＝７６８）。その後もＥＮＣカウント値は変化しないため、再び正弦波２−２相カウント値が１１０となった時点で同様の補正処理が実行される。
【０１１３】
以上に説明したカウント値の補正処理を行うことで、ステッピングモータの駆動中において一時的に過剰な負荷が発生してモータを駆動できなくなった場合でも、印加した駆動波形の位相量の積算値に対して位置ずれの補正が行われる。その際、間違った停止位置に一旦停止してから位置ずれの補正のためにモータを駆動させる処理等は不要となる。
【０１１４】
なお、図４５に示す過剰負荷の下でのカウント値の補正処理において、継続的に駆動波形信号をモータに印加し続けることで正常動作への復帰を促す例を説明した。これに限らず、一定時間の経過後に駆動波形信号を停止させるタイムアウト処理を追加して実施してもよい。つまり、位置検出信号の変化が検出された後、一定時間以上に亘って該信号の変化が検出されなかった場合、第２カウント値の補正処理が停止される。あるいは、一定数の駆動波形の信号出力を行っても正常動作へ復帰しないと判断された場合、駆動波形の印加を停止させる処理を追加して実施してもよい。つまり、位置検出信号の変化が検出された後、一定時間以上に亘って該信号の変化が検出されない期間中に、一定数以上の駆動波形信号が前記モータに印加された場合、第２カウント値の補正処理が停止される。
【０１１５】
また、図４６に示すように、実際の機構部へ前記モータユニットを適用する場合、実施する意味をもたないか、または実施すると何らかの支障を来たす状況ではこの処理を停止すればよい。図４６（Ａ）、（Ｂ）は、本処理のモータユニット１００をレンズユニットに適用した例を示す。図中にステッピングモータ１０１、ロータ軸１０２、スリット回転板１０５を示す。レンズホルダ１１０１はモータ駆動による制御対象となる部材である。ステッピングモータ１０１が回転すると、レンズホルダ１１０１がロータ軸１０２の方向に移動する。レンズホルダ１１０１には、リセット用ＰＩ１１０２に対する遮光板１１０１ａが設けられており、レンズホルダ１１０１の基準位置は、リセット用ＰＩ１１０２を用いて決定される。レンズホルダ１１０１の基準位置の決定処理では、現在のリセット用ＰＩ１１０２での明暗状態に応じて、適した方向にレンズホルダ１１０１を移動させ、リセット用ＰＩ１１０２での明暗状態が変化した位置を、基準位置として決定する処理が実行される。基準位置の決定処理中には、レンズホルダ１１０１のレンズユニットに対する絶対位置が決定されていないので、前述した位置ずれの補正処理は適用されない。よって、処理負荷が削減される。
【０１１６】
また、レンズホルダ１１０１に一時的な阻害状態（機械的な食いつき等）が起きた場合、レンズホルダ１１０１に対して短距離での往復動作を短時間内に行う動作等の、脱出処理実行される。この時に前記の位置ずれの補正処理を行ったのでは、期待通りの脱出効果が得られない場合がある。食いつき状態からの脱出動作では、第１方向へモータを駆動するための駆動波形を短時間に出力し、続いて反対の第２方向へ駆動するための駆動波形を短時間に出力するという制御が繰り返し実行される。この場合に前記補正処理を行うと、レンズが移動しないために、駆動波形信号が短時間内ではなく、タイムアウトが発生するまでの間、継続して出力されてしまい、期待した脱出動作にはならない。よって、一時的な阻害状態からの脱出処理を行う場合には、前記補正処理が停止される。
【０１１７】
上述の処理によれば、モータの停止後に、ロータが予定位置を越えて行き過ぎた場合でも、行き過ぎ量を常に監視して補正することにより、補正した結果を実際の位置決め制御に反映させることができる。
【０１１８】
以上、ステッピングモータを例示して処理を説明したが、本発明はこれに限らず、エンコーダが付加され、かつ印加する駆動波形信号の波数に応じて回転量や駆動量が決まるモータであれば、他のタイプのモータにも適用できる。
【符号の説明】
【０１１９】
１００  モータ駆動ユニット
１０１  ステッピングモータ
１０２  ロータ軸
１０３  ｃｈ０−ＰＩ
１０４  ｃｈ１−ＰＩ
１０５  スリット回転板
１０６  コンパレータ
１０７  エンコーダ回路
１０８  ＣＰＵ
【図１】
2019083688.tif 000003
【図２】
2019083688.tif 000004
【図３】
2019083688.tif 000005
【図４】
2019083688.tif 000006
【図５】
2019083688.tif 000007
【図６】
2019083688.tif 000008
【図７】
2019083688.tif 000009
【図８】
2019083688.tif 000010
【図９】
2019083688.tif 000011
【図１０】
2019083688.tif 000012
【図１１】
2019083688.tif 000013
【図１２】
2019083688.tif 000014
【図１３】
2019083688.tif 000015
【図１４】
2019083688.tif 000016
【図１５】
2019083688.tif 000017
【図１６】
2019083688.tif 000018
【図１７】
2019083688.tif 000019
【図１８】
2019083688.tif 000020
【図１９】
2019083688.tif 000021
【図２０】
2019083688.tif 000022
【図２１】
2019083688.tif 000023
【図２２】
2019083688.tif 000024
【図２３】
2019083688.tif 000025
【図２４】
2019083688.tif 000026
【図２５】
2019083688.tif 000027
【図２６】
2019083688.tif 000028
【図２７】
2019083688.tif 000029
【図２８】
2019083688.tif 000030
【図２９】
2019083688.tif 000031
【図３０】
2019083688.tif 000032
【図３１】
2019083688.tif 000033
【図３２】
2019083688.tif 000034
【図３３】
2019083688.tif 000035
【図３４】
2019083688.tif 000036
【図３５】
2019083688.tif 000037
【図３６】
2019083688.tif 000038
【図３７】
2019083688.tif 000039
【図３８】
2019083688.tif 000040
【図３９】
2019083688.tif 000041
【図４０】
2019083688.tif 000042
【図４１】
2019083688.tif 000043
【図４２】
2019083688.tif 000044
【図４３】
2019083688.tif 000045
【図４４】
2019083688.tif 000046
【図４５】
2019083688.tif 000047
【図４６】
2019083688.tif 000048