(57)【要約】【課題】簡易な構成でモータを細かく制御する。【解決手段】本発明は、パルスをモータドライバに送信することによりモータを制御するモータ制御装置であって、次のパルスを発生させるタイミングを示す基準クロックのカウント数を含む制御テーブルを記憶するメモリと、パルスの目標発生回数を記憶する第１レジスタと、メモリからカウント数を読み出して記憶する第２レジスタと、パルスの目標発生回数を第１レジスタに指定し、第２レジスタがはじめに参照するメモリのアドレスを第２レジスタに指定する制御部と、パルスの発生回数に応じて、カウント数を読み出すメモリのアドレスを変更するアドレスカウンタと、発生回数と目標発生回数とが一致したときに、アドレスカウンタの動作を停止させる比較器と、前回のパルスを発生させてから、第２レジスタから読み出したカウント数だけ待った後、次のパルスを発生させるパルス発生器と、を備える。【選択図】図１
2014236557.tif 000002
【特許請求の範囲】
【請求項１】
パルスをモータドライバに送信することによりモータを制御するモータ制御装置であって、
次のパルスを発生させるタイミングを示す基準クロックのカウント数を含む制御テーブルを記憶するメモリと、
前記パルスの目標発生回数を記憶する第１レジスタと、
前記メモリから前記カウント数を読み出して記憶する第２レジスタと、
前記パルスの目標発生回数を前記第１レジスタに指定し、前記第２レジスタがはじめに参照する前記メモリのアドレスを前記第２レジスタに指定する制御部と、
前記パルスの発生回数に応じて、前記カウント数を読み出す前記メモリのアドレスを変更するアドレスカウンタと、
前記発生回数と前記目標発生回数とが一致したときに、前記アドレスカウンタの動作を停止させる比較器と、
前回のパルスを発生させてから、前記第２レジスタから読み出したカウント数だけ待った後、次のパルスを発生させるパルス発生器と、
を備えるモータ制御装置。
【請求項２】
前記カウント数の目標カウント数を記憶する第３レジスタと、
前記発生回数が前記目標発生回数以下である場合に、前記第２レジスタの前記カウント数を前記パルス発生器に送信し、前記発生回数が前記目標発生回数より大きい場合に、前記第３レジスタの前記目標カウント数を前記パルス発生器に送信するセレクタと、
を更に備え、
前記制御部は、
更に、前記目標カウント数を前記第３レジスタに指定し、
前記パルス発生器は、
前回のパルスを発生させてから、前記セレクタから受信した前記カウント数又は前記目標カウンタ数だけ待った後、次のパルスを発生させる
請求項１に記載のモータ制御装置。
【請求項３】
パルスをモータドライバに送信することによりモータを制御するモータ制御装置であって、
次のパルスを発生させるタイミングを示す基準クロックのカウント数を含む制御テーブルを記憶するメモリと、
前記カウント数を記憶する第１レジスタと、
前記メモリから前記カウント数を読み出して記憶する第２レジスタと、
前記カウント数を前記第１レジスタに指定し、前記第２レジスタがはじめに参照する前記メモリのアドレスを前記第２レジスタに指定する制御部と、
前記パルスの発生回数に応じて、前記カウント数を読み出す前記メモリのアドレスを変更するアドレスカウンタと、
前記第１レジスタのカウント数、又は前記第２レジスタのカウント数を送信するセレクタと、
前記第１レジスタのカウント数と、前記第２レジスタのカウント数との比較結果に応じて、前記セレクタへの選択信号の送信と、前記アドレスカウンタへの停止信号の送信とを行う比較器と、
前回のパルスを発生させてから、前記セレクタから受信したカウント数だけ待った後、次のパルスを発生させるパルス発生器と、
を備えるモータ制御装置。
【請求項４】
前記比較器は、
モータの加速時には、前記第１レジスタのカウント数が、前記第２レジスタのカウント数よりも大きくなった場合に、前記第１レジスタのカウント数を選択することを示す前記選択信号を前記セレクタに送信し、前記停止信号を前記アドレスカウンタに送信する
請求項３に記載のモータ制御装置。
【請求項５】
前記比較器は、
モータの減速時には、前記第１レジスタのカウント数が、前記第２レジスタのカウント数よりも小さくなった場合に、前記第１レジスタのカウント数を選択することを示す前記選択信号を前記セレクタに送信し、前記停止信号を前記アドレスカウンタに送信する
請求項３又は４に記載のモータ制御装置。
【請求項６】
次のパルスを発生させるタイミングを示す基準クロックのカウント数を含む制御テーブルを記憶するメモリと、前記パルスの目標発生回数を記憶する第１レジスタと、前記メモリから前記カウント数を読み出して記憶する第２レジスタと、を備えるモータ制御装置のモータ制御方法であって、
制御部が、前記パルスの目標発生回数を前記第１レジスタに指定するステップと、
制御部が、前記第２レジスタがはじめに参照する前記メモリのアドレスを前記第２レジスタに指定するステップと、
アドレスカウンタが、前記パルスの発生回数に応じて、前記カウント数を読み出す前記メモリのアドレスを変更するステップと、
比較器が、前記発生回数と前記目標発生回数とが一致したときに、前記アドレスカウンタの動作を停止させるステップと、
パルス発生器が、前回のパルスを発生させてから、前記第２レジスタから読み出したカウント数だけ待った後、次のパルスを発生させるステップと、
を含むモータ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータ制御装置及びモータ制御方法に関する。
【背景技術】
【０００２】
各種装置の駆動源として、ステッピングモータが広く利用されている。ステッピングモータは、運動量が駆動パルスの数に比例すること、デジタル制御回路との相性が良いこと、及びフィードバック回路が必要ないこと等の利点がある。そのため、ステッピングモータは、様々な分野の装置で使用されている。一方、ステッピングモータは、負荷が大きすぎたり、パルス周波数が高すぎたりすると、相切り替えが正常に行われず同期外れが発生し、制御が乱れる現象（脱調）が発生することがある。駆動パルス（歩進パルス）により、ステッピングモータの加速又は減速を行う場合、メモリに予め記憶されている制御テーブルを利用して、所定のパルス周波数のパルスを生成する方法が知られている。
【０００３】
また、特許文献１には、モータの速度目標値を算出し、クロックパルスのカウント値が当該速度目標値に一致したときに歩進パルスを発生させることにより、モータの加速又は減速を行うパルス生成部を備える画像形成装置の発明が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のモータ制御方法では、簡易な構成でモータの細かな制御を実現することが難しかった。
【０００５】
本発明は、上記に鑑みてなされたものであって、簡易な構成でモータを細かく制御できるモータ制御装置及びモータ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、パルスをモータドライバに送信することによりモータを制御するモータ制御装置であって、次のパルスを発生させるタイミングを示す基準クロックのカウント数を含む制御テーブルを記憶するメモリと、前記パルスの目標発生回数を記憶する第１レジスタと、前記メモリから前記カウント数を読み出して記憶する第２レジスタと、前記パルスの目標発生回数を前記第１レジスタに指定し、前記第２レジスタがはじめに参照する前記メモリのアドレスを前記第２レジスタに指定する制御部と、前記パルスの発生回数に応じて、前記カウント数を読み出す前記メモリのアドレスを変更するアドレスカウンタと、前記発生回数と前記目標発生回数とが一致したときに、前記アドレスカウンタの動作を停止させる比較器と、前回のパルスを発生させてから、前記第２レジスタから読み出したカウント数だけ待った後、次のパルスを発生させるパルス発生器と、を備える。
【発明の効果】
【０００７】
本発明によれば、簡易な構成でモータを細かく制御できるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１実施形態のモータ制御装置の構成の一例を示す図である。
【図２】図２は、第１実施形態のモータ制御情報の一例を説明するための図である。
【図３】図３は、第１実施形態のモータ制御方法の一例を示すフローチャートである。
【図４】図４は、第１実施形態のモータ制御装置がモータドライバに送信するパルスの一例を示す図である。
【図５】図５は、第２実施形態のモータ制御装置の構成の一例を示す図である。
【図６】図６は、第２実施形態のモータ制御情報の一例を説明するための図である。
【図７】図７は、第２実施形態のモータ制御方法の一例を示すフローチャートである。
【図８】図８は、第２実施形態のモータ制御装置がモータドライバに送信するパルスの一例を示す図である。
【図９】図９は、第３実施形態のモータ制御装置の構成の一例を示す図である。
【図１０】図１０は、第３実施形態のモータ制御情報の一例を説明するための図である。
【図１１】図１１は、第３実施形態のモータ制御方法の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、モータ制御装置及びモータ制御方法の実施形態を詳細に説明する。
【００１０】
（第１実施形態）
図１は、第１実施形態のモータ制御装置１００の構成の一例を示す図である。本実施形態のモータ制御装置１００は、パルス発生器１、レジスタ２、ＣＰＵ３、メモリ４、レジスタ５、アドレスカウンタ６及び比較器７を備える。モータ制御装置１００は、モータドライバ４００にパルスを送信することにより、モータを制御する。モータドライバ４００は、モータ制御装置１００から受信したパルスに応じた電流をモータに与えることにより、モータを動作させる。
【００１１】
レジスタ２は、パルスの目標発生回数を記憶する。メモリ４は、次のパルスを発生させるタイミングを示す基準クロックのカウント数を含む制御テーブルを記憶する。レジスタ５は、制御テーブルからカウント数を読み出して記憶する。なお、カウント数の読み出し方法についての詳細は後述する。レジスタ５は、読み出したカウント数をパルス発生器１に送信する。
【００１２】
本実施形態のモータ制御装置１００は、制御テーブル、パルスの目標発生回数及び制御テーブルからカウント数を最初に読み出すアドレス（初期アドレス）によりモータを制御する。以下、制御テーブル、目標発生回数及び初期アドレスをモータ制御情報という。
【００１３】
図２は、第１実施形態のモータ制御情報の一例を説明するための図である。図２の例では、制御テーブルは、アドレス及びカウント数を有する。アドレスは、カウント数が記憶されているメモリ４のアドレスである。カウント数は、パルスを発生させてから、次のパルスを発生させるまでの待ち時間を示す。図２の例では、例えば、アドレス０には、カウント数として１０００が記録されている。また、目標発生回数に７が指定されている。また、初期アドレスに０が指定されている。
【００１４】
図１に戻り、ＣＰＵ３は、パルスの目標発生回数をレジスタ２に指定する。また、ＣＰＵ３は、レジスタ５がはじめに参照するメモリ４のアドレスをレジスタ５に指定する。ＣＰＵ３は、駆動の開始又は停止を示す要求をパルス発生器１に送信する。
【００１５】
パルス発生器１は、駆動の開始を示す要求をＣＰＵ３から受信すると、１回目のパルスを発生させ、当該パルスをモータドライバ４００に送信する。パルス発生器１は、前回のパルスを発生させてから、レジスタ５から受信したカウント数だけ待った後、次のパルスを発生させる。また、パルス発生器１は、駆動の停止を示す要求をＣＰＵ３から受信すると、当該パルスの送信を停止する。また、パルス発生器１は、パルスを発生させた後に、パルスを発生させたことを示すパルス発生通知を比較器７に送信する。
【００１６】
比較器７は、パルス発生通知を受信すると、パルスの発生回数を１増やす。比較器７は、パルスの発生回数が目標発生回数より小さい場合に、メモリ４のアドレスを変更するアドレス変更信号を、アドレスカウンタ６に送信する。
【００１７】
アドレスカウンタ６は、アドレス変更信号を受信すると、カウント数を読み出すメモリ４のアドレスを変更（カウントアップ又はダウン）する。アドレスカウンタ６は、変更したメモリ４のアドレスを、レジスタ５に送信する。すなわち、レジスタ５により参照されるメモリ４のアドレスは、パルスの発生回数に応じて、変更（カウントアップ又はダウン）される。
【００１８】
なお、アドレスカウンタ６は、パルスの発生回数ではなく、アドレスのカウントアップ（カウントダウン）数をカウントしてもよい。アドレスカウンタ６は、モータを加速させるときは、メモリ４のアドレスをカウントアップする。アドレスカウンタ６は、モータを減速させるときは、メモリ４のアドレスをカウントダウンする。
【００１９】
また、比較器７は、パルスの発生回数と、パルスの目標発生回数とが一致したときに、アドレスカウンタ６に停止信号を送信することにより、アドレスカウンタ６のカウント動作（カウントアップ又はダウン）を停止させる。これにより、モータ制御装置１００は、一定のパルス速度（周波数）のパルスをモータドライバ４００に送信することにより、モータを等速運動させる。
【００２０】
図３は、第１実施形態のモータ制御方法の一例を示すフローチャートである。図３の例は、モータ停止状態から、モータを加速させる場合の例である。ＣＰＵ３は、パルスの目標発生回数をレジスタ２に指定する（ステップＳ１）。次に、ＣＰＵ３は、レジスタ５がカウント数を最初に読み出すメモリ４のアドレスを、レジスタ５に指定する（ステップＳ２）。パルス発生器１は、駆動の開始を示す要求をＣＰＵ３から受信することにより、１回目のパルスをモータドライバ４００に送信する（ステップＳ３）。次に、比較器７は、パルス発生通知を、パルス発生器１から受信する。比較器７は、パルスの発生回数を０から１に増やす（ステップＳ４）。比較器７は、パルスの発生回数をアドレスカウンタ６に通知する。アドレスカウンタ６は、パルス発生器１が１回目のパルスを発生させた後は、読み出すアドレスをカウントアップせずに、メモリ４の制御テーブルのカウント数を読み出す命令のみをレジスタ５に送信する。ＣＰＵ３が、パルス発生器１が１回目のパルスを発生させた後に、レジスタ５がメモリ４から読み出すアドレス（初期アドレス）をレジスタ５に指定しているためである。
【００２１】
次に、レジスタ５は、メモリ４の制御テーブルのカウント数を読み込む（ステップＳ５）。レジスタ５は、パルス発生器１が１回目のパルスを発生させた後は、ＣＰＵ３により指定されたメモリ４のアドレスに記憶されたカウント数を読み込む。レジスタ５は、パルス発生器１が２回目以降のパルスを発生させた後は、アドレスカウンタ６により変更（カウントアップ）されたメモリ４のアドレスに記憶されたカウント数を読み込む。次に、レジスタ５は、ステップＳ５で読み出したカウント数を、パルス発生器１に出力する（ステップＳ６）。次に、パルス発生器１は、レジスタ５が出力した（レジスタ５から読み出した）カウント数に応じて、次のパルスを発生させるタイミングを変更する。すなわち、パルス発生器１は、前回のパルスを発生させてから当該カウント数だけ待ったあと、次のパルスを発生させ、当該パルスをモータドライバ４００に送信する（ステップＳ７）。次に、比較器７は、パルス発生器１からパルス発生通知を受信する。比較器７は、パルス発生回数を１増やす（ステップＳ８）。
【００２２】
次に、パルス発生器１は、ＣＰＵ３から駆動の停止を示す要求を受信したか否かを判定する（ステップＳ９）。駆動の停止を示す要求を受信した場合（ステップＳ９、Ｙｅｓ）は、処理を終了する。駆動の停止を示す要求を受信していない場合（ステップＳ９、Ｎｏ）は、ステップＳ１０に進む。
【００２３】
次に、比較器７は、パルスの発生回数が、レジスタ２の目標発生回数より小さいか否かを判定する（ステップＳ１０）。目標発生回数より小さい場合（ステップＳ１０、Ｙｅｓ）は、比較器７は、メモリ４のアドレスをカウントアップするアドレス変更信号を、アドレスカウンタ６に送信する。アドレスカウンタ６は、比較器７からアドレス変更信号を受信すると、レジスタ５が参照するメモリ４のアドレスをカウントアップする（ステップＳ１１）。アドレスカウンタ６は、当該変更されたメモリ４のアドレスを含むメモリ４の読み出し命令を、レジスタ５に送信する。ステップＳ１１の処理の後は、ステップＳ５に戻る。これにより、レジスタ５は、ステップＳ１１により変更されたメモリ４のアドレスからカウント数を読み込む。
【００２４】
目標発生回数以上である場合（ステップＳ１０、Ｎｏ）は、レジスタ５が参照するメモリ４のアドレスを変更する処理（ステップＳ１１）を実行せずにステップＳ５に戻る。これにより、レジスタ５は、前回、カウント数を読み出したときと同じメモリ４のアドレスからカウント数を読み込む。
【００２５】
図４は、第１実施形態のモータ制御装置１００がモータドライバ４００に送信するパルスの一例を示す図である。図４のパルスの例は、モータ制御装置１００が、図２のモータ制御情報によってモータを制御する場合の例である。図４の例は、目標発生回数（７回）だけパルスを発生させた後に、ＣＰＵ３が駆動の停止を示す要求をパルス発生器１に送信した場合の例である。なお、モータ制御装置１００が、目標発生回数だけパルスを発生させた後の動作は、モータの停止に限られず、加速、減速又は等速でもよい。加速又は減速の場合は、ＣＰＵ３は、再度、パルスの目標発生回数をレジスタ２に指定し、初期アドレスをレジスタ５に指定する。
【００２６】
本実施形態のモータ制御装置１００によれば、目標速度制御ではなく、パルスの発生回数によりモータを制御するため、ステップ角（モータ回転角）による細かいモータの制御が可能になる。また、本実施形態のモータ制御装置１００は、演算手段が比較器７のみであり、簡易な構成でモータを細かく制御することができる。
【００２７】
（第２実施形態）
次に、第２実施形態のモータ制御装置２００について説明する。第２実施形態のモータ制御装置２００は、モータ制御情報として、目標カウント数が追加されている点が、第１実施形態とは異なる。
【００２８】
図５は、第２実施形態のモータ制御装置２００の構成の一例を示す図である。本実施形態のモータ制御装置２００は、パルス発生器２１、レジスタ２２、ＣＰＵ２３、メモリ２４、レジスタ２５、アドレスカウンタ２６、比較器２７、レジスタ２８及びセレクタ２９を備える。モータドライバ４００については、第１実施形態と同じであるため説明を省略する。
【００２９】
レジスタ２２は、パルスの目標発生回数を記憶する。メモリ２４は、次のパルスを発生させるタイミングを示す基準クロックのカウント数を含む制御テーブルを記憶する。レジスタ２５は、制御テーブルからカウント数を読み出して記憶する。なお、カウント数の読み出し方法についての詳細は後述する。レジスタ２５は、読み出したカウント数をセレクタ２９に送信する。レジスタ２８は、目標カウント数を記憶する。レジスタ２５は、目標カウント数をセレクタ２９に送信する。
【００３０】
本実施形態のモータ制御装置２００は、目標カウント数、制御テーブル、パルスの目標発生回数及び制御テーブルからカウント数を最初に読み出すアドレス（初期アドレス）によりモータを制御する。本実施形態のモータ制御装置２００では、目標カウント数、制御テーブル、目標発生回数及び初期アドレスをモータ制御情報という。本実施形態のモータ制御装置２００では、目標カウント数を、パルスを目標発生回数だけ発生させた後に到達するカウント数に近い値に設定することにより、モータをより細かく制御することができる。なお、目標カウント数、制御テーブル、目標発生回数及び初期アドレスの指定方法は、この方法に限られず任意でよい。
【００３１】
図６は、第２実施形態のモータ制御情報の一例を説明するための図である。図６の例では、制御テーブルは、アドレス及びカウント数を有する。アドレスは、カウント数が記憶されているメモリ２４のアドレスである。カウント数は、パルスを発生させてから、次のパルスを発生させるまでの待ち時間を示す。図６の例では、例えば、アドレス０には、カウント数として１０００が記録されている。また、目標発生回数に４が指定されている。また、初期アドレスに０が指定されている。また、目標カウント数に３１０が指定されている。
【００３２】
図５に戻り、ＣＰＵ２３は、パルスの目標発生回数をレジスタ２２に指定する。また、ＣＰＵ２３は、レジスタ２５がはじめに参照するメモリ２４のアドレスをレジスタ２５に指定する。また、ＣＰＵ２３は、目標カウント数をレジスタ２８に指定する。また、ＣＰＵ２３は、駆動の開始又は停止を示す要求をモータドライバ４００に送信する。
【００３３】
パルス発生器２１は、駆動の開始を示す要求をＣＰＵ２３から受信すると、１回目のパルスを発生させ、当該パルスをモータドライバ４００に送信する。パルス発生器２１は、前回のパルスを発生させてから、セレクタ２９から受信したカウント数だけ待った後、次のパルスを発生させる。また、パルス発生器２１は、駆動の停止を示す要求をＣＰＵ２３から受信すると、当該パルスの送信を停止する。また、パルス発生器２１は、パルスを発生させた後に、パルスを発生させたことを示すパルス発生通知を比較器２７に送信する。
【００３４】
比較器２７は、パルス発生通知を受信すると、パルスの発生回数を１増やす。比較器２７は、レジスタ２２の目標発生回数と、パルスの発生回数とを比較する。比較器２７は、パルスの発生回数が目標発生回数より小さい場合に、メモリ２４のアドレスをカウントアップするアドレス変更信号を、アドレスカウンタ２６に送信するとともに、レジスタ２５のカウント数を選択する選択信号をセレクタ２９に送信する。また、比較器２７は、パルスの発生回数と、パルスの目標発生回数とが一致したときに、アドレスカウンタ２６に停止信号を送信するとともに、レジスタ２５のカウント数を選択する選択信号をセレクタ２９に送信する。また、比較器２７は、発生回数が目標発生回数より大きい場合に、レジスタ２８の目標カウント数を選択する選択信号を、セレクタ２９に送信する。
【００３５】
アドレスカウンタ２６は、アドレス変更信号を受信すると、カウント数を読み出すメモリ２４のアドレスを変更（カウントアップ又はダウン）する。アドレスカウンタ６は、変更したメモリ２４のアドレスを、レジスタ２５に送信する。すなわち、レジスタ２５により参照されるメモリ２４のアドレスは、パルスの発生回数に応じて、変更（カウントアップ又はダウン）される。
【００３６】
なお、アドレスカウンタ２６は、パルスの発生回数ではなく、アドレスのカウントアップ（カウントダウン）数をカウントしてもよい。アドレスカウンタ２６は、モータを加速させるときは、メモリ２４のアドレスをカウントアップする。アドレスカウンタ２６は、モータを減速させるときは、メモリ２４のアドレスをカウントダウンする。
【００３７】
セレクタ２９は、レジスタ２５のカウント数、又はレジスタ２８の目標カウント数を、比較器２７から受信した選択信号に応じて選択し、パルス発生器２１に送信する。セレクタ２９は、パルスの発生回数が目標発生回数以下である場合に、レジスタ２５のカウント数をパルス発生器２１に送信し、発生回数が目標発生回数より大きい場合に、レジスタ２８のカウント数をパルス発生器２１に送信する。
【００３８】
図７は、第２実施形態のモータ制御方法の一例を示すフローチャートである。図７の例は、モータ停止状態から、モータを加速させる場合の例である。ＣＰＵ２３は、パルスの目標発生回数をレジスタ２２に指定する（ステップＳ２１）。次に、ＣＰＵ２３は、レジスタ２５がカウント数を最初に読み出すメモリ２４のアドレスを、レジスタ２５に指定する（ステップＳ２２）。次に、ＣＰＵ２３は、パルスの目標カウント数をレジスタ２８に指定する（ステップＳ２３）。次に、パルス発生器２１は、駆動の開始を示す要求をＣＰＵ２３から受信することにより、１回目のパルスをモータドライバ４００に送信する（ステップＳ２４）。
【００３９】
次に、比較器２７は、パルス発生器２１からパルス発生通知を受信する。比較器２７は、パルスの発生回数を０から１に増やす（ステップＳ２５）。比較器２７は、レジスタ２５のカウント数を選択する選択信号を、セレクタ２９に送信する。また、比較器２７は、パルスの発生回数（１回）をアドレスカウンタ２６に通知する。アドレスカウンタ２６は、パルス発生器２１が１回目のパルスを発生させた後は、読み出すアドレスをカウントアップせずに、メモリ２４の制御テーブルのカウント数を読み出す命令のみをレジスタ２５に送信する。ＣＰＵ２３が、パルス発生器２１が１回目のパルスを発生させた後に、レジスタ２５がメモリ２４から読み出すアドレス（初期アドレス）をレジスタ２５に指定しているためである。
【００４０】
次に、レジスタ２５は、メモリ２４の制御テーブルのカウント数を読み込む（ステップＳ２６）。レジスタ２５は、パルス発生器２１が１回目のパルスを発生させた後は、ＣＰＵ２３により指定されたメモリ２４のアドレスに記憶されたカウント数を読み込む。レジスタ２５は、パルス発生器２１が２回目以降のパルスを発生させた後は、アドレスカウンタ２６により変更（カウントアップ）されたメモリ２４のアドレスに記憶されたカウント数を読み込む。次に、セレクタ２９は、レジスタ２５から読み出したカウント数を、パルス発生器２１に送信する（ステップＳ２７）。次に、パルス発生器２１は、セレクタ２９が出力したカウント数に応じて、次のパルスを発生させるタイミングを変更する。すなわち、パルス発生器２１は、前回のパルスを発生させてから当該カウント数だけ待ったあと、次のパルスを発生させ、当該パルスをモータドライバ４００に送信する（ステップＳ２８）。次に、比較器２７は、パルス発生器２１からパルス発生通知を受信する。比較器２７は、パルス発生回数を１増やす（ステップＳ２９）。
【００４１】
次に、パルス発生器２１は、ＣＰＵ２３から駆動の停止を示す要求を受信したか否かを判定する（ステップＳ３０）。駆動の停止を示す要求を受信した場合（ステップＳ３０、Ｙｅｓ）は、処理を終了する。駆動の停止を示す要求を受信していない場合（ステップＳ３０、Ｎｏ）は、ステップＳ３１に進む。
【００４２】
次に、比較器２７は、パルスの発生回数が、レジスタ２２の目標発生回数より小さいか否かを判定する（ステップＳ３１）。目標発生回数より小さい場合（ステップＳ３１、Ｙｅｓ）は、比較器２７は、メモリ２４のアドレスをカウントアップするアドレス変更信号を、アドレスカウンタ２６に送信するとともに、レジスタ２５のカウント数を選択する選択信号（選択信号Ｂ）をセレクタ２９に送信する（ステップＳ３２）。アドレスカウンタ２６は、比較器２７からアドレス変更信号を受信すると、レジスタ２５が参照するメモリ２４のアドレスをカウントアップする（ステップＳ３３）。アドレスカウンタ２６は、当該変更されたメモリ２４のアドレスを含むメモリ２４の読み出し命令を、レジスタ２５に送信する。ステップＳ３３の処理の後は、ステップＳ２６に戻る。これにより、レジスタ２５は、ステップＳ３３により変更されたメモリ２４のアドレスからカウント数を読み込む。
【００４３】
目標発生回数以上である場合（ステップＳ３１、Ｎｏ）は、比較器２７は、パルスの発生回数が、レジスタ２２の目標発生回数と一致するか否かを判定する（ステップＳ３４）。目標発生回数と一致する場合（ステップＳ３４、Ｙｅｓ）は、比較器２７は、アドレスカウンタ２６のカウント動作を停止させる停止信号を、アドレスカウンタ２６に送信するとともに、レジスタ２５のカウント数を選択する選択信号（選択信号Ｂ）をセレクタ２９に送信する（ステップＳ３５）。アドレスカウンタ２６は、比較器２７から停止信号を受信すると、カウント動作を停止する（ステップＳ３６）。アドレスカウンタ２６は、メモリ２４の読み出し命令を、レジスタ２５に送信する。ステップＳ３６の処理の後は、ステップＳ２６に戻る。これにより、レジスタ２５は、前回、読み出した時と同じアドレスを使用してカウント数を読み込む。
【００４４】
目標発生回数と一致しない場合（ステップＳ３４、Ｎｏ）は、比較器２７は、レジスタ２８の目標カウント数を選択する選択信号（選択信号Ａ）をセレクタ２９に送信する（ステップＳ３７）。セレクタ２９は、レジスタ２８の目標カウント数を、パルス発生器２１に送信する（ステップＳ３８）。ステップＳ３８の処理の後は、ステップＳ２８に戻る。
【００４５】
図８は、第２実施形態のモータ制御装置２００がモータドライバ４００に送信するパルスの一例を示す図である。図８のパルスの例は、モータ制御装置２００が、図６のモータ制御情報によってモータを制御する場合の例である。図８の例は、目標発生回数（４回）だけパルスを発生させた後に、目標カウント数３１０のパルス速度でモータを等速運動させた場合の例である。なお、モータ制御装置２００が、目標発生回数だけパルスを発生させた後の動作は、モータの等速運動に限られず、加速、減速又は停止でもよい。
【００４６】
本実施形態のモータ制御装置２００は、パルスの発生回数に基づいて、最初は制御テーブルに沿った加速又は減速を行い、途中から目標カウント数によりモータを制御する。本実施形態のモータ制御装置２００によれば、パルスの発生回数と目標カウント数とを指定することにより、より細かいモータの制御が可能になる。また、本実施形態のモータ制御装置２００は、制御テーブルにないカウント数を使用することができる。言い換えると、本実施形態のモータ制御装置２００は、制御テーブルのサイズを抑えることができる。また、本実施形態のモータ制御装置１００は、演算手段が比較器２７のみであり、簡易な構成でモータを細かく制御することができる。
【００４７】
（第３実施形態）
次に、第３実施形態のモータ制御装置３００について説明する。第３実施形態のモータ制御装置３００は、モータ制御情報として、パルスの目標発生回数の代わりに目標カウント数を使用する点が、第１実施形態とは異なる。モータドライバ４００については、第１実施形態と同じであるため説明を省略する。
【００４８】
図９は、第３実施形態のモータ制御装置３００の構成の一例を示す図である。本実施形態のモータ制御装置３００は、パルス発生器３１、レジスタ３２、ＣＰＵ３３、メモリ３４、レジスタ３５、アドレスカウンタ３６、比較器３７及びセレクタ３８を備える。
【００４９】
レジスタ３２は、目標カウント数を記憶する。レジスタ３２は、目標カウント数を比較器３７及びセレクタ３８に送信する。メモリ３４は、次のパルスを発生させるタイミングを示す基準クロックのカウント数を含む制御テーブルを記憶する。レジスタ３５は、メモリ３４に記憶されたテーブルからカウント数を読み出して記憶する。なお、カウント数の読み出し方法についての詳細は後述する。レジスタ３５は、読み出したカウント数を比較器３７及びセレクタ３８に送信する。
【００５０】
本実施形態のモータ制御装置３００は、目標カウント数、制御テーブル及び制御テーブルからカウント数を最初に読み出すアドレス（初期アドレス）によりモータを制御する。本実施形態のモータ制御装置３００では、目標カウント数、制御テーブル及び初期アドレスをモータ制御情報という。
【００５１】
図１０は、第３実施形態のモータ制御情報の一例を説明するための図である。図１０の例では、制御テーブルは、アドレス及びカウント数を有する。アドレスは、カウント数が記憶されているメモリ３４のアドレスである。カウント数は、パルスを発生させてから、次のパルスを発生させるまでの待ち時間を示す。図１０の例では、例えば、アドレス０には、カウント数として１０００が記録されている。また、目標カウント数に３１０が指定されている。また、初期アドレスに０が指定されている。
【００５２】
図９に戻り、ＣＰＵ３３は、目標カウント数をレジスタ３２に指定する。また、ＣＰＵ３３は、レジスタ３５がはじめに参照するメモリ３４のアドレスをレジスタ３５に指定する。また、ＣＰＵ３３は、駆動の開始又は停止を示す要求をモータドライバ４００に送信する。
【００５３】
パルス発生器３１は、駆動の開始を示す要求をＣＰＵ３３から受信すると、１回目のパルスを発生させ、当該パルスをモータドライバ４００に送信する。パルス発生器３１は、前回のパルスを発生させてから、セレクタ３８から受信したカウント数だけ待った後、次のパルスを発生させる。また、パルス発生器３１は、駆動の停止を示す要求をＣＰＵ３３から受信すると、当該パルスの送信を停止する。また、パルス発生器３１は、パルスを発生させた後に、パルスを発生させたことを示すパルス発生通知をアドレスカウンタ３６に送信する。
【００５４】
アドレスカウンタ３６は、パルス発生器３１からパルス発生通知を受信すると、カウント数を読み出すメモリ３４のアドレスを変更（カウントアップ又はダウン）する。アドレスカウンタ３６は、変更したメモリ３４のアドレスを、レジスタ３５に送信する。すなわち、レジスタ３５により参照されるメモリ３４のアドレスは、パルス発生通知に応じて、変更（カウントアップ又はダウン）される。アドレスカウンタ３６は、モータを加速させるときは、メモリ３４のアドレスをカウントアップする。アドレスカウンタ３６は、モータを減速させるときは、メモリ３４のアドレスをカウントダウンする。
【００５５】
セレクタ３８は、レジスタ３５のカウント数、又はレジスタ３２の目標カウント数を、比較器３７から受信した選択信号に応じて選択し、パルス発生器３１に送信する。比較器３７は、レジスタ３５のカウント数と、レジスタ３２の目標カウント数とを比較する。
【００５６】
モータを加速する場合、比較器３７は、カウント数が目標カウント数より大きい場合に、レジスタ３５のカウント数を選択する選択信号を、セレクタ３８に送信する。比較器３７は、カウント数が目標カウント数以下である場合に、レジスタ３２の目標カウント数を選択する選択信号を、セレクタ３８に送信する。すなわち、セレクタ３８は、カウント数が目標カウント数より大きい場合に、レジスタ３５のカウント数をパルス発生器３１に送信し、カウント数が目標カウント数以下である場合に、レジスタ３２の目標カウント数をパルス発生器３１に送信する。また、比較器３７は、最初にカウント数が目標カウント数以下になったときに、アドレスカウンタ３６に停止信号を送信することにより、アドレスカウンタ３６を停止させる。
【００５７】
モータを減速する場合、比較器３７は、カウント数が目標カウント数より小さい場合に、レジスタ３５のカウント数を選択する選択信号を、セレクタ３８に送信する。比較器３７は、カウント数が目標カウント数以上である場合に、レジスタ３２の目標カウント数を選択する選択信号を、セレクタ３８に送信する。すなわち、セレクタ３８は、カウント数が目標カウント数より小さい場合に、レジスタ３５のカウント数をパルス発生器３１に送信し、カウント数が目標カウント数以上である場合に、レジスタ３２の目標カウント数をパルス発生器３１に送信する。また、比較器３７は、最初にカウント数が目標カウント数以上になったときに、アドレスカウンタ３６に停止信号を送信することにより、アドレスカウンタ３６を停止させる。
【００５８】
図１１は、第３実施形態のモータ制御方法の一例を示すフローチャートである。図１１の例は、モータ停止状態から、モータを加速させる場合の例である。ＣＰＵ３３は、パルスの目標カウント数をレジスタ３２に指定する（ステップＳ４１）。次に、ＣＰＵ３３は、レジスタ３５がカウント数を最初に読み出すメモリ３４のアドレスを、レジスタ３５に指定する（ステップＳ４２）。次に、パルス発生器３１は、駆動の開始を示す要求をＣＰＵ３３から受信することにより、１回目のパルスをモータドライバ４００に送信する（ステップＳ４３）。
【００５９】
次に、アドレスカウンタ３６は、パルス発生器２１からパルス発生通知を受信する。アドレスカウンタ３６は、初回のパルス発生通知を受信したときは、読み出すアドレスをカウントアップせずに、メモリ３４の制御テーブルのカウント数を読み出す命令のみをレジスタ３５に送信する。ＣＰＵ３３が、パルス発生器３１が１回目のパルスを発生させた後に、レジスタ３５がメモリ３４から読み出すアドレス（初期アドレス）をレジスタ３５に指定しているためである。
【００６０】
次に、レジスタ３５は、メモリ３４の制御テーブルのカウント数を読み込む（ステップＳ４４）。レジスタ３５は、パルス発生器３１が１回目のパルスを発生させた後は、ＣＰＵ３３により指定されたメモリ３４のアドレスに記憶されたカウント数を読み込む。レジスタ３５は、パルス発生器３１が２回目以降のパルスを発生させた後は、アドレスカウンタ３６により変更（カウントアップ）されたメモリ３４のアドレスに記憶されたカウント数を読み込む。比較器３７は、レジスタ３５のカウント数を選択する選択信号を、セレクタ３８に送信する。
【００６１】
次に、セレクタ３８は、レジスタ３５から受信したカウント数を、パルス発生器３１に送信する（ステップＳ４５）。次に、パルス発生器３１は、セレクタ３８が出力したカウント数に応じて、次のパルスを発生させるタイミングを変更する。すなわち、パルス発生器３１は、前回のパルスを発生させてから当該カウント数だけ待ったあと、次のパルスを発生させ、当該パルスをモータドライバ４００に送信する（ステップＳ４６）。次に、アドレスカウンタ３６は、パルス発生器３１からパルス発生通知を受信する。アドレスカウンタ３６は、パルス発生器３１からパルス発生通知を受信すると、レジスタ３５が参照するメモリ３４のアドレスをカウントアップする（ステップＳ４７）。アドレスカウンタ３６は、当該変更されたメモリ３４のアドレスを含むメモリ３４の読み出し命令を、レジスタ３５に送信する。
【００６２】
次に、パルス発生器３１は、ＣＰＵ３３から駆動の停止を示す要求を受信したか否かを判定する（ステップＳ４８）。駆動の停止を示す要求を受信した場合（ステップＳ４８、Ｙｅｓ）は、処理を終了する。駆動の停止を示す要求を受信していない場合（ステップＳ４８、Ｎｏ）は、ステップＳ４９に進む。
【００６３】
次に、比較器３７は、レジスタ３５のカウント数が、レジスタ３２の目標カウント数より大きいか否かを判定する（ステップＳ４９）。目標カウント数より大きい場合（ステップＳ４９、Ｙｅｓ）は、比較器３７は、レジスタ３５のカウント数を選択する選択信号（選択信号Ｂ）をセレクタ３８に送信する（ステップＳ５０）。ステップＳ５０の処理の後は、ステップＳ４４に戻る。
【００６４】
目標カウント数以下である場合（ステップＳ４９、Ｎｏ）は、比較器３７は、レジスタ３２の目標カウント数を選択する選択信号（選択信号Ａ）をセレクタ３８に送信する（ステップＳ５１）。セレクタ３８は、レジスタ３２の目標カウント数を、パルス発生器３１に送信する（ステップＳ５２）。ステップＳ５２の処理の後は、ステップＳ４６に戻る。
【００６５】
モータ制御装置３００が、図１０のモータ制御情報によってモータを制御する場合のパルスの例は、図８と同様である。
【００６６】
本実施形態のモータ制御装置３００は、カウント数に基づいて、最初は制御テーブルに沿った加速又は減速を行い、途中から目標カウント数によりモータを制御する。これにより、より細かいモータの制御が可能になる。また、本実施形態のモータ制御装置３００は、制御テーブルにないカウント数を使用することができる。言い換えると、本実施形態のモータ制御装置３００は、制御テーブルのサイズを抑えることができる。また、本実施形態のモータ制御装置３００は、演算手段が比較器３７のみであり、簡易な構成でモータを細かく制御することができる。
【符号の説明】
【００６７】
１  パルス発生器
２  レジスタ
３  ＣＰＵ
４  メモリ
５  レジスタ
６  アドレスカウンタ
７  比較器
２１  パルス発生器
２２  レジスタ
２３  ＣＰＵ
２４  メモリ
２５  レジスタ
２６  アドレスカウンタ
２７  比較器
２８  レジスタ
２９  セレクタ
３１  パルス発生器
３２  レジスタ
３３  ＣＰＵ
３４  メモリ
３５  レジスタ
３６  アドレスカウンタ
３７  比較器
３８  セレクタ
１００  モータ制御装置
２００  モータ制御装置
３００  モータ制御装置
４００  モータドライバ
【先行技術文献】
【特許文献】
【００６８】
【特許文献１】特開２００９−３１４９号公報
【図１】
2014236557.tif 000003
【図２】
2014236557.tif 000004
【図３】
2014236557.tif 000005
【図４】
2014236557.tif 000006
【図５】
2014236557.tif 000007
【図６】
2014236557.tif 000008
【図７】
2014236557.tif 000009
【図８】
2014236557.tif 000010
【図９】
2014236557.tif 000011
【図１０】
2014236557.tif 000012
【図１１】
2014236557.tif 000013