JP2023023741A - ハンドヘルドプリンタ - Google Patents
ハンドヘルドプリンタ Download PDFInfo
- Publication number
- JP2023023741A JP2023023741A JP2021129538A JP2021129538A JP2023023741A JP 2023023741 A JP2023023741 A JP 2023023741A JP 2021129538 A JP2021129538 A JP 2021129538A JP 2021129538 A JP2021129538 A JP 2021129538A JP 2023023741 A JP2023023741 A JP 2023023741A
- Authority
- JP
- Japan
- Prior art keywords
- navigation sensor
- handheld printer
- correction
- correction coefficient
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Printers Characterized By Their Purpose (AREA)
- Ink Jet (AREA)
Abstract
【課題】ハンドヘルドプリンタにおいて移動量検出部の出力の急峻な変動に起因する画像の濃度ムラを抑制可能とする。【解決手段】ハンドヘルドプリンタ1の移動量を検出するナビゲーションセンサ30と、スパイク波形が含まれるナビゲーションセンサ30の検出値からスパイク波形の発生周期を示す変動周期を算出する変動周期算出部3414と、変動周期を用いてナビゲーションセンサ30の処理周波数を算出するナビセンサ処理周波数算出部3417と、処理周波数を用いてスパイク波形を低減させるための補正係数を決定する補正係数決定部3418と、補正係数を用いてナビゲーションセンサ30の検出値を補正する補正部3416と、補正部3416により補正された検出値に基づきハンドヘルドプリンタ1の現在位置を算出する制御部(位置算出回路34)と、を備える。【選択図】図17
Description
本発明は、ハンドヘルドプリンタに関する。
昨今、ノートPCの小型化、スマートデバイスの急激な普及により、プリンタにおいても、「小型化・携帯化」が大きな要望の一つとして挙げられている。そのため、紙搬送システムを削除した機構で、紙面上を人の手で走査しながらインクを塗布する、ハンディモバイルプリンタ(ハンドヘルドプリンタともいう)が既に知られている(例えば、特許文献1)。
ハンディモバイルプリンタは、通信機能を持つ端末(例えばスマートデバイスやPC等)から画像データを受信し、印刷媒体(例えばノートや定型用紙)上を平面上で自由に走査し、即ち、フリーハンド走査し、画像を形成する。
このように自由に走査するハンディ装置であるハンディモバイルプリンタにて画像を形成するためには、現在の位置情報を検出する必要があり、その位置情報の導出のために移動量検出部としてナビゲーションセンサを用いる方式がある。このセンサの性能は印刷品質に大きな影響を与える。
しかし、今までのハンディモバイルプリンタは、ナビゲーションセンサなどの移動量検出部の出力の急峻な変化、例えば、ノイズや、センサとCPU等の制御手段との処理周期の不一致による蓄積誤差に起因する変化により、印刷画像に濃度ムラが発生し、画質が劣化するという問題があった。
本発明は、ハンドヘルドプリンタにおいて移動量検出部の出力の急峻な変動に起因する画像の濃度ムラを抑制可能とすることを目的とする。
上述した課題を解決するために、本発明の一観点に係るハンドヘルドプリンタは、記録媒体上を移動しながら画像データに基づく画像を前記記録媒体に印刷するハンドヘルドプリンタであって、当該ハンドヘルドプリンタの移動量を検出する移動量検出部と、スパイク波形が含まれる前記移動量検出部の検出値から前記スパイク波形の発生周期を示す変動周期を算出する変動周期算出部と、前記変動周期を用いて前記移動量検出部の処理周波数を算出する処理周波数算出部と、前記処理周波数を用いて前記スパイク波形を低減させるための補正係数を決定する補正係数決定部と、前記補正係数を用いて前記移動量検出部の前記検出値を補正する補正部と、前記補正部により補正された前記検出値に基づき当該ハンドヘルドプリンタの現在位置を算出する制御部と、を備える。
ハンドヘルドプリンタにおいて移動量検出部の出力の急峻な変動に起因する画像の濃度ムラを抑制できる。
以下、添付図面を参照しながら実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
なお、以下の説明において、X方向、Y方向、Z方向は互いに垂直な方向である。
[ハンドヘルドプリンタの基本構成]
図1は、ハンドヘルドプリンタ1による画像形成を模式的に示す図の一例である。ハンドヘルドプリンタ1には、例えばスマートフォンやPC(Personal Computer)等の画像データ出力器70から画像データが送信される。ユーザはハンドヘルドプリンタ1を把持して、記録媒体P(例えば定形用紙やノートなど)から浮き上がらないようにフリーハンドで走査させる。
図1は、ハンドヘルドプリンタ1による画像形成を模式的に示す図の一例である。ハンドヘルドプリンタ1には、例えばスマートフォンやPC(Personal Computer)等の画像データ出力器70から画像データが送信される。ユーザはハンドヘルドプリンタ1を把持して、記録媒体P(例えば定形用紙やノートなど)から浮き上がらないようにフリーハンドで走査させる。
ハンドヘルドプリンタ1は後述するようにナビゲーションセンサ30とジャイロセンサ31で位置を検出し、ハンドヘルドプリンタ1が目標吐出位置に移動すると、目標吐出位置で吐出すべき色のインクを吐出する。すでにインクを吐出した場所はマスクされるので(インクの吐出の対象とならないので)、ユーザは記録媒体P上で任意の方向にハンドヘルドプリンタ1を走査させることで画像を形成できる。
本実施形態では、ハンドヘルドプリンタ1と画像データ出力器70とが、ハンドヘルドプリンタ1による印刷を実施するための印刷システム100を構成する。
図2は、使用時のハンドヘルドプリンタ1と使用者の手Hとの位置関係を示す説明図である。
ハンドヘルドプリンタ1は、全体的に略直方体形状をなしており、その走査方向(=印字方向:図中X軸方向)の長さは、使用者が掌で掴める程度である。
図1、図2に示すように、ハンドヘルドプリンタ1の本体の左右方向(短手方向)をX軸方向とし、それに直交する本体長手方向をY軸方向とする。ハンドヘルドプリンタ1を用いたプリント動作では、文字や絵柄等を直線的に印字する場合はX軸方向(走査方向)にハンドヘルドプリンタ1を移動させる。そして、Y軸方向にハンドヘルドプリンタ1を移動させることで改行させる。
ただし、ハンドヘルドプリンタ1を用いたプリント動作は上述した動作に限定されるものではない。文字や絵柄等をデザイン的に配置する場合など、X軸方向以外の斜め方向や曲線的にハンドヘルドプリンタ1を移動させてプリントを行うことも可能である。また、Y軸方向以外の方向にハンドヘルドプリンタ1を移動させて改行することも可能である。
ハンドヘルドプリンタ1は、記録面10(図3参照)の反対面である上面11、ハンドヘルドプリンタ1の走査方向と直交する方向である走査直交方向(図中Y軸方向)に延在する左側面12などを有している。さらに、走査直交方向(図中Y軸方向)に延在する右側面13、走査方向(図中X軸方向)に延在する背面14、走査方向に延在する正面15なども有している。ハンドヘルドプリンタ1は、記録面10を鉛直方向下方に向けつつ、上面11を鉛直方向上方に向ける姿勢で使用される。上面11の外縁内(枠内)には、印字ボタン5aと、電源ボタン5bとが設けられている。
ハンドヘルドプリンタ1は、使用者が電源ボタン5bを長押しすることによって、電源の入切(ON/OFF)を切り替えることができる。電源を入れた状態では、スマートフォンなどとのBluetooth(登録商標)等を用いた無線通信により、ハンドヘルドプリンタ1内に設けられた制御基板に対して画像情報を取得させることができる。
画像情報を取得させた後、記録面10を紙などの記録媒体Pの表面に対向させる姿勢でハンドヘルドプリンタ1を記録媒体Pの表面上に置く。その後、印字ボタン5aを一度押してから、ハンドヘルドプリンタ1を走査方向(X軸方向)に沿って移動させることで、記録媒体Pの表面に画像を形成することができる。
図3は、ハンドヘルドプリンタ1の記録面10の概略構成図である。ハンドヘルドプリンタ1は、1つのIJ記録ヘッド24、1つのナビゲーションセンサ30(移動量検出部)、及び、1つのジャイロセンサ31を記録面10に有している。図3の例では、IJ記録ヘッド24とナビゲーションセンサ30とがハンドヘルドプリンタ1の長手方向(Y方向)に直列に配置されている。IJ記録ヘッド24のX方向の略中心の位置にはノズル61が設けられている。ノズル61はY方向に延在し、例えばY方向に沿って各色のノズルが配列されている(図3では簡略化して線分として図示している)。ジャイロセンサ31は、例えばナビゲーションセンサ30の左側面12側に配置されている。
図4は、ハンドヘルドプリンタ1のハードウェア構成図の一例である。ハンドヘルドプリンタ1は、記録媒体Pに画像を形成する液滴吐出装置又は画像形成装置の一例である。ハンドヘルドプリンタ1は、制御部25によって全体の動作が制御され、制御部25には通信I/F27、IJ記録ヘッド駆動回路23、OPU26、ROM28、DRAM29、ナビゲーションセンサ30、及びジャイロセンサ31が電気的に接続されている。また、ハンドヘルドプリンタ1は電力により駆動されるため、電源22と電源回路21を有している。電源回路21が生成する電力は、点線22aで示す配線などにより、通信I/F27、IJ記録ヘッド駆動回路23、OPU26、ROM28、DRAM29、IJ記録ヘッド24、制御部25、ナビゲーションセンサ30、及び、ジャイロセンサ31に供給されている。
電源22としては主に電池(バッテリー)が利用される。太陽電池や商用電源(交流電源)、燃料電池等が用いられてもよい。電源回路21は、電源22が供給する電力をハンドヘルドプリンタ1の各部に分配する。また、電源22の電圧を各部に適した電圧に降圧や昇圧する。また、電源22が充電可能な電池である場合、電源回路21は交流電源の接続を検出して電池の充電回路に接続し、電源22の充電を可能にする。
通信I/F27は、スマートフォンやPC(Personal Computer)等の画像データ出力器70から画像データの受信等を行う。通信I/F27は例えば無線LAN、Bluetooth(登録商標)、NFC(Near Field Communication)、赤外線、3G(携帯電話)、又は、LTE(Long Term Evolution)等の通信規格に対応した通信装置である。また、このような無線通信の他、有線LAN、USBケーブルなどを用いた有線通信に対応した通信装置であってもよい。
ROM28は、ハンドヘルドプリンタ1のハードウェア制御を行うファームウェアや、IJ記録ヘッド24の駆動波形データ(液滴を吐出するための電圧変化を規定するデータ)や、ハンドヘルドプリンタ1の初期設定データ等を格納している。
DRAM29は通信I/F27が受信した画像データを記憶したり、ROM28から展開されたファームウェアを格納したりするために使用される。したがって、CPU33がファームウェアを実行する際のワークメモリとして使用される。
ナビゲーションセンサ30は、所定のサイクル時間ごとにハンドヘルドプリンタ1の移動量を検出するセンサである。ナビゲーションセンサ30は、例えば、発光ダイオード(LED)やレーザー等の光源と、記録媒体Pを撮像する撮像センサを有している。ハンドヘルドプリンタ1が記録媒体P上を走査されると、記録媒体Pの微小なエッジが次々に検出され(撮像され)エッジ間の距離を解析することで移動量が得られる。ナビゲーションセンサ30は、ハンドヘルドプリンタ1の底面(記録面)に搭載されている。なお、ナビゲーションセンサ30として、さらに多軸の加速度センサを用いてもよく、ハンドヘルドプリンタ1は加速度センサのみでハンドヘルドプリンタ1の移動量を検出してもよい。
ジャイロセンサ31は、記録媒体Pに垂直な軸(Z軸)を中心にハンドヘルドプリンタ1が回転した際の角速度を検出するセンサである。
OPU(Operation panel Unit)26は、ハンドヘルドプリンタ1の状態を表示するLED、ユーザがハンドヘルドプリンタ1に画像形成を指示するためのスイッチ等を有している。ただし、これに限定するものではなく、液晶ディスプレイを有していてよく、さらにタッチパネルを有していてもよい。また、音声入力機能を有していてもよい。
IJ記録ヘッド駆動回路23は上記の駆動波形データを用いて、IJ記録ヘッド24を駆動するための駆動波形(電圧)を生成する。インクの液滴のサイズなどに応じた駆動波形を生成できる。
IJ記録ヘッド24は、インクを吐出するためのヘッドである。図ではCMYKの4色のインクを吐出可能になっているが、単色でもよく5色以上の吐出が可能でもよい。各色ごとに一列(二列以上でもよい)に列状に並んだ複数のインク吐出用のノズル61(吐出部)が配置されている(図5参照)。また、インクの吐出方式はピエゾ方式でもサーマル方式でもよく、この他の方式でもよい。IJ記録ヘッド24は、ノズル61から液体を吐出・噴射する機能部品である。吐出される液体は、IJ記録ヘッド24から吐出可能な粘度や表面張力を有するものであればよく、特に限定されないが、常温、常圧下において、または加熱、冷却により粘度が30〔mPa・s〕以下となるものであることが好ましい。より具体的には、水や有機溶媒等の溶媒、染料や顔料等の着色剤、重合性化合物、樹脂、界面活性剤等の機能性付与材料、DNA、アミノ酸やたんぱく質、カルシウム等の生体適合材料、天然色素等の可食材料、などを含む溶液、懸濁液、エマルジョンなどであり、これらは例えば、インクジェット用インク、表面処理液、電子素子や発光素子の構成要素や電子回路レジストパターンの形成用液、3次元造形用材料液等の用途で用いることができる。
制御部25はCPU33を有しハンドヘルドプリンタ1の全体を制御する。制御部25は、ナビゲーションセンサ30により検出される移動量及びジャイロセンサ31により検出される角速度を元に、IJ記録ヘッド24の各ノズル61の位置、該位置に応じて形成する画像の決定、吐出ノズル可否判定等を行う。制御部25について詳細は次述する。
図5は、制御部25の構成を説明する図の一例である。制御部25はSoC50とASIC/FPGA40を有している。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が有する構成要素はこれらに限られない。
CPU33は、ROM28からDRAM29に展開されたファームウェア(プログラム)などを実行し、SoC50内の位置算出回路34、メモリCTL35、及び、ROMCTL36の動作を制御する。また、ASIC/FPGA40内のimage RAM37、DMAC38、回転器39、割込みコントローラ41、ナビゲーションセンサI/F42、印字/センサタイミング生成部43、IJ記録ヘッド制御部44及びジャイロセンサI/F45等の動作を制御する。
位置算出回路34は、ナビゲーションセンサ30が検出するサンプリング周期ごとの移動量及びジャイロセンサ31が検出するサンプリング周期ごとの角速度に基づいてハンドヘルドプリンタ1の位置(座標情報)を算出する。ハンドヘルドプリンタ1の位置とは、厳密にはIJ記録ヘッド24のノズル61の位置であるが、ナビゲーションセンサ30のある位置が分かればノズル61の位置を算出できる。また、位置算出回路34は目標吐出位置を算出する。なお、位置算出回路34をCPU33がソフト的に実現してもよい。
ナビゲーションセンサ30の位置は、後述するように例えば所定の原点(画像形成が開始される時のハンドヘルドプリンタ1の初期位置)を基準に算出されている。また、位置算出回路34は、過去の位置と最も新しい位置の差に基づいて移動方向や加速度を推定し、例えば次回の吐出タイミングにおけるナビゲーションセンサ30の位置を予測する。こうすることで、ユーザの走査に対する遅れを抑制してインクを吐出できる。
メモリCTL35は、DRAM29とのインタフェースであり、DRAM29に対しデータを要求し、取得したファームウェアをCPU33に送出したり、取得した画像データをASIC/FPGA40に送出したりする。
ROM CTL36は、ROM28とのインタフェースであり、ROM28に対しデータを要求し、取得したデータをCPU33やASIC/FPGA40に送出する。
回転器39は、DMAC38が取得した画像データを、インクを吐出するヘッド、ヘッド内のノズル位置、及び、取り付け誤差などによるヘッド傾きに応じて回転させる。DMAC38は回転後の画像データをIJ記録ヘッド制御部44へ出力する。
Image RAM37はDMAC38が取得した画像データを一時的に格納する。すなわち、ある程度の画像データがバッファリングされ、ハンドヘルドプリンタ1の位置に応じて読み出される。
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との通信が終了したことを通知するための割込み信号を出力する。
図6は、画像データ出力器70とハンドヘルドプリンタ1の動作手順を説明するフローチャート図の一例である。まず、ユーザは画像データ出力器70の電源ボタンを押下する(U101)。画像データ出力器70はそれを受け付け、電池等から電源が供給されて起動する。
ユーザは画像データ出力器70で出力したい画像を選択する(U102)。画像データ出力器70は画像の選択を受け付ける。ワープロアプリケーションのようなソフトウェアの文書データが画像として選択されてもよいし、JPEGなどの画像データが選択されてもよい。必要であればプリンタドライバが画像データ以外のデータを画像に変更してよい。
ユーザは選択した画像をハンドヘルドプリンタ1で印刷する操作を行う(U103)。ハンドヘルドプリンタ1は印刷ジョブの実行の要求を受け付ける。印刷ジョブの要求により画像データがハンドヘルドプリンタ1へ送信される。
ユーザは、ハンドヘルドプリンタ1を持ち、記録媒体P(例えばノート)の上で初期位置を決定する(U104)。
そして、ユーザはハンドヘルドプリンタ1の印刷開始ボタンを押下する(U105)。ハンドヘルドプリンタ1は印刷開始ボタンの押下を受け付ける。
ユーザはハンドヘルドプリンタ1を記録媒体Pの上で滑らせるように自由に走査する(U106)。
続いて、ハンドヘルドプリンタ1の動作を説明する。以下の動作はCPU33がファームウェアを実行することで行われる。
ハンドヘルドプリンタ1も電源のONにより起動する。ハンドヘルドプリンタ1のCPU33は、ハンドヘルドプリンタ1に内蔵されている図3,4のハードウェア要素を初期化する(S101)。例えば、ナビゲーションセンサI/F42やジャイロセンサI/F45のレジスタを初期化したり、印字/センサタイミング生成部43にタイミング値を設定したりする。また、ハンドヘルドプリンタ1と画像データ出力器70との間の通信を確立する。
ハンドヘルドプリンタ1のCPU33は初期化が完了したかどうかを判定し、完了していない場合はこの判定を繰り返す(S102)。
初期化が完了すると(S102のYes)、ハンドヘルドプリンタ1のCPU33は、OPU26の例えばLED点灯によりユーザに印刷可能な状態であることを報知する(S103)。これにより、ユーザは印刷可能な状態であることを把握し、上記のように印刷ジョブの実行を要求する。
印刷ジョブの実行の要求により、ハンドヘルドプリンタ1の通信I/F27は画像データ出力器70から画像データの入力を受け付け、画像が入力された旨をOPU26のLEDを点滅させる等によりユーザに対し報知する(S104)。
ユーザが記録媒体P上でハンドヘルドプリンタ1の初期位置を決め印刷開始ボタンを押下すると、ハンドヘルドプリンタ1のOPU26はこの操作を受け付け、CPU33がナビゲーションセンサI/F42に位置(移動量)を読み取らせる(S105)。これにより、ナビゲーションセンサI/F42はナビゲーションセンサ30と通信し、ナビゲーションセンサ30が検出した移動量を取得しレジスタなどに格納しておく(S1001)。CPU33はナビゲーションセンサI/F42から移動量を読み出す。
ユーザが印刷開始ボタンを押下した直後に取得された移動量はゼロであるがゼロでないとしても、CPU33は例えば座標(0,0)の初期位置としてDRAM29やCPU33のレジスタなどに格納する(S106)。
また、初期位置を取得すると印字/センサタイミング生成部43がタイミングの生成を開始する(S107)。印字/センサタイミング生成部43は、初期化で設定されたナビゲーションセンサ30の移動量の取得タイミングに達するとナビゲーションセンサI/F42にタイミングとジャイロセンサI/F45にタイミングを指示する。これが周期的に行われ上記のサンプリング周期となる。
ハンドヘルドプリンタ1のCPU33は、移動量と角速度情報を取得するタイミングであるか否かを判定する(S108)。この判定は、割込みコントローラ41からの通知により行うが、印字/センサタイミング生成部43と同じタイミングをCPU33がカウントすることで判定してもよい。
移動量と角速度情報を取得するタイミングになると、ハンドヘルドプリンタ1のCPU33はナビゲーションセンサI/F42から移動量を取得し、ジャイロセンサI/F45から角速度情報を取得する(S109)。上記のように、ジャイロセンサI/F45は印字/センサタイミング生成部43が生成するタイミングでジャイロセンサ31から角速度情報を取得しており、ナビゲーションセンサI/F42は印字/センサタイミング生成部43が生成するタイミングでナビゲーションセンサ30から移動量を取得している。
次に、位置算出回路34は角速度情報と移動量を用いてナビゲーションセンサ30の現在の位置を算出する(S110)。具体的には、位置算出回路34は、前回のサイクルで算出した位置(X,Y)と、今回取得した移動量(ΔX、ΔY)及び角速度情報から算出した移動距離を加えて、現在のナビゲーションセンサ30の位置を算出する。初期位置のみで、前回算出した位置がない場合は、初期位置に今回取得した移動量(ΔX、ΔY)及び角速度情報から算出した移動距離を加えて、現在のナビゲーションセンサ30の位置を算出する。
なお、特に本実施形態では、ステップS110において、ナビゲーションセンサ30の出力を補正し、補正した出力を用いて現在位置を算出する。この補正処理の詳細については図16~図21を参照して後述する。
次に、位置算出回路34はナビゲーションセンサ30の現在の位置を用いてIJ記録ヘッド24の各ノズル61の現在の位置を算出する(S111)。
このように、印字/センサタイミング生成部43により角速度情報と移動量が同時に又はほぼ同時に取得されるので、回転角と回転角が検出されたタイミングで取得された移動量でノズル61の位置を算出できる。したがって、種類が異なるセンサの情報でノズルの位置が算出されても、ノズル61の位置の精度が低下しにくい。
次に、CPU33はDMAC38を制御して、算出した各ノズル61の位置を基に、各ノズル61の周辺画像の画像データをDRAM29からImage RAM37へ送信する(S112)。なお、回転器39は、ユーザにより指定されたヘッド位置(ハンドヘルドプリンタ1の持ち方など)及びIJ記録ヘッド24の傾きに応じて、画像を回転させる。
次に、IJ記録ヘッド制御部44は周辺画像を構成する各画像要素の位置座標と、IJ記録ヘッド24の各ノズル61の位置座標とを比較する(S113)。位置算出回路34は、ノズル61の過去の位置と現在の位置を用いてノズル61の加速度を算出している。これにより、位置算出回路34は、ナビゲーションセンサI/F42が移動量を取得しジャイロセンサI/F45が角速度情報を取得する周期よりも短いIJ記録ヘッド24のインク吐出周期ごとにノズル61の位置を算出している。
IJ記録ヘッド制御部44は、位置算出回路34が算出するノズル61の位置から所定範囲内に画像要素の位置座標が含まれるか否かを判定する(S114)。
吐出条件を満たさない場合、処理はステップS108に戻る。吐出条件を満たす場合、IJ記録ヘッド制御部44はノズル61ごとに画像要素のデータをIJ記録ヘッド駆動回路23に出力する(S115)。これにより、記録媒体Pにはインクが吐出される。
次に、CPU33は全画像データを出力したかを判定する(S116)。出力していない場合、ステップS108からS115までの処理を繰り返す。
全画像データを出力した場合、CPU33は、例えばOPU26のLEDを点灯させユーザに印刷が終了したことを報知する(S117)。
なお、全画像データを出力しなくても、ユーザが十分と判断した場合には、ユーザは印刷完了ボタンを押下し、OPU26がそれを受け付けて、印刷を終了してよい。印刷終了後、ユーザが電源をOFFにすることもできるし、印刷が終了した時点で、自動で電源がOFFにされるようになっていてもよい。
図7は、ナビゲーションセンサ30の位置算出方法を説明した図である。ハンドヘルドプリンタ1を移動させた場合の移動前と移動後のIJ記録ヘッド24及びナビゲーションセンサ30の位置関係は例えば図8に示すような幾何学的関係として表現できる。
ナビゲーションセンサ30の座標を算出できれば、従来までの演算フローに従い、予め機器のレイアウトが決まっている、メカ的(物理的)なナビゲーションセンサ30とIJ記録ヘッド24のノズル61との位置関係より、角ノズルの座標を算出することができる。
[ナビゲーションセンサの出力補正の概要]
図8~図15を参照して、本実施形態におけるナビゲーションセンサ30の出力補正の概要について説明する。
図8~図15を参照して、本実施形態におけるナビゲーションセンサ30の出力補正の概要について説明する。
<ナビセンサ検出誤差の要因>
ここで、従来のハンドヘルドプリンタでは、ナビゲーションセンサ30の処理周期と、制御部25~ナビセンサ30間の通信周期とが同期していないことに起因して、ナビゲーションセンサ30の検出値が変動し、これにより画像の濃度ムラが発生する場合があった。
ここで、従来のハンドヘルドプリンタでは、ナビゲーションセンサ30の処理周期と、制御部25~ナビセンサ30間の通信周期とが同期していないことに起因して、ナビゲーションセンサ30の検出値が変動し、これにより画像の濃度ムラが発生する場合があった。
図8は、ナビゲーションセンサ30の周期処理と検出値について説明する図である。図8は、ナビゲーションセンサ30の出力に大きな検出誤差が発生する仕組みを示している。
詳しくは、図8は、ナビゲーションセンサ30と、FPGA40における信号のタイミングについて、説明する図であり、図8において、(a)はナビセンサ処理周期とFPGAリードタイミングが同期している場合の図、(b)はナビセンサ処理周期とFPGAリードタイミングが非同期の場合の図である。
なお、下記の説明において、用語の短縮のため、ナビゲーションセンサ30を、ナビセンサ30と称することもある。また、下記でナビゲーションセンサ30と通信して検出値を取得する制御手段をFPGA40と示すが、図5に示すように制御手段は、ASICであってもよい。
上述の図5で説明したように、制御部25とは別に設けられる移動量検出手段の一例であるナビゲーションセンサ30は、移動量ΔX、ΔYを受信する。そして、制御部25内のFPGA40内のナビゲーションセンサI/F42は、ナビゲーションセンサ30と通信し、ナビゲーションセンサ30からの情報として移動量ΔX、ΔYを受信し、その値を内部レジスタに格納する。
ここで、ナビセンサ30はナビセンサ内の処理周期で、移動量を算出し外部からリードされるまで値を蓄積し、FPGA40によってリードされると、そのタイミングで値をクリアする仕組みとなっている。
ナビセンサ30のレジスタにナビセンサ処理周期毎に移動量をため込んで、蓄積して記憶しておく。ナビセンサ30のナビセンサ処理周期は、ナビセンサ30に内蔵されたクロック信号の周期に相当する。例えば、ナビセンサ処理周期は、10[KHz]程度である。
そして、ナビセンサ30の受信先のFPGA40は、リードタイミングで、ナビセンサ30のレジスタにアクセスして、データを読み取る。FPGAリードタイミングとは、ナビセンサ30の信号を受信するFPGA40におけるリードタイミング、即ち、FPGA40に内蔵されたクロック信号のタイミングに相当する。
ナビセンサ処理周期とリードタイミングが同期している場合であれば、図8(a)で示すように、リード周期間で常に同じ回数ナビセンサ処理を実施後、センサ情報がリードされる。図8(a)では、リードタイミングの繰り返し周期は、ナビセンサ処理周期の約5倍である例を示している。
一方、非同期の場合、即ち、ナビセンサ処理周期と、FPGA40が異なるクロックで動作している場合、リード周期間でのナビセンサ処理回数が一定とはならないため、ハンドヘルドプリンタ1が定速で移動していても、図8(b)の丸で示すように、処理回数が少ない部分が発生してしまう。
つまり、図8(b)に示す通り、ナビセンサ処理周期と通信周期との非同期によって、ナビセンサ検出値が大きく下がることが分かっている。
<スパイク波形の判定方法>
図9は、実際のナビゲーションセンサ30の出力波形の一例を示す図である。図9の横軸は時間を示し、縦軸はナビセンサ出力を示す。ナビセンサ出力の波形を実線で示している。
図9は、実際のナビゲーションセンサ30の出力波形の一例を示す図である。図9の横軸は時間を示し、縦軸はナビセンサ出力を示す。ナビセンサ出力の波形を実線で示している。
図9の例では、ナビセンサ30のフレームレートが2kHz弱であり、通信周期が1msecである。この条件では、図9に点線円で示すように、センサ出力が周期的に前後の値の半分程度の値になる。図9に点線円で示すナビセンサ出力が大きく変動する箇所(すなわちスパイク波形)は、図8(b)の丸で示した部分と対応する。
このようなスパイク波形が発生することが、ナビゲーションセンサ30の検出値が変動する要因である。したがって、スパイク波形を検出できれば、検出したスパイク波形を抑制するように補正でき、これによりナビセンサ出力の変動を抑制できると考えられる。
図9の例では、過去5回のセンサ出力を平均したものの±25%を判定閾値(図中の波形上側と下側の2本の点線)としている。この判定閾値を越えた場合に、ナビセンサ出力が大きく変動している箇所(スパイク波形)を検出可能であることがわかる。
<センサ処理周波数とセンサ補正値>
センサ処理周波数は、スパイク波形の周期を測定することで、以下の(8)式に従って算出可能である。
スパイク周波数 = |センサ処理周波数-2×通信周波数| ・・・(8)
センサ処理周波数は、スパイク波形の周期を測定することで、以下の(8)式に従って算出可能である。
スパイク周波数 = |センサ処理周波数-2×通信周波数| ・・・(8)
上記の(8)式は、周知のうなりの周波数の計算と同じ手法である。センサ処理周波数3kHzの場合には「3×通信周波数」とし、センサ処理周波数が4kHzの場合には「4×通信周波数」と、センサ処理周波数に合わせて、通信周波数を逓倍する。
なお、上述の(8)式の数値「2」や、センサ処理周波数3kHzの場合の「3」や、4kHzの場合の「4」は、後述の(14)式以降ではパラメータ「k」として一般化されている。
上記の(8)式より、センサ処理周波数は以下の(9)式で表せる。
センサ処理周波数 = 2×通信周波数 ± スパイク周波数 ・・・(9)
センサ処理周波数 = 2×通信周波数 ± スパイク周波数 ・・・(9)
上記の(9)式の右辺におけるスパイク周波数の正負は、スパイクの方向(上向き・下向き)によってきまる。例えばスパイクの方向が上手の場合(下向き)の場合は、スパイク周波数は負となる。
センサ処理周期と通信周期から、以下の(10)式、(11)式により補正値を算出する。
補正値1= センサ処理周波数/(2×通信周波数) ・・・(10)
補正値2 = A/B ・・・(11)
ここで、Aは、"センサ処理周波数/通信周波数"の小数以下を切り上げた値である。Bは、"センサ処理周波数/通信周波数"の小数以下を切り捨てた値である。
補正値1= センサ処理周波数/(2×通信周波数) ・・・(10)
補正値2 = A/B ・・・(11)
ここで、Aは、"センサ処理周波数/通信周波数"の小数以下を切り上げた値である。Bは、"センサ処理周波数/通信周波数"の小数以下を切り捨てた値である。
<センサ入力補正方法>
以下の(12)式、(13)式のように、スパイク誤差の有無によって、補正方法を変更する。
・スパイク誤差:無 => センサ出力 * 補正値1 ・・・(12)
・スパイク誤差:有 => センサ出力 * 補正値1 ×補正値2 ・・・(13)
以下の(12)式、(13)式のように、スパイク誤差の有無によって、補正方法を変更する。
・スパイク誤差:無 => センサ出力 * 補正値1 ・・・(12)
・スパイク誤差:有 => センサ出力 * 補正値1 ×補正値2 ・・・(13)
ここで「スパイク誤差が無い」とは、図9などに示したナビセンサ出力波形のうち、スパイク波形を除く部分(第1部分)を意味する。また、「スパイク誤差が有る」とは、ナビセンサ出力波形のスパイク波形を含む部分(第2部分)を意味する。
上記(12)式のようにスパイク誤差の無い第1部分では、補正値1のみをセンサ出力に乗じることによって、第1部分の波形をスパイク波形の突出方向に増加または減少させる補正となる。また、上記(13)式のように、スパイク誤差の有る第2部分では、補正値1に加えて補正値2もセンサ出力に乗じることによって、スパイク波形を含む第2部分を平滑化させる補正となる。この結果、第1部分と第2部分との偏差が減少し、ナビセンサ出力波形がスパイク波形を抑制されたものに補正される。
例えば、通信周波数が1000Hzであり、ナビセンサ処理周波数が1900Hzの場合を考える。このとき、「センサ処理周波数/通信周波数」は1.9となる。上記(11)式のAは「2」、Bは「1」となるので、補正値2は「2」となる。図9に点線円で示すスパイク波形の部分において、(13)式でセンサ出力にこの補正値2を乗じることで、センサ出力が2倍に増大され、スパイク波形以外の部分に近づくように波形が平滑化される。
<補正値計算タイミング>
図10は、ナビゲーションセンサ30の補正値計算タイミングを説明する図である。補正値計算は、図10に示す、助走期間中に計算する。
図10は、ナビゲーションセンサ30の補正値計算タイミングを説明する図である。補正値計算は、図10に示す、助走期間中に計算する。
ハンディプリンタでの印刷は、図10に示す助走期間中はインク吐出を行なわない。この助走期間中に十分な情報量(スパイク周期の取得)がある場合、助走期間中に補正値を決定し、以降のインク吐出中のセンサ出力補正を行う。
また、連続で印刷する場合は、前回印刷で算出した補正値を使用することもできる。
図11は、ナビゲーションセンサ30の補正処理の一例を示す図である。図12は、図11中の立ち上がり区間を拡大視した図である。図13は、図11中の定速区間を拡大視した図である。図14は、図11中の減速区間を拡大視した図である。図11~図14では、補正前のナビセンサ出力波形を点線で示し、補正後の波形を実線で示す。
上記の補正手法によって、図11~図14に示すように、ナビセンサ出力の立ち上がり後の定速期間において、スパイク波形を抑制する補正が行われることが確認できる。
<ナビセンサ出力変動周波数が早い場合>
上述の例は、ナビセンサ出力変動周波数(スパイク波形周波数)が低い場合(通信周波数に比べ小さい)に、適応可能である。ただし、スパイク周波数が「通信周波数×0.5」に近づくほど、ナビセンサ出力の変動をとらえにくくなる。
上述の例は、ナビセンサ出力変動周波数(スパイク波形周波数)が低い場合(通信周波数に比べ小さい)に、適応可能である。ただし、スパイク周波数が「通信周波数×0.5」に近づくほど、ナビセンサ出力の変動をとらえにくくなる。
図15は、ナビゲーションセンサ30の出力変動周波数が通信周波数×0.5の場合の波形の一例を示す図である。図20では、ナビセンサ出力を実線で示し、ローパスフィルタリング(LPF)処理後の波形を点線で示す。
図15に示すナビセンサ出力では、ほぼ一定の振幅で振動する波形となっている。このため、図9を参照して説明したように閾値を越えた場合にスパイク波形と判定する手法をとると、通常の波形をスパイク波形と誤って判別してしまう傾向が高くなると考えられる。したがって、図15に示すようなケースでは、一般的なLPFでの処理の方が向いており、変動周波数によって補正方法を切り替える方法が考えられる。
[ナビゲーションセンサの出力補正の手順]
図16~図21を参照して、本実施形態におけるナビゲーションセンサ30の出力補正の具体的な手順について説明する。
図16~図21を参照して、本実施形態におけるナビゲーションセンサ30の出力補正の具体的な手順について説明する。
図16は、ステップS110の処理のブロック図である。図16に示すブロック図は、ステップS110を実施する位置算出回路34の機能ブロックである。図6で示す通り、この処理は、ステップS108のセンサリード時間周期(以降、通信周波数と呼ぶ)で処理が実行される。
図16に示すように、位置算出回路34は、信号補正部341と、現在位置算出部342と、を備える。
信号補正部341は、ナビゲーションセンサ30の実際の出力値ΔX、ΔYが入力され、これらの値をスパイク波形が低減されるように補正して、補正後の検出値ΔX´´、ΔY´´を出力する。
現在位置算出部342は、信号補正部341が出力した補正後の検出値ΔX´´、ΔY´´と、角速度ωと、1ステップ前の現在位置情報が入力され、ナビゲーションセンサの現在位置X、Yを出力する。
図17は、図16中の信号補正部341のブロック図である。図17に示すように、信号補正部341は、信号処理部3411と、速度判定部3412と、変動判定部3413と、変動周期算出部3414と、補正係数算出部3415と、補正部3416と、を備える。
信号処理部3411は、ナビゲーションセンサ30の実際の出力値ΔX、ΔYが入力される。信号処理部3411は、ΔX、ΔYの二乗平方根を計算し、この計算結果をΔRMSとして出力する。また、ΔX、ΔY、ΔRMSの移動平均または、LPF処理を行い、ΔX´、ΔY´、ΔRMS´として出力する。
速度判定部3412は、信号処理部3411が算出したΔX´、ΔY´、ΔRMS´が入力され、これらの入力値に基づき「速度フラグ」を出力する。具体的には、入力値の絶対値が所定の「閾値1」以上の時、速度フラグ:ONにする。それ以外の時は、速度フラグ:OFFとする。「閾値1」は、例えば制御部25内のメモリに保存された値を使用する。速度フラグは、ハンドヘルドプリンタ1の移動速度が所定速度以上の場合に補正処理を実施させるためのパラメータである。なお、ΔX´、ΔY´、ΔRMS´の少なくとも1つが「閾値1」以上のときに速度フラグをONにする構成でもよい。
変動判定部3413は、スパイク波形の発生有無を判定し、スパイク波形が発生した場合には変動方向も判定する。変動判定部3413は、ナビゲーションセンサ30の実際の出力値ΔX、ΔYと、信号処理部3411が算出したΔX´、ΔY´、ΔRMS´、ΔRMSと、速度判定部3412が出力した速度フラグとが入力される。これらの入力値に基づき「変動フラグ」と「変動方向」を出力する。
具体的には、ΔX/ΔX´を算出し、所定の「閾値2」未満の場合、「変動フラグ:ON、変動方向:小」とする。これは、下側スパイク発生(極端に減少するスパイク波形)を意味する。つまり、「閾値2」は、図9に点線で示した2本の判定閾値のうち検出値より下側の方の判定閾値に相当する。ΔX/ΔX´が閾値2以上の場合にはスパイク発生していないと判定して「変動フラグ:OFF」となる。
一方、ΔX/ΔX´が所定の「閾値3」超の場合、「変動フラグ:ON、 変動方向:大」、とする。これは、上側スパイク発生(極端に増大するスパイク波形)を意味する。つまり、「閾値3」は、上述の「閾値2」より大きい値で設定され、図9に点線で示した2本の判定閾値のうち検出値より上側の方の判定閾値に相当する。ΔX/ΔX´が閾値3以下の場合にはスパイク発生していないと判定して「変動フラグ:OFF」となる。
また、速度フラグ:OFFの時は、変動フラグ:OFFとする。
「閾値2」、「閾値3」は、メモリに保存された値を使用する。なお、判定に使用する信号は、ΔY、ΔY´またはΔRMS、ΔRMS´でもよい。
変動周期算出部3414は、速度判定部3412が出力した速度フラグと、変動判定部3413が出力した変動フラグとが入力され、これらの入力値に基づき「変動周期´」を出力する。「変動周期」とはスパイク波形の発生周期(スパイク周期)に相当し、「変動周期´」とはスパイク周期の平均値を示す。
図18は、変動周期算出部3414の処理のフローチャートである。
ステップS201にて、速度フラグがONの場合には(S201のYes)ステップS202に進む。速度フラグがOFFの場合(S202のNo)には、周期カウンタが0にセットされ(S209)、変動回数カウンタも0にセットされて(S210)、本制御フローを終了する。
ステップS202にて、変動フラグがONの場合には(S202のYes)、変動回数カウンタが1加算され(S203)、ステップS204に進む。変動フラグがOFFの場合(S202のNo)には、周期カウンタが1加算されて(S211)、本制御フローを終了する。
ステップS204にて、変動回数カウンタが1より大きい場合(S204のYes)には、周期カウンタ値がメモリに保存されて(S205)、ステップS206に進む。変動回数カウンタが1以下の場合(S204のNo)には、周期カウンタが0にセットされて(S208)本制御フローを終了する。変動の初回検知時では、変動周期を職亭できないので、初回はメモリへの保存はスルーする。
ステップS206では、変動周期の履歴数が所定の「閾値4」以上の場合(S206のYes)にはステップS207に進み、メモリに保存した、周期カウンタの値から平均値(変動周期´)が算出される。既に平均値がメモリに保存されている場合には、ステップS205にて保存された値を用いて更新される。変動周期の測定結果が、所定個数(閾値4)そろったところで、過去データを平均して、変動周期´を決定する。なお、「閾値4」は、メモリに保存された値を使用する。
ステップS207の後は、周期カウンタが0にセットされて(S208)本制御フローを終了する。
変動周期算出部3414の処理を纏めると以下のとおりである。
・変動フラグ:ONの時、前回変動フラグ:ONからの変動周期を算出する。
・算出した変動周期の過去データは履歴として残す。
・変動周期の履歴数が、所定の「閾値4」以上となったとき、履歴から変動周期の平均値(変動周期´)を算出する。
・変動周期の履歴数が「閾値4」未満の場合、変動周期´は初期値のままとする。
・速度フラグ:OFFの時、計測中の周期のカウンタをクリアする。
・新規印刷JOB実行(図6のU103)ごとに変動周期の履歴を初期化しても良いし、そのまま残しても良い。
・変動フラグ:ONの時、前回変動フラグ:ONからの変動周期を算出する。
・算出した変動周期の過去データは履歴として残す。
・変動周期の履歴数が、所定の「閾値4」以上となったとき、履歴から変動周期の平均値(変動周期´)を算出する。
・変動周期の履歴数が「閾値4」未満の場合、変動周期´は初期値のままとする。
・速度フラグ:OFFの時、計測中の周期のカウンタをクリアする。
・新規印刷JOB実行(図6のU103)ごとに変動周期の履歴を初期化しても良いし、そのまま残しても良い。
補正係数算出部3415は、変動判定部3413が出力した変動方向と、変動周期算出部3414が出力した変動周期の平均値(変動周期')とが入力され、これらの入力値に基づき「補正係数1」「補正係数2」「補正モード」を出力する。
図19は、図16中の補正係数算出部3415のブロック図である。補正係数算出部3415は、ナビセンサ処理周波数算出部3417と、補正係数決定部3418と、補正モード決定部3419と、を有する。
補正係数算出部3415の処理の前提条件としては、おおよそのナビセンサ処理周波数がわかっていることが前提である。つまり、下記の(14)式が成り立つk(正の整数)が既知であることが前提である。kは、通信周波数に対するナビセンサ処理周波数の相対的な大きさを規定するパラメータ、といえる。
(k-0.5)×通信周波数 ≦ ナビセンサ処理周波数 ≦ (k+0.5)×通信周波数
・・・(14)
(k-0.5)×通信周波数 ≦ ナビセンサ処理周波数 ≦ (k+0.5)×通信周波数
・・・(14)
ナビセンサ処理周波数算出部3417によるナビセンサ処理周波数の概要は下記のとおりである。
変動周期は、うなりと同様の原理で発生する。「うなり」とは、振動数(または周波数)がわずかに異なる2つの波が干渉して、振幅がゆっくり周期的に変わる合成波を生ずる現象である。そのため、ナビセンサ処理周波数(F1)と通信周波数(F2)とすると、変動周期(T)は以下の(15)式の関係が成り立つ。
1/T= |F1 - k×F2| ・・・(15)
1/T= |F1 - k×F2| ・・・(15)
ナビセンサ処理周波数(F1)は、上記(15)式を変形し、下記の(16)式で算出できる。
F1 = k×F2 ±1/T ・・・(16)
F1 = k×F2 ±1/T ・・・(16)
上記の(16)式の右辺第2項の符号は、入力:変動方向で決定する。すなわち(16)式は、変動方向に応じて下記の(17)式、(18)式で表される。
変動方向:小 => F1 = k×F2 - 1/T ・・・(17)
変動方向:大 => F1 = k×F2 + 1/T ・・・(18)
変動方向:小 => F1 = k×F2 - 1/T ・・・(17)
変動方向:大 => F1 = k×F2 + 1/T ・・・(18)
ここで、「変動方向:小」とは、下側スパイク(極端に減少するスパイク波形)を意味する。また、「変動方向:大」とは、上側スパイク(極端に増大するスパイク波形)を意味する。
補正係数決定部3418による補正係数の算出方法の概要は下記のとおりである。
補正係数1、2は、下記の(19)式、(20)式で算出される。
補正係数1 = k/(k±1) ・・・(19)
補正係数2 = ナビセンサ処理周波数/(k×通信周波数) ・・・(20)
補正係数1 = k/(k±1) ・・・(19)
補正係数2 = ナビセンサ処理周波数/(k×通信周波数) ・・・(20)
ここで、(19)式の右辺の補正係数1の±1は、ナビセンサ処理周波数と通信周波数の関係により下記のとおり決定する。
・ナビセンサ処理周波数 <= k×通信周波数:-1
・k×通信周波数 <=ナビセンサ処理周波数:+1
・ナビセンサ処理周波数 <= k×通信周波数:-1
・k×通信周波数 <=ナビセンサ処理周波数:+1
また、ナビセンサ処理周波数 <= 通信周波数の場合、補正係数1は0とする。通信処理周波数より、ナビセンサ処理周波数が低い場合、通信毎に読まれるナビセンサの処理回数は1か0になるため、スパイク発生時のΔX,ΔYは0となる。ΔX=0となると、速度フラグ、変動フラグ、及び補正モードがすべてONの場合に実施される通常のスパイク発生時の補正方法(下記の表1に示す「ΔX'' =ΔX*補正係数1*補正係数2」)を適用できない。このケースを区別するために、本実施形態ではナビセンサ処理周波数 <= 通信周波数の場合に補正係数1を0としている。なお、この場合の補正方法は、下記の表1に記載の通り、「ΔX'' = ΔX_1*補正係数2」となる。ここで、"ΔX_1"は、前回周期の"ΔX"を意味する。
ここで、(19)式の「補正係数1」とは、上述の(11)式の「補正値2」と実質的に同一のパラメータである。また、(20)式の「補正係数2」とは、上述の(10)式の「補正値1」と実質的に同一のパラメータである。
図20は、補正係数決定部3418の処理のフローチャートである。図20は、上述の補正係数決定部3418による補正係数の算出手法をフローチャート形式で表している。
ステップS301では、上記の(20)式を用いて補正係数2が算出される。
ステップS302にて、ナビセンサ処理周波数が通信周波数のk倍以下の場合(S302のYes)にはステップS303に進む。ナビセンサ処理周波数が通信周波数のk倍より大きい場合(S302のNo)には、ステップS305にて補正係数1が上記の(19)式を「k/(k+1)」として算出され、本制御フローを終了する。
ステップS303にて、パラメータkが1より大きい場合(S303のYes)には、ステップS304にて補正係数1が上記の(19)式を「k/(k-1)」として算出され、本制御フローを終了する。パラメータkが1の場合(S303のNo)には、ステップS306にて補正係数1が0と設定されて処理を終了する。
補正モード決定部3419による補正モードの決定方法の概要は以下のとおりである。
以下のように、補正モードを決定する。
(i)初期状態及び、補正係数未算出(補正係数2=0)時
補正モード = OFF
(ii)補正係数算出済み(補正係数2≠0の時)、且つ、「閾値5 ≦ナビセンサ処理周波数/(k×通信周波数)≦ 閾値6」が成り立つとき
補正モード = ON
(iii)補正係数算出済み(補正係数2≠0の時)、且つ、「閾値5 ≦ナビセンサ処理周波数/(k×通信周波数) ≦ 閾値6」が成り立たないとき
補正モード = LPF
(i)初期状態及び、補正係数未算出(補正係数2=0)時
補正モード = OFF
(ii)補正係数算出済み(補正係数2≠0の時)、且つ、「閾値5 ≦ナビセンサ処理周波数/(k×通信周波数)≦ 閾値6」が成り立つとき
補正モード = ON
(iii)補正係数算出済み(補正係数2≠0の時)、且つ、「閾値5 ≦ナビセンサ処理周波数/(k×通信周波数) ≦ 閾値6」が成り立たないとき
補正モード = LPF
なお、「閾値5」「閾値6」は、メモリに保存された値を使用する。
図21は、補正モード決定部3419の処理のフローチャートである。図20は、上述の補正モード決定部3419による補正モードの決定手法をフローチャート形式で表している。
ステップS401にて、補正係数2が0でない場合(S401のYes)にはステップS402に進む。補正係数2が0の場合(S401のNo)には、初期状態か、補正係数未算出の状態であり、補正不可とみなし、ステップS406にて補正モードがOFFに設定されて本制御フローを終了する。
ステップS402にて「ナビセンサ処理周波数/(k×通信周波数)」が所定の「閾値5」以上と判定され(S402のYes)、かつ、ステップS403にて「ナビセンサ処理周波数/(k×通信周波数)」が所定の「閾値6」以下と判定された場合(S403のYes)には、ナビセンサ処理周波数が適切な範囲に含まれており、補正係数を用いた補正が可能とみなし、ステップS404にて補正モードがONに設定されて制御フローを終了する。
一方、ステップS402にて「ナビセンサ処理周波数/(k×通信周波数)」が所定の「閾値5」より小さいと判定された場合(S402のNo)、または、ステップS403にて「ナビセンサ処理周波数/(k×通信周波数)」が所定の「閾値6」より大きいと判定された場合(S403のNo)には、ナビセンサ処理周波数が適切な範囲から外れており、補正係数を用いた補正は不可であり、代わりにローパスフィルタリング(LPF)による処理が適切とみなし、ステップS404にて補正モードがLPFに設定されて制御フローを終了する。
補正部3416は、補正係数算出部3415が出力した補正係数1、補正係数2、補正モードと、速度判定部3412が出力した速度フラグと、変動判定部3413が出力した変動フラグとが入力され、これらの入力値に基づき、ナビゲーションセンサ30の検出値の補正値ΔX´´、ΔY´´を出力する。
なお、上記の表1において、"ΔX_1、ΔY_1"は、前回周期の"ΔX、ΔY"を意味する。また、LPF(X)は、Xにローパスフィルタ処理を行うことを意味する。
以上のように、本実施形態に係るハンドヘルドプリンタ1は、ハンドヘルドプリンタ1の移動量を検出するナビゲーションセンサ30と、スパイク波形が含まれるナビゲーションセンサ30の検出値からスパイク波形の発生周期を示す変動周期を算出する変動周期算出部3414と、変動周期を用いてナビゲーションセンサ30の処理周波数を算出するナビセンサ処理周波数算出部3417と、処理周波数を用いてスパイク波形を低減させるための補正係数を決定する補正係数決定部3418と、補正係数を用いてナビゲーションセンサ30の検出値を補正する補正部3416と、補正部3416により補正された検出値に基づきハンドヘルドプリンタ1の現在位置を算出する制御部(位置算出回路34)と、を備える。
この構成により、ナビセンサ処理周期と、制御部~ナビセンサ間の通信周期が同期していないことに起因するスパイク波形を平滑化するよう補正できる。これによりナビセンサの検出誤差を低減でき、ハンドヘルドプリンタの画像の濃度ムラを抑制できる。
また、本実施形態において、補正係数は、ナビゲーションセンサ30の検出値のスパイク波形を除く第1部分をスパイク波形の突出方向に増加または減少させ、スパイク波形を含む第2部分を平滑化させる。この構成により、スパイク波形をより低減して、ナビセンサの検出誤差をより一層低減できる。
また、本実施形態において、処理周波数および補正係数の算出は、当該ハンドヘルドプリンタ1のインク吐出開始前の助走期間中に実施し、インク吐出中は、助走期間中に計算した補正係数を使用し検出値を補正する。この構成により、印刷実行中に補正処理の更新などによる印刷画像への影響を防止でき、印刷品質を向上できる。
また、本実施形態において、補正係数決定部が決定した補正係数を保存し、次回印刷時にも使用する構成としてもよい。この構成により、補正係数の更新の計算負荷を省略でき、より効率的な処理にできる。
また、本実施形態において、ハンドヘルドプリンタ1の移動速度が所定速度以下の場合に、補正部3416による処理を行わない構成としてもよい。低速度では、速度変動にスパイクがまぎれてしまい、間違ったセンサ処理周波数・補正値を計算する可能性がある。このため、補正部の機能を実施しないことで誤った補正出力を防止できる。
上記と同様の理由で、ハンドヘルドプリンタ1の移動速度が所定速度以下の場合に、変動周期算出部3414、処理周波数算出部3417、及び補正係数決定部3418による処理を行わない構成としてもよい。
また、本実施形態では、「ナビセンサ処理周波数/(k×通信周波数)」があらかじめ設定した範囲内に収まらないとき、補正部3416は、補正係数を用いた補正の代わりに、ナビゲーションセンサ30の検出値にローパスフィルタ処理を行う補正を実施する構成でもよい。図15を参照して説明したように、ナビセンサ出力変動周波数(スパイク波形周波数)が、「通信周波数×0.5」に近づくほど、変動をとらえにくくなり、間違ったセンサ処理周波数・補正値を計算する可能性があるためである。このようなケースでは、一般的なLPFでの処理の方がスパイク波形を低減させる処理には適しているので、補正手法を切り替えるのが好ましい。
以上、具体例を参照しつつ本実施形態について説明した。しかし、本開示はこれらの具体例に限定されるものではない。これら具体例に、当業者が適宜設計変更を加えたものも、本開示の特徴を備えている限り、本開示の範囲に包含される。前述した各具体例が備える各要素およびその配置、条件、形状などは、例示したものに限定されるわけではなく適宜変更することができる。前述した各具体例が備える各要素は、技術的な矛盾が生じない限り、適宜組み合わせを変えることができる。
1 ハンドヘルドプリンタ
30 ナビゲーションセンサ(移動量検出部)
3414 変動周期算出部
3417 ナビセンサ処理周波数算出部(処理周波数算出部)
3418 補正係数決定部
3416 補正部
25 制御部
30 ナビゲーションセンサ(移動量検出部)
3414 変動周期算出部
3417 ナビセンサ処理周波数算出部(処理周波数算出部)
3418 補正係数決定部
3416 補正部
25 制御部
Claims (7)
- 記録媒体上を移動しながら画像データに基づく画像を前記記録媒体に印刷するハンドヘルドプリンタであって、
当該ハンドヘルドプリンタの移動量を検出する移動量検出部と、
スパイク波形が含まれる前記移動量検出部の検出値から前記スパイク波形の発生周期を示す変動周期を算出する変動周期算出部と、
前記変動周期を用いて前記移動量検出部の処理周波数を算出する処理周波数算出部と、
前記処理周波数を用いて前記スパイク波形を低減させるための補正係数を決定する補正係数決定部と、
前記補正係数を用いて前記移動量検出部の前記検出値を補正する補正部と、
前記補正部により補正された前記検出値に基づき当該ハンドヘルドプリンタの現在位置を算出する制御部と、
を備えるハンドヘルドプリンタ。 - 前記補正係数は、前記移動量検出部の前記検出値の前記スパイク波形を除く第1部分を前記スパイク波形の突出方向に増加または減少させ、前記スパイク波形を含む第2部分を平滑化させる、
請求項1に記載のハンドヘルドプリンタ。 - 前記処理周波数および前記補正係数の算出は、当該ハンドヘルドプリンタのインク吐出開始前の助走期間中に実施し、インク吐出中は、助走期間中に計算した前記補正係数を使用し前記検出値を補正する、
請求項1または2に記載のハンドヘルドプリンタ。 - 前記補正係数決定部が決定した前記補正係数を保存し、次回印刷時にも使用する、
請求項1~3のいずれか1項に記載のハンドヘルドプリンタ。 - 当該ハンドヘルドプリンタの移動速度が所定速度以下の場合に、前記補正部による処理を行わない、
請求項1~4のいずれか1項に記載のハンドヘルドプリンタ。 - 当該ハンドヘルドプリンタの移動速度が所定速度以下の場合に、前記変動周期算出部、前記処理周波数算出部、及び前記補正係数決定部による処理を行わない、
請求項5に記載のハンドヘルドプリンタ。 - 前記処理周波数を「ナビセンサ処理周波数」とし、前記移動量検出部と前記制御部との間の通信の周波数を「通信周波数」とし、kを整数とするとき、
「ナビセンサ処理周波数/(k×通信周波数)」があらかじめ設定した範囲内に収まらないとき、前記補正部は、前記補正係数を用いた補正の代わりに、前記移動量検出部の前記検出値にローパスフィルタ処理を行う補正を実施する、
請求項1~5のいずれか1項に記載のハンドヘルドプリンタ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021129538A JP2023023741A (ja) | 2021-08-06 | 2021-08-06 | ハンドヘルドプリンタ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021129538A JP2023023741A (ja) | 2021-08-06 | 2021-08-06 | ハンドヘルドプリンタ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023023741A true JP2023023741A (ja) | 2023-02-16 |
Family
ID=85203161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021129538A Pending JP2023023741A (ja) | 2021-08-06 | 2021-08-06 | ハンドヘルドプリンタ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023023741A (ja) |
-
2021
- 2021-08-06 JP JP2021129538A patent/JP2023023741A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6897167B2 (ja) | 液滴吐出装置、液滴吐出方法、プログラム | |
EP3415328B1 (en) | Computer program and droplet discharging system | |
US9352598B2 (en) | Printer, method of printing, and non-transitory recording medium | |
JP7120348B2 (ja) | 画像形成装置 | |
US9944089B2 (en) | Image forming apparatus and image forming method | |
US9744783B2 (en) | Liquid ejecting apparatus, liquid ejecting method, and non-transitory recording medium | |
JP2018144337A (ja) | 液滴吐出装置、液滴吐出方法、プログラム | |
JP2016112700A (ja) | ハンドヘルド記録装置 | |
JP2016215569A (ja) | 画像形成装置、空吐出方法 | |
JP2020040382A (ja) | 画像形成装置、制御方法及び制御プログラム | |
JP2017170634A (ja) | 位置検出装置、液滴吐出装置、プログラム | |
EP3482961A1 (en) | Droplet discharge apparatus, and droplet discharge method | |
JP7206997B2 (ja) | 画像形成装置、状態制御方法、プログラム | |
US11102373B2 (en) | Image forming apparatus, state control method, and non-transitory computer-readable storage medium | |
JP2023023741A (ja) | ハンドヘルドプリンタ | |
JP6627476B2 (ja) | 液体吐出装置、液体吐出方法、プログラム | |
JP6844145B2 (ja) | 位置検出装置、液滴吐出装置、プログラム、位置検出方法 | |
JP2017203694A (ja) | 位置検出装置、液滴吐出装置 | |
JP2020128079A (ja) | 画像形成装置、情報処理装置、画像形成方法、プログラム | |
JP7127564B2 (ja) | 位置情報調整装置、該位置情報調整装置を含むハンディ型液滴吐出装置、ハンディ装置における位置情報調整方法、及びハンディ装置における位置情報調整プログラム | |
JP7218598B2 (ja) | 画像記録装置、画像記録方法およびプログラム | |
JP7206974B2 (ja) | 液体吐出装置、液体吐出方法、及びプログラム | |
JP2023005120A (ja) | プログラム及び画像形成方法 | |
JP2022056896A (ja) | ハンドヘルドプリンタ及び印刷ガイド出力プログラム | |
JP2022085753A (ja) | 画像形成装置、移動案内部材及びプログラム |