(57)【要約】  【課題】  リニアスケールに汚れが付着している区間を特定し、その区間内では補償制御を行うことで、汚れに起因した制御性能の劣化を抑制する。  【解決手段】  リニアスケール４６の汚れ７１，７２によってキャリッジの異常速度が検出された場合、キャリッジを全走査域で駆動させて異常時全カウント値Ｍを計測し、更に、キャリッジを走査域の一端側から駆動させてその駆動開始から異常速度が検出されるまでの第１カウント値ｋａと、他端側から駆動させてその駆動開始から異常速度が検出されるまでの第２カウント値ｋｂを計測する。そして、全走査域のノミナルカウント値Ｎからｋａとｋｂの和を減算して汚れ区間幅ｍを算出し、異常時全カウント値Ｍからｋａとｋｂの和を減算して汚れ区間内実カウント値ｚを算出して、汚れ区間を特定する。この汚れ区間を補償区間とし、以後この補償区間内では保持操作量を用いた補償制御を行う。【選択図】図５
2010213424.tif 000002
【特許請求の範囲】
【請求項１】
予め設定された移動経路上をモータにより駆動される被駆動体の移動量に応じてパルス状のエンコーダ信号を出力するリニアエンコーダと、
前記リニアエンコーダからの前記エンコーダ信号をカウントし、該カウント値に基づいて前記被駆動体の速度及び位置を検出する駆動状態検出手段と、
所定の演算タイミング毎に、前記駆動状態検出手段による検出速度に基づいて前記モータを制御するための操作量を演算して該モータへ出力する操作量演算手段と、
を備えたモータ制御装置であって、
前記駆動状態検出手段による検出速度が予め設定された速度正常範囲から外れた異常速度であるか否かを検知する異常速度検知手段と、
前記異常速度検知手段によって前記異常速度が検知された場合に、前記被駆動体を前記移動経路の一端から駆動させて前記異常速度検知手段により前記異常速度が検知されるまでの前記エンコーダ信号をカウントすることにより第１カウント値ｋａを計測すると共に、前記被駆動体を前記移動経路の他端から駆動させて前記異常速度検知手段により前記異常速度が検知されるまでの前記エンコーダ信号をカウントすることにより第２カウント値ｋｂを計測して、該各カウント値ｋａ，ｋｂに対応した位置の間を補償区間として検出する補償区間検出手段と、
前記補償区間検出手段により前記補償区間が検出された後の前記被駆動体の駆動の際、前記駆動状態検出手段による検出位置に基づいて前記被駆動体が前記補償区間に入ったかどうかを判断すると共に、該補償区間に入った場合、該補償区間内においては、前記操作量として、該補償区間に入る前に前記操作量演算手段により演算された一又は複数の操作量に基づいて得られる保持操作量を出力する操作量補償手段と、
を備えていることを特徴とするモータ制御装置。
【請求項２】
請求項１に記載のモータ制御装置において、
前記異常速度検知手段によって前記異常速度が検知された場合に、前記被駆動体を前記移動経路の一端から他端までの全領域を駆動させ、該駆動中の前記エンコーダ信号をカウントすることにより異常時全カウント値Ｍを計測する異常時全カウント値計測手段と、
前記第１カウント値ｋａと前記第２カウント値ｋｂの和を前記異常時全カウント値Ｍから減算することにより補償区間内実カウント値ｚを演算する補償区間内実カウント値演算手段を備え、
前記操作量補償手段は、前記被駆動体が前記補償区間に入った場合、該入った後の前記駆動状態検出手段によるカウント値及び前記補償区間内実カウント値ｚに基づいて該補償区間の終了位置を検出し、該終了位置が検出されるまで前記保持操作量を出力する
ことを特徴とするモータ制御装置。
【請求項３】
請求項２に記載のモータ制御装置において、
前記リニアエンコーダが正常である場合に前記被駆動体を前記移動経路の一端から他端までの全領域を駆動させたときの、該駆動中の前記エンコーダ信号のカウント値であるノミナルカウント値Ｎが予め記憶されている記憶手段と、
前記異常速度検知手段によって前記異常速度が検知された場合に、前記異常時全カウント値計測手段により計測された前記異常時全カウント値Ｍを前記ノミナルカウント値Ｎから減算することにより、異常時カウント誤差ｎを検出する異常時カウント誤差検出手段と、
前記補償区間検出手段により前記補償区間が検出された後の前記被駆動体の駆動の際、前記被駆動体が前記補償区間から出たときに、前記駆動状態検出手段によるカウント中のカウント値を、前記補償区間から出たときのカウント値に前記異常時カウント誤差ｎを加算した値に修正する修正手段と、
を備えていることを特徴とするモータ制御装置。
【請求項４】
請求項３に記載のモータ制御装置において、
前記操作量補償手段は、前記異常時カウント誤差ｎが０ではない場合に、前記保持操作量を出力する
ことを特徴とするモータ制御装置。
【請求項５】
請求項４に記載のモータ制御装置において、
前記異常時カウント誤差検出手段によって前記異常時カウント誤差ｎが０と検出された場合に該検出結果に基づく予め決められた報知を行う第１報知手段を備えている
ことを特徴とするモータ制御装置。
【請求項６】
請求項３〜請求項５の何れか１項に記載のモータ制御装置において、
前記第１カウント値ｋａと前記第２カウント値ｋｂの和を前記ノミナルカウント値Ｎから減算することにより、前記補償区間において前記駆動状態検出手段により本来カウントされるべきカウント値である補償区間幅ｍを演算する補償区間幅演算手段と、
前記補償区間幅演算手段により検出された前記補償区間幅ｍが、予め設定した補償区間幅閾値より大きいか否かを判断する補償区間幅判断手段と、
を備え、
前記操作量補償手段は、前記補償区間幅判断手段により前記補償区間幅ｍが前記補償区間幅閾値以下と判断された場合に、前記保持操作量を出力する
ことを特徴とするモータ制御装置。
【請求項７】
請求項６に記載のモータ制御装置において、
前記補償区間幅判断手段により前記補償区間幅ｍが前記補償区間幅閾値より大きいと判断された場合に該判断結果に基づく予め決められた報知を行う第２報知手段を備えている
ことを特徴とするモータ制御装置。
【請求項８】
請求項１〜請求項７の何れか１項に記載のモータ制御装置において、
前記補償区間検出手段により前記補償区間が検出された後の前記被駆動体の駆動の際、前記被駆動体が前記補償区間に入る前に前記異常速度検知手段によって前記異常速度が検知された場合に、前記補償区間の開始位置を、現在検出されている位置よりも予め決められた量だけ前の位置へ更新する更新手段を備えている
ことを特徴とするモータ制御装置。
【請求項９】
請求項１〜請求項８の何れか１項に記載のモータ制御装置において、
前記操作量補償手段は、前記被駆動体が前記補償区間に入る直前の前記演算タイミングで前記操作量演算手段により演算された操作量を、前記保持操作量として出力する
ことを特徴とするモータ制御装置。
【請求項１０】
請求項１〜請求項８の何れか１項に記載のモータ制御装置において、
前記操作量補償手段は、前記被駆動体が前記補償区間に入る前における複数の前記演算タイミングで前記操作量演算手段により演算された各操作量の平均値を、前記保持操作量として出力する
ことを特徴とするモータ制御装置。
【請求項１１】
請求項１〜請求項１０の何れか１項に記載のモータ制御装置と、
インクを吐出することにより被記録媒体に画像を形成する記録ヘッドと、
前記被駆動体としての、前記記録ヘッドを搭載したキャリッジと、
を備えていることを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータにより駆動される被駆動体の駆動をリニアエンコーダからの信号に基づいて制御するモータ制御装置、及びこのモータ制御装置を搭載した画像形成装置に関する。
【背景技術】
【０００２】
従来、インクジェットプリンタにおいて、記録ヘッドを搭載したキャリッジの駆動は、モータによって制御されている。モータによるキャリッジの駆動制御を高精度に行うためには、キャリッジの位置や速度等の駆動状態を検出する必要があるが、その駆動状態検出には、一般に、所定間隔でスリットが形成されたリニアスケールを有するリニアエンコーダが用いられている。
【０００３】
リニアエンコーダを用いたモータ制御装置では、キャリッジが一定量（スリットの間隔）移動する度にリニアエンコーダから出力されるパルス信号（エンコーダ信号）がカウントされ、そのカウント値に基づいてキャリッジの位置や速度が検出される。そして、その検出された位置や速度が目標位置・目標速度に一致するよう、フィードバック制御が行われる。なお、エンコーダ信号のカウントは、例えばその立ち上がりエッジ、立ち下がりエッジ、又はその両方に基づいて行われるのが一般的である。
【０００４】
ところで、リニアエンコーダを構成するリニアスケールは、インクジェットプリンタの製造ラインにおいてインクが付着したり、ユーザによる使用時に機器内部のグリスが付着したりするなどして、汚れが付着してしまうことがある。
【０００５】
そして、リニアスケールに汚れが付着すると、モータ制御装置では、その汚れの影響によってエンコーダ信号の数が実際よりも少なく（或いは多く）カウントされてしまい、キャリッジの速度が誤検出されてしまうおそれがある。
【０００６】
そのため、例えばキャリッジが一定速度で駆動されている場合に、リニアスケールの汚れに起因して検出速度に変動が生じると、実際には変動していないにもかかわらず、誤検出された速度変動に基づいて、その速度変動を抑えるための不要な制御がなされてしまう。
【０００７】
このようなエンコーダスケールの汚れに対し、例えば特許文献１には、モータによってキャリッジを移動させる画像形成装置において、キャリッジの検出速度が予め定めた閾値以外の速度異常値であった場合に、その速度異常値の出現区間が微小範囲（例えば制御周期１区間）である場合は当該検出速度に代えて直前の検出速度を用いてモータの駆動制御を行い、連続した制御周期（例えば制御周期４回以上）で速度異常値が検出された場合や同一箇所で複数回連続して速度異常値が検出された場合には、エンコーダ汚れと判断してユーザへの通知等を行う。
【０００８】
また、特許文献２には、搬送ベルトや中間転写ベルトなどのベルト上にエンコーダスケールが設けられたレーザプリンタにおいて、スケールの継ぎ目や、スケールに付着したトナーの影響などによって、演算速度が所定の正規範囲を逸脱していると判断された場合に、目標速度もしくは過去の演算速度の平均値をフィードバック量として用い、これに基づき操作量を演算することが記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−２１３０４２号公報
【特許文献２】特開２００６−１７８３７４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１に記載の技術は、速度異常値の発生区間や発生頻度に基づいてエンコーダ汚れの有無を判断できるものの、エンコーダ汚れを判定した場合は単にその旨を通知してユーザへメンテナンス等を促すだけであり、エンコーダ汚れが生じている区間においてそのエンコーダ汚れの影響を排除するための具体的制御法までは提案されていない。
【００１１】
また、特許文献１，２のいずれにおいても、エンコーダスケールの汚れが発生している区間を正確に検出することはできず、エンコーダスケールの汚れに起因して生じる検出速度の異常に対してこれを補償するための制御が必要以上になされ、制御性能が悪化するおそれがある。
【００１２】
しかも、エンコーダスケールの汚れの影響を排除するために、速度異常が検出された場合には直前の検出速度や目標速度等をフィードバック量としてモータ制御を行うようにしているため、実際の位置における摺動負荷が考慮された制御が行われず、制御精度が劣化するおそれがある。
【００１３】
本発明は上記課題に鑑みなされたものであり、リニアエンコーダによって被駆動体の駆動状態を検出すると共に、その検出した駆動状態に基づいて被駆動体の駆動をモータにより制御するよう構成されたモータ制御装置において、被駆動体の全駆動範囲のうち、リニアスケールに汚れが付着している区間を特定すると共に、その区間内においては実際の検出結果を用いずにその区間に応じた適切な補償制御を行うことで、リニアスケールの汚れに起因した制御性能の劣化を抑制することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するためになされた請求項１記載の発明は、予め設定された移動経路上をモータにより駆動される被駆動体の移動量に応じてパルス状のエンコーダ信号を出力するリニアエンコーダと、このリニアエンコーダからのエンコーダ信号をカウントし、該カウント値に基づいて被駆動体の速度及び位置を検出する駆動状態検出手段と、所定の演算タイミング毎に、駆動状態検出手段による検出速度に基づいてモータを制御するための操作量を演算して該モータへ出力する操作量演算手段と、を備えたモータ制御装置であって、異常速度検知手段と、補償区間検出手段と、操作量補償手段と、を備えている。
【００１５】
異常速度検知手段は、駆動状態検出手段による検出速度が予め設定された速度正常範囲から外れた異常速度であるか否かを検知する。
補償区間検出手段は、異常速度検知手段によって異常速度が検知された場合に、被駆動体を移動経路の一端から駆動させて異常速度検知手段により異常速度が検知されるまでのエンコーダ信号をカウントすることにより第１カウント値ｋａを計測すると共に、被駆動体を移動経路の他端から駆動させて異常速度検知手段により異常速度が検知されるまでのエンコーダ信号をカウントすることにより第２カウント値ｋｂを計測して、該各カウント値ｋａ，ｋｂに対応した位置の間を補償区間として検出する。
【００１６】
そして、操作量補償手段は、補償区間検出手段により補償区間が検出された後の被駆動体の駆動の際、駆動状態検出手段による検出位置に基づいて被駆動体が補償区間に入ったかどうかを判断すると共に、補償区間に入った場合、該補償区間内においては、操作量として、該補償区間に入る前に操作量演算手段により演算された一又は複数の操作量に基づいて得られる保持操作量を出力する。
【００１７】
リニアエンコーダにおいて、例えばこれを構成するリニアスケールに汚れ等が付着していると、被駆動体が移動経路上を一定速度で移動していても、その汚れ等が付着している位置に対応した位置を通過する際、その汚れ等の影響を受けて、駆動状態検出手段における検出速度に変動が生じるおそれがある。
【００１８】
そこで請求項１に記載の発明では、異常速度が検知された場合には、その異常速度がリニアスケールの汚れ等に起因するものである（即ちリニアスケールに汚れ等が付着している）との一応の仮定の元で、その汚れ等が付着している区間を補償区間として特定する。そして、以後の被駆動体の駆動時は、その補償区間においては、操作量演算手段により演算される操作量（駆動状態検出手段による検出速度に基づいて演算される操作量）に代えて、操作量補償手段からの保持操作量によってモータを制御する。
【００１９】
従って、請求項１に記載のモータ制御装置によれば、汚れ等が付着している区間（補償区間）において、汚れ等に起因して生じる検出速度の変動の影響がモータ制御に反映されてしまうのを防止でき、被駆動体を安定して駆動させることができる。しかも、保持操作量によるモータ制御はあくまでも補償区間内で行われ、それ以外の区間では通常通り検出速度に基づいて演算された操作量が用いられるため、全体として制御性能の劣化を大幅に抑え、高精度にモータを制御することができる。
【００２０】
また、補償区間で用いられる保持操作量は、被駆動体が補償区間に入る前に操作量演算手段によって実際に演算された、被駆動体の摺動負荷等が考慮された値である。そのため、このような保持操作量を補償区間で用いることによって、補償区間内においてもより適切な制御を実現することができる。
【００２１】
次に、請求項２に記載の発明は、請求項１に記載のモータ制御装置において、異常速度検知手段によって異常速度が検知された場合に、被駆動体を移動経路の一端から他端までの全領域を駆動させ、該駆動中のエンコーダ信号をカウントすることにより異常時全カウント値Ｍを計測する異常時全カウント値計測手段と、第１カウント値ｋａと第２カウント値ｋｂの和を異常時全カウント値Ｍから減算することにより補償区間内実カウント値ｚを演算する補償区間内実カウント値演算手段を備えている。そして、操作量補償手段は、被駆動体が補償区間に入った場合、該入った後の駆動状態検出手段によるカウント値及び補償区間内実カウント値ｚに基づいて該補償区間の終了位置を検出し、該終了位置が検出されるまで保持操作量を出力する。
【００２２】
即ち、異常時全カウント値Ｍから第１カウント値ｋａと第２カウント値ｋｂの和を減算することにより、汚れ等が生じている補償区間内において現にカウント可能な値（補償区間内実カウント値ｚ）が得られる。
【００２３】
そのため、被駆動体が補償区間に入った後は、この補償区間内実カウント値ｚに基づき、補償区間の終了位置を検出できる。例えばｚ＝２の場合、補償区間に入った後、２カウント計測されるまではまだ補償区間であり、３カウント目が計測されたときに、補償区間から出たものと判断できる。
【００２４】
従って、請求項２に記載のモータ制御装置によれば、被駆動体が補償区間に入った後、補償区間が終了するタイミングを正確に検出することができる。そのため、保持操作量によるモータ制御を必要十分に行うことができ、制御性能の劣化をより確実に抑えることができる。
【００２５】
次に、請求項３に記載の発明は、請求項２に記載のモータ制御装置において、リニアエンコーダが正常である場合に被駆動体を移動経路の一端から他端までの全領域を駆動させたときの、該駆動中の前記エンコーダ信号のカウント値であるノミナルカウント値Ｎが予め記憶されている記憶手段と、異常速度検知手段によって異常速度が検知された場合に、前常時全カウント値計測手段により計測された異常時全カウント値Ｍをノミナルカウント値Ｎから減算することにより、異常時カウント誤差ｎを検出する異常時カウント誤差検出手段と、補償区間検出手段により補償区間が検出された後の被駆動体の駆動の際、被駆動体が補償区間から出たときに、駆動状態検出手段によるカウント中のカウント値を、補償区間から出たときのカウント値に異常時カウント誤差ｎを加算した値に修正する修正手段と、を備えている。
【００２６】
即ち、被駆動体が補償区間を移動している間にカウントされるエンコーダ信号の数は、汚れ等の影響により、補償区間内が仮に汚れ等が存在していない正常状態であったならばカウントされるはずのカウント数とは異なる値になる。
【００２７】
そこで、異常時全カウント値Ｍをノミナルカウント値Ｎから減算することによって異常時カウント誤差ｎを検出する。この異常時カウント誤差ｎは、補償区間内における、汚れ等の影響を受けた実際のカウント値と汚れ等がなかったならばカウントされるはずの正常時のカウント値との差を意味するものである。そして、被駆動体が補償区間から出たとき、その時の実際のカウント値に異常時カウント誤差ｎを加算することで、カウント値を、その時の被駆動体の位置に対応した正しい値に修正する。
【００２８】
従って、請求項３に記載のモータ制御装置によれば、補償区間を通過した後の被駆動体の実際の位置とカウント値とのずれをなくすことができ、補償区間通過後のモータ制御を、補償区間の影響（即ち汚れ等の影響）を受けることなく、より高精度に行うことができる。
【００２９】
次に請求項４に記載の発明は、請求項３に記載のモータ制御装置において、操作量補償手段は、異常時カウント誤差ｎが０ではない場合に、保持操作量を出力する。
異常速度が検出される原因は、必ずしも、リニアスケールの汚れ等、エンコーダに起因するものに限らず、例えば負荷変動等によって実際に速度が変動することも起こり得る。そこで、異常速度が検出された場合、異常時カウント誤差ｎが０かどうかをみることで、その異常速度の原因がエンコーダに起因するものであるのか否かを判断する。そして、異常時カウント誤差ｎが０ではない場合、即ち異常速度の原因がエンコーダに起因するものと判断された場合に、補償区間における保持操作量による制御を行う。
【００３０】
従って、請求項４に記載のモータ制御装置によれば、補償制御の要否をより正確に判断でき、より高性能のモータ制御装置を提供することができる。
次に、請求項５に記載の発明は、請求項４に記載のモータ制御装置において、異常時カウント誤差検出手段によって異常時カウント誤差ｎが０と検出された場合に該検出結果に基づく予め決められた報知を行う第１報知手段を備えている。
【００３１】
異常時カウント誤差ｎが０、即ち異常時全カウント値Ｍとノミナルカウント値Ｎが一致していれば、リニアエンコーダは汚れ等がなく正常な状態であると判断することができる。そのため、異常時カウント誤差ｎが０であるにもかかわらず異常速度が検知されたということは、リニアエンコーダの汚れ等とは異なる何らかの異常が生じている可能性がある。そこで、異常速度検知時に異常時カウント誤差ｎが０である場合は、第１報知手段が報知を行う。
【００３２】
従って、請求項５に記載のモータ制御装置によれば、異常速度の原因がリニアエンコーダの汚れ等に起因するものではない場合には報知が行われるため、当該モータ制御装置のユーザ等は、その報知に基づいて、異常発生に対する適切な措置をとることができる。
【００３３】
次に、請求項６に記載の発明は、請求項３〜請求項５の何れか１項に記載のモータ制御装置において、第１カウント値ｋａと第２カウント値ｋｂの和をノミナルカウント値Ｎから減算することにより、補償区間において駆動状態検出手段により本来カウントされるべきカウント値である補償区間幅ｍを演算する補償区間幅演算手段と、この補償区間幅演算手段により検出された補償区間幅ｍが、予め設定した補償区間幅閾値より大きいか否かを判断する補償区間幅判断手段と、を備えている。そして、操作量補償手段は、補償区間幅判断手段により補償区間幅ｍが補償区間幅閾値以下と判断された場合に、保持操作量を出力する。
【００３４】
保持操作量は、補償区間に入る前の実際の操作量に基づいて得られる値であるとはいえ、補償区間内を移動中の被駆動体の実際の位置・速度が直接的に反映された値ではない。そのため、補償区間幅ｍが広すぎる場合に、その広い補償区間全体にわたって保持操作量による制御を行うのは、あまり好ましくない。
【００３５】
そこで、請求項６に記載の発明のように、保持操作量による制御を、補償区間幅ｍが補償区間幅閾値以下の場合に限定して行うようにすることで、制御性能の劣化を防ぐことができる。
【００３６】
なお、補償区間幅ｍが広くなるケースとしては、単純に１つの汚れが広い範囲にわたって連続的に付着しているケースの他、狭い領域の汚れが断続的に点在しているケースなどが想定される。
【００３７】
次に、請求項７に記載の発明は、請求項６に記載のモータ制御装置において、補償区間幅判断手段により補償区間幅ｍが補償区間幅閾値より大きいと判断された場合に該判断結果に基づく予め決められた報知を行う第２報知手段を備えている。
【００３８】
上述したように、補償区間幅ｍが広すぎる場合にその広い補償区間全体にわたって保持操作量による制御を行うのはあまり好ましくない。
そこで、請求項７に記載の発明のように、補償区間幅ｍが広すぎる（補償区間幅閾値より大きい）場合に報知を行うようにすれば、当該モータ制御装置のユーザ等は、その報知に基づいて、異常発生に対する適切な措置をとることができる。
【００３９】
次に、請求項８に記載の発明は、請求項１〜請求項７の何れか１項に記載のモータ制御装置において、補償区間検出手段により補償区間が検出された後の被駆動体の駆動の際、被駆動体が補償区間に入る前に異常速度検知手段によって異常速度が検知された場合に、補償区間の開始位置を、現在検出されている位置よりも予め決められた量だけ前の位置へ更新する更新手段を備えている。
【００４０】
補償区間検出手段によって検出された補償区間の開始位置（各カウント値ｋａ，ｋｂに基づく）は、異常速度が検出されたときのカウント値に基づくものであるため、必ずしも現実に汚れ等が付着している位置の端部に一致しているとは限らない。即ち、異常速度の検知タイミングとエンコーダ信号のカウントタイミングの関係によっては、汚れ等が付着している範囲に入ってしばらく経過（移動）した後に異常速度が検知される可能性もある。そうなると、実際に汚れ等が付着している範囲全体がもれなく補償区間として設定されず、補償区間に入る前にエンコーダ汚れ等による検出速度の変動が生じてしまうおそれがある。
【００４１】
そこで、請求項８に記載の発明では、補償区間を検出してその区間内では保持操作量による制御を行うようにした後も、異常速度が検知された場合には、補償区間の開始位置をより早めるようにしている。
【００４２】
これにより、設定された補償区間の開始位置と実際の汚れ等付着開始位置との間にずれ・誤差等があってもそれを修正することができ、汚れ等が付着している区間全体に渡って確実に保持操作量による制御を行うようにすることができる。
【００４３】
ここで、操作量補償手段が出力する保持操作量は、具体的には、例えば請求項９に記載のように、被駆動体が補償区間に入る直前の演算タイミングで操作量演算手段により演算された操作量としてもよいし、例えば請求項１０に記載のように、被駆動体が補償区間に入る前における複数の演算タイミングで操作量演算手段により演算された各操作量の平均値としてもよい。
【００４４】
請求項９に記載のモータ制御装置によれば、補償区間に入る直前に演算された実際の操作量を用いることで、その地点の摺動負荷が考慮されたより適切な操作量にて補償制御を行うことができるため、補償区間内においても被駆動体に対してより適切な駆動力を与えることができる。
【００４５】
但し、操作量演算手段により演算される操作量は、モータの回転に伴って生じるコギングによるトルク変動やノイズなどの影響によって変動するおそれがある。そのため、上記請求項９のように補償区間に入る直前の（１つの）操作量を保持操作量とする場合、その１つの操作量がモータのトルク変動やノイズ等の影響をどの程度受けたものであるかによっては、必ずしもその操作量を保持操作量とすることが適切とはいえない場合がある。
【００４６】
そこで、請求項１０に記載のように、補償区間に入る前において演算された複数の操作量の平均値を保持操作量として用いれば、トルク変動やノイズ等の影響が低減されたより適切な操作量にて補償制御を行うことができる。従って、補償区間内において、被駆動体に対してさらに適切な駆動力を与えることができる。
【００４７】
次に、請求項１１に記載の発明は、請求項１〜請求項１０の何れか１項に記載のモータ制御装置と、インクを吐出することにより被記録媒体に画像を形成する記録ヘッドと、被駆動体としての記録ヘッドを搭載したキャリッジと、を備えていることを特徴とする画像形成装置である。
【００４８】
このように構成された画像形成装置によれば、エンコーダに汚れ等が付着していても、その影響を抑えてキャリッジを高精度に制御でき、高品質の画像を形成することができる。
【図面の簡単な説明】
【００４９】
【図１】実施形態のインクジェットプリンタの電気的構成を表すブロック図である。
【図２】実施形態のインクジェットプリンタにおける画像形成機構の概略構成を表す説明図である。
【図３】ＣＲリニアエンコーダの具体的構成を表す説明図であり、（ａ）はリニアスケールの構成を表し、（ｂ）は検出部の構成及びリニアスケールとの相対的位置関係を表す図である。
【図４】リニアスケールに付着した汚れの影響によって検出速度が変動することを説明するための説明図である。
【図５】リニアスケールにおける汚れ区間の検出及びその検出結果に基づく補償制御を説明するための説明図である。
【図６】ＡＳＩＣにて行われるキャリッジ駆動処理を表すフローチャートである。
【発明を実施するための形態】
【００５０】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
（１）インクジェットプリンタの構成
図１に、本発明が適用された実施形態のインクジェットプリンタ１の電気的構成を示す。
【００５１】
本実施形態のインクジェットプリンタ１は、用紙トレイに収容された用紙Ｐ（図１では図示略。図２参照。）を一枚ずつ分離・搬送しつつ、用紙Ｐへの画像形成を行うものであり、図１に示すように、用紙Ｐへインク液滴を吐出するためのノズルが複数配列されてなる記録ヘッド１１と、この記録ヘッド１１が搭載されたキャリッジ１２と、記録ヘッド１１による用紙Ｐへの画像形成の際にキャリッジ１２を主走査方向（用紙Ｐが搬送される副走査方向と直交する方向）へ往復駆動させるための駆動源であるキャリッジ（ＣＲ）モータ１３と、キャリッジ１２の移動量（位置や速度、移動方向など）を検出するためのＣＲリニアエンコーダ１４と、用紙Ｐを副走査方向へ搬送する搬送ローラ（図示略）の駆動源であるラインフィード（ＬＦ）モータ２１と、ＬＦモータ２１の回転量（ひいては用紙Ｐの搬送量）を検出するためのＬＦロータリエンコーダ２２と、を備えている。
【００５２】
なお、ＣＲモータ１３及びＬＦモータ２１は、本実施形態ではいずれも直流モータである。また、ＣＲリニアエンコーダ１４及びＬＦロータリエンコーダ２２は、本実施形態ではいずれも、インクリメンタル型の光学式エンコーダである。
【００５３】
また、インクジェットプリンタ１は、記録ヘッド１１を駆動してインク液滴を吐出させるための記録ヘッドドライバ１５と、ＣＲモータ１３を駆動させるためのＣＲモータドライバ１６と、ＬＦモータ２１を駆動させるためのＬＦモータドライバ２３と、を備え、更に、各ドライバ１５，１６，２３に対して駆動指令を出力することによりこれらの動作を制御するＡＳＩＣ２と、を備えている。
【００５４】
ここで、インクジェットプリンタ１における、キャリッジ１２、ＣＲモータ１３、及びＣＲリニアエンコーダ１４等からなる画像形成機構の具体的構成について、図２を用いて説明する。図２は、本実施形態のインクジェットプリンタ１における画像形成機構の概略構成を表す説明図である。
【００５５】
図２に示すように、本実施形態のインクジェットプリンタ１における画像形成機構では、ガイド軸４１が、用紙Ｐの幅方向（主走査方向）に設置され、このガイド軸４１に、記録ヘッド１１を搭載したキャリッジ１２が挿通されている。
【００５６】
キャリッジ１２は、ガイド軸４１に沿って設けられた無端ベルト４２に連結され、その無端ベルト４２は、ガイド軸４１の一端側に設置された従動プーリ４４と、ガイド軸４１の他端側に設置されたＣＲモータ１３の駆動プーリ４３との間に掛け止められている。これにより、キャリッジ１２は、無端ベルト４２を介して伝達されるＣＲモータ１３の駆動力により、ガイド軸４１に沿って主走査方向に往復駆動される。
【００５７】
また、ガイド軸４１の近傍には、主走査方向に所定の間隔でスリットが形成されたリニアスケール４６が、ガイド軸４１に沿って（即ちキャリッジ１２の移動経路に沿って）設置されている。また、キャリッジ１２におけるリニアスケール４６と対向する位置には、リニアスケール４６を挟んで発光部５０および受光部６０が配置された検出部４７（図３参照）が備えられており、上述のリニアスケール４６と共にＣＲリニアエンコーダ１４を構成している。
【００５８】
ここで、ＣＲリニアエンコーダ１４のより具体的な構成について、図３を用いて説明する。ＣＲリニアエンコーダ１４を構成するリニアスケール４６は、図３（ａ）に示すように、所定の間隔でスリット４８が形成されてなるものである。
【００５９】
また、検出部４７は、図３（ｂ）に示すように、発光部５０および受光部６０が、両者の間にリニアスケール４６が挟まれるように配置されている。発光部５０は、二つの発光素子（Ａ相発光素子５１およびＢ相発光素子５２）を備え、受光部６０も、二つの受光素子（Ａ相受光素子６１およびＢ相受光素子６２）を備える。そして、Ａ相発光素子５１から照射された光はＡ相受光素子６１で受光され、Ｂ相発光素子５２から照射された光はＢ相受光素子６２で受光される。
【００６０】
この検出部４７は、キャリッジ１２の移動に伴って主走査方向へ移動するため、検出部４７とリニアスケール４６との相対的位置関係によって、各受光素子６１，６２において対応する各発光素子５１，５２からの光が受光される場合と受光されない場合とが生じる。  図３（ｂ）に示されている状態は、Ａ相発光素子５１からの光はリニアスケール４６に遮られてＡ相受光素子６１で受光されないが、Ｂ相発光素子５２からの光はスリット４８を通過してＢ相受光素子６２で受光される状態である。
【００６１】
このような構成により、検出部４７は、キャリッジ１２の移動に応じて、互いに位相差（本実施形態では９０度）を有する２種類のパルス信号（Ａ相信号，Ｂ相信号）を出力する。このうち１つは、Ａ相受光素子６１での受光状態に対応したＡ相信号であり、もう一つは、Ｂ相受光素子６２での受光状態に対応したＢ相信号である。
【００６２】
Ａ相信号は、Ａ相受光素子６１においてＡ相発光素子５１からの光が受光されている間はローレベル、受光されていない間はハイレベルとなるようなパルス信号である。Ｂ相信号も同様に、Ｂ相受光素子６２においてＢ相発光素子５２からの光が受光されている間はローレベル、受光されていない間はハイレベルとなるようなパルス信号である。但し、各受光素子６１，６２における受光状態と各相信号のハイ・ローのレベルとの関係は、上記の関係に限定されるものではなく、受光時にハイレベル、遮光時にローレベルとなるようなパルス信号を出力するものであってもよい。
【００６３】
そして、Ａ，Ｂ各相のパルス信号は、キャリッジ１２の移動方向が図２における右方向（従動プーリ４４側から駆動プーリ４３側に向かう方向。以下「順方向」ともいう。）である場合は、Ａ相信号はＢ相信号に対して位相が９０度進むようにされている。逆に図中左方向（駆動プーリ４３側から従動プーリ４４側に向かう方向。以下「逆方向」ともいう。）である場合は、Ａ相信号がＢ相信号に対して位相が９０度遅れるようにされている。このＡ，Ｂ各相のパルス信号は、ＡＳＩＣ２内のＣＲリニアエンコーダ処理部３４に入力される。
【００６４】
ＣＲリニアエンコーダ処理部３４は、ＣＲリニアエンコーダ１４から入力されるＡ，Ｂ各相のパルス信号に基づき、キャリッジ１２の位置や速度、移動方向など（以下、まとめて「駆動状態」ともいう）を検出する。そして、その検出結果は、記録制御部３１及びＣＲモータ制御部３２へ出力される。
【００６５】
ＣＲリニアエンコーダ処理部３４によるキャリッジ１２の駆動状態検出のうち、特に、キャリッジ１２の位置及び速度の検出は、本実施形態では、Ａ相信号に基づいて行われる。
【００６６】
即ち、ＣＲリニアエンコーダ処理部３４は、ＣＲリニアエンコーダ１４から入力されるＡ，Ｂ各相のパルス信号のうち、Ａ相信号について、その立ち上がりエッジ及び立ち下がりエッジを検出する。そして、各エッジを検出する度に、図示しない位置カウンタにてその検出数をカウントしていく。
【００６７】
そのため、ＣＲリニアエンコーダ処理部３４は、この位置カウンタのカウント値（エッジ検出のカウント値）に基づいて、キャリッジ１２がその移動経路上のどこに位置しているかを検出することができる。なお、以下の説明において、単に「エンコーダ信号」というときはＡ相信号を意味する。また、そのエンコーダ信号について「カウント」するというときは、Ａ相信号の立ち上がりエッジ及び立ち下がりエッジをカウントすることを意味する。
【００６８】
また、ＣＲリニアエンコーダ処理部３４は、Ａ相信号の各エッジの検出タイミングに同期して、ＣＲリニアエンコーダ１４の物理分解能と、前回エッジが検出されてから今回エッジが検出されるまでのエッジ間隔時間とに基づく演算により、キャリッジ１２の移動速度（検出速度）を検出する。
【００６９】
更に、ＣＲリニアエンコーダ処理部３４は、補償制御情報設定部３６を備えている。この補償制御情報設定部３６は、キャリッジ１２の検出速度に基づいて、ＣＲリニアエンコーダ１４を構成するリニアスケール４６に汚れ等が付着していないかどうかを判断する。そして、汚れ等が付着していると判断した場合には、その付着している区間（汚れ区間）を特定して、その汚れ区間に関する情報である汚れ区間情報をＣＲモータ制御部３２へ伝達する。なお、この補償制御情報設定部３６が行う具体的演算処理等については、後で詳しく説明する。
【００７０】
記録制御部３１は、ＣＲリニアエンコーダ処理部３４により検出されたキャリッジ１２の駆動状態に基づいて、記録ヘッド１１を駆動させるための駆動指令を生成し、記録ヘッドドライバ１５へ出力する。記録ヘッドドライバ１５は、記録制御部３１から入力された駆動指令に従って記録ヘッド１１へ駆動電圧を印加することにより、インク液滴を吐出させる。
【００７１】
ＣＲモータ制御部３２は、ＣＲリニアエンコーダ処理部３４により検出されたキャリッジ１２の駆動状態に基づき、所定の演算タイミング毎に、ＣＲモータ１３を制御するための操作量を生成する。そして、その生成した操作量に対応した駆動指令（ＰＷＭ信号など）をＣＲモータドライバ１６へ出力する。つまり、ＣＲモータ制御部３２は、ＣＲリニアエンコーダ処理部３４によって検出されたキャリッジ１２の位置や速度、移動方向等に基づいて、キャリッジ１２のフィードバック制御を行うものである。
【００７２】
但し、本実施形態では、補償制御情報設定部３６によりリニアスケール４６に汚れ等が付着していることが検出され、補償制御情報設定部３６から汚れ区間情報が伝達されてきた場合は、ＣＲモータ制御部３２は、その汚れ区間においては、検出速度に基づく通常の操作量生成（フィードバック制御）を行わず、予め決められた演算方法によって演算される保持操作量を用いた補償制御を行う。この補償制御についても、後で詳しく説明する。
【００７３】
ＣＲモータドライバ１６は、ＣＲモータ１３へ電力を供給してＣＲモータ１３を回転させるための、例えばＨブリッジ回路等からなるものであり、ＣＲモータ制御部３２から入力された駆動指令に従ってＣＲモータ１３へ電力を供給し、ＣＲモータ１３を回転させる。
【００７４】
一方、ＬＦロータリエンコーダ２２は、円周に沿って所定間隔でスリットが形成され、ＬＦモータ２１の回転と共に回転するエンコーダホイール（図示略）を有し、ＬＦモータ２１の回転に応じて（即ち用紙Ｐの搬送に応じて）互いに位相がずれた２つのパルス信号（Ａ相信号、Ｂ相信号）を出力するものであり、これら各パルス信号は、ＡＳＩＣ２内のＬＦロータリエンコーダ処理部３５に入力される。
【００７５】
ＬＦロータリエンコーダ処理部３５は、ＬＦロータリエンコーダ２２から入力されるＡ，Ｂ各相のパルス信号に基づき、用紙Ｐの位置や速度などを検出する。そして、その検出結果は、ＬＦモータ制御部３３へ出力される。
【００７６】
ＬＦモータ制御部３３は、ＬＦロータリエンコーダ処理部３５により検出された用紙Ｐの位置や速度などに基づいて、ＬＦモータ２１を制御するための操作量を生成する。そして、その生成した操作量に対応した駆動指令（ＰＷＭ信号など）をＬＦモータドライバ２３へ出力する。
【００７７】
ＬＦモータドライバ２３は、ＬＦモータ２１へ電力を供給してＬＦモータ２１を回転させるための、例えばＨブリッジ回路等からなるものであり、ＬＦモータ制御部３３から入力された駆動指令に従ってＬＦモータ２１へ電力を供給し、ＬＦモータ２１を回転させる。
【００７８】
また、インクジェットプリンタ１は、ＡＳＩＣ２を含む、当該インクジェットプリンタ１の各部を統括的に制御するＣＰＵ３と、ＣＰＵ３が実行するプログラム等が記憶されたＲＯＭ４と、ＣＰＵ３によるプログラム実行時に作業領域として使用されるＲＡＭ５と、各種設定情報等が記憶されるＥＥＰＲＯＭ６と、図示しないパーソナルコンピュータ（ＰＣ）等に接続され、ＰＣ等から送信されてくる画像形成指令や画像データ等の各種データを受信したり当該インクジェットプリンタ１の動作状態等の各種データをＰＣ等へ送信したりするためのインタフェース（Ｉ／Ｆ）７と、各種操作ボタンや表示装置等（図示略）を備えた操作・表示部８と、を備え、これら及びＡＳＩＣ２がバス９を介して互いに接続されている。
【００７９】
このように構成されたインクジェットプリンタ１において、記録ヘッド１１による用紙Ｐへの画像形成が行われる際は、まず、待機領域（図２参照）に停止中のキャリッジ１２が、調整領域における所定の初期位置まで移動される。
【００８０】
その後、画像形成のためのキャリッジ１２の駆動が開始されると、キャリッジ１２は、初期位置から記録領域に向かって（つまり順方向へ）加速し始め、やがて所定の目標一定速度に到達する。なお、本実施形態では、少なくとも記録領域においては、その目標一定速度で定速移動される。
【００８１】
そして、記録領域を目標一定速度で定速移動されている間、記録ヘッド１１から用紙Ｐへインク液滴が吐出され、用紙Ｐへの１ライン分の画像形成が行われる。その後、キャリッジ１２は減速し、待機領域内で停止する。待機領域内での停止後、キャリッジ１２は、この待機領域から調整領域へ向かう方向（つまり逆方向へ）再び移動し始め、記録領域において次の１ライン分の画像形成が行われる。そして、その後キャリッジ１２は減速し、再び調整領域内で停止する。
【００８２】
このように、キャリッジ１２が主走査方向へ往復移動され、その度に記録ヘッド１１により１ラインずつ画像形成が行われることで、最終的に用紙Ｐへの１ページ分の画像形成がなされる。
【００８３】
（２）リニアスケールの汚れによる検出速度の変動について
上記のように構成されたインクジェットプリンタ１において、リニアスケール４６に汚れ等が付着すると、ＣＲリニアエンコーダ処理部３４では、その汚れの影響によって、エンコーダ信号（Ａ相信号）が実際よりも少なく（或いは多く）カウントされてしまう。
【００８４】
図４に、リニアスケール４６に汚れが付着している例と、その場合にキャリッジ１２を一定速度で駆動させたときのエンコーダ信号及びこのエンコーダ信号に基づいて検出される検出速度の例を示す。なお、図４に示す検出速度は、同図に示すリニアスケール４６に対してキャリッジ１２が図中右方向（順方向）に移動している場合の検出結果である。
【００８５】
図４の例では、リニアスケール４６におけるある一定領域にグリス等の汚れ７０が付着している。そのため、その汚れ７０が付着している領域内に存在する１つのスリット４８は、その汚れ７０によって覆われ、Ａ，Ｂ各相の発光素子５１，５２からの光が各受光素子６１，６２に届かない状態になっている。
【００８６】
そのため、キャリッジ１２が、その汚れ７０で覆われている領域に対応する区間を移動している間は、エンコーダ信号はハイレベルのままであり、本来検出されるはずの立ち上がりエッジ、立ち下がりエッジが検出されず、カウント値も更新されない。これにより、キャリッジ１２は実際には一定速度で移動しているにもかかわらず、エンコーダ信号に基づいてＣＲリニアエンコーダ処理部３４にて検出される検出速度は、図４に示すように、汚れ７０の影響を受けて大きく変動（低下）する。そして、その検出速度はＣＲモータ制御部３２にも出力される。
【００８７】
そのため、ＣＲモータ制御部３２は、その大きく低下した検出速度を目標速度（一定速度）に戻すためのフィードバック制御を行う。その結果、検出速度は、図４に示すように、減衰振動しながらやがて一定速度へと収束していく。
【００８８】
このように、リニアスケール４６に汚れ７０が付着すると、キャリッジ１２の検出速度として、実際の速度とは異なる速度が検出されてしまい、それによってＣＲモータ制御部３２では不要な制御が行われてしまう。
【００８９】
そこで、本実施形態のインクジェットプリンタ１では、ＣＲリニアエンコーダ処理部３４内の補償制御情報設定部３６が、キャリッジ１２の検出速度に基づく汚れの有無の判断、及び、汚れ付着が検出された場合の汚れ区間の特定を行う。そして、汚れ区間が特定された場合は、以後、その汚れ区間においては、ＣＲモータ制御部３２は、補償制御を行う。
【００９０】
（３）汚れ区間の検出と補償制御の説明
次に、ＣＲリニアエンコーダ処理部３４内の補償制御情報設定部３６により行われる、リニアスケール４６における汚れ等が付着している汚れ区間の検出と、その検出結果に基づいてＣＲモータ制御部３２で行われる補償制御について、図５を用いて具体的に説明する。図５は、リニアスケール４６において近接する２箇所に汚れ７１，７２が付着している例を示している。
【００９１】
（３−１）異常速度の検知
リニアスケール４６にこのように汚れ７１，７２が付着している状態でキャリッジ１２が駆動されると、この汚れ７１，７２に対応した区間の移動時の検出速度は、この汚れ７１，７２による影響で、図４に示したように大きく変動し、予め設定された速度正常範囲（速度下限閾値から速度上限閾値までの間）から外れてしまう。
【００９２】
そこで、補償制御情報設定部３６は、ＣＲリニアエンコーダ処理部３４にて検出されるキャリッジ１２の検出速度を監視し、検出速度が速度正常範囲から外れた状態、即ち異常速度であるかどうかを検知する。そして、異常速度が検知された場合は、その異常速度がリニアスケール４６の汚れに起因するものなのか、それとも汚れ以外の何らかの要因（例えば負荷変動等の外乱）に起因するものなのかを判断する。
【００９３】
（３−２）異常時全カウント値Ｍの計測と汚れカウント値ｎの算出、及び異常速度の原因判断
異常速度が汚れに起因するものであるか否かの判断は、具体的には次のように行う。まず、キャリッジ１２を、その移動経路（走査域）の一端から他端までの全領域を駆動させて、その間のエンコーダ信号をカウントすることにより、異常時全カウント値Ｍを計測する。なお、本実施形態でいう、移動経路の一端とは、図２における左側（調整領域側）の端部を意味し、他端とは、図２における右側（待機領域側）の端部を意味する。
【００９４】
一方、ＥＥＰＲＯＭ６（又はＡＳＩＣ２内）には、リニアスケール４６が汚れ等のない正常な状態である場合にキャリッジ１２を移動経路の一端から他端までの全走査域を駆動させたときの、エンコーダ信号のカウント値が、ノミナルカウント値Ｎとして、予め記憶されている。
【００９５】
そこで、次式（１）の演算を行うことにより、汚れカウント値ｎを求める。
汚れカウント値ｎ ＝ ノミナルカウント値Ｎ − 異常時全カウント値Ｍ  ・・・（１）
そして、汚れカウント値ｎが０ではない場合、即ち異常時全カウント値Ｍがノミナルカウント値Ｎとは異なる値である場合は、異常速度がリニアスケール４６の汚れに起因するものであると判断する。逆に、汚れカウント値が０である場合は、リニアスケール４６の汚れとは別の原因で異常速度が検知されたものと判断する。
【００９６】
なお、図５では、一例として、ノミナルカウント値Ｎが１５００、異常時全カウント値Ｍが１４９０であって、故に汚れカウント値ｎが１０である場合が示されている。図５の例において、異常時全カウント値Ｍがノミナルカウント値Ｎよりも１０少ないのは、汚れ７１，７２によって計５つのスリット４８が覆われていることにより、その５つのスリットによって本来カウントされるべきエンコーダ信号のエッジ計１０本が検出されないからである。
【００９７】
また、図５では、複数のスリット４８が汚れで覆われているために汚れカウント値ｎが正の値となったが、別のケースとして、例えばスリット４８にその幅よりも細い汚れが付着するなどしてスリット４８が分断され、見かけ上スリットの数が増えることも起こりうる。そのような場合は、図５の例とは逆に、異常時全カウント値Ｍがノミナルカウント値Ｎよりも大きくなり、よって汚れカウント値ｎは負の値となる。このように汚れによって見かけ上スリットの数が増え、異常時全カウント値Ｍがノミナルカウント値Ｎよりも大きくなるケースでも、両者が異なっているか否か、即ち汚れカウント値ｎが０かどうかに基づいて、異常速度の原因が汚れであるか否かを判断することができる。
【００９８】
（３−３）第１カウント値ｋａと第２カウント値ｋｂの計測及び汚れ区間幅ｍの算出
汚れカウント値ｎを算出した後は、汚れ区間幅ｍを算出する。具体的には、まず、キャリッジ１２を移動経路の一端側から順方向へ（待機領域に向けて）駆動させる。そして、その際の駆動開始後から異常速度が検知されるまでのエンコーダ信号をカウントすることにより、第１カウント値ｋａを計測する。次に、キャリッジ１２を移動経路の他端側から逆方向へ（調整領域に向けて）駆動させる。そして、その際の駆動開始後から異常速度が検知されるまでのエンコーダ信号をカウントすることにより、第２カウント値ｋｂを計測する。
【００９９】
そして、次式（２）の演算を行うことにより、汚れ区間幅ｍを求める。
汚れ区間幅ｍ ＝ ノミナルカウント値Ｎ −
（第１カウント値ｋａ ＋ 第２カウント値Ｋｂ）  ・・・（２）
図５では、一例として、第１カウント値ｋａが４８６、第２カウント値ｋｂが１０００であって、故に汚れ区間幅ｍが１４である場合が示されている。この汚れ区間幅ｍは、２つの汚れ７１，７２を含む汚れ区間の幅であり、換言すれば、この汚れ区間内において仮に汚れ７１，７２がなかったならばカウントされたであろうカウント値を意味するものである。
【０１００】
なお、汚れ区間幅ｍの演算は、上記式（２）を用いる方法以外にも、次に述べる式（３）により得られる汚れ区間内実カウント値ｚを用いて演算することもできる。即ち、汚れ区間内実カウント値ｚに汚れカウント値ｎを加算することによっても、汚れ区間幅ｍを算出することができる。
【０１０１】
（３−４）汚れ区間内実カウント値ｚの算出
汚れ区間幅ｍの算出後は、汚れ区間内実カウント値ｚを算出する。具体的には、次式（３）の演算を行うことにより、汚れ区間内実カウント値ｚを求める。
【０１０２】
汚れ区間内実カウント値ｚ ＝ 異常時全カウント値Ｍ −
（第１カウント値ｋａ ＋ 第２カウント値Ｋｂ）  ・・・（３）
図５では、一例として、汚れ区間内実カウント値ｚが４である場合が示されている。図５では、汚れ区間内において全てのスリット４８が汚れで覆われてはおらず、２つの汚れ７１，７２の間に、汚れの影響を受けていないスリット４８が２つあり、この２つのスリットによってエンコーダ信号のエッジが４回検出される。そのため、汚れ区間内実カウント値ｚは４となる。
【０１０３】
補償制御情報設定部３６は、上記のようにして汚れ区間の特定を行うと、その特定した情報（汚れ区間情報）をＣＲモータ制御部３２へ伝達する。
なお、上記式（１）で汚れカウント値ｎを算出したときに汚れカウント値が０であった場合、即ち異常速度の原因が汚れ以外のものである場合は、次の汚れ区間幅ｍの算出を行うことなく、操作・表示部８が備える図示しない表示装置に所定のエラー表示を行うことで、外部のユーザ等に対するエラー報知を行う。そのため、この場合はＣＲモータ制御部３２による補償制御は行われない。
【０１０４】
また、上記式（２）で汚れ区間幅ｍを算出したときに汚れ区間幅ｍが予め設定された汚れ幅閾値より大きかった場合も、汚れ区間幅が広すぎるものとして、操作・表示部８が備える図示しない表示装置に所定のエラー表示を行うことで、外部のユーザ等に対するエラー報知を行う。この場合も、ＣＲモータ制御部３２による補償制御は行われない。
【０１０５】
（３−５）ＣＲモータ制御部３２による補償制御
ＣＲモータ制御部３２は、補償制御情報設定部３６から汚れ区間情報が伝達されると、得られた汚れ区間を補償区間として、以後、キャリッジ１２を駆動させる場合には、その補償区間においては保持操作量を用いた補償制御を行う。
【０１０６】
即ち、キャリッジ１２をその移動経路の一端側から駆動させた際、補償区間（＝汚れ区間）に入るまでは、通常通り、検出速度等に基づくフィードバック制御を行う。具体的には、所定の演算タイミング毎に、そのときの検出速度等に基づいて、ＣＲモータ１３を制御するための操作量を演算し、その操作量に応じた駆動指令をＣＲモータドライバ１６に出力する。
【０１０７】
補償区間に入ったかどうかの判断は、一端側から駆動開始後のエンコーダ信号のカウント値に基づいて行い、カウント値が第１カウントｋａと一致したときに、補償区間に入ったものと判断し、補償制御を開始する。図５に示す例では、キャリッジ１２が一端側から駆動された場合、その駆動開始からのエンコーダ信号のカウント値が４８６となったときに、補償区間に入ったものと判断できる。
【０１０８】
補償区間内における補償制御は、検出速度に基づく操作量の演算は行わず、補償区間に入る前の演算タイミングでＣＲモータ制御部３２が実際に演算した操作量に基づいて保持操作量を生成し、その保持操作量によってＣＲモータ１３を制御することにより行う。
【０１０９】
保持操作量は、補償区間開始前に演算された操作量から種々の方法で生成でき、例えば、補償区間開始前の直前の演算タイミングで演算された操作量をそのまま保持操作量としてもよいし、また例えば、補償区間開始前の複数の演算タイミングで演算された各操作量の平均値を保持操作量としてもよい。
【０１１０】
補償制御を行っている間も、エンコーダ信号のカウントは継続される。そのため、カウント値が第１カウント値ｋａに達して補償区間に入った後、キャリッジ１２が汚れ７１と汚れ７２の間に存在する２つの正常なスリット４８に対応した位置を通過すると、その２つのスリット４８によってカウント値は４つ増える。この、補償区間内を通過中にカウントされるこのカウント値は、汚れ区間内実カウント値ｚに等しい。
【０１１１】
そのため、ＣＲモータ制御部３２は、補償制御開始後のカウント値に基づいて、補償区間の終了タイミングを検出する。具体的には、補償区間に入った後のカウント値が、汚れ区間内実カウント値ｚに到達したかどうかを判断する。そして、汚れ区間内実カウント値ｚに到達したとき、それは、汚れ区間内における最後のカウントであるため、更に次のカウントが行われるまでは補償制御を継続する。そして、汚れ区間内実カウント値ｚに到達後、次のカウントが行われたときに、汚れ区間から出た（即ち補償区間から出た）ものと判断し、補償制御を終えて通常のフィードバック制御に復帰する。
【０１１２】
なお、キャリッジ１２をその移動経路の他端側から駆動させる際についても、上述した一端側からの駆動時と全く同様に、補償区間においては補償制御を行う。
（３−６）補償区間終了時のカウント値の修正
補償区間（汚れ区間）終了後は通常のフィードバック制御に復帰するわけだが、補償区間終了時のエンコーダ信号のカウント値は、汚れ７１，７２の影響によって、汚れのない正常時とは異なる値になっている。
【０１１３】
図５の数値例でいうと、キャリッジ１２を一端側から駆動させた際の補償区間終了時のカウント値は、汚れ７１，７２がない正常な状態であったならば、第１カウント値ｋａに汚れ区間幅ｍを加算した値にさらに１を加えた値である５０１になっているはずである。しかし、汚れ７１，７２の影響により、補償区間終了時の実際のカウント値は、第１カウント値ｋａに汚れ区間内実カウント値ｚを加算した値にさらに１を加えた値である４９１になっている。なお、この両者の差（５０１と４９１の差）は、汚れカウント値ｎに一致するものである。
【０１１４】
そのため、補償区間終了後のカウント値がそのときの実際のカウント値（図５では４９１）のままでフィードバック制御を再開すると、キャリッジ１２の位置が実際の位置とは異なる位置として検出されたままフィードバック制御が行われることとなり、制御性能が悪化してしまうおそれがある。
【０１１５】
そこで補償制御情報設定部３６は、補償区間終了時に、その時点での実際のカウント値を、その時点において本来あるべきカウント値に修正するようにしている。具体的には、補償区間終了時に、その時点での実際のカウント値に汚れカウント値ｎを加算することにより、カウント値の修正を行う。これにより、補償区間終了後は、キャリッジ１２の実際の位置と検出位置（カウント値）とのずれがなくなり、その後のフィードバック制御を安定して行うことができるようになる。
【０１１６】
なお、キャリッジ１２をその移動経路の他端側から駆動させる際についても、上述した一端側からの駆動時と全く同様に、補償区間終了後にカウント値の修正を行う。
（３−７）補償区間開始位置の更新
ところで、補償制御情報設定部３６は、第１カウント値ｋａ及び第２カウント値ｋｂに基づいて補償区間の開始位置を設定したが、これら各カウント値ｋａ，ｋｂは、異常速度が検知されたときのカウント値に基づくものである。そのため、異常速度が検知されるタイミングによっては、必ずしも、その検知時のカウント値が汚れ区間の開始位置と一致していない可能性がある。つまり、異常速度の検知はＣＲリニアエンコーダ処理部３４が行うのであるが、その検知タイミングが遅れると、すでに汚れ区間に入ってしかもその汚れ区間内で１カウント又は数カウントのカウントが進んだ段階で異常速度が検知される可能性もある。
【０１１７】
そのため、そのように異常速度の検知が遅れ、その遅れて検知されたタイミングでのカウント値に基づいて補償区間開始位置が設定されると、実際に汚れが付着している領域内に入ってもすぐには補償制御が開始されず、その間、汚れの影響を受けて検出速度の変動が生じてしまうおそれがある。
【０１１８】
そこで、補償制御情報設定部３６は、上述のように、第１カウント値ｋａ及び第２カウント値ｋｂに基づいて補償区間（汚れ区間）の開始位置を設定した後、ＣＲモータ制御部３２によって補償制御が行われたにも関わらず、未だ異常速度が検知された場合は、補償区間の開始位置を、現在設定されている位置（カウント値）よりも前の位置に更新するようにしている。
【０１１９】
例えば、一端側から駆動開始させる場合において、補償区間開始タイミングが第１カウント値ｋａに設定された場合に、補償区間開始前（即ちカウント値が第１カウント値ｋａに達する前）に異常速度が検知された場合は、補償区間開始タイミングを１カウント分早めてｋａ−１とする。そして、次に再び一端側から駆動開始させる際には、カウント値がｋａ−１となった位置から補償制御を開始するようにする。
【０１２０】
このようにして補償区間開始位置を更新した後も、まだ、補償区間開始前に異常速度が検知された場合は、更に補償区間開始位置を１カウント分早めてｋａ−２とし、次に再び一端側から駆動開始させる際には、カウント値がｋａ−２となった位置から補償制御を開始するようにする。つまり、補償区間開始前に異常速度が検知されなくなるまで、補償区間開始位置を逐次更新（前倒し）していくのである。
【０１２１】
なお、一回の更新毎にどの程度ずつ更新していくかは適宜決めればよく、上記のように１カウント分ずつ更新するのはあくまでも一例にすぎない。
また、上記のように補償区間開始位置を更新する場合は、併せて、汚れ区間幅ｍや汚れ区間内実カウント値ｚも更新するのが好ましい。例えば、補償区間開始位置が１カウント分早められた場合は、汚れ区間幅ｍ及び汚れ区間内実カウント値ｚも１カウント分増やすのである。このようにするこで、補償区間開始位置が更新されたことによってまだ汚れ区間内にいるにもかかわらず補償制御が終わってしまうのを防ぐことができ、汚れが存在している汚れ区間内において確実に補償制御が行われるようにすることができる。
【０１２２】
（４）キャリッジ駆動処理の説明
次に、キャリッジ１２の駆動を制御するためにＡＳＩＣ２において行われる、キャリッジ駆動処理について、図６を用いて説明する。図６は、ＡＳＩＣ２のうち、ＣＲリニアエンコーダ処理部３４（特に補償制御情報設定部３６）及びＣＲモータ制御部３２により行われるキャリッジ駆動処理を表すフローチャートである。このキャリッジ駆動処理は、外部のＰＣ等から画像形成指示があったり、或いは操作・表示部８の操作によって画像形成指示がなされるなどして、用紙Ｐへの画像形成が行われる際に、ＣＰＵ３からの指令を受けて行われる。
【０１２３】
このキャリッジ駆動処理が開始されると、まずＳ１１０にて、キャリッジ１２の１ライン分の走査（駆動）が開始される。そして、Ｓ１２０にて、過去にキャリッジ１２を駆動させたとき、即ち過去の本キャリッジ駆動処理の実行時に異常速度が検知されたか否かが判断される。このとき、過去のキャリッジ駆動処理の実行時に後述するＳ１５０の判断処理で異常速度が検知されていた場合は（Ｓ１２０：ＹＥＳ）、Ｓ１７０以降に進んで、補償区間において補償制御が行われるようにするが、過去に異常速度が検知されていない場合は（Ｓ１２０：ＮＯ）、Ｓ１３０に進み、通常時駆動制御が行われる。この通常時駆動制御は、エンコーダ信号に基づいて検出された検出速度に基づく通常のフィードバック制御であり、検出速度に基づいて操作量が生成される。なお、１ライン分の走査中は、上記（３−１）で説明した異常速度の検知が一定周期で行われる。
【０１２４】
そして、１ライン分の走査が終了するまでこのＳ１３０の通常時駆動制御が行われ、１ライン分の走査が終了すると（Ｓ１４０：ＹＥＳ）、Ｓ１５０にて、その１ライン分の走査中に異常速度が検知されたか否かが判断される。ここで、異常速度が検知された場合は（Ｓ１５０：ＹＥＳ）、Ｓ２３０以降に進んで、一連の汚れ判定処理が行われるが、異常速度が検知されなかった場合は（Ｓ１５０：ＮＯ）、Ｓ１６０にて、全ライン走査完了したか否かが判断される。そして、全ライン走査が完了するまでは１ライン走査する毎にＳ１１０に戻り、全ライン走査が完了すると（Ｓ１６０：ＹＥＳ）、このキャリッジ駆動処理が終了される。
【０１２５】
一方、Ｓ１５０において、１ライン分の走査中に異常速度が検知されたと判断された場合は、Ｓ２３０にて、すでに汚れ判定が実行済みか否かが判断される。ここでいう汚れ判定とは、Ｓ２４０〜Ｓ２８０による、汚れ区間（補償区間）を特定するための一連の処理である。
【０１２６】
Ｓ２３０において、すでに汚れ判定が実行済みである場合は（Ｓ２３０：ＹＥＳ）、Ｓ３１０に進むが、まだ汚れ判定が実行されていない場合は（Ｓ２３０：ＮＯ）、Ｓ２４０以降に進み、汚れ判定を実行する。
【０１２７】
汚れ判定では、まずＳ２４０にて汚れカウント値ｎの算出が行われ、続くＳ２５０にて、その算出された汚れカウント値ｎに基づく、異常速度の原因がリニアスケール４６の汚れによるものか否かの判断が行われる。Ｓ２４０における汚れカウント値ｎの算出、及びＳ２５０による異常速度の原因の判断は、具体的には、上記（３−２）で説明したように行われる。
【０１２８】
そして、汚れカウント値ｎが０だったことにより異常速度の原因が汚れによるものではないと判断された場合は（Ｓ２５０：ＮＯ）、Ｓ２９０にて、操作・表示部８が備える図示しない表示装置へのエラー表示が行われ、続くＳ３００にて、キャリッジ１２の駆動が停止される。
【０１２９】
汚れカウント値ｎが０ではなかったことにより異常速度の原因が汚れによるものであると判断された場合は（Ｓ２５０：ＹＥＳ）、Ｓ２６０にて汚れ区間幅ｍの算出が行われ、続くＳ２７０にて、その算出された汚れ区間幅ｍが所定の汚れ幅閾値より大きいか否かが判断される。Ｓ２６０における汚れ区間幅ｍの算出は、具体的には、上記（３−３）で説明したように行われる。
【０１３０】
そして、汚れ区間幅ｍが汚れ幅閾値より大きい場合は（Ｓ２７０：ＹＥＳ）、汚れが広範囲にわたって付着しているものとして、Ｓ２９０よるエラー表示が行われ、続くＳ３００にて、キャリッジ１２の駆動が停止される。
【０１３１】
汚れ区間幅ｍが汚れ幅閾値以下である場合は（Ｓ２７０：ＮＯ）、Ｓ２８０にて汚れ区間内実カウント値ｚの算出が行われる。この汚れ区間内実カウント値ｚの算出は、具体的には、上記（３−４）で説明したように行われる。
【０１３２】
なお、既述の通り、汚れ区間幅ｍは、汚れ区間内実カウント値ｚと汚れカウント値ｎを加算することによっても得ることができる。そのため、Ｓ２６０の汚れ区間幅ｍの算出に先立ってまずＳ２８０の汚れ区間内実カウント値ｚの算出を行い、その後に、ｍ＝ｚ＋ｎの演算を行うことで汚れ区間幅ｍを算出するようにしてもよい。
【０１３３】
このようにしてＳ２４０〜Ｓ２８０の汚れ判定が行われた後は、再びＳ１１０に戻り、次の１ライン分の走査が開始される。そのため、汚れ判定が行われた後のキャリッジ駆動の際は、それ以前のキャリッジ駆動においてすでに異常速度が検知されていることから、Ｓ１２０の判断処理では異常速度検知済みと判断されてＳ１７０に進むことになる。
【０１３４】
Ｓ１７０では、キャリッジ１２の位置が補償区間（汚れ区間）にあるか否かが判断され、まだ補償区間に入るまでの間は（Ｓ１７０：ＮＯ）、Ｓ１８０にて、Ｓ１３０と同様に通常時制御処理が行われる。そして、Ｓ１９０にて１ライン分の走査が終了したか否かが判断され、終了していない場合はＳ１７０に戻り、終了した場合はＳ１５０に進む。
【０１３５】
そして、キャリッジ１２が補償区間に入ると（Ｓ１７０：ＹＥＳ）、Ｓ２００に進み、補償制御が開始される。この補償制御は、具体的には、上記（３−５）で説明したように行われるものであり、検出速度に基づく操作量ではなく保持操作量を用いた制御が行われる。
【０１３６】
キャリッジ１２が補償区間を駆動されている間は（Ｓ２１０：ＮＯ）、Ｓ２００の補償制御が継続されるが、補償区間から出たこと（補償区間終了）が判断されると（Ｓ２１０：ＹＥＳ）、Ｓ２２０にて、補償区間終了時の検出位置（カウント値）の修正が行われた上で、Ｓ１９０に進む。このＳ２２０における修正は、具体的には、上記（３−６）で説明したように行われる。
【０１３７】
補償区間終了後、１ライン分の走査が終了するまでは、Ｓ１７０において補償区間ではないと判断され、再び、Ｓ１８０の通常時制御処理が実行されることとなる。
そして、補償制御が行われた後、１ライン分の走査が終了すると（Ｓ１９０：ＮＯ）、再びＳ１５０にて、その１ライン分の走査中に異常速度が検知されたか否かの判断が行われる。ここで、Ｓ２４０〜Ｓ２８０の一連の汚れ判定処理において補償区間の開始位置が実際の汚れの付着開始位置と一致した位置に設定されているならば、補償制御が行われる１ライン分の走査中に異常速度が検知されることはないはずであるが、上記（３−７）で説明したように、一度の汚れ判定のみで補償開始位置が実際の汚れ付着開始位置に一致するとは限らない。
【０１３８】
そこで、補償制御が行われた１ライン分の走査中においてもまだ異常速度が検知された場合は（Ｓ１５０：ＹＥＳ）、Ｓ２３０に進む。この場合、少なくとも１回はすでに汚れ判定が行われているはずであるため、Ｓ３１０に進み、補償区間開始位置が更新される。この補償区間開始位置の更新は、具体的には、上記（３−７）で説明したように行われる。
【０１３９】
このようにして補償区間開始位置が更新された後は、再びＳ１１０に戻り、次の１ライン分の走査が開始されることとなる。
（５）実施形態の効果等
以上説明したように、本実施形態のインクジェットプリンタ１では、キャリッジ１２の駆動中に異常速度が検出された場合、リニアスケール４６における汚れ等が付着している区間（汚れ区間）が特定される。そして、その異常速度が検出された以後のキャリッジ１２の駆動時には、その汚れ区間を補償区間として、補償区間内においては保持操作量を用いた補償制御が行われる。
【０１４０】
そのため、汚れ等が付着している区間（補償区間）において、汚れ等に起因して生じる検出速度の変動の影響がＣＲモータ１３の制御に反映されてしまうのを防止でき、キャリッジ１２を安定して駆動させることができる。
【０１４１】
しかも、保持操作量を用いたＣＲモータ１３の制御はあくまでも補償区間内で行われる。即ち、補償区間が終了したら再び、検出速度に基づいて演算された操作量による通常の制御が行われる。また、補償区間の終了タイミングは、補償区間開始後のエンコーダ信号のカウント値と汚れ区間内実カウント値ｚとに基づいて正確に検出される。
【０１４２】
そのため、保持操作量によるＣＲモータ１３の駆動制御を必要十分に行うことができ、全体として制御性能の劣化を大幅に抑え、ＣＲモータ１３の制御、ひいてはキャリッジ１２の駆動制御を高精度に行うことができる。
【０１４３】
更に、補償区間で用いられる保持操作量は、キャリッジ１２が補償区間に入る前にＣＲモータ制御部３２が実際に演算した、その補償区間に入る前のキャリッジ１２の摺動負荷等が考慮されたより適切な値である。そのため、このような保持操作量を補償区間で用いることによって、補償区間内においてもキャリッジ１２に対してより適切な駆動力を与えることができる。
【０１４４】
また、本実施形態では、補償区間終了時（キャリッジ１２が補償区間を出た時）、エンコーダ信号のカウント値を、その時の実際のカウント値に汚れカウント値ｎを加算することで、その時点において本来あるべきカウント値（本来の位置を示す値）に修正するようにしている。そのため、補償区間を通過した後のキャリッジ１２の実際の位置とカウント値とのずれをなくすことができ、補償区間通過後のキャリッジ１２の駆動制御を、補償区間の影響（汚れ等の影響）を受けることなく、より高精度に行うことができる。
【０１４５】
また、本実施形態では、汚れカウント値ｎが０であった場合は、異常速度の原因がリニアスケール４６の汚れ以外のものであるとして外部のユーザ等に対するエラー報知を行い、キャリッジ１２の駆動を停止させるようにしている。そのため、ＣＲリニアエンコーダ１４以外の要因による異常が発生したことをユーザ等に知らしめ、その異常に応じた適切な対応をとるよう促すことができる。
【０１４６】
更に、汚れ区間幅ｍが汚れ幅閾値より大きかった場合も、汚れ区間幅ｍが広すぎるものとしてユーザ等に対するエラー報知を行い、キャリッジ１２を停止させるようにしている。そのため、広い範囲にわたって保持操作量でキャリッジ１２を駆動させることにより生じ得る制御性能の劣化を防ぐことができ、ユーザ等に対しても適切な対応をとるように促すことができる。
【０１４７】
また、本実施形態では、異常速度の検知によって汚れ区間（補償区間）が設定された後のキャリッジ１２の駆動の際、その設定された補償区間に入る前に再び異常速度が検知された場合は、補償区間の開始位置を、現在設定されている位置（カウント値）よりも前の位置に更新するようにしている。そのため、一旦設定された補償区間の開始位置が、実際に汚れ等が付着し始めている位置からずれていたとしても、そのずれを修正することができる。
【０１４８】
ここで、本実施形態の構成要素と本発明の構成要素の対応関係を明らかにする。本実施形態において、ＣＲリニアエンコーダ処理部３４は本発明の駆動状態検出手段に相当し、ＣＲモータ制御部３２は本発明の操作量演算手段及び操作量補償手段に相当し、ノミナルカウント値Ｎが記憶されているＥＥＰＲＯＭ６（又はＡＳＩＣ２）は本発明の記憶手段に相当し、操作・表示部８は本発明の第１報知手段及び第２報知手段に相当する。
【０１４９】
また、補償制御情報設定部３６は、本発明の異常速度検知手段、補償区間検出手段、異常時全カウント値計測手段、補償区間内実カウント値演算手段、異常時カウント誤差検出手段、修正手段、補償区間幅演算手段、補償区間幅判断手段、及び更新手段に相当する。
【０１５０】
また、図６のキャリッジ駆動処理において、Ｓ１３０及びＳ１８０の通常時駆動制御は本発明の操作量演算手段が実行する処理に相当し、Ｓ２００の補償制御は本発明の操作量補償手段が実行する処理に相当し、Ｓ２２０の補償終了位置の修正は本発明の修正手段が実行する処理に相当し、Ｓ２４０の汚れカウント値ｎの算出は本発明の異常時カウント誤差検出手段が実行する処理に相当し、Ｓ２６０の汚れ区間幅ｍの算出は本発明の補償区間幅演算手段が実行する処理に相当し、Ｓ２７０の判断処理は本発明の補償区間幅判断手段が実行する処理に相当し、Ｓ２８０の汚れ区間内実カウント値ｚの算出は本発明の補償区間内実カウント値演算手段が実行する処理に相当し、Ｓ３１０の補償区間開始位置の更新は本発明の更新手段が実行する処理に相当する。
【０１５１】
［変形例］
以上、本発明の実施の形態について説明したが、本発明の実施の形態は、上記実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
【０１５２】
例えば、上記実施形態では、エンコーダ汚れの具体例として、図５に例示したように、リニアスケール４６における近接した２箇所に汚れ７１，７２が付着してその付着した範囲内のスリット４８が汚れによって覆われてしまったケースについて説明したが、汚れの付着箇所が１箇所であっても、或いは３箇所以上であっても、上記実施形態と同様にして汚れ区間（補償区間）を特定し、補償制御を行うようにすることができる。
【０１５３】
また、上記実施形態では、汚れによってスリット４８が覆われてしまうケース、即ち本来カウントされるはずのエンコーダ信号のエッジがカウントされないケースを例示したが、これとは逆に、例えばスリット４８にその幅よりも細い汚れが付着するなどして、本来カウントされるべきエッジよりも多いエッジが検出されてカウントされてしまうケースも考えられる。そのように、汚れによって本来のカウント数よりも多くカウントされるようなケースにおいても、上記実施形態と同様にして汚れ区間（補償区間）を特定し、補償制御を行うようにすることができる。
【０１５４】
つまり、どの程度の大きさの汚れがいくつ付着するか、またその汚れによってカウント値が本来よりも多くカウントされてしまうのかそれとも少なくカウントされてしまうのか、といったことに関係なく、本発明を適用することができる。
【０１５５】
また、上記実施形態では、ＣＲリニアエンコーダ１４からのＡ，Ｂ各相のパルス信号のうち、Ａ相信号についてその立ち上がりエッジ及び立ち下がりエッジをカウントするようにしたが、これはあくまでも一例であり、例えば、立ち上がりエッジ又は立ち下がりエッジのいずれか一方のみをカウントするようにしてもよいし、Ａ相信号ではなくＢ相信号をカウント対象とするようにしてもよい。また、Ａ，Ｂ各相のパルス信号の立ち上がりエッジ、立ち下がりエッジを共にカウントするようにしてもよい。
【０１５６】
また、上記実施形態では、インクジェットプリンタ１におけるキャリッジ１２を駆動させるＣＲモータ１３の制御に対して本発明を適用した例を示したが、本発明の適用はキャリッジ駆動用のモータ制御、或いはインクジェットプリンタにおけるモータ制御に限定されず、リニアエンコーダを用いて駆動対象の移動量を検出することによりモータを制御するよう構成されたあらゆるモータ制御装置に対して適用できる。
【符号の説明】
【０１５７】
１…インクジェットプリンタ、２…ＡＳＩＣ、３…ＣＰＵ、４…ＲＯＭ、５…ＲＡＭ、６…ＥＥＰＲＯＭ、７…Ｉ／Ｆ、８…操作・表示部、９…バス、１１…記録ヘッド、１２…キャリッジ、１３…ＣＲモータ、１４…ＣＲリニアエンコーダ、１５…記録ヘッドドライバ、１６…ＣＲモータドライバ、２１…ＬＦモータ、２２…ＬＦロータリエンコーダ、２３…ＬＦモータドライバ、３１…記録制御部、３２…ＣＲモータ制御部、３３…ＬＦモータ制御部、３４…ＣＲリニアエンコーダ処理部、３５…ＬＦロータリエンコーダ処理部、３６…補償制御情報設定部、４１…ガイド軸、４２…無端ベルト、４３…駆動プーリ、４４…従動プーリ、４６…リニアスケール、４７…検出部、４８…スリット、５０…発光部、５１…Ａ相発光素子、５２…Ｂ相発光素子、６０…受光部、６１…Ａ相受光素子、６２…Ｂ相受光素子、７０，７１，７２…汚れ、Ｐ…用紙
【図１】
2010213424.tif 000003
【図２】
2010213424.tif 000004
【図３】
2010213424.tif 000005
【図６】
2010213424.tif 000006
【図４】
2010213424.tif 000007
【図５】
2010213424.tif 000008