以下、図面を参照して発明を実施するための形態について説明する。各図面において、同一構成部分には同一符号を付し、重複した説明を省略する場合がある。
[第1の実施形態]
(サーマルプリンタの構成)
図1は、第1の実施形態におけるサーマルプリンタ100の概略構成を例示する図である。
図1に示されるように、サーマルプリンタ100は、MCU(Micro Control Unit)10、RAM(Random access Memory)11、サーミスタ12、シフトレジスタ14、ラッチレジスタ16、電源17、分圧回路18、IC1~IC640、発熱体R1~R640を有する。
発熱体R1~R640は、サーマルヘッドに、主走査方向に一列に並ぶように設けられている。各発熱体R1~R640は、印加されるエネルギーの大きさに応じて発熱し、感熱紙等の記録媒体を加熱して画像を記録媒体上に印刷する。本実施形態におけるサーマルプリンタ100は、発熱体R1~R640により、印刷ラインごとに640ドットを記録媒体に印刷できる。
発熱体R1~R640は、印刷領域に応じて分割された印刷ブロックごとに制御される。本実施形態では、160個の発熱体ごとに、発熱体R1~R160、発熱体R161~R320、発熱体R321~発熱体480、発熱体R481~R640の4つの印刷ブロックに分けられている。なお、サーマルプリンタ100に設けられる発熱体の数、印刷ブロックの数等の構成は、本実施形態に例示される構成に限られるものではない。
MCU10は、制御手段の一例であり、印刷する画像の階調に応じて発熱体R1~R640に印加するエネルギーを設定し、各種信号をシフトレジスタ14、ラッチレジスタ16及びIC1~IC640に送信する。シフトレジスタ14、ラッチレジスタ16、IC1~IC640及び電源17は、発熱体R1~R640にエネルギーを印加するエネルギー印加手段の一例である。
MCU10は、サーマルプリンタ100に入力された画像データ及びRAM11に記憶されている階調テーブルに基づいて発熱体を制御するDI信号を生成し、生成したDI信号をクロック同期式シリアル通信にてシフトレジスタ14に送信する。また、MCU10は、シフトレジスタ14への1印刷ライン分のDI信号の送信が完了すると、/LAT信号を送信して、シフトレジスタ14内のデータをラッチレジスタ16にラッチする。
RAM11は、記憶手段の一例であり、階調に対応するエネルギーが設定された階調テーブル等を記憶する。
シフトレジスタ14は、640ビットのデータを記憶するものであり、各発熱体R1~R640に対応するデータ領域を有する。シフトレジスタ14の各ビットは何れかの発熱体に対応しており、ビット0は発熱体R1に、ビット639は発熱体R640に対応する。シフトレジスタ14に記憶されるデータは発熱体を制御するデータであり、ビットが1である場合には対応する発熱体がオン、ビットが0である場合には対応する発熱体がオフとなる。
ラッチレジスタ16は、シフトレジスタ14と同様に、各発熱体R1~R640に対応するデータ領域を有する。ラッチレジスタ16は、MCU10から/LAT信号を受信し、シフトレジスタ14から送信される信号をラッチする。ラッチレジスタ16にラッチされた信号は、各IC1~IC640の入力端子に入力される。
IC1~IC640は、各発熱体R1~R640に対応して設けられ、それぞれ発熱体R1~R640の一端に接続されている。IC1~IC640は、STB信号のオンオフによってそのオンオフが制御され、ラッチレジスタ16からの信号が1で、且つMCU10から送信されるSTB信号がオンの場合にオンになり、対応する発熱体R1~R640に通電する。なお、各発熱体R1~R640の通電時間は、STB信号がオンとなっている時間により制御される。通電時間が長いほど、各発熱体R1~R640に印加されるエネルギーが大きくなる。
MCU10は、発熱体R1~R640の印刷ブロックごとにSTB信号を送信する。MCU10は、IC1~IC160にSTB1信号、IC161~IC320にSTB2信号、IC321~IC480にSTB3信号、IC481~IC640にSTB4信号を送信し、印刷ブロックごとに発熱体R1~R640を制御する。
電源17は、発熱体R1~R640に接続され、発熱体R1~R640に電圧Vを印加する。MCU10は、分圧回路18によって分圧された電圧Vinに基づいて、電源17から発熱体R1~R640に印加されている電圧Vを求める。サーミスタ12は、温度検出手段の一例であり、発熱体R1~R640が設けられているサーマルヘッドの温度を測定し、測定値TをMCU10に送信する。
(階調テーブル)
次に、サーマルプリンタ100において発熱体R1~R640に印加するエネルギーの制御に用いられる階調テーブルについて説明する。
画像のグラデーション表現を滑らかにするために、白から黒までのグレースケールを反射率に応じて分割する。ここで、図2に示されるように反射率と網点面積率とは比例関係にある。網点面積率と光学濃度との関係はMurray-Davies式で表され、用紙の濃度D0、飽和濃度Ds、印字部濃度Dtとすると、網点面積率Aは下式(1)で表される。
そこで、本実施形態では、図3に示される発熱体に印加するエネルギーと画像の網点面積率との関係に基づいて、網点面積率の変化が一定になるように階調を定め、各階調に対応するエネルギーを設定する。図3は16階調の例であり、網点面積率0%(白)から網点面積率100%(黒)までの間を15等分したときの各階調値に対応するエネルギーが示されている。
図4は、16階調のときの、階調値とエネルギーとの関係を例示する図であり、図3から導き出される。なお、図4において、エネルギー「100%」は、図3において網点面積率が100%(階調値が最大)のときのエネルギーの値に対応する。サーマルプリンタ100では、このような画像の網点面積率と発熱体に印加するエネルギーとの関係に基づいて、階調値ごとに発熱体に印加するエネルギーが設定され、以下の表1に示される階調テーブルがRAM11に記憶される。階調値ごとのエネルギーを階調テーブルとして予め記憶することで、印字の際に階調値とエネルギーとの関数に基づいて印刷する階調に対応するエネルギーを算出する処理を省くことができる。
なお、表1は階調値0~15の16階調画像を印刷する場合の階調テーブルであるが、印刷する画像データの階調数に応じて、4階調の階調テーブル、32階調の階調テーブル等を同様に設定してRAM11に記憶させてもよい。表2は4階調の階調テーブルの例、表3は32階調の階調テーブルの例である。
MCU10は、印刷する画像データが16階調の場合には表1の階調テーブルに基づいて、各発熱体R1~R640に印加するエネルギーを設定する。MCU10は、各発熱体R1~R640への通電時間を変えることで、各発熱体R1~R640に印加するエネルギーの大きさを制御する。
図5は、実施形態におけるサーマルプリンタ100による印刷結果を例示する図である。図5(A)は、サーマルプリンタ100に入力される16階調の元画像データであり、階調値が網点面積率に比例するように16階調としたときのデータである。また、図5(B)は、図5(A)に対応する元画像データを、表1に示される階調テーブルに基づいて印刷した結果である。
図5(B)に示されるように、網点面積率に基づいて発熱体に印加するエネルギーを設定することで、高濃度領域の階調差が明確になり、入力された元画像データの階調を低濃度から高濃度まで再現できていることが分かる。また、各階調値間での反射率の差が等しく、滑らかなグラデーションを再現できており、階調再現性に優れた高品質画像が得られている。
図6は、図5(A)の元画像データ及び図5(B)の印刷画像における階調値と反射率との関係を示す図である。ここで、画像の黒(階調値15)の反射率を1%とすると、光学濃度は2.00となる。しかし、実際に印刷される黒画像は光学濃度2.00には達せず、飽和濃度が約1.15となり反射率は約7%になる(図6に示される印刷画像の階調値15の反射率)。そのため、反射率が7%の状態を、網点面積率100%とする。
また、図6に示されるように、その他の各階調においても、元画像データの反射率よりも印刷した画像の反射率が僅かに高くなっている。そこで、記録媒体上に再現可能な反射率の範囲内で、印刷画像における各階調の反射率が元画像データの反射率と等しくなるように、各階調のエネルギーを設定した階調テーブルを用いて印刷を行ってもよい。
図7は、この場合の階調値と反射率との関係を示す図面である。図7に示すように、印刷画像では、階調値が15の時の反射率(7%)は元画像データの反射率と異なっているが、階調値0~14については元画像データと印刷画像との反射率がほぼ等しくなっている。階調テーブルには、図7に示す反射率に対応するエネルギー値が、各階調値に対応づけて格納される。
図7に示す関係のように、元画像データの反射率と印刷画像の反射率とが一致するように設定された階調テーブルを用いることで、例えば印刷画像の階調値0~14の反射率が元画像データの反射率に一致するように印刷することが可能になる。図5(C)は、このような階調テーブルを用いたときの印刷画像を示す図面である。
このように、表1の階調テーブルを用いて印刷すると、図5(B)に示されるように、階調値0~15における印刷画像の階調再現性が向上する。また、表1の階調テーブルを補正した階調テーブルを用いて印刷することで、図5(C)に示されるように、記録媒体上に再現可能な反射率の範囲内で、各階調の反射率が元画像データの反射率に等しくなるように画像を印刷することが可能になる。
サーマルプリンタ100は、複数の階調テーブルをRAM11に記憶させ、ユーザから印刷に使用する階調テーブルの選択を受け付けてもよい。ユーザは、印刷する画像等に応じた階調テーブルを選ぶことで、所望の階調性を有する印刷画像を得ることが可能になる。
RAM11には、例えば、表1~表3に示されるように階調数が異なるテーブル、同じ階調数でも各階調値に設定されるエネルギーの大きさが異なるテーブル等が記憶される。また、マンセル明度と反射率との関係のように、階調値と画像の反射率とを対数関数で表し(図8)、人間の目に階調の変化が認識し易くなるように各階調値のエネルギーを設定した階調テーブルをRAM11に記憶させてもよい。MCU10は、例えばユーザによって選択された階調テーブルに基づいて、発熱体R1~R640に印加するエネルギーを制御する。
(データ転送)
次に、サーマルプリンタ100において、MCU10がシフトレジスタ14に発熱体のオンオフを制御する制御データを転送する方法について説明する。
MCU10は、サーマルプリンタ100に入力された画像データの階調に応じたエネルギーが発熱体R1~R640に印加されるように、シフトレジスタ14に発熱体の制御データを転送する。
例えば表1の階調テーブルを用いて16階調の印刷を実行する場合には、MCU10が印刷ラインごとに各階調値1~15に対応する制御データを15回転送することで、発熱体R1~R640のそれぞれに階調に応じたエネルギーを印加して画像を印刷できる。
しかし、印刷ラインごとに制御データを15回転送する方法では、MCU10からのデータ転送速度が5MHzの場合、1ライン当たりのデータ転送時間は128μsecとなる。このため、画像データの解像度が200dpi(8dot/mm)の場合には、印刷速度が60mm/secとなり、印刷速度が低下する。
そこで、本実施形態におけるサーマルプリンタ100では、以下で説明するデータ転送方法によってMCU10からのデータ転送回数を減らすことで、高速印刷に対応可能になっている。
例えば表4に示すように、0%から100%までのエネルギーを16等分して0~15のエネルギー段階値を設定し、4回のデータ転送で発熱体R1~R640のそれぞれに階調に応じたエネルギーを印加して16階調の画像を印刷できる。
MCU10は、例えば階調値0~15に対応するエネルギー段階値0~15のエネルギーを発熱体に印加するように、制御データを4回転送する。MCU10は、1回目にエネルギー53.3%のON又はOFF、2回目にエネルギー26.7%のON又はOFF、3回目にエネルギー13.3%のON又はOFF、4回目にエネルギー6.7%のON又はOFFを示す制御データを送信する。
例えば階調値7の画像を印刷する発熱体R1にはエネルギー段階値7の46.7%のエネルギーを印加するので、表4に示されるように、MCU10が、1回目OFF、2回目ON、3回目ON、4回目ONという制御データを送信する。このような制御データが送信されることで、発熱体R1には、エネルギー26.7%、エネルギー13.3%及びエネルギー6.7%の合計46.7%のエネルギーが印加される。
このように、異なる大きさのエネルギーのON又はOFFを示す制御データを4回転送することで、各発熱体R1~R640に階調に応じたエネルギーを印加するように制御できる。このようなデータ転送方法により、MCU10からシフトレジスタ14へのデータ転送回数を減らし、高速な印刷が可能になる。
ここで、表1の階調テーブルでは、階調ごとに設定されているエネルギーの階調値間の最小差は3.2%である。そこで、この最小差3.2%に対応できるようにするために、表5に示されるように、0%~100%のエネルギーを32(=25)段階に等分割し、段階値間のエネルギー差が約3.2%となるようにしたエネルギー段階値テーブルを設定する。
このようなエネルギー段階値テーブルを設けることで、表6に示すように、表1の各階調値に対応するエネルギーと表5のエネルギー段階値とを対応づけて階調エネルギーテーブルを設定できる。例えば、表1の階調値1のエネルギー25.9%は、表5のエネルギー段階値8のエネルギー25.8%に近く、階調値1のエネルギーとエネルギー段階値8とを対応づけることができる。このように階調値に対応づけたエネルギー段階値に設定されているエネルギーを用いることで、16階調の印刷を実行できる。
このように、例えば階調テーブルにおける各階調値のエネルギーと32(=2
5)段階のエネルギー段階値とを対応づけた場合には、MCU10が制御データを1印刷ラインにつき5回転送することで、16階調の画像を印刷できる。MCU10は、例えば以下の表6に例示される制御テーブルに基づいて制御データを5回転送し、各階調値に応じたエネルギーを発熱体R1~R640に印加させる。
表7に示されるように、MCU10は、画像データの階調に応じたエネルギーが印加されるように、1回目にエネルギー51.6%のON又はOFF、2回目にエネルギー25.8%のON又はOFF、3回目にエネルギー12.9%のON又はOFF、4回目にエネルギー6.5%のON又はOFF、5回目にエネルギー3.2%のON又はOFFを示す制御データを各発熱体R1~R640に送信する。
例えば階調値4の画像を印刷する発熱体R1にはエネルギー段階値12の38.7%のエネルギーを印加するので、表7に示されるように、MCU10が、1回目OFF、2回目ON、3回目ON、4回目OFF,5回目OFFという制御データを送信する。このような制御データが送信されることで、発熱体R1には、エネルギー25.8%及びエネルギー12.9%の合計38.7%のエネルギーが印加される。
このように、異なる大きさのエネルギーのON又はOFFを示す制御データを5回転送することで、各発熱体R1~R640に階調に応じたエネルギーを印加するように制御できる。サーマルプリンタ100では、このようなデータ転送方法により、MCU10からシフトレジスタ14へのデータ転送回数を減らし、高速印刷が可能になっている。
なお、表2に示される4階調の階調テーブルに基づいて印刷する場合には、8(=23)段階のエネルギー段階値テーブルを設定し、制御データを3回転送することで、画像データの階調に応じたエネルギーを各発熱体R1~R640に印加できる。また、表3に示される32階調の階調テーブルに基づいて画像を印刷する場合には、64(=26)段階のエネルギー段階値テーブルを設定し、制御データを6回転送することで、画像データの階調に応じたエネルギーを各発熱体R1~R640に印加できる。
このように、例えば2n(nは1以上の整数)階調の階調テーブルに基づいて画像を印刷する場合には、階調テーブルにおける階調値間のエネルギー最小差に基づいて2m(mはnより大きい整数)段階のエネルギー段階値テーブルを設定する。MCU10は、シフトレジスタ14に異なる大きさのエネルギーのON又はOFFを示す制御データをm回転送することで、画像データの階調に応じたエネルギーを各発熱体R1~R640に印加できる。
MCU10からシフトレジスタ14への制御データの転送回数と、各回におけるエネルギーの大きさとの関係を、以下の表8に例示する。
1回目に制御データを転送するエネルギーの大きさE
1は、下式(2)で求められる。
また、2回目以降のエネルギーの大きさは、前回のエネルギーの1/2とする。このように各回の発熱体に印加するエネルギーの大きさを設定し、各発熱体R1~R640に対応する制御データを転送することで、階調テーブルの各階調に対応するエネルギーを各発熱体R1~R640に印加できる。
一度にエネルギーを印加する発熱体の数が多いと消費電力が増大する可能性がある。そこで、MCU10は、発熱体R1~R160、発熱体R161~R320、発熱体R321~発熱体480、発熱体R481~R640の4つの印刷ブロックごとに制御データを転送する。
印刷ラインごとに5回制御データを転送する場合には、図9(A)に示されるように、MCU10は、転送回ごとに各発熱体R1~R640に対応する640bitの制御データを生成する(DATA1~DATA5)。また、MCU10は、N回目の制御データを各印刷ブロックに対応する160bitの制御データに分割する(DATA[N-1]~DATA[N-4])。
MCU10は、図9(B)に示されるように、印刷ブロックごとに1回目から5回目までの制御データを順次シフトレジスタ14に転送していく。図9(B)に示すように、MCU10は、発熱体R1~R160の印刷ブロックに対応するDATA1-1~DATA5-1の制御データを連続して転送する。次に、MCU10は発熱体R161~R320の印刷ブロックに対応するDATA1-2~DATA5-2の制御データを連続して順次転送する。また、発熱体R321~R480の印刷ブロックに対応するDATA1-3~DATA5-3の制御データを順次転送した後、発熱体R481~R640の印刷ブロックに対応するDATA1-4~DATA5-4の制御データを順次転送する。シフトレジスタ14に転送された制御データは、ラッチレジスタ16に転送されて、各発熱体に対応するICに送信される。
MCU10はまた、発熱体への通電タイミングに応じてSTB1信号~STB4信号を順次ICに送信する。これにより、各印刷ブロックの発熱体に通電させる。STB信号の入力時間によって発熱体への通電時間が制御され、発熱体に印加されるエネルギーが変化する。各STB信号は、表7に示される各回のエネルギーが発熱体に印加されるように、制御データに対応して入力時間を変えて連続して送信される。このように印刷ブロックごとに制御データを転送して発熱体にエネルギーを印加することで、1度に通電される発熱体の数を最大160個に抑え、消費電力を低減することが可能になる。
また、印刷ブロックごとに制御データを連続して転送することで、各印刷ブロックの発熱体への通電間隔(通電終了時点から次に通電開始するまでの時間)が一定となり、通電間隔がばらつくことによる印刷濃度の変動を抑制できる。
(エネルギー補正)
次に、サーマルプリンタ100において、各発熱体R1~R640に印加するエネルギーの大きさ及び補正方法について説明する。
発熱体に同じ大きさのエネルギーを印加しても、使用する記録媒体の種類によっては印刷画像の濃度が変動する。これは、記録媒体に応じて発色させるのに必要なエネルギーが異なるためである。そこで、本実施形態におけるサーマルプリンタ100では、使用する記録媒体の種類に応じて、各発熱体R1~R640に印加するエネルギーの最大値(最大階調値時に発熱体に印加されるエネルギーの大きさ)が設定される。記録媒体の種類に応じてエネルギーの最大値を設定することで、記録媒体の種類に関わらず一定品質の印刷が可能になる。
RAM11には、表9に示されるように、用紙Pの種類ごとにエネルギー最大値E0(P)が設定されたテーブルが記憶されている。例えば、用紙1の場合、最大階調値のときに発熱体に印加されるエネルギーE0は23.7mJ/mm2である。MCU10は、サーマルプリンタ100において記録媒体として使用される用紙Pの種類に応じて、エネルギー最大値E0(P)をRAM11から取得する。用紙Pの種類は、予めプリンタに設定する、あるいは印刷データと共にプリンタが受信する等の方法で認識できる。MCU10は、取得したエネルギー最大値E0(P)に基づいて、階調テーブルに設定されたエネルギーを各発熱体R1~R640に印加するようにシフトレジスタ14等に各種信号を送信する。
各発熱体R1~R640には、上記したように印刷ブロックごとにエネルギーが印加されるが、一度に通電する発熱体の数が多い場合には、電圧降下が発生する可能性がある。
そこで、サーマルプリンタ100では、電源17から発熱体に印加される電圧Vに応じて、発熱体に印加するエネルギーを補正する電圧補正値kv(V)が設定され、RAM11に記憶されている。図10は、電源電圧と電圧補正値との関係を例示する図面である。MCU10は、電源17から発熱体に印加されている電圧値Vに対応する電圧補正値kv(V)をRAM11から取得し、各発熱体R1~R640に印加するエネルギーを補正する。
ここで、サーマルプリンタ100では、1印刷ラインごとに複数回データ転送を行って発熱体に通電している。転送の各回で通電する発熱体の数が変化し、数が多い場合には電圧降下が発生する可能性がある。そこで、電圧補正は電源17の電圧の大きさによって補正するタイミングを変化させる必要がある。高電圧部分でのエネルギー変化はほとんど無いので、高電圧系では、100%のエネルギーを補正することで1印刷ライン分のエネルギーを補正する。また、バッテリー等の低電圧系では、電圧に対するエネルギーの変化が大きく、通電する発熱体の数に応じた補正が必要になるため、1通電ごとの補正とする。
また、同じ大きさのエネルギーを発熱体に印加しても、発熱体が設けられているサーマルヘッドの温度の影響により、エネルギー印加後の発熱体の温度が異なる可能性がある。このため、同じ濃度の画像データであっても、異なる濃度の画像が印刷されてしまう可能性がある。
そこで、サーマルプリンタ100では、サーミスタ12によって測定されるサーマルヘッドの温度Tに応じて、発熱体に印加するエネルギーを補正する温度補正値kT(T)が設定され、RAM11に記憶されている。図11は、サーマルヘッドの温度と温度補正値との関係を例示する図面である。温度が高い領域では温度補正値は小さく、温度が低くなるほど温度補正値が大きくなるように、温度補正値が設定される。MCU10は、サーミスタ12によって測定される温度Tに基づいてRAM11から温度補正値kT(T)を取得し、各発熱体R1~R640に印加するエネルギー100%の大きさを補正する。通電する度に発熱体の温度は上昇していくが、急激な変化ではないので、温度補正は、例えば1ms周期等の任意のタイミングで実行する。
また、同じ大きさのエネルギーを発熱体に印加しても、直前の印刷ラインの通電が終了してから次の印刷ラインの通電が開始されるまでの期間(以下「放熱時間t」という)によって発熱体が放熱して冷却される度合いが異なるため、エネルギー印加後の発熱体の温度が異なってくる可能性がある。このため、同じ濃度の画像データであっても、異なる濃度の画像が印刷されてしまう可能性がある。
そこで、サーマルプリンタ100では、発熱体の放熱時間tに応じて、発熱体に印加するエネルギーを補正する速度補正値kS(t)が設定され、RAM11に記憶されている。図12は、放熱時間と速度補正値との関係を例示する図面である。放熱時間が小さいほど速度補正値は小さく設定されている。MCU10は、1印刷ラインごとに放熱時間tに基づいてRAM11から速度補正値kS(t)を取得し、各発熱体R1~R640に印加するエネルギー100%の大きさを補正する。
また、同じ大きさのエネルギーを発熱体に印加しても、直前の印刷ラインへの通電の有無や、隣接する発熱体への通電の有無によって、エネルギー印加後の発熱体の温度が異なる可能性がある。このため、同じ濃度の画像データであっても、異なる濃度の画像が印刷されてしまう可能性がある。
そこで、サーマルプリンタ100では、印刷率Dに応じて発熱体に印加するエネルギーを補正する印刷率補正値kD(D)が設定され、RAM11に印刷率と印刷率補正値とが対応づけて記憶されている。図13は、印刷率と印刷率補正値との関係を例示する図面である。MCU10は、印刷率Dに基づいてRAM11から印刷率補正値kD(D)を取得し、各発熱体R1~R640に印加するエネルギーの大きさを補正する。
印刷率Dは、例えば図14に示されるように、黒丸で表される印刷ドットの副走査方向の1ライン前及び2ライン前であって、印刷ドットと主走査方向に同位置にあるドット及びこれらのドットの隣接位置にある破線で囲まれた6ドットから求める。図14の例では、斜線を付したドットが印刷されたドット、白丸が通電されていないドットであり、破線で囲まれた6ドットのうち4ドットが印刷されているため、印刷率Dは4/6×100=66.7%となる。
MCU10は、算出した印刷率Dに基づいてRAM11から印刷率補正値kD(D)を取得し、各発熱体R1~R640に印加するエネルギーをドットごとに補正する。なお、印刷率Dの算出方法は、上記で説明した方法に限られるものではない。
このように、本実施形態におけるサーマルプリンタ100では、電圧補正値kv(V)、温度補正値kT(T)、速度補正値kS(t)及び印刷率補正値kD(D)の少なくとも1つ以上を用いて発熱体に印加するエネルギーが補正される。発熱体に印加するエネルギーを補正することで、一定品質の画像を印刷することが可能になる。
(印刷処理)
次に、サーマルプリンタ100における印刷処理について説明する。
〔画像データ処理〕
図15は、画像データ処理のフローチャートを例示する図である。サーマルプリンタ100に画像データが入力されると、図15に示される画像データ処理が実行される。
まずS101にて、MCU10が、RAM11に記憶されているエネルギーテーブル(表9)から印刷する用紙に対応するエネルギー最大値E0(P)を取得する。次に、画像データの印刷ライン数Lpに応じて、S102からS109までの処理を繰り返し実行する。
MCU10は、印刷ラインに含まれる印刷ドット数に応じて、1印刷ラインごとに、S103からS108までの処理を繰り返し実行する。本実施形態に係るサーマルプリンタ100は、1印刷ラインに640ドットが含まれるため、S103からS108までの処理が640回繰り返される。なお、図15ではドットごとに算出される値を扱うためS103からS108までの処理を640回繰り返すが、このような処理を行わなくてもよい場合には発熱体数分の処理を繰り返さなくてもよい。
S104では、MCU10は、各発熱体について、印刷ドットの直前の2印刷ラインの印刷率Dを算出する。次にS105にて、MCU10がRAM11から算出した印刷率Dに対応する印刷率補正値kD(D)を取得する。
S106では、MCU10がS105で取得した印刷率補正値kD(D)に基づいて、印刷ドットの階調値を補正する。印刷ドットの階調値が9で、印刷率補正値kD(D)が110%の場合には、MCU10は、その印刷ドットの階調値を10(≒9×1.1)に補正する。
S107では、MCU10が、RAM11に記憶されている階調エネルギーテーブル(表6)から、S106で補正された階調値に対応するエネルギー段階値を取得する。例えば印刷ドットの補正後の階調値が10の場合には、エネルギー段階値は18となる。
以上で説明した画像データ処理では、S104からS107までの処理を1印刷ラインの各ドットについて行い、S103からS108までの処理を印刷ライン分行うことにより、MCU10が印刷する画像データの全印刷ドットに対応するエネルギー段階値を取得する。
〔印刷処理〕
図16は、印刷処理のフローチャートを例示する図である。MCU10は、サーマルプリンタ100に画像データが入力されると、図15の画像データ処理を実行した後に、図16に示される印刷処理を実行する。
図16の印刷処理では、画像データの印刷ライン数Lpに応じて、S201からS217までの処理が繰り返し実行される。
S202では、MCU10がサーミスタ12からサーマルヘッドの温度測定値Tを取得する。次にS203では、MCU10が、取得したサーマルヘッドの温度Tに対応する温度補正値kT(T)をRAM11から取得する。
S204では、MCU10が通電開始時間を取得する。S205では、MCU10が前の印刷ラインの通電終了時間から、S204で取得した通電開始時間までの放熱時間tを算出する。S206では、MCU10が、算出した放熱時間tに対応する速度補正値kS(t)をRAM11から取得する。
S207では、MCU10が、発熱体に印加する100%のエネルギー値Eを、取得した温度補正値kT(T)及び速度補正値kS(t)を用いて下式(3)に基づいて補正し、通電時間に変換する。なお、E0(P)は、S101で取得した用紙種類に対応するエネルギー最大値である。
E=E0(P)×kT(T)×kS(T) ・・・(3)
次に、MCU10が発熱体の通電回数に応じて、S208からS215までの処理を繰り返し実行する。図16の例では、1印刷ライン当たりの通電回数は計5回である。
S209では、MCU10が、発熱体に印加するエネルギーの大きさに応じた各回の通電時間t1を算出する。例えば表7に示されるように通電回数5回の場合には、1回目の通電でS207にて算出したエネルギー最大値Eの51.6%が発熱体に印加されるように、通電時間t1を算出する。2回目以降は、エネルギー最大値Eの25.8%、12.9%、6.5%、3.2%が順次発熱体に印加されるように、通電時間t1を算出する。なお、通電時間はSTB信号をオンとする時間によって制御される。
S210では、MCU10が発熱体への通電のための処理を開始する。S211では、MCU10が、電源17から発熱体に印加されている電圧値Vを取得する。
S212では、MCU10が、取得した電圧値Vに対応する電圧補正値kV(V)をRAM11から取得する。次にS213では、MCU10が、S209にて算出した通電時間t1を、電圧補正値kV(V)を用いて下式(4)のように補正する。
t1=t1×kV(V) ・・・(4)
S214では、通電開始から補正された通電時間t1が経過した時に発熱体への通電を終了する。通電時間は、STB信号がオンとなっている時間に相当する。各発熱体R1~R640は、画像データの階調に対応するエネルギー段階値のエネルギーが印加されるように、各回の通電時間がMCU10により制御される。
発熱体への通電が所定の通電回数分終了すると、画像データの1印刷ラインの記録媒体への印刷が完了し、S216にて、MCU10が通電終了時間を取得する。MCU10は、S216にて取得した通電終了時間を用いて、次印刷ラインの放熱時間tをS205で算出する。
以上で説明したS201からS217までの処理を、画像データに含まれる印刷ライン数Lpに応じて繰り返し実行することで、記録媒体への画像データの印刷が完了する。
サーマルプリンタ100は、印刷する画像データが入力されると、上記した画像データ処理の後に印刷処理を実行し、入力された画像データに基づいて記録媒体に画像を印刷する。
以上で説明したように、本実施形態におけるサーマルプリンタ100によれば、網点面積率に基づいて発熱体に印加するエネルギーを設定することで、印刷画像の階調再現性が向上する。また、MCU10が制御データを転送する回数を低減し、解像度が高い画像を高速印刷することが可能になっている。さらに、電源17から発熱体に印加される電圧V、サーマルヘッドの温度T、放熱時間t、印刷率D等に応じて発熱体に印加するエネルギーを補正することで、電圧V等の変化に関わらず一定品質の画像を印刷できる。
[第2の実施形態]
次に、第2の実施形態について図面に基づいて説明する。なお、既に説明した実施形態と同一構成部分についての説明は省略する。
例えば、表7に示した制御テーブルを用いて16階調の画像を印刷する場合において、階調値8と階調値7とが副走査方向に連続する部分では、エネルギー段階値16で印刷を実行した後にエネルギー段階値15で印刷を実行することになる。
このような場合、図17(A)に示すように、エネルギー段階値16の印刷では、データ転送の2回目から5回目までがOFFとなり、この間は発熱体に電圧が印加されず画像が印刷されない。また、エネルギー段階値16の印刷に続いて実行されるエネルギー段階値15の印刷では、データ転送の1回目がOFFとなっている間は発熱体に電圧が印加されず画像が印刷されない。
このため、エネルギー段階値16の印刷における2回目のデータ転送から、エネルギー段階値15の印刷における1回目のデータ転送までのエネルギー段階値0(階調値0)に相当する間は、画像が印刷されない非印刷領域となる。したがって、階調値8と階調値7とが副走査方向に連続する部分において、エネルギー段階値0に相当する非印刷領域が白スジとなって画像に表れる場合がある。
また、例えば、表7に示した制御テーブルを用いて16階調の画像を印刷する場合において、階調値7と階調値8とが副走査方向に連続する部分では、エネルギー段階値15で印刷を実行した後にエネルギー段階値16で印刷を実行することになる。
このような場合、図17(B)に示すように、エネルギー段階値15の印刷では、データ転送の2回目から5回目までがONとなり、この間は発熱体に電圧が印加されて画像が印刷される。また、エネルギー段階値15の印刷に続いて実行されるエネルギー段階値16の印刷では、データ転送の1回目がONとなっている間は発熱体に電圧が印加されて画像が印刷される。
このため、エネルギー段階値15の印刷における2回目のデータ転送から、エネルギー段階値16の印刷における1回目のデータ転送までのエネルギー段階値31(階調値15)に相当する間は、画像が印刷される印刷領域となる。したがって、階調値7と階調値8とが副走査方向に連続する部分において、エネルギー段階値31に相当する印刷領域が黒スジとなって画像に表れる場合がある。
そこで、第2の実施形態における階調エネルギーテーブルは、表10に示すように、階調値ごとに直前ラインでの階調値に対応して複数のエネルギー段階値が設定され、エネルギー段階値15の印刷とエネルギー段階値16の印刷とが連続しないようになっている。
本実施形態では、表10に示すように、印刷ドットの階調値7に対しては、直前ラインの主走査方向同位置の印刷ドットの階調値が0~7及び9~15の場合にはエネルギー段階値15、直前ラインの主走査方向同位置の印刷ドットの階調値が8の場合にはエネルギー段階値17が設定されている。また、印刷ドットの階調値8に対しては、直前ラインの主走査方向同位置の印刷ドットの階調値が0~6及び8~15の場合にはエネルギー段階値16、直前ラインの主走査方向同位置の印刷ドットの階調値が7の場合にはエネルギー段階値14が設定されている。印刷ドットの階調値が0~6及び9~15に対しては、直前ラインでの主走査方向同位置の印刷ドットの階調値に関わらず、表6と同じエネルギー段階値が設定されている。
表10に示す階調エネルギーテーブルを用いて印刷を実行することで、例えば階調値8→8→7→7という印刷ドットが副走査方向に連続する場合には、エネルギー段階値は16→16→17→15となる。したがって、副走査方向においてエネルギー段階値16の印刷の後にエネルギー段階値15の印刷が連続することがなくなり、白スジの発生を防ぐことができる。
また、例えば階調値7→7→8→8という印刷ドットが副走査方向に連続する場合には、エネルギー段階値は15→15→14→16となる。したがって、副走査方向においてエネルギー段階値15の印刷の後にエネルギー段階値16の印刷が連続することがなくなり、黒スジの発生を防ぐことができる。
このように、エネルギー段階値15の印刷とエネルギー段階値16の印刷とが副走査方向に連続しないように、階調値ごとに直前の印刷ラインでの階調値に応じた複数のエネルギー段階値を設定することで、白スジ及び黒スジの発生を防ぐことができる。
なお、印刷する画像の階調数や制御テーブルにおけるデータ転送条件等に応じて、本実施形態において例示した階調エネルギーテーブルとは異なる階調エネルギーテーブルが用いられてもよい。
[第3の実施形態]
次に、第3の実施形態について図面に基づいて説明する。なお、既に説明した実施形態と同一構成部分についての説明は省略する。
例えば、表7に示した制御テーブルを用いて16階調の画像を印刷する場合において、階調値8(エネルギー段階値16)が連続する際のデータ転送・通電タイミングを図18(A)に示す。また、階調値7(エネルギー段階値15)が連続する際のデータ転送・通電タイミングを図18(B)に示す。図18には、データ転送速度120μsec、印刷周期890μsec(印字速度約140mm/sec)、エネルギー100%の通電時間が640μsecの場合におけるデータ転送・通電タイミングが例示されている。図18(A)に示されている数値は、それぞれ時間(μsec)である。
図18(A)に示すエネルギー段階値16の連続印刷では、570μsecの休止時間が入る。これに対して、図18(B)に示すエネルギー段階値15の連続印刷では、給紙時間は最大で470μsecとなる。
ここで、直前の印刷ラインの通電が終了してから次の印刷ラインの通電が開始されるまでの休止時間の長さによって発熱体における放熱量が異なる。このため、発熱体は、同じエネルギーが印加されても、直前の印刷ラインにおける通電時からの休止時間の差異によってエネルギー印加後の温度に差異が生じる場合がある。
図18に示すように、エネルギー段階値15の連続印刷における休止時間(470μsec)は、エネルギー段階値16の連続印刷における休止時間(570μsec)よりも短い。このため、エネルギー段階値15の連続印刷では、エネルギー段階値16の連続印刷よりも、発熱体が直前の印刷ラインでの通電による蓄熱の影響を受けて温度が上昇し易い条件となっている。したがって、エネルギー段階値15の連続印刷では、エネルギー段階値16での連続印刷よりも印刷濃度が高くなる場合がある。また、印刷速度が高速になるほど、直前の印刷ラインでの通電による発熱体の蓄熱の影響はより大きくなる。
図19は、異なる印刷速度におけるエネルギー段階値と画像の網点面積率との関係を例示する図である。図19(A)は印刷速度が低速の場合、図19(B)は印刷速度が中速の場合、図19(C)は印刷速度が高速の場合を例示している。
図19に示されるように、印刷速度が低速の場合には、エネルギー段階値が大きくなると共に画像の網点面積率が高くなるように、エネルギー段階値に応じて段階的に画像の網点面積率が上昇している。
しかし、印刷速度が中速の場合には、エネルギー段階値15の画像の網点面積率が、エネルギー段階値16の画像の網点面積率よりも大きくなっており、エネルギー段階値15及び16において画像の網点面積率の大きさが逆転している。
また、印刷速度が高速の場合には、エネルギー段階値15の画像の網点面積率がエネルギー段階値16の画像の網点面積率よりも大きく、エネルギー段階値19の画像の網点面積率がエネルギー段階値20の画像の網点面積率よりも大きくなっている。このように、印刷速度が高速の場合には、エネルギー段階値15及び16とエネルギー段階値19及び20において、画像の網点面積率の大きさが逆転している。
このように、直前の印刷ラインでの通電による発熱体の蓄熱の影響により、エネルギー段階値が小さい方が画像の網点面積率が高くなるという濃度逆転現象が生じる場合がある。
そこで、本実施形態では、表11に示すように、印刷速度によって印刷濃度が逆転するエネルギー段階値15及び16のうち、エネルギー段階値16を使用せずに階調エネルギーテーブルを設定している。また、同様に印刷速度によって印刷濃度が逆転するエネルギー段階値19及び20のうち、エネルギー段階値19を使用せずに階調エネルギーテーブルを設定している。
このように、印刷速度に関わらず階調値に応じて段階的に印刷濃度が変化するようにエネルギー段階値を設定することで、印刷速度によって印刷濃度が逆転することなく階調再現性に優れた画像を印刷することが可能になる。
なお、印刷する画像の階調数や制御テーブルにおけるデータ転送条件等に応じて、本実施形態において例示した階調エネルギーテーブルとは異なるエネルギー段階値が設定されてもよい。
[第4の実施形態]
次に、第4の実施形態について図面に基づいて説明する。なお、既に説明した実施形態と同一構成部分についての説明は省略する。
第4の実施形態では、階調数が異なる複数の画像を領域内に混在させて印刷する場合に、何れかの画像の階調数に合わせるように、他の画像の階調値を変換する。例えば、4階調の第1画像及び16階調の第2画像を混在させて印刷する場合に、第1画像の階調値を16階調に変換し、全体を16階調として印刷する。または、第2画像の階調値を4階調に変換し、全体を4階調として印刷する。階調値の変換は、例えば以下に示す式(5)を用いて行う。
例えば4階調の第1画像の階調値を16階調に変換する場合において、第1画像の階調値1の変換後階調値は、式(5)により求められる値[((16-1)×1+(4-2))/(4-1)=5.667]の小数点以下を切り捨てて「5」とする。同様に、他の階調値についても式(5)を用いて変換後階調値を求めると、以下に示す表12のように4階調の第1画像の階調値を16階調の階調値に変換できる。
また、例えば16階調の第2画像の階調値を4階調に変換する場合において、第2画像の階調値1の変換後階調値は、式(5)により求められる値[((4-1)×1+(16-2))/(16-1)=1.133]の小数点以下を切り捨てて「1」とする。同様に、他の階調値についても式(5)を用いて変換後階調値を求めると、以下に示す表13のように16階調の第2画像の階調値を4階調の階調値に変換できる。
〔画像データ処理〕
図20は、第4の実施形態における画像データ処理のフローチャートを例示する図である。本実施形態におけるサーマルプリンタに画像データが入力されると、図20に示される画像データ処理が実行される。
まずS301にて、印刷に使用する階調数(設定値)を取得する。印刷画像の階調数が設定値と同じ階調数の場合(S302:YES)には、S308に進む。
印刷画像の階調数が設定値と異なる場合(S302:NO)には、MCU10が、S303からS307までの処理を繰り返し実行し、画像の各ラインに含まれているドットごとの階調値変換を行う。画像の高さをy、幅をxとすると、S303からS307までの処理がy回実行され、S304からS306までの処理が画像のラインごとにx回繰り返される。
S305では、MCU10が、処理を実行する画像に含まれるドットに対して、上式(5)に基づいて変換後の階調値を求める。
次にS308では、MCU10が、RAM11に記憶されているエネルギーテーブル(表9)から印刷する用紙に対応するエネルギー最大値E0(P)を取得する。次に、画像データの印刷ライン数Lpに応じて、S309からS316までの処理を繰り返し実行する。
MCU10は、印刷ラインに含まれる印刷ドット数に応じて、1印刷ラインごとに、S310からS315までの処理を繰り返し実行する。S311では、MCU10は、印刷ドットの直前の2印刷ラインの印刷率Dを算出する。次にS312にて、MCU10がRAM11から算出した印刷率Dに対応する印刷率補正値kD(D)を取得する。
S313では、MCU10がS312で取得した印刷率補正値kD(D)に基づいて、印刷ドットの階調値を補正する。S314では、MCU10が、RAM11に記憶されている階調エネルギーテーブルから、S313で補正された階調値に対応するエネルギー段階値を取得する。
以上で説明した画像データ処理の後に、印刷処理を実行することで、階調数が異なる複数の画像を印刷できる。例えば4階調の第1画像と16階調の第2画像を16階調で印刷する場合において、4階調の第1画像の階調値を16階調に変換することで、全体を16階調として印刷できる。また、この場合において、16階調の第2画像の階調値を4階調に変換することで、高速に印刷することが可能になる。
なお、階調数が異なる3つ以上の画像を印刷する場合であっても、同様の処理により、何れかの画像の階調数に合わせて他の画像の階調値を変換することで、全体を同じ階調数として印刷できる。
[第5の実施形態]
次に、第5の実施形態について図面に基づいて説明する。なお、既に説明した実施形態と同一構成部分についての説明は省略する。
第5の実施形態では、階調数が異なる複数の画像を領域内に混在させて印刷する場合に、何れかの画像のエネルギー段階数に合わせるように、他の画像のエネルギー段階値を変換する。
例えば、4階調の第1画像及び16階調の第2画像を混在させて印刷する場合に、各画像の階調値をエネルギー段階値に対応させた後で、第1画像(エネルギー8段階)のエネルギー段階値を、第2画像(エネルギー32段階)に合わせるように変換し、全体を32段階のエネルギーで印刷する。または、第2画像(エネルギー32段階)を第1画像のエネルギー8段階に合わせるように変換し、全体を8段階のエネルギーで印刷する。エネルギー段階値の変換は、例えば以下に示す式(6)を用いて行う。
例えば第1画像の8段階のエネルギー段階値を、16階調の第2画像に合わせて32段階のエネルギー段階値に変換する場合において、第1画像の階調値1のエネルギー段階値3の変換後エネルギー段階値は、式(6)により求められる値[((32-1)×3+(8-2))/(8-1)=14.143]の小数点以下を切り捨てて「14」とする。同様に、他のエネルギー段階値についても式(6)を用いて変換後エネルギー段階値を求めると、以下に示す表14のように、第1画像のエネルギー段階値を、第2画像の32段階のエネルギー段階値に変換できる。
また、例えば第2画像の32段階のエネルギー段階値を、第1画像に合わせて8段階のエネルギー段階値に変換する場合において、第2画像の階調値1のエネルギー段階値8の変換後エネルギー段階値は、式(6)により求められる値[((8-1)×8+(32-2))/(32-1)=2.774]の小数点以下を切り捨てて「2」とする。同様に、他のエネルギー段階値についても式(6)を用いて変換後エネルギー段階値を求めると、以下に示す表15のように、第2画像のエネルギー段階値を、第1画像の8段階のエネルギー段階値に変換できる。
ここで、第4の実施形態のように16階調の第2画像の階調値を4階調の階調値に変換し、エネルギー段階値に対応させると、第2画像は4つのエネルギー段階値(0,3,4,7)で印刷されることになる。これに対して、上記したように16階調の第2画像の32段階のエネルギー段階値を4階調の第1画像に合わせて8段階のエネルギー段階値に変換すると、表15に示すように、第2画像は7つのエネルギー段階値(0,2,3,4,5,6,7)で印刷されることになる。したがって、印刷画像において第2画像の階調再現性が向上する。
〔画像データ処理〕
図21は、第5の実施形態における画像データ処理のフローチャートを例示する図である。本実施形態におけるサーマルプリンタに画像データが入力されると、図21に示される画像データ処理が実行される。
まずS401では、MCU10が、RAM11に記憶されているエネルギーテーブル(表9)から印刷する用紙に対応するエネルギー最大値E0(P)を取得する。次に、画像の各階調値データをエネルギー段階値に変換する処理を行う。画像高さに応じて、S402からS409までの処理を繰り返し実行する。MCU10は、画像のラインに含まれるドット数に応じて、1印刷ラインごとに、S403からS408までの処理を繰り返し実行する。画像の高さをy、幅をxとすると、S402からS409までの処理がy回実行され、S403からS408までの処理が印刷ラインごとにx回繰り返される。
S404では、MCU10は、印刷ドットの直前の2印刷ラインの印刷率Dを算出する。次にS405にて、MCU10がRAM11から算出した印刷率Dに対応する印刷率補正値kD(D)を取得する。
S406では、MCU10がS405で取得した印刷率補正値kD(D)に基づいて、印刷ドットの階調値を補正する。S407では、MCU10が、RAM11に記憶されている階調エネルギーテーブルから、S406で補正された階調値に対応するエネルギー段階値を取得する。
次にS410にて、印刷に使用するエネルギー段階数(設定値)を取得する。印刷画像のエネルギー段階数が設定値と同じ場合(S411:YES)には、画像データ処理を終了する。
印刷画像のエネルギー段階数が設定値と異なる場合(S411:NO)には、MCU10が、S412からS416までの処理を繰り返し実行し、画像の各ラインに含まれているドットごとのエネルギー段階値変換を行う。S414では、MCU10が、処理を実行する画像に含まれるドットに対して、上式(6)に基づいて変換後のエネルギー段階値を求める。
以上で説明した画像データ処理の後に、図16に例示する印刷処理を実行することで、階調数が異なる複数の印刷画像を印刷できる。例えば4階調の第1画像と16階調の第2画像とを含む画像データを印刷する場合において、4階調の第1画像の8段階のエネルギー段階値を32段階のエネルギー段階値に変換することで、全体を32段階のエネルギーで印刷できる。また、この場合において、16階調の第2画像の32段階のエネルギー段階値を8段階のエネルギー段階値に変換することで、高速印刷が可能になると共に、階調値を変換する場合に比べて第2画像の階調再現性を向上させることが可能になる。
なお、階調数が異なる3つ以上の画像を印刷する場合であっても、同様の処理により、何れかの画像のエネルギー段階数に合わせて他の画像のエネルギー段階値を変換することで、全体を同じエネルギー段階数で印刷できる。
以上、実施形態に係るサーマルプリンタについて説明したが、本発明は上記した実施形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。