(57)【特許請求の範囲】
【請求項１】
移動されながら、画像データに基づいて媒体に画像を形成する画像形成装置であって、
画像形成材を吐出するノズルと、
前記ノズルの前記媒体の面における位置情報を取得する位置情報取得手段と、
過去の前記位置情報と現在の前記位置情報から予測される前記ノズルの移動方向及び移動量を利用して、前記媒体の面における前記ノズルの次の複数の到達位置を示す予測位置情報を決定する位置予測手段と、を備え、
前記位置予測手段は、前記位置情報を取得する位置取得周期よりも短い周期で、前記予測位置情報を決定し、
前記ノズルの次の複数の到達位置は、次に前記位置情報を取得するまでの間に前記ノズルが画像形成材を吐出する周期が経過する時点毎における前記ノズルの到達位置であることを特徴とする画像形成装置。
【請求項２】
前記位置予測手段は、前記位置情報取得手段が前記位置情報を取得する度に、前記位置取得周期を前記ノズルの吐出周期で除算した場合の商に該当する回数分の前記予測位置情報を決定することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記画像データに基づいて、前記媒体の面における画像形成材を吐出する目標吐出位置を取得し、該目標吐出位置が前記予測位置情報から許容誤差範囲内にある場合に、前記ノズルに画像形成材を吐出させる目標吐出位置取得手段をさらに備えることを特徴とする請求項１又は２に記載の画像形成装置。
【請求項４】
前記位置予測手段は、現在の前記位置情報と、前記位置取得周期の１周期分前の前記位置情報と、に基づいて、前記予測位置情報を決定することを特徴とする請求項１乃至３のいずれか１項に記載の画像形成装置。
【請求項５】
前記位置予測手段は、前記ノズルの前回の前記位置情報と今回の前記位置情報との差分である速度偏差に乗算する第１の係数の変更を受け付け、前記第１の係数を用いた計算結果に基づいて前記予測位置情報を決定することを特徴とする請求項４に記載の画像形成装置。
【請求項６】
前記位置予測手段は、さらに、前記ノズルの移動速度偏差の累積値と、前記ノズルの移動速度偏差の変化量とを用いて、前記予測位置情報を決定することを特徴とする請求項４又は５に記載の画像形成装置。
【請求項７】
前記位置予測手段は、前記ノズルの移動速度偏差の累積値に乗算する第２の係数、及び前記ノズルの移動速度偏差の変化量に乗算する第３の係数の変更を受け付け、前記第２の係数及び前記第３の係数を用いた計算結果に基づいて前記予測位置情報を決定することを特徴とする請求項５に記載の画像形成装置。
【請求項８】
前記位置予測手段は、前記第１の係数、前記第２の係数及び前記第３の係数のそれぞれに速度に応じた値を格納し、計算結果に基づいて前記予測位置情報を決定することを特徴とする請求項７に記載の画像形成装置。
【請求項９】
移動されながら、画像データに基づいて媒体に画像を形成する画像形成装置によって実行される方法であって、
画像形成材を吐出するノズルの印刷媒体の面における位置情報を取得するステップと、
過去の前記位置情報と現在の前記位置情報から予測される前記ノズルの移動方向及び移動量を利用して、前記位置情報を取得する位置取得周期よりも短い周期で、前記媒体の面における前記ノズルの次の複数の到達位置を示す予測位置情報を決定するステップと、を前記画像形成装置が実行し、
前記ノズルの次の複数の到達位置は、次に前記位置情報を取得するまでの間に前記ノズルが画像形成材を吐出する周期が経過する時点毎における前記ノズルの到達位置である方法。
【請求項１０】
移動されながら、画像データに基づいて媒体に画像を形成する画像形成装置に実行させるプログラムであって、
画像形成材を吐出するノズルの印刷媒体の面における位置情報を取得するステップと、
前記位置情報を取得する位置取得周期よりも短い周期で、過去の前記位置情報と現在の前記位置情報から予測される前記ノズルの移動方向及び移動量を利用して、前記媒体の面における前記ノズルの次の複数の到達位置を示す予測位置情報を決定するステップと、を前記画像形成装置に実行させ、
前記ノズルの次の複数の到達位置は、次に前記位置情報を取得するまでの間に前記ノズルが画像形成材を吐出する周期が経過する時点毎における前記ノズルの到達位置であるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、プログラム及び方法に関する。
【背景技術】
【０００２】
用紙上でユーザの手により装置を走査させ、画像形成位置に到達したタイミングで装置からインクを吐出することで画像を形成するハンドヘルドプリンタ（以下、ＨＨＰ（Hand Held Printer）という）が実用化されつつある。ＨＨＰは、用紙搬送部を有しないため、ユーザが携帯可能なサイズである。
【０００３】
図１は、ＨＨＰ１による画像形成を模式的に示す図の一例である。ＨＨＰ１は、例えば、スマートフォンやＰＣ（Personal Computer）等の画像データ出力器９から画像データを受信する。ユーザは、ＨＨＰ１を把持し、ＨＨＰ１をフリーハンドで用紙上を走査させる。ＨＨＰ１は、用紙表面と接する底面に位置検出センサとＩＪ記録ヘッドを備える。ＨＨＰ１は、位置検出センサにより用紙上の位置を検出しており、ＩＪ記録ヘッドが吐出位置に到達した際、ＩＪ（Ink Jet）記録ヘッドからインクを吐出する。既にインクが吐出された部分はマスクされるため、ＨＨＰ１は、一度吐出した部分に再度到達してもインクを吐出しない。
【０００４】
ＨＨＰ１は、現在の位置と自装置の移動速度等とに基づいて、現在の位置から等速度で移動するものとして所定時間先の自装置の位置を予測する。ＨＨＰ１は、所定時間先の予測位置が吐出可能領域であるか否かを判定する。ＨＨＰ１は、予測位置が吐出可能領域に含まれる場合、予測位置に到達した際にインクを吐出し、予測位置が吐出可能領域に含まれない場合、予測位置に到達した際にインクを吐出しない。
【０００５】
例えば、プリンタ装置のエンコーダ周期を１区間とした場合に、前回の区間と前々回の区間に基づいて次のエンコーダ周期を予測し、予測した次のエンコーダ周期に応じて次の吐出タイミングを決定する方法が知られている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術では、ＨＨＰの移動速度に急激な変化があった場合に、吐出可能領域にインクが吐出されないことがあった。
【０００７】
例えば、ＨＨＰの走査速度が急に上がった場合、自装置の予測位置が近傍の吐出可能領域を超えて吐出不能領域まで進んでしまい、その結果、吐出可能領域にインクが吐出されないことがあった。
【０００８】
これに対して、位置検出センサからセンサ値を取得する周期を短くすることで、吐出可能領域にインクが吐出されない現象を軽減できる。しかしながら、センサの構造上、センサ値を取得する周期を短くするには限界がある。
【０００９】
そこで、本実施形態では、上記課題に鑑み、より確実に吐出可能範囲にインクを吐出するように制御することを目的とする。
【課題を解決するための手段】
【００１０】
開示の技術では、移動されながら、画像データに基づいて媒体に画像を形成する画像形成装置であって、画像形成材を吐出するノズルと、前記ノズルの前記媒体の面における位置情報を取得する位置情報取得手段と、過去の前記位置情報と現在の前記位置情報から予測される前記ノズルの移動方向及び移動量を利用して、前記媒体の面における前記ノズルの次の複数の到達位置を示す予測位置情報を決定する位置予測手段と、を備え、前記位置予測手段は、前記位置情報を取得する位置取得周期よりも短い周期で、前記予測位置情報を決定し、前記ノズルの次の複数の到達位置は、次に前記位置情報を取得するまでの間に前記ノズルが画像形成材を吐出する周期が経過する時点毎における前記ノズルの到達位置であることを特徴とする画像形成装置が提供される。
【発明の効果】
【００１１】
より確実に吐出可能範囲にインクを吐出するように制御することができる。
【図面の簡単な説明】
【００１２】
【図１】ＨＨＰによる画像形成を模式的に示す図の一例である。
【図２】ＨＨＰのハードウェア構成を示す図である。
【図３】制御部の構成を説明する図の一例である。
【図４】制御部で行われる処理のタイミングチャートを示す図である。
【図５】参考例の画像処理のタイミングチャートを示す図である。
【図６】センサとノズルの位置関係を示す図である。
【図７】センサの位置算出方法を説明するための図である。
【図８】先頭のノズル位置の算出を説明するための図である。
【図９】先頭及び後尾ノズルの中間にあるノズルの位置の算出を説明するための図である。
【図１０】各ノズルの位置座標の単位のピクセル変換を説明する図である。
【図１１】吐出の判定を説明するための図である。
【図１２】画像形成処理のフローを示す図である。
【図１３】ＨＨＰが等速度で走査する場合のノズルの予測位置の算出を説明するための図である。
【図１４】速度ごとに設定されたＰＩＤパラメータ値の例を示す図である。
【図１５】ＨＨＰ２０の走査速度が変化する場合のノズルの予測位置の算出を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することによって重複した説明を省く。
【００１４】
［実施形態１］
＜ハードウェア構成＞
図２は、ＨＨＰ２０のハードウェア構成を示す図である。ＨＨＰ２０は、印刷媒体に画像を形成する画像形成装置の一例である。ＨＨＰ２０は、制御回路２５によって全体の動作が制御され、制御回路２５には通信Ｉ／Ｆ（Interface）２７、ＩＪ記録ヘッド駆動回路２３、ＯＰＵ（Operation Unit）２６、ＲＯＭ（Read Only Memory）２８、ＤＲＡＭ（Dynamic Random Memory）２９、及び、センサ３０が電気的に接続されている。また、ＨＨＰ２０は電力により駆動されるため、電源２２と電源回路２１を有している。電源回路２１が生成する電力は、点線で示す配線により、通信Ｉ／Ｆ２７、ＩＪ記録ヘッド駆動回路２３、ＯＰＵ２６、ＲＯＭ２８、ＤＲＡＭ２９、ＩＪ記録ヘッド２４、制御回路２５、及び、センサ３０に供給されている。
【００１５】
電源２２は主に電池（バッテリー）が利用される。太陽電池や商用電源（交流電源）、燃料電池等が用いられてもよい。電源回路２１は、電源２２が供給する電力をＨＨＰ２０の各部に分配する。また、電源２２の電圧を各部に適した電圧に降圧や昇圧する。また、電源２２が電池で充電可能である場合、電源回路２１は交流電源の接続を検出して電池の充電回路に接続し、電源２２の充電を可能にする。
【００１６】
通信Ｉ／Ｆ２７は、スマートフォンやＰＣ等の画像データ出力器９から画像データの受信等を行う。通信Ｉ／Ｆ２７は例えば無線ＬＡＮ、Bluetooth（登録商標）、ＮＦＣ（Near Field Communication）、赤外線、３Ｇ（携帯電話）、又は、ＬＴＥ（Long Term Evolution）等の通信規格に対応した通信装置である。また、このような無線通信の他、有線ＬＡＮ、ＵＳＢケーブルなどを用いた有線通信に対応した通信装置であってもよい。
【００１７】
ＲＯＭ２８は、ＨＨＰ２０のハードウェア制御を行うファームウェアや、ＩＪ記録ヘッド２４の駆動波形データ（液滴を吐出するための電圧変化を規定するデータ）や、ＨＨＰ２０の初期設定データ等を格納している。
【００１８】
ＤＲＡＭ２９は通信Ｉ／Ｆ２７が受信した画像データを記憶したり、ＲＯＭ２８から展開されたファームウェアを格納したりするために使用される。従って、ＣＰＵ３１がファームウェアを実行する際のワークメモリとして使用される。
【００１９】
センサ３０は、ＨＨＰ２０の位置を検出するセンサである。センサ３０は、例えば、発光ダイオード（ＬＥＤ）やレーザ等の光源と、印刷媒体２を撮像する撮像センサ、又は、入反射光の干渉縞を撮像するセンサを有している。ＨＨＰ２０が印刷媒体２上を走査されると、印刷媒体２の微小なエッジが次々に検出され（撮像され）エッジ間の距離を解析することで移動量が得られる。センサ３０は、ＨＨＰ２０の少なくとも２箇所に搭載されている。両者を区別する場合、センサ３０ａ，３０ｂという。なお、センサ３０として、さらに多軸の加速度センサやジャイロセンサ等を用いてもよく、加速度センサやジャイロセンサのみでＨＨＰ２０の位置を検出してもよい。
【００２０】
ＯＰＵ２６は、ＨＨＰ２０の状態を表示するＬＥＤ６、ユーザがＨＨＰ２０に画像形成を指示するためのスイッチ（例えば、キャリブレーションボタン５）等を有している。ただし、これに限定するものではなく、液晶ディスプレイを有していてよく、さらにタッチパネルを有していてもよい。また、音声入力機能を有していてもよい。
【００２１】
ＩＪ記録ヘッド駆動回路２３は上記の駆動波形データを用いて、ＩＪ記録ヘッド２４を駆動するための駆動波形（電圧）を生成する。インクの液滴のサイズなどに応じた駆動波形を生成できる。
【００２２】
ＩＪ記録ヘッド２４は、インクを吐出するためのヘッドである。図ではＣＭＹＫの４色のインクを吐出可能になっているが、単色でもよく５色以上の吐出が可能でもよい。色ごとに一列（二列以上でもよい）に並んだ複数のインク吐出用のノズル（後述する）が配置されている。また、インクの吐出方式はピエゾ方式でもサーマル方式でもよく、この他の方式でもよい。
【００２３】
制御回路２５は、センサ３０が検出する移動量を元に、ＩＪ記録ヘッド２４の各ノズルの位置、該位置に応じて形成する画像の決定、吐出ノズル可否判定等を行う。吐出ノズル可否判定では、ノズルの位置から許容誤差範囲内に、ノズルが吐出を予定する位置（以下では、目標吐出位置）が含まれるか否かによりインクを吐出するか否かが判定される。制御回路２５について詳細は次述する。
【００２４】
図３は、制御回路２５の構成を説明する図の一例である。制御回路２５はＳｏＣ（System On a Chip）５０とＡＳＩＣ（Application Specific Integrated Circuit）／ＦＰＧＡ（Field Programmable Gate Array）４０とを有している。ＳｏＣ５０とＡＳＩＣ／ＦＰＧＡ４０とはバス４５，バス４６を介して通信する。ＡＳＩＣ／ＦＰＧＡ４０はどちらの実装技術で設計されてもよいことを意味し、ＡＳＩＣ／ＦＰＧＡ４０以外の他の実装技術で構成されてよい。また、ＳｏＣ５０とＡＳＩＣ／ＦＰＧＡ４０を別のチップにすることなく１つのチップや基盤で構成してもよい。あるいは、３つ以上のチップや基盤で実装してもよい。
【００２５】
ＳｏＣ５０は、バス４８を介して接続されたＣＰＵ３１、位置算出回路３２、メモリＣＴＬ（コントローラ）３５、及び、ＲＯＭＣＴＬ（コントローラ）３６等の機能を有している。なお、ＳｏＣ５０が有する構成要素はこれらに限られない。
【００２６】
また、ＡＳＩＣ／ＦＰＧＡ４０は、バス４７を介して接続されたＩｍａｇｅＲＡＭ(Image Random Access Memory)３７、ＤＭＡＣ（Direct Memory Access Controller）３８、回転器３９、割込みコントローラ４１、センサＩ／Ｆ４２、印字／センサタイミング生成回路４３、及び、ＩＪ記録ヘッド制御回路４４を有している。なお、ＡＳＩＣ／ＦＰＧＡ４０が有する構成要素はこれらに限られない。
【００２７】
ＣＰＵ３１は、ＲＯＭ２８からＤＲＡＭ２９に展開されたファームウェア（プログラム）などを実行し、ＳｏＣ５０内の位置算出回路３２、メモリＣＴＬ（Controller）３５、及び、ＲＯＭＣＴＬ３６の動作を制御する。また、ＡＳＩＣ／ＦＰＧＡ４０内のＩｍａｇｅＲＡＭ３７、ＤＭＡＣ３８、回転器３９、割込みコントローラ４１、センサＩ／Ｆ４２、印字／センサタイミング生成回路４３、及びＩＪ記録ヘッド制御回路４４の動作を制御する。
【００２８】
位置算出回路３２は、センサ３０の駆動周期ごとに検出される移動量に基づいてＨＨＰ２０の位置（座標情報）を算出する。ＨＨＰ２０の位置とは、厳密にはノズルの位置であるが、センサ３０のある位置が分かればノズルの位置を算出できる。なお、センサ３０の位置は、例えば所定の原点（例えば、印刷用紙又は画像データ７の左上コーナーなど）を基準に算出されている。
【００２９】
また、位置算出回路３２は、算出した現在のＨＨＰ２０の位置と、センサ３０が検出する駆動周期ごとの過去の移動量と、移動方向とに基づいてＨＨＰ２０の予測位置を算出する。例えば、位置算出回路３２は、ＩＪ記録ヘッド２４の駆動周期ごとにＨＨＰ２０の各ノズルの予測位置を算出する。すなわち、位置算出回路３２は、次回のインクの吐出タイミングにおけるＨＨＰ２０の予測位置をあらかじめ算出しておく。こうすることで、ユーザの走査に対する遅れを抑制してインクを吐出できる。
【００３０】
位置演算部５２は、現在のノズルの位置と未来のノズルの位置とを算出する。位置演算部５２は、現在位置演算回路５２ａと、未来位置演算回路５２ｂとを有する。現在位置演算回路５２ａは、センサ３０の駆動周期ごとに検出される移動量に基づいてＨＨＰ２０の位置（座標情報）を演算する。具体的には、現在位置演算回路５２ａは、センサ３０の現在位置を演算し、センサ３０との位置関係に基づいて各ノズルの位置を演算する。例えば、各ノズルは、センサ３０ａ及びセンサ３０ｂを結ぶ線分上に位置しているため、センサ３０ａ及びセンサ３０ｂの座標から各ノズルの位置座標を演算することができる。
【００３１】
未来位置演算回路５２ｂは、演算された現在のノズルの位置と、センサ３０が検出する駆動周期ごとに計測された過去のノズルの移動量と、移動方向とに基づいて各ノズルの予測位置を、ＩＪ記録ヘッド２４の駆動周期ごとに演算する。また、センサ３０が検出する駆動周期は、ＩＪ記録ヘッド２４の駆動周期よりも短い周期である。
【００３２】
例えば、未来位置演算回路５２ｂは、センサ３０の１駆動周期に、ＩＪ記録ヘッド２４の駆動周期が１６回ある場合、１６回分の各ノズルの予測位置を演算する。この場合、制御部５１は、印字／センサタイミング回路４３を制御し、１６回分の予測位置に応じて、インクの吐出タイミングを調整する。センサ３０と各ノズルとの現在位置及び予測位置の算出方法は、後述する。
【００３３】
メモリＣＴＬ３５は、ＤＲＡＭ２９とのインタフェースであり、ＤＲＡＭ２９に対しデータを要求し、取得したファームウェアをＣＰＵ３１に送出したり、取得した画像データ７をＡＳＩＣ／ＦＰＧＡ４０に送出したりする。
【００３４】
ＲＯＭＣＴＬ３６は、ＲＯＭ２８とのインタフェースであり、ＲＯＭ２８に対しデータを要求し、取得したデータをＣＰＵ３１やＡＳＩＣ／ＦＰＧＡ４０に送出する。
【００３５】
ＤＭＡＣ３８は、位置算出回路３２が算出した位置情報を元に、メモリＣＴＬ３５を介してＩＪ記録ヘッド２４の各ノズル周辺の画像データ７を取得する。つまり、印刷媒体２に対し、ＨＨＰ２０が存在する位置の周辺の画像データ７が取得される。
【００３６】
回転器３９は、ＤＭＡＣ３８が取得した画像データを、インクを吐出するヘッド、及び、ヘッド内のノズル位置に応じて回転させる。ＤＭＡＣ３８は回転後の画像データをＩＪ記録ヘッド制御回路４４へ出力する。回転器３９は、例えば、位置算出回路３２が位置を算出する際に算出した回転角θを取得し、その回転角θを用いて画像を回転させることができる。また、回転器３９は、ノズルからインクを吐出するか否かの判定を行い、インクを吐出すべき目標吐出位置があればインクを吐出する判定を行い、目標吐出位置がなければ吐出しない判定を行う。
【００３７】
ＩｍａｇｅＲＡＭ３７はＤＭＡＣ３８が取得した画像データ７を一時的に格納する。すなわち、ある程度の画像データ７がバッファリングされ、ＨＨＰ２０の位置に応じて読み出される。
【００３８】
ＩＪ記録ヘッド制御回路４４は、画像データ７（ビットマップデータ）にディザ処理などを施して大きさと密度で画像を表す点の集合に画像データ７を変換する。これにより、画像データ７は吐出位置と点のサイズのデータとなる。ＩＪ記録ヘッド制御回路４４は点のサイズに応じた制御信号をＩＪ記録ヘッド駆動回路２３に出力する。ＩＪ記録ヘッド駆動回路２３は上記のように制御信号に対応した駆動波形データを用いて、駆動波形（電圧）を生成する。
【００３９】
センサＩ／Ｆ４２は、センサ３０と通信し、センサ３０からの情報として移動量ΔＸ及びΔＹを受信し、その値を内部レジスタに格納する。ΔＸ及びΔＹは、図２に示された表示デバイス１０の画面１１をＸＹ平面とし、画面１１に表示された画像のＸ軸方向及びＹ軸方向の移動量を示す。
【００４０】
印字／センサタイミング生成回路４３は、センサＩ／Ｆ４２にセンサ３０の情報を読み取るタイミングを通知し、ＩＪ記録ヘッド制御回路４４に駆動タイミングを通知する。ＩＪ記録ヘッド制御回路４４は、回転器３９による吐出するか否かの判定結果に応じ、ＩＪ記録ヘッド駆動回路２３を制御してインクを吐出させる。また、ＩＪ記録ヘッド制御回路４４は、回転器３９から受け取った画像データに対して、吐出ノズル可否判定を行うことも可能である。
【００４１】
割込みコントローラ４１は、センサＩ／Ｆ４２がセンサ３０との通信が完了したことを検知して、ＳｏＣ５０へそれを通知するための割り込み信号を出力する。ＣＰＵ３１はこの割り込みにより、センサＩ／Ｆ４２が内部レジスタに記憶するΔＸ、ΔＹを取得する。その他、エラー等のステータス通知機能も有する。
【００４２】
＜実施形態１のタイミングチャート＞
図４は、制御回路２５で行われる処理のタイミングチャートを示す図である。横軸は、時間ｔであり、左側から右側へ時間の経過を示している。タイミングチャートの各項目について説明する。
【００４３】
「tim＿timer」は、センサ３０によって計測された移動量ΔＸ及びΔＹをセンサＩ／Ｆ４２がリードするための内部トリガである。また、「tSCYC」は、センサ３０が検出した移動量をセンサＩ／Ｆ４２がリードする駆動周期である。
【００４４】
印字／センサタイミング生成回路４３は、tSCYCの時間が経過する度にtim＿timerをセンサＩ／Ｆ４２に送信する。
【００４５】
「Sens＿TXD」は、センサ３０で計測されたΔＸをリード処理する時間を示す。また、「Sens＿RXD」は、センサ３０で計測されたΔＹをリード処理する時間を示す。センサＩ／Ｆ４２は、tim＿timerを受信した後、Sens＿TXDの処理時間の間にセンサ３０からΔＸをリードする。また、センサＩ／Ｆ４２は、tim＿timerを受信した後、Sens＿RXDの処理時間の間にセンサ３０からΔＹをリードする。
【００４６】
「REG＿SENS＿RXD」は、レジスタにライトされた値（ΔＸ,ΔＹ）が記録されている時間を示す。センサＩ／Ｆ４２は、センサ３０からリードしたΔＸ及びΔＹをレジスタにライトする。
【００４７】
「sens＿int」は、センサＩ／Ｆ４２がセンサ３０へのリードが完了した際に発行する割り込み処理のタイミングを示す。「tSPEAD」は、センサ３０のリードに要する時間を示す。
【００４８】
センサＩ／Ｆ４２は、センサ３０のリード処理が完了した際にsens＿intの割り込み通知をＣＰＵ３１に発行する。ＣＰＵ３１は、sens＿intの割り込み通知を受信した後、レジスタから移動量ΔＸ及びΔＹをリードする。
【００４９】
現在位置演算回路５２ａは、センサ３０の前回の位置と移動量ΔＸ及びΔＹとに基づいてセンサ３０の現在の位置を算出する。例えば、後述するように現在位置演算回路５２ａは、移動量ΔＸ及びΔＹから並行移動成分及び回転成分を算出することで、センサ３０の現在の位置を算出する。続いて、現在位置演算回路５２ａは、センサ３０ａ及びセンサ３０ｂを結ぶ線上に配列された各ノズル位置を、センサ３０ａ及びセンサ３０ｂとの位置関係に基づいて算出する。
【００５０】
未来位置演算回路５２ｂは、駆動周期tSCYC毎に吐出判定される回数分の各ノズルの予測位置を算出する。駆動周期tSCYCとは、ノズルの位置情報を取得する周期を示す。駆動周期tSCYCは、例えば、tim＿timerが送信される時間間隔に相当する。例えば、未来位置演算回路５２ｂは、駆動周期tSCYCの間に１０回インクが吐出されるものとすると、１０回分先までのセンサ３０の予測位置を算出する。
【００５１】
また、未来位置演算回路５２ｂは、駆動周期tSCYC毎に吐出判定される回数分の各ノズルの予測位置を算出することを説明したが、これに限定されない。未来位置演算回路５２ｂは、駆動周期tSCYCよりも短い所定周期で各ノズルの予測位置を算出してもよい。例えば、未来位置演算回路５２ｂは、ＩＪ記録ヘッド２４の２駆動周期（後述する駆動周期「tJCYC」）以上ごとに各ノズルの予測位置を算出してもよい。
【００５２】
「tCAL」は、各ノズルの現在位置の演算開始から予測位置の演算終了までの経過時間である。未来位置演算回路５２ｂは、時間tCAL内に各ノズルの複数の予測位置の算出を完了させる。
【００５３】
また、ノズルの予測位置をノズル毎に算出する方法について説明したが、これに限定されない。例えば、未来位置演算回路５２ｂは、駆動周期tSCYCごとに吐出判定される回数分の各センサ３０の予測位置を算出し、算出した各センサ３０の予測位置から各ノズルの予測位置を算出するようにしてもよい。例えば、各ノズルは、センサ３０ａ及びセンサ３０ｂを結ぶ線上に等間隔に配置されている。このため、未来位置演算回路５２ｂは、センサ３０ａ及びセンサ３０ｂの予測位置を算出すれば、センサ３０ａ及びセンサ３０ｂとの位置関係から各ノズルの予測位置を算出することが可能である。
【００５４】
「REG＿HEAD＿POS」は、回転器３９のレジスタにライトされた値（ΔＸ,ΔＹ）が記録されている時間を示す。未来位置演算回路５２ｂは、各ノズルの予測位置を回転器３９のレジスタにライトする。回転器３９のレジスタは、例えば、各ノズルの１６個分の予測位置を記憶でき、各ノズルの予測位置をＦＩＦＯ（First In First Out）形式で記憶する。
【００５５】
回転器３９は、レジスタに格納された予測位置の情報を格納順にリードし、センサ３０の予測位置の情報から各ノズルの予測位置を取得する。
【００５６】
回転器３９は、算出した各ノズルの予測位置に対応する画像データを外部メモリからリードし、ＩｍａｇｅＲＡＭ３７に格納する。
【００５７】
「tMEM」は、ＩｍａｇｅＲＡＭ３７に各ノズルの予測位置が格納されてから最初のインク吐出位置の画像データをリードするまでに要する時間である。「tJCYC」は、ＩＪ記録ヘッド２４の駆動周期である。また、「tim＿enctrg」は、ＩＪ記録ヘッド２４の駆動周期tJCYCのトリガであり、駆動周期tJCYCのトリガが生成される毎にインクが吐出される。
【００５８】
回転器３９は、ノズルが吐出を予定する位置と画像データの座標とを比較し、インクを吐出するか否かを判定する。回転器３９は、吐出条件を満たすと判定した場合、tim＿enctrgの周期に従い、ＩＪ記録ヘッド制御回路４４に画像データを転送する。
【００５９】
センサ３０がリードされる駆動周期tSCYC内にインクが吐出判定される回数分（駆動周期tJCYCの回数分）、回転器３９によって各ノズルの予測位置が算出され、インクを吐出するか否かが判定される。すなわち、回転器３９は、ＩＪ記録ヘッド２４の駆動周期tJCYCごとにインクを吐出するか否かの判定を実行する。
【００６０】
また、「Vcom」は、ＩＪ記録ヘッド２４の駆動波形を示している。「tDRV」は、１駆動波形ごとの時間を示す。例えば、「tDRV」は、ピエゾ素子の駆動時間である。実施形態１の場合は、「tDRV」が比較的短く、ＩＪ記録ヘッド２４の駆動波形が断続的となっている。「tJet」は、駆動波形が生成されてからインクが用紙に着弾するまでの時間を示す。「tPREDICT」は、センサ３０の位置情報がリードされてから、最初にインクが着弾するまでの時間を示す。
【００６１】
＜参考例のタイミングチャート＞
図５は、参考例の画像処理のタイミングチャートを示す図である。実施形態１との相違点としては、参考例では、「Vcom」に関し、「tDRV」が比較的長く、ＩＪ記録ヘッド２４の駆動波形が連続的となっており、１回の吐出時間が比較的長い。
【００６２】
参考例では、センサ３０がリードされる駆動周期tSCYC内で各ノズルの予測位置が１回算出され、インクを吐出するか否かが１度判定される。すなわち、１度に用紙に印字される領域が大きく、当該印字領域に対してインクを吐出するか否かを判定しており、センサ３０がリードされる周期tSCYCにつき１度ずつ判定が実行される。印字領域が吐出不能領域に重なる場合、ノズルからの吐出が停止される。
【００６３】
＜センサとノズルの位置関係＞
図６は、センサ３０とノズルの位置関係を示す図である。センサ３０による回転成分の検出を説明するための図である。図６（ａ）は、ＨＨＰ２０の底面を表す。図６（ｂ）はＩＪ記録ヘッド２４を表す。以下、図６〜８を用いて、センサ３０の位置から各ノズルの位置を算出する方法について説明する。
【００６４】
本実施形態のＨＨＰ２０は、２つ以上のセンサ３０を有している。ＨＨＰ２０は、センサ３０を２つ以上有することで、センサ３０が印刷媒体上で回転しても回転角θを検出できる。例えば、図６（ａ）ではノズルの配列方向に離間して２つのセンサ３０ａ、センサ３０ｂが配置されている。２つのセンサ３０ａ、センサ３０ｂの間の長さは距離Ｌである。回転角θは、センサ３０ａ及びセンサ３０ｂのＸ軸方向又はＹ軸方向の移動量の差分と距離Ｌとを用いて算出することができる。
【００６５】
また、距離Ｌが長いほど検出可能な最小の回転角θが小さくなり、ＨＨＰ２０の位置の誤差が少なくなるため、距離Ｌは長いほどよい。
【００６６】
センサ３０ａからＩＪ記録ヘッド２４までの距離はそれぞれ距離ａ、ｂである。距離ａと、距離ｂは等しい。また、図６（ｂ）に示すように、ＩＪ記録ヘッド２４の先端から最初のノズルまでの距離は距離ｄ、隣接するノズル間の距離は距離ｅである。距離ａ〜ｅの値はＲＯＭ２８などに予め記憶されている。
【００６７】
位置算出回路３２は、センサ３０の位置を算出すれば、センサ３０との位置関係から各ノズルの位置を算出できる。
【００６８】
本実施形態では、印刷媒体２に水平な方向をＸ軸、垂直な方向をＹ軸に設定する。これに対し、センサ３０は次のような座標軸（Ｘ'軸、Ｙ'軸）で位置を出力する。すなわち、ノズルの配列方向（２つのセンサ３０ａ、３０ｂを通る線に平行な方向）をＹ'軸、Ｙ'軸に直交する方向をＸ'軸とする。
【００６９】
図７は、センサの位置算出方法を説明するための図である。図７において左側に移動前のＩＪ記録ヘッド２４が示され、右側に移動後のＩＪ記録ヘッド２４が示される。ＩＪ記録ヘッド２４の両端にはセンサ３０ａ及びセンサ３０ｂが配置されている。ＩＪ記録ヘッド２４は、右上方向に移動している。また、ＩＪ記録ヘッド２４のセンサ３０ａ及びセンサ３０ｂを通る軸が正時計方向にｄθ旋回している。
【００７０】
センサ３０ａの初期位置を（Ｘ０,Ｙ０）とし、センサ３０ｂの初期位置を（Ｘ１,Ｙ１）とし、センサ３０ａからセンサ３０ｂまでの距離をＬとする。また、移動前及び移動後のセンサ３０ａ及びセンサ３０ｂを通る軸の回転成分をｄθとし、また、移動前及び移動後のセンサ３０ａのＸ軸方向の並行移動成分をΔＸ０,Ｙ軸方向の並行移動成分をΔＹ０とする。また、移動前及び移動後のセンサ３０ａによって検出されたＸ軸方向の移動成分をｄｘＳ０、Ｙ軸方向の移動成分をｄｙＳ０とする。なお、センサ３０ａによって検出された移動成分をｄｘＳ０及びｄｙＳ０には、センサ３０ａ及びセンサ３０ｂを通る軸の回転成分が含まれている。
【００７１】
位置算出回路３２は、ｄｘＳ０から回転成分と並行移動成分をそれぞれ算出する。位置算出回路３２は、回転成分ｄθを以下の数式に基づいて算出する。
【００７２】
【数１】
0006776521.tif 000002
位置算出回路３２は、並行移動成分ｄＸ０及びｄＹ０を以下の数式に基づいて算出する。
【００７３】
ｄＸ０＝ｄｘＳ０×ｃｏｓθ＋ｄｙＳ０×ｓｉｎθ
ｄＹ０＝−ｄｘＳ０×ｓｉｎθ＋ｄｙＳ０×ｃｏｓθ・・・（１）
図８は、先頭のノズル位置の算出を説明するための図である。センサ３０ａ及びセンサ３０ｂを結ぶ線分上にノズル２４ａ〜２４ｆが配置されている。位置算出回路３２は、センサ３０ａ及びセンサ３０ｂと各ノズルの位置関係から、各ノズルの正確な位置を算出する。
【００７４】
センサ３０ａからＩＪ記録ヘッド２４までの距離をａ、ＩＪ記録ヘッド２４のセンサ３０ａ側の端部から先頭のノズル２４ａまでの距離をｄ、各ノズル間の距離をｅとした場合、位置算出回路３２は、配列の先頭のノズル２４ａの位置（ＮＺＬ１＿Ｘ, ＮＺＬ１＿Ｙ）を以下の数式で求める。また、位置算出回路３２は、後尾のノズル２４ｆをノズル２４ａの場合と同様に求める。
【００７５】
ＮＺＬ１＿Ｘ＝Ｘ０−（ａ＋ｄ）×ｓｉｎθ
ＮＺＬ１＿Ｙ＝Ｙ０−（ａ＋ｄ）×ｃｏｓθ・・・（２）
図９は、先頭及び後尾ノズルの中間にあるノズルの位置の算出を説明するための第１の図である。位置算出回路３２は、先頭及び後尾ノズルとの位置関係に基づいて、以下の数式で先頭及び後尾ノズルの中間にある先頭からＮ番目のノズル２４Ｎ（２４ｂ〜ｆ）の位置を求める。
【００７６】
ＮＺＬＮ＿Ｘ＝ＸＳ＋｛（ＸＥ−ＸＳ）／（Ｅ−１）｝×Ｎ
ＮＺＬＮ＿Ｘ＝ＹＳ＋｛（ＹＥ−ＹＳ）／（Ｅ−１）｝×Ｎ・・・（３）
＜ノズルの位置座標のピクセル変換＞
図１０は、各ノズルの位置座標の単位のピクセル変換を説明する図である。図１０は、ＩＪ記録ヘッド２４を右下方向に走査する場合のＩＪ記録ヘッド２４の位置を示している。実線の図形は現在のＩＪ記録ヘッド２４の位置であり、点線の図形はＩＪ記録ヘッド２４の１駆動周期（tJCYC）分過去のＩＪ記録ヘッド２４の位置とする。ＩＪ記録ヘッド２４は、ノズル２４ａ〜２４ｎを含む。ノズル２４ａは、ノズル配列の先頭のノズルであり、ノズル２４ｎは、ノズル配列の後尾のノズルである。
【００７７】
例えば、位置算出回路３２は、現在及び過去のノズル２４ａの位置座標に基づいて予測されるノズル２４ａの位置座標２４ａ（１）〜（５）を算出する。同様に、位置算出回路３２は、現在及び過去のノズル２４ｎの位置座標に基づいて予測されるノズル２４ｂの位置座標２４ｎ（１）〜（５）を算出する。なお、位置算出回路３２は、ノズル２４ａ及びノズル２４ｎの中間のノズルについても同様に位置座標を算出する。
【００７８】
ノズル２４ａの予測される位置座標２４ａ（１）〜（５）は、それぞれＩＪ記録ヘッド２４の１駆動周期（tJCYC）毎に到達が予定される位置座標である。ノズル２４ｂの位置座標２４ｂ（１）〜（５）の位置座標に関しても同様である。
【００７９】
以下では、１駆動周期（tJCYC）分過去のノズル２４ａの位置座標を（d＿nzl1＿x, d＿nzl1＿y）と表記し、現在の位置座標を（c＿nzl1＿x, c＿nzl1＿y）と表記する。予測されるノズル２４ａの位置座標を１駆動周期（tJCYC）毎に、順に（r0＿nzl1＿x, r0＿nzl1＿y）, （r1＿nzl1＿x, r1＿nzl1＿y）, （r2＿nzl1＿x, r2＿nzl1＿y）, （r3＿nzl1＿x, r3＿nzl1＿y）, （r4＿nzl1＿x, r4＿nzl1＿y）と表記するものとする。
【００８０】
また、先頭のノズル２４ａから数えてｎ個目のノズル２４ｎに関しては、１駆動周期（tJCYC）分過去の位置座標を（d＿nzlｎ＿x, d＿nzlｎ＿y）と表記し、現在の位置座標を（c＿nzlｎ＿x, c＿nzlｎ＿y）と表記する。予測されるノズル２４ａの位置座標を１駆動周期（tJCYC）毎に、順に（r0＿nzlｎ＿x, r0＿nzlｎ＿y）, （r1＿nzlｎ＿x, r1＿nzlｎ＿y）, （r2＿nzlｎ＿x, r2＿nzlｎ＿y）, （r3＿nzlｎ＿x, r3＿nzlｎ＿y）, （r4＿nzlｎ＿x, r4＿nzlｎ＿y）と表記するものとする。
【００８１】
実際の印刷媒体上のノズルの座標がμｍ単位で表されている場合、以下の数式によりピクセル単位に変換できる。
【００８２】
ノズル座標［pixel］＝ノズル座標［μｍ］×解像度［dpi］÷２５４００・・・（１）
例えば、ノズル２４ａ及びノズル２４ｎの現在の位置座標（ＮＺＬ1＿Ｘ,ＮＺＬ1＿Ｙ）をピクセルに変換する場合は、以下のようになる。なお、解像度は、２４００［dpi］であるものとする。
【００８３】
c＿nzl1＿x＝ＮＺＬ1＿Ｘ×２４００［dpi］÷２５４００
c＿nzl1＿y＝ＮＺＬ1＿Ｙ×２４００［dpi］÷２５４００
c＿nzln＿x＝ＮＺＬn＿Ｘ×２４００［dpi］÷２５４００
c＿nzln＿y＝ＮＺＬn＿Ｙ×２４００［dpi］÷２５４００
＜吐出の判定＞
図１１は、吐出の判定を説明するための図である。ＩＪ記録ヘッド２４内にノズル２４ａ〜２４ｄが配列されている。回転器３９は、ノズル２４ａ〜２４ｄのそれぞれに対して個別に、インクを吐出するか否かを判定する。回転器３９は、吐出条件を満たすと判定した場合、画像データをＩＪ記録ヘッド制御回路４４に送信する。回転器３９は、ノズルの予測位置の座標と、目標吐出位置（吐出可能領域）の座標とを比較し、一致する場合に吐出条件を満たすと判定する。
【００８４】
回転器３９は、ノズル２４ａ〜２４ｄの近傍の所定範囲を許容誤差範囲とし、ノズル２４ａ〜２４ｄの許容誤差範囲内に目標吐出位置が含まれる場合に吐出条件を満たすと判定してもよい。これにより、ＨＨＰ２０の走査速度が速い場合においても、ノズルの位置座標と目標吐出位置の座標が一致するタイミングを逃し、不吐出となることを防止する。
【００８５】
例えば、図１１においてノズル２４ａの予測位置の座標が目標吐出位置からずれる場合であっても、予測位置の座標から許容誤差範囲内に目標吐出位置が含まれる場合、回転器３９は、αの地点で吐出する判定結果をＩＪヘッド制御回路４４に送信し、インクを吐出させてもよい。なお、許容誤差範囲は、例えば、１セル以下の所定の範囲に設定される。
【００８６】
また、許容誤差範囲を大きく設定した場合、ノズルの位置座標と目標吐出位置の座標が一致するタイミングを逃すことが少なくなり、不吐出が起こりにくいが、インクの吐出位置のずれが大きくなる。一方、許容誤差範囲を小さく設定した場合、インクの吐出位置のずれは小さいが、ノズルの位置座標と目標吐出位置の座標が一致するタイミングを逃すことが多くなり、不吐出が起こりやすくなる。したがって、ＨＨＰ２０を使用する用途に応じて許容誤差範囲が適宜調整される。
【００８７】
＜画像形成処理のフロー＞
図１２は、画像形成処理のフローを示す図である。図１２の左側は、ユーザの操作フローを示し、図１２の右側は、ＳｏＣ５０及びＡＳＩＣ／ＦＰＧＡ４０等の制御回路２５側の動作フローを示す。
【００８８】
ユーザによりＨＨＰ２０の電源が押下されると（ステップＳ１０）、制御回路２５側に電源が供給され、制御回路２５は、動作を開始する（ステップＳ２０）。ＳｏＣ５０は、各デバイスの初期化を実行する（ステップＳ２１）。ＳｏＣ５０は、初期化が完了したか否かを判定し（ステップＳ２２）、完了していない場合（ステップＳ２２Ｎｏ）、所定時間後、再度判定処理を行う。ＳｏＣ５０は、初期化が完了した場合（ステップＳ２２Ｙｅｓ）、ＬＥＤランプを点灯させ（ステップＳ２３）、ユーザに初期化処理の完了を通知する。
【００８９】
スマートフォン、タブレット端末などの画像データ出力器上で印刷画像が選択されると（ステップＳ１１）、画像データ出力器が印刷ＪＯＢを生成する（ステップＳ１２）。例えば、画像データ出力器にインストールされたアプリ又はプリンタドライバで印刷ＪＯＢが生成される。画像データ出力器は、印刷ＪＯＢと、選択された印刷画像を無線通信でＨＰＰ２０に送信する。
【００９０】
ＳｏＣ５０は、画像データを受信した場合、ＬＥＤを点滅させることでユーザに通知する（ステップＳ２４）。
【００９１】
ユーザによって印刷処理の初期位置が決定され（ステップＳ１３）、印刷開始ボタンが押下されると（ステップＳ１４）、ＨＨＰ２０で印刷処理が開始される。例えば、初期位置としてユーザによって印刷用紙の四隅に沿ってＨＨＰ２０が載置される。続いて、ユーザによってフリーハンドでＨＨＰ２０が走査される（ステップＳ１５）。
【００９２】
ＳｏＣ５０は、ＨＨＰ２０の位置情報を取得するようにセンサＩ／Ｆ４２に通知する。センサ３０は、位置情報を取得し、取得した位置情報を内部メモリに格納する（ステップＳ２６）。センサＩ／Ｆ４２は、センサ３０の内部メモリをリードし、内部メモリに格納されている位置情報を取得する（ステップＳ２５）。センサＩ／Ｆ４２は、最初にリードした位置を初期位置としてメモリに格納する（ステップＳ２７）。センサＩ／Ｆ４２は、例えば、リードした初期位置を原点（０,０）としてメモリに格納する。
【００９３】
印字／センサタイミング生成回路４３は、カウンタによりセンサ３０にリードするタイミングを計り、設定したセンサリード時間でない場合（ステップＳ２９Ｎｏ）、センサリード時間になるまで待機する。印字／センサタイミング生成回路４３は、設定したセンサリード時間となった場合（ステップＳ２９Ｙｅｓ）、センサ３０のメモリから位置情報をリードする（ステップＳ３０）。
【００９４】
現在位置演算回路５２ａは、前回算出されたセンサ３０の位置と今回リードした移動量ΔＸ及びΔＹからセンサ３０の現在の位置を算出し、センサ３０の現在の位置をメモリ２９に格納する（ステップＳ３１）。
【００９５】
現在位置演算回路５２ａは、センサ３０との位置関係からノズルの現在の位置を算出し、ノズルの現在の位置をメモリ２９に格納する（ステップＳ３２）。
【００９６】
未来位置演算回路５２ｂは、センサ３０のリード周期（駆動周期tSCYC）内でインクを吐出判定する回数分（駆動周期tJCYCの数分）、各ノズルの予測位置を算出し、メモリ２９に格納する（ステップＳ３３）。
【００９７】
なお、ステップＳ３１〜Ｓ３３に記載の方法以外に、次のように各ノズルの予測位置を算出してもよい。未来位置演算回路５２ｂは、センサ３０のリード周期内でインクを吐出判定する回数分、各センサ３０の予測位置を算出する。続いて、未来位置演算回路５２ｂは、センサ３０との位置関係に基づいて、吐出判定する回数分の各ノズルの予測位置を算出するようにしてもよい。
【００９８】
回転器３９は、各ノズルの予測位置に基づいて各ノズル周辺の画像データを外部メモリからリードし、ＩｍａｇｅＲＡＭ３７に格納する（ステップＳ３４）。回転器３９は、ＩｍａｇｅＲＡＭ３７に格納された画像データと各ノズルの予測位置とを比較し（ステップＳ３５）、吐出条件を満たすか否かを判定する（ステップＳ３６）。例えば、回転器３９は、ノズルの位置から許容誤差範囲内に画像データが含まれるか否かを吐出条件として判定する。
【００９９】
回転器３９は、吐出条件を満たさない場合（ステップＳ３６Ｎｏ）、吐出条件を満たす位置まで待機する。回転器３９は、吐出条件を満たす場合（ステップＳ３６Ｙｅｓ）、画像データをＩＪ記録ヘッド２４に出力し、印刷媒体にインクを吐出させる（ステップＳ３７）。
【０１００】
ＳｏＣ５０は、全画像データが出力されたか否かを判定する（ステップＳ３８）。ＳｏＣ５０は、全画像データが出力されていない場合（ステップＳ３８Ｎｏ）、ステップＳ２９の処理に戻る。一方、ＳｏＣ５０は、全画像データが出力された場合（ステップＳ３８Ｙｅｓ）、ＬＥＤを消灯させることで（ステップＳ３９）、印刷完了をユーザに通知する。なお、全画像データが出力される前であっても、ユーザにより処理完了ボタンが押下された場合、ＨＨＰ２０は、途中で処理を完了させてもよい。
【０１０１】
＜予測位置算出の第１の例（等速度）＞
図１３は、ＨＨＰ２０が等速度で走査する場合のノズルの予測位置の算出を説明するための図である。横軸は、時間ｔであり、左側から右側へ時間の経過を示している。ＨＨＰ２０は、等速度で用紙上を走査するものとし、移動量ΔＸ及びΔＹは、時間ｔに比例して増加するものとする。タイミングチャートの各項目に関しては、図４と同様である。
【０１０２】
印字／センサタイミング生成回路４３は、tSCYCの１［ms］が経過する度にtim＿timerをセンサＩ／Ｆ４２に送信する。
【０１０３】
センサＩ／Ｆ４２は、tim＿timerを受信した後、Sens＿TXDの処理時間の間にセンサ３０からΔＸをリードする。また、センサＩ／Ｆ４２は、tim＿timerを受信した後、Sens＿RXDの処理時間の間にセンサ３０からΔＹをリードする。センサ３０のリードに要する時間tSPEADは、９０［um］である。続いて、センサＩ／Ｆ４２は、センサ３０からリードした移動量ΔＸ及びΔＹをレジスタにライトする。
【０１０４】
センサＩ／Ｆ４２は、センサ３０のリード処理が完了した際にsens＿intの割り込み通知をＣＰＵ３１に発行する。ＣＰＵ３１は、sens＿intの割り込み通知を受信した後、レジスタから移動量ΔＸ及びΔＹをリードする。
【０１０５】
現在位置演算回路５２ａは、前回のセンサ３０の位置と移動量ΔＸ及びΔＹとに基づいてセンサ３０の現在の位置を算出する。例えば、後述するように現在位置演算回路５２ａは、移動量ΔＸ及びΔＹから並行移動成分及び回転成分を算出することで、センサ３０の現在の位置を算出する。続いて、現在位置演算回路５２ａは、センサ３０との位置関係からノズル２４ａ〜２４ｎの現在の位置（c＿nzl1＿x, c＿nzl1＿y）〜（c＿nzlｎ＿x, c＿nzlｎ＿y）を算出する。
【０１０６】
未来位置演算回路５２ｂは、駆動周期tSCYC内の駆動周期tJCYCの回数分（吐出判定回数分）のノズルの予測位置を算出する。ＨＨＰ２０は等速度で用紙上を走査するので、未来位置演算回路５２ｂは、駆動周期tJCYC毎の各ノズルの予測される位置座標を比例演算により算出する。例えば、現在の位置から次のｉ駆動周期後のノズル２４ａのｘ座標ri＿nzl1＿xは、以下の数式で算出される。
【０１０７】
【数２】
0006776521.tif 000003
また、現在の位置から次のｉ駆動周期後のノズル２４ｎのｘ座標ri＿nzlｎ＿xは、以下の数式で算出される。
【０１０８】
【数３】
0006776521.tif 000004
また、ノズル１及びノズルｎのｙ座標も上記方法で同様に算出できる。
【０１０９】
このように、未来位置演算回路５２ｂは、数１及び数２の数式のように、ノズル毎に駆動周期tJCYCの回数分の予測位置を算出する。
【０１１０】
数１の数式を用いた演算例について説明する。１駆動周期中の吐出数jet＿num=5,d＿nzl＿x=0,c＿nzl＿x=2とした場合、未来位置演算回路５２ｂは、ｉ駆動周期後のノズルのｘ座標ri＿nzlｎ＿xを、上記数２の数式を用いて以下のように算出する。
【０１１１】
i=1: 0 + (2*2) + (2*3/5) = 5.2
i=2: 0 + (2*2) + (2*4/5) = 5.6
i=3: 0 + (2*2) + (2*4/5) = 6.0
i=4: 0 + (2*2) + (2*4/5) = 6.4
i=5: 0 + (2*2) + (2*4/5) = 6.8
なお、未来位置演算回路５２ｂは、ｉ駆動周期後のノズルのｙ座標ri＿nzlｎ＿yも上記と同様に算出する。
【０１１２】
回転器３９は、算出されたノズルの予測位置と目標吐出位置とを比較し、目標吐出位置がノズルの予測位置から許容誤差範囲内に含まれる場合、ＩＪ記録ヘッド２４にインクを吐出させる。
【０１１３】
このように、各ノズルの位置をＩＪ記録ヘッド２４の駆動周期毎に算出することで、不吐出を少なくし、より確実に吐出可能領域にインクを吐出するように制御することができる。
【０１１４】
［実施形態２］
＜ＰＩＤ制御を用いた操作量の算出＞
ＰＩＤ制御のアルゴリズムを用いることで、未来位置演算回路５２ｂは、ＨＨＰ２０の走査速度の加速度が変化する場合においても各ノズルの位置座標を算出することができる。ＰＩＤ制御を用いる場合、以下の数式により操作量が定義される。Ｋｐは、比例要素パラメータであり、Ｋｉは、積分要素パラメータであり、Ｋｄは、微分要素パラメータであり、ｅは、偏差である。なお、操作量とは、加速度を考慮した駆動周期tJCYC毎のＨＨＰ２０の移動量である。
【０１１５】
【数４】
0006776521.tif 000005
未来位置演算回路５２ｂは、比例要素をＰとし、積分要素をＩとし、微分要素をＤとした場合（操作量＝Ｐ＋Ｉ＋Ｄ）、比例項Ｐ、積分項Ｉ、微分項Ｄを以下のように算出する。
【０１１６】
Ｐ：  Ｐ＝Ｋｐ×偏差
偏差は、前回のノズルの位置座標と今回のノズルの位置座標との差分を示す。すなわち、偏差は、ノズルの移動距離である。
【０１１７】
Ｉ：  Ｉ＝Ｋｉ×偏差の累積値×周期
偏差の累積値＝｛（今回の偏差＋前回の偏差）／２｝×周期
周期は、吐出の時間間隔を示す。すなわち、ＩＪ記録ヘッド２４の１駆動周期（tJCYC）を示す。
【０１１８】
Ｄ：  Ｄ＝Ｋｄ×（今回の偏差−前回の偏差）／周期
＜ＰＩＤ制御に用いる各種パラメータ値＞
上述したようにＰＩＤ制御に用いられるパラメータは、比例要素パラメータＫｐと、積分要素パラメータＫｉと、微分要素パラメータＫｄの３つである。
【０１１９】
あらかじめ速度ごとに各パラメータ値を設定しておき、ＨＨＰ２０の走査速度の変化に応じて各パラメータを変更するようにしてもよい。
【０１２０】
図１４は、速度ごとに設定されたＰＩＤパラメータ値の例を示す図である。Ｖ［mm/s］は、ＨＨＰ２０の秒速を示す。例えば、ＨＨＰ２０の走査速度が、０〜１００［mm/s］である場合、Ｋｐ＝１．０,Ｋｉ＝０．０,Ｋｄ＝０．０に設定され、微分項及び積分項の値を０とし、比例項の値のみを操作量に反映している。これは、ＨＨＰ２０の走査速度が低速な場合、ＨＨＰ２０が等速で走査されていることが多いためである。
【０１２１】
また、ＨＨＰ２０の走査速度が、１００〜２００［mm/s］である場合、Ｋｐ＝１．０,Ｋｉ＝０．０,Ｋｄ＝０．５に設定され、比例項の値を１とし、微分項の値を１／２とし、積分項の値を０としている。これは、ＨＨＰ２０の速度がやや低速な場合、ＨＨＰ２０が等加速で走査されていることが多いためである。
【０１２２】
それ以上の速度２００〜３００［mm/s］、３００〜４００［mm/s］の場合も各パラメータが設定される。ＨＨＰ２０の走査速度が高速な場合、速度が変化しやすいため、比例要素パラメータの値を低く設定する。
【０１２３】
また、各パラメータ値は、例えば、あらかじめＲＯＭ２８に記録しておいてもよい。未来位置演算回路５２ｂは、センサ３０で計測されたΔＸ及びΔＹより算出した走査速度に応じて、ＲＯＭ２８から各パラメータを取得し、ＰＩＤ制御に使用するようにしてもよい。
【０１２４】
このように、比例項、積分項及び微分項に用いるパラメータ値を速度ごとにあらかじめ設定しておき、走査速度に応じて各パラメータ値を使い分けて操作量を算出することで、未来位置演算回路５２ｂによる予測位置の予測精度を向上させることができる。
【０１２５】
＜予測位置算出の第２の例（速度変化あり）＞
図１５は、ＨＨＰ２０の走査速度が変化する場合のノズルの予測位置の算出を説明するための図である。横軸は、時間ｔであり、左側から右側へ時間の経過を示している。ＨＨＰ２０は、等速度で用紙上を走査するものとし、移動量ΔＸ及びΔＹは、時間ｔに比例して増加するものとする。タイミングチャートの各項目に関しては、図４と同様である。
【０１２６】
印字／センサタイミング生成回路４３は、tSCYCの１［ms］が経過する度にtim＿timerをセンサＩ／Ｆ４２に送信する。
【０１２７】
センサＩ／Ｆ４２は、tim＿timerを受信した後、Sens＿TXDの処理時間の間にセンサ３０からΔＸをリードする。また、センサＩ／Ｆ４２は、tim＿timerを受信した後、Sens＿RXDの処理時間の間にセンサ３０からΔＹをリードする。センサのリードに要する時間tSPEADは、９０［um］である。続いて、センサＩ／Ｆ４２は、センサ３０からリードしたΔＸ及びΔＹをレジスタにライトする。
【０１２８】
センサＩ／Ｆ４２は、センサ３０のリード処理が完了した際にsens＿intの割り込み通知をＣＰＵ３１に発行する。ＣＰＵ３１は、sens＿intの割り込み通知を受信した後、レジスタから移動量ΔＸ及びΔＹをリードする。
【０１２９】
現在位置演算回路５２ａは、前回のセンサ３０の位置と移動量ΔＸ及びΔＹとに基づいてセンサ３０の現在の位置を算出する。例えば、現在位置演算回路５２ａは、移動量ΔＸ及びΔＹから並行移動成分及び回転成分を算出することで、センサ３０の現在の位置を算出する。続いて、現在位置演算回路５２ａは、センサ３０との位置関係からノズル２４ａ〜２４ｎの現在の位置（c＿nzl1＿x, c＿nzl1＿y）〜（c＿nzlｎ＿x, c＿nzlｎ＿y）を算出する。
【０１３０】
未来位置演算回路５２ｂは、駆動周期tSCYC毎に吐出判定される回数分の各ノズルの予測位置を算出する。ＨＨＰ２０の走査速度は変化するので、未来位置演算回路５２ｂは、駆動周期tSCYC毎の各ノズルの予測の位置座標をＰＩＤ制御により算出する。
【０１３１】
例えば、現在の位置から次のｉ駆動周期後のノズル１のｘ座標ri＿nzl1＿xは、以下の数式で算出される。
【０１３２】
【数５】
0006776521.tif 000006
また、現在の位置から次のｉ駆動周期後のノズルｎのｘ座標ri＿nzlｎ＿xは、以下の数式で算出される。
【０１３３】
【数６】
0006776521.tif 000007
また、ノズル１及びノズルｎのｙ座標も上記方法で同様に算出できる。
【０１３４】
このように、ＰＩＤ制御を用いて各ノズルの位置を算出することでＨＨＰ２０の走査速度が変化する場合にも、各ノズルの予測精度を向上することができる。
【０１３５】
なお、ＨＨＰ２０は、画像形成装置の一例である。センサＩ／Ｆ４２は、位置情報取得手段の一例である。未来位置演算回路５２ｂは、位置予測手段の一例である。駆動周期tSCYCは、位置情報を取得する周期の一例である。駆動周期tJCYCは、吐出される周期の一例である。回転器３９は、目標吐出位置取得手段の一例である。比例要素パラメータＫｐは、第１の係数の一例である。積分要素パラメータＫiは、第２の係数の一例である。微分要素パラメータＫdは、第３の係数の一例である。加速度は、速度偏差の一例である。
【符号の説明】
【０１３６】
１０          表示デバイス
２３          ＩＪ記録ヘッド駆動回路
２５          制御回路
２６          ＯＰＵ
２８          ＲＯＭ
２９          メモリ（ＤＲＡＭ）
３０ａ,３０ｂ  センサ
３１          ＣＰＵ
３２          位置算出回路
３５          メモリＣＴＬ
３６          ＲＯＭＣＴＬ
３７          ＩｍａｇｅＲＡＭ
３８          ＤＭＡＣ（ＣＡＣＨＥ）
３９          回転器
４０          ＡＳＩＣ／ＦＰＧＡ
４１          割り込みコントローラ
４２          センサＩ／Ｆ
４３          印字／センサタイミング生成回路
４４          ＩＪ記録ヘッド制御回路
４５,４６      バス
【先行技術文献】
【特許文献】
【０１３７】
【特許文献１】特開２００６−３０５８１２号公報
【図１】
0006776521.tif 000008
【図２】
0006776521.tif 000009
【図３】
0006776521.tif 000010
【図４】
0006776521.tif 000011
【図５】
0006776521.tif 000012
【図６】
0006776521.tif 000013
【図７】
0006776521.tif 000014
【図８】
0006776521.tif 000015
【図９】
0006776521.tif 000016
【図１０】
0006776521.tif 000017
【図１１】
0006776521.tif 000018
【図１２】
0006776521.tif 000019
【図１３】
0006776521.tif 000020
【図１４】
0006776521.tif 000021
【図１５】
0006776521.tif 000022