しかしながら、図38(a)で説明したような、エンコーダエッジ検出毎にPWM値を一定の初期値(start_pwm1)にリセットする制御方法だと、DCモータの負荷が変動したときに安定した動作(駆動)ができなくなるおそれがあった。
即ち、例えばDCモータの負荷が大きくなると、図38(b)に示すように、減速開始位置に到達するまでに要する時間が長くなってしまうおそれがある。図38(b)は、時刻t1にてDCモータの負荷が増加し始める場合を示しており、図示の如く、時刻t1以降はエンコーダエッジ検出間隔が長くなってくる。即ち、負荷が増加しているにも拘わらず、エンコーダエッジ検出毎にPWM値が初期値start_pwm1にリセットされてしまうため、必要なトルクを発生させるまでの時間が長くなり、結果として駆動対象の駆動速度が遅くなってしまうのである。
負荷の増加がさらに大きくなると、エンコーダエッジ検出毎に駆動対象が停止→駆動を繰り返すようになるおそれもあり、そうなると、振動や異音などの不具合が発生してしまう。
このようにDCモータの負荷が変化(増加)する場合の一例として、図37で説明したインクジェットプリンタの記録機構100におけるキャッピング動作時が挙げられる。既述の通り、記録機構100におけるキャッピングは、キャリッジ102がホームポジションに戻る際にキャップ121をスロープ123に沿って右側に引っ張っていくことにより行われる。つまり、キャリッジ102がホームポジションに戻っていくにつれて、DCモータにはバネ122に起因して負荷の増加が生じるのである。そのため、記録終了からキャッピング動作完了までの時間が長くなったり、キャッピング中に振動や異音が発生したり、場合によってはホームポジションに到達する前にキャリッジ102が停止してキャッピングが不完全になってしまうなどのおそれがある。
逆に、DCモータ負荷の変動として、図38(b)とは逆に負荷が小さくなることも考えられる。その場合、エンコーダエッジの検出間隔は早くなるためPWM値は過度に上昇するおそれはないが、負荷が小さいにも拘わらず常にstart_pwm1以上のPWM値によってDCモータが制御されているため、ある一定速度以下に制御することが不可能となることが考えられる。そして、あまりにも負荷が軽すぎると、停止目標位置を過ぎて停止するなどの停止精度の悪化が生じる可能性がある。
本発明は上記課題に鑑みなされたものであり、モータにより駆動される駆動対象が一定量駆動される毎にモータの駆動力を予め設定した初期駆動力から一定周期で一定量ずつ増加させるモータ制御を行うにあたり、モータ負荷の増加或いは減少等の変動があっても安定して駆動対象を駆動することが可能なモータ制御方法及び制御装置を提供することを目的とする。
上記課題を解決するためになされた請求項1記載の発明は、モータにより駆動される駆動対象が一定量駆動される毎に、モータの駆動力を予め設定した初期駆動力から所定の周期で所定の増分量ずつ増加させるモータ制御方法であって、モータが駆動対象を駆動する際に想定されるモータの負荷変動に基づいて、予め、初期駆動力のプロファイルまたは上記増分量と上記周期の比率である駆動力の変化率のプロファイルのいずれか一方を設定しておく。これら各プロファイルはいずれも、駆動対象を目標駆動速度で駆動するために、上記負荷変動に基づき、駆動対象の位置に応じて設定する。
そして、駆動対象が上記一定量駆動される毎に、設定されたプロファイルにおけるその時の駆動対象の位置に対応したデータに従って、そのデータに対応した初期駆動力または変化率のいずれか一方を変化させる。
即ち、駆動対象の一定量駆動後、モータの駆動力(モータに与えられる、駆動対象を駆動するための駆動力)が初期駆動力から所定周期で所定の増分量ずつ増加していくと、次にまた駆動対象が一定量駆動されたときは、その一定量駆動されるのに要した時間が上記所定周期より短くない限り、モータの駆動力は当然ながら初期駆動力より増加していることになる。そこで、一定量駆動される毎にその時のモータの駆動力を再び初期駆動力に設定するのである。
そして、本発明では、初期駆動力及び変化率をいずれも固定された一定値とするのではなく、いずれか一方について、モータが駆動対象を駆動する際に予め想定される負荷変動に基づいて、駆動対象の位置に応じたプロファイルを設定しておく。例えば、駆動対象の駆動が開始されてから終了(停止)するまでの間にモータ負荷が徐々に増加していくことが予め想定されるのであれば、モータ負荷が増加しても駆動対象が目標駆動速度(例えば常に一定速度)で駆動するよう、駆動対象が一定量駆動される毎に初期駆動力又は変化率のいずれかが徐々に増加するようなプロファイルを設定することが考えられる。
そして、駆動対象が一定量駆動される毎に、プロファイルとして設定されている、その時の駆動対象の位置に対応したデータ(例えばその位置に対応した初期駆動力または変化率の値)に従って、次の一定量駆動における初期駆動力または変化率を変化させるのである。
従って、請求項1のモータ制御方法によれば、駆動対象を駆動する際に想定されるモータの負荷変動に基づいて、駆動対象を目標駆動速度で駆動させるためのプロファイルを設定し、そのプロファイルに基づいてモータが駆動対象を駆動するという、いわゆるフィードフォワード制御がなされるため、安定して駆動対象を駆動することが可能となる。
尚、上記プロファイルは、例えば、駆動対象の位置毎の初期駆動力または変化率の値そのものであってもよいし、初期駆動力または変化率の基準値(初期値)を決めておいてその基準値に対してどれだけ増加(或いは減少)すべきかを示す補正値であってもよい。また例えば、想定される負荷変動に基づいてプロファイルとして設定する初期駆動力または変化率を駆動対象の位置の関数として表せるならば、その関数自体をプロファイルとして設定しておき、駆動対象が一定量駆動される毎に、そのプロファイル即ち関数式を用いてその時の位置に対するデータ(初期駆動力若しくは変化率、又はこれらの補正値など)を求めるようにしてもよい。
また、本発明でいう「モータ」とは、例えばDCモータ或いはACモータであってもよく、ステップモータのように矩形パルスによってステップ状に駆動されるモータを除き、種々のモータを含むものとする。また、プロファイルによる初期駆動力または変化率の変化は、一定量駆動される毎に必ず変化させるようにする必要はなく、駆動対象が目標駆動速度にて駆動している場合など、前回一定量駆動されたときの値をそのまま用いる方が適切であればそのように(前回から変化させないように)してもよい。後述の請求項2における「プロファイルが設定されていない他方を変化させる」場合についても同様である。
ここで、上記のように初期駆動力または変化率のいずれか一方をプロファイルに従って変化させる場合、プロファイルが設定されない他方については、例えば請求項2に記載のように、駆動対象が一定量駆動される毎に、駆動対象が目標駆動速度にて駆動されるよう、該一定量駆動された時の駆動対象の駆動状態に応じて変化させるようにしてもよい。
つまり、駆動対象が目標駆動速度で駆動するよう、初期駆動力と変化率のうち、一方は一定量駆動毎にプロファイルに従って変化させ、他方は、一定量駆動毎にその時の駆動状態(例えば駆動速度、モータの駆動力など)に従って変化させるのである。
従って、請求項2のモータ制御方法によれば、請求項1のフィードフォワード制御に加えてさらに一定量駆動毎の駆動状態に応じた変化率の制御もなされるため、外乱や誤差等の影響による想定外の負荷変動が生じても、その負荷変動による制御性悪化を抑制することができる。
初期駆動力または変化率のどちらに対してプロファイルを設定するかは適宜決めることができるが、例えば請求項3に記載のように初期駆動力に対してプロファイルを設定すれば、変化率に対してプロファイルを設定する場合に比べてより安定した駆動が可能となる。
初期駆動力をプロファイルによって変化させるということは即ち、モータに与えるトルクの最小値を変化させることである。そのため、初期駆動力をプロファイルによって変化させると共に変化率については一定量駆動時の駆動状態に応じて変化させるようにすれば、モータの負荷が急変するような場合に対する即応性に特に優れ、負荷の急変が生じてもそれに迅速に追従できる。しかも、想定外の負荷変動に対しては変化率を変化させることで追従するため、駆動の安定性を向上できる。
ところで、初期駆動力についてプロファイルが設定されている場合における、駆動対象の一定量駆動毎の駆動状態に応じた変化率の変化は、より具体的には、例えば請求項4に記載のようにその一定量駆動されるのに要した時間に応じて変化させるようにしてもよいし、請求項5に記載のように駆動速度に応じて変化させるようにしてもよいし、請求項6に記載のようにモータの駆動力に応じて変化させるようにしてもよい。
即ち、請求項4に記載の発明は、請求項2記載のモータ制御方法であって、プロファイルは初期駆動力に対して設定され、駆動対象が一定量駆動される毎に、該一定量駆動されるのに要した時間に応じて、駆動対象が目標駆動速度にて駆動されるよう、変化率(増分量と周期の比率)を変化させる。
例えば、モータ負荷が大きくて駆動対象の駆動速度が遅くなると、一定量駆動するのに要する時間も長くなり、その間、モータの駆動力は所定の変化率で増加していく。つまり、駆動速度が遅いほど、一定量駆動した時点でのモータの駆動力は大きくなっていることになる。一方、例えばモータ負荷が小さくて駆動対象の駆動速度が速くなると、一定量駆動するのに要する時間は短くなる。つまり、駆動速度が速いほど、一定量駆動した時点でのモータの駆動力は小さいことになる。そのため、例えば一定量駆動するのに要した時間が長いほど駆動力の変化率を大きくするといったように、駆動対象が目標駆動速度で駆動されるように駆動力の変化率を変化させるのである。
従って、請求項4のモータ制御方法によれば、駆動対象が一定量駆動する毎に、初期駆動力がプロファイルに従って変化すると共に、その一定量駆動されるのに要した時間に応じて駆動力の変化率も変化するため、負荷変動に対する迅速な追従と、外乱・誤差等の影響による制御性悪化の防止とが共に実現され、負荷変動によらず安定した駆動対象の駆動が可能となる。
そしてこの場合、変化率の変化は、具体的には、例えば請求項7に記載のように、駆動対象が一定量駆動されるのに要した時間が予め設定した経過時間上限閾値より長い場合に変化率を増加させるか、若しくは、駆動対象が一定量駆動されるのに要した時間が予め設定した経過時間下限閾値より短い場合に変化率を減少させるか、のうち少なくとも一方を実行するようにしてもよい。
前者を実行するようにすれば、モータの負荷が大きい等の原因によって一定量駆動するのに要する時間が長くなった場合は変化率を増加させることができ、後者を実行するようにすれば、逆にモータ負荷が小さい等の原因によって一定量駆動するのに要する時間が短くなった場合は変化率を減少させることができる。そのため、モータ負荷の変動によらず、より安定して駆動対象を駆動することが可能となる。
そして、駆動力の変化率を上記条件に従って増加或いは減少させる際の具体的方法としては、例えば請求項10に記載のように、変化率を増加させる場合は予め設定した一定の基準増加量だけ増加させ、減少させる場合は予め設定した一定の基準減少量だけ減少させるようにしてもよい。このように増加量・減少量を一定にすれば、変化率の変化をより簡易的に行うことが可能となる。
また例えば、請求項11に記載のように、変化率を増加させる場合は、駆動対象が一定量駆動されるのに要した時間と経過時間上限閾値との差が大きくなるに従って連続的又は段階的に大きくなるように増加量を設定し、変化率を減少させる場合は、経過時間下限閾値と駆動対象が一定量駆動されるのに要した時間との差が大きくなるに従って連続的又は段階的に小さくなるように減少量を設定するようにしてもよい。このようにすれば、そのときの駆動速度に応じてきめ細かに変化率を変化させることが可能となり、駆動対象をより早く所望の速度(目標駆動速度)にすることが可能となる。
次に、請求項5記載の発明は、請求項2記載のモータ制御方法であって、プロファイルは初期駆動力に対して設定され、駆動対象が一定量駆動される毎に、該一定量駆動された時の駆動対象の駆動速度に応じて、駆動対象が目標駆動速度にて駆動されるよう、変化率(増分量と周期の比率)を変化させる。このようにすれば、駆動対象の一定量駆動毎にそのときの駆動速度がわかるため、この駆動速度に応じて変化率を設定すれば、請求項4と同様の効果が得られる。
そしてこの場合、変化率の変化は、具体的には、例えば請求項8に記載のように、駆動対象が一定量駆動された時の駆動速度が予め設定した速度下限閾値より小さい場合に変化率を増加させるか、若しくは、駆動対象が一定量駆動された時の駆動速度が予め設定した速度上限閾値より大きい場合に変化率を減少させるか、のうち少なくとも一方を実行するようにしてもよい。このようにすれば、モータ負荷の変動によらず、より安定して駆動対象を駆動することが可能となる。
そして、駆動力の変化率を上記条件に従って増加或いは減少させる際の具体的方法としては、例えば既述の請求項10のように行ってもよいし、また例えば、請求項12記載のように、変化率を増加させる場合は、速度下限閾値と、駆動対象が一定量駆動された時の駆動速度との差が大きくなるに従って連続的又は段階的に大きくなるようにその増加量を設定し、変化率を減少させる場合は、駆動対象が一定量駆動された時の駆動速度と速度上限閾値との差が大きくなるに従って連続的又は段階的に小さくなるようにその減少量を設定するようにしてもよい。このようにすれば、そのときの駆動速度に応じてきめ細かに変化率を変化させることが可能となり、駆動対象をより早く所望の速度(目標駆動速度)にすることが可能となる。
次に、請求項6記載の発明は、請求項2記載のモータ制御方法であって、プロファイルは初期駆動力に対して設定され、駆動対象が一定量駆動される毎に、該一定量駆動された時のモータの駆動力に応じて、駆動対象が目標駆動速度にて駆動されるよう、変化率(増分量と周期の比率)を変化させる。
即ち、請求項4記載の発明が、駆動対象が一定量駆動されるのに要した時間に応じて変化率を変化させるのに対し、本発明(請求項6)では、上記一定量駆動された時のモータの駆動力に応じて変化率を変化させるのである。一定量駆動時の駆動力が大きいほど駆動速度が遅いということであるため、この一定量駆動時の駆動力に応じて変化率を変化させれば、請求項4と同様の効果が得られる。
そしてこの場合、変化率の変化は、具体的には、例えば請求項9に記載のように、駆動対象が一定量駆動された時のモータの駆動力が予め設定した駆動力上限閾値より大きい場合に変化率を増加させるか、若しくは、駆動対象が一定量駆動された時のモータの駆動力が予め設定した駆動力下限閾値より小さい場合に変化率を減少させるか、のうち少なくとも一方を実行するようにしてもよい。
このようにすれば、モータの負荷が大きい等の原因によって駆動対象の駆動速度が遅い場合は変化率を増加させ、逆にモータ負荷が小さい等の原因によって駆動対象の駆動速度が速い場合は変化率を減少させることができるため、モータ負荷の変動によらず、より安定して駆動対象を駆動することが可能となる。
そして、駆動力の変化率を上記条件に従って増加或いは減少させる際の具体的方法としては、例えば既述の請求項10のように行ってもよいし、また例えば、請求項13に記載のように、変化率を増加させる場合は、駆動対象が一定量駆動された時のモータの駆動力と駆動力上限閾値との差が大きくなるに従って連続的又は段階的に大きくなるようにその増加量を設定し、変化率を減少させる場合は、駆動力下限閾値と駆動対象が一定量駆動された時の駆動力との差が大きくなるに従って連続的又は段階的に小さくなるようにその減少量を設定するようにしてもよい。このようにすれば、そのときの駆動速度に応じてきめ細かに変化率を変化させることが可能となり、駆動対象をより早く所望の速度(目標駆動速度)にすることが可能となる。
そして、請求項7〜13のいずれかに記載の発明における、駆動力の変化率の増加或いは減少は、具体的には、例えば請求項14に記載のように、変化率の増加は上記周期を減少させること及び上記増分量を増加させることの少なくとも一方により行い、変化率の減少は上記周期を増加させること及び上記増分量を減少させることの少なくとも一方により行うことで実現でき、周期や増分量を適宜変更することで、駆動力の変化率を所望の値に変化させることが可能となる。
次に、請求項15記載の発明は、モータにより駆動される駆動対象が一定量駆動される毎に、その旨を示す駆動検知信号を出力する駆動検知手段と、該駆動検知手段から駆動検知信号が出力される毎に、モータの駆動力を予め設定した初期駆動力から所定の周期で所定の増分量ずつ増加させるための、駆動力制御信号を出力する制御手段と、該制御手段からの駆動力制御信号に基づいてモータを回転駆動するモータ駆動手段とを備えたモータ制御装置であり、更に、プロファイル格納手段と、プロファイルデータ取得手段と、第1設定変更手段とを備えている。
プロファイル格納手段には、モータが駆動対象を駆動する際に想定される該モータの負荷変動に基づいて、駆動対象を目標駆動速度で駆動するために予め設定された、駆動対象の位置に応じた初期駆動力のプロファイルまたは上記増分量と上記周期の比率である駆動力の変化率のプロファイルのいずれか一方が格納されている。
そして、駆動検知手段から駆動検知信号が出力される毎に、プロファイルデータ取得手段が、プロファイル格納手段に格納されているプロファイルからその時の駆動対象の位置に対応したデータを取得し、その取得されたデータに従って、第1設定変更手段が、該データに対応した初期駆動力または変化率のいずれか一方を変化させる。
このように構成された請求項15のモータ制御装置によれば、請求項1記載のモータ制御方法が実現され、請求項1と同様、安定して駆動対象を駆動することが可能となる。
尚、駆動検知手段は、駆動対象が一定量駆動されるのを直接みて駆動検知信号を出力するように構成されたものに限らず、例えばモータの回転量、或いはモータの回転によって直接的若しくは間接的に駆動されるものの駆動量に基づいて、駆動対象が一定量駆動されたか否か判断し駆動検知信号を出力するように構成されたものであってもよく、結果として駆動対象が一定量駆動する毎に駆動検知信号を出力できる構成であればよい。
そして、上記のように初期駆動力または変化率のいずれか一方をプロファイルから取得されたデータに従って変化させる場合、プロファイルが設定されない他方については、例えば請求項16に記載のように第2設定変更手段によって変化させるようにしてもよい。第2設定変更手段は、駆動検知手段から駆動検知信号が出力される毎に、該駆動検知信号が出力された時の駆動対象の駆動状態(例えば駆動速度、モータの駆動力など)に応じて、駆動対象が目標駆動速度にて駆動されるよう、初期駆動力または変化率のうちプロファイル格納手段にプロファイルが格納されていない他方を変化させるものである。
このように構成された請求項16のモータ制御装置によれば、請求項2記載のモータ制御方法が実現され、請求項2と同様、外乱や誤差等の影響による想定外の負荷変動が生じても、その負荷変動による制御性悪化を抑制することができる。
そして、請求項17に記載の発明は、請求項15又は16記載のモータ制御装置であって、プロファイル格納手段には初期駆動力のプロファイルが格納されており、第1設定変更手段は、プロファイルデータ取得手段により取得されたデータに従って初期駆動力を変化させる。そのため、モータ駆動力の変化率については、駆動検知信号出力時の駆動対象の駆動状態に応じて変化されることとなる。
このように構成された請求項17のモータ制御装置によれば、請求項3記載のモータ制御方法が実現され、請求項3と同様、モータの負荷が急変するような場合に対する即応性に特に優れ、負荷の急変が生じてもそれに迅速に追従できる。しかも、想定外の負荷変動に対しては変化率を変化させることで追従するため、駆動の安定性を向上できる。
次に、請求項18記載の発明は、請求項16記載のモータ制御装置であって、プロファイル格納手段には、初期駆動力のプロファイルが格納されており、第1設定変更手段は、プロファイルデータ取得手段により取得されたデータに従って初期駆動力を変化させる。そして、第2設定変更手段は、駆動検知手段から駆動検知信号が出力される毎に、該駆動検知信号が前回出力されてから今回出力されるまでの経過時間に応じて、駆動対象が目標駆動速度にて駆動されるよう、変化率(増分量と周期の比率)を変化させる。
このように構成された請求項18のモータ制御装置によれば、請求項4記載のモータ制御方法が実現され、請求項4と同様の効果が得られる。
そしてこの場合、更に、例えば請求項21に記載のように、駆動検知手段から駆動検知信号が出力される毎に上記経過時間が予め設定した経過時間上限閾値より長いか否かを判断する経過時間判断手段を備え、第2設定変更手段は、この経過時間判断手段にて上記経過時間が経過時間上限閾値より長いと判断された場合に変化率を増加させるようにしてもよい。
また例えば、請求項22に記載のように、駆動検知手段から駆動検知信号が出力される毎に上記経過時間が予め設定した経過時間下限閾値より短いか否かを判断する経過時間判断手段を備え、第2設定変更手段は、この経過時間判断手段にて上記経過時間が経過時間下限閾値より短いと判断された場合に変化率を減少させるようにしてもよい。
また例えば、請求項23に記載のように、経過時間判断手段は、駆動検知信号出力時の上記経過時間が経過時間下限閾値より短いか否かを判断すると共にその経過時間下限閾値より大きい所定の経過時間上限閾値を越えているか否かも判断し、第2設定変更手段は、経過時間判断手段にて上記経過時間が経過時間下限閾値より短いと判断された場合は変化率を減少させ、経過時間上限閾値を越えていると判断された場合は変化率を増加させるようにしてもよい。
上記のように構成された請求項21〜23いずれかに記載のモータ制御装置によれば、請求項7記載のモータ制御方法を実現でき、請求項7と同様、モータ負荷の変動によらず、より安定して駆動対象を駆動することが可能となる。
そして、経過時間判断手段が経過時間上限閾値及び経過時間下限閾値の両方に基づく判断を行えるよう構成された請求項23記載のモータ制御装置は、更に、例えば請求項24に記載のように、第2設定変更手段が、変化率の増加及び減少を、駆動検知信号が前回出力された時の変化率に対して行い、駆動検知信号が出力された時に、経過時間判断手段にて上記経過時間が経過時間下限閾値以上であって且つ経過時間上限閾値以下と判断された場合は変化率を変化させないよう構成されたものであってもよい。
このように構成されたモータ制御装置によれば、経過時間下限閾値と経過時間上限閾値との間に所定の幅を持たせることで、変化率を増加させる場合、減少させる場合、および変化させない場合にそれぞれ任意に設定することができるため、駆動対象の安定駆動を維持しつつ、変化率を変化させる条件をよりフレキシブルに設定することが可能となり、制御の自由度が広がる。
ここで、請求項21、23又は24のいずれかに記載のモータ制御装置は、例えば請求項33に記載のように、第2設定変更手段が変化率を増加させる場合の増加量を、予め設定した一定の基準増加量としてもよい。このように構成されたモータ制御装置によれば、変化率をより簡易的に変化(増加)させることが可能となる。
また、請求項21、23又は24のいずれかに記載のモータ制御装置は、例えば請求項35に記載のように、経過時間判断手段によって上記経過時間が経過時間上限閾値より長いと判断されたときに、該経過時間と経過時間上限閾値との差である第一差分値を演算する第一差分値演算手段を備え、第2設定変更手段は、変化率を増加させる場合の増加量を、第一差分値演算手段にて演算される第一差分値が大きいほど変化率が連続的又は段階的に大きくなるよう、該第一差分値に基づいて設定するように構成してもよい。
つまり、駆動検知信号出力時の上記経過時間が経過時間上限閾値よりどれだけ長いかによって変化率の増加量を設定するのである。このようにすれば、そのときの駆動対象の駆動速度に応じたきめ細かな変化率の設定が可能となり、駆動対象をより早く所望の速度(目標駆動速度)にすることが可能となる。
一方、請求項22〜24いずれかに記載のモータ制御装置は、例えば請求項34に記載のように、第2設定変更手段が変化率を減少させる場合の減少量を、予め設定した一定の基準減少量としてもよく、このように構成されたモータ制御装置によれば、変化率をより簡易的に変化(減少)させることが可能となる。
また、請求項22〜24いずれかに記載のモータ制御装置は、例えば請求項36に記載のように、経過時間判断手段によって上記経過時間が経過時間下限閾値より短いと判断されたときに、経過時間下限閾値と該経過時間との差である第二差分値を演算する第二差分値演算手段を備え、第2設定変更手段は、変化率を減少させる場合の減少量を、第二差分値演算手段にて演算される第二差分値が大きいほど変化率が連続的又は段階的に小さくなるよう、該第二差分値に基づいて設定するように構成してもよい。
つまり、駆動検知信号出力時の上記経過時間が経過時間下限閾値よりどれだけ短いかによって変化率の減少量を設定するのである。このようにすれば、請求項35と同様、そのときの駆動対象の駆動速度に応じたきめ細かな変化率の設定が可能となり、駆動対象をより早く所望の速度(目標駆動速度)にすることが可能となる。
次に、請求項19記載の発明は、請求項16記載のモータ制御装置であって、プロファイル格納手段には、初期駆動力のプロファイルが格納されており、第1設定変更手段は、プロファイルデータ取得手段により取得されたデータに従って初期駆動力を変化させる。そして、第2設定変更手段は、駆動検知手段から駆動検知信号が出力される毎に、該出力時の前記駆動対象の駆動速度に応じて、駆動対象が目標駆動速度にて駆動されるよう、変化率(増分量と周期の比率)を変化させる。
このように構成された請求項19のモータ制御装置によれば、請求項5記載のモータ制御方法が実現され、請求項5と同様の効果が得られる。
そしてこの場合、更に、例えば請求項25に記載のように、駆動検知信号が出力される毎に該出力時の前記駆動速度が予め設定した速度下限閾値より小さいか否かを判断する速度判断手段を備え、第2設定変更手段は、速度判断手段にて速度下限閾値より小さいと判断された場合に変化率を増加させるようにしてもよい。
また例えば、請求項26に記載のように、駆動検知信号が出力される毎に該出力時の駆動速度が予め設定した速度上限閾値より大きいか否かを判断する速度判断手段を備え、第2設定変更手段は、速度判断手段にて速度上限閾値より大きいと判断された場合に変化率を減少させるようにしてもよい。
また例えば、請求項27に記載のように、速度判断手段は、駆動検知信号出力時の駆動対象の駆動速度が速度上限閾値より大きいか否かを判断すると共にその速度上限閾値より小さい速度下限閾値を下回っているか否かも判断し、第2設定変更手段は、速度判断手段にて駆動対象の駆動速度が速度下限閾値を下回っていると判断された場合は変化率を増加させ、速度上限閾値より大きいと判断された場合は変化率を減少させるようにしてもよい。
上記のように構成された請求項25〜27いずれかに記載のモータ制御装置によれば、請求項8記載のモータ制御方法を実現でき、請求項8と同様、モータ負荷の変動によらず、より安定して駆動対象を駆動することが可能となる。
そして、速度判断手段が速度上限閾値及び速度下限閾値の両方に基づく判断を行えるよう構成された請求項27記載のモータ制御装置は、更に、例えば請求項28に記載のように、第2設定変更手段は、変化率の増加及び減少を駆動検知信号が前回出力された時の変化率に対して行い、駆動検知信号が出力された時、速度判断手段にて駆動速度が速度下限閾値以上であって且つ速度上限閾値以下と判断された場合は変化率を変化させないよう構成されたものであってもよい。
このように構成されたモータ制御装置によれば、速度下限閾値と速度上限閾値との間に所定の幅を持たせることで、変化率を増加させる場合、減少させる場合、および変化させない場合とをそれぞれ任意に設定することができるため、駆動対象の安定駆動を維持しつつ、変化率を変化させる条件をよりフレキシブルに設定することが可能となり、制御の自由度が広がる。
ここで、請求項25,27又は28のいずれかに記載のモータ制御装置についても、上述した請求項33に記載のように、第2設定変更手段が変化率を増加させる場合の増加量を予め設定した一定の基準増加量としてもよい。
また、請求項25,27又は28のいずれかに記載のモータ制御装置は、例えば請求項37に記載のように、速度判断手段によって駆動検知信号出力時の駆動速度が速度下限閾値より小さいと判断されたときに、速度下限閾値と該駆動速度との差である第一差分値を演算する第一差分値演算手段を備え、第2設定変更手段は、変化率を増加させる場合の増加量を、第一差分値演算手段にて演算される第一差分値が大きいほど変化率が連続的又は段階的に大きくなるよう、該第一差分値に基づいて設定するように構成してもよい。
つまり、駆動検知信号検出時の駆動速度が速度下限閾値よりどれだけ小さいかによって変化率の増加量を設定するのである。このようにすれば、そのときの駆動対象の駆動速度に応じてきめ細かに変化率を変化させることが可能となり、駆動対象をより早く所望の速度(目標駆動速度)にすることが可能となる。
一方、請求項26〜28のいずれかに記載のモータ制御装置についても、上述した請求項34のように、第2設定変更手段が変化率を減少させる場合の減少量を予め設定した一定の基準減少量としてもよい。
また、請求項26〜28のいずれかに記載のモータ制御装置は、例えば請求項38に記載のように、速度判断手段によって駆動対象の駆動速度が速度上限閾値より大きいと判断されたときに、該駆動速度と速度上限閾値との差である第二差分値を演算する第二差分値演算手段を備え、第2設定変更手段は、変化率を減少させる場合の減少量を、第二差分値演算手段にて演算される第二差分値が大きいほど変化率が連続的又は段階的に小さくなるよう、該第二差分値に基づいて設定するように構成してもよい。
つまり、駆動検知信号検出時の駆動速度が速度上限閾値よりどれだけ大きいかによって変化率の減少量を設定するのである。このようにすれば、そのときの駆動対象の駆動速度に応じてきめ細かに変化率を変化させることが可能となり、駆動対象をより早く所望の速度(目標駆動速度)にすることが可能となる。
次に、請求項20記載の発明は、請求項16記載のモータ制御装置であって、プロファイル格納手段には、初期駆動力のプロファイルが格納されており、第1設定変更手段は、プロファイルデータ取得手段により取得されたデータに従って初期駆動力を変化させる。そして、第2設定変更手段は、駆動検知手段から駆動検知信号が出力される毎に、該出力時の前記駆動力に応じて、駆動対象が目標駆動速度にて駆動されるよう、変化率を変化させる。
このように構成された請求項20のモータ制御装置によれば、請求項6記載のモータ制御方法が実現され、請求項6と同様の効果が得られる。
そしてこの場合、更に、例えば請求項29に記載のように、駆動検知信号が出力される毎に該出力時の駆動力が予め設定した駆動力上限閾値より大きいか否かを判断する駆動力判断手段を備え、第2設定変更手段は、この駆動力判断手段にて駆動力上限閾値より大きいと判断された場合に変化率を増加させるようにしてもよい。
また例えば、請求項30に記載のように、駆動検知信号が出力される毎に該出力時の駆動力が予め設定した駆動力下限閾値より小さいか否かを判断する駆動力判断手段を備え、第2設定変更手段は、駆動力判断手段にて駆動力下限閾値より小さいと判断された場合に変化率を減少させるようにしてもよい。
また例えば、請求項31に記載のように、駆動力判断手段は、駆動検知信号出力時の駆動力が駆動力下限閾値より小さいか否かを判断すると共にその駆動力下限閾値より大きい所定の駆動力上限閾値を越えているか否かを判断し、第2設定変更手段は、駆動力判断手段にて駆動力上限閾値を越えていると判断された場合は変化率を増加させ、駆動力下限閾値より小さと判断された場合は変化率を減少させるようにしてもよい。
上記のように構成された請求項29〜31いずれかに記載のモータ制御装置によれば、請求項9記載のモータ制御方法を実現でき、請求項9と同様、モータ負荷の変動によらず、より安定して駆動対象を駆動することが可能となる。
そして、駆動力判断手段が駆動力上限閾値及び駆動力下限閾値の両方に基づく判断を行えるよう構成された請求項31記載のモータ制御装置は、更に、例えば請求項32に記載のように、第2設定変更手段は、変化率の増加及び減少を、駆動検知信号が前回出力された時の変化率に対して行い、駆動検知信号が出力された時、駆動力判断手段にて駆動力が駆動力下限閾値以上であって且つ駆動力上限閾値以下と判断された場合は、変化率を変化させないように構成されたものであってもよい。
このように構成されたモータ制御装置によれば、駆動力下限閾値と駆動力上限閾値との間に幅を持たせることで、変化率を増加させる場合、減少させる場合、および変化させない場合とをそれぞれ任意に設定することができるため、駆動対象の安定駆動を維持しつつ、変化率を変化させる条件をよりフレキシブルに設定することが可能となり、制御の自由度が広がる。
ここで、請求項29,31又は32のいずれかに記載のモータ制御装置についても、上述した請求項33に記載のように第2設定変更手段が変化率を増加させる場合の増加量を予め設定した一定の基準増加量としてもよい。
また、請求項29,31又は33のいずれかに記載のモータ制御装置は、例えば請求項39に記載のように、駆動力判断手段によって駆動検知信号出力時の駆動力が駆動力上限閾値より大きいと判断されたときに、該駆動力と駆動力上限閾値との差である第一差分値を演算する第一差分値演算手段を備え、第2設定変更手段は、変化率を増加させる場合の増加量を、第一差分値演算手段にて演算される第一差分値が大きいほど変化率が連続的又は段階的に大きくなるよう、該第一差分値に基づいて設定するように構成してもよい。
つまり、駆動検知信号出力時のモータの駆動力が駆動力上限閾値よりどれだけ大きいかによって変化率の増加量を設定するのである。このようにすれば、そのときの駆動対象の駆動速度に応じてきめ細かに変化率を変化させることが可能となり、駆動対象をより早く所望の速度(目標駆動速度)にすることが可能となる。
一方、請求項30〜32のいずれかに記載のモータ制御装置についても、上述した請求項34のように、第2設定変更手段が変化率を減少させる場合の減少量を予め設定した一定の基準減少量としてもよい。
また、請求項30〜32いずれかに記載のモータ制御装置は、例えば請求項40に記載のように、駆動力判断手段によって駆動検知信号出力時の駆動力が駆動力下限閾値より小さいと判断されたときに、駆動力下限閾値と該駆動力との差である第二差分値を演算する第二差分値演算手段を備え、第2設定変更手段は、変化率を減少させる場合の減少量を、第二差分値演算手段にて演算される第二差分値が大きいほど変化率が連続的又は段階的に小さくなるよう、該第二差分値に基づいて設定するように構成してもよい。
つまり、駆動検知信号出力時のモータの駆動力が駆動力下限閾値よりどれだけ小さいかによって変化率の減少量を設定するのである。このようにすれば、請求項39と同様、そのときの駆動対象の駆動速度に応じてきめ細かに変化率を変化させることが可能となり、駆動対象をより早く所望の速度(目標駆動速度)にすることが可能となる。
そして、請求項21,23,24,25,27,28,29,31,32,33,35,37又は39のいずれかに記載のモータ制御装置における、第2設定変更手段による変化率の増加は、例えば請求項41に記載のように、前記周期を短くすること及び前記増分量を増加させることの少なくとも一方により行うことができる。
この場合、請求項33記載のモータ制御装置における第2設定変更手段は、請求項43に記載のように、変化率の増加を、前期周期を一定量短くすること及び前記増分量を一定量増加させることの少なくとも一方により行うこととなり、請求項35、37又は39のいずれかに記載のモータ制御装置における、第2設定変更手段による変化率の増加は、請求項45に記載のように、第一差分値が大きいほど周期が連続的又は段階的に短くなるように該周期を設定すること、及び第一差分値が大きいほど増分量が連続的又は段階的に大きくなるように該増分量を設定することの少なくとも一方により行うこととなる。
更にこの場合、例えば請求項47に記載のように、第2設定変更手段が、第一差分値に基づいて前記周期を設定する周期設定手段と、該周期設定手段により設定された周期が所定の周期下限値より短いか否かを判定する周期判定手段とを備え、該周期判定手段により周期下限値以上である旨が判定されたならばその設定された周期を用いることにより変化率の増加を行い、周期判定手段により周期下限値より短いと判定されたならば、周期を該周期下限値に設定変更すると共に、該周期下限値と、周期設定手段により設定された周期との差に応じて増分量を増加させることにより、変化率の増加を行うものとして構成されたものであってもよい。
つまり、第一差分値に基づいて設定された周期が周期下限値に満たない短いものであった場合は、周期は周期下限値に設定変更して、周期下限値と本来設定された周期との差に相当する変化率の増加分は、上記増分量を増加させることにより行うのである。
従って、このように構成されたモータ制御装置によれば、設定された周期が非常に短くて実現困難な場合には増分量を増加させることで補うため、変化率の増加を確実に行うことが可能となる。
また、請求項22〜24、請求項26〜28、請求項30〜32、請求項34、36、38又は40のいずれかに記載のモータ制御装置における、第2設定変更手段による変化率の減少は、例えば請求項42に記載のように、前記周期を長くすること及び前記増分量を減少させることの少なくとも一方により行うことができる。
この場合、請求項34記載のモータ制御装置における第2設定変更手段は、請求項44に記載のように、変化率の減少を、前記周期を一定量長くすること及び前記増分量を一定量減少させることの少なくとも一方により行うこととなり、請求項36、38又は40のいずれかに記載のモータ制御装置における、第2設定変更手段による変化率の減少は、請求項46に記載のように、第二差分値が大きいほど前記周期が連続的又は段階的に長くなるように該周期を設定すること、及び前記第二差分値が大きいほど前記増分量が連続的又は段階的に小さくなるように該増分量を設定することの少なくとも一方により行うこととなる。
ここで、請求項18〜47いずれかに記載のモータ制御装置は、例えば請求項48に記載のように、モータ駆動手段が、入力されるPWM信号に対応した駆動力にてモータを回転駆動するよう構成されたものであって、制御手段が、駆動力制御信号としてPWMデューティ値を示すPWM信号を出力するよう構成されたものであって駆動検知信号が出力される毎にPWMデューティ値を上記初期駆動力に対応した初期PWMデューティ値から所定周期で所定のPWM増分量ずつ増加させるよう構成されたものであってもよい。このPWM増分量は、既述の請求項18〜47における増分量に対応したものである。モータの制御方法として、PWM制御方法は一般によく知られた、電力変換効率の優れた方法であるため、本発明(請求項18〜47)をPWM制御法によってモータ制御を行う場合に適用するとより効果的である。
そして、既述の請求項45記載のモータ制御装置が、上記のようにPWM制御によってモータの制御がなされるよう構成されている場合は、例えば請求項49に記載のように、前記周期を、PWM信号を構成するパルスの幅の整数倍とし、第2設定変更手段が、第一差分値に基づいて前期周期をパルスの幅の何倍分短くすべきかを表すパルス幅短縮量を演算する演算手段と、該演算手段により演算されたパルス幅短縮量の整数部分に基づいて周期を短く設定する周期短縮手段と、パルス幅短縮量の小数部分に応じてPWM増分量を増加させる増分量増加手段とを備えたものとして構成してもよい。
また、既述の請求項46記載のモータ制御装置が、上記(請求項48)のようにPWM制御によってモータの制御がなされるよう構成されている場合は、例えば請求項50に記載のように、前記周期を、PWM信号を構成するパルスの幅の整数倍とし、第2設定変更手段が、第二差分値に基づいて前記周期をパルスの幅の何倍分長くすべきかを表すパルス幅増加量を演算する演算手段と、該演算手段により演算されたパルス幅増加量の整数部分に基づいて周期を長く設定する周期増加手段と、パルス幅増加量の小数部分に応じてPWM増分量を減少させる増分量減少手段とを備えたものとして構成してもよい。
即ち、PWMデューティ値を所定の増分量ずつ増加させる際の周期がそのPWM信号のパルス幅の整数倍であるが故に、周期の変更を細かいレベルで(連続的に)行うことが困難となり、延いては、周期の変更だけでPWM信号の変化率(駆動力の変化率)を細かく変化させるのが困難となる。
そこで、演算手段により得られたパルス幅短縮量のうち、整数部分については周期の短縮に反映させ、小数部分、即ち周期の短縮に反映できない部分については、増分量を増加させることで反映させるようにするのである。
そのため、請求項49または請求項50に記載のモータ制御装置によれば、変化率の変化を、主に周期の変更で行うと共に、周期の変更だけでは困難な微変化分については増分量の変更で補うようにしているため、変化率を精度よく変化させることができる。
ところで、モータによる駆動対象の駆動開始時を考えると、駆動開始直後からちょうど上記一定量駆動したときに必ず駆動検知信号が出力されるとは限らない。即ち、駆動検知手段が例えばエンコーダにて構成されている場合であってエンコーダからのパルス信号が駆動検知信号として出力されるよう構成されている場合、駆動開始時の駆動対象の位置によっては、駆動開始後すぐにパルス信号(駆動検知信号)が出力されることも予想される。このような場合に、駆動速度が速いと誤認されて変化率が減少されてしまうと、モータの駆動力が初期駆動力からほとんど増加していない初期段階で十分な駆動力が得られなくなり、駆動対象の駆動速度を所望の速度で駆動するまでの時間が長くなってしまう。
そこで、請求項18〜50いずれかに記載のモータ制御装置は、例えば請求項51に記載のように、第2設定変更手段が、駆動対象の駆動開始後、駆動検知手段から最初に駆動検知信号が出力された時は変化率を変更させないように構成されたものであるとよい。このように構成されたモータ制御装置によれば、駆動開始後の最初の駆動検知信号に対しては駆動力の変化率を変化させない(低減させない)ため、起動時のトルクを十分に確保でき、駆動対象の駆動速度をより迅速に所望の目標駆動速度にすることが可能となる。
以下に、本発明の好適な実施形態を図面に基づいて説明する。
[第1実施形態]
図1は、本発明が適用されたモータ制御装置の概略構成を示すブロック図である。図1のモータ制御装置10は、例えば図37で説明したインクジェットプリンタに搭載され、キャリッジ102を駆動するモータ110(DCモータ)を制御するためのものである。そして、本実施形態では、モータ110の制御全体のうち、記録終了後に待機領域内でキャリッジ102が右側に移動してキャッピングが行われる際の微小速度制御について説明する。
本実施形態のモータ制御装置10によるモータ110の微小速度制御は、基本的には、図38で説明した制御方法と同様であり、駆動開始時はPWM値(本発明の駆動力に相当)を所定の駆動開始時PWM値(start_pwm1)に設定し、その後そのPWM値を一定周期(PWM値更新間隔)Tp毎に所定の駆動時PWM増分量a_param(初期値は駆動時PWM初期増分量accel_param)ずつ増加させていく。そして、エンコーダエッジを検出してエンコーダエッジ検出信号(enc_trg)(本発明の駆動検知信号に相当)が出力されると、PWM値を再び初期値start_pwm1にリセットして、以後同様に一定周期TpでPWM値を増加させていく。
このような制御方法において、モータ110がキャリッジ102を駆動する際に駆動中のモータの負荷が変動すると、その影響を受けて、一定範囲を駆動させるのにかかる駆動時間が長くなったり、停止精度が悪化したり、或いは騒音や振動が生じるといった問題が生じる。
一方、上記キャッピングのためのキャリッジ102の駆動時は、既述の通り、キャリッジ102がホームポジションに戻っていくにつれて(即ちノズル部107へキャップ121が覆われていくにつれて)モータ110の負荷も徐々に増加していく。つまり、キャッピング時のモータ負荷の変動傾向(ここでは増加傾向)は予め想定できる。
そこで本実施形態では、上記キャッピング時のモータ110の制御(延いてはキャリッジ102の制御)にあたり、キャリッジ102の駆動中に想定されるモータ110の負荷変動に基づいて、予め、キャリッジ102の位置に応じて(詳細にはその位置におけるモータ110の負荷に基づいて)駆動開始時PWM値(start_pwm1)を適切な値に変化させるための補正用のデータ(以下「初期PWM補正値」という)を設定し、各位置毎の初期PWM補正値を初期PWM補正値プロファイル(cmp_array)としてプロファイル格納部9に格納しておく。この「位置」は、エンコーダエッジが検出される位置である。即ち、エンコーダエッジが検出される各位置に対応した各初期PWM補正値の配列がプロファイル化されているのである。
そして、キャリッジ102の駆動中、エンコーダエッジが検出される毎に、そのときのキャリッジ102の位置に対応した初期PWM補正値(cmp_micr_duty)をプロファイル格納部9に格納された初期PWM補正値プロファイル(cmp_array)9から取得し、その初期PWM補正値に基づいて駆動開始時PWM値(start_pwm1)を補正する。この補正後の値が、エンコーダエッジ検出によるリセット後の最初のPWM値である初期PWM値(start_pwm)となる。
更に本実施形態では、PWM値を一定周期Tpで増加させていく際の変化率を、accel_param/Tpに固定するのではなく、エンコーダエッジ検出毎に前回エッジ検出時から今回エッジ検出時までの時間であるエッジ間隔時間(enc_period)に応じて変化させるようにしている。
その具体的方法として、本実施形態では、駆動時PWM増分量(a_param)を、その初期値である駆動時PWM初期増分量(accel_param)に固定するのではなくエッジ間隔時間(enc_period)に応じて変化させる。
そこで、以下の説明では、従来の制御方法と異なる部分、即ち、エンコーダエッジ検出毎の初期PWM値(start_pwm)を予め設定された駆動開始時PWM値(start_pwm1)に固定せず初期PWM補正値プロファイル(cmp_array)に従って補正すること、及び、エンコーダエッジ検出毎にエッジ間隔時間(enc_period)に応じて駆動時PWM値増分量(a_param)を変化させることを中心に詳述する。
図1に示す如く、本実施形態のモータ制御装置10は、インクジェットプリンタ全体の制御を統括するCPU1と、モータ110の回転速度や回転方向等を制御するPWM信号を生成するASIC2と、ASIC2にて生成されたPWM信号に基づいてモータ110を駆動するモータ駆動ドライバ回路11とから構成されている。
モータ駆動ドライバ回路11の詳細は図2に示す通りであり、4基のスイッチング素子S1〜S4によりHブリッジ回路が構成されたものである。このHブリッジ回路の各スイッチング素子S1〜S4が、ASIC2内の駆動用信号生成部8にて生成されたPWM信号によってオン・オフ制御されることにより、モータ110が駆動される。尚、各スイッチング素子S1〜S4は、例えばFET等の半導体スイッチング素子が用いられる。
ASIC2の内部には、モータ110の制御に用いる各種パラメータが格納される動作モード設定レジスタ群3が備えられている。この動作モード設定レジスタ群3は、モータ110を起動するための起動設定レジスタ21と、モータ110の回転方向を設定するための回転方向設定レジスタ22と、モータ110をPWM制御する際のPWM信号の周期(pwm_period)が設定されるPWM周期設定レジスタ23と、PWM値を増加させる周期Tpを決めるために必要となる既述の定加算タイミング(pwm_reload_count)が設定される定加算タイミング設定レジスタ24と、減速開始位置及び制動開始位置を設定するために必要な各種データが設定される位置設定レジスタ群25と、モータ110を駆動する際の各種PWM値が設定されるPWM値設定レジスタ群26と、周期Tp毎にPWM値を増加又は減少させる際の増分量・減分量が設定されるPWM増減量設定レジスタ群27と、PWM値を制限する各種データが設定される制限PWM設定レジスタ群28と、エンコーダエッジ検出後次のエッジ検出時までの間のPWM値の増分量である駆動時PWM増分量(a_param;初期値は既述のaccel_param)を補正するためのデータが設定される増分量補正値設定レジスタ群29と、エッジ検出時におけるエッジ間隔時間の長短判定に用いられる各閾値が設定されるエッジ間隔時間閾値設定レジスタ群30と、を備える。
このうち、位置設定レジスタ群25には、減速開始位置(decel_pos)と、制動開始位置を決めるために用いられる3つの設定値である、制動開始位置(break_pos)、制動開始エンコーダ周期(set_enc_period)及び最大減速時間(set_decel_time)が、それぞれ設定される。本実施形態では、後述するように、エンコーダ105から得られる位置・周期情報に基づいて、制動開始位置に来たか、エンコーダエッジの周期が制動開始エンコーダ周期(set_enc_period)以上となったか、或いは減速開始後の経過時間が最大減速時間(set_decel_time)以上となったかの3条件のうちいずれか一つが成立した場合に、制動を開始するよう設定されている。
また、PWM値設定レジスタ群26には、駆動開始時のPWM値(start_pwm1)と、減速開始時のPWM値(start_pwm2)と、制動開始時のPWM値(start_pwm3)と、ブレーキ時のPWM値(stop_pwm)とが設定される。
PWM増減量設定レジスタ群27には、通常駆動時(起動〜減速開始)の駆動時PWM増分量(a_param)の初期値である駆動時PWM初期増分量(accel_param)と、減速時のPWM減分量である減速時PWM減分量(decel_param)と、制動時のPWM増分量である制動時PWM増分量(break_param)とが設定される。また、制限PWM設定レジスタ群28には、PWM値の上限を示す最大PWM出力値(pwm_max_limit)と、PWM値の下限を示す最小PWM出力値(pwm_min_limit)とが設定される。
増分量補正値設定レジスタ群29には、エンコーダエッジ検出毎に次のエンコーダエッジ検出時までの駆動時PWM増分量a_paramを演算するために必要な変化率係数α及び補正定数varが設定される。
また、エッジ間隔時間閾値設定レジスタ群30には、エンコーダエッジ検出毎に次のエンコーダエッジ検出時までの駆動時PWM増分量を前回エンコーダエッジ検出時に演算されたa_paramから増加させるべきか否かを判断する基準となるエッジ間隔過剰検出閾値(det_period_max)と、逆に減少させるべきか否かを判断する基準となるエッジ間隔不足検出閾値(det_period_min)とが設定される。尚、エッジ間隔過剰検出閾値は本発明の経過時間上限閾値に相当し、エッジ間隔不足検出閾値は本発明の経過時間下限閾値に相当する。
エンコーダエッジ検出部13は、エンコーダ105からのパルス信号を取り込んでそのパルス信号のエッジ(例えば立ち上がりエッジ又は立ち下がりエッジのいずれか、若しくはその両方など)を検出してエンコーダエッジ検出信号(enc_trg)を出力するものである。
位置カウンタ14は、エンコーダエッジ検出部13が検出したエンコーダエッジをカウントすることにより、キャリッジ102の位置をそのカウント値であるエンコーダエッジカウント値(enc_count)として検出する。
周期・速度計測部16は、エンコーダエッジ検出部13からのエンコーダエッジ検出信号(enc_trg)に基づいて、そのエンコーダエッジ検出信号の周期であるエッジ間隔時間(enc_period)、及びキャリッジ102の駆動速度(enc_velocity)を演算し出力する。
ここで、エンコーダ105からのパルス信号に対する、エンコーダエッジ検出信号と、エンコーダエッジカウント値と、エッジ間隔時間と、駆動速度との関係について、図3に基づいて説明する。図示の如く、エンコーダ105は位相の異なる二種類のパルス信号を出力するよう構成されており、このうち一方(A相)のエッジが立ち上がることによって、エンコーダエッジ検出部13からエンコーダエッジ検出信号(enc_trg)が出力される。
そして、このエンコーダエッジ検出信号に基づき、位置カウンタ14にてエンコーダエッジカウント値(enc_count)がカウントされる。また、周期・速度計測部16でも、エンコーダエッジ検出信号に基づいて、図示の如くエッジ間隔時間(enc_period)が得られ、その得られた周期及びエンコーダA相の図示しないスリットの間隔とに基づいて、駆動速度(enc_velocity)が得られる。
加算タイミング生成部18は、PWM周期設定レジスタ23からのPWM周期(pwm_period)と定加算タイミング設定レジスタ24からの定加算タイミング(pwm_reload_count)とエンコーダエッジ検出部13からのエンコーダエッジ検出信号(enc_trg)とに基づいて、PWM値を上記周期Tpで増加させていくためのタイミング情報を生成して出力PWMデューティ生成部4へ出力する。
領域判定部15は、位置カウンタ14からの上記カウント数(enc_count)と、周期・速度計測部16からの周期・速度信号と、位置設定レジスタ群25に設定された各設定値とに基づいて、通常駆動させる領域にいるのか、減速させるべき領域にいるのか、或いは制動をかけるべき領域にいるのかを判断する。なお、その内部には減速時間計測タイマ15a(decel_timer)が設けられており、減速開始と共にこのタイマがスタートする。そして、計測時間が最大減速時間(set_decel_time)以上となったときにまだ制動を開始していなければ、制動を開始する。
PWM増分量補正部6は、エンコーダエッジ検出によるPWM値のリセット毎に、出力PWMデューティ生成部4に対し、そのリセット時以降の駆動時PWM増分量a_paramを補正(変更)すべきか否かの情報、或いは、補正すべき場合に具体的にどの程度補正すべきかを示す補正データを生成して出力するものである。
本実施形態では、基本的には駆動時PWM増分量a_paramがその初期値である駆動時PWM初期増分量(accel_param)に設定されるが、エンコーダエッジ検出時のエッジ間隔時間(enc_period)、即ち前回エッジ検出時から今回エッジ検出時までの時間がエッジ間隔過剰検出閾値(det_period_max)より大きい場合は、駆動時PWM増分量(a_param)を前回までの値から所定量だけ増加させるようにしている。また、エンコーダエッジ検出時のエッジ間隔時間(enc_period)がエッジ間隔不足検出閾値(det_period_min)より小さい場合は、駆動時PWM増分量(a_param)を前回までの値から所定量だけ減少させるようにしている。
初期PWMデューティ補正部8は、エンコーダエッジ検出毎に、そのときのキャリッジ102の位置であるエンコーダエッジカウント値(enc_count)に対応した初期PWM補正値(cmp_micr_duty)をプロファイル格納部9から取得して出力PWMデューティ生成部4へ出力する。
プロファイル格納部9には、エンコーダエッジが検出される位置毎の初期PWM補正値(cmp_micr_duty)が各エンコーダエッジカウント値(enc_count)と対応付けられて配列された初期PWM補正値プロファイル(cmp_array)が格納されている。本実施形態の微小速度制御においては、モータ110の負荷は、駆動開始後しばらくは一定状態が続き、キャリッジ102が備えるフックがキャップ121に引っ掛かることによりキャッピング動作が開始されてからキャップ121がノズル部107を完全に覆うまでの間は徐々に増加していく。
そこで、キャッピング動作によってモータ110の負荷に変動が生じてもキャリッジ102が所定の目標駆動速度(例えば一定速度)で駆動されるように、初期PWM補正値(cmp_micr_duty)が設定されているのである。
具体的には、キャッピング動作が開始されるまでの位置に対しては、エンコーダエッジ検出毎にリセットされる初期PWM値(start_pwm)をPWM値設定レジスタ群26に設定された駆動開始時PWM値(start_pwm1)のままとするような、例えば駆動開始時PWM初期値(start_pwm1)に対する増加分が「0」といった補正用データが設定される。また、キッピング動作が開始される位置以後に対しては、負荷上昇に合わせてエンコーダエッジ検出毎の初期PWM値(start_pwm)も上昇していくような、例えば駆動開始時PWM初期値(start_pwm1)に対する増加分を表すデータであってその増加分が徐々に上昇していくような補正用データが設定されている。そして、各初期PWM補正値(start_pwm)は、実験的な値・事前に測定等で得られた値である。
このプロファイル格納部9は、例えば動作モード設定レジスタ群3と同様のレジスタにて構成されたものであってもよいし、図示しないメインメモリ(RAM)内の領域として構成されたものであってもよい。更には、読み出し専用のROMや電気的にデータの読み書きが可能なフラッシュメモリ等に設けられた領域として構成されたものであってもよい。本実施形態では、一例として、図示しないROM又はフラッシュメモリ内の記憶領域の一部をプロファイル格納部9として機能し、ここに初期PWM補正値プロファイル(cmp_array)が格納されているものとして説明する。
出力PWMデューティ生成部4は、モータ110を駆動させるのに必要なPWM信号のPWM値を示すデータを生成して出力するものであり、PWM値設定レジスタ群26、PWM増減量設定レジスタ群27及び制限PWM設定レジスタ群28の各レジスタの設定値と、加算タイミング生成部18からのタイミング情報と、エンコーダエッジ検出部13からのエンコーダエッジ検出信号(enc_trg)と、領域判定部15からの領域情報とに基づいて、通常駆動時、減速時、制動時、ブレーキ(停止)時のそれぞれにおけるPWM値を生成する。
そして、本実施形態では更に、エンコーダエッジ検出毎に、初期PWMデューティ補正部8からの初期PWM補正値(cmp_micr_duty)に基づいて、リセット後の初期PWM値(start_pwm)を設定すると共に、駆動時PWM増分量(a_param)を補正すべきか否かの情報、或いは、補正すべき場合に具体的にどの程度補正すべきかを示す補正データをPWM増分量補正部6から取得し、必要に応じて駆動時PWM増分量の補正演算を行う。これらの具体的設定方法・演算方法については後述する。
駆動用信号生成部8は、出力PWMデューティ生成部4からのPWM値及び回転方向設定レジスタ22に設定された回転方向に応じたPWM信号を生成してモータ駆動ドライバ回路11へ出力する。これにより、モータ駆動ドライバ回路11がモータ110を駆動し、モータ110は設定されたPWM値に対応した所望の駆動力にて駆動される。各種信号処理部17は、エラー処理やCPU1に対する割り込み信号出力などを行うものである。この割り込み信号については後述する。
クロック生成部12は、エンコーダ105からのパルス信号よりも十分に短い周期のクロック信号を生成して、当該ASIC2内の各部に供給する。
上記のように構成された本実施形態のモータ制御装置10におけるモータ110の制御について、図4に基づいて説明する。図4は、本実施形態のモータ制御例を示す説明図であってモータ110の負荷が増加していく場合の制御例である。
図4に示す如く、駆動開始時のPWM初期値はstart_pwm1が設定され、その後、図39に示したように一定周期Tpでa_param(駆動開始時はaccel_param)ずつ増加していく。そして、エンコーダエッジが検出される前にPWM値がpwm_max_limitに達した場合は、その後エッジ検出まではそのpwm_max_limitに保持される。
そして、エンコーダエッジが検出される毎、即ちエンコーダエッジカウント値(enc_count)が例えば初期値0から1,2,3,・・・と増加していく毎に、PWM値は、そのときのエンコーダエッジカウント値(enc_count)に対応した初期PWM値(start_pwm)にリセットされる。より詳細には、初期PWMデューティ補正部8がプロファイル格納部9に格納された初期PWM補正値プロファイル(cmp_array)から取得した初期PWM補正値(cmp_micr_duty)を、出力PWMデューティ生成部4が、駆動開始時PWM値(start_pwm1)に加算してリセット後の新たな初期PWM値(start_pwm)とする。
本実施形態では、想定されるモータ負荷の変動に合わせて、負荷が一定状態となることが想定される範囲、即ちenc_count≦4の範囲では初期PWM値(start_pwm)が変化しないよう、初期PWM補正値(cmp_micr_duty)を0に設定している。そして、モータ負荷が徐々に増加していくことが想定される範囲、即ちenc_count≧5の範囲では初期PWM値(start_pwm)も徐々に増加していくよう、初期PWM補正値(cmp_micr_duty)を例えばvarp*(enc_count−4)の演算から得られる値に設定している。
つまり、エンコーダエッジ検出毎の初期PWM値(start_pwm)は、enc_count≦4の範囲では、「start_pwm=start_pwm1」となり、enc_count≧5の範囲では、「start_pwm=varp*(enc_count−4)+start_pwm1」(但しvarp>0)の演算から求められる値となる。そのため、enc_count≧5の範囲では、図示の如く、enc_countがカウントアップされるに従って初期PWM値(start_pwm)が増加していく。
更に本実施形態では、エンコーダエッジ検出毎に駆動時PWM増分量(a_param)が補正される。但し、駆動開始後最初にエンコーダエッジを検出したときは、駆動時PWM増分量(a_param)は変化させない。つまり、駆動時PWM初期増分量(accel_param)のままとする。そして、2回目以降のエッジ検出時から、そのエッジ検出時のエッジ間隔時間に基づいて、以後の駆動時PWM増分量が設定される。
具体的には、図4における駆動開始後2回目のエンコーダエッジ検出時(時刻t1)、その直前のエッジ間隔時間T1がエッジ間隔過剰検出閾値(det_period_max)を越えている。そのため、リセット後の駆動時PWM増分量(a_param)を初期値accel_paramから所定量増加する補正演算がなされる。これにより、PWM値の変化率が増加されることとなる。
その後、駆動速度が上昇し、エンコーダエッジ検出時のエッジ間隔時間がdet_period_maxより小さくなっても、エッジ間隔不足検出閾値(det_period_min)を越えている限り、前回までのa_paramがそのまま保持される。そのため、キャリッジ102の駆動速度が急に低下することなく、所望の駆動速度を維持することができる。
一方、モータ負荷が大きくなって駆動速度が低下し、時刻t2におけるエッジ間隔時間T6が再びエッジ間隔過剰検出閾値(det_period_max)を越えると、その後の駆動時PWM増分量(a_param)は、前回までのa_paramに対してさらに所定量増加される。これによりPWM値の変化率もさらに増加されることとなる。
そして、減速開始位置(decel_pos)に来ると、PWM初期値はstart_pwm2に設定され、その後、一定周期Tp毎に減速時PWM減分量(decel_param)ずつ減少していく。その後、既述の3つの制動開始条件のうちいずれか一つでも満たされると、PWM値をstart_pwm3に設定することにより制動が開始され、一定周期Tp毎に制動時PWM増分量(break_param)ずつ増加(マイナス方向に)していく。
尚、PWM値がマイナスの範囲にあるときのモータ駆動ドライバ回路11の動作は、具体的には、Hブリッジ回路を構成する4つのスイッチング素子S1〜S4(図2参照)のうち、グランドに接続された二つのスイッチング素子S2,S4のみを同時にオン・オフすることにより行う。即ち、両スイッチング素子S2,S4が共にオンとなった状態で制動がかかるため、そのオンデューティ比によって制動力を制御することができる。もちろん、PWM値がマイナスの範囲にあるときのスイッチング動作は、スイッチング素子S2,S4ではなく、スイッチング素子S1,S3のオン・オフでも所望の制御動作が可能である。
従って、制動開始後は、両スイッチング素子S2,S4のオン比率が徐々に上昇していき、PWM値がstop_pwmとなったときに、常時オン状態、つまりモータ110が両スイッチング素子S2,S4を介して常時短絡された状態となり、駆動対象(ここではキャリッジ102)が停止することになる。
このように、本実施形態ではモータ110の負荷がキャッピング動作に伴って徐々に増加していくことを想定しているため、図4のように初期PWM値(start_pwm)がstart_pwm1から徐々に増加していくように補正されるが、このような制御例はあくまでも一例であり、初期PWM値(start_pwm)をその初期値であるstart_pwm1からどのように、どの程度増加或いは減少させるかは、想定されるモータ負荷の変動に応じて適宜設定すればよいことはいうまでもない。
具体的な例を図5に示す。図5は、キャリッジ102の駆動区間全体における中間付近からモータ110の負荷が徐々に減少していくことが予め想定される場合の、キャリッジ102の制御例である。
この場合、まずエンコーダエッジ検出毎の初期PWM値(start_pwm)については、enc_count≦4の範囲では、負荷変動がないため「start_pwm=start_pwm1」となる。そして、enc_count≧5の範囲では、負荷が徐々に減少していくため、初期PWM値(start_pwm)は「start_pwm=varp*(enc_count−4)+start_pwm1」(但しvarp<0)の演算から求められる値となる。そのため、enc_count≧5の範囲では、図示の如く、enc_countがカウントアップされるに従って初期PWM値(start_pwm)が減少していく。
更に、エンコーダエッジ検出時のエッジ間隔時間(enc_period)に基づいて駆動時PWM増分量(a_param)の補正も行われる。この場合、時刻t1でPWM値の変化率を増加(駆動時PWM増分量を増加)させるところまでは、図4で説明した制御と全く同じである。
時刻t1を過ぎてからモータ負荷が徐々に減少していくと、モータ110の駆動速度が高速化していくため、エンコーダエッジ検出時のエッジ間隔時間(enc_period)は小さくなっていく。そして、時刻t2におけるエンコーダエッジ検出時には、エッジ間隔時間T6はエッジ間隔不足検出閾値(det_period_min)より小さくなっている。
そこで、時刻t2以降の駆動時PWM増分量(a_param)を、時刻t2の前までのa_paramより小さく補正することで、PWM値の変化率を減少させる。つまり、負荷が軽くて速度過大になるおそれがあるため、PWM値の変化率を小さくして速度を抑制するわけである。
駆動時PWM増分量を変化させることによりPWM値の変化率を増減することについて、図6に基づいて補足説明する。図6(a)は初期状態を示しており、駆動時PWM増分量(a_param)は、その初期値であるaccel_paramである。破線は、初期状態でのPWM値の変化率(傾き)を示している。
この状態からa_paramを増加させてa_param>accel_paramとすると、図6(b)に示す如く、PWM値の変化率(傾き)は一点鎖線で表したように増加する。逆に、a_paramを減少させてa_param<accel_paramとすると、図6(c)に示す如く、PWM値の変化率(傾き)は一点鎖線で表したように減少する。
そして、駆動時PWM増分量(a_param)を増加或いは減少させるための補正演算は、次式(1)で表される。
a_param=a_param*(1±α*var)・・・(1)
但し、左辺のa_paramは変化後の駆動時PWM増分量、右辺のa_paramは変化前の駆動時PWM増分量、変化率係数α=1、補正定数varは任意の定数であり、右辺括弧内の演算式における加減算部分は、PWM値の変化率を増加させるときは加算とし、逆に変化率を減少させるときは減算とする。
上記式(1)による補正演算は出力PWMデューティ生成部4にて行われるが、このうち「±α*var」の演算結果は、PWM増分量補正部6にて行われ、出力PWMデューティ生成部4へ入力される。
尚、上記式(1)の右辺において、「a_param*α*var」で得られる値が本発明の基準増加量に相当し、「a_param*(−α*var)」で得られる値が本発明の基準減少量に相当する。
次に、本実施形態のモータ制御装置10における、CPU1が実行する処理、及び、ASIC2にて実行される処理について、図7〜図12に基づいて説明する。まず、図7は、CPU1が実行するASIC設定処理を示すフローチャートである。インクジェットプリンタにおいて記録動作が完了し、キャリッジ102が待機領域内で一旦停止した後、ホームポジションに移動するために本処理(図7〜図12)が実行される。
このASIC設定処理が開始されると、まずステップ(以下「S」と略す)110にて、動作モード設定レジスタ群2内の各レジスタが設定される。具体的な設定項目は、図7に示す通りである。その後、S120にて、停止割り込み許可をASIC2へ出力する。この停止割り込み許可信号を受けたASIC2は、後述する図12の割り込み信号生成処理の際に停止割り込み信号を出力可能となる。
そして、S130で起動設定レジスタ21をセットすることで、モータ110の駆動、延いてはキャリッジ102の駆動が開始される。その後のモータ110の制御は、基本的にASIC2が行い、CPU1は、S140にて停止割り込み信号の待機を行う。そして、後述する図12のS990の処理により停止割り込み信号が出力されると、S140で肯定判定されてS150に進み、停止割り込みフラグをクリアすると共に以後割り込み信号が入ってこないよう、割り込みマスク処理を行う。
次に、ASIC2で実行されるモータ110の制御について説明する。なお、ASIC2によるモータ制御は周知の如くハードウェアの動作としてなされるものであるが、ここでは理解を容易にするため、ハードウェアの動作をフローチャートにて説明する。
まず図8に、モータ110の起動から減速開始までの通常駆動処理を示す。CPU1にて起動設定レジスタ21がセットされると、まずS210にて、定加算タイミングを示す変数prcntにその初期値であるpwm_reload_countがセットされ、駆動時PWM増分量を示す変数a_paramにその初期値である駆動時PWM初期増分量(accel_param)がセットされる。更に、初期PWM値を示す変数start_pwmに駆動開始時PWM値であるstart_pwm1がセットされる。このstart_pwm(=start_pwm1)が、実際に出力PWMデューティ生成部4から出力されるPWM値であるpwm_outにセットされて、そのPWM値の出力が開始される。
続くS220では、S210でセットされた定加算タイミングprcntに基づき、次式Tp=pwm_period*(prcnt+1)により、PWM値更新間隔Tpが求められる。この演算は加算タイミング生成部18によりなされる。
続くS230では、enc_trgが1か否か、つまりエンコーダエッジが検出されたか否かが判断され、検出されたと判断されるまではS240に進むことになる。S240では、pwm_outの更新タイミングであるか否かが判断される。この判断は即ち、一定周期TpのPWM値の更新を行うタイミングであるか否かの判断であり、加算タイミング生成部18からのタイミング情報に基づいて判断される。PWM値が前回更新(つまりaccel_paramだけ増加)されてからTpが経過しない間は否定判定されてS230に戻るが、Tpが経過してPWM値の更新タイミングになると、S250に進む。
S250では、現在のpwm_outにa_param(初期状態ではaccel_param)を加算する演算が行われることにより、その演算結果が新たなpwm_outとなる。そして、続くS260にて、その新たなpwm_outが最大PWM出力値(pwm_max_limit)より大きいか否かが判断される。このとき、pwm_max_limit以下であればS230に戻ることになるが、pwm_max_limitを越えていたら、S270に進み、現在のpwm_outにpwm_max_limitがセットされる。つまり、pwm_outは最大pwm_max_limitに制限されるのである。
そして、エンコーダエッジが検出されると、S230からS280に進み、減速開始位置(decel_pos)又は制動開始位置(break_pos)に来たか否かが判断される。
このS280の判断は、具体的には、領域判定部15からの位置パルスの有無に基づいてなされる。図11は、領域判定部15にて実行される位置検出パルス生成処理を示すフローチャートである。位置カウンタ14からのカウント値が入力されることによりこの処理が開始されると、S810にて、そのカウント値に基づいて減速開始位置(decel_pos)であるか否かが判断される。ここでまだ減速開始位置でなければS830に進んで、制動開始位置(break_pos)であるか否かが判断される。
なお、減速開始位置にきたことが判断されていないにも拘わらず制動開始位置に来たことが判断される場合とは、通常駆動状態から減速期間を介さずに直接制動に移行するような制御を行う場合である。本実施形態のように減速期間を含める場合は、減速開始位置に到達しない限り、S830では常に否定判断されることになる。そして、減速開始位置に到達したら、S820に移行して減速位置パルスが発生される。また、制動開始位置に到達したら、S840にて制動位置パルスが発生される。
図8に戻り、S280において、decel_posに到達したと判断された場合は図10の減速・停止処理に進むが、decel_posに到達しない間は、S290に進み、プロファイル格納部9に格納されている初期PWM補正値プロファイル(cmp_array)からそのときのエンコーダエッジカウント値(enc_count)に対応した初期PWM補正値(cmp_micr_duty)を取得する。詳細には、初期PWM補正値プロファイルcmp_arrayを引数enc_countで参照した値であるcmp_array(enc_count)を、初期PWM補正値であるcmp_micr_dutyとして設定することとなり、これは初期PWMデューティ補正部8によりなされる。
そしてS300にて、駆動開始時PWM値であるstart_pwm1に、S290で設定(取得)された初期PWM補正値(cmp_micr_duty)を加算して新たな初期PWM値(start_pwm)に設定する。これは出力PWMデューティ生成部4によりなされる。
続くS310では、変化率補正処理、即ち駆動時PWM増分量(a_param)を補正するための処理が行われる。この処理の詳細は図9に示す通りであり、まずS360にて、そのエンコーダエッジ検出時と直前のエンコーダエッジ検出時の間のエッジ間隔時間(enc_period)がエッジ間隔過剰検出閾値(det_period_max)より大きいか否かが判断される。このとき、enc_periodがdet_period_maxより大きければ、S380に進み、PWM値の変化率が増加するよう、既述の式(1)に基づいて駆動時PWM増分量(a_param)を増加させる補正演算が行われる。
一方、エンコーダエッジ検出時のエッジ間隔時間(enc_period)がエッジ間隔過剰検出閾値(det_period_max)以下であれば、S370に進み、さらにエッジ間隔不足検出閾値(det_period_min)より小さいか否かが判断される。このときdet_period_minより小さければ、S390に進み、PWM値の変化率が減少するよう、既述の式(1)に基づいて駆動時PWM増分量(a_param)を減少させる補正演算が行われる。
S370で否定される場合、即ちエッジ間隔時間(enc_period)がdet_period_min以上であってdet_period_max以下の範囲にある場合は、そのままこの変化率補正処理を終了する。
このようにして、S300で初期PWM値(start_pwm)の設定が行われ、さらにS310で駆動時PWM増分量(a_param)の補正演算が行われた後は、S600にて、pwm_outがリセットされる。このときリセットされる値は、S300で設定された初期PWM値(start_pwm)である。
次に、S280で肯定判定された場合の処理、即ち減速開始位置に来た場合の減速・停止処理について、図10に基づいて説明する。図10は、減速・停止処理を示すフローチャートである。図8のS280で肯定判定されることにより本処理に移行すると、まずS610にて、減速開始時PWM値であるstart_pwm2がpwm_outにセットされる。同時に、タイマ15a(decel_timer)の計時が開始される。
S620では、enc_countがbreak_posに等しくなること(つまり制動開始位置に到達したこと)、又は、enc_periodがset_enc_period以上となること(つまりエンコーダエッジの周期が制動開始エンコーダ周期以上となること)、又は、タイマ15aの計時値がset_decel_time(最大減速時間)以上となること、のうちいずれかが成立したか否かが判断され、いずれか一つでも成立すれば、S670に進んで制動が開始される。具体的には、制動開始時PWM値であるstart_pwm3が新たなpwm_outとしてセットされる。
一方、制動開始に至らない間は、S620からS630に進み、図8のS240と同様、pwm_outの更新タイミングであるか否かが判断される。そして、更新タイミングになったら、S640にて、現在のpwm_outから減速時PWM減分量(decel_param)だけ減算したものが新たなpwm_outとしてセットされる。つまり、PWM値を減少させるのである。そしてS650に移行し、その新たなpwm_outが最小PWM出力値(pwm_min_limit)より小さいか否か判断され、小さくなければそのままS620に戻るが、小さい場合は、S660でpwm_outにpwm_min_limitがセットされる。
一方、制動を開始して上述したS670の処理が終わると、続くS680にて、S630と同様、pwm_outの更新タイミングであるか否かが判断される。そして、更新タイミングになると、S690に移行し、現在のpwm_outに制動時PWM増分量(break_param)が加算されたものが新たなpwm_outとしてセットされる。そして、その新たなpwm_outがブレーキ時PWM値(stop_pwm)より大きいか否かがS700で判断され、大きくなければS680に戻るが、大きければ、S710でpwm_outにstop_pwmがセットされ、続くS720で停止パルスが発生される。これにより、モータ110は完全に停止することになる。
次に、ASIC2内の各種信号処理部17が実行する割り込み信号生成処理について、図12に基づいて説明する。本処理が開始されると、まずS910にて、位置パルスが発生したか否かが判断される。これは、図11におけるS820又はS840、図10におけるS720の各処理においてそれぞれ対応するパルスが発生したか否かをみるものであり、いずれかの位置パルスが発生した場合、S920に進み、その種類が判断される。
まず、減速位置パルスであった場合は、S930に進み、減速位置割り込みフラグがセットされる。そして、S940で、CPU1から減速位置割り込み許可を得ているか否かが判断される。本実施形態では、減速位置割り込み許可を得ていないため、ここではS910に戻ることになる。制動位置パルスであった場合、S950で制動位置割り込みフラグがセットされ、S960で、CPU1から制動位置割り込み許可を得ているか否かが判断される。この場合も、本実施形態では制動位置割り込み許可を得ていないため、S910に戻る。
そして、停止位置パルスであった場合、S970で停止割り込みフラグがセットされ、S980で、CPU1から停止割り込み許可を得ているか否かが判断される。ここでは、図7で説明したASIC設定処理により、停止割り込み許可がなされているため、S990にて、CPU割り込み信号がCPU1へ出力される。
以上詳述した本実施形態のモータ制御装置10では、キャリッジ102を駆動する際に想定されるモータ110の負荷変動に基づいて、キャリッジ102を目標駆動速度で駆動させるために、エンコーダエッジカウント値(enc_count)に対応した初期PWM補正値(cmp_micr_duty)をプロファイル化している。そして、エンコーダエッジが検出される毎に、対応する初期PWM補正値(cmp_micr_duty)に従ってリセット後の初期PWM値(start_pwm)を設定するという、いわゆるフィードフォワード制御を行うようにしているため、想定される負荷変動によらず安定してキャリッジ102を駆動することが可能となる。
しかも、上記フィードフォワード制御に加え、エンコーダエッジ検出時のエッジ間隔時間(enc_period)に応じて、次のPWM値の変化率を決めるようにしている。具体的には、駆動時PWM増分量(a_param)を現状維持するか或いは上記式(1)により増加又は減少させる。そのため、外乱や誤差等の影響による想定外の負荷変動が生じても、その負荷変動による制御性悪化を抑制することができる。
つまり、プロファイルに基づいて初期PWM値(start_pwm)をダイナミックに操作することで、想定される負荷変動に対する追従性が向上され、さらにエンコーダエッジ検出時の駆動状態(本例ではエンコーダ時間間隔enc_period)に基づいてPWM値の変化率を調整することで想定外の負荷変動にも対応でき、より安定した速度制御が実現されるのである。
また、駆動開始後の最初のエンコーダエッジ検出時には、PWM値変化率の補正(a_paramの補正)は行わず、a_paramを駆動開始時と同じく初期値accel_paramに設定するため、駆動開始時のトルクを十分に確保でき、キャリッジ102の駆動速度をより迅速に所望の目標駆動速度にすることが可能となる。
しかも、速度フィードバック制御や位置フィードバック制御などのいわゆる閉ループ制御ではなく、全体としてオープンループ制御であるため、閉ループ制御では困難な微小速度でのモータ制御をより良好に実現することができる。
特に、本実施形態のようにインクジェットプリンタのキャリッジ駆動における、ホームポジションへの微小速度移動に適用すると、キャッピング動作時のモータ負荷の変動の影響が抑制され、キャッピングを確実に行うことができる。
ここで、本実施形態の構成要素と本発明の構成要素の対応関係を明らかにする。本実施形態において、エンコーダ105は本発明の駆動検知手段に相当し、
プロファイル格納部9は本発明のプロファイル格納手段に相当し、初期PWMデューティ補正部8は本発明のプロファイルデータ取得手段に相当し、出力PWMデューティ生成部4は本発明の制御手段及び第1設定変更手段に相当し、モータ駆動ドライバ回路11は本発明のモータ駆動手段に相当し、PWM増分量補正部6は本発明の第2設定変更手段及び経過時間判断手段に相当する。また、エンコーダエッジ検出時のエッジ間隔時間(enc_period)がdet_period_minとdet_period_maxとの間の値となるような駆動速度が、本発明の目標駆動速度に相当するものである。
また、図8の通常駆動処理において、S290の処理は本発明のプロファイルデータ取得手段が実行する処理に相当し、S300の処理は本発明の第1設定変更手段が実行する処理に相当する。さらに、図9の変化率補正処理において、S360及びS370の処理はいずれも本発明の経過時間判断手段が実行する処理に相当し、S380及びS390の処理はいずれも本発明の第2設定変更手段が実行する処理に相当する。
[第2実施形態]
上記第1実施形態では、α=1、varを所定の定数とすることにより、駆動時増分量(a_param)を増加させる際の増加量及び減少させる際の減少量をいずれも一定値としたが、本実施形態では、エッジ間隔時間(enc_period)と各閾値との差に応じて連続的に増加・減少させる。
図13に、本実施形態のモータ制御装置150の概略構成を示す。本実施形態のモータ制御装置150が第1実施形態のモータ制御装置10(図1参照)と大きく異なるのは、補正定数varが動作モード設定レジスタ群153内の増分量補正値設定レジスタ群41に設定されず、PWM増分量補正部154にて演算により得られることと、変化率係数αがα>0の所定の係数に設定されることである。そのため、CPU151は第1実施形態のように増分量補正値設定レジスタ群41への補正定数varの設定は行わない。それ以外については基本的に第1実施形態のモータ制御装置150と同じ構成である。そのため、第1実施形態のモータ制御装置10と同じ構成要素には同じ符号を付し、その詳細説明を省略する。
図14に、本実施形態の変化率補正処理を示す。本実施形態のASIC152でも、第1実施形態と同じように通常駆動処理(図8参照)がなされるが、本実施形態では、図8の通常駆動処理におけるS310の変化率補正処理(詳細は図9)が第1実施形態とは異なる。具体的には、図9の処理フローにおいてS360及びS370で肯定判定されてからこの変化率補正処理が終了するまでの間に実行される処理、即ち駆動時PWM増分量の補正演算を行う処理が異なる。そのため、第1実施形態の変化率補正処理と同じ処理には同じステップ番号を付し、その詳細説明を省略する。そして、第1実施形態と異なる部分を中心に、以下説明する。
この処理が開始されると、まずS360にて、エッジ間隔時間(enc_period)がエッジ間隔過剰検出閾値(det_period_max)より大きいか否かが判断されるが、ここで大きいと判断された場合、S401にて、var=enc_period−det_period_maxの演算を行う。つまり、このときのエッジ間隔時間が上記閾値(det_period_max)よりどれだけ大きいかを求めるのである。
そして、varの演算後はS590に進み、その得られたvarを用いて、既述の式(1)により新たな駆動時PWM増分量が演算される。この結果、前回のa_paramより大きい新たなa_paramが得られる。尚、本実施形態の場合、式(1)の右辺括弧内の加減算部分では加算が行われる。
また、S360で否定判定されてS370で肯定判定された場合、即ちエッジ間隔時間(enc_period)がエッジ間隔不足検出閾値(det_period_min)より小さいと判断された場合は、S403にて、var=enc_period−det_period_minの演算が行われる。つまり、このときのエッジ間隔時間が上記閾値(det_period_min)よりどれだけ小さいかを求めるのである。そして、varの演算後はS590に進み、前回までのa_paramが補正演算されて新たなa_paramが得られる。
このように構成された本実施形態のモータ制御装置150では、検出されたエッジ間隔時間(enc_period)と上記各閾値との差がvarとして演算され、そのvarに基づいて駆動時PWM増分量の補正演算が行われる。これにより、エッジ間隔時間(enc_period)がdet_period_maxより大きいほどa_paramも大きな値に補正されてPWM値の変化率が大きくなり、逆にdet_period_minより小さいほどa_paramも小さな値に補正されてPWM値の変化率が小さくなる。
そのため、エンコーダエッジ検出時の駆動状態に応じて駆動時PWM増分量(a_param)の補正がより適切に行われ、より安定して駆動対象(本例ではキャリッジ102)を駆動させることができる。
尚、本実施形態において、PWM増分量補正部154は本発明の第一差分値演算手段及び第二差分値演算手段にも相当するものであり、図14の通常駆動処理におけるS401で演算されるvarは本発明(請求項35)の第一差分値に相当し、S403で演算されるvarは本発明(請求項36)の第二差分値に相当する。
[第3実施形態]
上記第2実施形態では、PWM値の変化率を変化させる具体的方法として、駆動時PWM増分量(a_param)を変化させるようにしたが、本実施形態では逆に、a_paramは駆動時PWM初期増分量(accel_param)に固定し、PWM値をaccel_paramずつ増加させていく周期であるPWM値更新間隔Tpを変化させる。
図15に、本実施形態のモータ制御装置160の概略構成を示す。本実施形態のモータ制御装置160が第1実施形態のモータ制御装置10(図1参照)と大きく異なるのは、動作モード設定レジスタ群163内の増分量補正値設定レジスタ群46に変化率係数βと補正定数varが設定されることと、これらβ,varに基づいて加算タイミング生成部164がPWM値更新間隔Tv(初期値は上記Tp)を演算し、タイミング情報を出力PWMデューティ生成部165へ出力することである。それ以外については基本的に第1実施形態のモータ制御装置150と同じ構成であるため、第1実施形態のモータ制御装置10と同じ構成要素には同じ符号を付し、その詳細説明を省略する。
図16に、PWM値更新間隔Tv、即ちaccel_paramを増加させる周期Tvを変化させることによりPWM値の変化率を増減することについて補足説明する。図16(a)は初期状態を示しており、PWM値更新間隔Tvはその初期値であるTpである。である。破線は、初期状態でのPWM値の変化率(傾き)を示している。
この状態からTvを減少させてTv<Tpとすると、図16(b)に示す如く、PWM値の変化率(傾き)は一点鎖線で表したように増加する。逆に、Tvを増加させてTv>Tpとすると、図16(c)に示す如く、PWM値の変化率(傾き)は一点鎖線で表したように減少する。
そして、PWM値更新間隔Tvを増加或いは減少させるための補正演算は、次式(2),(3)で表される。
Tv=pwm_period*(prcnt+1)・・・(2)
prcnt=prcnt±int(β*var)・・・(3)
但し、式(3)の左辺のprcntは変化後の定加算タイミング、右辺のprcntは変化前の定加算タイミングであり、その初期値は既述のpwm_reload_countである。また、変化率係数β=1、補正定数varは任意の定数であり、式(3)の右辺の演算式における加減算部分は、PWM値の変化率を増加させるときは減算とし、逆に変化率を減少させるときは加算とする。また、式(3)の右辺におけるintは、整数部分のみを有効とする関数を表しており、「int(β*var)」は、β*varの積算結果のうち整数部分を表す。上記式(2),式(3)による補正演算は加算タイミング生成部164にて行われる。
図17に、本実施形態のASIC162にて実行される、モータ110の起動から減速開始までの通常駆動処理の一部を示す。本実施形態の通常駆動処理が第1実施形態の通常駆動処理(図8参照)と異なるのは、S210の処理の後に実行される演算処理と、S310の変化率補正処理である。
このうち、S210の後に実行される演算処理については、第1実施形態ではS220の演算であって一定周期Tpを演算する処理であったが、本実施形態では、図17(a)に示す如く、このS220に代えて、S225の演算処理を行う。但しこのS225の演算処理は、実質的には図8のS220と同じであって、演算結果の変数名をTvとしていることが異なるだけである。
また、S310の変化率補正処理が第1実施形態(図9参照)と異なるのは、図17(b)に示す如く、S360及びS370で肯定判定されてからこの変化率補正処理が終了するまでの間に実行される処理、即ちPWM値更新間隔Tvの補正演算を行う処理である。そのため、第1実施形態の変化率補正処理と同じ処理には同じステップ番号を付し、その詳細説明を省略する。そして、第1実施形態と異なる部分を中心に、図17(b)に基づいて以下説明する。
この処理が開始されると、まずS360にて、エッジ間隔時間(enc_period)がエッジ間隔過剰検出閾値(det_period_max)より大きいか否かが判断されるが、ここで大きいと判断された場合、S411にて、prcnt=prcnt−int(β*var)の演算が行われる。
そして、定加算タイミングprcntの演算後はS520に進み、その得られたprcntを用いて、既述の式(2)により新たなPWM値更新間隔Tvが演算される。この結果、前回までのTvより小さい新たなTvが得られる。
また、S360で否定判定されてS370で肯定判定された場合、即ちエッジ間隔時間(enc_period)がエッジ間隔不足検出閾値(det_period_min)より小さいと判断された場合は、S413にて、prcnt=prcnt+int(β*var)の演算が行われ、続くS520へ進むこととなる。これにより、前回までのTvより大きい新たなTvが得られる。
このように構成された本実施形態のモータ制御装置160では、検出されたエッジ間隔時間(enc_period)に応じて、PWM値更新間隔Tvを現状維持するか或いは上記式(2),(3)により増加又は減少させる。そのため、第1実施形態と同様、モータ110の負荷に変動が生じても、安定して駆動対象(本例ではキャリッジ102)を駆動させることができる。
[第4実施形態]
上記第3実施形態では、β=1、varを所定の定数とすることにより、PWM値更新間隔Tvを増加させる際の増加量及び減少させる際の減少量をいずれも一定値としたが、本実施形態では、エッジ間隔時間(enc_period)と各閾値との差に応じて連続的に増加・減少させる。
図18に、本実施形態のモータ制御装置170の概略構成を示す。本実施形態のモータ制御装置170が第3実施形態のモータ制御装置160(図15参照)と大きく異なるのは、補正定数varが動作モード設定レジスタ群173内の増分量補正値設定レジスタ群51に設定されず、加算タイミング生成部174にて演算により得られることと、変化率係数βがβ>0の所定の係数に設定されることである。そのため、CPU171は第3実施形態のように増分量補正値設定レジスタ群51への補正定数varの設定は行わない。それ以外については基本的に第3実施形態のモータ制御装置160と同じ構成であるため、第3実施形態のモータ制御装置160と同じ構成要素には同じ符号を付し、その詳細説明を省略する。
図19に、本実施形態のASIC172にて実行される変化率補正処理を示す。本実施形態の変化率補正処理が第3実施形態の変化率補正処理(図17(b)参照)と異なるのは、S360及びS370で肯定判定されてからこの変化率補正処理が終了するまでの間に実行される処理、即ち定加算タイミングprcntの補正演算を行う処理であり、それ以外の処理は第3実施形態と全く同じである。そのため、第3実施形態の通常駆動処理と同じ処理には同じステップ番号を付し、その詳細説明を省略する。そして、第3実施形態と異なる部分について、以下説明する。
この処理が開始されると、まずS360にて、エッジ間隔時間(enc_period)がエッジ間隔過剰検出閾値(det_period_max)より大きいか否かが判断されるが、ここで大きいと判断された場合、S421にて、var=det_period_max−enc_periodの演算が行われる。つまり、上記閾値(det_period_max)とエッジ間隔時間との差を求めるのである。
そして、varの演算後はS510に進み、その得られたvarを用いて、既述の式(3)により新たな定加算タイミングprcntが演算される。この定加算タイミングprcntを用いて次のS520の演算処理を行うことにより、前回までのTvより小さい新たなTvが得られる。尚、本実施形態の場合、式(3)の右辺の加減算部分では加算が行われる。
また、S360で否定判定されてS370で肯定判定された場合は、S423にて、var=det_period_min−enc_periodの演算が行われた後、上述したS510の演算処理に移行する。これにより、前回までのTvより大きい新たなTvが得られる。
このように構成された本実施形態のモータ制御装置170では、検出されたエッジ間隔時間(enc_period)と上記各閾値との差がvarとして演算され、そのvarに基づいてPWM値更新間隔Tvの補正演算が行われる。これにより、エッジ間隔時間(enc_period)がdet_period_maxより大きいほどTvは小さな値に補正されてPWM値の変化率が大きくなり、逆にdet_period_minより小さいほどTvは大きな値に補正されてPWM値の変化率が小さくなる。
そのため、エンコーダエッジ検出時の駆動状態に応じてPWM値更新間隔Tvの補正がより適切に行われ、より安定して駆動対象を駆動させることができる。
[第5実施形態]
上記各実施形態では、駆動時PWM増分量(a_param)又はPWM値更新間隔Tvのいずれか一方のみを変化させることで、PWM値の変化率を変化させるようにしたが、本実施形態では、a_param及びTvの双方を変化させることによって変化率を変化させるよう構成されている。
図20に、本実施形態のモータ制御装置180の概略構成を示す。本実施形態のモータ制御装置180と第4実施形態のモータ制御装置170(図18参照)とを比較して大きく異なるのは、動作モード設定レジスタ群183内の増分量補正値設定レジスタ群56に二つの変化率係数α,β(α,β>0)が設定されることと、加算タイミング生成部184にてPWM値更新タイミングTvを演算する過程で生じるβ*varの演算の小数部分を微補正パラメータγとしてPWM増分量補正部185へ出力することと、PWM増分量補正部185がこの微補正パラメータγと変化率係数αとの積算結果を補正データとして出力PWMデューティ生成部4へ出力することである。それ以外については基本的に第4実施形態のモータ制御装置170と同じ構成であるため、第4実施形態のモータ制御装置170と同じ構成要素には同じ符号を付し、その詳細説明を省略する。
図21に、本実施形態のASIC182にて実行される変化率補正処理を示す。本実施形態の変化率補正処理が第4実施形態の変化率補正処理(図19参照)と異なるのは、S520におけるTv演算処理の後に、新たにS531及びS533の処理が追加されたことであり、それ以外の処理は第4実施形態と全く同じである。そのため、第4実施形態の通常駆動処理と同じ処理には同じステップ番号を付し、その詳細説明を省略する。そして、第4実施形態と異なる部分について、以下説明する。
S520にてPWM値更新間隔Tvが新たに演算されると、加算タイミング生成部184はその演算された周期TvでPWM値を増加させるためのタイミング信号を出力PWMデューティ生成部4へ出力するようになるが、更に、S531にて、γ=β*var−int(β*var)の演算が行われることにより、β*varの小数部分が微補正パラメータγとして得られ、これがPWM増分量補正部185へ入力される。
そして、続くS533にて、現在のa_param対し、a_param*(1−α*γ)の演算が行われ、新たなa_paramが得られる。尚、この演算は出力PWMデューティ生成部4にてなされるが、このうちα*γの積算はPWM増分量補正部185にてなされる。
このように構成された本実施形態のモータ制御装置180では、PWM値更新間隔Tvの補正結果だけをみれば第4実施形態と同じであってβ*varの小数部分が反映されないが、その小数部分は駆動時PWM値増分量a_paramが補正されることによって反映される。つまり、Tvで補正しきれない分をa_paramの補正で補っているのである。しかも、a_paramのみの補正或いはTvのみの補正に対し、両者を共に補正するようにすれば、PWM値を滑らかに(小刻みに)増加させていくことが可能となる。そのため、エンコーダエッジ検出時の駆動状態に応じてPWM値の変化率の補正(変更)がより適切に行われ、より安定して駆動対象を駆動させることができる。
尚、本実施形態において、int(β*var)の演算結果は本発明のパルス幅短縮量に相当し、加算タイミング生成部184は本発明の演算手段、周期短縮手段及び周期増加手段に相当し、PWM増分量補正部185は本発明の増分量増加手段及び増分量減少手段に相当する。また、図21におけるS533の演算処理は本発明の増分量増加手段及び増分量減少手段が実行する処理に相当する。
[第6実施形態]
駆動時PWM増分量a_param及びPWM値更新間隔Tvの両者を変化させることによってPWM値の変化率を変化させることが可能な例を上記第5実施形態にて例示したが、本実施形態のモータ制御装置(図示略)も同じく、a_param及びTvの両者を変化できるように構成されている。
但し本実施形態では、基本的には、PWM値更新間隔Tvのみを変化させることでPWM値の変化率を変化させるようにしている。そして、補正演算により得られたTvが所定時間(例えば1msec.)に満たなかった場合は、Tvとしてその1msec.に満たない値に変更せずに1msec.に設定し、代わりにa_paramを補正することで、全体としてPWM値変化率を適切に変化させるのである。このように、Tvを所定時間未満に設定しないようにするのは、以下の理由による。
駆動対象をモータで駆動させる場合、一般に、モータ自身の時定数、駆動対象のイナーシャ、ギアやバネ等の結合要素などの影響で、操作量を変化(つまり本例ではPWM値を変化)させてからその変化が駆動対象の動きに反映されるまでの応答遅れが存在する。仮に、ある操作量を出力した後、その操作量に対応したトルクが駆動対象に伝わるまでに必要な最小時間を1msec.とすると、PWM値更新間隔Tvとしても1msec.以上が必要となる。そのため、モータ負荷が増大することによってTvの補正演算結果が1msec.未満となった場合に、そのTvをそのまま用いると、駆動対象を安定して制御できなくなるおそれがある。
そのため、本実施形態では、Tvが1msec.未満となった場合は、Tvについてはとりあえず最小許容値である1msec.に設定し、Tvにて補正しきれない分を代わりにa_paramにて補正するようにしている。
具体的な演算方法は図22の変化率補正処理に示す通りである。図22の変化率補正処理が第5実施形態の変化率補正処理(図21参照)と異なる点は、S520におけるTv演算の後の処理である。本実施形態では、S520にてTvが演算されると、S541にて、その演算されたTvが1msec.未満であるか否かが判断される。ここで、1msec.以上であればそのままこの処理を終了してa_paramの補正は行わないが、1msec.未満であれば、S543にてTvを1msec.にセットし、続くS545にて、次式(4)の演算によりa_paramを補正する。
a_param=a_param*{1+α*(1−Tv)}・・・(4)
これにより、例えばTvを本来ならば0.8msec.に設定すべきであった場合、1msec.に設定したことによる差分の0.2msec.については、a_paramの補正によって反映されることとなる。
従って、本実施形態によれば、Tvによる補正が限界に達した場合はa_paramを補正するようにしているため、PWM値の変化率の補正(変更)がより適切に行われ、より安定して駆動対象を駆動させることができる。
尚、本実施形態では、補正演算により得られたTvが1msec.以上ならばa_paramを変化させずにTvのみを変化させるようにしたが、これに限らず、Tvが1msec.以上であっても、上記第5実施形態と同じようにして、β*varの小数部分をa_paramの微補正として反映させるようにしてもよい。
[第7実施形態]
上記各実施形態では、PWM値の変化率の変化、即ちa_param或いはTvの補正演算を、エッジ間隔時間(enc_period)に応じて行うようにしたが、本実施形態では、エンコーダエッジ検出時のPWM値に基づいてa_paramを補正することにより、変化率を変化させる。
図23に、本実施形態のモータ制御装置190の概略構成を示す。本実施形態のモータ制御装置190が第2実施形態のモータ制御装置150(図13参照)と大きく異なるのは、動作モード設定レジスタ群153内にPWMデューティ閾値設定レジスタ62が設けられ、ここに高PWMデューティ検出閾値(det_pwm_max)と低PWMデューティ検出閾値(det_pwm_min)がそれぞれ設定されることと、出力PWMデューティ生成部4から駆動用信号生成部8へ入力されるPWM値(pwm_out)がPWM増分量補正部194にも入力されることである。それ以外については基本的に第2実施形態のモータ制御装置150と同じ構成であるため、第2実施形態のモータ制御装置150と同じ構成要素には同じ符号を付し、その詳細説明を省略する。
ここで、本実施形態のモータ制御装置190におけるモータ110の制御について、図24及び図25に基づいて説明する。図24は、モータ110の負荷が増加していく場合の制御例であり、図25は、モータ110の負荷が減少していく場合の制御例である。
まず、図24の制御例においては、駆動開始後、2回目以降のエッジ検出時からa_paramの補正演算が行われる。そして、前回までのa_paramを補正すべきか否かの判断は、エッジ検出時のPWM値(pwm_out)に基づいて行われる。
具体的には、図24における駆動開始後2回目のエンコーダエッジ検出時(時刻t1)、PWM値(pwm_out)は高PWMデューティ検出閾値(det_pwm_max)を越えている。そのため、a_paramを増加する変更を行うことで、PWM値の変化率を増加させる。時刻t1以後のエッジ検出時は、しばらくはdet_pwm_max以下のレベルが続くが、モータ負荷が増大して時刻t2にて再びdet_pwm_maxを越えると、a_paramをさらに増加させてPWM値の変化率を増加させる。
次に、モータ負荷が減少する場合の制御例について図25に基づいて説明する。この場合、時刻t2の直前のエンコーダエッジ検出時までは、図24で説明した制御と全く同じであるため、ここでは詳細説明を省略する。
時刻t1あたりから負荷が徐々に減少していくと、駆動速度が高速化していくため、エンコーダエッジ検出時のPWM値は小さくなっていく。そして、時刻t2におけるエンコーダエッジ検出時には、PWM値はdet_pwm_minより小さくなっている。そのため、a_paramを減少させることによりPWM値の変化率を減少させる。
尚、上述した変化率の増加・減少に加え、予め設定された初期PWM補正値プロファイル(cmp_array)に従って初期PWM値(start_pwm)も変化させるようにしているが、これについては第1実施形態の制御例(図4,図5)と全く同様である。
図26に、本実施形態のASIC192にて実行される変化率補正処理を示す。この処理が開始されると、まずS431にて、エッジ検出時のPWM値(pwm_out)がdet_pwm_maxより大きいか否かが判断され、大きいと判断された場合は、S435に移行して、pwm_outとdet_pwm_maxの差がvarとして演算される。
pwm_outがdet_pwm_max以下ならば、S431からS433に移行して、det_pwm_minより小さいか否かが判断される。ここで、det_pwm_min以上ならばそのままこの処理を終了するが、det_pwm_minより小さいならば、S437にて、pwm_outとdet_pwm_minの差がvarとして演算される。
そして、S590のa_param補正演算では、上記のS435又はS437にて得られたvarを用いて、新たなa_paramが演算されることとなる。
従って、このように構成された本実施形態のモータ制御装置190によれば、エッジ検出時のPWM値に応じてa_paramの変更、延いてはPWM値変化率の変更がなされるため、モータ110の負荷に変動が生じても、安定して駆動対象を駆動させることができる。
尚、本実施形態において、高PWMデューティ検出閾値(det_pwm_max)は本発明の駆動力上限閾値に相当し、低PWMデューティ検出閾値(det_pwm_min)は本発明の駆動力下限閾値に相当し、PWM増分量補正部194は本発明の駆動力判断手段に相当する。
また、PWM増分量補正部194は本発明の第一差分値演算手段(請求項39)及び第二差分値演算手段(請求項40)にも相当するものであり、図26の通常駆動処理におけるS435で演算されるvarは請求項39の第一差分値に相当し、S437で演算されるvarは請求項40の第二差分値に相当する。
[第8実施形態]
上記第1〜第6実施形態では、エッジ間隔時間(enc_period)に基づいてPWM値の変化率を変化させるようにし、上記第7実施形態では、エッジ検出時のPWM値(pwm_out)に基づいてPWM値の変化率を変化させるようにしたが、本実施形態では、エッジ検出時の駆動対象の速度(enc_velocity)に基づいてPWM値の変化率を変化させる例について説明する。
図27に、本実施形態のモータ制御装置200の概略構成を示す。本実施形態のモータ制御装置200が第2実施形態のモータ制御装置150(図13参照)と大きく異なるのは、動作モード設定レジスタ群203内に速度閾値設定レジスタ67が設けられ、ここに高駆動速度検出閾値(micro_velo_max)と低駆動速度検出閾値(micro_velo_min)がそれぞれ設定されることと、PWM増分量補正部204にて、周期・速度計測部16から得られる駆動速度(enc_velocity)と上記各閾値とが比較されてその比較結果に応じた補正データが出力PWMデューティ生成部4へ出力されることである。それ以外については基本的に第2実施形態のモータ制御装置150と同じ構成であるため、第2実施形態のモータ制御装置150と同じ構成要素には同じ符号を付し、その詳細説明を省略する。
図28に、本実施形態のASIC202にて実行される変化率補正処理を示す。この処理が開始されると、まずS441にて、エッジ検出時の駆動速度(enc_velocity)がmicro_velo_minより小さいか否かが判断され、小さいと判断された場合は、S445に移行して、micro_velo_minとenc_velocityの差がvarとして演算される。
enc_velocityがmicro_velo_min以上ならば、S441からS443に移行して、micro_velo_maxより大きいか否かが判断される。ここで、micro_velo_max以下ならばそのままこの処理を終了するが、micro_velo_maxより大きいならば、S447にて、micro_velo_maxとenc_velocityの差がvarとして演算される。
そして、S590のa_param補正演算では、上記のS445又はS447にて得られたvarを用いて、新たなa_paramが演算されることとなる。
従って、このように構成された本実施形態のモータ制御装置200によれば、エッジ検出時の駆動速度に応じてa_paramの変更、延いてはPWM値変化率の変更がなされるため、モータ110の負荷に変動が生じても、安定して駆動対象を駆動させることができる。
尚、本実施形態において、高駆動速度検出閾値(micro_velo_max)は本発明の速度上限閾値に相当し、低駆動速度検出閾値(micro_velo_min)は本発明の速度下限閾値に相当し、PWM増分量補正部204は本発明の速度判断手段に相当する。
また、PWM増分量補正部204は本発明の第一差分値演算手段(請求項37)及び第二差分値演算手段(請求項38)にも相当するものであり、図28の通常駆動処理におけるS445で演算されるvarは請求項37の第一差分値に相当し、S447で演算されるvarは請求項38の第二差分値に相当する。
[変形例]
本発明の実施の形態は、上記実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
例えば、プロファイル格納部9に初期PWM補正値プロファイル(cmp_array)として格納される各位置毎の初期PWM補正値(cmp_micr_duty)は、上記各実施形態では、実験的な値・事前に測定等で得られた値の配列として説明したが、これに限らず、例えば初期PWM補正値(cmp_micr_duty)の変化傾向(補正量)が位置の関数として表せるのならばその関数自体としてもよい。この場合、エンコーダエッジ検出毎にそのときの位置に応じた初期PWM補正値(cmp_micr_duty)を、プロファイルとして格納されている関数式から得ることとなる。
尚、関数式のプロファイル化は、初期PWM補正値(cmp_micr_duty)をキャリッジ102の移行区間全体に渡って一つの関数で表せる場合に限らず、移行区間の一部についてのみ関数で表せる場合、或いは、移行区間全体における前半部分が関数faで表せると共にそれ以後の区間が関数fbで表せる場合、更にはより多くの区間に分けて各区間毎に異なる関数で表せる場合であっても、同様に適用できる。
更に、プロファイルとして格納するデータは、上記実施形態のように初期PWM値(a_param)を変化させるための補正データである初期PWM補正値(cmp_micr_duty)とすること以外に、その位置に応じた初期PWM値自体、或いは初期PWM値自体が得られる関数であってもよい。
また、上記各実施形態では、エンコーダエッジ検出毎に初期PWM値(start_pwm)を初期PWM補正値プロファイル(cmp_array)に従って補正する(変化させる)ようにし、PWM値の変化率の補正については、エンコーダエッジ検出時の各種駆動状態(エンコーダ時間間隔enc_period,駆動速度enc_velocity,PWM値pwm_out)に基づいて行うようにする例を示したが、プロファイルに従う補正と駆動状態に基づく補正とを逆にすることもできる。
即ち、PWM値の変化率については、エンコーダエッジが検出される位置毎の適切な値を予めプロファイルとして設定しておいて、エンコーダエッジが検出される毎にその位置(カウント値)に応じた変化率に変化させるようにし、初期PWM値(start_pwm)については、エンコーダエッジ検出時の各種駆動状態に基づいて補正するのである。モータ制御装置をこのように構成した場合の制御例を、図29及び図30に示す。
まず図29は、モータ負荷が徐々に増加していく場合(図4と同様)の制御例である。図示の如く、PWM値の変化率は、駆動開始後しばらくは一定であるが、モータ負荷が徐々に増加していくに従い、プロファイルに従って変化率も増加させていく。この増加傾向や増加量は、想定されるモータ負荷の増加(移行負荷)に応じて予め設定されたものである。
一方、初期PWM値(start_pwm)については、エンコーダエッジ検出毎に、そのときの駆動状態(例えばエンコーダ時間間隔enc_period)に基づいて、前回の初期PWM値変化率からどのように変化させるかが判断される。図29の例では、時刻t1におけるエンコーダ時間間隔T1がエッジ間隔過剰検出閾値(det_period_max)より大きいため、この時刻t1でリセットされる初期PWM値(start_pwm)はその初期値であるstart_pwm1から所定量増加する。
そして、時刻t2でエンコーダ時間間隔T6が再びエッジ間隔過剰検出閾値(det_period_max)より大きくなるため、この時刻t2でリセットされる初期PWM値(start_pwm)は、前回エンコーダエッジ検出時の値からさらに所定量増加する。
図30は、モータ負荷が徐々に減少していく場合(図5と同様)の制御例である。図示の如く、PWM値の変化率は、駆動開始後しばらくは一定であるが、モータ負荷が徐々に減少していくに従い、プロファイルに従って変化率も減少させていく。この減少傾向や減少量は、想定されるモータ負荷の減少(移行負荷)に応じて予め設定されたものである。
一方、初期PWM値(start_pwm)については、エンコーダエッジ検出毎に、そのときの駆動状態(例えばエンコーダ時間間隔enc_period)に基づいて、前回の初期PWM値変化率からどのように変化させるかが判断される。図30の例では、時刻t1におけるエンコーダ時間間隔T1がエッジ間隔過剰検出閾値(det_period_max)より大きいため、図29と同様、この時刻t1でリセットされる初期PWM値(start_pwm)はその初期値であるstart_pwm1から所定量増加する。
そして、時刻t2では、エンコーダ時間間隔T6がエッジ間隔不足検出閾値(det_period_min)より小さくなる。そのため、この時刻t2でリセットされる初期PWM値(start_pwm)は、前回エンコーダエッジ検出時の値から所定量減少する。
上記各実施形態はいずれも、図29,図30で説明したように、初期PWM値(start_pwm)についてはエンコーダエッジ検出時の駆動状態に基づいて補正し、変化率についてはプロファイルに従って補正するように変形することが可能である。
また、上記第4実施形態では、エンコーダエッジ検出時のエッジ間隔時間(enc_period)に基づいてPWM値更新周期Tvを変化させることにより、PWM値の変化率を変化させる例を説明したが、Tvを変化させることによるPWM値の変化率の変化は、例えば図31に示すようにエンコーダエッジ検出時のPWM値(pwm_out)に基づいて行うこともできるし、また例えば、図32に示すようにエンコーダエッジ検出時の駆動速度(enc_velocity)に基づいて行うこともできる。
図31は、エンコーダエッジ検出時のPWM値(pwm_out)に基づいてTvを変化させる場合の変化率補正処理を示すものであり、第4実施形態の変化率補正処理(図19参照)におけるS360をS431に、S370をS433に、S421をS451に、S423をS453に、それぞれ置き換えたものである。
即ち、エッジ検出時にpwm_outがdet_pwm_maxより大きければ、S451にてdet_pwm_maxとpwm_outの差をvarとして設定し、pwm_outがdet_pwm_minより小さければ、S453にてdet_pwm_minとpwm_outの差をvarとして設定する。
また、図32は、エンコーダエッジ検出時の駆動速度(enc_velocity)に基づいてTvを変化させる場合の変化率補正処理を示すものであり、第4実施形態の変化率補正処理(図19参照)におけるS360をS441に、S370をS443に、S421をS461に、S423をS463に、それぞれ置き換えたものである。
即ち、エッジ検出時にenc_velocityがmicro_velo_minより小さければ、S461にてenc_velocityとmicro_velo_minの差をvarとして設定し、enc_velocityがmicro_velo_maxより大きければ、S463にてenc_velocityとmicro_velo_maxの差をvarとして設定する。
このように、エンコーダエッジ検出時のPWM値(pwm_out)或いは駆動速度(enc_velocity)によっても、PWM値更新間隔Tvを変更することができる。
また、上記第1実施形態の変化率補正処理(図9参照)では、エッジ間隔時間(enc_period)に基づいてa_paramを一定量変化(増加或いは減少)させるにあたり、前回のa_paramに対して増加或いは減少させるようにしたが、これに限らず、例えば単に3種類の駆動時PWM増分量(accel_param,accel_param1,accel_param2)を用意して、エッジ間隔時間(enc_period)に応じて切り換えるようにしてもよい。なお、accel_param1<accel_param<accel_param2の関係がある。
具体的には、図33に示すように、enc_periodがdet_period_maxより大きければ、S471にてa_paramとしてaccel_param2を設定し、enc_periodがdet_period_minより小さければ、S473にてa_paramとしてaccel_param1を設定し、それ以外ならばS475にてa_paramとしてaccel_param(即ち既述の初期値)を設定する。
また、PWM値更新間隔Tvを変化させる例についても、上記第3実施形態では、前回の定加算タイミングprcntに対して増加或いは減少させるようにしたが、これに限らず、図34に示すように、単に3種類の定加算タイミング(pwm_reload_count,pwm_reload_count1,pwm_reload_count2)を用意して、エッジ間隔時間(enc_period)に応じて切り換えるようにしてもよい。なお、pwm_reload_count1<pwm_reload_count<pwm_reload_count2の関係がある。
また、図33に示した3種類のa_paramを切り換える例や、図34に示した3種類のprcntを切り換える方法は、いずれも、エンコーダエッジ検出時のPWM値(pwm_out)に基づいて変化率を変化させる制御や、エンコーダエッジ検出時の駆動速度(enc_velocity)に基づいて変化率を変化させる制御に対しても、同様に適用できることはいうまでもない。
また、第5実施形態や第6実施形態で説明した、a_param及びTvの両者を変化させることでPWM値の変化率を化させる方法についても、エンコーダエッジ検出時のPWM値(pwm_out)に基づいて変化率を変化させる制御や、エンコーダエッジ検出時の駆動速度(enc_velocity)に基づいて変化率を変化させる制御に対して同様に適用可能である。
更に、PWM値の変化率を変化させる例として、上記各実施形態では、一定量増減する例や、エンコーダエッジ検出時の駆動状態(enc_periodやpwm_outなど)に応じて連続的に変化させる例を説明したが、エンコーダエッジ検出時の駆動状態に応じて段階的に変化させるようにしてもよい。
また、上記実施形態では、モータ駆動ドライバ回路11として、図2のような、Hブリッジを構成する各スイッチング素子S1〜S4に対する駆動信号をそれぞれ駆動用信号生成部8から入力して動作するものを示したが、これに限らず、例えば図35に示すモータ駆動ドライバ回路11bや、或いは図36に示すようなモータ駆動ドライバ回路11aのように構成してもよい。
図35に示したモータ駆動ドライバ回路11bは、モータ110の通電電流を電流検出抵抗Rdの電圧として検出することによりモータ110のトルクを検出し、その検出したトルクが、目標トルク指令と一致するようにモータ110の通電を制御するための制御信号を、DCモータ駆動用IC86内のトルク制御部87が生成するように構成されている。そして、駆動用信号生成部8bは、出力PWMデューティ生成部4からのPWM値に応じたPWM信号を生成すると共に、回転方向設定レジスタ22の設定値及び起動設定レジスタ21の設定値に従って、駆動方向(モータ110を回転すべき方向)指令、及びモータ110への通電を行うべきか否かを示す駆動指令を出力する。
目標トルク指令(目標電流指令)は、PWM信号を、抵抗R1,R2及びコンデンサC1から構成される積分回路で積分することにより得られるものである。尚、このDCモータ駆動用IC86の内部も、図示はしないものの図2と同じようなHブリッジ回路が形成されており、最終的には、トルク制御部87からの制御信号に基づいてこのHブリッジ回路を構成するスイッチング素子のスイッチング動作が制御されることになる。
このように構成されたモータ駆動ドライバ回路11bを用いれば、単にPWM信号に従って図2のモータ駆動ドライバ回路11を駆動(スイッチング制御)するのに比べ、モータ駆動ドライバ回路11内にてモータ110のトルクが一定になるよう制御されるため、安定したモータトルクによりキャリッジ102等を駆動することが可能となる。
また、図36に示したモータ駆動ドライバ回路11aは、図35で説明したモータ駆動ドライバ回路11bと比較して、抵抗R1,R2及びコンデンサC1で構成される積分回路がないだけであって、DCモータ駆動用ICは全く同じである。
一方、駆動用信号生成部8aは、起動設定レジスタ21の設定値に基づいて駆動指令を生成し出力する。また、回転方向設定レジスタ22の設定値にもとづいて、駆動方向指令を生成し出力する。ここまでは、図35の駆動用信号生成部8bと同じである。そして、駆動用信号生成部8aは、出力PWMデューティ生成部4からのPWM値に対し、電流値を表すデータとなるように所定のゲインを乗じ、それを図示しないD/A変換器にてアナログ値の目標電流指令として、DCモータ駆動用IC86へ出力する。
また、上記各実施形態では、一例として、インクジェットプリンタ(図37)のキャリッジ102を駆動するモータ110においてキャッピングが行われる際の微小速度制御について説明したが、本発明の適用がキャッピング時の微小速度制御に限らないのはいうまでもなく、例えば上述した間隙調整領域における微小速度制御や、ノズル部107のワイプ時における微小速度制御など、駆動対象(上記例ではキャリッジ102)が一定量駆動される毎(上記例ではエンコーダエッジ検出毎)にモータの駆動力(上記例ではPWM値)を所定周期で所定増分量ずつ増加させていくようなモータ制御に対して広く適用することが可能である。
特に、記録ヘッド103のワイプ動作時は、記録ヘッド103を搭載したキャリッジ102の移行負荷が、記録ヘッド103とワイプ用ラバー(図示略)との接触前・接触中・接触後で大きく変動し、これによってモータ110の負荷も大きく変動することとなる。このようにモータ負荷の急変が予め想定されるような制御に対して本発明を適用するとより効果的である。
また、モータ110についても、DCモータに限らずACモータでも適用可能であり、ステップモータのような矩形パルスにより駆動されるモータを除くあらゆるモータに対して本発明を適用可能である。
1,151,161,171,181,191,201・・・CPU、2,152,162,172,182,192,202・・・ASIC、3,153,163,173,183,193,203・・・動作モード設定レジスタ群、4,165・・・出力PWMデューティ生成部、6,154,185,194,204・・・PWM増分量補正部、7・・・駆動用信号生成部、8・・・初期PWMデューティ補正部、8a・・・駆動用信号生成部、8b・・・駆動用信号生成部、9・・・プロファイル格納部、10,150,160,170,180,190,200・・・モータ制御装置、11・・・モータ駆動ドライバ回路、11a・・・モータ駆動ドライバ回路、11b・・・モータ駆動ドライバ回路、12・・・クロック生成部、13・・・エンコーダエッジ検出部、14・・・位置カウンタ、15・・・領域判定部、15a・・・減速時間計測タイマ、16・・・周期・速度計測部、17・・・各種信号生成部、18,164,174,184・・・加算タイミング生成部、21・・・起動設定レジスタ、22・・・回転方向設定レジスタ、23・・・PWM周期設定レジスタ、24・・・定加算タイミング設定レジスタ、25・・・位置設定レジスタ群、26・・・PWM値設定レジスタ群、27・・・PWM増減量設定レジスタ群、28・・・制限PWM設定レジスタ群、29,41,46,51,56,61・・・増分量補正値設定レジスタ群、30・・・エッジ間隔時間閾値設定レジスタ群、62・・・PWMデューティ閾値設定レジスタ、67・・・速度閾値設定レジスタ、86・・・DCモータ駆動用IC、87・・・トルク制御部、100・・・記録機構、101・・・ガイド軸、102・・・キャリッジ、103・・・記録ヘッド、104・・・移動ベルト、105・・・エンコーダ、106・・・キャップ装置、107・・・ノズル部、110・・・モータ、121・・・キャップ、122・・・バネ、123・・・スロープ