(57)【特許請求の範囲】
【請求項１】
モータの駆動制御を行うモータ制御装置であって、
前記モータの可動子が移動することによって出力が周期的に変化する位置検出信号を取得する取得手段と、
前記取得手段によって取得される前記位置検出信号に基づいて進角量が制御された駆動信号を前記モータに供給する制御手段を備え、
前記制御手段は、前記モータが停止している状態から前記取得手段によって取得される前記位置検出信号が１回目に変化するまでの間における前記モータの可動子の移動量と、前記モータが停止している状態から前記取得手段によって取得される前記位置検出信号が１回目に変化するまでの時間とに基づいて、前記位置検出信号が１回目に変化するときの前記モータの可動子の第１の速度を求め、前記第１の速度に基づいて進角量が制御された前記駆動信号を前記モータに供給することを特徴とするモータ制御装置。
【請求項２】
前記制御手段は、前記駆動信号が供給され、且つ前記モータが停止している状態から前記取得手段によって取得される前記位置検出信号が変化するまでの間には、前記モータが停止している状態のときの前記駆動信号に基づいて設定された前記駆動信号を前記モータに供給することを特徴とする請求項１に記載のモータ制御装置。
【請求項３】
前記制御手段は、前記駆動信号が供給され、且つ前記モータが停止している状態から前記取得手段によって取得される前記位置検出信号が変化するまでの間には、予め設定された進角量だけ進角させた前記駆動信号を前記モータに供給することを特徴とする請求項１または２に記載のモータ制御装置。
【請求項４】
前記予め設定された進角量は、電気角で９０度であることを特徴とする請求項３に記載のモータ制御装置。
【請求項５】
前記制御手段は、前記取得手段によって取得される前記位置検出信号が２回目以降に変化した後には、前記位置検出信号が変化した時点から次に変化するまでの時間を計測して、前記位置検出信号が次に変化するときの前記モータの可動子の第２の速度を求め、前記第２の速度に基づいて進角量が制御された前記駆動信号を前記モータに供給することを特徴とする請求項１から４のいずれか１項に記載のモータ制御装置。
【請求項６】
前記制御手段は、正弦波の駆動信号を前記モータに供給することを特徴とする請求項１から５のいずれか１項に記載のモータ制御装置。
【請求項７】
前記制御手段は、前記駆動信号が供給され、且つ前記モータが停止している状態から前記取得手段によって取得される前記位置検出信号が変化するまでの間には、前記正弦波の１周期における複数の位置とパルス幅変調値との関係を示す情報と、前記駆動信号に基づく現在の位置とに基づいて前記駆動信号を前記モータに供給することを特徴とする請求項６に記載のモータ制御装置。
【請求項８】
前記制御手段は、前記正弦波の１周期における複数の位置とパルス幅変調値との関係を示す情報のうち前記位置検出信号の変化する時点で予め決められた情報が取得できるように、前記駆動信号を前記モータに供給することを特徴とする請求項７に記載のモータ制御装置。
【請求項９】
前記制御手段は、前記モータが停止している状態で前記モータに供給される前記駆動信号に基づいて、前記モータが停止している状態から前記位置検出信号が１回目に変化するまでの間における前記モータの可動子の移動量を取得することを特徴とする請求項１から８のいずれか１項に記載のモータ制御装置。
【請求項１０】
モータの可動子が移動することによって出力が周期的に変化する位置検出信号を取得し、取得した前記位置検出信号に基づいて進角量が制御された駆動信号を前記モータに供給するモータ制御方法であって、
前記モータが停止している状態から、取得される前記位置検出信号が１回目に変化するまでの間における前記モータの可動子の移動量と、
前記モータが停止している状態から、取得される前記位置検出信号が１回目に変化するまでの時間とに基づいて、
前記位置検出信号が１回目に変化するときの前記モータの可動子の第１の速度を求め、前記第１の速度に基づいて進角量が制御された前記駆動信号を前記モータに供給することを特徴とするモータ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、位置検出信号を用いるモータ制御装置とモータ制御方法に関し、特にモータの駆動開始の制御に関するものである。
【背景技術】
【０００２】
小型、高トルク、高寿命といった特徴をもつステッピングモータは、開ループ制御により容易にデジタル的な位置決め動作を行えるため、カメラや光ディスク装置、プリンタやプロジェクタ等に広く用いられている。モータの負荷が大きいときや高速回転時の脱調の問題への解決法として、ステッピングモータにエンコーダを取り付け、ロータの位置に合わせて通電を切り替えて、いわゆるブラシレスＤＣモータの動作を行わせる方法がある。
【０００３】
特許文献１には、矩形波状の駆動波形をステッピングモータに印加する方法が開示され、特許文献２には、正弦波状の駆動波形をステッピングモータに印加する方法が開示されている。ロータの回転に応じて出力されるエンコーダ信号を用い、ロータの磁力位相に対して効率的に駆動波形をステッピングモータにかけて脱調を防ぎながら高速、高トルクを実現することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１１９０８９号公報
【特許文献２】特開２０１４−０４５６４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術では、エンコーダ信号を検出するまでの間、いわゆるブラシレスＤＣモータと同等の動作（以下、進角制御という）を行うことができない。このため、駆動開始時点からエンコーダ信号が検出される時点までの間、ステッピングモータのオープン駆動が行われる。このオープン駆動の期間中には加速のためのトルクがかからず、当該期間の長さが加速時間に影響を与える場合、始動に時間がかかるという課題がある。
【０００６】
本発明の目的は、位置検出信号を用いるモータ制御において、駆動開始時の動作を改善して加速時間を短縮することである。
【課題を解決するための手段】
【０００７】
本発明に係る装置は、モータの駆動制御を行うモータ制御装置であって、前記モータの可動子が移動することによって出力が周期的に変化する位置検出信号を取得する取得手段と、前記取得手段によって取得される前記位置検出信号に基づいて進角量が制御された駆動信号を前記モータに供給する制御手段を備え、前記制御手段は、前記モータが停止している状態から前記取得手段によって取得される前記位置検出信号が１回目に変化するまでの間における前記モータの可動子の移動量と、前記モータが停止している状態から前記取得手段によって取得される前記位置検出信号が１回目に変化するまでの時間とに基づいて、前記位置検出信号が１回目に変化するときの前記モータの可動子の第１の速度を求め、前記第１の速度に基づいて進角量が制御された前記駆動信号を前記モータに供給することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、位置検出信号を用いるモータ制御において、駆動開始時の動作を改善して加速時間を短縮することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態におけるモータユニット（Ａ）、およびシステム構成の概要（Ｂ）を例示する図である。
【図２】モータドライバの動作説明図である。
【図３】モータ、ステータ、スリット回転板の位置関係を示す図である。
【図４】正弦波発生器の出力の説明図である。
【図５】正弦波状駆動波形の説明図である。
【図６】ロータ磁石とスリット回転板との関係を示す模式図である。
【図７】本発明の第１実施形態における処理を示すフローチャートである。
【図８】第１実施形態におけるロータ位相と駆動波形位相の関係によるトルクの説明図である。
【図９】第１実施形態におけるエンコーダ信号波形、駆動波形、トルクを示す図である。
【図１０】本発明の第２実施形態における進角９０°の状態を説明する図である。
【図１１】第２実施形態における進角０°の状態を説明する図である。
【図１２】第２実施形態における正転時での進角０°の状態を例示する図である。
【図１３】第２実施形態における正転時での進角９０°の状態を例示する図である。
【図１４】正転時にて進角９０°の状態での位相ずれを説明する図である。
【図１５】第２実施形態における逆転時の状態を説明する図である。
【図１６】第２実施形態における処理を説明するフローチャートである。
【図１７】図１６に続く処理を説明するフローチャートである。
【図１８】図１７に続く処理を説明するフローチャートである。
【図１９】第２実施形態における初期回転量の算出処理を説明する図である。
【図２０】第２実施形態における速度算出処理を説明する図である。
【図２１】第２実施形態における進角制御の概要説明図である。
【図２２】第２実施形態における移動時間の算出処理を説明する図である。
【図２３】モータの不安定回転状態を説明する図である。
【発明を実施するための形態】
【００１０】
以下に、本発明の実施形態を、添付図面に基づいて詳細に説明する。各実施形態に共通する構成および動作を説明した後で、各実施形態を説明する。なお、各実施形態では電圧励磁により可動子が回転する回転駆動型モータを例示してモータ制御装置およびモータ制御方法を説明するが、本発明は、可動子が移動方向に直線移動するリニア駆動型モータにも適用可能である。
【００１１】
図１（Ａ）は、本発明の実施形態に係るモータユニット１００の外観図である。モータユニット１００はステッピングモータ（以下、単にモータという）１０１を備え、出力軸１０２はスリット回転板１０５を有する。被検出部であるスリット回転板１０５は明領域と暗領域の比率が５０：５０で設計されている。スリット回転板１０５に対して明領域と暗領域を光学的に検出する一対の光学検出手段として、ｃｈ０フォトインタラプタ１０３およびｃｈ１フォトインタラプタ１０４が取り付けられている。出力軸１０２の回転に伴ってスリット回転板１０５が回転し、各フォトインタラプタ（ＰＩと記す）の出力信号が変化する。出力軸１０２は、可動子としてのロータマグネット１１９の回転中心に取り付けられている。ｃｈ０フォトインタラプタ１０３およびｃｈ１フォトインタラプタ１０４の出力信号からロータマグネット１１９の位置に対応した位置情報を取得することができる。したがって、ｃｈ０フォトインタラプタ１０３およびｃｈ１フォトインタラプタ１０４は、位置情報取得手段の一例である。以下では、出力軸１０２の回転位置検出に用いるｃｈ０フォトインタラプタをｃｈ０−ＰＩと記し、ｃｈ１フォトインタラプタをｃｈ１−ＰＩと記す。
【００１２】
図１（Ｂ）は駆動用の電気回路を含めたシステムの構成例を示す。符号１０１〜１０５に示す各部は既述の通りである。コンパレータ１０６はｃｈ０−ＰＩ１０３とｃｈ１−ＰＩ１０４からの各アナログ入力信号を、設定された閾値電圧と比較し、２値化された信号をエンコーダ回路１０７に出力する。本発明の実施形態では、モータが回転ムラなく一定速度で回転している状態において、コンパレータ１０６の出力のＨ（HIGH）レベルとＬ（LOW）レベルとの比率が５０：５０となるように閾値が予め調整されている。以後、ｃｈ０−ＰＩ１０３の信号を２値化した第１検出信号をＥＮＣ０信号とし、ｃｈ１−ＰＩ１０４の信号を２値化した第２検出信号をＥＮＣ１信号とする。エンコーダ回路１０７はＥＮＣ０信号とＥＮＣ１信号の各信号の変化時点でタイミング情報を取得し、各信号による位置カウントおよび信号周期カウントを行う。エンコーダ回路１０７によるエンコード処理ではＥＮＣ０信号の立上りと立下り、ＥＮＣ１信号の立上りと立下りの４種の信号種別が区別され、それぞれの信号入力タイミングでＣＰＵ（中央演算処理装置）１０８に割り込みがかかる。このとき、ＣＰＵ１０８は割り込み要因に係る４つの信号種別を判別する。ＣＰＵ１０８はメモリからプログラムを読み出して実行する機能をもち、バス１１０を介してエンコーダ回路１０７、正弦波発生器１０９、ＰＷＭ（パルス幅変調）発生器１１１にアクセスする。正弦波発生器１０９は正弦波の１周期に対して５１２の分解能をもつ多値波形データの参照テーブルを有する。正弦波発生器１０９が多値波形のテーブル値に対応するＰＷＭ値の信号をＰＷＭ発生器１１１に送ると、ＰＷＭ発生器１１１が出力するＰＷＭ信号がモータドライバ１１２で増幅されてモータ１０１に供給される。正弦波発生器１０９からモータ１０１への信号伝達の詳細については、図２および図４を参照して後述する。
【００１３】
次に、図２の模式図を参照して、Ｈブリッジ型のモータドライバ１１２の構造を説明する。図２（Ａ）では、スイッチ素子４０１〜４０４を介してＡ相用コイル１１３が接続されている。図２（Ｂ）に示すように、ＰＷＭ発生器１１１からのＡ相用のＰＷＭ信号がHIGH信号（以下、Ｈ信号と記す）のとき、スイッチ素子４０１と４０４が閉状態で、スイッチ素子４０２と４０３が開状態となる。このとき、Ａ相用コイル１１３の両端には、Ａ側を高電位としてモータドライバ１１２に供給されている電圧Ｖｃｃ分の電位差が生じる。このときにコイル１１３のＢ側に対するＡ側の電位を図２（Ｆ）に示し、流れる電流「Ｉ」を図２（Ｉ）に示す。
【００１４】
ＰＷＭ発生器１１１からのＡ相用のＰＷＭ信号がLOW信号（以下、Ｌ信号と記す）のときには、図２（Ｃ）のようにスイッチ素子４０２と４０３が閉状態でスイッチ素子４０１と４０４が開状態となる。このとき、Ａ相用コイル１１３の両端には、Ｂ側を高電位としてモータドライバ１１２に供給されている電圧Ｖｃｃ分の電位差が生じる。このときにＡ相用コイル１１３のＢ側に対するＡ側の電位を図２（Ｇ）に示し、電流「−Ｉ」を図２（Ｊ）に示す。
【００１５】
以上の２つの状態を短時間で繰り返した場合の例を、図２（Ｄ）、（Ｅ）、（Ｈ）、（Ｋ）に示す。図２（Ｄ）と図２（Ｅ）の状態が等時間ずつ繰り返されると、図２（Ｈ）で示すように、−Ｖｃｃと＋Ｖｃｃの２値の矩形波電圧信号が発生する。この電圧信号がＡ相コイル１１３に印加されると、コイルの電流遅れ成分により電圧信号が平滑化された形で電流波形が現れる。−Ｖｃｃと＋ＶｃｃとでＨＬ信号比率が５０％の場合、実効電流値が０となる。ＰＷＭ信号のＨＬ信号比率が５０％のときに出力が０Ｖの定常電圧、１００％のときに＋Ｖｃｃの定常電圧、７５％のときに＋Ｖｃｃ／２の定常電圧がかかっているのと実効的に同じとして扱うことができる。
【００１６】
正弦波発生器１０９では、５１２個のテーブル番号のそれぞれに対して、ＰＷＭ制御のＤＵＴＹ（デューティー）比（％）の値が参照テーブルに格納されている。図４は、正弦波の参照テーブルを例示し、０から５１１までのテーブル番号は正弦波形の位相値に対応する。正弦波の０度位相にテーブル番号０が相当し、正弦波の１８０度位相にテーブル番号２５６が相当する。テーブル番号０にはＤＵＴＹ比５０％の値が格納され、それ以降のテーブル番号には、位相に応じてＰＷＭ出力のＤＵＴＹ比の値が格納されている。図４の例では、ＤＵＴＹ比の値が１００％になると＋Ｖｃｃの値が出力されるので、随時に正弦波のゲインを変更できるように、テーブル値のピークを１００％未満の値に設定している。以上の方法により、デジタル化した２値出力信号でモータコイルに対して実効的に正弦波状の電圧信号を印加することができる。以後、説明の簡便化のため、駆動電圧を正弦波として扱うことにする。
【００１７】
図２に示すＡ相用コイル１１３、Ｂ相用コイル１１４には、モータドライバ１１２が出力する正弦波の駆動電圧（駆動信号）が供給される。後段のステータＡ+１１５、ステータＡ-１１６、ステータＢ+１１７、ステータＢ-１１８に対して４種類の位相の異なる正弦波の駆動電圧が発生される。Ａ相およびＢ相の駆動電圧波形と、ステータ印加電圧、ロータの停止位置、およびその時のスリット回転板１０５の位置について、図３から図５を参照して詳細に説明する。
【００１８】
図３（Ａ）は、モータ１０１の内部構造を例示した模式図である。ロータマグネット１１９は極対数が５（１０極）であり、その周囲に物理角１８°毎にステータが設置されている。時計回り方向を正転方向（第１方向）とする。ステータＡ+１１５、ステータＡ-１１６、ステータＢ+１１７、ステータＢ-１１８がモータ軸を中心として周期的に配置されている。ステータＡ+１１５、ステータＢ+１１７は、コイルに印加された電圧が正弦波形の正領域にあるときにＮ極の磁力を発生する。またステータＡ-１１６、ステータＢ-１１８はコイルに印加された電圧が正弦波形の正領域にあるときにＳ極の磁力を発生する。図４の正弦波形の正領域にＮ極、負領域にＳ極と記しており、これらはステータＡ+１１５、ステータＢ+１１７に対する発生磁力を示す。ステータＡ-１１６、ステータＢ-１１８に関しては逆の関係になる。
【００１９】
図５は、各相の駆動電圧波形を例示する。図５（Ａ）に示すＳｉｎ（正弦）波信号をＡ相用コイルにかけ、Ｃｏｓ（余弦）波信号をＢ相用コイルにかけた場合、図１、図３に示す正転方向に出力軸１０２が回転する。正転時にはテーブル番号を正方向に進めて駆動波形信号が生成され、Ｂ相がＡ相に対して９０度先行した波形が出力される。また、図５（Ｂ）に示す信号をＡ相用コイル、Ｂ相用コイルにそれぞれかけると、図１、図３に示す正転方向とは反対の第２方向（逆転方向）に出力軸１０２が回転する。逆転時にはテーブル番号を逆方向に進めて駆動波形信号が生成され、Ｂ相がＡ相に対して９０度遅れる波形が出力される。
【００２０】
図３（Ｂ）は、各ステータとフォトインタラプタとの位置関係、およびロータマグネット１１９の着磁位相とスリット回転板１０５の基準位置との位相関係を示す。ロータマグネット１１９のＮ極領域と、スリット回転板１０５の明領域とが丁度重なっている位置関係を基準位置関係と定める。図３（Ｃ）では、基準位置関係から、スリット回転板１０５が逆転方向に電気角でα度（図では１８０°）ずれた位置に固定された場合を示す。電気角とはロータにかける正弦波形の位相角度、およびその時にロータマグネット１１９が進む角度を３６０°と定義し直したものである。よって本実施形態の場合、スリット回転板１０５、ロータマグネット１１９の物理的角度７２°が電気角３６０°に相当する。ロータマグネット１１９の着磁位相に対して、スリット回転板１０５の明暗位相がずれた状態で取り付けられる場合がある。本実施形態においてαの値は事前に算出されている。例えば、モータを正転方向へオープン駆動した場合に位置検出信号とモータ軸に係る着磁位相との第１位相差が算出され、モータを逆転方向へオープン駆動した場合に位置検出信号とモータ軸に係る着磁位相との第２位相差が算出される。第１位相差と第２位相差との和を２で除算すれば、位相ずれ量を示す電気角αの値を特定できる。
【００２１】
図３（Ｂ）にはステータＡ+１１５、ステータＢ+１１７、ｃｈ０−ＰＩ１０３、ｃｈ１−ＰＩ１０４の物理的位置を示す。実際には、図３（Ａ）のように２０個のステータがあるが、ステータＡ+１１５、ステータＢ+１１７の位置を代表して示す。ステータＡ+１１５から逆転方向に物理角１８°離れた位置にステータＢ+１１７が位置する。角度的にはｃｈ０−ＰＩ１０３がステータＢ+１１７に対応する位置となり、ｃｈ１−ＰＩ１０４がステータＡ+１１５に対応する位置となるように設置されている。
【００２２】
図６は、極対数５のモータを、極対数１の構成にモデルに簡略化した図である。これにより電気角と物理角が一致するため、以後の説明はこのモデルを使って行う。図６（Ａ）は、ロータマグネット１１９の着磁位相と、スリット回転板１０５の明暗位相とが基準位置関係にある場合を示す。図６（Ａ）の右側の波形は、回転位置を図の状態からθ度回転させた場合のＥＮＣ０信号およびＥＮＣ１信号の出力変化を表している。図６（Ａ）に対して、スリット回転板１０５の位置が電気角αだけ逆転方向にずれて取り付けられた場合を表わしたものが図６（Ｂ）である。このとき、ＥＮＣ０信号とＥＮＣ１信号の各出力は、図６（Ａ）の場合に比べて、電気角α分だけ遅れて出力される。
【００２３】
［第１実施形態］
以下に本発明の第１実施形態を説明する。本実施形態における処理の流れを示す図７のフローチャートを参照して説明を行う。本処理はＣＰＵ１０８がメモリからプログラムを読み出して実行することにより実現される。
【００２４】
まずＳ８０１で処理が開始し、続くＳ８０２でＣＰＵ１０８は、モータ制御装置にてモータに対する回転駆動命令を受信しているかどうかを判定する。回転駆動命令が受信された場合、Ｓ８０３に進み、受信していない場合、Ｓ８０２の処理が繰り返されて待機状態となる。Ｓ８０３にて、回転駆動命令による目標位置と、現在位置との比較により、モータの回転方向が決定される。モータの回転方向が正転方向であればＳ８０４に進み、逆転方向であればＳ８０５へ移る。
【００２５】
Ｓ８０４でＣＰＵ１０８は、現在の停止位置で出力しているテーブル番号に１２８を加算した値を現在のテーブル番号に変更する。続くＳ８０６では、回転駆動命令によって受け取った回転開始速度に対応する周波数で、回転開始位置からテーブル番号を＋（プラス）カウント方向に進めていく制御が開始する。Ｓ８０４からＳ８０６までは時間を極力短くし、ほぼ同時であることが望ましい。Ｓ８０４においてテーブル番号に１２８を加算して進める理由について図８、図９を参照して説明する。
【００２６】
図８は、ロータマグネット１１９の回転位相と、Ａ相用コイル１１３およびＢ相用コイル１１４への着磁位相との関係による、回転トルクの大きさを説明するための図である。図８（Ａ），（Ｂ）の上側には、ロータ電気角０°〜２７０°の範囲にて、ロータマグネット１１９の回転位相が電気角で９０°ずつ異なる４状態（０°，９０°，１８０°，２７０°）を例示している。時計まわり方向を正転方向と定義する。「ロータ電気角０°」で表されるロータマグネット１１９の回転位置、即ちステータＢ+１１７の直下の磁極位置にＮ極からＳ極に変化する境目がある時を電気角の基準（０°）とする。図８にはステータＡ+１１５、ステータＢ+１１７のみを代表して示す。図８（Ａ）の下側の波形図は、上から順にＡ相駆動電圧波形、Ｂ相駆動電圧波形、正転方向加速トルクを示す。Ａ相駆動電圧波形、Ｂ相駆動電圧波形は図５（Ａ）の場合と同様である。よって例えば、ロータ電気角０°の状態では、Ａ相駆動電圧波形がＳ極側に最大であり、ステータＡ+１１５はＳ極の最大値となる。Ｂ相駆動電圧波形の値は０であり、ステータＢ+１１７は着磁が０となる状態である。図８（Ａ）は、Ａ相駆動電圧波形、Ｂ相駆動電圧波形が進角０°の状態を示している。
【００２７】
図８（Ａ）におけるロータマグネット１１９と駆動電圧波形の関係は、ロータが回転せずに停止している状態、または駆動指令による速度が極低速でロータへの過負荷が非常に少なく、ロータが駆動指令に対して追従遅れなく動いている状態を示す。この場合、ロータの回転速度を増加させるトルク（加速トルク）は０となる。
【００２８】
図８（Ｂ）は、Ａ相駆動電圧波形、Ｂ相駆動電圧波形が電気角で９０°だけ進角させた状態を示している。ここで、「電気角で９０°」は、予め設定される進角量である。これは、ロータへの過負荷が大きく最大のトルクを出そうとしている状態、またはロータの位相状態に合わせて駆動波形を進角させることが可能な場合に実現できる状態である。ロータの位相と駆動電圧波形の位相との関係が図８（Ｂ）に示す状態であれば、加速トルクは最大値（図８の＋ＭＡＸ参照）となる。このことを踏まえて図７のＳ８０４、Ｓ８０６で行う処理について、図９を参照して説明する。
【００２９】
図９（Ａ）は、進角制御による駆動を用いた場合の回転開始時の挙動を示した図である。進角制御では、モータに対する特定の負荷の下で、目標とする進角状態になるように最適な回転数を算出し、エンコーダ信号のレベル変化を検出する度にその時点での回転数に応じた駆動周波数を設定する制御が行われる。「進角状態」とは、進角制御により維持される、進角が一定の状態である。
【００３０】
図９（Ａ）は、上からＥＮＣ０信号、ＥＮＣ１信号、Ａ相駆動電圧波形、Ｂ相駆動電圧波形、正転方向加速トルクの各波形を示す。横軸は時間ｔを示し、時刻Ｃ，Ｄ，Ｅに状態遷移のタイミングを示す。時刻Ｃまでの期間は、回転状態から停止状態までの期間を表わし、時刻Ｃから時刻Ｄまでの期間は回転停止状態の期間を表す。時刻Ｃから時刻Ｄまでの期間では、Ａ相駆動電圧波形およびＢ相駆動電圧波形が変化しない。時刻Ｄで回転駆動指令に応じて、Ａ相駆動電圧波形およびＢ相駆動電圧波形が変化し始める。これによってモータの回転駆動が開始される。時刻Ｄから時刻Ｅまでの期間は、駆動指令による速度が極低速でロータへの過負荷が非常に少なく、ロータが駆動指令に対して追従遅れなく動いている状態となる。時刻ＥにてＥＮＣ１信号が変化すると、ロータの回転速度に基づいてモータ制御装置が進角制御を開始する。すなわち、モータ制御装置は、進角量が制御された駆動電圧波形をモータに供給する。したがって、時刻Ｅからロータ位相に合わせた最適な加速運動を開始することができる。これによって、図９（Ａ）に示す正転方向の加速トルクの波形は、時刻Ｅから上昇し、最大トルクが発生する。面積Ｆで表わされる量に相当する力がロータに働くことになる。
【００３１】
図９（Ｂ）は、本実施形態における回転開始時の挙動を示す。図９（Ｂ）に示す各波形の配置は、図９（Ａ）の場合と同じである。図９（Ｂ）においては、時刻Ｇ，Ｈ，Ｉに状態遷移のタイミングを示す。時刻Ｇまでの期間は、回転状態から停止状態までの期間を表わし、時刻Ｇから時刻Ｈまでの期間は回転停止状態の期間を表している。時刻Ｈで回転駆動指令に応じて回転駆動が開始し、このタイミングで図７に示すＳ８０４、さらにＳ８０６の処理が実行される。時刻Ｈから時刻Ｉまでの期間では、モータ制御装置が、予め設定される進角量だけ進角させたＡ相駆動電圧波形およびＢ相駆動電圧波形をモータに供給する。時刻Ｉにおいて、ＥＮＣ１信号が変化すると、ロータの回転速度に基づいてモータ制御装置が進角制御を開始する。図９（Ｂ）では、図８（Ｂ）で説明した原理により時刻Ｈから最大トルクが発生する。よって時刻Ｈから時刻Ｉの期間にて面積Ｊで表わされる量に相当する力がロータに働くことになり、図９（Ａ）に比べて加速性能が改善される。ここで図７のフローチャートの説明に戻る。
【００３２】
図７のＳ８０４の処理は、現在のテーブル番号に１２８を加算することで、駆動波形の位相を進める処理である。図４に示したように、正弦波の９０°位相に相当するのは、テーブル番号１２８である。すなわちＳ８０４の処理は、図８、図９で説明した駆動波形の位相を、進行方向に９０°進める処理に相当する。Ｓ８０６の後、Ｓ８０８において、駆動開始後に初めてのＰＩの信号変化が検知され、ＣＰＵ１０８のＰＩ割り込み処理によって進角制御の処理が開始する。続くＳ８０９では、進角制御による目標位置への移動処理が実行される。
【００３３】
Ｓ８０３にて回転方向が逆転方向であると判定された場合、Ｓ８０５に移行する。Ｓ８０５でＣＰＵ１０８は、現在の停止位置で出力しているテーブル番号から１２８を減算した値を現在のテーブル番号に変更する。続くＳ８０６では、回転駆動命令によって受け取った回転開始速度に対応する周波数で、開始位置からテーブル番号を−（マイナス）カウント方向に進めていく制御が開始する。その後、Ｓ８０８に移行する。この場合の処理は、回転方向が逆であるだけであり、Ｓ８０４、Ｓ８０６の処理に関する前記の説明において、＋１２８を−１２８とし、回転方向を逆方向として読み替えればよいので、その詳細な説明を割愛する。
Ｓ８０９の処理が終了すると、次のＳ８１０では、目標位置への到達により、モータの回転停止処理が実行された後、Ｓ８０２に処理が戻る。
【００３４】
本実施形態によれば、進角制御によるステッピングモータの動作制御において始動性を改善し、加速に要する時間を短縮することができる。特に、実効的に正弦波駆動を行う場合に効果的である。
【００３５】
［第２実施形態］
次に、本発明の第２実施形態を説明する。従来の制御では、エンコーダ信号を２回以上受け付けないと速度情報が得られないため、エンコーダ信号の２回目以降でないと正確な進角制御による効率的な加速に支障を来たす可能性がある。そこで、本実施形態では効率的な制御を目的として、１回目のエンコーダ信号で速度を算出する処理を行う。本実施形態にて第１実施形態の場合と同様の構成要素については既に使用した符号を用いることにより、それらの詳細な説明を省略して相違点を中心に説明する。
【００３６】
図１０および図１１を参照して、ロータマグネット１１９のどの回転位置の時に、どの位相の正弦波駆動波形をＡ相用コイル１１３、Ｂ相用コイル１１４に入力すれば効率的な回転駆動を行えるかを説明する。ロータ電気角については、図８にて説明した通りである。
【００３７】
図１０は、進角９０°の駆動波形とロータマグネット１１９の回転位置を示す図である。図１１は、進角０°の駆動波形とロータマグネット１１９の回転位置を示す図である。図１０（Ａ）、図１１（Ａ）はステータＡ+１１５がＮ極に励磁されていた場合に、ステータＡ+１１５位置でのロータマグネット磁界強度を表わしている。ロータマグネット１１９に対して正転方向のトルクを与える値を正の値とする。図１０にてロータ電気角０°の場合、ステータＡ+１１５がどのように励磁されていようがロータマグネット１１９が回転するトルクは発生しない。磁力によって発生する力がロータの回転方向と垂直な方向にしか働かないからである。またロータ電気角９０°の場合、ステータＡ+１１５がＮ極に励磁されているとロータマグネット１１９のＮ極に対して斥力を、ロータマグネット１１９のＳ極に対して引力を働かせるので、最高の正転方向トルクが発生する。図１０（Ｂ）、図１１（Ｂ）はステータＢ+１１７に関する磁界を示し、図１０（Ａ）、図１１（Ａ）に示す磁界との位相差が９０°であること以外、同様であるので詳細な説明は省略する。
【００３８】
図１０（Ｃ）、図１１（Ｃ）はｃｈ０−ＰＩ１０３の位置でのスリット回転板１０５による明暗状態、およびＥＮＣ０信号を表わす。ＥＮＣ０信号はｃｈ０−ＰＩ１０３の信号を２値化した信号であるので、厳密にはスリット回転板１０５の明暗状態の切り替わりから電気的に僅かに遅れるが、本実施形態では無視する。ＥＮＣ０信号は明状態の時にHighレベルで、暗状態の時にLowレベルとなる。図１０（Ｃ）、図１１（Ｃ）の出力について、図６（Ａ）の状態であり、電気角αは０°である。図１０（Ｄ）、図１１（Ｄ）にはｃｈ１−ＰＩ１０４における明暗状態、およびＥＮＣ１信号を表す。位相差が９０°であること以外、図１０（Ｃ）、図１１（Ｃ）と同様であるので詳細な説明は省略する。
【００３９】
以下、図１０を参照し、ロータマグネット１１９に対して回転トルクを効率的に発生させる駆動波形の供給について説明する。図１０（Ａ）、（Ｂ）で示した磁界曲線に対して、Ａ相用コイル１１３、Ｂ相用コイル１１４に流れる電流を掛けたものがトルクとなる。図１０（Ａ）、（Ｂ）に示す波形が正弦波状であることから、Ａ相用コイル１１３、Ｂ相用コイル１１４に流れる電流位相はそれぞれ、図１０（Ａ）、（Ｂ）の磁界曲線の位相と一致している時にトルクが最大になる。コイルに流れる電流は、コイルに与える電圧波形から遅れが発生するが、この遅れはコイル特性や、コイルに発生する逆起電圧によって変化する。このため、電圧と電流の位相を同一とした場合を基準とし、Ａ相用コイル１１３、Ｂ相用コイル１１４に通電させた最大効率の正弦波電圧波形を、図１０（Ｅ）、（Ｆ）にそれぞれ示す。図１０（Ａ）、（Ｅ）が同位相関係にあり、図１０（Ｂ）、（Ｆ）が同位相関係にある。
【００４０】
図１０（Ｇ）、（Ｈ）はそれぞれ、Ａ相コイル１１３に起因するトルク曲線、Ｂ相コイル１１４に起因するトルク曲線を示す。図１０（Ｇ）は図１０（Ａ）、図１０（Ｅ）を掛けた結果を表すトルク曲線を示し、図１０（Ｈ）は図１０（Ｂ）、図１０（Ｆ）を掛けた結果を表すトルク曲線を示す。２つのトルク曲線を足し合わせた合成トルク、つまりモータ全体に発生するトルク曲線を図１０（Ｉ）に表し、常に回転を発生させる一定トルクが発生している。
【００４１】
図１１は、進角０°の駆動波形とロータマグネット１１９の回転位置を示す図である。例えばロータ電気角０°において、図１１（Ｅ）に示すようにＡ相コイル１１３にかけている電圧波形は負の最大値、即ちステータＡ+に最大のＳ極が発生している。またロータ電気角０°において、図１１（Ｆ）に示すように、Ｂ相コイル１１４の電圧値は０、即ちステータＢ+は励磁されない状態である。このとき、ロータマグネット１１９は固定され、一切回転トルクは発生しない。このように図１１（Ｅ）、（Ｆ）で示す位相関係で駆動電圧をかけた時、正転方向のトルクは発生しない。モータを極低速でオープン駆動させた場合に、ロータマグネット１１９の着磁位相と、駆動波形の位相は図１１に極めて近い位相関係で回転する。図１１（Ｇ）はＡ相コイル１１３に起因するトルク曲線を示し、図１１（Ｈ）はＢ相コイル１１４に起因するトルク曲線を示す。２つのトルク曲線は逆相関係にあり、正負で同面積のトルク積分値を持つ。よって、これらの和である図１１（Ｉ）の合成トルク曲線に示す、モータ全体のトルクは常に０となる。
【００４２】
本実施形態では、図１０に示す進角９０°の位相関係で常にモータの回転駆動を行うことを目的とする。以下では、図１２〜図１４を参照して、回転駆動中にＥＮＣ０信号とＥＮＣ１信号の各タイミングで、駆動波形のどの位相値を取得していれば、進角９０°の状態になるかについて順を追って説明する。ＥＮＣ０信号とＥＮＣ１信号の各タイミングとは、ＥＮＣ０信号の立上りと立下り、ＥＮＣ１信号の立上りと立下りのタイミングである。ＥＮＣ０信号の立上りをEnc0Upと記し、ＥＮＣ０信号の立下りをEnc0Downと記す。ＥＮＣ１信号の立上りをEnc1Upと記し、ＥＮＣ１信号の立下りをEnc1Downと記す。
【００４３】
まず、図１２は、進角０°の状態での駆動波形とＥＮＣ０信号およびＥＮＣ１信号との関係を示す。図１２（Ａ）は、Ａ相コイル１１３に与える電圧波形を表す。図１２（Ｂ）は、Ｂ相コイル１１４に与える電圧波形を表す。図１２（Ｃ）は、図１２（Ａ）、（Ｂ）の駆動波形に対応するテーブル番号値を、直線状のグラフで視覚化して示す。図１２（Ｄ）は、ＥＮＣ０信号の状態を示す。図１２（Ｅ）は、ＥＮＣ１信号の状態を示す。図１２に示すように、駆動中に進角０°の状態を保つ制御の場合、Enc0Upのタイミングで駆動波形のテーブル番号１２８が取得できていればよい。その他、Enc0Downのタイミングでは３８４、Enc1Upのタイミングで２５６、Enc1Downのタイミングでは０という、テーブル番号がそれぞれ取得できていればよいことになる。
【００４４】
図１３は、進角９０°状態の場合を示す図であり、図１２の場合に比べて、駆動波形が９０°進んでいる。進角９０°の状態での回転駆動を保つには、Enc0Upのタイミングで２５６、Enc0Downのタイミングで０、Enc1Upのタイミングで３８４、Enc1Downのタイミングで１２８という、各テーブル番号が取得できていればよい。以上、特定の進角状態を保つ場合の駆動波形の位相とＥＮＣ０、ＥＮＣ１の位相関係について説明したが、これは、回転位置をθ度回転させた場合のＥＮＣ０信号およびＥＮＣ１信号の出力変化が図６（Ａ）の状態であることを前提とする。
【００４５】
次に、図６（Ｂ）の状態のように、ロータマグネット１１９のＮ極位相とスリット回転板１０５の明状態の位相が一致していない場合を説明する。図１４は、スリット回転板１０５の位相が、電気角αでずれた位置に取り付けられている場合の関係を示している。スリット回転板１０５に電気角αで示す取り付け位置ズレがある場合、ロータマグネット１１９の回転に対して、ＥＮＣ０信号、ＥＮＣ１信号には電気角αのずれが発生する。このとき、駆動中に進角９０°の状態を保つためには、Enc0Upのタイミングにおいて「２５６＋α」であるテーブル番号値（白抜き点１２０２参照）を取得できることが必要となる。その他、Enc0Downのタイミングにおいて「０＋α」、Enc1Upのタイミングにおいて「３８４＋α」、Enc1Downのタイミングにおいて「１２８＋α」の、テーブル番号をそれぞれ取得できることが必要である。図１４にて各テーブル番号に対応する位置を白抜き点１２０４、１２０３、１２０１でそれぞれ示す。
【００４６】
以上の説明は、時計回りの正転方向の回転の場合である。反時計回りの逆転方向の回転の場合には位相角の向きが逆である。つまり図１５に示すように、ＥＮＣ０信号、ＥＮＣ１信号が電気角αだけ進む（正転方向の回転の場合には電気角αだけ遅れる）。図１５（Ａ）は、ロータマグネット１１９の回転位相、スリット回転板１０５の明暗状態およびＥＮＣ０信号の出力の関係を示す図である。図１５（Ｂ）は、ロータマグネット１１９の回転位相、スリット回転板１０５の明暗状態およびＥＮＣ１信号の出力の関係を示す図である。図１５（Ｃ）は、駆動波形のテーブル番号の推移を示す図である。図１５（Ｄ）は、Ａ相コイル１１３への電圧波形を示す図であり、図１５（Ｅ）はＢ相コイル１１４への電圧波形を示す図である。基本的には図１２〜図１４に対する説明と同様である。よって、それらの詳細を説明は省略する。
【００４７】
次に、図１６から図１８を参照して、本実施形態におけるモータ制御について説明する。図１６から図１８は本実施形態の処理例を示すフローチャートである。以下の処理はＣＰＵ１０８の制御下でプログラムに従って実行される。
Ｓ１８０１より処理が開始し、続くＳ１８０２でＣＰＵ１０８は、事前に特定されている電気角αの値に基づいて、ＥＮＣ０信号およびＥＮＣ１信号の要因タイミング毎の目標テーブル番号値を算出する。この処理では図１４で説明した事項に基づき、α＝０の場合の、ＥＮＣ０信号およびＥＮＣ１信号という要因毎のデフォルトテーブル値にαを加算した値が４変数にそれぞれ代入される。各変数は以下の通りである。
・ＥＮＣ０信号の立上り時に取得すべき目標テーブル番号値を格納する変数
TrgtSameTimeTableNumForEnc0Up＝２５６＋α
・ＥＮＣ０信号の立下り時に取得すべき目標テーブル番号値を格納する変数
TrgtSameTimeTableNumForEnc0Down＝０＋α
・ＥＮＣ１信号の立上り時に取得すべき目標テーブル番号値を格納する変数
TrgtSameTimeTableNumForEnc1Up＝３８４＋α
・ＥＮＣ１信号の立下り時に取得すべき目標テーブル番号値を格納する変数
TrgtSameTimeTableNumForEnc1Down＝１２８＋α
【００４８】
続くＳ１８０３では、Ｓ１８０２で設定した４つの変数値が、０〜５１１の範囲内に入っているか否かについてチェックされる。５１１を超えている値については５１２を減算して設定し直し、０〜５１１内の値に正規化する処理が実行される。
【００４９】
Ｓ１８０４においては、最新の周期カウント値を格納する変数（CurQrtPrdCnt）が０で初期化される。この変数は、後の処理に使用するＥＮＣ０信号、ＥＮＣ１信号の最新の２つの切り替わり間の時間に相当する値をもつ。Ｓ１８０５は回転駆動命令の受信の有無についての判定処理である。Ｓ１８０５では回転駆動命令が受信されるのを待ち、回転駆動命令が受信されるとＳ１８０６へ処理を進める。Ｓ１８０６でＣＰＵ１０８は、現在の回転位置と回転指令による目標位置とを比較し、モータの回転方向を判定する。回転方向が正転方向の場合、Ｓ１８０７へ移行し、逆転方向である場合、Ｓ１８１４へ移行する。Ｓ１８０７へ移った場合を以下に説明する。
【００５０】
Ｓ１８０７〜Ｓ１８１０の処理は、現在の停止状態での回転位相から、回転駆動命令によって指定された回転方向へモータが回転した場合、初めてのＰＩ信号の変化がある回転位相までの回転位相量を算出する処理である。図１９を用いて原理を説明する。
【００５１】
図１９（Ａ）はＡ相用コイル１１３とＢ相用コイル１１４への各通電位相を示している。図１９（Ｂ）は、モータが図１９（Ａ）における１８０°の通電位相で停止している状態を示す。図１９（Ｃ）は、モータが図２１（Ａ）における２００°の通電位相で停止している状態を示す。図１９（Ｂ）の状態では、Ａ相用コイル１１３がＮ極励磁され、Ｂ相用コイル１１４への通電量が０である。このため、ロータマグネット１１９は、図１９（Ｂ）で示すように、左側がＮ極で右側がＳ極となる回転位相で止まっている。このとき、ロータマグネット１１９の着磁位相とスリット回転板１０５の明暗位相との位相ズレを示すαの値は取得済みである。このことから、電気角αの値に相当する分の回転が行われたときに、ｃｈ０−ＰＩ１０３が暗状態から明状態に変化することが事前に分かる。モータが２００°の通電位相で停止している場合、図１９（Ｃ）に示すように、位相量（α―２０）度分の回転が行われたときにｃｈ０−ＰＩ１０３が暗状態から明状態に変化することが事前に分かる。以下、Ｓ１８０７〜Ｓ１８１０の処理を具体的に説明する。
【００５２】
Ｓ１８０７においては、Ｓ１８０３にて決定された４変数値から１２８がそれぞれ減算され、各減算結果は一時変数である４つの変数TmpPrgDegCnt[n](n=0-3)に格納される。具体的には、変数TrgtSameTimeTableNumForEnc0Upの値がTmpPrgDegCnt[0]に代入され、変数TrgtSameTimeTableNumForEnc1Upの値がTmpPrgDegCnt[1]に代入される。変数TrgtSameTimeTableNumForEnc0Downの値がTmpPrgDegCnt[2]に代入され、変数TrgtSameTimeTableNumForEnc1Downの値がTmpPrgDegCnt[3]に代入される。続くＳ１８０８でＣＰＵ１０８は、Ｓ１８０７での４変数の値を判定し、負値については５１２を加算することで、０〜５１２の間の値に正規化する。Ｓ１８０９では現在の停止状態での正弦波のテーブル番号CurTblNumの値を取得し、Ｓ１８０８で決定した４つの変数値からテーブル番号CurTblNumの値が減算される。その際、減算後の値が負値になる場合には、５１２を加算することで０〜５１１内の値に正規化される。
【００５３】
Ｓ１８１０でＣＰＵ１０８は、Ｓ１８０９で決定された４つの値を相互に比較し、それらの中で最小の値を選択する。この値が現在の停止位相から、回転開始後において１回目（初回）のエンコーダ信号の変化時点までの回転位相量となる。選択された値は変数InitMoveLenCntに代入され、メモリに保持される。すなわち、変数InitMoveLenCntの値は、モータの停止後に駆動の開始時刻から１回目に位置検出信号が変化する時刻までの初期移動量を表す。Ｓ１８１０では、選択された変数TmpPrgDegCnt[n]の配列指標ｎの数値から、次回のエンコーダ信号の変化が、どの要因によって起こるかを判別できる。例えば、４つの変数TmpPrgDegCnt[0]〜TmpPrgDegCnt[3]のうち、TmpPrgDegCnt[1]が選択された場合には、ＥＮＣ１信号の立上りが起こることになる。Ｓ１８１１では、回転開始時刻として現在時刻が変数StartTImeに格納される。汎用的なＣＰＵに備わったタイマ等により、必要十分な精度の時間計測が行われ、タイマによる計測値から現在時刻が取得される。
【００５４】
Ｓ１８１２でＣＰＵ１０８は、現在モータが停止している位置での出力に対応するテーブル番号に１２８を加算し、加算結果の値を現在のテーブル番号に変更する。加算結果の値が５１２以上になる場合は、当該テーブル番号から５１２が減算され、その結果値が設定される。そしてＳ１８１３では、回転駆動命令の受信時に取得された回転開始速度に対応する周波数で、テーブル番号を＋カウント方向に進めていく処理が開始する。回転開始速度については、モータがオープン駆動で正常に回転可能な範囲内での速度に設定されている。Ｓ１８１２およびＳ１８１３の処理の時間間隔は極力短く、ほぼ同時であることが望ましい。Ｓ１８１２においてテーブル番号に１２８を加算して位相を進める理由については、図８、図９を用いて説明した通りである。
【００５５】
Ｓ１８０６において回転方向が逆転方向であると判断された場合には、Ｓ１８１４〜Ｓ１８２０の処理が実行される。この場合、テーブル番号のカウント方向が逆であり、そのためにテーブル番号値を進める場合の加減算の関係が逆になっている点を除いて、Ｓ１８０７〜Ｓ１８１３とほぼ同様であるので詳細な説明は割愛する。
【００５６】
図１７のＳ１８２１でＣＰＵ１０８は、ＰＩ信号による割り込みがあるかどうかを判定する。ＰＩ信号とは、Enc0Up，Enc0Down，Enc1Up，Enc1Downの各タイミングでの信号を総称した信号である。これらの４信号の変化要因がエンコーダ回路１０７を通じてＣＰＵ１０８の割り込み処理を発生させる。ＰＩ割り込みがない場合には、ＰＩ割り込みがあるまで処理待ちを続ける。ＰＩ割り込みがあった場合、Ｓ１８２２へ処理を進め、ＣＰＵ１０８は駆動通電波形の現在位相を示すマイクロステップ波形のテーブル番号を取得し、変数CurTblNumへ代入する。続くＳ１８２３では現在時刻が取得され、変数CurTimeへ代入される。Ｓ１８２１における割り込みの発生時刻から、Ｓ１８２３における現在時刻の取得および保持までにかかる時間は、後述の処理にとって、ほぼ同時とみなせるほどの時間差しかない。Ｓ１８２４では、現時点でのＥＮＣ周期時間カウント値が変数PastCurEncQrtPrdCntに代入されて保持される。ＥＮＣ周期時間カウント値とは、ＥＮＣ信号の周期時間の計測値である。
【００５７】
Ｓ１８２５〜Ｓ１８２７は、後段の処理で利用するＰＩ信号の変化周期時間のカウント値、またはそれに相当する推定時間のカウント値を取得するための処理である。本処理の概要について、図２０を用いて説明する。
【００５８】
図２０（Ａ）は、横軸を時間軸として、ＥＮＣ０信号の出力を示している。図２０（Ｂ）は、横軸を時間軸として、ＥＮＣ１信号の出力を示している。図２０（Ｃ）は、横軸を時間軸として、Ａ相駆動電圧波形を示している。図２０（Ｄ）は、横軸を時間軸として、Ｂ相駆動電圧波形を示している。図２０（Ｅ）は、縦軸がロータの回転量を表し、横軸が時間を表す。図２０（Ｆ）はＥＮＣ信号間の周期時間にて、１２８カウント分の回転量を移動するのにかかった、速度と等価に扱える周期時間を、時間区分ごとに示す。ＥＮＣ０信号、ＥＮＣ１信号は、いずれもデューティー比が５０％であり、９０°の位相差になるよう調整されている。すなわち、ＥＮＣ０信号およびＥＮＣ１信号の信号変化間に移動するロータ回転量は一律で電気角で９０°の回転量であり、ＥＮＣ周期時間の逆数をとると速度として扱うことができる。時間軸上には時刻ｔｓとｔ０、ｔ１からｔ８を示す。時刻ｔ１からｔ２においては、時刻ｔ０から時刻ｔ１までの時間差分Ｔ１を速度と等価な値として使用できる。以後ｔ２、ｔ３…、とＰＩ信号が変化する毎に速度と等価な時間情報が取得される。
【００５９】
時刻ｔ０では、直前にＥＮＣ信号の変化が発生していないので、ＥＮＣ０信号およびＥＮＣ１信号の変化の時間差によって速度情報を算出できない。そこで、図１６のフローチャートにおけるＳ１８１０、及びＳ１８１７にて取得した変数InitMoveLenCntに格納された値を利用して時刻ｔ０における速度情報としてＴ０が算出される。図２０における回転開始時刻ｔｓと、ＥＮＣ信号の初回の変化時刻ｔ０との差分時間（移動時間）中にモータは、変数InitMoveLenCntの値の回転量を移動したことになるので、これらから速度情報を算出することができる。具体的には「（ｔ０−ｔｓ）×１２８／InitMoveLenCnt」という計算式を用いる。この計算式から、時刻ｔ０におけるロータマグネット１１９が電気角で９０°を移動するときの速度と等価に扱える周期時間を算出できる。これらの処理は、図１７のフローチャートにてＳ１８２５〜Ｓ１８２７で実行される。Ｓ１８２５ではＰＩ割り込みが１回目であるか否かが判定される。ＰＩ割り込みが１回目である場合、Ｓ１８２７に進み、上述の計算式によって算出した値が変数CurEncQrtPrdCntに代入される。つまり「（CurTime−StartTime）×１２８／InitMoveLenCnt」の演算が行われて、演算結果を示す値が変数CurEncQrtPrdCntに保持される。CurTimeは前記ｔ０に相当し、StartTimeは前記ｔｓに相当する。またＰＩ割り込みが２回目以降である場合にはＳ１８２６に進み、最新のＥＮＣ周期時間カウント値が取得され、変数CurEncQrtPrdCntに代入される。
【００６０】
続くＳ１８２８〜Ｓ１８４４では、モータの駆動中に所望の進角状態を保つための処理が行われる。この処理の概要について、図２１を参照して説明する。
図２１は、ロータマグネット１１９とスリット回転板１０５の取り付け位置ズレ量として電気角αに相当する１９０（正弦波１周期を５１２分割した場合）で正転時の場合を示す。図２１（Ａ）は、横軸を時間軸として、ＥＮＣ０信号の出力を示している。図２１（Ｂ）は、横軸を時間軸として、ＥＮＣ１信号の出力を示している。図２１（Ｃ）から（Ｅ）はＡ相用コイル１１３への通電波形を示している。
【００６１】
図２１（Ｃ）は、電気角αに相当する位置が１９０であって、進角９０°の状態におけるＥＮＣ０信号位相に対するＡ相用コイル１１３への通電波形を示す。図１４にて説明したように、Enc0Downのタイミングで得られる、進角９０°のときの駆動波形テーブル番号は０＋αである。よって、０＋１９０＝１９０がEnc0Downのタイミングで得られるべき駆動波形テーブル番号である。しかし、実際にある特定の周波数の駆動波形をコイルにかけて回転させた場合の位相関係が、図２１（Ｄ）の状態となっている場合を想定する。図２１（Ｄ）ではEnc0Downのタイミングで、テーブル番号１２０が得られている。このとき、進角９０°の状態よりも、１９０−１２０＝７０のテーブル番号分に相当する位相で駆動波形がロータに対して遅れている。進角値に換算すると、７０×３６０／５１２＝４９．２°遅れており、進角状態としては４０．８°の進角でモータが回転していることになる。進角状態はモータに対する負荷、回転数により決定される。本実施形態では、モータに対する特定負荷下において、目標とする進角状態になるように最適な回転数が算出される。エンコーダ信号の変化を検出する毎に、算出された回転数に応じた駆動周波数を設定することで進角制御が実現される。図２１（Ｄ）に示す例では、Enc0Downのタイミングで７０のずれが発生している。仮に、正弦波発生器１０９においてテーブル番号を１２０から１９０へ一気に変更した場合、駆動電圧波形に高調波が含まれ、騒音や回転ムラの原因になる。またモータに対する負荷、回転数により進角状態が決定されることから、テーブル番号を飛ばした場合でも駆動電圧波形の周波数自体は変わらないので、安定して進角９０°状態を保つことはできない。本実施形態では、滑らかな駆動通電波形を保ちながら進角制御をするために、以下の処理を行う。
【００６２】
図２１にてEnc0Downのタイミングでの時刻をｔ２と記し、当該時刻から過去に遡ってＥＮＣ信号が変化したタイミングをそれぞれｔ１、ｔ０と記す。時刻ｔ０、ｔ１、ｔ２でそれぞれ得られた、１つ手前の信号変化時刻からその時刻までの時間をそれぞれＴ０、Ｔ１、Ｔ２と記す。時間Ｔ０、Ｔ１、Ｔ２はそれぞれ、ロータマグネット１１９が電気角９０°分を移動するときにかかった時間であり、その逆数が速度と同等に扱える。このとき、ロータマグネット１１９が次に電気角で９０°の回転を終えるまでにかかる時間Ｔ３を推定する処理が行われる。例えば、回転状態がほぼ定速回転である場合、直近の電気角で９０°の移動時間Ｔ２をＴ３と等価として扱い、Ｔ３＝Ｔ２として推定される。しかし回転開始直後から定常状態での速度に達するまでの期間にはモータが加速状態であるので、過去のＥＮＣ信号周期カウント値の履歴から時間Ｔ３の推定値が算出される。速度の推定処理例について、図２２を参照して説明する。
【００６３】
図２２は等加速度運動の場合を示す。上側の図は速度の時間的変化を示す、時間対速度図である。下側の図は移動距離の時間的変化を示す、時間対移動距離図である。Ｔ０以外の、時間Ｔ１、Ｔ２、Ｔ３における回転量は、ロータマグネット１１９が次に電気角９０°分で一律同じである。よって図２２で示す面積Ｓ１とＳ２は、速度積分値であって移動量となり、Ｓ１＝Ｓ２になる。この関係式から時間Ｔ１、Ｔ２、Ｔ３と、時刻ｔ１、ｔ２での各速度ｖ１、ｖ２を含む、時間Ｔ３の２次方程式が得られるので、これを解くことにより、時間Ｔ３を、時間Ｔ１、Ｔ２および速度ｖ１、ｖ２から導出する式が得られる。速度ｖ１、ｖ２はそれぞれ、時間Ｔ１、Ｔ２の逆数に比例するので、Ｔ１、Ｔ２からＴ３を算出することができる。Ｔ１をＴｎ−２に、Ｔ２をＴｎ−１に、Ｔ３をＴｎにそれぞれ置き換えることで、一般化した（式１）を以下に示す。
【数１】
0006525659.tif 000002
【００６４】
モータ加速中には（式１）を用いて、ロータマグネット１１９が次に電気角で９０°だけ回転するまでの時間を推定できる。加速度が一定であることを前提として導出される（式１）では、平方根の計算を必要とするため、演算上の処理負荷を軽減したい場合には、以下の（式２）を用いて推定すればよい。
【数２】
0006525659.tif 000003
（式２）では近似式「ｖｎ＝ｖｎ−１＋（ｖｎ−１−ｖｎ−２）」、つまり、ｖｎよりも１単位時間前の検出速度ｖｎ−１と、２単位時間前の検出速度ｖｎ−２から、速度ｖｎを算出している。各速度ｖｎ、ｖｎ−１、ｖｎ−２が、検出周期の時間に相当するＴｎ、Ｔｎ−１、Ｔｎ−２の逆数にそれぞれ比例することから、（式２）が導出される。
【００６５】
図２１（Ｃ）に示す進角９０°の状態では、Enc0Downのタイミングからロータマグネット１１９が次に電気角で９０°だけ回転したタイミングで得られるテーブル番号は、１９０＋１２８＝３１８となる。またこのタイミングはEnc0Downのタイミングから推定時間Ｔ３が経過した時刻である。この場合、３１８−１２０＝１９８のテーブル番号分に相当する移動量を推定時間Ｔ３で進む周波数の駆動波形周期が、Enc0Downのタイミングにおいて設定される。この処理により、図２１（Ｅ）に示す駆動通電波形が得られる。この場合、Enc0Downのタイミングでは進角９０°の状態で得られるべき値とは異なる１２０というテーブル番号が得られている。推定時間Ｔ３の経過時点ではロータマグネット１１９の回転位相と、駆動通電波形の位相を表わすテーブル番号が一致している。実際の処理では、Enc0Downのタイミングから推定時間Ｔ３の経過時点付近で、Enc0Down信号が発生し、同様の進角制御の処理が行われる。これ以降、駆動通電波形の１周期につき、４回の進角制御の処理が実行されて、回転駆動が続行することになる。
【００６６】
上記の進角制御を継続することでモータは進角９０°の状態に安定収束し、駆動通電波形の周期が安定収束してくる。以上の処理により、モータに対して正弦波状の駆動波形をかけながら、設定された進角値の条件下で、モータにかかる負荷に応じた速度が最適化される。ここで図１７のフローチャートの説明に戻る。
【００６７】
Ｓ１８２６またはＳ１８２７からＳ１８２８に進み、ＣＰＵ１０８はモータが現在加速中であるかどうかを判定する。判定方法としては、例えばモータが組み込まれたシステム状況を把握して、加速にかかる時間を算出して当該時間が経過するまでの加速期間中であるか否かが判定される。あるいは、速度が目標速度の８割に到達するまでの区間等を、速度状況に応じて加速期間と規定してもよい。モータが加速中でないと判定された場合、Ｓ１８２９に進み、加速中であると判定された場合にはＳ１８３０に移行する。
【００６８】
Ｓ１８２９において、ロータマグネット１１９が次に電気角で９０°だけ回転するまでの推定時間を示す変数PdctEncQtrPrdCntに、変数CurEncQtrPrdCntの値を代入する処理が行われる。つまり、定速回転中には１つ手前の時間と同じ時間が設定される。一方、加速中である場合には、Ｓ１８３０に進み、ＰＩ割り込みが１回目であるかどうかについて判定される。ＰＩ割り込みが１回目である場合、Ｓ１８２９に移行する。これは、図２２で示した時間推定のための情報が不足するからである。またＰＩ割り込みが２回目以降である場合、Ｓ１８３１に進む。Ｓ１８３１では、図２２で示した推定処理により、ロータマグネット１１９が次に電気角９０°分回転するまでの推定時間が算出される。変数CurEncQtrPrdCntおよびPastCurEncQtrPrdCntの各値を用いて、４分の１周期後までの時間が推定される。推定時間値は、変数PdctEncQtrPrdCntに代入される。つまり、変数PdctEncQtrPrdCntは、現時点から次回に位置検出信号の変化が検出される時刻までにかかる移動時間を表す。
【００６９】
Ｓ１８２９またはＳ１８３１の後、図１８のＳ１８３２に進む。Ｓ１８３２では割り込み要因がＥＮＣ０信号による要因であるか、ＥＮＣ１信号による要因であるかについて判定される。ＥＮＣ０信号による要因の場合、Ｓ１８３３へ進み、ＥＮＣ１信号による要因の場合にはＳ１８３４へ進む。Ｓ１８３３、Ｓ１８３４では、それぞれ割り込み要因信号が立上り信号であるか、または立下り信号であるかの判定処理が実行される。Ｓ１８３３はEnc0UpまたはEnc0Downの判定処理であり、Ｓ１８３４はEnc1UpまたはEnc1Downの判定処理である。Enc0Upの場合にＳ１８３５へ、Enc0Downの場合にＳ１８３６へ、Enc1Upの場合にＳ１８３７へ、Enc1Downの場合にＳ１８３８へそれぞれ移行する。
【００７０】
Ｓ１８３５、Ｓ１８３６、Ｓ１８３７、Ｓ１８３８ではそれぞれ、進角９０°の状態である場合に現在のタイミングで取得されるべき最適なテーブル番号を選択し、その値を変数TrgtSameTimeTblNumに代入する処理が実行される。例えば、Ｓ１８３５では、変数TrgtSameTimeTableNumForEnc0Upの値が変数TrgtSameTimeTableNumに代入される。続くＳ１８３９でＣＰＵ１０８は、現在の回転方向が正転方向（ＣＷ）か、または逆転方向（ＣＣＷ）かを判定する。正転方向の回転である場合、Ｓ１８４０へ進み、逆転方向の回転である場合にはＳ１８４１へ進む。
【００７１】
Ｓ１８４０、Ｓ１８４１では、現時点からロータマグネット１１９が次に電気角で９０°だけ回転するまでの推定時間が経過する時点までに進むべきテーブル番号が算出される。これは、１／４周期に対応するテーブル番号である１２８に、現時点で取得すべきであったテーブル番号値と実際に取得したテーブル番号値との差分値を足したものとなる。具体的には、Ｓ１８４０では（TrgtSameTimeTableNum−CurTblNum）＋１２８が算出され、結果値は変数TblCntForNextQtrPhsに代入される。またＳ１８４１ではテーブル番号の進む向きが逆であり、（CurTblNum−TrgtSameTimeTableNum）＋１２８が算出され、結果値は変数TblCntForNextQtrPhsに代入される。
【００７２】
Ｓ１８４０またはＳ１８４１の後、Ｓ１８４２では現時点から変数PdctEncQtrPrdCntの時間が経過した時点までに進むべきテーブル番号が、負値であるか否かがチェックされる。変数TblCntForNextQtrPhsの示すテーブル番号の値が負値である場合について、図２３を参照して説明する。図２３（Ａ）はＥＮＣ０信号の出力波形を示し、図２３（Ｂ）は図２１（Ｃ）と同じである。図２３（Ｃ）は進角制御を行わない場合の駆動時における実際の波形を例示する。
【００７３】
図２３（Ｃ）は、図１８のＳ１８４２において、現時点から変数PdctEncQtrPrdCntの時間が経過した時点までの進むべきテーブル番号が負値になっている場合を表わしている。この例では、Enc0Downのタイミングにおいて３４０が取得される。つまり変数PdctEncQtrPrdCntの時間経過後のタイミングに取得すべきテーブル番号３１８と比較して、進むべきテーブル番号（変化量）は３１８−３４０＝−２２である。このような負値になることを回避するために、図１８のＳ１８４３では、予め決められた最低位相進み量を、変数TblCntForNextQtrPhsに代入する設定処理が行われる。つまり最低位相進み量は、次の変数PdctEncQtrPrdCntの時間経過までに進むべきテーブル番号として設定される。このような事態は、進角状態が０°以下の状態にならないと起らず、正常な回転動作では起こりにくい。例えば、モータに異常な負荷がかかった場合や、負荷ムラ、回転ムラが大きい場合に起こり得る。なお、本実施形態とは別の方法としては、変数PdctEncQtrPrdCntの時間経過後までに進むべきテーブル番号の値が負値になった場合、Ｓ１８４３において予め決められた一定の速度値を設定する処理が行われる。
【００７４】
続くＳ１８４４において、次に設定すべき駆動電圧波形に関する速度NxtPPS_Valの値を算出する処理が行われる。速度は、変数PdctEncQtrPrdCntの時間経過後までに進むべきテーブル番号（変数TblCntForNextQtrPhs）と、算出した変数PdctEncQtrPrdCntの値と、実際の回転速度に変換するための変換係数から算出される。具体的には、回転速度への変換係数Conversion_Rateの値を既知として、下式から速度NxtPPS_Valが算出される。
NxtPPS_Val＝（TblCntForNextQtrPhs／PdctEncQrtPrdCnt）×Conversion_Rate
続くＳ１８４５では、Ｓ１８４４で算出された速度値が正弦波発生器１０９に設定される。そして図１７のＳ１８２１の処理に戻る。
【００７５】
本実施形態では、モータの停止後に駆動開始時刻から１回目に位置検出信号の変化が検出される時刻までにかかる移動時間と初期移動量を算出する処理が行われ、１回目に位置検出信号が変化するときの初期速度が算出される。よって、位置検出信号を２回以上受け付けないと速度情報が得られないという問題が解決され、正確な進角制御処理による効率的な駆動制御（加速制御を含む）を行うことができる。
【００７６】
本実施形態によれば、ロータマグネットの着磁位相と駆動電圧波形の位相とが指定された位相関係を保ちながらモータを回転させる制御が行われる。モータの駆動開始時に、より加速トルクを増加させた駆動制御が可能となり、駆動開始時の動作が改善される。
【００７７】
［その他の実施例］
前記実施例では、ステッピングモータを例示したが、本発明はブラシレスＤＣモータ等に適用しても実施可能である。また、前記実施例ではステッピングモータの軸にスリット回転板を取り付け、フォトインタラプタを用いて位置検出を行った。これに限らず、モータ軸またはモータ軸に取り付けた被検出部の位置を検出する検出部を設けてもよい。例えば、モータ軸に被検出部であるマグネットを取り付け、これを磁力センサで検出してもよい。また、ロータマグネットの着磁位相を直接検知する位置に磁力センサを設置し、位置検出を行ってもよい。
【００７８】
前記実施例では、ロータ側が磁石であり、ステータ側が電圧励磁可能なコイルである構成を示した。つまりモータは、電圧信号を印加することで磁極が変化する複数の相のステータと、ステータの数に応じた相数の磁極を持つロータを備える。これに限らず、逆の構成（ロータ側が電磁コイルで、ステータ側が磁石）でも実施可能である。また、回転開始時に、停止時の位置に対応する位相から正弦波駆動で９０°分進めた位相に変更して回転を開始させる例を説明した。９０°という位相角の値は例示であって、これに代えて、電圧に対する電流遅れや、騒音などへの環境対応を加味した補正値をβとするとき、９０°＋β、または９０°−βを設定値として使用してもよい。
【符号の説明】
【００７９】
１００  モータ駆動ユニット
１０１  ステッピングモータ
１０２  出力軸
１０３，１０４  フォトインタラプタ
１０５  スリット回転板
１０６  コンパレータ
１０７  エンコーダ回路
１０８  ＣＰＵ
１０９  正弦波発生器
【図１】
0006525659.tif 000004
【図２】
0006525659.tif 000005
【図３】
0006525659.tif 000006
【図４】
0006525659.tif 000007
【図５】
0006525659.tif 000008
【図６】
0006525659.tif 000009
【図７】
0006525659.tif 000010
【図８】
0006525659.tif 000011
【図９】
0006525659.tif 000012
【図１０】
0006525659.tif 000013
【図１１】
0006525659.tif 000014
【図１２】
0006525659.tif 000015
【図１３】
0006525659.tif 000016
【図１４】
0006525659.tif 000017
【図１５】
0006525659.tif 000018
【図１６】
0006525659.tif 000019
【図１７】
0006525659.tif 000020
【図１８】
0006525659.tif 000021
【図１９】
0006525659.tif 000022
【図２０】
0006525659.tif 000023
【図２１】
0006525659.tif 000024
【図２２】
0006525659.tif 000025
【図２３】
0006525659.tif 000026