以下、本発明を実施するための形態について図面を参照しながら説明する。
実施形態では、液体吐出装置の一例としてハンドヘルドプリンタ(以下、HHPという)について説明する。HHPは、ユーザにより印刷媒体上で移動(走査)されながら、画像データ、及び移動面におけるHHPの位置データに基づいて、インク(液体の一例)を吐出し、印刷媒体上に画像を形成する装置である。
なお、実施形態では、位置分解能を示す用語として「解像度」を用いる場合がある。解像度の単位は「dpi(dot per inch)」である。長さの単位に換算するには、1インチの長さを「解像度」で除算すれば良い。一例として、解像度2400dpiの場合、長さの単位の位置分解能は、25.4/2400=10.5μmであり、解像度614400dpiの場合、長さの単位の位置分解能は、25.4/614400=0.04μm等である。
また、実施形態では、記録ヘッドを「IJ記録ヘッド」と称し、実施形態の用語における印刷、画像形成、印字、記録はいずれも同義である。
<実施形態に係るHHPの構成>
先ず、実施形態に係るHHPについて説明する。図1は、実施形態に係るHHPによる印刷の様子の一例を説明する図である。HHP20には、スマートフォンやPC(Personal Computer)等の画像データ出力器11から画像データが送信される。ユーザはHHP20を把持して、印刷媒体12(定形用紙やノート等)から浮き上がらないようにフリーハンドで走査させる。このHHP20が走査される面は、「移動面」の一例である。
HHP20は後述するようにナビゲーションセンサS0とジャイロセンサ31で位置を検出し、HHP20が目標吐出位置に移動すると、目標吐出位置で吐出すべき色のインクを吐出する。すでにインクを吐出した場所はマスクされるため(インクの吐出の対象とならないため)、ユーザは、印刷媒体12上で任意の方向にHHP20を走査させることで、印刷媒体12上に画像を形成することができる。
印刷媒体12からHHP20が浮き上がらないことが好ましいのは、ナビゲーションセンサS0が印刷媒体12からの反射光を利用して移動量を検出するためである。印刷媒体12からHHP20が浮き上がると反射光を検出できなくなり移動量を検出できない。印刷媒体12からナビゲーションセンサS0がはみ出した場合も、印刷媒体12の厚みにより反射光を検出できなくなったり、検出できても位置がずれたりする場合がある。このため、ナビゲーションセンサS0は印刷媒体12上で走査されることが好ましく、上記のようにノズル61とナビゲーションセンサS0が印刷媒体12上に共に存在することが好ましい。
<実施形態に係るHHPのハードウェア構成>
図2は、実施形態に係るHHPのハードウェア構成の一例を説明する図である。HHP20は、制御部25によって全体の動作が制御され、制御部25には通信I/F(Interface)27、IJ(Inkjet)記録ヘッド駆動回路23、OPU(Operation panel Unit)26、ROM(Read Only Memory)28、DRAM(Dynamic Random Access Memory)29、ナビゲーションセンサ30、及びジャイロセンサ31等が電気的に接続されている。
また、HHP20は電力により駆動されるため、電源22と電源回路21とを有している。電源回路21が生成する電力は、点線22aで示す配線等により、通信I/F27、IJ記録ヘッド駆動回路23、OPU26、ROM28、DRAM29、IJ記録ヘッド24、制御部25、ナビゲーションセンサ30、及びジャイロセンサ31に供給されている。ここで、IJ記録ヘッド24は、「液体吐出部」の一例であり、ナビゲーションセンサ30は、「移動量検出部」の一例であり、ジャイロセンサ31は「姿勢検出部」の一例である。
電源22としては主に電池(バッテリー)が利用される。太陽電池や商用電源(交流電源)、燃料電池等が用いられても良い。電源回路21は、電源22が供給する電力をHHP20の各部に分配する。また、電源22の電圧を各部に適した電圧に降圧や昇圧する。また、電源22が充電可能な電池である場合、電源回路21は交流電源の接続を検出して電池の充電回路に接続し、電源22の充電を可能にする。
通信I/F27は、スマートフォンやPC等の画像データ出力器11から画像データの受信等を行う。通信I/F27は例えば無線LAN、Bluetooth(登録商標)、NFC(Near Field Communication)、赤外線、3G(携帯電話)、又は、LTE(Long Term Evolution)等の通信規格に対応した通信装置である。また、このような無線通信の他、有線LAN、USBケーブルなどを用いた有線通信に対応した通信装置であっても良い。
ROM28は、HHP20のハードウェア制御を行うファームウェアや、IJ記録ヘッド24の駆動波形データ(液滴を吐出するための電圧変化を規定するデータ)や、HHP20の初期設定データ等を格納している。
DRAM29は通信I/F27が受信した画像データを記憶したり、ROM28から展開されたファームウェアを格納したりするために使用される。したがって、CPU33がファームウェアを実行する際のワークメモリとして使用される。
ナビゲーションセンサ30は、所定のサイクル時間毎にHHP20の移動量を検出するセンサである。ナビゲーションセンサ30は、例えば、発光ダイオード(LED)やレーザ等の光源と、印刷媒体12を撮像する撮像センサを有している。HHP20が印刷媒体12上を走査されると、印刷媒体12の微小なエッジが次々に検出され(撮像され)エッジ間の距離を解析することで移動量が得られる。実施形態では、ナビゲーションセンサ30は、HHP20の底面に1つだけ搭載されている。従来は2つであった。ただし、説明のためナビゲーションセンサ30が2つあるHHP20について説明する場合がある。なお、ナビゲーションセンサ30として、さらに多軸の加速度センサを用いても良く、HHP20は加速度センサのみでHHP20の移動量を検出しても良い。
ジャイロセンサ31は、印刷媒体12に垂直な軸を中心にHHP20が回転した際の角速度を検出するセンサである。詳細は後述される。
OPU26は、HHP20の状態を表示するLED、ユーザがHHP20に印刷を指示するためのスイッチ等を有している。ただし、これに限定されるものではなく、液晶ディスプレイを有していても良く、さらにタッチパネルを有していても良い。また、音声入力機能を有していても良い。
IJ記録ヘッド駆動回路23は上記の駆動波形データを用いて、IJ記録ヘッド24を駆動するための駆動波形(電圧)を生成する。インクの液滴のサイズ等に応じた駆動波形を生成できる。
IJ記録ヘッド24は、インクを吐出するためのヘッドである。図ではCMYKの4色のインクを吐出可能になっているが、単色でも良く5色以上の吐出が可能でも良い。色毎に一列(二列以上でも良い)に列状に並んだ複数のインク吐出用のノズル61(吐出ノズルの一例)が配置されている。また、インクの吐出方式はピエゾ方式でもサーマル方式でも良く、この他の方式でも良い。IJ記録ヘッド24は、ノズル61からインク等の液体を吐出・噴射する機能部品である。吐出される液体は、IJ記録ヘッド24から吐出可能な粘度や表面張力を有するものであれば良く、特に限定されないが、常温、常圧下において、または加熱、冷却により粘度が30〔mPa・s〕以下となるものであることが好ましい。より具体的には、水や有機溶媒等の溶媒、染料や顔料等の着色剤、重合性化合物、樹脂、界面活性剤等の機能性付与材料、DNA、アミノ酸やたんぱく質、カルシウム等の生体適合材料、天然色素等の可食材料、などを含む溶液、懸濁液、エマルジョンなどであり、これらは例えば、インクジェット用インク、表面処理液、電子素子や発光素子の構成要素や電子回路レジストパターンの形成用液、3次元造形用材料液等の用途で用いることができる。
制御部25はCPU33を有し、HHP20の全体を制御する。制御部25は、ナビゲーションセンサ30により検出される移動量及びジャイロセンサ31により検出される角速度を元に、IJ記録ヘッド24の各ノズルの位置と、その位置に応じて形成する画像の決定、後述する吐出ノズル可否判定等を行う。制御部25について詳細は次述する。
<制御部のハードウェア構成>
図3は、制御部25のハードウェア構成の一例を説明するブロック図である。制御部25はSoC(System on a Chip)50とASIC(Application Specific Integrated Circuit)/FPGA(Field-Programmable Gate Array)40を有している。SoC50とASIC/FPGA40はバス46,47を介して通信する。ASIC/FPGA40はどちらの実装技術で設計されても良いことを意味し、ASIC/FPGA40以外の他の実装技術で構成されて良い。また、SoC50とASIC/FPGA40を別のチップにすることなく1つのチップや基板で構成してもよい。或いは、3つ以上のチップや基板で実装してもよい。
SoC50は、バス47を介して接続されたCPU33、位置算出回路34、メモリCTL(コントローラ)35、及びROM CTL(コントローラ)36等の機能を有している。なお、SoC50が有する構成要素はこれらに限られない。
また、ASIC/FPGA40は、バス46を介して接続されたImage RAM37、DMAC38、回転器39、割込みコントローラ41、ナビゲーションセンサI/F42、印字/センサタイミング生成部43、IJ記録ヘッド制御部44及びジャイロセンサI/F45を有している。なお、ASIC/FPGA40が有する構成要素はこれらに限られない。ここで、IJ記録ヘッド制御部44は「吐出制御部」の一例である。
CPU33は、ROM28からDRAM29に展開されたファームウェア(プログラム)などを実行し、SoC50内の位置算出回路34、メモリCTL35、及び、ROM CTL36等の動作を制御する。また、ASIC/FPGA40内のImage RAM37、DMAC38、回転器39、割込みコントローラ41、ナビゲーションセンサI/F42、印字/センサタイミング生成部43、IJ記録ヘッド制御部44及びジャイロセンサI/F45等の動作を制御する。
位置算出回路34は、ナビゲーションセンサ30が検出するサンプリング周期毎の移動量及びジャイロセンサ31が検出するサンプリング周期毎の角速度に基づいてHHP20の位置(座標情報)を算出する。HHP20の位置とは、厳密にはノズル61の位置であるが、ナビゲーションセンサ30のある位置が分かればノズル61の位置を算出できる。実施形態では、特に断らない限りナビゲーションセンサ30の位置としてナビゲーションセンサS0の位置をいう。また、位置算出回路34は目標吐出位置を算出する。なお、位置算出回路34をCPU33がソフト的に実現しても良い。
ナビゲーションセンサ30の位置は、後述するように所定の原点(印刷が開始される時のHHP20の初期位置)等を基準に算出されている。また、位置算出回路34は、過去の位置と最も新しい位置の差に基づいて移動方向や加速度を推定し、次回の吐出タイミングにおけるナビゲーションセンサ30の位置を予測することができる。こうすることで、ユーザの走査に対する遅れを抑制してインクを吐出できる。
メモリCTL35は、DRAM29とのインタフェースであり、DRAM29に対しデータを要求し、取得したファームウェアをCPU33に送出したり、取得した画像データをASIC/FPGA40に送出したりする。
ROM CTL36は、ROM28とのインタフェースであり、ROM28に対しデータを要求し、取得したデータをCPU33やASIC/FPGA40に送出する。
I2C CTL69は、NVRAM67とのインタフェースである。但し、I2Cに限定されるものではなく、SPI(Serial Peripheral Interface)やパラレルバス等のインタフェースを用いても良い。
回転器39は、DMAC38が取得した画像データを、インクを吐出するヘッド、ヘッド内のノズル位置、及び、取り付け誤差等によるヘッド傾きに応じて回転させる。DMAC38は回転後の画像データをIJ記録ヘッド制御部44へ出力する。
Image RAM37はDMAC38が取得した画像データを一時的に格納する。すなわち、ある程度の画像データがバッファリングされ、HHP20の位置に応じて読み出される。
IJ記録ヘッド制御部44は、画像データ(ビットマップデータ)にディザ処理などを施して大きさと密度で画像を表す点の集合に画像データを変換する。これにより、画像データは吐出位置と点のサイズのデータとなる。IJ記録ヘッド制御部44は点のサイズに応じた制御信号をIJ記録ヘッド駆動回路23に出力する。IJ記録ヘッド駆動回路23は上記のように制御信号に対応した駆動波形データを用いて、駆動波形(電圧)を生成する。
ナビゲーションセンサI/F42は、ナビゲーションセンサ30と通信し、ナビゲーションセンサ30からの情報として移動量ΔX´、ΔY´(これらについては後述する)を受信し、その値を内部レジスタに格納する。
印字/センサタイミング生成部43は、ナビゲーションセンサI/F42とジャイロセンサI/F45が情報を読み取るタイミングを通知し、IJ記録ヘッド制御部44に駆動タイミングを通知する。情報を読み取るタイミングの周期はインクの吐出タイミングの周期よりも長い。IJ記録ヘッド制御部44は吐出ノズル可否判定を行い、インクを吐出すべき目標吐出位置があればインクを吐出し、目標吐出位置がなければ吐出しないと判定する。
ジャイロセンサI/F45は印字/センサタイミング生成部43により生成されたタイミングになるとジャイロセンサ31が検出する角速度を取得してその値をレジスタに格納する。
割込みコントローラ41は、ナビゲーションセンサI/F42がナビゲーションセンサ30との通信が完了したことを検知して、SoC50へそれを通知するための割込み信号を出力する。CPU33はこの割込みにより、ナビゲーションセンサI/F42が内部レジスタに記憶するΔX´、ΔY´を取得する。その他、エラー等のステータス通知機能も有する。ジャイロセンサI/F45に関しても同様に、割込みコントローラ41はSoC50に対し、ジャイロセンサ31との通信が終了したことを通知するための割込み信号を出力する。
<ジャイロセンサによる検出原理>
図4は、ジャイロセンサ31が角速度を検出する原理を説明する図である。移動している物体に回転が加わると、物体の移動方向と回転軸の両方に直行する方向にコリオリ力が発生する。
物体を移動させるため、ジャイロセンサ31ではMEMS(Micro Electro Mechanical Systems)素子を振動させることで速度v(ベクトル)を発生させる。振動している質量mのMEMS素子に外部から角速度ω(ベクトル)の回転が加わると、MEMS素子にコリオリ力が加わる。コリオリ力Fは以下のように表すことができる。
F=-2mΩ×v
なお、「×」はベクトルの外積を表し、上記のように物体の移動方向と回転軸に直交する方向がコリオリ力Fの方向である。MEMS素子は例えば櫛歯構造の電極を有しており、ジャイロセンサ31はコリオリ力Fにより発生した変位を静電容量の変化として捉える。コリオリ力Fの信号はジャイロセンサ31内で増幅されフィルタリングされた後、角速度に演算されて出力される。すなわち、F,m、vが既知なので角速度ωを取り出すことができる。
<ナビゲーションセンサのハードウェア構成>
図5は、ナビゲーションセンサのハードウェア構成の構成例を示す図である。ナビゲーションセンサ30は、Host I/F301、イメージプロセッサ302、LEDドライバ303、2つのレンズ304、306及び、イメージアレイ305を有する。LEDドライバ303は、LEDと制御回路が一体となっておりイメージプロセッサ302からの命令によりLED光を照射する。イメージアレイ305は、レンズ304を介して印刷媒体12からのLED光の反射光を受光する。2つのレンズ304,306は、印刷媒体12の表面に対して光学的に焦点が合うように設置されている。
イメージアレイ305は、LED光の波長に感度を有するフォトダイオード等を有し、受光したLED光からイメージデータを生成する。イメージプロセッサ302はイメージデータを取得して、イメージデータからナビゲーションセンサの移動距離(上記のΔX´、ΔY´)を算出する。イメージプロセッサ302は、算出した移動距離を、ホストI/F301を介して制御部25へ出力する。
光源として使用される発光ダイオード(LED)は、表面が粗い印刷媒体12、例えば紙を使用する場合に有用である。これは、表面が粗い場合、影が発生するため、その影を特徴部分として、X軸方向及びY軸方向の移動距離を正確に算出することができる。一方、表面が滑らか、或いは透明な印刷媒体12に対しては、光源としてレーザ光を発生させる半導体レーザ(LD)を使用することができる。半導体レーザで、印刷媒体12上に例えば縞模様等を形成することで特徴部分を作ることができ、それを基に正確に移動距離を算出することができる。
<ナビゲーションセンサの動作>
次に、図6を用いて、ナビゲーションセンサ30の動作について説明する。図6はナビゲーションセンサ30による移動量の検出方法の一例を説明する図であり、(a)は印刷媒体への光の照射の様子を説明する図、(b)はイメージデータの一例を示す図である。
LEDドライバ303が照射した光は、レンズ306を介して印刷媒体12の表面に照射される。印刷媒体12の表面は、図6(a)に示すように様々な形状の微小な凹凸を有している。このため、様々な形の影が発生する。
イメージプロセッサ302は、予め決められたサンプリングタイミング毎に、レンズ304及びイメージアレイ305を介して反射光を受光し、イメージデータ310を取得する。図6(b)に示すように生成したイメージデータ310を、イメージプロセッサ302は規定の分解能単位でマトリクス化する。すなわち、イメージデータ310を複数の矩形領域に分割する。
そして、イメージプロセッサ302は、前回のサンプリングタイミングで得られたイメージデータ310と、今回のサンプリングタイミングで得られたイメージデータ310とを比較してイメージデータ310が移動した矩形領域の数を検出し、それを移動距離として算出する。図6(b)で図示するΔX方向にHHP20が移動したとする。t=0とt=1のイメージデータ310を比較すると、右端にある形状が中央の形状と一致する。したがって、形状は-X方向に移動しているので、HHP20がX方向に一マス分移動したことが分かる。時刻t=1とt=2についても同様である。
<IJ記録ヘッド駆動回路の構成>
図7は、IJ記録ヘッド駆動回路23の構成の一例を説明するブロック図である。まず、IJ記録ヘッド24は、複数のノズル61を備え、各ノズル61にはアクチュエータが設けられている。アクチュエータは、サーマル方式、ピエゾ方式のいずれであっても良い。サーマル方式は、ノズル内のインクに熱を与えて膨張させ、この膨張によりノズル61からインク滴を吐出させるものである。ピエゾ方式は、圧電素子によりノズル壁を押し、内部のインクを押し出すことによりインク滴を吐出させるものである。
IJ記録ヘッド駆動回路23は、アナログスイッチ231と、レベルシフタ232と、階調デコーダ233と、ラッチ234と、シフトレジスタ235とを備えている。IJ記録ヘッド制御部44は、IJ記録ヘッド駆動回路23に対し、IJ記録ヘッド24のノズル61の数(アクチュエータの数も同じ)分のシリアルデータである画像データSDを、画像データ転送クロックSCKによってシフトレジスタ235に転送する。
転送が終了すると、IJ記録ヘッド制御部44は、画像データラッチ信号SLnによりノズル毎に設けられたラッチ234に各画像データSDを記憶させる。
IJ記録ヘッド制御部44は、画像データSDをラッチさせた後、アナログスイッチ231へ各階調値のインク滴を各ノズルから吐出させるためのヘッド駆動波形Vcomを出力する。このとき、IJ記録ヘッド制御部44は、階調デコーダ233に対してヘッド駆動マスクパターンMNを階調制御信号として与えるが、そのヘッド駆動マスクパターンMNを駆動波形のタイミングに合わせて選択するように遷移させる。
階調デコーダ233は、階調制御信号とラッチされた画像データとを論理演算し、レベルシフタ232は、論理演算した得られた論理レベル電圧信号を、アナログスイッチ231を駆動できる電圧レベルまで昇圧する。
アナログスイッチ231は、昇圧された電圧信号を受け付けON/OFFすることにより、IJ記録ヘッド24のアクチュエータへ供給する駆動波形VoutNが各ノズルで異なる波形となる。IJ記録ヘッド24は、この駆動波形に基づきインク滴を吐出させ、印刷媒体12上に画像を形成する。
なお、図7の構成及びその説明は、インクジェット方式のプリンタで一般に採用されている構成である。インク滴を吐出できれば、図7の構成に限られずHHP20に搭載されてよい。
<IJ記録ヘッドにおけるノズル位置について>
次に、図8を用いて、IJ記録ヘッド24におけるノズル位置等について説明する。図8(a)は、HHP20の平面図の一例である。図8(b)はIJ記録ヘッド24のみを説明する図の一例である。図示されている面が印刷媒体12に対向する面である。
実施形態に係るHHP20は、1つのナビゲーションセンサS0を有している。図8(a)のS1は、説明の便宜上、ナビゲーションセンサ30が2つある場合の設置位置を示す。ナビゲーションセンサ30が2つある場合の、2つのナビゲーションセンサS0,S1の間の長さは距離Lである。距離Lは長いほどよい。これは、距離Lが長いほど検出可能な最小の回転角θが小さくなり、HHP20の位置の誤差が少なくなるからである。
ナビゲーションセンサ30からIJ記録ヘッド24までの距離はそれぞれ距離a、bである。距離aと、距離bは等しくてもよいし、ゼロでもよい(IJ記録ヘッド24に接している)。また、ナビゲーションセンサ30が1つだけの場合、ナビゲーションセンサS0はIJ記録ヘッド24の周囲の任意の場所に配置される。したがって、図示するナビゲーションセンサS0の位置は一例である。ただし、IJ記録ヘッド24とナビゲーションセンサS0の距離が短いことでHHP20の底面のサイズを削減しやすくなる。
図8(b)に示すように、IJ記録ヘッド24の端から最初のノズル61までの距離は距離d、隣接するノズル間の距離は距離eである。a~eの値はROM28等に予め記憶されている。
位置算出回路34等がナビゲーションセンサS0の位置を算出すれば、距離a(距離b)、距離d及び距離eを用いて、位置算出回路34はノズル61の位置を算出できる。
<印刷媒体12におけるHHP20の位置について>
図9は、実施形態に係るHHPの座標系と位置の算出方法の一例を説明する図であり、(a)はHHPのX座標を説明する図、(b)はナビゲーションセンサが検出する移動量を示す図である。
実施形態では、印刷媒体12に水平な方向をX軸、垂直な方向をY軸に設定する。原点は印刷が開始された際のナビゲーションセンサS0の位置である。この座標を印刷媒体座標と称することにする。これに対し、ナビゲーションセンサS0は図9の座標軸(X´軸、Y´軸)で移動量を出力する。すなわち、ノズル61の配列方向をY´軸、Y´軸に直交する方向をX´軸として移動量を出力する。
図9(a)に示したように、印刷媒体12に対しHHP20が時計回りにθ回転している場合を例にして説明する。ユーザがHHP20を印刷媒体座標に対し全く傾けることなく走査させることは困難で、ゼロでないθが生じると考えられる。全く回転していなければ、X=X´、Y=Y´である。しかし、HHP20が印刷媒体12に対し回転角θ、回転した場合、ナビゲーションセンサS0の出力とHHP20の印刷媒体12における実際の位置が一致しなくなる。回転角θは時計回りが正、X、X´は右方向が正、Y、Y´は上方向が正である。
図9(a)では回転角θのHHP20がX方向にのみ同じ回転角θのまま移動した場合のナビゲーションセンサS0が検出する移動量ΔX´、ΔY´とX,Yの対応を示している。なお、ナビゲーションセンサ30が2つある場合、相対位置は固定なので2つのナビゲーションセンサ30の出力(移動量)は同じである。ナビゲーションセンサS0のX座標はX1+X2であり、X1+X2はΔX´、ΔY´及び回転角θから求められる。
図9(b)は回転角θのHHP20がY方向にのみ同じ回転角θのまま移動した場合のナビゲーションセンサS0が検出する移動量ΔX´、ΔY´とX,Yの対応を示している。ナビゲーションセンサS0のY座標はY1+Y2であり、Y1+Y2は-ΔX´、ΔY´及び回転角θから求められる。
したがって、HHP20がX方向及びY方向に回転角θのまま移動した場合、ナビゲーションセンサS0が出力するΔX´、ΔY´は印刷媒体座標のX,Yに以下のように変換できる。
X=ΔX´cosθ+ΔY´sinθ …(1)
Y=-ΔX´sinθ+ΔY´cosθ …(2)
<<回転角θの検出方法>>
実施形態では、回転角θをジャイロセンサ31の出力により位置算出回路34が求める。しかしながら、距離Lが長い方が位置を高精度に求められることを示すため、ナビゲーションセンサ30が2つある場合の回転角θの求め方を説明する。
図10は、印刷中に生じるHHP20の回転角dθの求め方の一例を説明する図である。回転角dθは2つのナビゲーションセンサS0,S1が検出する移動量ΔX´を用いて算出される。印刷媒体12の上側のナビゲーションセンサS0が検出する移動量ΔX´0、ナビゲーションセンサS1が検出する移動量をΔX´1とする。なお、図10ではすでに得られている回転角をθとしている。
HHP20が平行移動しながらdθ回転した場合、移動量ΔX´0とΔX´1は一致しない。しかし、どちらの出力も2つのナビゲーションセンサS0,S1を結ぶ直線に垂直な方向の移動量なので、移動量ΔX´0とΔX´1の差は「ΔX´0-ΔX´1」として求めることができる。この差はHHP20がdθ回転したことにより生じた値である。また、「ΔX´0-ΔX´1」、L、及び、dθに図10に示す関係があることから、dθは以下のように表すことができる。
dθ=arcsin{(ΔX´0-ΔX´1)/L} …(3)
位置算出回路34がこのdθを積算することで回転角θを求めることができる。式(1)(2)に示すように、回転角θは位置の算出に用いられるので、回転角θが位置の精度に影響する。また、式(3)から分かるように、より小さいdθを検出するには距離Lを大きくすることが好ましい。したがって、距離Lが位置の精度に影響するが、距離Lを大きくするとHHP20の底面積が大きくなり、印刷可能範囲501が小さくなる。
続いて、ジャイロセンサ31の出力を用いた回転角θの算出方法を説明する。ジャイロセンサ31の出力は角速度ωである。
ω=dθ/dt
であるから、dtをサンプリング周期とすると回転角dθは以下で表せる。
dθ=ω×dt
したがって、現在(時間t=0~N)の回転角θは以下のようになる。
このように、ジャイロセンサ31でも回転角θを求めることができる。式(1)(2)に示すように、回転角θを用いて位置を算出できる。ナビゲーションセンサS
0の位置を算出できれば、図8(b)に示したa~eの値により、位置算出回路34は各ノズル61の座標を算出することができる。なお、式(1)のX、式(2)のYはそれぞれサンプリング周期における変化量なのでこのX,Yを累積することで現在の位置が求められる。
<目標吐出位置>
続いて、図11を用いて目標吐出位置について説明する。図11は、目標吐出位置とノズル61の位置の関係の一例を説明する図である。目標吐出位置G1~G9は、HHP20がノズル61からインクを着弾させる目標位置(画素の形成先)である。目標吐出位置G1~G9は、HHP20の初期位置とHHP20のX軸/Y軸方向の解像度(Xdpi,Ydpi)から求めることができる。
例えば、解像度が300dpiの場合、IJ記録ヘッド24の長手方向及びこれに対し垂直な方向に約0.084[mm]ごとに目標吐出位置が設定される。この目標吐出位置G1~G9に吐出される画素があれば、HHP20はインクを吐出する。
しかし、実際には、ノズル61と目標吐出位置が完全に一致するタイミングを捉えることは困難であるため、HHP20は目標吐出位置とノズル61の現在位置との間に許容誤差62を設けている。そして、ノズル61の現在位置が目標吐出位置から許容誤差62の範囲内にある場合に、ノズル61からインクを吐出する(このような許容範囲を設けることを「吐出ノズル可否判定」という。)。
また、矢印63に示すように、HHP20はノズル61の移動方向と加速度を監視しており、次回の吐出タイミングのノズル61の位置を予測している。したがって、予測された位置と許容誤差62の範囲内を比較してインクの吐出を準備することが可能になる。
<画像データ出力器とHHPによる印刷動作>
図12は、画像データ出力器11とHHP20による印刷動作の一例を説明するフローチャートである。
まず、ステップU101において、ユーザは画像データ出力器11の電源ボタンを押下する。画像データ出力器11はそれを受け付け、電池等から電源が供給されて起動する。
続いて、ステップU102において、ユーザは画像データ出力器11で出力したい画像を選択する。画像データ出力器11は画像の選択を受け付ける。ワープロアプリケーションのようなソフトウェアの文書データが画像として選択されてもよいし、JPEG等の画像データが選択されても良い。必要であればプリンタドライバが画像データ以外のデータを画像に変更してよい。
続いて、ステップU103において、ユーザは選択した画像をHHP20で印刷する操作を行う。HHP20は印刷ジョブの実行の要求を受け付ける。印刷ジョブの要求により画像データがHHP20へ送信される。
続いて、ステップU104において、ユーザは、HHP20を持ち、印刷媒体12(例えばノート)の上で初期位置を決定する。
続いて、ステップU105において、ユーザはHHP20の印刷開始ボタンを押下する。HHP20は印刷開始ボタンの押下を受け付ける。
続いて、ステップU106において、ユーザはHHP20を印刷媒体12の上で滑らせるように自由に走査する。
次に、HHP20の動作を説明する。以下の動作はCPU33がファームウェアを実行することで行われる。
HHP20も電源のONにより起動する。
先ず、ステップS101において、HHP20のCPU33は、HHP20に内蔵されている図3,4のハードウェア要素を初期化する。例えば、ナビゲーションセンサI/F42やジャイロセンサI/F45のレジスタを初期化したり、印字/センサタイミング生成部43にタイミング値を設定したりする。また、HHP20と画像データ出力器11との間の通信を確立する。
続いて、ステップS102において、HHP20のCPU33は初期化が完了したかどうかを判定し、完了していない場合(ステップS102、No)はこの判定を繰り返す。
初期化が完了すると(ステップS102、Yes)、ステップS103において、HHP20のCPU33は、OPU26の例えばLED点灯によりユーザに印刷可能な状態であることを報知する。これにより、ユーザは印刷可能な状態であることを把握し、上記のように印刷ジョブの実行を要求する。
続いて、ステップS104において、印刷ジョブの実行の要求により、HHP20の通信I/F27は画像データ出力器11から画像データの入力を受け付け、画像が入力された旨をOPU26のLEDを点滅させる等によりユーザに対し報知する。
続いて、ステップS105において、ユーザが印刷媒体12上でHHP20の初期位置を決め印刷開始ボタンを押下すると、HHP20のOPU26はこの操作を受け付け、CPU33がナビゲーションセンサI/F42に位置(移動量)を読み取らせる。これにより、ステップS1001において、ナビゲーションセンサI/F42はナビゲーションセンサS0と通信し、ナビゲーションセンサS0が検出した移動量を取得しレジスタ等に格納しておく。CPU33はナビゲーションセンサI/F42から移動量を読み出す。
続いて、ステップS06において、ユーザが印刷開始ボタンを押下した直後に取得された移動量はゼロであるがゼロでないとしても、CPU33は例えば座標(0,0)の初期位置としてDRAM29やCPU33のレジスタなどに格納する。
また、ステップS107において、初期位置を取得すると印字/センサタイミング生成部43がタイミングの生成を開始する。印字/センサタイミング生成部43は、初期化で設定されたナビゲーションセンサS0の移動量の取得タイミングに達するとナビゲーションセンサI/F42にタイミングとジャイロセンサI/F45にタイミングを指示する。これが周期的に行われ上記のサンプリング周期となる。
続いて、ステップS108において、HHP20のCPU33は、移動量と角速度情報を取得するタイミングであるか否かを判定する。この判定は、割込みコントローラ41からの通知により行うが、印字/センサタイミング生成部43と同じタイミングをCPU33がカウントすることで判定しても良い。
続いて、ステップS109において、移動量と角速度情報を取得するタイミングになると、HHP20のCPU33はナビゲーションセンサI/F42から移動量を取得し、ジャイロセンサI/F45から角速度情報を取得する。上記のように、ジャイロセンサI/F45は印字/センサタイミング生成部43が生成するタイミングでジャイロセンサ31から角速度情報を取得しており、ナビゲーションセンサI/F42は印字/センサタイミング生成部43が生成するタイミングでナビゲーションセンサS0から移動量を取得している。
続いて、ステップS110において、位置算出回路34は角速度情報と移動量を用いてナビゲーションセンサS0の現在の位置を算出する。具体的には、位置算出回路34は、前回のサイクルで算出した位置(X,Y)と、今回取得した移動量(ΔX´、ΔY´)及び角速度情報から算出した移動距離を加えて、現在のナビゲーションセンサS0の位置を算出する。初期位置のみで、前回算出した位置がない場合は、初期位置に今回取得した移動量(ΔX´、ΔY´) 及び角速度情報から算出した移動距離を加えて、現在のナビゲーションセンサS0の位置を算出する。
続いて、ステップS111において、位置算出回路34はナビゲーションセンサS0の現在の位置を用いて各ノズル61の現在の位置を算出する。
このように、印字/センサタイミング生成部43により角速度情報と移動量が同時に又はほぼ同時に取得されるので、回転角と回転角が検出されたタイミングで取得された移動量でノズル61の位置を算出できる。したがって、種類が異なるセンサの情報でノズル61の位置が算出されても、ノズル61の位置の精度が低下しにくい。
続いて、ステップS112において、CPU33はDMAC38を制御して、算出した各ノズル61の位置を基に、各ノズル61の周辺画像の画像データをDRAM29からImage RAM37へ送信する。なお、回転器39は、ユーザにより指定されたヘッド位置(HHP20の持ち方など)及びIJ記録ヘッド24の傾きに応じて、画像を回転させる。
続いて、ステップS113において、IJ記録ヘッド制御部44は周辺画像を構成する各画像要素の位置座標と、各ノズル61の位置座標とを比較する。位置算出回路34は、ノズル61の過去の位置と現在の位置を用いてノズル61の加速度を算出している。これにより、位置算出回路34は、ナビゲーションセンサI/F42が移動量を取得しジャイロセンサI/F45が角速度情報を取得する周期よりも短いIJ記録ヘッド24のインク吐出周期ごとにノズル61の位置を算出している。
続いて、ステップS114において、IJ記録ヘッド制御部44は、位置算出回路34が算出するノズル61の位置から所定範囲内に画像要素の位置座標が含まれるか否かを判定する。
吐出条件を満たさない場合(ステップS115、No)、処理はステップS108に戻る。吐出条件を満たす場合(ステップS115、Yes)、ステップS115において、IJ記録ヘッド制御部44はノズル61ごとに画像要素のデータをIJ記録ヘッド駆動回路23に出力する。これにより、印刷媒体12にはインクが吐出される。
続いて、ステップS116において、CPU33は全画像データを出力したかを判定する。出力していない場合(ステップS116、No)、ステップS108~S115までの処理を繰り返す。
全画像データを出力した場合(ステップS116、Yes)、ステップS117において、CPU33は、例えばOPU26のLEDを点灯させユーザに印刷が終了したことを報知する。
このようにして、実施形態に係るHHP20は、画像データ出力器11から入力した画像を印刷媒体上に印刷することができる。
なお、全画像データを出力しなくても、ユーザが十分と判断した場合には、ユーザは印刷完了ボタンを押下し、OPU26がそれを受け付けて、印刷を終了して良い。印刷終了後、ユーザが電源をOFFにすることもできるし、印刷が終了した時点で、自動で電源がOFFにされるようになっていても良い。
[第1の実施形態]
次に、第1の実施形態に係るHHP20aについて説明する。なお、既に説明した実施形態と同一の構成部についての説明は省略する。後述する第2の実施形態においても同様である。
<第1の実施形態に係るノズル位置の取得方法>
本実施形態に係るノズル位置の取得方法について、図13~14を参照して説明する。図13は、ナビゲーションセンサの位置から所定の点の位置を取得する方法の一例を説明する図である。
図13は、IJ記録ヘッド24の印刷媒体12に対向する面を示している。位置P0は現在のナビゲーションセンサ30の位置を示し、位置P0の座標を(X0、Y0)とする。位置Pは、IJ記録ヘッド24の印刷媒体12への対向面を含む面における予め定められた所定の点の位置を示し、位置Pの座標を(XP、YP)とする。
上述した方法で現在のナビゲーションセンサ30の位置P0(X0、Y0)と、IJ記録ヘッド24の回転角θが位置算出回路34により算出されている場合に、位置P(XP、YP)は次式で算出することができる。
XP=X0-a・sin(θ+ψ) …(4)
YP=Y0-a・sin(θ+ψ) …(5)
但し、距離aはナビゲーションセンサ30の位置P0から位置Pまでの距離である。また、角度ψは、IJ記録ヘッド24の印刷媒体12への対向面を含む面内における、位置P0と位置Pを結ぶ線分のIJ記録ヘッド24に対する傾きである。距離aと角度ψは、予め定められている。
位置Pを各ノズルの位置とすると、各ノズルの位置は、(4)式及び(5)式を用いて算出することができる。しかし、(4)式及び(5)式を用いる場合、IJ記録ヘッド24に含まれる全てのノズル毎に、位置P0からノズルまでの距離aと、角度ψを予めDRAM29やROM28等のメモリに記憶しておく必要がある。そのため、メモリ容量に負荷がかかる。加えて、IJ記録ヘッド24に含まれるノズルの数だけ三角関数の演算を行う必要があるため、CPU33や位置算出回路34等の演算器に演算負荷がかかる。また、高速計算に対応可能な演算器を用いると、HHP20aのコストが増大する。IJ記録ヘッド24に含まれるノズルの数が増えるに従い、これらの負荷やコストの増大は、より顕著となる。
そこで、本実施形態では、IJ記録ヘッド24の印刷媒体12への対向面を含む面内に、IJ記録ヘッド24に含まれる各ノズルの位置を算出するための仮想的な基準点を設け、この基準点の位置に基づき、各ノズルの位置を取得する。
図14は、基準点を用いたノズル位置の取得方法の一例を説明する図である。図13と同様に、図14は、IJ記録ヘッド24の印刷媒体12に対向する面を示している。ノズル列65は、複数のノズル61が配列されたノズル列を示している。一点鎖線で示した直線651は、ノズル列65が含まれる直線を示している。換言すると、直線651は、1つのノズル列を構成する全てのノズルが線上に含まれる直線である。
ノズル列65には、ノズル列65の一端にあるノズル611からノズル列65の他端にあるノズル61NまでのN個のノズルが含まれている。図14に示した例では、ノズル数Nは7である。ノズル61nは、ノズル611から数えてn番目のノズルを示している。
第1基準点Aは、直線651上で、ノズル611より外側にある点であり、その位置PAの座標は(XA、YA)で表される。第2基準点Bは、直線651上で、ノズル61Nより外側にある点であり、その位置PBの座標(XA、YA)で表される。
ここで、「ノズル列の一端にあるノズルより外側」とは、ノズル列65の一端にあるノズル611から見てノズルがない側を意味し、「ノズル列の他端にあるノズルより外側」とは、ノズル列65の他端にあるノズル61Nから見てノズルがない側を意味する。
第1基準点A及び第2基準点Bは、IJ記録ヘッド24に含まれる各ノズルの位置を算出するための仮想的な基準点であり、それぞれの位置PA及びPBは、ナビゲーションセンサ30により検出された移動量及びジャイロセンサ31により検出された姿勢に基づいて、(4)式及び(5)式により算出することができる。
一方、ノズル列に含まれるノズル61nの位置Pnの座標(Xn、Yn)は、第1基準点Aの位置PA及び第2基準点Bの位置PBに基づき、次の(6)式及び(7)式で取得することができる。
但し、距離Lは、第1基準点Aから第2基準点Bまでの距離であり、距離L
nは第1基準点Aからノズル61
nまでの距離である。
(6)式及び(7)式には三角関数が含まれないため、各ノズルの位置の演算負荷を低減することができ、低コストの演算器を用いた場合でも高速計算が可能となる。また、ナビゲーションセンサ30の位置P0からノズルまでの距離aと、角度ψをノズル毎に記憶する必要もないため、メモリ容量の負荷も低減することができる。
さらに、IJ記録ヘッド24ではノズル間隔Eは均等であるとの条件を用い、且つ距離Lをノズル間隔Eに2のべき乗をかけた値(256×E等)に設定すると、(6)式を(8)式に、また(7)式を(9)式にそれぞれ変形できる。これにより、計算がより簡略化され、より高速の演算が可能となる。
(6)式及び(7)式では、256で除算する演算が含まれるため、整数で演算すると誤差が発生する可能性があるが、X
nの解像度をX
A、X
Bの解像度の256倍で演算すれば演算結果が必ず整数になり、誤差は発生しない。
例えばXA、XBの解像度が2400dpiである場合に、Xnの解像度を614400dpiで演算すれば、(8)式を(10)式に、(9)式を(11)式にそれぞれ変形できる。なお、(10)式及び(11)式におけるXnの添え字のカッコ内には、解像度(614400dpi等)が示されている。以下においても同様である。
そして、2400dpi単位の値を得るには、演算結果を256で除算すれば良い。つまり、次式で算出できる。
X
n(2400dpi)=X
n(614400dpi)/256
(10)式及び(11)式を用いることで、さらなる演算の高速化と、演算誤差の低減を図ることができる。
<演算上の桁落ちによる印刷画像の白スジの発生>
上述したように、仮想的に設けた第1基準点A及び第2基準点を用いてノズル位置を取得すると、メモリ容量及び演算の負荷を低減することができる。しかし、その一方で、演算上の桁落ちに起因して、印刷画像に白スジ(インクが吐出されない部分)が発生する場合がある。以下に、白スジの発生原理を説明する。
図15は、印刷画像における白スジの発生原理を説明する図であり、(a)は印刷画像の画素とノズルとの関係を示す図、(b)は印刷後の画像のドットを示す図である。図15に矢印で示したX軸は、HHP20aが移動される方向を示し、Y軸はX軸と直交する方向を示す。ノズルの配列方向はY軸に一致するところ、図15(a)では、IJ記録ヘッド24の移動面内での傾きにより、ノズルの配列方向がY軸に対してわずかに傾いている状態を示している。
説明を簡単にするため、以下の条件下で、(10)式及び(11)式を用いてノズルの位置を取得した場合を説明する。
(条件)
ノズルの解像度 600dpi
印刷画像の解像度 600dpi
ノズル数 12個
第1基準点Aの位置 ノズル番号1の位置
第2基準点Bの位置 ノズル番号9の位置
第1基準点Aと第2基準点Bの設定単位 2400dpi
第1基準点Aと第2基準点Bとの距離 2400dpi単位で32ドット
図15(a)において、四角の図形は印刷画像の画素を表し、1つの四角が1画素に該当する。最も正のY方向側にある画素が1画素目で、負のY方向側に向かうにつれ、2画素目、3画素目と、画素番号が増えるものとする。
また、黒丸はIJ記録ヘッド24においてインクが吐出されるノズルを示し、白丸はIJ記録ヘッド24においてインクが吐出されないノズルを示している。黒丸及び白丸の内部に示した数字はノズル番号を表している。
ノズル番号1のノズルは第1基準点Aと一致しているため、2400dpiで設定されるのに対し、画像の解像度は600dpiであるため、Y方向において、1画素に対して4通りの位置に吐出でき、図15(a)では4通りのパターンとして、印刷画像の画素とノズルとの関係のパターン(A)~(D)が示されている。
X方向に対してIJ記録ヘッド24が垂直に配置された場合、第1基準点Aと第2基準点Bとの間隔は、2400dpi単位で32ドットとなる。これに対して、IJ記録ヘッド24がわずかに傾き、第1基準点Aと第2基準点Bとの間隔が2400dpi単位で31ドットとなった場合、ノズル位置はY方向において整数値でしか取得できないため、Y方向の隣り合うノズルで、3ドット分の間隔にしかならない場合がある。
一例として、図15(a)の例では、パターン(A)におけるノズル番号1とノズル番号2との間の間隔、並びにパターン(B)におけるノズル番号9とノズル番号10との間の間隔は、それぞれ3ドットとなっている。その結果、パターン(A)では、1画素目にノズル番号1とノズル番号2のノズルが配置されている。1つの画素に2つのノズルからインクの吐出は行われないため、ノズル番号2のノズルからはインクが吐出されなくなる。同様に、パターン(B)では、9画素目に対してノズル番号9とノズル番号10のノズルが配置され、ノズル番号10のノズルからはインクが吐出されなくなる。
図15(b)は、図15(a)におけるパターン(A)の状態が維持されたまま、HHP20aがX方向に移動され、印刷が行われた場合の印刷画像のドットを示している。ノズル番号2のノズルからインクが吐出されないため、ノズル番号2の位置に白スジ151が発生している。
図15に例示したように、第1基準点A、又は第2基準点Bに一致するノズルの次のノズルが、インクを吐出するノズルとして選択されないノズル(以下、非吐出ノズルという)になりやすい。これは、ノズル番号1のノズルは第1基準点Aと一致し、ノズル番号9のノズルは第2基準点Bと一致しているため、ノズル番号1のノズルとノズル番号9の算出において演算誤差が発生しないことに起因する。
具体的には、図15(a)のパターン(A)では、第1基準点AのY方向の位置が2400dpi単位で4の倍数、つまり、ノズルの解像度である600dpi単位で小数部分がゼロになるため、Y方向におけるノズル番号1のノズルの位置Y1も600dpi単位で小数部分がゼロ、つまり、Y1=0となる。
一方、(9)式に従うと、ノズル番号2のノズルの位置Y2は、Y2=Y1+(31-0)/32=0.96875となり、繰り上がりが発生せず、Y2=0となる。従って、1画素目に対してノズル番号1とノズル番号2のノズルの両者が配置され、ノズル番号2のノズルからはインクが吐出されなくなる。
同様に、パターン(B)では、ノズル番号9のノズルの位置Y9は小数部分がゼロになるため、ノズル番号10のノズルの位置Y10では繰り上がりが発生せずにY10=Y9=8となって、ノズル番号10のノズルからはインクが吐出されなくなる。
また、第1基準点A及び第2基準点Bだけでなく、第1基準点Aと第2基準点Bの中間点に一致するノズルの次のノズルにおいても、インクを吐出するノズルとして選択されない可能性が高くなる。ここで、第1基準点Aと第2基準点Bの中間点とは、第1基準点Aから第2基準点Bの方向に、第1基準点Aと第2基準点Bの間隔の1/2だけ離れた位置にある点をいう。
第1基準点Aと第2基準点Bの中間点では、(7)式におけるLn=L/2となるため、Yn=(YA+YB)/2となる。この時、YA+YBが2の倍数となると、Ynの小数部分がゼロになるため、上述したものと同様に、次のノズルからインクが吐出されなくなる。
このように、演算上の桁落ち(整数値でしか取得できないこと)により、非吐出ノズルが生じ、インクが吐出されないことで印刷画像に白スジが発生する。
なお、図15では説明を簡単にするため、ノズル数が12個の場合を説明したが、実際のIJ記録ヘッドでは、一般に数百個程度の数のノズルが設けられる。ノズル数が多くなった場合でも、上述したものと同様の原理で非吐出ノズルが生じる。
以上のことから、本実施形態では、非吐出ノズルに起因する白スジを低減させるために、IJ記録ヘッド24に含まれる全てのノズルが、第1基準点A、第2基準点B、及び第1基準点Aと第2基準点Bの中間点に一致しないように、第1基準点A及び第2基準点Bの位置を決定する。以下に、この決定方法とその作用を説明する。
なお、上述した例では、説明を簡単にするためにノズル数を12個としたが、以下では、実際に則したノズル数として320個の場合を例に説明する。
<第1の実施形態に係る第1基準点及び第2基準点の位置の決定方法>
図16は、本実施形態に係る第1基準点及び第2基準点の位置の決定方法の一例を説明する図である。図13、図14と同様に、図16はIJ記録ヘッド24の印刷媒体12に対向する面を示している。一点鎖線で示した直線651は、ノズル列65が含まれる直線を示し、ノズル列65には、ノズル611~61320が配列されている。また、ノズル数Nは320でノズル同士の間隔はEである。
第1基準点Aは、直線651上で、ノズル列65の一端にあるノズル611より外側にノズル間隔Eだけ離れた位置にある。つまり、第1基準点Aの位置の座標(XA、YA)は、距離a=E、角度ψ=0として(4)式及び(5)式により算出され、決定されている。
第1基準点Aの位置をこのように決定することで、ノズル列65に含まれるノズルのうちで、第1基準点Aに一致するノズルをなくすことができる。そして、第1基準点Aに一致するノズルとその隣のノズルが同じ画素(1つの画素に該当する面積内)に配置されることで、隣のノズルが非吐出ノズルになることを防ぐことができる。
一方、第2基準点Bは、直線651上で、第1基準点Aの位置から、ノズル列65の他端の方向に、ノズル間隔Eの1024倍の距離だけ離れた位置にある。つまり、第2基準点Bの位置の座標(XB、YB)は、距離a=1024×E、角度ψ=0として、(4)式及び(5)式により算出され、決定されている。ここで、ノズル間隔Eの1024倍の距離は、「2×E×Nより長い距離で、且つEに2のべき乗を乗算した距離」の一例である。
第2基準点Bの位置をこのように決定することで、ノズル列65に含まれるノズルのうちで、第2基準点Bに一致するノズルをなくすことができる。そして、第2基準点Bに一致するノズルとその隣のノズルが同じ画素に配置されることで、隣のノズルが非吐出ノズルになることを防ぐことができる。
また、第1基準点Aと第2基準点Bとの間の距離を、「2×E×Nより長い距離」とすることで、IJ記録ヘッド24の傾きのわずかな変化により、Y方向における第1基準点A及び第2基準点Bの位置が変化しやすくなる。これにより、非吐出ノズルを特定のノズルに偏らせることなく各ノズルに分散させることができる。さらに、第1基準点Aと第2基準点Bとの間の距離を、「Eに2のべき乗を乗算した距離」とすることで、演算を簡単にし、演算速度を向上させることができる。
また、一般に、第1基準点Aと第2基準点Bの間の中間点AB、第1基準点Aと中間点ABの間の中間点AAB、第1基準点Aと中間点AABの間の中間点AAAB、・・・等に一致するノズルがあると、その隣のノズルが非吐出ノズルになる確率が高くなる。これに対し、上述したように第1基準点A及び第2基準点Bを決定することで、中間点ABの位置は(YA+YB)/2、中間点AABの位置は(YA+YB)/4、中間点AAABの位置は(YA+YB)/8、・・・となって、算出される各位置の小数部分がゼロになる。これにより、中間点AB等の隣のノズルが非吐出ノズルになる確率を低減させることができる。
<第1の実施形態に係るHHPの機能構成及び動作>
図17は、本実施形態に係るHHPの機能構成の一例を説明するブロック図である。図17に示すように、HHP20aはSoC50aと、DRAM29aとを有する。SoC50aに含まれるCPU33aは基準点位置決定部331を有し、また、位置算出回路34aはノズル位置取得部341を有する。DRAM29aは、ノズル数N、ノズル間隔E等のノズル情報291を格納している。
基準点位置決定部331及びノズル位置取得部341は、それぞれメモリCTL35を介して、DRAM29aを参照し、ノズル数N、ノズル間隔E等のノズル情報291を取得することができる。
基準点位置決定部331は、上述した方法により、第1基準点A及び第2基準点Bの位置をそれぞれ決定し、決定した結果をノズル位置取得部341に出力することができる。
ここで、基準点位置決定部331は、ノズル間隔Eより小さい位置分解能Δpで、第1基準点A及び第2基準点Bの位置を決定すると好適である。このようにすることで、第1基準点Aと第2基準点Bの位置データの小数部分の値がとりうる値の組み合わせ数を増やすことができる。そして、非吐出ノズルを、特定のノズルに偏らせることなく各ノズルに分散させることができる。
より詳細には、以下の式を満足する位置分解能Δpで、第1基準点A及び第2基準点Bの位置を決定すると好適である。
(E/Δp)2>N ・・・(12)
(12)式を満足させることで、第1基準点Aと第2基準点Bの小数部分の値がとりうる値の組み合わせ数をノズル数より多くすることができ、非吐出ノズルを、特定のノズルに偏らせることなく各ノズルに分散させることができる。
このようにして、非吐出ノズルの発生確率を低減させることで、印刷画像における白スジを低減させることができる。
また、ノズル位置取得部341は、基準点位置決定部331から入力した第1基準点A及び第2基準点Bの位置に基づき、(8)式及び(9)式、或いは(10)式及び(11)式を用いて、IJ記録ヘッド24に含まれる各ノズルの位置を取得することができる。
取得された各ノズルの位置データは、印字/センサタイミング生成部43に出力され、IJ記録ヘッド制御部44によるインクの吐出制御に用いられる。
なお、上述した例では、CPU33aが基準点位置決定部331の機能を備え、位置算出回路34aがノズル位置取得部341を備える例を示したが、これに限定されるものではない。ノズル位置取得部341の機能を回転器39等が備える構成としても良い。
次に、図18は、本実施形態に係るHHPの動作の一例を示すフローチャートである。
先ず、ステップS181において、ナビゲーションセンサ30は、検出したHHP20aの移動量データを、ナビゲーションセンサI/F42を介して基準点位置決定部331に出力する。
続いて、ステップS182において、ジャイロセンサ31は、検出したHHP20aの姿勢データを、ジャイロセンサI/F45を介して基準点位置決定部331に出力する。
続いて、ステップS183において、基準点位置決定部331は、DRAM29aを参照して取得したノズル数N、ノズル間隔E等のノズル情報291と、HHP20aの移動量及び姿勢に基づき、第1基準点A及び第2基準点Bの位置を決定する。そして、決定結果をノズル位置取得部341に出力する。
続いて、ステップS184において、ノズル位置取得部341は、DRAM29aを参照して取得したノズル数N、ノズル間隔E等のノズル情報291と、入力した第1基準点A及び第2基準点Bの位置に基づき、(8)式及び(9)式、或いは(10)式及び(11)式を用いて、IJ記録ヘッド24に含まれる各ノズルの位置を取得する。そして、取得結果を印字/センサタイミング生成部43に出力する。
続いて、ステップS185において、各ノズルの位置に基づき生成された印字/センサタイミングに応じて、IJ記録ヘッド制御部44は、IJ記録ヘッド24を制御し、印刷媒体12にインクを吐出させる。
このようにして、HHP20aは、第1基準点A及び第2基準点Bの位置に基づいて取得されたノズルの位置データを用いて、印刷媒体12にインクを吐出し、印刷することができる。
<非吐出ノズル発生率のシミュレーション結果>
次に、図19は、ノズル列のノズル毎での非吐出ノズル発生率のシミュレーション結果の一例を示す図である。図19の横軸はノズル番号を示し、縦軸は非吐出ノズルの発生率を示している。図19では、0~1100番までのノズル毎での非吐出ノズルの発生率が示されている。第1基準点Aの位置は0番目のノズルの位置に決定され、第2基準点Bの位置は1024番目のノズルの位置に決定されている。
図19に示されているように、1番目のノズル、513番目のノズル、1025番目のノズルの発生率が他のノズルに対して高くなっている。ここで、1番目のノズルは、第1基準点Aに一致するノズルの隣のノズルであり、513番目のノズルは、第1基準点Aと第2基準点Bの中間点に一致するノズルの隣のノズルである。また、1025番目のノズルは、第2基準点Bに一致するノズルの隣のノズルである。
本実施形態に係る方法によれば、1番目のノズル、513番目のノズル、1025番目のノズルの一致しないように第1基準点A及び第2基準点Bのそれぞれの位置を決定するため、非吐出ノズルの発生率が高いノズルを除外し、非吐出ノズルの発生率を低減させることができる。これにより、印刷画像における白スジを低減させることができる。
また、図20は、第1基準点A及び第2基準点Bの位置の小数部分を変化させた時の非吐出ノズルの発生頻度のシミュレーション結果の一例を示すヒストグラムである。
図20の縦軸は非吐出ノズルの発生頻度を示し、発生頻度が高いものから順に、発生頻度が示されている。
シミュレーションでは、解像度600dpi単位における第1基準点AのY座標YA=0とし、第2基準点BのY座標YB=1000とし、第1基準点A及び第2基準点Bの小数部分に疑似乱数を加え、小数部分を変化させた。点線のグラフは2400dpi、一点鎖線のグラフは4800dpi、破線のグラフは9600dpi、実線のグラフは19200dpiの解像度(位置分解能)でシミュレートした結果である。
解像度が19200dpiの場合は、第1基準点A及び第2基準点Bの小数部分がとりうる値が1024通りあり、この場合、非吐出ノズルの発生確率が概ね均等になった。
単に解像度を上げるだけでは、非吐出ノズルの発生確率は低くなるものの、HHP20aを移動させた際に第1基準点A及び第2基準点BのY座標が全く変化しない場合には印刷画像に白スジが発生する。
そこで、吐出タイミング毎、又はX方向に一定量移動する毎に、Y座標の小数部分を異ならせるように疑似乱数等を加える。これにより、HHP20aの移動中にY座標が全く変化しない場合においても、白スジを低減させることができる。
ここで、小数部分を変化させると、決定される第1基準点A及び第2基準点Bの位置の誤差が増大する場合がある。これを防ぐためには、第1基準点A及び第2基準点Bの位置の算出を2400dpiの解像度で行い、算出値の小数部分に19200dpi単位で0~7を加算して、第1基準点A及び第2基準点Bを決定するようにすると好適である。
<効果>
以上説明してきたように、本実施形態では、第1基準点A及び第2基準点Bを用いて(8)式及び(9)式、又は(10)式及び(11)式によりノズル位置を取得する。これらの式には三角関数が含まれないため、各ノズルの位置の演算負荷を低減でき、低コストの演算器を用いた場合でも高速計算が可能となる。また、ナビゲーションセンサ30の位置P0からノズルまでの距離aと、角度ψをノズル毎に記憶する必要もないため、メモリ容量の負荷も低減可能となる。さらに、演算誤差の低減を図ることができる。
また、本実施形態では、第1基準点Aの位置を、直線651上で、ノズル列65の一端にあるノズル611より外側にノズル間隔Eだけ離れた位置に決定する。これにより、ノズル列65に含まれるノズルのうちで、第1基準点Aに一致するノズルをなくすことができ、第1基準点Aに一致するノズルの隣のノズルが非吐出ノズルになることを防ぐことができる。
また、第2基準点Bの位置を、直線651上で、第1基準点Aの位置からノズル列65の他端の方向に、ノズル間隔Eの1024倍の距離だけ離れた位置に決定する。これにより、ノズル列65に含まれるノズルのうちで、第2基準点Bに一致するノズルをなくすことができ、第2基準点Bに一致するノズルの隣のノズルが非吐出ノズルになることを防ぐことができる。
また、第1基準点Aと第2基準点Bとの間の距離を、「2×E×Nより長い距離」とすることで、IJ記録ヘッド24の傾きのわずかな変化に応じて、Y方向における第1基準点A及び第2基準点Bの位置が変化しやすくする。これにより、非吐出ノズルを、特定のノズルに偏らせることなく各ノズルに分散させることができる。また、第1基準点Aと第2基準点Bとの間の距離を、「Eに2のべき乗を乗算した距離」とすることで、演算速度を向上させることができる。
さらに、第1基準点Aと第2基準点Bの間の中間点AB等において、算出される各位置の小数部分をゼロにすることができ、これにより、中間点等に一致するノズルの隣のノズルが非吐出ノズルになる確率を低減させることができる。
また、本実施形態では、基準点位置決定部331は、ノズル間隔Eより小さい位置分解能Δpで、第1基準点A及び第2基準点Bの位置を決定する。これにより、第1基準点Aと第2基準点Bの位置データの小数部分の値がとりうる値の組み合わせ数を増やすことができ、非吐出ノズルを、特定のノズルに偏らせることなく各ノズルに分散させることができる。
さらに、(12)式を満足する位置分解能Δpで、第1基準点A及び第2基準点Bの位置を決定することで、第1基準点Aと第2基準点Bの小数部分の値がとりうる値の組み合わせ数をノズル数より多くすることができる。これにより、非吐出ノズルを、特定のノズルに偏らせることなく各ノズルに分散させることができる。
以上のようにして、非吐出ノズルの発生確率を低減させることで、印刷画像における白スジを低減させることができる。
[第2の実施形態]
次に、第2の実施形態に係るHHP20bについて説明する。
第1の実施形態では、HHP20aの移動量及び姿勢に基づいて、ノズル列65が含まれる直線上で、ノズル列65の一端にあるノズルより外側にある第1基準点Aの位置と、ノズル列65の他端にあるノズルより外側にある第2基準点Bの位置とをそれぞれ決定する例を説明した。
これに対し、本実施形態では、HHP20bの移動量及び姿勢に基づいて、ノズル列65が含まれる直線上で、ノズル列65の一端にあるノズルより外側にあり、ノズル列65のノズル間隔Eだけ離れた位置にある第1基準点Aの位置と、第1基準点Aからノズル列65の他端の方向に離れた位置ある第2基準点Bの位置とをそれぞれ決定する。
つまり、第2基準点Bの位置は、ノズル列65が含まれる直線上で、第1基準点Aからノズル列65の他端の方向に離れた位置であれば、ノズル列65の他端の外側であっても内側であっても何れでも良い。
また、本実施形態では、第1基準点Aの位置は、ノズル列65の一端にあるノズルより外側で、実際には存在しない仮想ノズルの位置にあることを想定する。
図21は、本実施形態に係る第1基準点及び第2基準点の位置の決定方法の一例を説明する図である。図の見方は図16と同じであるため、説明を省略する。図21では、図16に対し、IJ記録ヘッド24が傾きθだけ傾いている点と、第2基準点Bの位置が、ノズル列65が含まれる直線上で、ノズル列65の他端にあるノズルより内側にある点とが異なっている。
図21の例の場合、第1基準点Aの位置、すなわち仮想ノズル610の位置の隣にノズル611が存在するため、第1基準点Aの解像度600dpi単位でのY座標の小数部分がゼロの場合、仮想ノズル610とノズル611のY座標は600dpi単位で同一の値になる。
従って、仮想ノズル610とノズル611は同一の画素に配置されることになるが、仮想ノズル610は実際には存在しないノズルであるため、仮想ノズル610から吐出はされず、ノズル611から吐出させることができる。換言すると、仮想ノズル610が非吐出ノズルになる。
解像度2400dpi単位でのノズル61320のY座標が1276~1279に収まる場合、つまり、IJ記録ヘッド24の傾きθが0<|θ|<arctan(319/320)=4.53(度)の場合は、非吐出ノズルは1つに限られる。その非吐出ノズルを仮想ノズル610に固定することで、他の全てのノズルは、インクを吐出するノズルとして選択されるノズルになる。これにより、ノズル列65に含まれるノズルが非吐出ノズルになることを防ぐことができる。
さらに、解像度600dpi単位での第1基準点Aの位置YAの小数部分がゼロ以外の場合にも、予め定めた切り捨て、切り上げ、又は四捨五入等の規則により、解像度600dpi単位での第1基準点Aの位置YAの小数部分を強制的にゼロとみなして各ノズルの位置を算出する。これにより、YAの値に関わらず非吐出ノズルを仮想ノズル610に固定することができる。
但し、強制的に解像度600dpi単位での第1基準点Aの位置YAの小数部分をゼロとみなすことにより、新たに以下の弊害が生じる場合がある。
(I)第1基準点Aの位置YAを移動することによる画質の低下(最大3/4ドット分のドットの位置ずれの発生)
(II)非吐出ノズルが複数発生する条件(|θ|>4.53度)になると、2番目以降のノズルに非吐出ノズルが集中しやすくなる
上記(II)は、|θ|<4.53度の条件を満たす場合に限り、強制的に解像度600dpi単位での第1基準点Aの位置YAの小数部分をゼロとする処理を実行するようにすることで、回避することができる。
<本実施形態に係るHHP20bの構成>
図22は、本実施形態に係る制御部のハードウェア構成の一例を説明するブロック図である。図22に示すように、HHP20bは制御部25bを有し、制御部25bに含まれるSoC50bはCPU33bを有し、ASIC/FPGA40bはアクチュエータI/F48を有する。
アクチュエータI/F48はアクチュエータ駆動回路49Aと通信し、アクチュエータ駆動回路49Aにアクチュエータ49Bを駆動させるための制御信号を送信することができる。
アクチュエータ49Bは、IJ記録ヘッド24に取り付けられたピエゾアクチュエータ等のアクチュエータであり、アクチュエータ駆動回路49Aからの駆動信号に応じてIJ記録ヘッド24の傾きを変化させることができる。
図23は、本実施形態に係るHHPの機能構成の一例を説明するブロック図である。図23に示すように、HHP20bは、SoC50bを有し、SoC50bに含まれるCPU33bは、基準点位置決定部331bと、回転角調整部332とを有する。
基準点位置決定部331bは、図21を参照して説明した第1基準点及び第2基準点の位置の決定処理を実行することができる。
また、回転角調整部332は、アクチュエータ駆動回路49Aに制御信号を送信し、IJ記録ヘッド24の傾きθを、0<|θ|<4.53(度)の条件を満足するように調整する機能を有する。
以上説明した制御部25bのハードウェア構成及びHHP50bの機能構成により、本実施形態に係る第1基準点及び第2基準点の位置を決定する機能を実現することができる。
<効果>
以上説明してきたように、本実施形態では、HHP20bの移動量及び姿勢に基づいて、ノズル列65が含まれる直線上で、ノズル列65の一端にあるノズルより外側にあり、ノズル列65のノズル間隔Eだけ離れた位置にある第1基準点Aの位置と、第1基準点Aからノズル列65の他端の方向に離れた位置ある第2基準点Bの位置とをそれぞれ決定する。これにより、仮想ノズル610を非吐出ノズルにすることで、ノズル列65に含まれる各ノズルが非吐出ノズルになることを防ぐことができる。
また、回転角調整部332により、0<|θ|<arctan(319/320)=4.53(度)の条件を満たすように、IJ記録ヘッド24の傾きθを調整することで、ノズル列65に含まれる各ノズルが非吐出ノズルになることを防ぐことができる。
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
また、実施形態は、液体吐出方法も含む。例えば、液体吐出方法は、記録ヘッドが印刷媒体上を移動しながら、複数のノズル列から前記印刷媒体に液体を吐出する記録工程と、移動面における前記記録ヘッドの移動量を検出する移動量検出工程と、少なくとも前記移動面における前記記録ヘッドの姿勢を検出する姿勢検出工程と、前記移動量及び前記姿勢に基づいて、前記ノズル列が含まれる直線上で、前記ノズル列の一端にあるノズルより外側にある第1基準点の位置と、前記ノズル列の他端にあるノズルより外側にある第2基準点の位置と、をそれぞれ決定する基準点位置決定工程と、前記第1基準点及び前記第2基準点の位置に基づき、前記ノズル列に含まれる各ノズルの位置を取得するノズル位置取得工程と、前記各ノズルの前記移動面における位置と、画像データとに基づき、前記各ノズルからの前記液体の吐出を制御する吐出制御工程と、を含む。このような液体吐出方法により、上述した液体吐出装置と同様の効果を得ることができる。
さらに、実施形態は、プログラムも含む。例えば、プログラムは、液体吐出装置を、記録ヘッドが印刷媒体上を移動しながら、複数のノズル列から前記印刷媒体に液体を吐出する記録部、移動面における前記記録ヘッドの移動量を検出する移動量検出部、少なくとも前記移動面における前記記録ヘッドの姿勢を検出する姿勢検出部、前記移動量及び前記姿勢に基づいて、前記ノズル列が含まれる直線上で、前記ノズル列の一端にあるノズルより外側にある第1基準点の位置と、前記ノズル列の他端にあるノズルより外側にある第2基準点の位置と、をそれぞれ決定する基準点位置決定部、前記第1基準点及び前記第2基準点の位置に基づき、前記ノズル列に含まれる各ノズルの位置を取得するノズル位置取得部、前記各ノズルの前記移動面における位置と、画像データとに基づき、前記各ノズルからの前記液体の吐出を制御する吐出制御部、として機能させる。このようなプログラムにより、上述した液体吐出装置と同様の効果を得ることができる。
また、上記で説明した実施形態の各機能は、一又は複数の処理回路によって実現することが可能である。ここで、本明細書における「処理回路」とは、電子回路により実装されるプロセッサのようにソフトウェアによって各機能を実行するようプログラミングされたプロセッサや、上記で説明した各機能を実行するよう設計されたASIC(Application Specific Integrated Circuit)、DSP(digital signal processor)、FPGA(field programmable gate array)や従来の回路モジュール等のデバイスを含むものとする。