U.S. patent application number 13/302133 was filed with the patent office on 2012-03-15 for ink jet printing systems.
Invention is credited to Frederick Cheung, MATTHEW PYNE.
Application Number | 20120062635 13/302133 |
Document ID | / |
Family ID | 36637488 |
Filed Date | 2012-03-15 |
United States Patent
Application |
20120062635 |
Kind Code |
A1 |
PYNE; MATTHEW ; et
al. |
March 15, 2012 |
INK JET PRINTING SYSTEMS
Abstract
We describe a method of generating data for driving an ink jet
print head having a plurality of nozzles to print a portion of an
image comprising a plurality of pixels, the method comprising:
storing nozzle position data defining spatial positions of said
nozzles with respect to said print head in terms of pixel offsets
from a reference position on said print head; reading image data
for said image, said image data comprising data for said plurality
of pixels; inputting head position data defining a position for
said print head; and processing said image data using said head
position data and said nozzle position data to determine nozzle
firing data for controlling said print head to deposit ink at said
spatial positions of said nozzles with respect said head position
in accordance with said image data.
Inventors: |
PYNE; MATTHEW; (Cambridge,
GB) ; Cheung; Frederick; (Cambridge, GB) |
Family ID: |
36637488 |
Appl. No.: |
13/302133 |
Filed: |
November 22, 2011 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12300904 |
May 13, 2009 |
|
|
|
13302133 |
|
|
|
|
Current U.S.
Class: |
347/14 |
Current CPC
Class: |
B41J 2/145 20130101;
G06K 15/10 20130101 |
Class at
Publication: |
347/14 |
International
Class: |
B41J 29/38 20060101
B41J029/38 |
Foreign Application Data
Date |
Code |
Application Number |
May 15, 2006 |
GB |
0609570.7 |
May 10, 2007 |
GB |
PCT/GB2007/050254 |
Claims
1. A method of printing using an ink jet print head having a
plurality of nozzles to print at least a portion of an image
comprising a plurality of pixels, the method comprising: reading
nozzle position data from said print head prior to said printing,
said nozzle position data defining spatial positions of said
nozzles in terms of pixel offsets from a reference position on said
print head; and afterwards printing said portion of said image by:
reading image data for said image, said image data comprising data
for said plurality of pixels; inputting head position data defining
a position for said print head; processing said pixel image data
using said head position data and said nozzle position data to
determine nozzle firing data for controlling said print head to
deposit ink at said spatial positions of said nozzles with respect
said head position in accordance with said image data, said
processing including associating said nozzle position data in terms
of pixel offsets with said pixels of said image; and driving said
print head using said determined nozzle firing data.
2. A method as claimed in claim 1, further comprising storing said
nozzle position data in said print head prior to said printing.
3. A method of printing using a multiple head ink jet printer, the
method comprising generating nozzle firing data for driving each
head according to the method of claim 1 using a common portion of
said image data.
4. A method as claimed claim 1 further comprising, during printing
with said ink jet print head, measuring one or both of a substrate
rotation and substrate offset and correcting for one or both of
said substrate rotation and substrate offset.
5. A method of printing as claimed in claim 1 further comprising
generating said nozzle position data for said print head, said
nozzle position data defining spatial positions of said nozzles in
terms of pixel offsets from a reference position on said print
head; and wherein said pixel offsets are defined with reference to
a pixel spacing corresponding to a defined spatial resolution of an
image to be printed by said print head.
6. A carrier carrying processor control code to, when running,
implement the method of claim 1.
7. An image processing engine for generating data for driving an
ink jet head having a plurality of nozzles to print a portion of an
image comprising a plurality of pixels, said image processing
engine being configured to: read nozzle position data from said
print head prior to said printing, said nozzle position data
defining spatial positions of said nozzles in terms of pixel
offsets from a reference position on said print head; read image
data for said image, said image data comprising data for said
plurality of pixels; input head position data defining a position
for said print head; process said pixel image data using said head
position data and said nozzle position data to determine nozzle
firing data for controlling said print head to deposit ink at said
spatial positions of said nozzles with respect said head position
in accordance with said image data, said processing including
associating said nozzle position data in terms of pixel offsets
with said pixels of said image; and drive said print head using
said determined nozzle firing data.
8. An ink jet printing system including the image processing engine
of claim 7.
9. A print head for use in the ink jet printing system of claim 8,
comprising a data store configured to store nozzle position data
for said print head, said nozzle position data defining spatial
positions of said nozzles in terms of pixel offsets from a
reference position on said print head.
10. A print head as claimed in claim 9, wherein said pixel offsets
are defined with reference to a pixel spacing corresponding to a
defined spatial resolution of an image to be printed by said print
head.
11. A method of generating data for driving an ink jet print head
having a plurality of nozzles to print a portion of an image
comprising a plurality of pixels, the method comprising: reading
nozzle position data from said print head defining spatial
positions of said nozzles in terms of pixel offsets from a
reference position on said print head; reading image data for said
image, said image data comprising data for said plurality of
pixels; inputting head position data defining a position for said
print head; reading said nozzle position data from said print head;
and processing said image data using said head position data and
said nozzle position data to determine nozzle firing data for
controlling said print head to deposit ink at said spatial
positions of said nozzles with respect to said head position in
accordance with said image data;
12. A method as claimed in claim 11, further comprising storing
said nozzle position data in said print head.
13. A method as claimed in claim 11, further comprising storing
said image data in pixel order in an image memory space using a
memory location for each pixel, and wherein said processing
comprises using said nozzle position data as a pointer to said
image memory space storing said image data to read pixel data for
each said nozzle from said memory space.
Description
RELATED APPLICATIONS
[0001] The present invention is a continuation of U.S. patent
application Ser. No. 12/300,904, filed Nov. 14, 2008, which is
incorporated in its entirety herein.
FIELD OF THE INVENTION
[0002] The invention is concerned generally with ink jet printing,
in particular to methods and apparatus for printing using print
heads having a plurality of nozzles and to related print
engines.
BACKGROUND TO THE INVENTION
[0003] Ink jet printers are known in the art for printing images
onto a medium (e.g. paper) using a variety of different inks. Ink
jet printers also have applications in materials deposition,
including functional and non-functional materials (e.g. for
fabricating circuits and/or display devices on a variety of
substrates). They have many advantages over other forms of
printing, in particular they may be configured to print large areas
in colour or black and white relatively quickly and they are
relatively inexpensive compared with other printing technologies.
Background prior art can be found in US 2003/0030715; US
2005/0018032; and U.S. Pat. No. 5,049,898.
[0004] It would be advantageous to provide an ink jet printer where
the controller software may be configured to accept different print
heads and/or different print head orientations, and whereby the
printer may be reconfigured for a new print head or print head
orientation without replacing the controller software. This would
allow the user more choice in terms of print quality versus volume
for the same print head, and/or the choice of different sized print
heads (and different shapes) for different purposes (and different
budgets) and reduce support costs for manufacturers.
SUMMARY OF THE INVENTION
[0005] According to an aspect of the present invention, there is
provided a method of generating data for driving an ink jet print
head having a plurality of nozzles to print a portion of an image
comprising a plurality of pixels, the method comprising storing
nozzle position data defining spatial positions of said nozzles
with respect to said print head in terms of pixel offsets from a
reference position on said print head, reading image data for said
image, said image data comprising data for said plurality of
pixels, inputting head position data defining a position for said
print head, processing said image data using said head position
data and said nozzle position data to determine nozzle firing data
for controlling said print head to deposit ink at said spatial
positions of said nozzles with respect said head position in
accordance with said image data.
[0006] Preferably the image data is stored in a memory in pixel
order in the image memory space, by using a memory location for
each pixel. For example 8 bits per pixel for an 8 bit wide memory
(e.g. for a monochrome printer) or 32 bits per pixel for a 32 bit
wide memory (e.g. for a colour printer). Alternatively, more than
one pixel may be stored in each memory location, according to the
number of bits per pixel and the width of the memory. 4 bits, 2
bits and 1 bit per pixel may be particularly suitable, because the
extra conversion is a shift. Some processor architectures are
highly optimised for bit shifting, for example the ARM processor,
and may perform a shift in the same instruction as a load or add.
Preferably the processing comprises using the nozzle position data
as a pointer into the image memory space to read pixel data for
each nozzle from the memory. Preferably print resolution data is
read, for example a number in dots per inch, and the image is
converted into pixelated image data at that resolution by scaling
the image up or down in size according to the magnitude of the
print resolution and the native resolution of the printer, this
pixelated image data being stored in the image memory space.
[0007] The head position data may be provided in terms of a pixel
position, thereby allowing a direct reference to the image data
without first converting the head position data into a pixel
position.
[0008] Preferably the nozzle position data describes the spatial
position of the nozzles on the print head with respect to a known
reference, for example a sweep direction of the print head or a
line feed direction of the printer mechanism, and the print head is
oriented neither parallel nor perpendicular to either of these
references, but at another angle such as between 5 and 85 degrees,
for example 15, 30 or 45 degrees. Preferably the method further
comprises inputting print head data for a succession of print head
positions, for example as the print head sweeps across the page,
and outputting firing data for each position to control the ink jet
printer to print the portion of the image. Alternatively the method
may comprise inputting clock data from the printer, indicating a
succession of print head positions, and outputting firing data for
those positions. Preferably the succession of print head positions
defines a raster scan for printing by the print head.
[0009] This allows generating data for a multiple head ink jet
printer, by generating data for driving each head using the
previous method, and printing multiple portions of the image using
the multiple print heads from the same image data. Alternatively,
the print heads may be locked at a fixed distance relative to one
another, and a single nozzle position matrix may be used having
position data for both print heads.
[0010] The invention further provides a method of printing using an
ink jet print head having a plurality of nozzles to print at least
a portion of an image comprising a plurality of pixels, the method
comprising: storing nozzle position data prior to said printing,
said nozzle position data defining spatial positions of said
nozzles with respect to said print head in terms of pixel offsets
from a reference position on said print head; and afterwards
printing said portion of said image by: reading image data for said
image, said image data comprising data for said plurality of
pixels; inputting head position data defining a position for said
print head; processing said pixel image data using said head
position data and said nozzle position data to determine nozzle
firing data for controlling said print head to deposit ink at said
spatial positions of said nozzles with respect said head position
in accordance with said image data, said processing including
associating said nozzle position data in terms of pixel offsets
with said pixels of said image; and driving said print head using
said determined nozzle firing data.
[0011] Embodiments of the above-described methods may further
comprise measuring and correcting for one or both of substrate
rotation and substrate offset during printing.
[0012] The invention further provides processor control code to
implement the above-described methods, for example on a general
purpose computer system or on a digital signal processor (DSP). The
code may be provided on a carrier such as a disk, CD- or DVD-ROM,
programmed memory such as read-only memory (Firmware), or on a data
carrier such as an optical or electrical signal carrier. Code
(and/or data) to implement embodiments of the invention may
comprise source, object or executable code in a conventional
programming language (interpreted or compiled) such as C, or
assembly code. The above described methods may also be implemented,
for example, on an FPGA (field programmable gate array) or in an
ASIC (application specific integrated circuit). Thus the code may
also comprise code for setting up or controlling an ASIC or FPGA,
or code for a hardware description language such as Verilog (Trade
Mark), VHDL (Very high speed integrated circuit Hardware
Description Language), or RTL code or SystemC. Typically dedicated
hardware is described using code such as RTL (register transfer
level code) or, at a higher level, using a language such as C. As
the skilled person will appreciate such code and/or data may be
distributed between a plurality of coupled components in
communication with one another.
[0013] According to another aspect of the present invention, there
is provided a method of generating nozzle position data for a print
head, said nozzle position data defining spatial positions of said
nozzles with respect to said print head in terms of pixel offsets
from a reference position on said print head, and wherein said
pixel offsets are defined with reference to a pixel spacing
corresponding to a defined spatial resolution of an image to be
printed by said print head.
[0014] According to a further aspect of the present invention,
there is provided a carrier carrying a memory array storing nozzle
position data for a print head, said nozzle position data defining
spatial positions of said nozzles with respect to said print head
in terms of pixel offsets from a reference position on said print
head; and wherein said pixel offsets are defined with reference to
a pixel spacing corresponding to a defined spatial resolution of an
image to be printed by said print head.
[0015] The carrier may comprise a memory chip such as a read only
memory (ROM), a flash memory or a battery-backed up static RAM. The
memory chip may have a parallel interface or, preferably, a serial
interface for a smaller number of connections to the memory.
[0016] According to a yet further aspect of the present invention,
there is provided an image processing engine for generating data
for driving an ink jet print head having a plurality of nozzles to
print a portion of an image comprising a plurality of pixels, said
image processing engine being configured to: store nozzle position
data defining spatial positions of said nozzles with respect to
said print head in terms of pixel offsets from a reference position
on said print head; read image data for said image, said image data
comprising data for said plurality of pixels; input head position
data defining a position for said print head; and process said
image data using said head position data and said nozzle position
data to determine nozzle firing data for controlling said print
head to deposit ink at said spatial positions of said nozzles with
respect said head position in accordance with said image data.
[0017] Features of the above-described aspects and embodiments of
the invention may be embodied in any permutation.
BRIEF DESCRIPTION OF THE DRAWINGS
[0018] These and other aspects of the invention will now be
described in further detail, with reference to the accompanying
drawings, in which:
[0019] FIG. 1 shows a print head 2 positioned at a corner position
over a piece of paper;
[0020] FIG. 2 shows an example print path followed by the print
head of FIG. 1 over the paper;
[0021] FIG. 3 shows a close-up diagram of an exemplary ink jet
print head;
[0022] FIG. 4 shows the print head of FIG. 3 with examples of
nozzle positions relative to the top-left nozzle on the print
head;
[0023] FIG. 5 shows firing pulses for a print head having eight
nozzles (voltage against time);
[0024] FIG. 6 shows a matrix of print head nozzle positions and a
matrix of printing offsets according to an embodiment of an aspect
of the present invention;
[0025] FIG. 7 shows an example of image data in memory for an image
to be printed by a method of printing an image according to an
embodiment of an aspect of the present invention;
[0026] FIG. 8 shows a flowchart for a method of generating print
head nozzle offset data according to an embodiment of an aspect of
the present invention; and
[0027] FIG. 9 shows a flowchart for a method of printing an image
according to an embodiment of an aspect of the present
invention.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
[0028] FIG. 1 shows a print head 2 positioned at a corner position
over a piece of paper 1 with an exemplary image printed on it. The
long axis of the print head is oriented at an angle of
approximately 45 degrees to the long axis of the paper. In general,
the print head may be oriented at any angle to the paper, the
choice of angle providing a trade off between the area covered by
the print head in one sweep of the paper and the resolution of an
image printed by the print head.
[0029] FIG. 2 shows an example print path followed by the print
head of FIG. 1 over the paper. In this example the print head has
16 nozzles, so it may print 16 pixel high strips across the page.
The print head then moves down the page and prints another 16 pixel
high strip below the first one, optionally with a gap between the
two strips (if, for example, the printer is printing lines of text
with spaces between the lines). Alternatively, the print head may
move down and print a 16 pixel high strip in between the previous
pixels, a technique known as interlace or interleaved printing. In
this example printing on the second line occurs in the reverse
direction to the first, so the controller sending data to the print
head must allow for this when fetching image data for printing. As
will be apparent to one skilled in the art, other print paths,
print head orientations and print head configurations are also
possible.
[0030] Note that the nozzles, when swept across the page, print in
a series of lines. However, they do not all reach the start of the
page at the same time when the print head sweeps from left to
right; indeed a print head position when the top-most nozzle is
over the left-hand edge of the page is different from a print head
position when the bottom-most nozzle is over the left-hand edge of
the page. This is the case for two reasons; firstly the print head
is oriented at an angle to the page, and secondly the nozzles are
staggered along the print head. Staggering is often done because
the nozzle connections to the mechanism controlling the firing of
the nozzles often occupy more space than a droplet size from the
nozzle on the printed page, so it is difficult or impossible to
arrange the nozzles in a straight line. However, this means that a
controller driving the print head may send data for the first pixel
on the left edge of the page at different times for each nozzle,
thereby increasing the complexity of the controller.
[0031] FIG. 3 shows a close-up diagram of an exemplary ink jet
print head 31, this time oriented parallel to a long axis of page
34. Again in this example, the nozzles are staggered, with nozzles
32 on the left-hand side of the print head being disposed one pixel
higher on the print head than nozzles 33 on the right-hand side of
the print head. In this example, as the print head sweeps from left
to right across the page, nozzles 33 may fire earlier in the sweep
than nozzles 32, because of a 2 pixel lateral displacement between
the sets of nozzles. Note that the spacing between the nozzles is
fixed in terms of millimetres, but may vary in terms of pixels
depending on the resolution of the image being printed. The droplet
size may also vary according to the resolution, as well as other
factors such as the density required. Therefore the controller in
the printer may account for these factors when sending image data
to the print head for printing. Typically the nozzles all fire
together at the same time, controlled by a firing pulse, and the
data sent to the print head determines the amount of ink deposited
by each individual nozzle, and whether or not the nozzle should
fire. Clearly there will be some situations where one nozzle is off
the edge of the page and should not fire, whereas another nozzle is
located over a dark portion of the page in the desired image and
should fire.
[0032] FIG. 4 shows the print head of FIG. 3 with examples of
nozzle positions relative to the top-left nozzle on the print head
calibrated in thousandths of an inch (thou.). This information may
be provided by the manufacturer of the print head. Conventional ink
jet printers are designed for one particular print head and one
particular print head orientation, so that software written for the
controller in one printer may not work with a different print head,
nor even the same print head at a different orientation.
[0033] FIG. 5 shows firing pulses for a print head having eight
nozzles (voltage against time). This example corresponds to the top
eight nozzles of the print head in FIG. 3; nozzles 2, 4, 6 and 8
start firing 2 pixels before nozzles 1, 3, 5 and 7. Note that the
relationship between the firing pulses for different nozzles need
not be an integer relationship, although it is more convenient for
this to be the case since it allows a single clock reference source
to be used for all the nozzles. Note also that the firing pulses
shown here indicate whether or not a nozzle should fire, not the
actual volume of ink the nozzle should fire (which may in fact be
zero).
[0034] The controller receives image data to be printed and
optionally a resolution (e.g. dots per inch) in which the image
should be printed. By default it may assume a one-to-one
relationship--e.g. one printed dot per pixel in the image.
Alternatively it may scale the image up or down by calculating, for
each pixel position on the page, which is the nearest pixel in the
image data. This image data is then converted into nozzle firing
data for sending to the print head, including information on the
density of the dot required at each printing position and also
whether or not a firing pulse should be sent to the nozzle at each
printing position. Because the controller software is written for
one particular print head and print head orientation, it may only
be useful for that particular printer, and in particular it means
that the controller software must be rewritten whenever a different
print head is used or a different print head orientation is used.
Providing a printer with a range of interchangeable print heads or
with user-adjustable print head orientations becomes troublesome
because the controller must be reconfigured for each combination,
which may involve uploading different firmware to the printer each
time the print head configuration is changed. Manufacturers would
be more likely not to offer this flexibility, due to the extra
volume of support calls it could create.
[0035] Instead of providing dedicated controller software for each
combination of printer mechanism, print head and print head
orientation, we will describe separating out the code portions of
the controller software from the nozzle data portions. These may be
supplied separately to the printer, with the controller software
being provided with the mechanism as part of the printer and the
print head nozzle data being provided with the print head, for
example on a carrier such as a read only memory chip. We will
describe a raster image processor suitable for use with such a
print head.
[0036] FIG. 6 shows an array of print head nozzle positions in
thou. as a matrix (on the left) for the print head of FIG. 4, and
an array of printing offsets in pixels as a matrix (on the right)
which has been generated according to the present invention. The
elements of the matrices may be in an arbitrary order, or they may
be in a particular order, such as an order for sending image data
to the print head driver, i.e. the order in which the print head
driver expects to receive data for each of its nozzles. This order
may be provided on the memory chip, in order to indicate to the
printer in which order to send the data to the print head driver,
or the controller software may ignore the order of the data in the
memory chip, if (for example) the print head driver is part of the
printer mechanism and does not vary with the type of print head
fitted.
[0037] FIG. 7 shows image data for an example image to be printed,
starting at location 2000h in memory. In this example the image is
16 pixels wide and data for a height of 3 pixels is shown, though
the image data may continue at location 2030h for a greater height.
The values are 8 bit bytes, indicating 256 levels, and there is
only one value per pixel indicating a monochrome image. As will be
apparent to one skilled in the art, these examples are merely
intended to be exemplary; other values are also possible. A method
of printing according to the present invention may work by
determining an address (A.sub.R) corresponding to a present
position of a reference position on the print head (e.g. the
address of the location containing image data for the top left
nozzle on the print head), and adding the offset values (O.sub.X,
O.sub.Y) scaled by the appropriate width (W) and bit depth (D)
constants to this address to obtain the addresses (A.sub.N) of the
locations containing image data for the other nozzles. This may be
done using the following formula:
A.sub.N=A.sub.R+DO.sub.X+DWO.sub.Y
[0038] Thus, the pixel data for the nozzles may be obtained using
the present location of the print head, which may be known because
the mechanism is under the control of the controller software, the
bit depth of the image, which depends on the image data sent to the
printer, the width of the image, which depends on the image data
sent to the printer and optionally the resolution desired, and the
matrix of pixel offset values.
[0039] These calculations may be performed very quickly using
modern processor hardware, and depending on the size a memory
access pattern generated by this method, memory accesses may fit
within a cache size of the processor, improving the overall
performance of the system. Optionally bounds checking may be
performed after adding D.O.sub.X and again after adding D.W.O.sub.Y
in order to check that the particular nozzle is not out of range of
the image (e.g. outside the printing area of the page). This may be
omitted if it is known that the nozzles will not need to be fired
when one is outside the printing area (for example with a print
head aligned to either side of the image). Alternatively the
expression D.O.sub.X+D.W.O.sub.Y may be precalculated for each
nozzle to obtain a single nozzle offset N.sub.O which may be added
to A.sub.R to yield A.sub.N for that nozzle. This means that each
pixel look-up may be performed with just an add operation and a
memory fetch. In order to prevent memory accesses occurring out of
bounds when the print head is at one of the edges of the image (so
that, for example, some of the nozzles are off the edge of the
image), the image data may be padded with a border at one or more
of the sides (left, right, top and bottom). The width parameter W
may be adjusted to include any side borders and the method may
fetch data indicating no printing is to take place for those
nozzles.
[0040] FIG. 8 shows a method of calculating the array of printing
offsets in FIG. 6. The method starts (71) with data corresponding
to the position of nozzles (P.sub.X,P.sub.Y) on the print head
relative to a reference, e.g. the top-left nozzle on the print
head. This data may be provided in units of length, e.g.
thousandths of an inch (thou.), millimetres (mm) or another other
unit known in the art. At step 72, the print head orientation
(.theta.) is received; this may be provided in degrees, radians or
any other angle unit known in the art. This step is optional;
alternatively the system may assume a fixed offset and different
angles may be provided for similar print heads by providing
different mouldings to attach the print head to the mechanism and
providing different nozzle position arrays for each of these
mouldings. At step 73 the image resolution (R) is received, in dots
per inch or any other unit known in the art. This step is also
optional; the system may assume a fixed relationship between input
image data and desired resolution, but in most embodiments this
step is present because it is useful for a printer to be able to
print the same image at different resolutions. The resolution may
be different in X and Y directions, and two resolution parameters
R.sub.X and R.sub.Y may be used for this purpose. At step 74 the
nozzle position data in units of length is converted to nozzle
offset data in units of pixels, by scaling the position data
according to the resolution required and, if desired, transforming
the results according to the print head orientation. This is shown
by the following formula:
( O X O Y ) = ( cos .theta. sin .theta. - sin .theta. - cos .theta.
) ( R ( P X P Y ) ) ##EQU00001##
[0041] Scalar multiplication and matrix multiplication may be used,
respectively, for this purpose. The operations may be carried out
in the reverse order, making no difference to the result, because
scalar multiplication is commutative.
[0042] A graphical user interface (GUI) may be provided to
configure the inputs to this method. For example, in printers with
an adjustable print head orientation, the user may set the
orientation (.theta.) and then configure the printer using a GUI
for entering the print head orientation. Alternatively, the print
head mechanism may detect the orientation of the print head
automatically and send the result to the printer for generating the
nozzle offset data accordingly. The interface may also provide an
adjustable print resolution control, for configuring the image
resolution (R) in this method.
[0043] Finally the results are stored as an array, for example in
RAM in the printer, or in ROM on a memory chip associated with the
print head. Contacts for reading out the contents of the memory
chip may be provided on the print head interface along with
contacts for sending data to the nozzle drivers. Serial memory
chips such as EEPROMs are particularly suitable for this purpose as
they have only a small number of electrical contacts (e.g. 8) and
occupy a small area on a circuit board, and their relatively small
size may be more than sufficient for storing the nozzle offset
array data.
[0044] FIG. 9 shows a method of printing image data using a nozzle
offset array generated by the method of FIG. 8. The method starts
(81) with the image data for the image to be printed. This is then
optionally scaled to an appropriate size according to the image
resolution selected (e.g. in dots per inch) at step 82. At step 83
the printer is ready to begin printing. Head position data is input
from the printer, which at this point will be at the start point
for printing (for clarity, the step of moving the print head to
this position is omitted here). Step 84 looks up pixel data for
each nozzle using the formula for A.sub.N, and step 85 outputs the
pixel data to the print head driver. This data may include data
indicating whether or not the nozzle should fire, as well as or
instead of the image intensity for that nozzle. At step 86 the
printer waits to receive a signal from the printer that the print
head is at the next printing position; this may be indicated by the
sending of new position data, or it may be indicated by a clock
signal, for example an encoder pulse signal or a firing pulse
signal, indicating that the printer has moved onto the next pixel.
At step 87 the method loops back to step 84 until the printer has
finished printing the image (step 88).
[0045] No doubt many other effective alternatives will occur to the
skilled person. It will be understood that the invention is not
limited to the described embodiments and encompasses modifications
apparent to those skilled in the art lying within the spirit and
scope of the claims appended hereto.
* * * * *