1. Field of the Invention
The present invention relates to printing devices, and in particular, to a handheld portable printer and a method of operation. Still more particularly, the present invention relates to a two-dimensional absolute position sensor and projection control for a handheld printer.
2. Description of the Background Art
Printers are well known in the art and there are a variety of different types such as laser printers, dot-matrix printers and ink jet printers. Each of these printers uses a different type of technology for applying the “ink” to the print media (“paper”). However, most all printers require that the print media be moved past a relatively stationary print head that applies the “ink” to the print media. Print heads on tracks that are constrained to not rotate and only translate along one dimension and print heads that contain optics such as mirrors that rotate are examples. Most often such printers have a housing for holding the print head in a fixed orientation and complex paper handling trays and mechanisms to feed the print media past the print head and render the printed output. Since most printers require such a large housing, such printers are not hand held, but rather large devices significantly greater in size than a standard sheet of 8×11″ sheet of paper. While there have been some printers created for a mobile computing environment, such printers often have a print head or print head mechanism that is at least 8.5 inches in length.
There have been attempts in the prior art to provide a hand held printer. These attempts include a typical approach of reducing the size of the print head so that it can be mounted within a portable housing along with electronics, the power supply and other elements of a printer. However, existing hand-held printers have significant limitations. For many existing hand-held printers, the size of the image that they are able to print is severely limited. For example, some prior art printers are able to print only while they are stationary, and thus, are limited to printing images less than or equal to the printer itself or the print head, which in either case is less that a few inches square. This also makes the printer bulky and difficult to use.
Other handheld printers allow printing while the user moves or “swipes” the handheld printer across or over the print media. However, these printers are again limited in at least one dimension in the size of the images they are able to print. Specifically, they are only able to print an image less than or equal to the size of the print head, and most are limited to one pass or swipe. For those handheld printers that are able to print in sections, it is very difficult to align the multiple, separate printing steps, swipes or sections. Moreover, some printers allow images to be printed in multiple sections require special paper, registration marks or require starting printing at an edge boundary. Furthermore, there is a high misprinting or failure rate with such multiple section hand-held printers. For example, failure to print the image properly often occurs if the user prematurely removes the printing device from the surface of the print medium.
Another problem in the prior art is that it is very difficult to accurately measure the movement of existing handheld printers and determine when the print head should be activated. Without precise and accurate measurement of the position of the handheld printer, there is significant misalignment between the pixels in the image which results in poor and inconsistent print quality.
The present invention overcomes the deficiencies and limitations of the prior art by providing a handheld portable printer and a method of operation. In one embodiment, the handheld portable printer includes members and a handle that are joined together to form a generally O-shaped device. The members provide a rigid and strong structure and an area for housing a projector to project an image on the print surface of the image to be printed. The bottom member tapers outward to provide increased stability as the handheld printer is moved across a print medium. The bottom member houses a pair of absolute position sensors spaced apart and aligned upon the longitudinal axis on the bottom of the handheld portable printer. A controller is associated with the absolute position sensors to produce precise position information. The controller uses the precise position information to control the projection of the image to be printed and the printing of pixels by the print head. In one embodiment, the print head is controlled such that each pixel is printed twice if the print head passes over each pixel at least twice. The handle provides additional buttons for inputting commands to lock an image or begin printing, and in one embodiment housing electronics for control and projection of the image to be printed, providing user feedback, and communicating with other devices. The present invention also includes a number of novel methods including: a method for printing an image with a handheld printer, a method for projecting an image to be printed, and a method for registering a location of a printer and portions of a printed image.
The invention is illustrated by way of example, and not by way of limitation in the figures of the accompanying drawings in which like reference numerals are used to refer to similar elements.
A handheld printer and a method for using same are described. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that the invention can be practiced without these specific details. In other instances, structures and devices are shown in block diagram form in order to avoid obscuring the invention. For example, the present invention is described primarily with reference to printing documents for reading. However, the present invention applies to any type of printing including electronic circuits, partially invisible printing for marking and various other printing techniques.
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will be apparent from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
Moreover, the present invention claimed below may operate on or work in conjunction with an information system or network. For example, the invention can operate as a stand alone printer or communicate with a network with additional functionality varying depending on the configuration. Thus, the present invention is capable of operating with any information system from those with minimal functionality to those providing all the functionality disclosed herein.
Referring now to
Referring now also to
A portable media device 150 includes a memory card like a SD card, CompactFlash card or MD card as is typically used in digital cameras or portable music players; or a MediaKey which is a card containing an image and a barcode. The barcode has an ID and an encryption key that can be used to access and decrypt media stored on the Internet. In other words, the device can read the barcode on a (codename) MediaKey and download an encrypted image or document, decrypt it, and print it using the handheld printer.
Referring now to
Referring now also to
Referring now also to
As noted above, the present invention advantageously places the absolute position sensor 160, 162 at predefined locations to simplify the processing of position and rotation information and its transformation to image coordinates used for printing and projection. Referring now also to
x_reg
y_reg
The position is converted to 404 DPI tick units:
x=x_reg/4096
Y=y_reg/4096
The angle information is read (for example from the Theta Computation Unit 1210):
sin_reg
cos_reg
theta1_reg
theta2_reg
In one embodiment, the sin_reg, cos_reg and theta1_reg registers are coarse and are quantized to about 0.7 degrees. The theta2_reg value has fraction bits with 16 times more resolution in angle. The additional resolution in angle is used to increase resolution for sin and cos using a linear approximation. Recall that the slope of cos is −sin and the slope of sin is cos. The initial conditions are that the angle is n/2, sin is 1.0 and cos is 0.0. If cos_reg is positive, the angle information is computed with:
cos=cos_reg+(50*theta2_reg*sin_reg)/65536
sin=sin_reg−(50*theta2_reg*cos_reg)/65536
theta=theta1_reg−(theta2_reg+8)/16
If cos_reg is positive, the angle information is computed with:
cos=cos_reg−(50*theta2_reg*sin_reg)/65536
sin=sin_reg−(50*theta2_reg*−cos_reg)/65536
theta=theta1_reg+(theta2_reg+8)/16
The cos and sin values are the floating point values multiplied by 4096. The theta value is the angle in radians multiplied by 4096. Note that 0.7 degrees is approximately 0.012 radians and for 16 times more resolution, 0.012/16 is approximately 50/65536.
The following distance measurements are known:
from center between sensors to closest nozzle on print head is d1 (e.g. 1882 ticks)
from center between sensors to farthest nozzle on print head is d2 (e.g. 1954 ticks)
Also, the initial location of the image to print can be specified, for example:
x_initial=1900
y_initial=20
The position of the closest nozzle in the print head at image resolution (¼ of sensor resolution, 101 DPI) is:
x
—
n0=−(x+x initial+((cos*d1)/4096)/4
y
—
n0=(y+y_initial+((−sin*d1)/4096)/4
The position of the farthest nozzle in the print head (x_n11, y_n11) 118 is computed similarly using d2 instead of d1. In one embodiment, the print head 118 has twelve nozzles and the position of any of the other ten nozzles can be computed similarly. For a stable projected image, the distance from the center between sensors 160, 162 to the projection center (d3) should be used. If it is desired to project what is under the print head 118 at an offset, the distance to the center of the print head 118, (d1+d2)/2, is used.
xp=((x—n1+x—n11)/2)*4*xscale−x_offset
yp=((y—n1+y—n11)/2)*4*yscale−y_offset
where xscale and yscale are the ratio of the projector DPI to the sensor ticks-per-inch and x_offset and y_offset are half the size of the projected image (length of vector from the start of the image to the center of the image). In this embodiment of the present invention, all division is by a power of 2 and can be performed with shift operations.
Referring now to
Although not shown by the exterior of the handheld printer 100 in this embodiment, the handheld printer 100 may also include other components such as communication devices such as wireless transceivers, USB and Bluetooth® transceivers, Infrared transceivers or image capture devices like a camera.
The control unit 620 is shown including processor 602, main memory 604, and data storage device 606, all of which are communicatively coupled to system bus 608.
The processor 602 processes data signals and may comprise various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although only a single processor is shown in
Main memory 604 stores instructions and/or data that may be executed by processor 602. The instructions and/or data may comprise code for performing any and/or all of the techniques described herein. Main memory 604 may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, Flash RAM (non-volatile storage), combinations of the above, or some other memory device known in the art. The memory 604 is described in more detail below with reference to
Data storage device 606 stores data and instructions for processor 602 and comprises one or more devices including a hard disk drive, a flash memory device, or some other mass storage device known in the art. In an alternate embodiment, data storage 606 may be replaced by a connection to an external data storage unit.
The system bus 608 represents a shared bus for communicating information and data throughout control unit 620. System bus 608 may represent one or more buses including an industry standard architecture (ISA) bus, a peripheral component interconnect (PCI) bus, a universal serial bus (USB), I2C, SPI, or some other bus known in the art to provide similar functionality. Additional components coupled to control unit 620 through system bus 608 include the display device 120, one or more input buttons 610, the projector 126, the position detection sensors 140, 142, the print head control module 614, the image capture device 616, and the communication module 618.
Display device 120 represents any device equipped to display electronic images and data as described herein. Display device 120 may be, for example, an organic light emitting diode display (OLED), liquid crystal display (LCD), or any other similarly equipped display device, screen, or monitor. In one embodiment, display device 120 is equipped with a touch screen in which a touch sensitive, transparent panel covers the screen of display device 120. As has been noted above, in the preferred embodiment, the display device 120 is an OLED panel sized to the top member 106, and mounted for retractable positioning. In other embodiments, the display device may be a series of LEDs or other lights that indicate the status of the handheld printer 100.
The one or more input buttons 610 are any device to provide user input to the handheld printer 100 such as switches, cursor controller or a keyboard. In one embodiment, the input buttons include a print button 116, a scroll dial 114, a power button 812, a menu button 814 and a scaling knob 816. In one embodiment, the input buttons 610 can include an alphanumeric input device, such as a QWERTY keyboard, a key pad, or representations of such created on a touch screen, coupled to control unit 620 to communicate information and command selections to processor 602. In another embodiment, the input button 610 is a user input device equipped to communicate positional data as well as command selections to processor 602 such as a joystick, mouse, a trackball, a stylus, a pen, a touch screen, cursor direction keys, or other mechanisms to cause movement adjustment of an image.
The projector 126 outputs an image provided by the control unit 620. The projector 126 is capable of modifying the size and position of the image in response to signals from the control unit 620. The projector 126 is mounted to the portable housing of the handheld printer 100 as has been described above. The projector 126 is electrically coupled to the control unit 620 by bus 608. The projector 126 may be any one of a conventional type such as a micro-projector; a projector by Blue Light Optics of Cambridge, England; and a MEMS laser projection module by Fraunhofer. Moreover, the projector 126 is mounted to the housing of the handheld printer 100 so that its angle with respect to the target surface remains fixed as the printer 100 is rolled or slid along the surface 104.
The position detection sensors 140, 142 are coupled to the control unit 602 by the bus 608. One embodiment of the position detection sensors 140, 142 have been described above as optical sensors. In another embodiment, position detection sensors 140, 142 have been described above as mechanical sensors. While a plurality of sensors 140 and 142 are shown, those skilled in the art will recognize that other embodiments use only a single position detection sensor 140 that measures three degrees of freedom, including X and Y position and angular orientation. The position detection sensors 140 and 142 are used to track movement of the handheld printer 100 across the surface 102 or paper 104. The position detection sensors 140, 142 generate signals that are processed by processor 602 to determine an X-Y position of the handheld printer 100 on the surface 102 and include direction, speed and rotation of the handheld printer 100. This X-Y position data is used by the projection system to adjust the image projection information, and by the printing system to know where to drop ink material.
The print head control module 614 is coupled for the communication with the print head 118 and is used to control printing. More specifically, the print head control module 614 reformats and send signals to the print head 118 that cause it to move from the retracted position to the operational position, and vice versa. The print head control module 614 also signals to the print head 118 when to mark the print medium 104. Furthermore, the print head control module 614 can also be used as an interface to provide feedback to the processor 602 as to a printer head 118 malfunction or when consumables have run out, so that the user may be notified via the display device 120.
The image capture device 616 is preferably a digital camera and lens housed within the handheld printer 100. The image capture device 616 is coupled by bus 608 to send and receive control and status signals and to send captured images. For example, the image capture device 616 may include zoom, auto-focus and other camera capabilities. The image capture device 616 is any one of a conventional type such as those currently available in cellular phones and other small form factor devices, such as the ES2196M from ESS Technology, Inc. In one embodiment, the image capture device also includes an image processor (not shown). The image processor is used to detect a portion of the image that has been printed, and the image processor adapted for communication with the image capture device 616 and the control unit 620/processor 602. The image capture device 616 can be used to capture an image of the surface 104 and the image processor compares it to a source image. The difference between the captured image and the source image can then be used as an input to control marking of the surface 104.
The communication module 618 links control unit 620 to a network (not shown) and other processing systems. The network of processing systems may comprise a local area network (LAN), a wide area network (WAN) (e.g., the Internet), and/or any other interconnected data path across which multiple devices may communicate. In one embodiment, the communication module 618 is other conventional connections such as Ethernet, USB, etc. to other systems such as a network for distribution of files and information using standard network protocols such as TCP/IP, http, https, and SMTP as will be understood to those skilled in the art. One specific example has been described above as a portable media device slot/interface 122. In another embodiment, the communication module 618 is any one of conventional type of transceiver such as for Infrared communication, WiFi communication, 802.11 abg communication, Bluetooth® communication, 3G communication, or radio frequency communication. Those skilled in the art will recognize that other devices can be coupled to the bus 608 for interaction with the processor 602 in a variety of conventional ways.
It should be apparent to one skilled in the art that computing system 600 may include more or less components than those shown in
The operating system 702 is preferably one of a conventional type such as, WINDOWS®, SOLARIS® or LINUX® based operating systems. Although not shown, the memory unit 604 may also include one or more application programs without limitation.
The control module 704 is used to control the other modules of the memory 604. The control module 704 is adapted for communication with the projection module 706, the print control module 708, the user communication and display module 710, the camera control module 712, and the communication control module 714. The operation of the control module 704 will be apparent from the description of
The projection module 706 is software used by the processor 602 for interacting with and controlling the projector 126 of the handheld printer 100. The projector 126 advantageously projects or outputs an image of the document to be printed. The projection module 706 sends the projector 126 signals that form the projected image, signals to adjust or modify the size of the projected image, the position of the projected image, brightness, contrast and other display characteristics by processor 602 responsive to input from the user. The image projected by the projector 126 is controlled by the processor 602 in accordance with the methods of the present invention. For example, using the input buttons 610 the user may adjust the display characteristics of the projector 126 to various different images displayed and seen by the user. In response to a lock input, the handheld printer 100 tracks its movement and automatically adjust the image projected so that is appears the same on the surface 104 as when the lock button 116 is initially depressed even though the position of the handheld printer 100 changes.
The print control module 708 is used to send commands from the user or processor 602 to the print head control 614. More specifically as has been note above, the print control module 708 sends signals to output ink, retract the print head 118 or move the print head to the operational position. The print control module 708 is also used to send status information from the print head 118 to the processor 602 for eventual presentation to the user of the handheld printer 100. The print control module 708 operates in conjunction with the processor 602 and is coupled by bus 608 for communication and interaction with the processor 602. The print control module 708 also optionally tracks and records when ink was output as the handheld printer 100 is moved. Thus, even in the handheld printer 100 is moved over the same point on the surface 104 multiple times to print the image, the print head 118 is selectively activated to output ink only a limited number of times (e.g. once or twice) for a given area of the surface. In other words, in one embodiment, regardless of how many times the user drags the handheld printer 100 over a particular region of the surface 104 that shows the locked and projected image, the handheld printer 100 deposits ink only on one pass over the particular region, and not on successive passes. Where ink had been output is monitored by the print control module 708, and the print control module 708 selective turn on and off the print head 118 so to ensure that ink is deposited only on one pass. In another embodiment, regardless of how many times the user drags the handheld printer 100 over a particular region of the surface 104, the handheld printer 100 deposits ink only on a maximum of two passes over the particular region.
The user communication and display module 710 is used to interact with the user and causes information to be displayed on the display device 120, and signals to be received from the input button 610. The user communication and display module 710 is capable of causing an image of the document to be printed to be generated and presented on the display device 120. The user communication and display module 710 is also capable of causing the processor 602 to display operational status information on the display device 120 such as whether the projected image is locked, whether printing is occurring, status of the print head 118 or consumables 808 (See
In the embodiments where an image capture device 616 is included, the memory 604 also includes a camera control module 712. The camera control module 712 is software that allows the processor 602 to control the image capture device 616 and its capabilities including controlling the image that is captured and when the image is captured. In one embodiment, the camera control module 712 also processes the captured image, and stores it in the data storage device 606 or working memory. In another embodiment, the camera control module 712 also performs image processing.
In the embodiments where a communication module 618 is included, the memory 604 also includes the communication control module 714. The communication control module 714 is software adapted for communication with external devices (not shown) using the communication module 618. Regardless of communication format, the communication control module 714 manages the sending and receipt of commands, portions of files, files and data via the communication module 618.
Referring now to
The user interface 802 and its components are adapted for communication with internal electronics 804, in particular, the control unit 620. The internal electronics 804 include the image capture device 616, the portable media device slot 122, consumables 808, the control unit 620/processor 602, the projector 126 and a battery 810. The camera 616, the portable media device slot 122, the control unit 620/processor 602 and the projector 126 have been described above so that description will not be repeated here. The consumables 808 include ink or other material output by the handheld printer 100. The battery 810 is a conventional type, is stored within the housing, and provides power for operation of the computing system 600 and other components.
The internal electronics 804 are adapted for communication and control of surface contact components 806 which include absolute position sensors 140, 142 rollers 144 and the print head 118. The operation of these components is been described above as well as their interaction with the control unit 620/processor 602.
Referring now to
Those skilled in the art will recognize that the projection of the image to be printed is particularly advantageous. For example, the image may be partially printed and then the handheld printer 100 may be set aside temporarily. The use of the projection is advantageous in this instance because the handheld printer 100 is able to print the remainder of the image with ease. The user need only project the image and manually, visually align the projected image with the partially printed image and then print the remainder of the image. The use of projection makes the realignment process particularly simple since it is very easy for the user to discern differences between the partially printed image and the projected image and thereby obtain precise and exact alignment.
Also, the user need not print the entire image shown by the projection. Instead, the user may choose to actually print only a portion of the projected image, which means they choose to print only a portion of their document. Maybe only one part of the document is particularly interesting to them. In this case, the projected image serves to show the entire image to the user, allowing the user to align the portion they're interested in on their target surface, and the user only needs to move the printer across the area of particular interest. This can be considered “instant cropping” of printed images. The projected image, combined with the flexibility of the handheld printer, allows cropping of images without needing to pre-process the print image data in some editing tool, such as in programs like PhotoShop by Adobe Systems Incorporated, of San Jose, Calif.
In another embodiment of the present invention, the print head is able to output two types of ink, one visible to the naked eye, and one in another spectrum such as an ultraviolet light spectrum. Alternatively, there may be separate print heads for the different types of ink. Regardless, the print head under control of the processor 602 is capable of applying registration marks visible in an ultraviolet light spectrum to the surface 104. In one embodiment, the handheld printer 100 includes an ultraviolet light source that may selectively be activated to reveal the registration marks. In another embodiment, the room projector 1002 includes the ultraviolet light source that may selectively be activated (via communication between the handheld printer 1000 and the projector 1002) to reveal the registration marks.
Referring now to
Referring now to
The absolute position sensors 160, 162 have been described above and detect the absolute position of the sensors 160, 162. The distance between the absolute position sensors 160, 162 is predefined and known. The absolute position sensors 160, 162 output quadrature encoding information. Absolute position sensor 160 is coupled by signal line 1126 to the controller 1106. Similarly, absolute position sensor 162 is coupled by signal line 1128 to controller 1106. The absolute position sensors 160, 162 send quadrature encoding information to be controller 1106 via the signal lines 1126, 1128.
The processor system 1102 is coupled to the projection system 1104 by signal line 1120. The processor system 1102 is also coupled to the controller 1106 via signal line 1122. The processor system 1102 controls the operation of the handheld printer 100C as will be described in more detail below with reference to
The projection system 1104 has been described above with reference to
The controller 1106 is coupled to the processor system 1102 for bidirectional communication via signal line 1122. The controller 1106 is also coupled via signal line 1124 to send print control signals to the print head 1108. In particular, the print head 1108 may include a plurality of nozzles and the controller 1106 provides signals to selectively activate one or more of the print nozzles. The controller 1106 is also coupled via signal lines 1126, 1128 to the absolute position sensors 160, 162, respectively. The controller 1106 receives quadrature encoding information from the absolute position sensors 160, 162 and determines the position of the handheld printer 100C. The controller 1106 receives and is responsive to control signals from the processor system 1102. The controller 1106 interfaces the processor system 1102 with the absolute position sensors 160, 162 and the print head 1108. The controller 1106 is also responsible for determining the position of the handheld printer 100C and storing it in position registers. The controller 1106 is described in more detail below with reference to
The print head 1108 is similar to the print head 118 described above. The print head 1108 is coupled by signal line 1124 to the controller 1106. In one embodiment, the print head is an ink jet print head with an array of 12 separately controllable nozzles. Using the signal line 1124, the print head 1108 receives control signals from the controller 1106.
Referring now to
The processor system interface 1202 is coupled to signal line 1122 to receive signals from the processor system 1102. The processor system interface 1202 is adapted to receive control signals from the processor system 1102 and uses them to control operation of the print head 1108 via signal line 1124. In one embodiment, the processor system interface 1202 receives the control signals, translates those control signals and stores them in the position and control registers. In another embodiment, the processor system interface 1202 is coupled to the print head controller 1212 to send the control signals that control operation of the print head 1108.
The position and control registers 1204 are convention processor or controller registers. The position and control registers 1204 store the position of the handheld printer 100C as a series of values each in a different register. In one embodiment, the position and control registers 1204 include a register for an X value, a Y value, a theta value, a cosine-theta value, sine-theta value. In one embodiment, each register is a 32-bit register which stores a fixed-point value with the apparent position of the radix point between 20 integer bits on the left and 12 fractional bits on the right. The decimal values are located in a lookup table. This is sufficient for accumulating X and Y positions. The position and control registers 1204 also include one or more registers for storing print control signals. The position and control registers 1204 are coupled to the processor system interface 1202 to receive and store control signals. The processor and control registers 1204 couple to the position computation unit 1206 to receive and store position signals. The position control registers 1204 are coupled to the printed controller 1212 to output the store values.
The quadrature encoding state machine 1208 is coupled signal lines 1126, 1128 to receive quadrature encoding information from the absolute position sensors 160, 162. The quadrature encoding state machine 1208 uses this information to produce position and rotation information. In one embodiment, the quadrature encoding state machine 1208 takes quadrature encoding information from the absolute position sensors 160, 162 (track balls) and increments (decrements) a “tick counter” based on that encoding. In one embodiment, the quadrature encoding state machine 1208 maintains four such “tick counters”—X0, Y0, X1, Y1—one counter for each direction for each absolute position sensors 160, 162. The output of the “tick counters” provides the output of the quadrature encoding sate machine 1208. The outputs of the four counters provide the values X0, Y0, X1, Y1 and are provided to the position commutation unit 1206. The outputs of the two counters provide the values X0 and X1 and are input to the Theta computation unit 1210.
The theta computation unit 1210 is coupled to receive the raw X position of the handheld printer 100C from the quadrature encoding state machine 1208 and generates angular information. The theta computation unit 1210 has an output coupled to the position computation unit 1206 to provide the angular information. In one embodiment, the theta computation unit 1210 receives signals from the X0 and X1 “tick counters” of the quadrature encoding state machine 1208 and computes angular information (rotational) of the base of the handheld printer 100C. It should be noted that the Y values do not play a role in defining this angle. The difference between X0 and X1, including the sign, is used to compute Theta, Cos-Theta, and Sin-Theta. In one embodiment, the computation unit 1210 is a 128-entry look-up table stored in internal read-only memory (ROM) and other control logic. The data for the lookup table is for Sin>0 and Cos>0 (quadrant 1). When Cos<0, the same lookup table is used, and appropriate signs are applied to the resulting data. The theta computation unit 1210 generates the values of Theta, Cos-Theta and Sin-Theta and provides them as input to the position competition unit 1206. The lookup table can be created using the following pseudo code:
for bin in 0 . . . 127:
Theta=bin*n/2 radians*4095/128
Cos-Theta=cos(bin*n/2 radians/128)*4095
Sin-Theta=sin(bin*n/2 radians/128)*4095
The position commutation unit 1206 receives values X0, Y0, X1, Y1 from the quadrature encoding state machine 1208 as has been described above. The position commutation unit 1206 also receives the values of Theta, Cos-Theta and Sin-Theta from the theta computation unit 1210 as just described. The position commutation unit 1206 maintains a cumulative count of absolute X and Y positions. X and Y become a function of the “tick counters” of the quadrature encoding state machine 1208 plus the trigonometric data based on the angle. Once the counters are zeroed, each tick effects X and Y, and they are accumulated by the position commutation unit 1206 as the handheld printer 100C is moved, according to the following equation (counter-clockwise):
x_new=x_previous+dy(cos-theta)+dx (sin-theta)
y_new=y_previous+dy(sin-theta)−dx (cos-theta)
And clockwise:
x_new=x_previous+dy(cos-theta)−dx (sin-theta)
y_new=y_previous−dy(sin-theta)−dx (cos-theta)
It should be noted that we are referenced to the Y-axis, not the X-axis, so signs in these equations are slightly different from the standard 2D transformation matrix. The initial starting condition is configured to be pointed along the Y vector straddling Quadrants 1 and 2 where: x=0; y=0; theta=pi/2; cos=0; and sin=1
Rotation is determined by a difference between X0 and X1. Change in X and Y is determined by:
dx=(X1_new+X0_new−X1_old−X0_old)/2; and
dy=(Y1_new+Y0_new−Y1_old−Y0_old)/2.
The result is that if the handheld printer 100C is oriented mostly “north” (aligned with the Y axis), a large change along Y yields, a large change in Y-position. But if the handheld printer 100C has rotated so that it is oriented mostly “east” (with the X-axis), a large change along Y yields a large change in X-position.
The position commutation unit 1206 outputs the rotated, trigonometrically computed X and Y positions and stores them to the position and control registers 1204 so that they are readable by the processor system interface 1202 and the print head controller 1212.
The print control circuits (print head controller 1212, print firing unit 1214 and clock 1216) of the handheld printer 100C are advantageously separated from the processor system interface 1202 and the position computation circuitry. This allows the non-real-time nature of the CPU control to operate independently from the very specific timing requirements for the print head 1108.
The clock 1216 provides a “heartbeat” for controlling printing and in one embodiment is a 1 KHz clock signal generated by crystal oscillator such as part of a field program gate array.
The processor system 1102 treats each rising edge of the clock signal like a rising edge interrupt. At each interrupt, the processor system 1102 reads the position registers 1204 to determine if the handheld printer 100C is at a new location. If the location is unchanged, the processor system 1102 zeroes out control registers 1204 for the twelve of the ink jet head controls. This prevents any nozzles from being fired on the print medium. If the location is changed, the processor system 1102 determines which, if any, of the nozzles need to be fired to print a dot at the new position. The processor system 1102 stores 1's in the control registers 1204 corresponding to the array of 1-12 nozzles of the print head 1108 that need a drop and should be fired.
The print head controller 1212 reads the control registers to determine which if any nozzles of the print head 1108 should be fired. The print head controller 1212 is coupled to the clock 1216 to receive the clock signal, to the position and control registers 1204 to receive the position and control signals, and the print firing unit 1214 to send print signals. At the falling edge of the 1 KHz clock, the print head controller 1212 samples the control registers 1204 or alternatively the processor system interface 1202 to determine which nozzles to fire. Therefore, the processor system 1102 has half of a 1 KHz clock cycle to post updated nozzle firing data to the control registers 1204 or alternatively send signals via the processor system interface 1202. Once the print head controller 1212 samples or latches the nozzle firing data, it is provided to the print firing unit 1214. The print firing unit 1214 generates the explicit nozzle timing firing data required by the print head 1108. For example, in one the print head 1108 is ink jet head with 12 nozzles that can be fired in specific pairs, with a specific timing requirement of 4.5 usec active and 500 nsec between firing times. So the exact nozzles are fired very quickly with regard to the overall timing of the print interface. Firing consumes 30 microseconds (12 nozzles fired 2 at a time in 5 usec periods) out of a 1 KHz (1000 μsec) snapshot; this is only a 3% active timeframe. Thus, the processor system 1102 must be fast enough to respond to new position updates in this 1 KHz timeframe. Those skilled in the art will understand that there is an overall duty-cycle requirement depending on the type of the ink jet head utilized. Furthermore, when the handheld printer 100C is moved at a rate of 1 inch/second (a typical movement rate), 1 KHz provides the maximum dot resolution of 1000 dpi. The print head 1108 itself only supports 100 dpi (spacing of the nozzles), so the present invention can be adjusted to absorb tracking accuracy and firing trajectory issues.
Referring now to
Referring now to
The foregoing description of the embodiments of the present invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the present invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. For example, the embodiments presented above with only one print head may be considered to be a monochrome printer (one color of ink). However, full color printing is possible by extending the presentation here to four print heads, as will be understood by those skilled in the art. It is intended that the scope of the present invention be limited not by this detailed description, but rather by the claims of this application. As will be understood by those familiar with the art, the present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the modules, routines, features, attributes, methodologies and other aspects are not mandatory or significant, and the mechanisms that implement the present invention or its features may have different names, divisions and/or formats. Furthermore, as will be apparent to one of ordinary skill in the relevant art, the modules, routines, features, attributes, methodologies and other aspects of the present invention can be implemented as software, hardware, firmware or any combination of the three. Of course, wherever a component, an example of which is a module, of the present invention is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or dynamically linked library, as a kernel loadable module, as a device driver, and/or in every and any other way known now or in the future to those of ordinary skill in the art of computer programming. Additionally, the present invention is in no way limited to implementation in any specific programming language, or for any specific operating system or environment. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the present invention, which is set forth in the following claims.