The present invention is directed to electric motors and is more particularly directed to a method and apparatus for controlling the position of an electric motor.
Electric motors are often used to drive a work piece. When the motor is stopped, there is a chance that a contact brush of the motor will land very near the boundary between one of the motor's commutator segments. Typically, a count of drive pulse signals applied to the motor is used to determine the motor position and, in turn, the position of the work piece. If the motor contact brush is between commutator segments, the count of the next drive pulse provided to drive the motor may not be accurate in determining motor position. If a drive is inaccurate because of a near brush/boundary condition, the resulting position count will be off by one for that drive. The count errors can accumulate over time which will cause inaccuracy in positioning of the work piece.
This invention uses the known characteristics of the motor to predict how far the motor will coast when turned off. In accordance with the present invention, the motor is turned off at a time that will result in the motor stopping with a commutator brush near the middle of a commutator segment, thus avoiding the segment brush/boundary problem that could possibly result in an inaccuracy of a position determination.
In accordance with one example embodiment of the present invention, a method is provided for controlling a position of an electric dc brush motor including the steps of supplying drive current to drive the electric motor and calculating a coast constant for the motor. Current through the motor is monitored and motor speed is determined in response to monitored motor current. Electrical current to the motor is interrupted in response to the calculated coast constant and the determined motor speed when it is desired to stop the electric motor so that a brush of the motor will come to rest at a location on a commutator segment of the motor.
In accordance with another example embodiment of the present invention, an apparatus is provided for controlling a position of an electric dc brush motor comprising an electrical supply source for supplying drive current to drive the electric motor and means for calculating a coast constant for the motor. A current monitor monitors current through the motor and means determines motor speed in response to monitored motor current. An interrupter interrupts the electrical current to the motor in response to the calculated coast constant, and the determined motor speed when it is desired to stop the electric motor so that a brush of the motor will come to rest at a location on a commutator segment of the motor.
The foregoing and other features and advantages of the present invention will become apparent to those skilled in the art to which the present invention relates upon reading the following description with reference to the accompanying drawings, in which:
Referring to
The motor drivers 26, 28, 30 may take the form of application specific integrated circuits (“ASICs”) each including field effect transistors (“FETs”) that are associated with each dc motor that are driven by the ASICs. When a dc voltage is supplied to one of the dc motors 22, 24 in a first direction, the motor and its associated door is driven in a first direction. When a dc voltage is supplied to one of the dc motors 22, 24 in a second direction, the motor and its associated door is driven in a second or opposite direction.
A drive control 20 commands the door movement in response to door control inputs 48 and turns off the drive command in response to a drive command signal 50. The various door control inputs 48 to the control 20 may include external temperature, radiant temperature, evaporator temperature, air flow, and/or others. In controlling the positioning the doors 42, 44 to their desired positions, the control 20 provides drive commands for driving the dc motors 22, 24. For example, the control may provide the command to move one door by 256 pulses in one direction. To drive the dc motor, the first associated FET of the ASIC provides a constant dc voltage to the associated dc motor and the second associated FET is connected to ground. The constant dc voltage is supplied to the dc motor continuously so that the armature rotates continuously from its starting position to its ending position, which positions the door to its desired position. To stop rotation of the armature of the dc motor, the first and second associated FETs are connected to the same potential.
As the motors 22, 24 rotate, current pulses are occurring. The current through the motors are sensed by a current sensor 60. Each pulse results from a monitored current discontinuity. Current discontinuities result from a brush of the dc motor moving from one commutator segment to an adjacent commutator segment. For example, when the dc motor includes an armature having three commutator segments and two brushes, one complete rotation of the armature results in six current discontinuities. The current sensor is connected to the dc motor via the first and second associated FETs so that the current sensor still senses current discontinuities even when the first and second FETs are grounded. Thus, the ASIC of the system is constantly monitoring for current discontinuities.
Based on the number of current pulses monitored, the position of the motors, 22, 24, and, in turn, the positions of the doors 42, 44, respectively, are monitored in monitor 64. One skilled in the art will appreciate that the position monitor may be part of control 20 and all may be part of a microcontroller. Once the motors' position are known, the speeds of the motors are known and speed signals 66 are provided. The control 20 also includes software for counting the number of received pulses and for determining the actual position of the doors 42, 44 from the determined count. The control 20 includes a non-volatile memory in which position information of the doors are stored.
It is necessary to predict the coast of the motor. The position of the damper doors, i.e., the rotary position of the motor output shaft, is determined by counting drive pulses and referencing from an initial zero position of the motor and knowing the angle of movement of the drive shaft of the motor corresponding to each drive pulse received. However, a position error can occur when determining the motor position due to uncertainty at the end of the drive, i.e., when the drive signal is turned off and motor coast occurs. This occurs due to inertia coasting of the motor due to the motor itself and inertia of the system. Also, the commutator brush can stop between two commutator segment locations so that the first drive pulse applied at startup is counted but does not result in actual movement of the motor. Also, a final pulse applied to a motor may be missed if the current is too low for detection when the motor coasts to a stop. Also, the motor may back up due to cogging forces and the back-up pulse be counted as another forward pulse. These errors are avoided by the present invention by stopping the motor brushes midway between segment boundaries, i.e., making sure the brush is in the middle of a commutator contact. The prediction process and turnoff calculation are shown as elements 70, 72. The result is the turn off command 50 at the correct time to place the brush in the middle of the commutator segment. The relevant equations for the motor are:
T=K·i
E=K·θ
J·θ″+b·θ′=K·I (1)
Where:
Calculate the Laplace transforms of the differentials.
laplace (θ′)=s·Θ(s)−θ(t0)
laplace (i′)=s·I(s)−i(t0)
i(t0):=i0 Initial current at turn off
θ(t0):=0 Initial position set to zero
θ′(t0):=ω0 Initial speed at turn off
So the Laplace transforms become:
laplace (θ″)=(s2)Θ(s)−ω0
laplace (θ′)=s·Θ(s)
laplace (i′)=s·I(s)−i0
Change variables so MathCAD can handle the symbolic math:
I=I(s) Laplace (θ″)=(s2)Q−ω0
Laplace (θ′)=s·Q
Q=Θ(s) Laplace (I′)=s·I−i0
Take the Laplace transform of equation 1.
J·Laplace (θ″)+b·Laplace (θ′)=K·I(s)
J·[(s2)·Q·ω0]+b·(s·Q)=K·I
Take the Laplace transform of equation 2.
L·laplace (i′)+R·I(s)=V−K·laplace (θ′)
If V is zero when motor is turned off, we can expand the rest.
L·laplace (i′)+R·I(s)=−K·laplace (θ′)
L·(s·I−i0)+R·I=−K·(s·Q)
Solving both equations 3 and 4 for I and setting them equal to each other.
We solve for θ (s) {Q}.
Factoring and solving using partial fractions.
Partial fraction expansion:
Take the inverse Laplace transform we get the solution for position.
Note that the inverse transform for the second fraction of the equation has an e with a negative exponent in all the terms. So, as we take t to infinity, this goes to zero, effectively removing this term. So the solution becomes:
L, K and R are known at design time as soon as the motors to be used are selected.
i0 and w0 are measured values at run time.
b and J are unknowns and must be calculated or optimized out.
Determination of b
Forces acting on a motor when driving:
Applied power
External loading (ram air, unit assembly kinematics)
Resistance to motion (friction, b)
When the motor is at steady state, the current (i) drawn by the motor is the amount required to overcome the external forces it is experiencing. At a steady state condition, inertia is not a factor. So equation 1 reduces to:
b·θ′=K·i
Motor speed (θ′), current (i) and motor constant (K) are known, so the damping ratio (b) can be calculated.
To determine the value of J, it is assumed that when stopping a motor, energy may be stored in the rotating elements (inertia, J). This inertia is reflected back to the motor, but is reduced by the gear train. So the amount of inertia due to the external system is small compared to the inertia of the motor itself. This is due to the fact that the doors have little mass. J can be characterized for each motor.
The goal is to turn off the motor drive at such a time that the motor will coast to a stop at the exact desired motor position. With equation (5), we have enough information to calculate when to turn the drive off. The choice of time rather than position as the control variable is due to the fact that the motor position is only known at discrete points, i.e. every time a pulse occurs. This may not give enough resolution to be able to accurately achieve the final motor position.
Starting from predetermined position 0 (we want to move to the desired target position+half a pulse (θtarget+½ pulse). Every time a pulse is received, the current position (θcurrent) is known. So the distance still required to move before turning off the drive can be calculated (θtillturnoff).
θtillturnoff=0target+θ0.5pulse−θcurrent−0coast
At steady state:
If we assume that Li0K<<<Jw0R, then the equation can be rewritten:
Working with distance in units of pulses, if D is the target number of pulses and P is the current number of pulses traveled, then:
Equation (6) is accurate if b is known, but if it must be calculated, then further calculation is required. This is only valid if at steady state, i.e. θ″=0.
To make runtime calculations faster, we reduce the number of operations that must be done at runtime by rearranging the equation to minimize runtime multiplies and divides.
Constants are selected that can be pre-calculated.
New equation is:
The above-calculations require knowledge of the coefficients of the motor that can vary over production lots and time. A different method can be used in accordance with the present invention to estimate a combined factor based on the coasting behavior of previous drives.
The total target position equation is:
If we ASSUME that Li0K<<<Jw0R, then the equation can be rewritten:
If we now assume that the motor constants do not change much from one drive to another and lump them all into one coefficient, C.
To get the value of C, form the equation for an uncontrolled coast.
The last term is the uncertainty in the estimation of C. The range of the last term must be between 0 and 1 pulses, so a min and max for C can be calculated.
Referring to
From the above description of the invention, those skilled in the art will perceive improvements, changes and modifications. Such improvements, changes and modifications within the skill of the art are intended to be covered by the appended claims.
This application claims priority from U.S. Provisional Patent Application Ser. No. 61/097,367, filed Sep. 16, 2008, the subject matter of which is incorporated herein by reference in its entirety.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2009/056831 | 9/14/2009 | WO | 00 | 3/15/2011 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2010/033460 | 3/25/2010 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
4473786 | Miyashita et al. | Sep 1984 | A |
4558265 | Hayashida et al. | Dec 1985 | A |
4760318 | Jones | Jul 1988 | A |
5331262 | Francisco | Jul 1994 | A |
6013996 | Howard et al. | Jan 2000 | A |
6417595 | Wasson | Jul 2002 | B1 |
6686716 | Predina et al. | Feb 2004 | B1 |
6936989 | Hogan | Aug 2005 | B2 |
20080298784 | Kastner | Dec 2008 | A1 |
Number | Date | Country |
---|---|---|
689 02 664 | Sep 1992 | DE |
100 28 037 | Dec 2001 | DE |
10 2004 061 917 | Jul 2006 | DE |
0 087 190 | Aug 1983 | EP |
06-343285 | Dec 1994 | JP |
08-009680 | Jan 1996 | JP |
2003-153571 | May 2003 | JP |
2004-297861 | Oct 2004 | JP |
2005-328972 | Dec 2005 | JP |
20-2000-0015041 | Jul 2000 | KR |
Entry |
---|
The German Examination Report dated Jul. 25, 2012. |
Number | Date | Country | |
---|---|---|---|
20110169432 A1 | Jul 2011 | US |
Number | Date | Country | |
---|---|---|---|
61097367 | Sep 2008 | US |