以下に、本発明の好ましい実施形態を、添付図面に基づいて詳細に説明する。本実施形態のモータ駆動装置は、撮像装置や光学ディスク装置、プリンタやプロジェクタ等の各種機器に適用可能である。モータ駆動装置によって駆動を制御されるモータと組み合わせてモータシステムを構成可能であり、撮像装置や光学ディスク装置、プリンタやプロジェクタ等の各種機器に適用可能である。例えば撮像装置に適用する場合、ズームレンズ、フォーカスレンズ、光学絞り、シャッタ、などの各種光学素子の駆動に用いることができる。
モータ駆動制御において、ロータの位置検出機構部の検出精度を高精度化する場合、駆動信号(例えば矩形波信号)の分解能を高くする方法がある。この場合には信号の周波数特性により、モータの高速回転時に十分な信号変化の検出が得られず位置を検出できなくなるという課題が発生し得る。またモータ制御上、モータ内の磁石極数やステータ数と位置検出器の検出波形の数に制約を設ける必要があり、コスト上昇や、機構部の設計上の制約、サイズの増大等の課題が発生し得る。本実施形態では、自由度の高い回転位置検出機構部の選択を可能にした上で、回転位置検出機構部により検出されるロータの回転位置に基づいて、モータに対して効率的かつ反応遅れの少ない駆動波形生成が可能なモータ駆動技術を説明する。なお、各実施例に共通する事項を説明した後で、実施例ごとに詳細な説明を行う。
図1は本実施形態のシステムの概要を説明するブロック図であり、駆動用の電気回路を含めたモータ駆動装置の構成を示す。ステッピングモータ101は、ロータ軸102にENC(エンコード用)磁石103を備える。ENC磁石103は、回転軸を中心とする円周上に発生する磁場が回転位置に応じて正弦波状の磁場を発生するように着磁されている。またステッピングモータ101はリセット機構121を備える。リセット機構121は、ロータ軸102の回転に応じて、特定の1か所において変化する信号を出力する構成となっている。この信号は、モータの回転位置の絶対値の基準を与えるための信号である。リセット機構121としては、具体的には、ロータ軸102がスクリュー軸となっており、スクリュー軸の回転に応じて並進移動する移動体にスリットが形成されている。そのスリットがフォトインタラプタを遮光することで、その出力信号が変化する。
Hall素子パッケージ104は、ENC磁石103の磁気検出部であり、複数のホール素子(Hall素子)を備え、ENC磁石103の回転による磁場変化を検出し出力することができる。例えば、Hall素子105および106はそれぞれの位置にて、ENC磁石103の回転による磁場の変化を検出し、検出信号をアンプ107へ出力する。Hall素子105,106はENC磁石103の中心位置から見た場合、中心位置から等距離に配置されており、2つのHall素子で検出される信号位相としては、90度の位相差となる。Hall素子105および106のそれぞれから出力される信号は、アナログ信号の位置検出信号である。図2を参照して具体例を説明する。
図2(A)はステッピングモータ101の外観例を示す斜視図である。ステッピングモータの101のロータ軸102には、短い円筒状のENC磁石103が設置されている。ENC磁石103の発生する磁場を検知可能な位置に、Hall素子パッケージ104が配置されている。ステッピングモータ101から配線部材213が外部に引き出されており、配線部材213は後述のモータドライバ113に接続される。
図2(B)はENC磁石103とHall素子105,106との位置関係を模式的に示す図である。ENC磁石103は対極数3(6極)の磁石であり、N極とS極の領域がそれぞれ3極であって、60度ごとの領域が着磁されている。Hall素子105,106はENC磁石103の中心位置から見た場合、中心位置から等距離に配置されている。中心位置に対するHall素子105,106の角度、つまり、2つのHall素子が中心位置に対して成す物理的な角度(物理角)が30度となる配置である。2つのHall素子で検出される信号位相としては、90度の位相差となる。
図1のアンプ107は、Hall素子105,106からそれぞれ入力される微弱な信号を増幅し、後段のAD変換回路108へ出力する。AD変換回路108はアンプ107から入力されたアナログ電圧信号(アナログ信号)をデジタル変換して数値化し、変換結果をデジタル数値信号(デジタル信号)として位置ENC回路109に出力する。Hall素子はアナログ位置検出信号を周期的に出力するため、AD変換回路108によるAD変換も周期的に行われる。
位置ENC回路109はモータの回転位置を検出する検出手段として機能し、AD変換回路108から入力される信号のエンコード処理を行う。つまり、位置ENC回路109はAD変換回路108から入力される位置検出信号に基づき、ArcTan(逆正接)演算を用いて回転位置を算出する。位置ENC回路109は、入力された2つの信号のオフセットおよびゲインの調整を行う処理手段と、調整後の信号から回転位置情報を取得する取得手段を備える。位置ENC回路109は、処理手段により、入力された検出信号のオフセット調整およびゲイン調整を行う。この調整は、検出信号のオフセットおよびゲインを同一にするように行われる。この調整はOPEN駆動でモータを回転させることによって2つの信号のピーク値とボトム値を検出し、その検出結果を用いて行われる。位置ENC回路109は、90度の位相差を持った2つの正弦波状の検出信号からTAN値(正接値)を生成した後でArcTAN演算(逆正接演算)を行い、回転角度情報を生成する。この回転角度情報は、ロータの回転量に比例したカウント値であり、回転角度情報を積分することで回転位置情報が生成される。生成された回転位置情報は駆動波形生成回路110に送られる。
駆動波形生成回路110はモータに対する駆動用波形を生成する。駆動波形生成回路110は、OPEN駆動とCLOSE駆動の切り替えを行う。OPEN駆動は予め設定された周波数で駆動用の位相の異なる正弦波信号を出力する駆動である。CLOSE駆動は位置ENC回路109と連動させた駆動波形を出力する駆動である。OPEN駆動とCLOSE駆動の切り替えはCPU(中央演算処理装置)111の指令にしたがって行われる。また、駆動波形生成回路110は、A相用コイル114、B相用コイル115に印可する駆動波形の位相カウント情報を決定し、PWM(パルス幅変調)発生器112に位相カウント情報に対応するPWM指令値を送る。
CPU111は駆動波形生成回路110に対して、OPEN駆動とCLOSE駆動の切り替えの指令を行い、OPEN駆動時の出力正弦波信号の周波数と振幅ゲイン値を設定する。またCPU111は、位置ENC回路109に対して位置カウント値の初期化設定等を行う。また、CPU111は駆動波形生成回路110の出力正弦波信号の周波数、振幅ゲイン値の設定、位置ENC回路109の位置カウント値の初期化設定などを行う。位置ENC回路109および駆動波形生成回路110による処理については、図3から図5を用いて後述する。
PWM(パルス幅変調)発生器112は駆動波形生成回路110から出力されるPWM指令値に応じて、モータドライバ113に対してPWM信号を出力する。PWM信号については図7を参照して後述する。
モータドライバ113は、PWM発生器112より出力される指令値に応じた増幅を行い、ステッピングモータ101のA相用コイル114、B相用コイル115に電圧を印加する。モータへの印加信号はPWM信号に応じた高周波電圧信号となるが、コイルに発生する電流値信号はコイルのL(インダクタンス)成分によりLPF(ローパスフィルタ)がかかった場合と同様になる。このことから、コイルには実効的に、図7で説明する正弦波信号形状の電圧が印加されるのと同様であるものとする。
ステッピングモータ101が備えるステータA+116、ステータA-117、はそれぞれ、A相用コイルの両端の発生する磁場を集中して放出する働きをもつ。ステータB+118、ステータB-119はそれぞれ、B相用コイルの両端の発生する磁場を集中して放出する働きをもつ。これによってロータ磁石120が回転する。図2(C)を参照して、ステータA+およびA-、ステータB+およびB-、ロータ磁石の配置関係を具体的に説明する。
図2(C)においてステータA+116、ステータA-117、ステータB+118、ステータB-119は、互いの物理角が18度毎の位置関係で配置される。ロータ磁石120の回転方向はCW方向またはCCW方向である。この例では、合計5組のステータ群が配置されている。ロータ磁石120はステータ群の中央に位置し、N極、S極がそれぞれ5極で、合計10極の磁極を持つ。駆動波形の正弦波が1波出力される毎に、ロータ磁石120は物理角で72度回転する。
次に位置ENC回路109、駆動波形生成回路110の処理を詳細に説明する。
図3は位置ENC回路109、駆動波形生成回路110の処理を詳細に示すブロック図である。Apos生成部301~Epos生成部307が位置ENC回路109に相当する。駆動波形位相決定部308~駆動用位相差設定部311が駆動波形生成回路110に相当する。
Hall素子105の出力信号を検出信号1と表記し、Hall素子106の出力信号を検出信号2と表記する。検出信号1および2はアンプ107を介してAD変換回路108へ入力され、AD変換された信号はApos生成部301が取得する。Apos生成部301は、ArcTan(逆正接)演算を用いて回転位置を算出する。前処理として、入力された2つの信号のオフセットおよびゲインの調整が行われる。つまり、2つの信号のオフセットおよびゲインを同一にする調整が行われる。この調整はOPEN駆動でモータを回転させることによって2つの信号のピーク値とボトム値を検出し、その結果を用いて行われる。調整後に、90度の位相差を持った2つの正弦波状信号で正接値を算出し、逆正接演算を行うと回転角度情報(Aposと記す)が生成される。この回転角度の値を積分した値を算出することで回転位置情報を生成することができる。検出信号1および2と回転位置情報との関係について、図5の例で説明する。
図1のHall素子105,106による検出信号とステッピングモータ101の回転位置との関係について、図5を用いて説明する。図5(A)および(B)は、それぞれのHall素子から検出された検出信号のゲインとオフセットを調整した後の信号を例示する。図5(A)に示す信号は正弦波状信号であり、図5(B)に示す信号は余弦波状信号である。位置ENC回路109は90度の位相差を持った2つの正弦波状信号から回転角度情報を取得し、回転角度情報を駆動波形生成回路110に出力する。回転角度情報が検出位置のカウント値として用いられる。このように、本実施形態では位置検出信号が正弦波として取得されるため、位置検出信号が矩形波として取得されるモータ駆動装置よりも任意のタイミングで位置を検出することができ、また分解能も高いため、モータの加減速性能を向上することができる。図5(C)は検出位置のカウント値(縦軸)とロータの回転量(横軸)の関係を表すグラフである。本実施形態では、2つのHall素子の信号が正弦波の1波長分出力されたときに1024カウント分の位置分解能で位置検出を行えるものとする。検出位置のカウント値は図3のApos生成部301の記憶領域に格納される。Apos生成部301が処理を終了すると、Bpos生成部302が処理を引き継ぐ。
図3のBpos生成部302は、CPU111から予めBposMax値設定部303を通じて設定されている上限値を最大値(BposMax値)とする位置信号に、Aposの値を変換したBposを生成する。BposMax値設定部303を通じて設定されるBposMax値は、モータがちょうど1回転したときにApos生成部301にて検出される位置カウントに相当する値として設定される。
図4(A)はAposを示し、図4(B)はBposを示す。図4に示す各グラフの横軸はロータの回転量を表す。Aposの値はロータの回転量に比例したカウント値である。またBposの値は、ゼロと上限値(最大値)との間で回転量に対して周期的に変化する鋸歯状波の信号値である。
Bpos生成部302によりBposが生成されると、図3のCpos生成部304に処理が引き継がれる。Cpos生成部304は、CPU111が予め変換比率設定部305を通じて設定した変換比率をBposの結果値に乗算し、演算結果の値をCposとして保持する。ここで設定される変換比率は、ロータ1回転分の検出位置カウント値を、ロータ1回転分の駆動波形カウント値に換算する比率であり、乗算数と右ビットシフト演算で実現される。右ビットシフト演算のシフト数は、駆動に必要なカウント変換精度に基づいて決定される。図4(C)にCposの例を示す。Cposの値は、ゼロと上限値との間で回転量に対して周期的に変化する鋸歯状波の信号値である。つまり、図4(B)に示されるBposの値は、図4(C)に示すように、モータ1回転に相当する駆動波形のカウント数に相当する値をMax値とする位置情報に変換される。Cpos生成部304がCposを生成すると、続いてDpos生成部306に処理が引き渡される。
図3のDpos生成部306は、Cposの値がモータ1回転分の駆動カウント量でオーバーフローとなっている箇所や、アンダーフローとなっている箇所を積算して、回転位置の積算量を算出する。算出により生成され位置情報をDposと表記する。図4(D)はDposの例を示す。Epos生成部307は、Dposに対して任意のオフセット値を持ったデータ(Eposと記す)を生成する。EposはCPU111が任意のタイミングで任意値に書き換え可能である。書き換えのタイミングで書き換え値とDposとの差分量がオフセット値としてメモリに記録される。図4(E)にEposの例を示す。図4(D)および(E)に示すように、Epos生成部307はDposの値に対し、記録されたオフセット値が常に付与された形のEposを生成する。
位置ENC回路109は、Apos生成部301~Epos生成部307によって、それぞれ信号生成処理を行う。ここで、BposからEposまでの処理を行わない場合に発生する課題について、図6を用いて説明する。図6に示す各グラフの横軸はロータの回転位相を表す。
図6(A)および(B)は2つの位置検出信号を表し、モータ1回転分の3周期に相当する回転位相を示す。本例では検出信号の正弦波1周期で4096分解能の位置カウント検出が可能であるとする。図6(C)は検出位置カウントを示す。位置検出信号の1周期ごとに、位置501で4096カウント、位置502で8192カウント、位置503で12288カウント、となる。図6(E)、(F)、(G)はそれぞれ、モータ1回転時にモータに対して出力すべき駆動波形のカウント値、A相に対する駆動波形、B相に対する駆動波形を示す。本例にて駆動波形の位相カウント値は、出力正弦波の1周期に対して1024の分解能とする。位置検出信号がちょうど3周期出力されたときに、駆動波形はちょうど5周期出力されなければならない。
算出される位置カウント値と出力される駆動波形カウント値とを同期させるため、まず小数点以下を切り捨てる方式を考える。モータ1回転に相当する検出位置カウント12288を5で割った2457.6の整数部分のみを取って同期させるものとする。この場合、図6(C)にて本来はモータの回転に応じて、点504、点505、点506、点507で示す位置、つまり検出位置カウントとしては小数点がなければ検出できない位置ごとに駆動波形が1周期ずつ出力されなければならない。図6(D)に示すように2457を最大値とするグラフ513で示すカウント値が検出位置カウントから生成され、1023/2457に相当する値を乗算する処理を行うことでグラフ514に示すカウント値が生成される。この場合、点508から512で示す位置(駆動波形が1周期出力される位置)と、理想とされる図6(C)に示す点504から507、503の位置とにズレが生じる。例えばロータが1回転したときに0.6×5=3カウントのズレを生じたとすると、回転に応じてズレ量が蓄積されていく。100回転したときにはカウントズレは300カウントにもなり、検出位置と駆動波形との同期という目的を達せられない事態となる。
検出位置の小数点以下の端数を切り捨てた場合の課題を説明したが、図4(A)のAposに対して、精度のよい乗算器、除算器を用いることにより、複雑な処理を行うことなく同期精度を保つ方法もある。しかしAposのビット数が実用上大きく、ビット数の大きい値に対して1ビットの精度まで求めた比率計算を行って同期処理を行うと別の課題が発生し得る。つまり、回路規模の増加、計算処理時間の増加による他ブロックとの同期性の低下といった課題がある。そこで本実施形態では、BposからEposの生成処理を行うことで、処理時間の短縮と検出位置精度、同期精度の保持を実現可能である。
図3のEpos生成部307により生成されるEposの情報は、駆動波形位相決定部308に入力される。駆動波形位相決定部308は、最終的にA相用コイル114、B相用コイル115に印加する駆動波形の位相カウント情報を決定する。駆動波形位相決定部308は、図1のPWM発生器112に対し、位相カウントに相当するPWM値を出力する。駆動波形位相決定部308は、OPEN駆動用カウント部309の指令により、位相カウント情報を出力するOPEN駆動と、Eposの値に基づいて位相カウント情報を出力する位置連動駆動とを切り替えることができる。OPEN駆動と位置連動駆動は、CPU111が駆動波形位相決定部308に対して設定を行うことで切り替えられる。
OPEN駆動を行う場合、CPU111はOPEN駆動用カウント部309に駆動波形の周波数を指令し、駆動波形位相決定部308に駆動波形の振幅ゲインを設定する。これにより、駆動波形位相決定部308は所望周波数、所望振幅の駆動波形を出力する。一方、位置連動駆動を行う場合、Eposの下位10ビット値に対して駆動波形位相決定部308は所定のオフセット値を付与した値を算出する。所定のオフセット値は以下の通りである。
・CPU111が定常位相差設定部310を通じて設定した第1のオフセット値(STC_OFS値)
・CPU111が駆動用位相差設定部311を通じて設定した第2のオフセット値(PHS_OFS値)。
これらのオフセットを付与した値が算出されて駆動波形位相のカウント値が取得される。このカウント値に相当する位相の出力値が駆動波形の出力値として選択される。この関係を図4(F)、(G)の各グラフで示す。図4(F)はEposの下位10ビット値と回転量との関係を示す。図4(G)はオフセットを付与した後の駆動波形を示す。Eposに対してSTC_OFS、PHS_OFSの両方が加算されてオフセット値が付与される。後述するように、STC_OFSはロータの検出位置カウントと駆動波形カウントの安定位置を管理する役割をもつ。PHS_OFSはトルク発生のための位相差管理とは別の役割が割り当てられている。
駆動波形生成回路110は、図3の駆動波形位相決定部308~駆動用位相差設定部311によって駆動波形の位相を決定し、駆動波形に対応するPWM指令値をPWM発生器112へ出力する。PWM発生器112は駆動波形生成回路110から出力されるPWM指令値に応じてPWM信号をモータドライバ113に出力する。
図7を参照して、正弦波位置カウント値と、出力されるPWM値(Duty%値)との関係を説明する。図7(A)、(B)ともに横軸はテーブル番号を表し、電圧波形の位相に対応しており、図4(G)に示す駆動波形値と同様の分解能とする。縦軸はPWM信号のDuty%値である。図7(A)では、横軸がプラスカウントされていてA相駆動電圧波形に対してB相駆動電圧波形が90度先行し、モータがCW方向に回転する場合を示している。逆に図7(B)では、横軸がマイナスカウントされていてB相駆動電圧波形に対してA相駆動電圧波形が90度先行し、モータがCCW方向に回転する場合を示している。縦軸のDuty%値はゲイン設定値に応じて増減する。本実施形態ではモータの回転運動に支障を来すことのない適切なゲイン値が設定されているものとする。
[第1実施例]
図8および図9は本実施形態における処理の流れを示すフローチャートである。CPU111は所定のプログラムにしたがって以下の制御を行う。駆動シーケンスが開始すると図8のS701の処理に進む。
S701では、位置連動駆動をオフする設定処理が実行される。つまり、OPEN駆動が働く設定となる。続くS702にてCPU111はリセット機構121が出力しているリセット信号の検出状態を判定する。リセット信号は、ロータ軸102のスクリュー機構に取り付けられた被検知部材の移動に伴い、被検知部材が予め設定された位置を通過するときにHighまたはLowに変化する2値信号である。モータ駆動装置がステッピングモータ101にB相先行の駆動波形を印加してCW回転をするときに被検知部材が進行する側が、リセット信号としてHighレベルを出力する側である。モータ駆動装置がステッピングモータ101にA相先行の駆動波形を印加してCCW回転をするときに被検知部材が進行する側が、リセット信号としてLowレベルを出力する側である。リセット信号が変化する位置を検出して絶対位置を確定するために、S702の判定処理が行われる。
S702にてリセット信号がLowレベルであればS703に進み、CPU111はB相先行波形の駆動波発生をOPEN駆動用カウント部309(図3)に指令し、モータを回転させる制御を行う。他方、S702にてリセット信号がHighレベルであればS704に進み、CPU111はA相先行波形の駆動波発生をOPEN駆動用カウント部309に指令し、モータを回転させる制御を行う。S703またはS704の処理の後、S705の処理に進む。
S705でCPU111はリセット信号の状態が変化したかどうかを判定する。CPU111はリセット信号を監視し、リセット信号に変化が起きた場合、S706の処理に進み、リセット信号に変化がない場合には監視を継続してS705の判定処理を繰り返す。
S706でCPU111は、駆動波形の進行を停止させる指令をOPEN駆動用カウント部309に出力する。このときの停止位置は、位置カウントの基準位置となる。次のS707では、検出位置の最終的な位置管理を行うレジスタの値が初期化され、Eposにゼロを書き込む処理が行われる。
続くS708では、ロータの停止状態で駆動波形位相決定部308に保持されている駆動波形の位相カウント値から、Eposの下位10ビット値を引いた値をSTC_OFSとして書き込む処理が実行される。CPU111が定常位相差設定部310を通じて設定するSTC_OFSの値は、位置連動機能をONにした瞬間に、駆動波形の出力位相がずれないようにするための値である。S708の時点では、OPEN駆動波形の結果、ある駆動波形位相を出力している状態にしたがってロータ磁石120が安定に停止している。位置連動駆動がONに設定された後の駆動波形位相は、Eposの下10ビットの値に基づいて生成される。位置連動駆動がONに設定された直後に、Eposの下位10ビットの値にSTC_OFSの値が加算される。加算後の値が駆動波形の位相カウント値として出力されるので、駆動波形の位相カウント値は位置連動駆動のONとOFFの前後で値が変わらないことが保証される。次にS709の処理に進む。
S709でCPU111は位置連動駆動をONに設定する。このとき、オフセットPHS_OFSにはゼロが設定されているものとする。位置連動駆動のON設定の直後は前述の通り、駆動波形の出力位相は変化しない。図9のS710において位置連動機能を利用した回転トルク発生動作が行われ、CW方向へのトルク生成処理が実行される。具体的にはPHS_OFSに駆動波形位相で90度に相当する256という値が設定される。このときにモータに発生する現象については、図10から図12を用いて後述する。
S711でCPU111は、ロータの検出位置が減速開始位置に等しいかまたは減速開始位置を超えたかどうかを判定する。減速開始位置については、前もってモータおよび機構部の駆動特性を調べておき、所望の減速トルクをかけたときに十分な減速効果が得られるように、必要な回転量分だけ目標停止位置から手前の位置に設定される。ロータの検出位置が減速開始位置に等しいかまたは当該位置を超えた場合、S712に進む。ロータの検出位置が減速開始位置に到達していない場合にはS711の判定処理が繰り返し行われる。
S712では、CCW方向へのトルク生成処理が実行される。モータにCCW方向の回転トルク、すなわちCW回転時には減速トルクがかかるよう、-256の値がPHS_OFSに設定される。その詳細については図13および図14を用いて後述する。S713でCPU111は検出位置カウント値、つまりロータの検出位置が減速終了位置に等しいか、または減速終了位置を超えたかどうかを判定する。減速終了位置については、前もってモータおよび機構部の駆動特性を調べておき、十分な減速が行われていて、かつ減速終了後に慣性で目標到達位置まで到達が可能な、目標停止位置より手前の位置に設定される。ロータの検出位置が減速終了位置に等しいか、または当該位置を超えた場合、S714に進む。ロータの検出位置が減速終了位置に到達していない場合には監視が継続し、S713の判定処理が繰り返し行われる。
S714でCPU111はCCW方向へのトルク生成処理を行う。具体的にはPHS_OFSにゼロが設定される。次のS715でCPU111は検出位置カウントの値、つまりロータの検出位置が目標停止位置に等しいか、または目標停止位置を超えたかどうかを判定する。ロータの検出位置が目標停止位置に到達したことが判定された場合、S716に移行する。またS715でロータの検出位置が目標停止位置に到達していないと判定された場合には監視が継続し、S715の判定処理が繰り返し行われる。S716にてCPU111は位置連動駆動をオフに設定し、駆動波形の位相を固定する。これにより、モータは回転駆動が停止し、駆動シーケンスを終了する。
次に図10から図12を参照して、S709、S710の処理について具体的に説明する。図10(A)は、図2(C)に示されるステータ群の配置を横一列に並べた場合の模式図である。図10(B)はステータ群に対してモータの周方向にどのような電圧印加を行っているかを模式的に示した図である。また図10(C)はその電圧印加によってステータ群が発生させている、周方向の位置に対応した磁場の強さを示す図である。図10(D)は図2(C)で示されるロータ磁石120の着磁位相を示す図である。図10(B)から(D)において横軸は位置を表す。
図10に示す状態は、図8のS709の状態を示している。このとき、ステータ群が発生させている磁場のNS磁極位相と、ロータ磁石120のNS磁極位相とが、互いの引力により安定に停止する関係にある。これに対して、図9のS710においてPHS_OFSに256が設定された状態を、図11に示す。図11(A)から(D)は、図10(A)から(D)にそれぞれ対応している。図11に示す状態では、ステータ群が発生させている磁場が図10の状態に比べて90度進んだ位置関係にある。このことにより、図11(D)で示されるロータ磁石120には右側に引っ張られる引力、すなわちCW方向の回転トルク(正転トルク)が発生する。これと同様の動きを、図12で説明する。図12(A)から(G)に示す各グラフの横軸を時間軸とする。
図12(A)および(B)は、複数のHallセンサから出力されて調整された検出位置信号の時間変化をそれぞれ示す。図12(C)のグラフはEposの挙動を示し、図12(D)のグラフはEposの下位10ビット値の変化を示す。図12(E)のグラフは駆動波形の位相カウント値の挙動を示す。また、図12(F)および(G)はそれぞれ、駆動波形の位相カウント値に基づいてステータに発生する磁場の変化を示す。図12(F)はステータA+116に発生する駆動波形磁場を表し、図12(G)はステータB+118に発生する駆動波形磁場を表している。
図12に示す時刻t1において、PHS_OFSに256が設定されたとして、その瞬間にCW方向のトルクが発生してロータが回転する。ロータの回転に伴ってその検出位置を示すEposの値が進み、そのことにより駆動波形の位相カウント値も進む。このループ処理によって、図11(C)および(D)で示す2つの波形の位相差は常に維持され、ロータに一定の回転トルクがかかり続けることになる。その結果、ロータに加速がかかり、モータの回転速度が上昇していく。
図13は、図11と図12で説明した動作後の挙動を示す図である。ロータの加速後に一定速度に移行し、ロータの減速を経て空走へと遷移する状態変化を説明する。図13(A)および(B)は複数のHallセンサから出力されて調整された検出位置信号の時間変化をそれぞれ示す。図13(C)のグラフはEposの挙動を示し、図13(D)のグラフは回転数(回転速度)の挙動を示す。図13(E)のグラフはEposの下位10ビット値を示し、図13(F)のグラフは駆動波形の位相カウント値の挙動を示す。また図13(G)および(H)はそれぞれ、駆動波形の位相カウント値に基づいて、ステータA+116に発生する駆動波形磁場と、ステータB+118に発生する駆動波形磁場を表している。
図13の時刻t2に至るまでの間、モータは加速を続け、その後の時刻t3まで一定速度の状態になる。図11で説明した原理の発生トルクは回転数が上がるにつれて電圧から電流に変換されるときのコイルの周波数特性遅れによって減衰し、また逆起電力の影響が大きくなる。このことにより発生トルクと逆起電力、機械的負荷とが、ある回転数でつり合い状態になるため、ロータの回転速度が一定速度となる。
図13の時刻t3から時刻t4までの期間にはロータが減速される。図14を参照して、図9のS712の状態を説明する。図14は基本的に図10、図11に対応する図である。この状態では、図10に示す安定停止状態に比べて、ステータ群が発生している磁場の位相が90度遅れた位相になっている。そのため、図14(D)に示すロータ磁石120を左方向に引っ張る引力、すなわちCCW方向の回転トルクが発生する。つまり、逆回転トルクをブレーキトルクとして利用することで、速やかな減速を行うことができる。なお、図13のおける時刻t3での挙動が、図9のS712における挙動に相当する。時刻t3のタイミングで図13(F)に示す駆動波形の位相カウント値は、図13(E)に示すEposの下10ビット値に対して256カウント分進んでいた状態から、256カウント分遅れた状態へと移行している。
図9のS714でPHS_OFSにゼロを設定する処理が行われ、この状態は図13にて時刻t4での状態に相当する。このタイミングで、図13(F)で示される駆動波形位相カウント値が、図13(E)で示すEposの下位10ビット値に対して差分を持たない状態へ移行している。続くS715で検出位置が目標停止位置(図13(C):TP)に到達した場合、S716に移行する。このタイミングは図13の時刻t5に相当する。
本実施形態によれば、回転位置検出部によるロータの検出位置に基づいてモータに対して効率的な駆動波形を生成する処理上で反応遅れの少ない駆動波形を生成することができる。
[第2実施例]
次に、図15および図16を参照して、第2実施例を説明する。本実施形態では、オフセットPHS_OFSに設定する値によって、目標速度への追従制御を行う構成および処理を説明する。第1実施例と同様の構成および動作については説明を省略し、主に相違点を説明する。
図15はPHS_OFSに設定する検出位置カウントと駆動波形との位相差量と、モータの定常回転速度との関係を示す図である。横軸は位相差量を表し、縦軸は回転数を表す。図15のグラフは、位相差量を大きくするにつれて、右肩上がりで回転数が上がる特性を示している。線形関係範囲では位相差量に比例して回転数が上昇するが、線形関係範囲から外れて位相差量が増加すると、あるところ(最高回転数)で頭打ちになり、その後に回転数が下がっていく特性を示す。図示の線形関係範囲のように、位相差と回転数との関係を線形関係と見なせる範囲内においては、位相差量を制御量として一般的な速度制御が可能である。図16のフローチャートを参照して、駆動シーケンスを具体的に説明する。駆動シーケンスの前半で実行される処理は、図8および図9のS701~S710の処理と同様であるので、それらの説明は割愛する。S710でロータに加速トルクがかかり、回転運動を始めた後、図16のS1411の処理に進む。
S1411でCPU111は、検出位置カウント値の微分演算やフィルタ処理等により検出速度値を算出する。算出された検出速度値と、あらかじめ設定されている目標速度との速度差分値が算出される。CPU111は、速度差分値を偏差量として目標速度への追従を目的とする制御を行う制御器として機能するように設計されている。つまりCPU111は所定のプログラムを実行することにより、制御器の機能を実現し、偏差量から位相差制御量を算出して速度追従処理を行う。このような制御器として、一般的なP(比例)I(積分)D(微分)制御器や位相補償フィルタ等による制御器がある。その他には、古典制御理論外の先進的な制御理論に基づく制御器を使用してもよい。なお、CPU111に代えて、あらかじめ設計された制御器をハードウェアとして搭載したモータ駆動装置への適用も可能である。
S1412でCPU111は、ロータの検出位置が減速開始位置に等しいか、または減速開始位置を超えたかどうかを判定する。ロータの検出位置が減速開始位置に等しいか、または当該位置を超えた場合、S1413の処理に進む。一方、ロータの検出位置が減速開始位置に到達していない場合にはS1411に戻り、速度制御処理を継続する。
これ以降、図16のS1413~S1417の処理はそれぞれ、第1実施例にて図9で説明したS712~S716の各処理と同様であるので、それらの詳細の説明を割愛する。また本実施形態では、位相差量とモータの定常回転速度との関係を示すデータを用いて、位相差設定部を介して駆動用位相差を設定する処理を説明した。これに限らず、位相差量と発生トルクとの関係を示すデータを用いて、位相差設定部を介して駆動用位相差を設定する処理を行ってもよい。この場合、PHS_OFSに設定する検出位置カウントと駆動波形との位相差量と、モータの発生トルクとの関係を示すデータが予めメモリに記憶されており、CPU111は所望の発生トルクに対応する位相差量を設定する。
本実施形態によれば、第1実施例の効果に加えて、モータの目標速度と検出速度との差分量に応じて、位相差量を制御量として速度制御を行うことができる。
以上に説明した実施形態では、ロータの回転検出位置に基づき、モータに対して効率的かつ反応遅れの少ない駆動波形生成が可能なモータ駆動装置を実現できる。前記実施例の位置検出器は、複数のホールセンサと回転磁石を用いた構成であるが、回転位置の検出を十分に高精度に行える構成であれば、他のセンサ機構を用いても実施可能である。また前記実施例では10極の一般的なクローポール型ステッピングモータの構成を前提に説明したが、これに限らず、ロータ側が永久磁石であって、ステータ側がコイル・ステータであれば、他のモータでも実施可能である。位置検出用の回転磁石(6極の磁石)は例示であり、図3に示す各設定部303、305、310、311の設定値を変更して対応することで、検出器用磁石として任意の極数の磁石を使用可能である。
[第3実施例]
第1、第2実施例のように、位置検出信号に基づいて駆動波形を生成すると、位置検出信号の分解能(検出周期)によって、停止精度が低下することがある。そこで、本実施例では、位置検出信号に基づいて駆動波形を生成するモータ駆動装置において、停止精度の低下を軽減する例について説明をする。
図17を参照して、正弦波位置カウント値と、出力されるPWM値(Duty%値)との関係を第1実施形態と異なる点のみ説明する。図7において、縦軸のDuty%値は、同期制御手段201、もしくは非同期制御手段203に設定されたGain値に応じて増減するものとするが、本実施例ではモータの回転運動に支障をきたさない適切な値が設定されているものとする。また、同期制御手段201による同期制御を行うことで、回転位置検出機構により検出した回転位置に基づいて、ステッピングモータに対して効率的な駆動波形を反応遅れが少なく生成することができる。しかしながら、同期制御においては、駆動波形位相のカウント値の分解能が位置検出信号の分解能によって決定される。よって、例えば位置検出信号の分解能が駆動波形分解能に対して低い場合、駆動波形位相のカウント値が実際に可能な分解能を取れない可能性がある。
図17は駆動波形生成回路110の内部構成を示した図である。駆動波形生成回路110は、同期制御手段201、位相差設定手段205、非同期制御手段203、駆動方式切り替え手段206、駆動波形位相決定手段207を備える。また、後述する同期制御において、位置ENC回路が備えるモータ位置取得手段204はモータのロータが回転した回数を駆動方式切り替え手段206に出力する。
駆動波形生成回路110は、同期制御手段201、非同期制御手段203の2つの制御手段をもち、駆動方式切り替え手段206によりいずれの制御手段による制御で駆動波形を生成するかを切り替える。これにより、同期制御と非同期制御とを切り替えることができる。
同期制御手段201は、位置ENC回路109から出力される回転位置情報に基づいて駆動用の正弦波信号を生成する同期制御を行う制御手段である。具体的には位置ENC回路109によって生成された回転位置情報を、モータが一回転したときに検出される回転位置カウントに相当される値に変換する処理を行う。例えば、エンコーダの1周の位置カウント精度が12ビット精度、モータの1周の回転位置カウント精度が10ビット精度である場合、エンコーダの位置カウント精度の上位10ビットをモータの位置カウントとして扱うため、12ビットを10ビットに変換する。この変換処理により取得された回転位置カウント値をカウントすることで、ロータが何回転したかが分かる。
非同期制御手段203は、CPU111によって設定された周波数に基づいて駆動用の正弦波信号を生成する非同期制御を行う制御手段である。この制御は、位置ENC回路109とは非同期の制御である。本制御においては、CPU111が駆動波形の周波数を指令し、駆動波形の振幅ゲインを設定することで、所望振幅の駆動波形を出力する。
位相差設定手段205は、モータの回転位置と駆動波形との間の位相差を設定する手段であり、同期制御手段201で生成されたモータの回転位置カウント情報に対して、設定されたオフセット値を加算、減算してする。この値が駆動波形位相のカウント値となり、このカウント値に相当する位相の出力値が駆動波形の出力値として選択される。
モータ位置取得手段204は、同期制御手段201によって生成されたモータの回転位置カウントを受け取り、モータが何回転しているかを取得する。モータの回転位置カウント情報がどのように変化するかを監視することで、周回情報の加算と減算を行い、何周目かをカウントする。カウントして取得したモータの位置情報は、保持するとともに駆動方式切り替え手段206に出力する。
駆動方式切り替え手段206は、同期制御手段201と非同期制御手段203のどちらで制御するかを切り替える。これらの切り替えは例えばCPU111の指令により行うことが可能である。
駆動波形位相決定手段207はモータの回転位置情報と正弦波の値が紐づけられているテーブルを有し、駆動波形の位相カウント情報を決定し、決定した位相カウントに対応するPWM指令値をPWM発生器112に送る。PWM発生器112は受け取ったPWM指令値に応じて、モータドライバ113にPWM信号を出力する。
回転位置書き換え手段208は、モータの回転位置をCPU111の指示に従って書き換える。回転位置書き換え手段208は、リセット機構121によるリセット動作時に、リセット機構121からの信号の変化タイミングを検出後、その検出箇所を基準位置としてモータの回転位置を書き換える。また回転位置書き換え手段208はリセット機構121からの信号の変化タイミング以外でも、回転位置を書き換えてもよい。例えば脱調により、駆動回路のモータの駆動波形位相と、ロータ回転位相が異なってしまった場合、脱調後にモータの駆動波形位相と、ロータ回転位相を訂正するためにも使用される。
本実施形態では、位置検出信号の分解能は、AD変換回路による位置検出信号のAD変換周期により決定されるものとする。AD変換回路108のAD変換の周期が駆動波形の位相カウント値の分解能より大きい場合の正弦波駆動波形と位相カウント値に基づくPWM信号との関係を図18に示す。
図18(A)、(B)ともに横軸はテーブル番号を表し、縦軸はPWM信号のDuty%値を表す。図17でも説明したように本実施形態では検出信号の正弦波1周で1024分解能の駆動波形の制御が可能であるとする。図18(A)は横軸がプラスカウントされてA相駆動電圧波形に対してB相駆動電圧波形が90度先行し、モータがCW方向に回転する場合を示している。図18(B)は横軸がマイナスカウントされてB相駆動電圧波形に対してA相駆動電圧波形が90度先行し、モータがCCW方向に回転する場合を示している。縦軸の%値は、同期制御手段201、もしくは非同期制御手段203に設定されたGain値に応じて増減するものとするが、本実施形態ではモータの回転運動に支障をきたさない適切な値が設定されているものとする。本実施形態では、ADの変換周期は、駆動波形の周期の1/26であるとする。図17が、位相カウント分解能で駆動波形を制御したものであるのに対し、図18がAD変換の周期で駆動波形を制御したものである。このように、正弦波状の駆動波形はAD変換の周期によって制限され、ステップ状に変化する。
ここでモータを停止させる場合に、モータは位相カウント分解能の精度でずれなく目標停止位置に停止させたい。しかし、図5に示すようにADの変換周期が駆動波形の位相カウント分解能より十分早くない場合その精度での停止は難しい。例えばADの変換周期が駆動波形の周期の1/26であるとすると、AD変換周期内における位相カウントの変化は1024÷26≒ 39.4カウントとなるためである。
AD変換回路108のAD変換周期が、駆動波形の位相カウント分解能より十分早くなるところまでモータの減速を行ってから停止させることで、本課題による影響を軽減することが可能である。しかしその場合にはモータの停止までにかかる時間が長くなってしまうという問題が発生する。またAD変換回路108の変換周期を短くすることも考えられるが、同期制御手段201の制御をさせるために、本来の位置検出で必要な変換周期以上のAD変換回路を用いることは回路規模やコストの増加につながる。またAD変換の変換周期が十分になったとしても、AD変換時のノイズや精度によっては、停止時にわずかな位相カウントの誤差が発生してしまい、その誤差によって停止位置がずれてしまう恐れがある。
このように同期制御手段201の制御においては、モータの停止精度が位置検出間隔の制限を受ける。本実施形態のように、位置検出の間隔がAD変換回路108によるAD変換間隔によって決まる場合は、モータの停止精度はAD変換回路108のAD変換の性能によって決定されてしまう。よって、AD変換周期が駆動波形の位相カウント分解能より十分早くない場合(図18のようになる場合)、AD変換周期が駆動波形の位相カウント分解能より十分早い場合よりもモータの停止精度が低下してしまうことがあった。
そこで、本実施形態では、同期制御手段201による同期制御と、非同期制御手段203による非同期制御とを好適に切り替える。これにより、AD変換周期が駆動波形の位相カウント分解能より十分早くない場合であっても、正弦波状の位置検出信号と駆動電圧とを用いてステッピングモータを駆動する駆動装置の停止精度低下を軽減する。
図19は本実施形態における処理の流れを示すフローチャートである。CPU111は所定のプログラムにしたがって以下で説明する図19に示した制御を行う。なお、図19のステップS402およびS405は、図8のS702およびS705の処理と同様であるので、それらの説明は割愛する。
駆動シーケンスが開始するとS401の処理に進む。ステップS401では、まず非同期制御手段203の制御設定とする、つまり、非同期制御をオンにする。
ステップS402においてリセット信号がLowレベルであればステップS403に進み、リセット信号がHighレベルであればS404に進む。S403で非同期制御手段203はB相先行波形の駆動波発生を指令し、モータを回転させる制御を行う。一方、ステップS404では、非同期制御手段203はA相先行波形の駆動波発生を指令し、モータを回転させる制御を行う。S403またはS404の処理後、S405の処理に進む。
続くステップS405でリセット信号に変化が起来た場合はステップS406に進み、非同期制御手段203は駆動波形の進行を停止させる指令を出す。このときの停止位置は、位置カウントの基準位置となる。
次のS407では、回転位置書き換え手段208は、モータ位置取得手段204が保持しているモータの回転位置情報を基準位置に書き換える処理を行う。このとき、モータの回転位置情報において、周回情報(何周したか)は書き換えるが、1周のどの回転位置にいるかの情報(以下、1周内の位置情報)は書き換えない。1周内の位置情報は、ゼロと上限値との間(0~360°)で回転量に対して周期的に変化する鋸歯状波の信号値である。
続くステップS408では同期制御手段201の制御設定とする、つまり、同期制御をオンにする。この時、位相差設定手段205には0が設定されているものとし、同期制御手段201に制御方式を切り替えた直後は駆動波形の出力位相は変化しない。
ステップS409において同期制御手段201を用いたCW方向への回転トルク(正転トルク)発生動作を行う。具体的には、位相差設定手段205に駆動波形位相で90度に相当する値(本実施形態では256)を設定する。
設定された瞬間にCW方向のトルクが発生してモータが回転する。モータが回転することで位置ENC回路109の位置情報が進み、そのことにより同期制御手段201の正弦波位置カウント値も進む。このループ処理によって、波形の位相差は常に維持され、一定の回転トルクがかかり続けることになる。結果、加速がかかり、モータの速度は上昇していく。そして、ある時刻で定速状態になる。これは発生トルクが回転数上がるにつれて発生トルクと逆起電力とメカ負荷とがある回転数でつり合い状態になるためである。
ステップS410では、ロータの検出位置が減速開始位置を超えたかどうかを判定する。減速開始位置を超えたと判定された場合はステップS411に進み、減速制御を開始する。またロータの検出位置が減速開始位置未満であると判定された場合にはS410の判定処理が繰り返される。減速開始位置は、事前にモータ及び機構部の駆動特性を調べておき、所望の減速トルクをかけた時に十分な減速効果を得るために必要な回転量分だけ目標停止位置から手前の位置に設定される。
ステップS411では、モータにCCW方向の回転トルク、すなわちCW回転時にはブレーキとなるトルクがかかるよう、位相差設定手段205に駆動波形位相で-90度に相当する値(本実施形態では-256)を設定する。これによってCCW方向の回転トルクが発生する。この逆回転トルクをブレーキトルクとして利用し、速やかな減速を図る。
続くステップS412では、ロータの検出位置が減速終了位置を超えたかどうかを判定する。減速終了位置を超えたと判定された場合はステップS413に進み、減速制御を終了する。またロータの検出位置が減速終了位置未満である場合にはS412の判定処理が繰り返される。減速終了位置は、目標停止位置より閾値分手前の位置を設定しているものとする。言い換えると、ステップS412は、検出位置に基づいて、ロータの検出位置と目標停止位置との差が閾値以下であるかどうかを判定する工程である。この閾値は、ステップS413で同期制御から非同期制御へと切り替わる直前の同期制御中に、回転位置の検出間隔内(本実施例の場合、AD変換周期内)で、モータが回転する回転量よりも大きい値とすることで、停止精度の低下を軽減することができる。言い換えると、図5のように駆動波形が階段状の場合、目標停止位置と減速終了位置とが異なるPWMDUTY値をとれるようにしておくことで、停止精度の低下を軽減することができる。モータの回転量として、位置検出手段による位置検出の位相カウント量を用いることもできる。
ステップS413では、制御手段を非同期制御手段203の制御設定へと切り替え、非同期制御による停止制御を開始する。これにより、停止精度がA/D変換周期の影響を受けない。
続くステップS414では非同期制御手段203の制御により、目標停止位置までCPU111によって設定した所定の速度で制御し、目標位置で駆動波形の位相を固定する。このことによりモータは回転駆動を停止する。
以上の実施例の構成、処理を実施することにより、同期制御手段によりモータに対して反応遅れの少ない駆動波形生成が可能で、かつ、停止時に好適に非同期制御手段に切り替えることで十分な停止精度を維持したモータ駆動装置を実現することができる。
[第4実施例]
本実施例では、AD変換回路108のAD変換周期が動的に切り替わるモータ駆動装置の例について説明する。本実施例は、AD変換周期を取得するAD変換周期取得手段と、AD変換周期にあわせて減速終了位置と目標停止位置との距離を設定する閾値設定手段を備える点が第3実施例と異なる。第3実施例と同様の点については説明を省略する。
図20は本実施例における駆動波形生成回路の内部構成を示した図である。本実施例の駆動波形生成回路は、第3実施例の駆動波形生成回路に加え、AD変換周期取得手段601とモータ速度取得手段602とを備える。同期制御手段201~回転位置書き換え手段208に関しては、図17と同様であるため説明を省略する。
AD変換周期取得手段601はAD変換回路108による位置検出信号のAD変換周期の情報を取得する取得部である。本実施例においては、AD変換周期はCPU111の指示によって、とある範囲内で変更することが可能であるものとする。AD変換回路は位置ENC回路109のアナログ値取得のためだけでなく、他のアナログ値の取得にも使われることが一般的である。AD変換回路の外部にセレクタを用意し、順番にAD変換を行うことで、AD変換回路の数を削減している。そのため、例えば他のアナログ値取得を優先するような場合、Hall素子パッケージ104から出力される位置検出信号のAD変換周期としてみると、変換周期が遅くなる場合が考えられる。AD変換周期取得手段601は、このHall素子パッケージ104から出力される位置検出信号に対するAD変換周期を取得する。
モータ速度取得手段602は、モータの回転速度を取得する回路である。モータ速度取得手段602は、モータ位置取得手段204から出力される位置情報と、AD変換周期取得手段601のAD変換を用いて、回転速度=AD変換の周期間で進んだ位相カウントの変化量/AD変換の周期として取得することが可能である。
図21は本実施例における処理の流れを示すフローチャートである。図19の示すフローチャートの処理と並行して、図21に示すAD変換周期の監視フローを行う。
ステップS801では、AD変換周期取得手段601により取得される位置検出信号のAD変換周期が変化したか否かを判定する。位置検出信号のAD変換周期が変化したと判定されると、ステップ802へ進み、変化していないと判定されたらステップS801を繰り返すことで、位置検出信号のAD変換周期の変化を監視し続ける。位置検出信号のAD変換周期の変化は、図19のフローチャートのどのタイミングでも起こりうるものとし、ステップS801の判定によりAD変換周期の変化が発生したと判定された場合、図21のフローを優先して実施後、図19のフローに戻り順次処理を行う。ステップS801でAD変換周期の変化を検出したときは割り込みなどでCPU111へと通知することで、図19の処理中であっても図の処理を優先して実施することが可能である。尚、モータの駆動自体は図19のフローに従って行い続けてもよい。例えば、ステップS409によりモータをCW方向に駆動している最中(S410でNo判定を繰り返している最中)に図21の処理を割り込ませる場合、モータはCW方向に駆動させたまま図21の処理を行ってもよい。
ステップS802では、モータの現在の駆動状態を確認する。これはステップS801でAD変換周期が変化したタイミングが図19のどのフローであったかを確認することを示している。モータが停止動作中である場合(すなわち図19のフローにおいて、S410でYESと判定された後~S412でYESと判定される前であった場合)はステップS703に進む。モータが現在停止している、もしくは停止動作以外の動作中であればステップS806へと進む。
ステップ803では、AD変換周期が短くなったのか長くなったのかを判定する。AD変換周期が長く(AD変換の間隔が長く)なった場合、ステップS804に進み、非同期制御へと即時切り替える。そして非同期制御手段203の制御により、目標停止位置までCPU111によって設定した所定の速度で制御し、目標位置で駆動波形の位相を固定する。このことによりモータは回転駆動を停止する。このステップは、図19のステップS413~S414に対応する。ステップS704のあと処理は終了する。
またステップ803において、AD変換周期が長くなっていない、つまり、短くなったと判定された場合には、ステップS805に進み、図19のフローの、図21のフローに移行する前に実施していたステップに戻り、停止動作を行う。つまり、ステップS411により減速処理を行っており、ステップS412の判定を繰り返しているところで図21のフローに移行した場合は、減速処理とステップS412の判定へ戻る。
ステップS802で停止動作中ではないと判定されてステップS806に進むと、ステップS803と同様にAD変換周期が短くなったのか長くなったのかを判定する。AD変換周期が長くなった場合、ステップS807に進み、現在設定されているよりも大きな閾値を設定することで、減速終了位置を停止目標位置から遠ざける。閾値は、減速終了時に非同期制御へと切り替わる直前に取得された駆動波形の速度情報とAD変換周期とから、AD変換周期内のモータの回転量を算出し、この回転量よりも減速終了位置と、停止目標位置の間隔が長くなるように設定される。駆動波形の速度情報はモータ速度取得手段602により取得するが、AD変換周期内のモータの回転量が分かっていれば、駆動波形の速度情報とAD変換周期からAD変換周期内のモータの回転量を算出する必要はない。
一方、AD変換周期が長くなっていない、つまり、短くなった場合、ステップS808に進み、現在設定されているよりも小さな閾値を設定することで、減速終了位置を停止目標位置に近づける。減速終了位置の算出方法はステップS807の場合と同様であるため説明を割愛する。ステップS807、ステップS808のあとは、ステップS805に進み、図19のフローに従いモータの駆動制御を行い、停止動作を行う。
このような処理を実施することにより、AD変換周期が長くなり同期制御中の位置カウント精度が低下(位置カウントの分解能が低下)しても、非同期制御に好適に切り替えることで目標停止位置に停止させることができる。またAD変換周期が短くなった場合には同期制御手段中の位置カウント精度が向上するため、より同期制御手段201の制御期間を増やすことで反応遅れの少ない駆動波形生成が可能なモータ駆動を実現することができる。またAD変換周期がモータの駆動状態によらず動的に変更可能となる。
尚、本実施例では、AD変換周期自体が変更されたか否かを判定したが、AD変換周期の代わりに、駆動波形の位相カウント分解能に対するAD変換周期が変更されたか否かを判定して制御を行ってもよい。
[第5実施例]
本実施例では、ステップS407で位置管理レジスタを初期化する際に、駆動波形を補正するモータ駆動装置について説明をする。モータ制御の方式を同期制御と非同期制御との間で動的に切り替える場合、それぞれの制御が独立してしまうと、モータ制御の駆動波形位相の連続性が保てないという課題がある。本実施例では、非同期制御から同期制御への切り替時に、回転位置と駆動波形との位相差をつなげることで、連続性を持たせる。第3実施例と同様の構成については説明を省略する。
図22は本実施例における駆動回路の内部構成を示した図である。本実施例の駆動回路は、補正量取得手段209を備える点で実施例1の駆動回路と異なるが、同期制御手段201~回転位置書き換え手段208については第3実施例と同様のため、説明は省略する。
補正量取得手段209は回転位置書き換え手段208によってモータの回転位置を書き換えた際に、位相差設定手段205に設定されている位相差を補正するための補正量を取得し、取得した補正量を位相差設定手段205に出力する。補正量取得手段209については図23を用いてさらに詳しく説明する。
本実施形態の位相差設定手段205は、設定されている位相差に補正量を加算する。これにより、回転位置と駆動波形との間の位相差が補正される。
リセット機構121には一般的に取り付け誤差が発生する。位置検出の精度が例えば図3に示すように1周(1回転)あたり10ビット精度である場合、その精度内の取り付け誤差に収めないとモータ回転位置にズレが発生する。非同期制御の際は、リセット機構121はモータの周回情報を検出するためにのみ用いるため、この誤差は特に問題とならない。また、位置検出信号が矩形波の場合、位置検出精度が低いため、問題とならない程度に取り付け誤差を収めることが比較的容易であるが、位置検出精度が高い場合は、問題とならない程度に取り付け誤差を収めることが難しいことがある。そこで、本実施例では、補正量取得手段209によって取得した補正量を用いてこの誤差を補正する。
図23は補正量取得手段209の内部構成を示したものである。
補正量取得手段209は、モータ回転位置書き換えタイミング出力手段210、モータの1周内の位置情報の保持手段211、モータの補正量保持手段212と加算手段を備える。
モータ回転位置書き換えタイミング出力手段210は、回転位置書き換え手段208がモータの回転位置を書き換えたというフラグ情報を出力する手段である。
モータの1周内の位置情報の保持手段211は、位置ENC回路109によって取得されたモータの回転位置情報のうち、モータが1周のうちどの角度に位置するかを示す1周内の位置情報を保持する。言い換えると、書き換え前のモータ回転位置情報のうち、モータが1周のうちどの角度に位置するかを示す1周内の位置情報を保持する。
加算手段は、書き換え前のモータの1周内の位置情報から、リセット処理により書き換えられた後のモータの1周内の位置情報を減算し、書き換えられる前のモータの1周内の位置情報と、書き換えられた後のモータの1周内の位置情報の差分を取得する。書き換え前のモータの1周内の位置情報は、モータの1周内の位置情報の保持手段211から取得する。書き換え後のモータの1周内の位置情報は、モータ位置取得手段204から、モータ位置取得手段204が保持しているモータ回転位置情報のうち、モータが1周のうちどの角度に位置するかを示す1周内の位置情報を取得することで取得する。
モータ補正量保持手段212は、回転位置書き換え手段208がリセット処理によりモータの回転位置を書き換えたというフラグに応じて、加算手段による加算結果(減算結果)をモータの補正量として保持する。事前にモータの補正量を保持していた場合は、補正量を上書きする。
このように補正量取得手段209により、リセット処理による書き換え前後の、1周内の位置情報の差分が補正量として取得、保持される。
本実施例におけるモータの駆動シークエンスは、図19に示したフローチャートと同様であるため異なる点の図19を用いて説明する。ステップS401~406は、第3実施例と同様であるため、説明を省略する。
ステップS407では、第3実施例と同様に、回転位置書き換え手段208によってモータの回転位置情報を基準位置に書き換える処理を行う。先述したようにリセット機構121の取り付け誤差や、他にもリセット信号の変化を検出してから停止までのタイムラグ等が原因で、基準位置はわずかにずれてしまう。そのためモータ1周の情報を書き換えてしまうと駆動波形の出力位相が変化してしまうためである。非同期制御中においては、この誤差は常に一定のため補正を行わなくても問題ない。
続くステップS408では、第3実施例と同様に同期制御をオンにする。このとき、位相差設定手段205が、設定されている位相差に、補正量取得手段209で取得したモータの補正量を加算することで、設定されている位相差を補正する。このようにモータの補正量を加算することによって、リセット機構121の取り付け誤差があるモータ駆動装置で、駆動制御方法を非同期制御から同期制御に切り替えた場合であっても、同期制御に制御方式を切り替えた直後は駆動波形の出力位相は変化しない。つまり、非同期制御から同期制御への切り替え時でも駆動波形の連続性が保たれるため、スムーズに制御方式を切り替えることができる。
ステップS409以降は第3実施例と同様であるため、説明は省略する。
以上の実施例の構成、処理を実施することにより、同期制御手段によりモータに対して反応遅れの少ない駆動波形生成が可能で、かつ、非同期制御と同期制御を動的に切り替えても、モータの駆動波形の連続性を維持して、駆動装置を実現することができる。
[変形例]
上述の第3~5実施例の位置検出器ではHallセンサと回転磁石を用いた構成を用いたが、回転位置の検出が十分に高精度に行える構成であれば他のセンサ機構を用いても実施可能である。
また、上述の第3~5実施例ではステッピングモータを前提にしたが、ロータ側が永久磁石、ステータ側がコイル・ステータである構成のモータであれば、他のモータを用いても実施可能である。
また、第4実施例と第5実施例を組み合わることもできる。また、AD変換周期が十分に短い場合のように、停止精度の低下を考慮する必要がない場合であっても、実施例3の設定されている位相差の補正を実行することにより、モータの駆動波形の連続性を維持してモータを駆動することができる。
また、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。