A print head motor control system uses a desired function of print head position versus time and a measured print head position to form an error signal. The print head controller forms a motor drive signal from the sum of a first term corresponding to the square root of the absolute value of the error signal and a second term corresponding to a dead band signal having a predetermined slope if said error signal exceeds a predetermined value. The desired function of print head position versus time may be formed by double integrating a desired function of print head acceleration versus time. The print head motor control preferably also includes a velocity loop subtracting a print head velocity estimated from the measured print head position from the sum. The print head motor control is preferably implemented using a microprocessor.
|
|
This application claims priority under 35 USC §119(e)(1) of Provisional Application No. 60/296,834, filed Jun. 8, 2001.
The technical field of this invention is servo control and more particularly control of print head position and velocity during printing.
Ink jet printing requires careful control of the print head speed during a printing pass across the paper. It is generally desirable to have a constant print head velocity during printing. This involves four phases of print head drive control. In a first phase the print head is held in position beyond the beginning of the print swath. In a second phase the print head is accelerated up to the desired print velocity. During the third phase the velocity is regulated to be constant during actual printing. In the fourth phase after passing the end of the print swath, the print head is decelerated to a stop. In order to increase the printer throughput, it is common to limit the print head carriage travel to less than the entire page width for lines that do not require printing across the entire page width. This could occur for text at the end of a paragraph. Following this deceleration, the controller returns to the first phase where it holds print head position.
Interface circuits 120 include quadrature pulse encoder (QEP) decoder/counter 121, digital to analog converter 123 and motor drive circuit 125. Quadrature pulse encoder decoder/counter 121 receives the two signals CH_A and CH_B and produces a counter value x indicative of the position of print head 101. The relative phase of the two signals CH_A and CH_B provide an indication of the direction of motion and the number of pulses indicates that amount of travel. Special purpose circuits to embody quadrature pulse encoder decoder/counter 121 are known in the art. A Hewlett-Packard HP-2020 decoder integrated circuit is widely used for this purpose. Digital to analog converter (DAC) 123 receives a digital current command signal icmd from microprocessor controller 130 and converts this into an analog signal driving motor drive circuit 125. Digital to analog converter 123 and motor drive circuit 125 operate to supply electrical power to motor 102 to achieve the desired motion of print head 101. Motor drive circuit 125 is constructed to be compatible with motor 102 to effect control of the position and velocity of print head 101.
Microprocessor controller 130 includes command generator (Cmd Gen) 131, summing junction 132, proportional-integral-derivative (PID) controller 133, velocity estimator 134 and mode switch 135. The name microprocessor controller implies that this function is embodied by a programmed microprocessor. Though illustrated as separate components, it is known in the art to embody the control illustrated in
Microprocessor controller 130 operates in two modes as selected by mode switch 135. In a velocity mode velocity estimator 134 forms a velocity estimate vest of the print head 101 velocity from the position signal x. Summing junction 132 subtracts this velocity estimate vest as selected by mode switch 134 from the command signal r. In a position mode, mode switch 135 selects the position signal x. Summing junction 132 subtracts the position signal x from the command signal r.
During time interval t2 microprocessor controller 130 is in an acceleration phase. Mode switch 135 selects the velocity estimate vest from velocity estimator 134. Command generator 131 generates the command signal r corresponding to the desired velocity. As illustrated in
During time interval t3 the printing takes place. Microprocessor controller 131 is in the velocity mode and commands a constant velocity. Proportional-integral-derivative controller 133 produces a current command signal icmd to achieve this desired constant velocity.
During time interval t4 microprocessor controller 130 is in a deceleration phase. Command generator 131 generates a command signal r corresponding to decreasing velocity, eventually reaching a zero velocity. In this example, this deceleration phase stops print head 101 at the end of the current print line. This is not necessarily the end of the printable part of the page.
Time interval t5 is another hold position interval. Mode switch 135 selects the position signal x and command generator 131 produces the command signal r corresponding to the desires hold position. In this example the desired position during time interval t5 is at the far right, the opposite end of the range of travel of print head 101. Print head 101 is now in position for another printing pass in the opposite direction.
Another commanded print head movement takes place during time intervals t6, t7 and t8. For time interval t6 microprocessor controller 130 is in velocity mode and mode switch 135 selects the velocity estimate vest. Command generator 131 commands a linearly increasing velocity resulting in acceleration. The sign of the voltage command is negative indicating travel in the opposite direction than during time intervals t2, t3 and t4. During time interval t7 command generator 131 commands a constant return velocity for the printing pass. During time interval t8 command generator 131 commands a linearly decreasing velocity resulting in deceleration of print head 101. Finally, microprocessor controller 130 switches to position mode via mode switch 135 and commands a constant position during time interval t9.
Despite the wide use of the print controller technique of
A print head motor control uses a desired function of print head position versus time and a measured print head position to form an error signal. The print head controller forms a motor drive from the sum of a first term corresponding to the square root of the absolute value of the error signal and a second term corresponding to a dead band signal having a predetermined slope if said error signal exceeds a predetermined value.
The first term preferably uses the following formula:
where: v1 is the desired first term; e is the error signal; |e| is the absolute value of the error signal; and sign(e) is the sign of the error signal e, 1 if e is greater than zero and -1 if e is less than zero. The second term preferably uses the following formula:
where: v2 is the desired second term; max( ) is the maximum function returning the maximum of its arguments; and Kdz is a predetermined constant indicative of the size of the dead zone.
The desired function of print head position versus time may be formed by double integrating a desired function of print head acceleration versus time. This desired function of print head acceleration preferably includes: a stored acceleration value and a corresponding predetermined acceleration time for an acceleration segment; a calculated time for a constant velocity segment having zero acceleration; a stored deceleration value and a corresponding predetermined deceleration time for a deceleration segment; and a calculated time for a dwell segment having zero acceleration and zero velocity.
The print head motor control preferably also includes a velocity loop. The print head velocity is estimated from the measured print head position. This estimated print head velocity is subtracted from the sum 235. The resulting difference is scaled to form the motor drive. The velocity estimate preferably includes a low pass filter.
The print head motor control is preferably implemented using a microprocessor.
These and other aspects of this invention are illustrated in the drawings, in which:
In accordance with the present invention, the command profile is stored as an acceleration profile. This is shown in tabular form in Table 1.
TABLE 1 | |||
Segment | Acceleration | Samples | |
acceleration | a_accel | n_accel | |
constant velocity | 0 | n_cv | |
deceleration | a_decel | n_decel | |
dwell | 0 | n_dwell | |
Note that this technique requires the storage of very little data. The magnitude of the acceleration a_accel and of the deceleration a_decel together with their respective durations n_accel and n_decel are preferably selected after consideration of the mass of print head 101 and the torque capacity of motor 102. These quantities can be fixed for any particular printer. The duration of the constant velocity n_cv is preferably selected based upon the print width for that particular print pass. Thus this quantity may be variable down the page. The duration of the dwell n_dwell is also preferably variable to accommodate variable amounts of data processing between print passes.
The desired position command is obtained by double integration in double integrator 231. Double integrator 231 preferably implements the following difference equations:
where: an is the current time sample acceleration; vn is the current time sample velocity; vn-1 is the velocity of the prior time sample; xn is the current time sample position; and xn-1 is the position of the prior time sample. Note that rounding problems in this double integration may be avoided using acceleration amounts a_accel and a_decel which are whole integers.
The servo loop includes summing junction 232, compensators 233 and 234 and summing 235. Summing junction 232 forms error signal e by subtracting the position signal x from the position command signal xcmd. Compensators 233 and 234 operate in parallel and serve as the heart of the control system.
Thus compensator 233 forms the square root of the absolute value of error signal e having the same sign as error signal e. Compensator 233 had a large slope near zero error and a decreasing slope for increasing error. Compensator 234 preferably implements the following equation:
This equation forms two sloping lines offset with a dead zone of Kdz. Thus compensator 234 has no effect when the error signal e is small.
The velocity loop includes summing junction 236, velocity estimator 237 and gain element 238. Summing junction 236 forms the difference between the velocity command signal vcmd from summing junction 235 and the velocity estimate vest from velocity estimator 237. The output of summing junction 236 is supplied to gain element 238, which provides a gain or scaling factor of Kp. The output of gain element 238 is the current command signal icmd. Velocity estimator 237 preferably implements the following equations:
These equations correspond to differentiation of the position signal x followed by a low pass filter function. The low pass filter smooths the differential output.
This modified microprocessor controller provides several advantages. The command signals are advantageously stored as an acceleration profile. As shown in Table 1, this requires storage of little data for complete specification of the desired print head motion. The square root term (compensator 233) provides high stiffness at low error values. This permits accurate positioning at slow speeds and near the final position. This also avoids the hunting problem often observed in prior art proportional-integral-derivative controllers because the controller output does not depend upon previous controller outputs. Because this positioning does not depend upon an integrator to generate a high enough drive to overcome possible static friction, the cause of hunting is eliminated. The dead band function of compensator 234 provides large slew at large error. This reduces the rise time during acceleration and deceleration. This also automatically turns off the extra compensation near zero error without requiring a mode change. This reduces the possibility of transients. The absence of an integrator also reduces the settling time in the slew mode.
Fedigan, Stephen J., Cole, Charles P.
Patent | Priority | Assignee | Title |
6823132, | May 17 2001 | Canon Kabushiki Kaisha | Method and apparatus for controlling motor |
6838855, | May 17 2001 | Canon Kabushiki Kaisha | Method and apparatus for controlling motor |
6935795, | Mar 17 2004 | SLINGSHOT PRINTING LLC | Method for reducing the effects of printhead carrier disturbance during printing with an imaging apparatus |
7265693, | May 27 2005 | S-PRINTING SOLUTION CO , LTD | Method and apparatus for detecting position of movable device |
7415239, | Jul 28 2004 | Canon Kabushiki Kaisha | Conveying apparatus and recording apparatus having the same |
Patent | Priority | Assignee | Title |
4270868, | Oct 24 1978 | IBM INFORMATION PRODUCTS CORPORATION, 55 RAILROAD AVENUE, GREENWICH, CT 06830 A CORP OF DE | Digital pulse-width modulated printer escapement control system |
4459675, | Oct 16 1981 | International Business Machines Corporation | Printer control system with error count averaging |
4463435, | Oct 16 1981 | International Business Machines Corporation | Printer control system with controlled acceleration and deceleration |
5748206, | Jan 24 1996 | Brother Kogyo Kabushiki Kaisha | Printer |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Oct 19 2001 | COLE, CHARLES P | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 012905 | /0045 | |
Oct 24 2001 | FEDIGAN, STEPHEN J | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 012905 | /0045 | |
May 08 2002 | Texas Instruments Incorporated | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Sep 26 2006 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 22 2010 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Sep 24 2014 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Apr 29 2006 | 4 years fee payment window open |
Oct 29 2006 | 6 months grace period start (w surcharge) |
Apr 29 2007 | patent expiry (for year 4) |
Apr 29 2009 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 29 2010 | 8 years fee payment window open |
Oct 29 2010 | 6 months grace period start (w surcharge) |
Apr 29 2011 | patent expiry (for year 8) |
Apr 29 2013 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 29 2014 | 12 years fee payment window open |
Oct 29 2014 | 6 months grace period start (w surcharge) |
Apr 29 2015 | patent expiry (for year 12) |
Apr 29 2017 | 2 years to revive unintentionally abandoned end. (for year 12) |