(57)【要約】【課題】  駆動波形の生成過程において駆動波形データを累算する際に、累算結果が所定の範囲の上限あるいは下限のいずれかの境界値を超えることにより、駆動波形が急激に変化し、回路内に過電流が流れるのを防止する。【解決手段】  加算器と第２のラッチの間に反転防止回路を設け、加算器の累算結果が所定の範囲の上限あるいは下限のいずれかの境界値を超えるときに、上限値または下限値、あるいは、それに近い値に修正する。【選択図】  図３
2005022418.tif 000002
【特許請求の範囲】
【請求項１】
印刷すべき画像の印刷信号に基づいて、記録媒体上に画像を記録する印刷装置であって、
複数のノズルと前記複数のノズルを駆動してインク滴を吐出させるための複数の駆動素子とを有する印刷ヘッドと、
前記複数の駆動素子に伝送される駆動波形を生成する駆動波形生成回路と、
を備え、
前記駆動波形生成回路は、
前記駆動波形を生成するための複数の駆動波形データを記憶するためのメモリと、
前記メモリからそれぞれ所定の読出しタイミングで１つずつ順次読み出された前記駆動波形データを、所定の累算タイミングで順次累算していく累算部と、
前記累算部における前記複数ビットの累算結果が所定の範囲のいずれかの境界値を超えようとするときに、前記累算結果を前記境界値に近い所定の設定値に設定する累算結果修正回路と、
前記累算部で得られた複数ビットの累算結果のうち、特定の上位ビットをデジタル／アナログ変換してアナログ信号として出力するデジタル／アナログ変換器と、
を備える印刷装置。
【請求項２】
請求項１記載の印刷装置であって、
前記累算部は、
前記累算結果を保持するための第１のラッチ回路と、
前記メモリから読み出された前記駆動波形データと、前記第１のラッチ回路で保持された前記累算結果とを加算することによって、前記累算結果を更新する加算器と、を有しており、
前記駆動波形データは、２の補数表示で表現されており、
前記累算結果修正回路は、前記加算器のキャリー信号と前記駆動波形データの最上位ビットとに基づいて、前記加算器から出力される前記累算結果が前記境界値を超えるか否かを判定する判定部を備える
印刷装置。
【請求項３】
請求項２記載の印刷装置であって、
前記累算結果修正回路は、更に、
前記加算器と前記第１のラッチ回路との間に介挿されて、前記加算器の出力を保持する第２のラッチ回路を備えており、
前記判定部は、前記加算器から出力される前記累算結果が前記境界値を超えるときに、前記第２のラッチ回路の出力を前記境界値に近い前記所定の設定値に設定する
印刷装置。
【請求項４】
請求項３記載の印刷装置であって、
前記判定部は、
前記加算器から出力される前記累算結果が、前記加算器の出力の上限値を超えるときに、前記第２のラッチ回路の出力を前記上限値に設定し、
前記加算器から出力される前記累算結果が、前記加算器の出力の下限値を超えるときに、前記第２のラッチ回路の出力を前記下限値に設定する
印刷装置。
【請求項５】
駆動素子を駆動させるための駆動波形を生成する駆動波形生成装置であって、
前記駆動波形を生成するための複数の駆動波形データを記憶するためのメモリと、
前記メモリからそれぞれ所定のタイミングで１つずつ順次読み出された前記駆動波形データを、所定の累算タイミングで順次累算していく累算部と、
前記累算部における前記複数ビットの累算結果が所定の範囲のいずれかの境界値を超えようとするときに、前記累算結果を前記境界値に近い所定の設定値に設定する累算結果修正回路と、
前記累算部で得られた複数ビットの累算結果のうち、特定の上位ビットをデジタル／アナログ変換してアナログ信号として出力するデジタル／アナログ変換器と、
を備える駆動波形生成装置。
【請求項６】
請求項５記載の駆動波形生成装置であって、
前記累算部は、
前記累算結果を保持するための第１のラッチ回路と、
前記メモリから読み出された前記駆動波形データと、前記第１のラッチ回路で保持された前記累算結果とを加算することによって、前記累算結果を更新する加算器と、を有しており、
前記駆動波形データは、２の補数表示で表現されており、
前記累算結果修正回路は、前記加算器のキャリー信号と前記駆動波形データの最上位ビットとに基づいて、前記加算器から出力される前記累算結果が前記境界値を超えるか否かを判定する判定部を備える
駆動波形生成装置。
【請求項７】
請求項６記載の駆動波形生成装置であって、
前記累算結果修正回路は、更に、
前記加算器と前記第１のラッチ回路との間に介挿されて、前記加算器の出力を保持する第２のラッチ回路を備えており、
前記判定部は、前記加算器から出力される前記累算結果が前記境界値を超えるときに、前記第２のラッチ回路の出力を前記境界値に近い前記所定の設定値に設定する
駆動波形生成装置。
【請求項８】
請求項７記載の駆動波形生成装置であって、
前記判定部は、
前記加算器から出力される前記累算結果が、前記加算器の出力の上限値を超えるときに、前記第２のラッチ回路の出力を前記上限値に設定し、
前記加算器から出力される前記累算結果が、前記加算器の出力の下限値を超えるときに、前記第２のラッチ回路の出力を前記下限値に設定する
駆動波形生成装置。
【請求項９】
駆動素子を駆動させるための駆動波形生成方法であって、
（ａ）前記駆動波形を生成するための複数の駆動波形データを、それぞれ所定のタイミングで１つずつ順次選択する工程と、
（ｂ）前記選択された駆動波形データを、所定の累算タイミングで順次累算する工程と、
（ｃ）前記複数ビットの累算結果が所定の範囲のいずれかの境界値を超えようとするときに、前記累算結果を前記境界値に近い所定の設定値に設定する工程と、
（ｄ）前記複数ビットの累算結果のうち、特定の上位ビットをデジタル／アナログ変換する工程と、
を備える駆動波形生成方法。
【請求項１０】
請求項９記載の駆動波形生成方法であって、
前記工程（ｃ）は、前記累算結果のキャリー信号と前記駆動波形データの最上位ビットとに基づいて、前記累算結果が前記境界値を超えるか否かを判定する工程を含む
駆動波形生成方法。
【請求項１１】
請求項１０記載の駆動波形生成方法であって、
前記工程（ｃ）は、
前記累算結果が、前記所定の範囲の上限値を超えるときに、前記累算結果を前記上限値に設定し、
前記累算結果が、前記所定の範囲の下限値を超えるときに、前記累算結果を前記下限値に設定する工程を含む
駆動波形生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、駆動素子を動作させるための駆動波形を生成する技術に関する。
【背景技術】
【０００２】
近年、コンピュータの出力装置として、数色のインクをインクヘッドから吐出するタイプのカラープリンタが普及し、コンピュータ等が処理した画像を多色多階調で印刷するのに広く用いられている。そして、多階調の印刷を実現するために、記録ヘッドのノズルから吐出されるインク滴の重量を制御し、印刷媒体上に形成されるインクドットの大きさを制御することが行われている。
【０００３】
従来、インクジェット式プリンタにおいては、インクドットを形成するか否かの２値化を行い、一定面積中のいくつの画素にインクドットを形成するかにより印刷画像の中間調を表現するのが一般的であった。しかし、最近では、濃淡のインクを用いて一画素に複数の異なる大きさのインクドットを形成することにより、印刷画像の中間調をより多階調で表現することが可能となっている。
【０００４】
例えば、ピエゾ素子を用いたインクジェットプリンタでは、大きさの異なるインクドットを形成するためには、記録ヘッドのノズル開口部におけるメニスカス（ノズル開口部におけるインクの表面形状）の制御やインク滴の吐出のタイミングの制御が重要である。したがって、所望のインクドットを形成するために、記録ヘッドのピエゾ素子を動作させる駆動波形を、形成するインクドットの大きさに応じて変化させることが行われている。
【０００５】
ピエゾ素子を動作させる駆動波形は、予め任意の時間での駆動電圧の絶対値を全てメモリに記憶しておく方法や、ピエゾ素子がコンデンサを形成することを利用して抵抗値の異なる抵抗をピエゾ素子との間でスイッチングする方法により制御されてきた。しかし、前者の場合は駆動波形を記憶しておくためにメモリを多く必要とし、後者の場合は複雑なタイミングのパルス信号を必要とする問題がある。
【０００６】
これらの問題点を解決するために、駆動波形の任意の時間での電圧の変化量を決め、その値を加算器により順次加算していくことによりプログラマブルに駆動波形を得る方法等が提案されている。
【０００７】
図１２は、駆動波形を生成するための従来の駆動波形生成回路１００の内部構成を示すブロック図である。図１３は、図１２に示した駆動波形生成回路１００において駆動波形を生成していく過程を示す説明図である。図１２に示す駆動波形生成回路１００は、メモリ１０２と、累算部１０４と、デジタル／アナログ変換器１０４とを備えている。メモリ１０２には、駆動信号ＣＯＭの波形を示す駆動波形データが格納されている。図１３（ａ）に示したように、メモリ１０２から読み出された駆動波形データΔＶ１，ΔＶ２，ΔＶ３は、累算部１０４においてクロック信号ＣＬＫに同期して順次累算されていく。ここで、駆動波形データとは、クロック信号ＣＬＫの１周期ｔ当たりの駆動電圧の変化量を表すデータである。この１８ビットの累算結果のうち上位１０ビットがデジタル／アナログ変換器１０６でデジタル／アナログ変換されることによって、駆動信号ＣＯＭが生成される。
【０００８】
【特許文献１】特開平１１−２０２０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
図１３の方法において、１画素区間にわたって駆動波形データΔＶ１，ΔＶ２，ΔＶ３，...を累算した値がゼロになれば、駆動波形の始端と終端のレベルは完全に一致する。しかし、実際には、１画素区間にわたる駆動波形データの累算値がゼロにならないことも多い。この理由は、駆動波形データを設定する際に演算誤差が生じるからである。例えば、第１の駆動波形データΔＶ１は、その累算期間８ｔにおける電圧変化の設計値δ１を、その期間８ｔにおける累算周期の数（即ち８）で除算することによって決定される。この除算が割り切れないときには、駆動波形データΔＶ１は、丸め誤差を含むことになる。この丸め誤差が、１画素区間の終端における累算値の誤差の原因である。このような誤差はデジタル／アナログ変換の対象とならない下位ビットのビット数を増加させれば減少し、上位ビットに関しては、誤差を０とすることは可能である。しかし、下位ビットに関しては、累算誤差をゼロにすることは困難である。
【００１０】
従来の駆動波形生成装置では、このような誤差が第２ラッチ１０８に１画素区間毎に順次蓄積されてゆき、所望の駆動波形からずれた波形が生成されてしまうことがある。すなわち、例えば、図１４（ａ）に示した駆動波形を得ようとする場合に、図１４（ｂ）に示したように、誤差ｅ１が１周期毎に累積されて、駆動波形の始端電位がずれてゆき、所望の駆動波形からずれてしまう。図１４（ｂ）の状態から更に誤差ｅ１が蓄積されてゆくと、加算器１０６がオーバーフローやアンダーフローを起こしてしまい、駆動波形が突然大きく変化することがある。
【００１１】
図１５は、正常な駆動波形と、加算器１０６がオーバーフローやアンダーフローを起こしたときの駆動波形とを示す説明図である。図１５（ｂ）に示すように、加算結果が加算器１０６の出力の上限値ＵＬを超えると、加算器出力が下限値ＬＬに近い値にジャンプするので、駆動波形が大幅に変化する。また、図１５（ｃ）に示すように、加算結果が加算器１０６の出力の下限値ＬＬを超えると、加算器出力が上限値ＵＬに近い値にジャンプするので、このときにも駆動波形が大幅に変化する。このように、累積誤差が蓄積されてゆくと、駆動波形が突然大きく変化し、回路内に過電流が流れる可能性があった。
【００１２】
本発明は、上記の問題を解決することを目的としてなされたものであり、駆動波形の生成過程において駆動波形データを累算する際に、累算誤差によって駆動波形が急激に変化するのを防止することを目的とする。
【課題を解決するための手段】
【００１３】
上述の課題の少なくとも一部を解決するため、本発明は、駆動波形を生成するための複数の駆動波形データを順次累算し、累算された複数ビットの累算結果のうち、特定の上位ビットをデジタル／アナログ変換してアナログ信号として出力する。駆動波形データを累算する際、複数ビットの累算結果が、所定の範囲のいずれかの境界値を超えようとするときに、累算結果をその境界値に近い所定の値に設定する。こうすることにより、累算結果が反対側の境界値にジャンプするのを防止することができるので、駆動波形が急激に変化することを防止することが可能となる。
【００１４】
なお、駆動波形データを累算する際に、累算結果のキャリー信号と駆動波形データの最上位ビットとに基づいて、累算結果が境界値を超えるか否かを判定するようにしてもよい。こうすることにより、累算結果が境界値を超えるか否かの判定を容易に行うことができる。
【００１５】
また、累算結果が所定の範囲の上限値を超えるときには、累算結果をその上限値に設定し、所定の範囲の下限値を超えるときには、累算結果をその下限値に設定してもよい。
【００１６】
なお、本発明は、印刷装置、駆動波形生成装置、駆動波形生成方法等の種々の形態で実現することが可能である。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について、実施例に基づき以下の順序で説明する。
Ａ．印刷装置の全体構成：
Ｂ．駆動波形生成装置の構成と動作：
Ｃ．第２実施例：
Ｄ．第３実施例：
Ｅ．変形例：
【００１８】
Ａ．印刷装置の全体構成：
図１は、本発明の印刷装置の全体構成を示すブロック図である。図１に示すように、印刷装置は、コンピュータ９０と、制御回路４０と、紙送りモータ２３と、主走査を行うキャリッジモータ２４と、記録ヘッド５０と、を備えている。
【００１９】
コンピュータ９０では、所定のオペレーティングシステムの下で、アプリケーションプログラムが動作している。オペレーティングシステムには、ビデオドライバやプリンタドライバが組み込まれており、ディスプレイに画像を表示したり、種々の画像処理が行われる。
【００２０】
制御回路４０は、コンピュータ９０からの印刷信号等を受け取るインタフェース４１と、各種データの記憶を行うＲＡＭ４２と、各種データ処理のためのルーチン等を記憶したＲＯＭ４３と、発振回路４４と、ＣＰＵ等からなる制御部４５と、駆動波形生成回路４６と、紙送りモータ２３やキャリッジモータ２４や記録ヘッド５０に印刷信号や駆動信号を送るためのインタフェース４７と、を備えている。
【００２１】
ＲＡＭ４２は、受信バッファ４２Ａや中間バッファ４２Ｂあるいは出力バッファ４２Ｃとして利用される。コンピュータ９０からの印刷信号は、インタフェース４１を介して受信バッファ４２Ａに蓄えられる。このデータは、中間コードに変換されて中間バッファ４２Ｂに蓄えられる。そして、ＲＯＭ４３内のフォントデータやグラフィック関数等を参照して制御部４５により必要な処理が行われ、ドットパターンデータが展開され、出力バッファ４２Ｃに記憶される。ドットパターンデータは、インタフェース４７を介して記録ヘッド５０に送られる。
【００２２】
図２は、記録ヘッド５０の電気的な構成を示すブロック図である。記録ヘッド５０は、ノズルの数に対応した複数のシフトレジスタ５１Ａ〜５１Ｎと、複数のラッチ回路５２Ａ〜５２Ｎと、複数のレベルシフタ５３Ａ〜５３Ｎと、複数のスイッチ回路５４Ａ〜５４Ｎと、複数のピエゾ素子５５Ａ〜５５Ｎと、を備えている。印刷信号ＳＩは、発振回路４４からのクロック信号ＣＬＫに同期してシフトレジスタ５１Ａ〜５１Ｎに入力される。そして、ラッチ信号ＬＡＴに同期してラッチ回路５２Ａ〜５２Ｎにラッチされる。ラッチされた印刷信号ＳＩは、レベルシフタ５３Ａ〜５３Ｎによりスイッチ回路５４Ａ〜５４Ｎを駆動できる電圧まで増幅され、スイッチ回路５４Ａ〜５４Ｎに供給される。スイッチ回路５４Ａ〜５４Ｎの入力側には、駆動波形生成回路４６からの駆動信号ＣＯＭが入力され、出力側にはピエゾ素子５５Ａ〜５５Ｎが接続されている。
【００２３】
スイッチ回路５４Ａ〜５４Ｎは、例えば、印刷信号ＳＩが「１」の場合は駆動信号ＣＯＭをピエゾ素子５５Ａ〜５５Ｎに供給して動作させ、「０」の場合は遮断して動作させない。ピエゾ素子は、周知のように、電圧の印加により結晶構造が歪み、電気−機械エネルギの変換を極めて高速に行う素子である。図示しないが、駆動信号ＣＯＭがピエゾ素子５５Ａ〜５５Ｎに供給されると、それに応じてピエゾ素子５５Ａ〜５５Ｎは変形し、インク室の壁も変形する。これによりノズルからのインク滴の吐出を制御する。吐出されたインク滴が印刷媒体に付着することにより印刷が行われる。
【００２４】
Ｂ．駆動波形生成装置の構成と動作：
Ｂ−１．駆動波形生成装置の内部構成：
図３は、駆動波形生成回路４６の内部構成を示すブロック図である。駆動波形生成回路４６は、制御部４５から与えられる駆動波形データを記憶するメモリ６０と、メモリ６０から読み出された駆動波形データを一時的に保持する第１ラッチ６２と、第１ラッチ６２の出力と後述する第２ラッチ６６の出力とを加算する加算器６４と、反転防止回路６５と、第２ラッチ６６と、第２ラッチ６６の出力をアナログ信号に変換するデジタル／アナログ変換器７０と、を備えている。また変換されたアナログ信号をピエゾ素子が動作する電圧まで増幅する電圧増幅部７２と、増幅された電圧信号に対応した電流供給を行うための電流増幅部７４も備えている。加算器６４と第２ラッチ６６とは、駆動波形データを累算する累算部６８を構成する。駆動波形生成回路４６には、制御部４５から種々の信号が供給される。即ち、メモリ６０には、第１のクロック信号ＣＬＫ１と、駆動波形データを表すデータ信号と、アドレス信号Ａ０〜Ａ３と、イネーブル信号とが供給されている。また、第１ラッチ６２には、第２のクロック信号ＣＬＫ２と、リセット信号ＲＥＳＥＴとが供給されている。反転防止回路６５には、第３のクロック信号ＣＬＫ３が供給されている。第２ラッチ６６には、第３のクロック信号ＣＬＫ３と、リセット信号ＲＥＳＥＴが供給されている。第１と第２ラッチ６２，６６に供給されるリセット信号ＲＥＳＥＴは、同じものである。また、反転防止回路６５と第２ラッチ６６に供給される第３のクロック信号ＣＬＫ３も同じものである。なお、この駆動波形生成回路４６は、図１に示した制御部４５，ＲＡＭ４２およびＲＯＭ４３とともに駆動波形生成装置として機能する。また、反転防止回路６５は、累算結果修正回路として機能する。
【００２５】
Ｂ−２．駆動波形の生成方法：
図４は、メモリ６０内に駆動波形データを書きこむタイミングを示すタイミングチャートである。駆動波形ＣＯＭの生成に先立って、駆動波形データを示すデータ信号と、そのデータ信号のアドレスとが、第１のクロック信号ＣＬＫ１に同期して、制御部４５からメモリ６０に供給される。データ信号は１ビットであるが、図４に示したように、第１のクロック信号ＣＬＫ１を同期信号とするシリアル転送によって、駆動波形データが１ビットずつ転送される。即ち、制御部４５からメモリ６０へ駆動波形データを転送する場合には、まず、第１のクロック信号ＣＬＫ１に同期してデータ信号を複数ビット分供給する。その後、このデータを格納するための書きこみアドレスを表すアドレス信号Ａ０〜Ａ３と、イネーブル信号とを供給する。メモリ６０は、このイネーブル信号が供給されたタイミングでアドレス信号を読み取り、受け取った駆動波形データをそのアドレスに書きこむ。アドレス信号Ａ０〜Ａ３は４ビットなので、最大１６種類の駆動波形データをメモリ６０に記憶しておくことができる。
【００２６】
図５は、駆動波形生成回路４６において駆動波形を生成していく過程を示す説明図である。メモリ６０内への駆動波形データの書きこみが終了した後、読出しアドレスＢがアドレス信号Ａ０〜Ａ３として出力されると、メモリ６０から最初の駆動波形データΔＶ１が出力される。その後、第２のクロック信号ＣＬＫ２のパルスが発生すると、この駆動波形データΔＶ１が第１ラッチ６２に保持される。この状態で、次に第３のクロック信号ＣＬＫ３のパルスが発生すると、第２ラッチ６６の１８ビットの出力と、第１ラッチ６２の１６ビットの出力とが加算器６４により加算され、その加算結果が第２ラッチ６６に保持される。即ち、図５に示したように、一旦、アドレス信号に対応した駆動波形データが選択されると、その後、第３のクロック信号ＣＬＫ３を受けるたびに、第２ラッチ６６の出力には、その駆動波形データの値が累算されていく。この際、反転防止回路６５は、加算器６４の出力がその上限値"１１１...１１１"（１８ビット）を超えるかどうかを判定する。そして、反転防止回路６５は、その判定に応じた値を出力する。
【００２７】
図５に示した例では、アドレスＢには、第３のクロック信号ＣＬＫ３の１周期ｔ当たりの電圧をΔＶ１だけ上昇させることを示す駆動波形データが格納されている。従って、第２のクロック信号ＣＬＫ２によりアドレスＢが有効になると、ΔＶ１ずつ電圧が上昇していくことになる。また、アドレスＡには、駆動波形データとしてΔＶ２＝０、即ち、電圧を保持することを示す値が格納されている。従って、第２のクロック信号ＣＬＫ２によりアドレスＡが有効になると、駆動信号の波形は、増減のないフラットな状態に保たれる。また、アドレスＣには、第３のクロック信号ＣＬＫ３の１周期ｔ当たりの電圧をΔＶ３だけ低下させることを示す駆動波形データが格納されている。従って、第２のクロック信号ＣＬＫ２によりアドレスＣが有効になった後は、ΔＶ３ずつ電圧が低下していくことになる。なお、増加か減少かは、各アドレスに格納されたデータの符号により決定される。
【００２８】
こうして、加算器６４により加算された１８ビットの加算結果のうち、上位１０ビットの電圧レベルデータＤ０は、デジタル／アナログ変換器７０に入力される。また、１８ビットの加算結果全体は、加算器６４に再入力される。この結果、第２ラッチ６６から出力される電圧レベルデータＤ０は、図５（ａ）に示したように段階的に変化する。この電圧レベルデータＤ０は、デジタル／アナログ変換器７０により変換され、図５（ｂ）に示した駆動波形が形成される。
【００２９】
なお、メモリ６０から読み出される駆動波形データは、負の数は２の補数表示で表現されている。また、加算器６４に入力される駆動波形データは、１６ビットであるが、加算されるときには、その最上位ビット（１６ビット目）の値が１７ビット目と１８ビット目とにそのまま用いられる。このような加算器６４の加算動作については後述する。
【００３０】
Ｂ−３．反転防止回路の内部構成と動作：
図６は反転防止回路６５の内部構成を示すブロック図である。反転防止回路６５は、１８個のアンドゲートＡＧＳ０〜ＡＧＳ１７と、１８個のアンドゲートＡＧＲ０〜ＡＧＲ１７と、１８個のＤフリップフロップＤＦＦ０〜ＤＦＦ１７と、を備えている。第１のアンドゲートＡＧＳ０〜ＡＧＳ１７は、第１ラッチ６２から与えられた１６ビットの駆動波形データの最上位ビットＭＳＢの反転信号と、加算器６４から出力されるキャリーＣとの論理積をとり、その出力をＤフリップフロップＤＦＦ０〜ＤＦＦ１７のセット端子Ｓに入力する。第２のアンドゲートＡＧＲ０〜ＡＧＲ１７は、第１ラッチ６２から与えられた１６ビットの駆動波形データの最上位ビットＭＳＢと、加算器６４から出力されるキャリーＣの反転信号との論理積をとり、その出力をＤフリップフロップＤＦＦ０〜ＤＦＦ１７のリセット端子Ｒに入力する。ＤフリップフロップＤＦＦ０〜ＤＦＦ１７は、クロック信号ＣＬＫ３の立下りエッジに同期して、出力Ｑ０〜Ｑ１７を更新する。すなわち、セット端子Ｓとリセット端子Ｒがいずれも"０"のときは、加算器６４の累算結果であるＯＵＴ０ＯＵＴ１．．．ＯＵＴ１７をＤフリップフロップＤＦＦ０〜ＤＦＦ１７の出力Ｑ０Ｑ１．．．Ｑ１７として、そのまま出力する。また、セット端子Ｓが"０"で、リセット端子Ｒが"１"のときは、ＤフリップフロップＤＦＦ０〜ＤＦＦ１７の出力Ｑ０〜Ｑ１７をすべて"０"にリセットする。更に、セット端子Ｓが"１"で、リセット端子Ｒが"０"のときは、ＤフリップフロップＤＦＦ０〜ＤＦＦ１７の出力Ｑ０〜Ｑ１７をすべて"１"にセットする。
【００３１】
なお、図６の実施例では、各ＤフリップフロップＤＦＦ０〜ＤＦＦ１７に対して、それぞれ一対のアンドゲートを設けているが、この代わりに、１８個のＤフリップフロップＤＦＦ０〜ＤＦＦ１７の全体で一対のアンドゲートを共有するようにしてもよい。
【００３２】
図７は、加算器６４において行われる加算処理と加算結果の修正方法とを説明する説明図である。ここでは簡単のため、加算結果は８ビットであり、第１ラッチ６２から与えられる駆動波形データは６ビットであるものとして説明する。なお、実際の駆動波形データは、１６ビットの２の補数表示で表現されており、加算器６４において加算される際には、その最上位ビットＭＳＢ（１６ビット目）の値が１７ビット目と１８ビット目とにそのまま用いられる。そこで、以下の説明では、６ビットの駆動波形データの最上位ビットＭＳＢ（６ビット目）の値（図中○で囲った値）を、７ビット目と８ビット目とにそのまま用いて加算を実行する。
【００３３】
図７（ａ）は、累算結果"１１１００１００"（１０進数の「２２８」）に駆動波形データ"０１０１１０"（１０進数の「２２」）を加算する場合である。この加算では、桁上がりはなくキャリーＣは"０"である。また、駆動波形データのＭＳＢは"０"である。従って、ＤフリップフロップＤＦＦのセット端子Ｓおよびリセット端子Ｒには、ともに"０"が入力され、ＤフリップフロップＤＦＦ０〜ＤＦＦ１７からは、加算結果"１１１１１０１０"がそのまま出力される。
【００３４】
図７（ｂ）は、累算結果"１１１０１０１１"（１０進数の「２３５」）に駆動波形データ"０１０１１０"（１０進数の「２２」）を加算する場合である。この加算では、桁上がりがあり、キャリーＣは"１"である。また、駆動波形データのＭＳＢは"０"である。従って、ＤフリップフロップＤＦＦのセット端子Ｓには"１"が、リセット端子Ｒには"０"がそれぞれ入力され、ＤフリップフロップＤＦＦ０〜ＤＦＦ１７からは、上限値"１１１１１１１１"が出力される。
【００３５】
図７（ｃ）は、累算結果"０００１１１０１"（１０進数の「２９」）に駆動波形データ"１０１０１０"（１０進数の「−２２」）を加算する場合である。この加算では、桁上がりがあり、キャリーＣは"１"である。また、駆動波形データのＭＳＢは"１"である。従って、ＤフリップフロップＤＦＦのセット端子Ｓおよびリセット端子Ｒには、ともに"０"が入力され、ＤフリップフロップＤＦＦ０〜ＤＦＦ１７からは、"０００００１１１"がそのまま出力される。
【００３６】
図７（ｄ）は、累算結果"００００１１０１"（１０進数の「１３」）に駆動波形データ"１０１０１０"（１０進数の「−２２」）を加算する場合である。この加算では、桁上がりがなく、キャリーＣは"０"である。また、駆動波形データのＭＳＢは"１"である。従って、ＤフリップフロップＤＦＦのセット端子Ｓには"０"が、リセット端子Ｒには"１"がそれぞれ入力され、ＤフリップフロップＤＦＦ０〜ＤＦＦ１７からは、下限値"００００００００"が出力される。
【００３７】
このように第１の実施例では、加算器６４における加算結果が上限値または下限値を越えるようとするときに、第２ラッチ６６に入力される加算結果が強制的に上限値または下限値に設定される。この結果、駆動電圧波形が急激に変化して回路に過電流が流れることを防止することができる。
【００３８】
Ｃ．第２実施例：
図８は、第２実施例における累算部の構成を示すブロック図である。加算器６４の前段および第２ラッチ６６の後段は、前述した第１実施例の駆動波形生成回路４６と同様であるので説明は省略する。第２実施例では、加算器６４と第２ラッチ６６との間にセレクタ６７が設けられている。また、セレクタ６７には、データレジスタ６３ａ，６３ｂおよび判定回路６９が接続されており、これらデータレジスタ６３ａ，６３ｂと、セレクタ６７と、判定回路６９が反転防止回路として機能する。
【００３９】
第１のデータレジスタ６３ａには、各ビットがすべて"１"である１８ビットのデータが設定されている。また、第２のデータレジスタ６３ｂには、各ビットがすべて"０"である１８ビットのデータが設定されている。セレクタ６７は、判定回路６９の出力に応じて、データレジスタ６３ａ，６３ｂおよび加算器６４から入力された３つのデータのうちの１つを選択して出力する。
【００４０】
判定回路６９は、図６に示した一対のアンドゲート（例えばＡＧＳ０、ＡＧＲ０）と同じ一対のアンドゲート６９ａ、６９ｂを有している。すなわち、この判定回路６９は、加算器６４から出力されるキャリーＣと駆動波形データのＭＳＢとに基づいて、加算器６４の加算結果がその上限値あるいは下限値を超えるかどうかの判定を行い、その判定結果を示す２ビットのデータＱ６９を出力する。
【００４１】
図９は、加算器６４から出力されるキャリーＣおよび駆動波形データのＭＳＢに応じた、セレクタ６７の出力Ｑ６７を説明する説明図である。キャリーＣおよび駆動波形データのＭＳＢがともに"０"あるいは、ともに"１"のときは、判定回路６９の出力Ｑ６９は"００"であり、セレクタ６７は、加算器６４の累算結果Ｑ６４をそのまま出力する。また、キャリーＣが"０"、駆動波形データのＭＳＢが"１"のときは、判定回路６９の出力Ｑ６９は"０１"であり、セレクタ６７は、各ビットがすべて"０"である１８ビットのデータを出力する。更に、キャリーＣが"１"、駆動波形データのＭＳＢが"０"のときは、判定回路６９の出力Ｑ６９は"１０"であり、セレクタ６７は、各ビットがすべて"１"である１８ビットのデータを出力する。
【００４２】
このように、第２実施例の回路によっても、駆動電圧波形が急激に変化して回路に過電流が流れることを防止することができる。
【００４３】
Ｄ．第３実施例：
図１０は、第３実施例としての駆動波形生成回路４６の内部構成を示すブロック図である。第３実施例では、第２ラッチ６６に図１の制御部４５からフロア信号ＦＬＯＯＲが入力されている点以外は第１実施例と同じである。
【００４４】
図１３を用いて説明したように、累算部６８における累算値は、下位ビットに累算誤差を含んでいる。この下位ビットに含まれる累算誤差により、所望の駆動波形からずれた波形が生成されてしまう。そこで、第３実施例では、累算部６８における１８ビットのデータのうち下位８ビットの累算誤差をフロア信号ＦＬＯＯＲを用いてクリアしている。
【００４５】
図１１は、第２ラッチ６６の下位８ビットをクリアするタイミングを示すタイミングチャートである。ここでは、１画素区間の周期Ｔ毎に、同一の駆動波形が繰り返されるものとしている。１画素区間の始端と終端における電圧レベルデータＤ０の値ＶＭ（以下、「始端レベル」と呼ぶ）は、ゼロでない所定の値を有している。１画素区間の始端と終端は、制御部４５内で生成される印刷タイミング信号ＰＴＳによって規定されている。印刷タイミング信号ＰＴＳは、各画素位置にインクドットを形成する際に、駆動波形の出力の開始を指示する信号である。フロア信号ＦＬＯＯＲは、第２ラッチ６６の下位８ビットをクリアするタイミングｔ０を指示する信号である。フロア信号ＦＬＯＯＲが制御部４５から第２ラッチ６６に入力されると、第２ラッチ６６の下位８ビットのみがクリアされ、上位１０ビットは始端レベルＶＭに維持される。第３実施例では、フロア信号ＦＬＯＯＲは、印刷タイミング信号ＰＴＳと同じタイミング、すなわち、駆動波形の１周期毎に入力される。この場合は、印刷タイミング信号ＰＴＳをフロア信号ＦＬＯＯＲとして用いてもよい。また、このタイミングはこれに限定されるものではなく、例えば、第２ラッチ６６から出力される電圧レベルデータＤ０がＶＭになるタイミングｔ０、ｔ１等、予め出力値が分かっているタイミングでフロア信号ＦＬＯＯＲを入力して、下位８ビットをクリアしてもよい。
【００４６】
第３実施例によれば、駆動波形データの誤差を所定のタイミングでクリアするため、駆動波形データの誤差の累積を防止し、容易に所望の複雑なプロファイルの駆動波形を得ることができる。更に、何らかの理由でフロア信号ＦＬＯＯＲによる駆動波形データの誤差のクリアが行われずに、加算器６４における累算結果が上限値あるいは下限値を越えるようなことがあっても、駆動電圧波形が急激に変化して回路に過電流が流れることを防止することができる。
【００４７】
Ｅ．変形例：
本発明は、上述の実施の形態になんら限定されるものではなく、その要旨を逸脱しない範囲内において種々なる態様での実施が可能であり、例えば、以下のような変形も可能である。
【００４８】
Ｅ−１．変形例１：
上記実施例では、加算器６４の加算結果がその上限値（各ビットがすべて"１"である１８ビットの値）または下限値（各ビットがすべて"０"である１８ビットの値）を超えるときに、第２ラッチ６６に保持されるデータを強制的に上限値または下限値に設定するようにしていたが、第２ラッチ６６に保持されるデータは、加算結果の上限値または下限値に近い任意の値に設定することが可能である。例えば、上限値の代わりに、特定の下位数ビットをすべて"０"に設定し、それ以上の上位ビットをすべて"１"に設定するような設定値を用いることも可能である。
【００４９】
また、上記実施例では、反転防止回路６５が、加算器６４の加算結果の上限値と下限値のいずれかを超えるか否かを判定していたが、この代わりに、加算器６４の取り得る全範囲のうちの所定の範囲のいずれかの境界値を超えるか否かを判定するようにしてもよい。例えば、加算器６４の出力が８ビットの場合には、加算結果は１０進数で０〜２５５の値を取り得るが、その上限値「２５５」と下限値「０」を超えるか否かを判定する代わりに、５〜２５０の範囲の値のいずれかの境界値（「５」または「２５０」）を超えるか否かを判定するようにしてもよい。すなわち、一般には、駆動波形データの累算結果が、所定の範囲のいずれかの境界値を超えようとするときに、その累算結果をその境界値に近い所定の設定値に設定するようにすればよい。
【００５０】
Ｅ−２．変形例２：
本発明の駆動波形生成装置および駆動波形生成方法は、上述した実施の形態に示した印刷装置に用いられるだけでなく、その他のアクチュエータ等を駆動する駆動波形生成装置，駆動波形生成方法としても適用できる。
【図面の簡単な説明】
【００５１】
【図１】本発明の印刷装置の全体構成を示すブロック図である。
【図２】記録ヘッドの電気的な構成を示すブロック図である。
【図３】本発明の駆動波形生成回路の内部構成を示すブロック図である。
【図４】メモリ内に駆動波形データを書きこむタイミングを示すタイミングチャートである。
【図５】駆動波形を生成していく過程を説明する説明図である。
【図６】本発明の反転防止回路の内部構成を示すブロック図である。
【図７】加算器６４において行われる加算処理と加算結果の修正方法とを説明する説明図である。
【図８】本発明の第２実施例における累算部の構成を示すブロック図である。
【図９】加算器６４から出力されるキャリーＣおよび駆動波形データのＭＳＢに応じた、セレクタの出力を説明する説明図である。
【図１０】本発明の第３実施例としての駆動波形生成回路の内部構成を示すブロック図である。
【図１１】第３の実施例におけるフロア信号を入力するタイミングを説明する説明図である。
【図１２】従来の駆動波形生成回路の内部構成を示すブロック図である。
【図１３】駆動波形を生成していく方法を説明する説明図である。
【図１４】駆動波形の生成過程における誤差の累積を説明する説明図である。
【図１５】正常な駆動波形と、加算器がオーバーフローやアンダーフローを起こしたときの駆動波形とを示す説明図である。
【符号の説明】
【００５２】
２３...紙送りモータ
２４...キャリッジモータ
４０...制御回路
４１...インタフェース
４２...ＲＡＭ
４２Ａ...受信バッファ
４２Ｂ...中間バッファ
４２Ｃ...出力バッファ
４３...ＲＯＭ
４４...発振回路
４５...制御部
４６...駆動波形生成回路
５０...記録ヘッド
５１Ａ〜５１Ｎ...シフトレジスタ
５２Ａ〜５２Ｎ...ラッチ回路
５３Ａ〜５３Ｎ...レベルシフタ
５４Ａ〜５４Ｎ...スイッチ回路
５５Ａ〜５５Ｎ...ピエゾ素子
６０...メモリ
６２...第１ラッチ
６３ａ...データレジスタ
６３ｂ...データレジスタ
６４...加算器
６５...反転防止回路
６６...第２ラッチ
６７...セレクタ
６８...累算部
６８ａ...累算部
６９...判定回路
６９ａ...アンドゲート
６９ｂ...アンドゲート
７０...Ｄ／Ａ変換器
７２...電圧増幅部
７４...電流増幅部
９０...コンピュータ
１００...駆動波形生成回路
１０２...メモリ
１０４...累算部
１０６...Ｄ／Ａ変換器
【図１】
2005022418.tif 000003
【図２】
2005022418.tif 000004
【図３】
2005022418.tif 000005
【図４】
2005022418.tif 000006
【図５】
2005022418.tif 000007
【図６】
2005022418.tif 000008
【図７】
2005022418.tif 000009
【図８】
2005022418.tif 000010
【図９】
2005022418.tif 000011
【図１０】
2005022418.tif 000012
【図１１】
2005022418.tif 000013
【図１２】
2005022418.tif 000014
【図１３】
2005022418.tif 000015
【図１４】
2005022418.tif 000016
【図１５】
2005022418.tif 000017