Abstract:
A brushless sensorless DC motor assembly computes rotor position by examining the current measurements of the stator windings. The brushless DC motor assembly includes a rotor and a set of stator windings that are adapted to drive the rotor. In addition, a power amplifier is adapted to apply a voltage to each stator winding in sequence according to a received sequence of switching signals. Also included is a terminal that is adapted to receive a commanded rotor stopping position from a user input device or a controlling computer. A current sensing assembly permits the determination of the current through each stator coil to produce a sequence of stator coil current values over time. A data processor is adapted to calculate the sequence of switching signals based on the received commanded rotor position and the computed rotor position. The calculation of the computed rotor position is based on the most recent set of stator coil current values and the most recent set of the computed switching signals.

Description:
BACKGROUND OF THE INVENTION 
     The present invention involves the computation of a rotor position for a brushless DC motor assembly that does not include a rotor position sensor. 
     Furthermore, the present invention involves the use of the computed rotor position to control the rotor position. 
     Brushless DC motors are typically used in the 0.5 to 5 horsepower range and in applications in which there is a fair amount of stopping at precisely controlled positions. One example of this type of application is in the drive for an x-y table in a machining operation. An x-y table moves a workpiece in an x-y plane while the workpiece is being machined by, for example, a laser. Quick acceleration is desirable so that the machining may be performed rapidly. Perhaps more importantly, table positioning repeatability is crucial, so that the machining can be accurate. 
     Because of the need for precisely repeatable stopping that is necessitated by applications such as x-y table control, brushless DC motors (BDCMs) typically include some device for sensing rotor position. This information is then fed to a servo so that stopping position may be accurately controlled. Unfortunately, the sensors used for this purpose tend to be expensive, frequently costing as much as the motor does, and delicate. 
     FIG. 1 shows a typical prior art servo control loop 10 for a BDCM 11. Everything shown, except for BDCM 11, position encoder 12 and amplifier 24 is implemented as software in a data processing assembly that forms a part of the motor assembly. Because both the prior art system and the system of the invention may be digital, this application contains many references to time intervals. The position encoder periodically forms measurements of the rotor position which are sent to the rest of the system in digital form. These measurements are time indexed by a subscript &#34;n&#34; in the equations that follow, although this subscript may be omitted when the equation includes variables from a single time interval only. The duration of the time intervals between measurements is denoted by &#34;dt.&#34; The current time interval is denoted by &#34;N.&#34; These conventions remain constant both in the discussion of the prior art and the invention. 
     To determine a position error the measured rotor θ m , from a position encoder 12, is subtracted from the commanded rotor stopping position θ c  at a comparator 13. This is multiplied by a constant, k.sub.θ, at a P block 14 and limited by an ω (rotor speed) limiter 16 to find the commanded ω, ω c . The limiter 16 sets the value of ω c  as follows: 
     
         ω.sub.c =min{ω.sub.m +maxω.sub.δ ; ω.sub.max ; k.sub.θ (θ.sub.c -θ.sub.m)}           (1) 
    
     Where maxω.sub.δ and ω max  are user selected and represent respectively the maximum increase in ω c  in one time interval and the maximum value for ω c . 
     The limiter is necessary because the commanded position θ c  may have a large value that reflects, for example, several thousand rotations beyond the measured position θ m . In this event, without the limiter 16, ω c  would assume a larger value than could be supported by the BDCM 11. When θ c  -θ m  becomes small, however, it is desirable for ω c  to decrease in anticipation of the rotor stopping. Also, when the motor is first beginning to rotate, maxω.sub.δ keeps commanded acceleration to within achievable limits. 
     At a differentiating block 20 θ m  is differentiated to yield the measured rotor speed ω m , which, at a comparator block 18 is subtracted from ω c  (for subsequent time interval N+1). The resultant value ω.sub.δ  is fed through a PI block 22, which performs the following operation: 
     
         T.sub.cN =k.sub.1 Σ.sub.0.sup.N ω.sub.δn dt+k.sub.2 ωN                                                  (2) 
    
     The output, T cN , is referred to as the torque or current command and is sent to an amplifier controller 23. The encoder values also feed a commutator 26 that has the task of supplying, to the amplifier controller, the angle for the electromagnetic field to be created by the stator windings as driven by the amplifier 24. 
     FIG. 2 shows amplifier 24 having a set of six transistors Q 1  -Q 6  that are controlled by controller 23 to create an electromagnetic field of the commanded angle and magnitude (as received from the commutator 26 and PI block 22) by controlling the current through the stator windings of BDCM 11, each of which is connected to an output line 30a-30c. Diodes D1-D6 are for safety purposes. The voltage at the top or front of the swithces, V f  is produced by a rectifier 35 and is measured by resister R 1 , because there may be occasional deviations from the desired value of V f . The voltage at each one of the terminals 30a-30c may be deduced from a knowledge of the most recent switching times and the actual value of V f . Because a switching amplifier such as amplifier 124 can produce a voltage pulse having a time duration on the order of 0.8 μsec, which is far shorter in duration than the time constants of the stator windings, accurate control of the voltage at the motor terminals is possible, with the motor 111 input voltages appearing as sin waves over time. Elements 312-320 will be discussed below. 
     Although it has long been known that commutation information could be obtained by examining the voltage-to-current relationship (&#34;V/I&#34;) at the input terminals of a motor, this information was thought to be too noisy, particularly as the motor slowed as it neared a commanded stopping position, and as it subsequently stopped, to be of practical benefit in determining and controlling rotor position. 
     What is, therefore, needed but not yet available is a brushless sensorless DC motor assembly that can repeatedly turn and accurately stop at a commanded position. 
     SUMMARY OF THE INVENTION 
     The present invention is a brushless DC motor assembly that includes a rotor and a set of stator windings that are adapted to drive the rotor. In addition, a power amplifier is adapted to apply a voltage to each stator winding in sequence according to a received sequence of switching signals. Also included is a terminal that is adapted to receive a commanded rotor stopping position from a user input device or a controlling computer. A current sensing assembly permit the determination of the current flowing through each stator coil to produce a sequence of stator coil current values over time. A data processor is configured to repeatedly calculate the switching signals for the amplifier based on computed rotor position and commanded rotor stopping position and to calculate the computed rotor position based on past switching signals and the stator coil current values. The sequence of computed rotor positions is used to slow the rotor as it approaches the commanded stopping position. 
     In a separate aspect, the present invention is a method for controlling the rotor position of a brushless DC motor assembly having a set of power terminals and a power amplifier adapted to apply a voltage to each power terminal in sequence according to a received sequence of timing signals. The method comprises, recording each of the timing signals; determining the current at each of the power terminals to form a sequence of stator coil current values; computing the rotor position based on the sequence of stator coil current values and the recorded timing signals; receiving a commanded rotor position; forming a comparison of the commanded rotor position to the computed rotor position; and adjusting the timing signal sequence in response to said comparison. 
     In another separate aspect of the present invention the amplifier is controlled to create a static electromagnetic field that is maintained without reference to any measurements after the rotor reaches a point within a predetermined distance of the commanded stopping point. 
     In yet another separate aspect the present invention is a brushless DC motor assembly similar to that described in the first paragraph of this section except for that the assembly additionally includes a set of voltage sensors, each electrically connected to a respective stator winding and producing a sequence of voltage measurements over time, which are used by the data processing assembly, along with the stator coil current values to calculate the computed rotor position. 
     The foregoing and other objectives, features, and advantages of the invention will be more readily understood upon consideration of the following detailed description of the invention, taken in conjunction with the accompanying drawings. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram, showing the servo loops, of a brushless DC motor assembly according to the prior art. 
     FIG. 2 is a schematic diagram of the switching amplifier of FIG. 1. 
     FIG. 3 is an illustration of a brushless DC motor. 
     FIG. 4 is a block diagram, showing the servo loops, of a brushless DC motor assembly according to the present invention. 
     FIG. 5 is a graph of motor speed versus position. 
     FIG. 6 is a block diagram, showing the servo loops, of an alternative brushless DC motor assembly according to the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 3 is an illustration of a prior art 2-pole brushless DC motor 11 that is presented here for the purpose of explaining a few coordinate system conventions that should make the remainder of this section easier to understand. There are three pairs of oppositely wound stator windings 38a, 38b, and 38c, driving a pair of oppositely charged rotor poles 40. Two coordinate systems are typically used in describing the electromagnetic fields of this motor. The first is a stationary system that is typically arbitrarily fixed with a direct axis or d-axis coinciding with one of the windings, and a quadrature or q-axis at 90°. 
     The other coordinate system used rotates with the rotor with the direct axis being coincident with an arbitrarily chosen rotor arm and the quadrature axis being at 90° to the direct axis. The stationary and rotating coordinate systems are distinguished a superscripted &#34;s&#34; or &#34;r,&#34; respectively. The angle between the d-axis of the stationary coordinate system and the rotating coordinate system is designated γ and is coincident with the position of the rotor, because the rotating coordinate system is defined in reference to the rotor. 
     Referring to FIG. 4, a preferred embodiment of a brushless DC motor assembly 110 according to the present invention, is similar in general form to the prior art motor assembly 10 of FIG. 1. Similar or identical features are indicated with the same reference number plus 100. Again, everything but the amplifier 124, the current sensors 112 and the motor 111 may be implemented as software in a data processing assembly. Skilled persons will readily recognize, however, that many of these functions could be hardwired into a data processing assembly, and this also fits within the scope of the invention. The greatest difference between assembly 10 and assembly 110 is that assembly 110 does not include any position encoder, such as encoder 12 of assembly 10. Assembly 10 uses the periodic, digitized measurements, I 0A  to I NA  and I 0B  to I NB  formed by a set of current sensors 112, each of which is located at a power input terminal (stator winding) of the motor. The values of I 0C  to I NC  are formed by subtracting I 0A  and I 0B  from zero. In a preferred embodiment, the periodicity of the current measurements is 0.5 msec. Referring to FIG. 2, current measurements may alternatively be formed in the amplifier 124, which is identical to amplifier 24. For example, if a single current sensor positioned as shown by sensor 312, or alternatively, positioned as sensor 314 could measure the current being sent from line V f  to the active stator coil. Coupled with the transistor (Q 1  through Q 6 ) timing information, this yields the current through each stator coil. Alternatively, a set of current sensors, such as sensor 316 through 320 could yield the desired stator coil current information. 
     In block 146, the three phase measurement of current is transformed into a stationary d-q coordinate system to yield I 0d  -I nd  and I 00  -I nq  through a well known coordinate system transform that is not repeated here. In block 144, I, V and R in stationary d-q coordinates are used to compute the rotor flux, in the stationary d-q coordinate system, through equations 3 and 4. In one preferred embodiment, the voltage applied at each terminal, for each time interval 0, . . . , N is deduced based on a measurement of the V f  (note FIG. 1)and knowledge of the commanded switching timing of transistors Q 1  through Q 6 , from amplifier controller 123. 
     In another preferred embodiment the voltage at each stator terminal is measured using a pair of voltmeters, which in this preferred embodiment, are present in block 112. 
     
         φ.sub.rd =Σ.sub.0.sup.N (V.sub.sdn -I.sub.sdn R.sub.s)dt-Li.sub.sdn                                     (3) 
    
     
         φ.sub.rq =Σ.sub.0.sup.N (V.sub.sqn -I.sub.sqn R.sub.s)dt-Li.sub.sqn                                     (4) 
    
     Where: 
     L=Stator Inductance 
     n=Current time interval 
     V sdn  =Direct phase stator coil voltage at time interval n. 
     V sqn  =Quadrature phase stator coil voltage at time interval n. 
     I sdn  =Direct phase stator coil current at time interval n. 
     I sqn  =Quadrature phase stator coil current at time interval n. 
     In block 148, the first block of phase locked loop 149, the rotor flux is transformed into a frame of reference that is transposed from the stationary d-q frame of reference by an estimate of the angle γ (which separates the stationary frame of reference from the rotating frame of reference). This estimate, γ e , is formed in block 156 and will be described later. For the first time frame N=0, the rotor is driven to a predetermined starting position γ 0  and an arbitrary starting value is used for γ e . Within a few time frames, γ e  approaches the actual value of γ 0 . 
     The transformation performed in block 148 is shown below in equation (5). ##EQU1## 
     The superscripts in the above equation indicate rotating versus stationary frames of reference. 
     The angle by which γ e , differs from the actual rotor position γ is referred to as the error angle and denoted as ε n , for a particular time interval n. The value of ε equals ARCTAN(φ rq   r  /φ rd   r ), which, when it is small, is approximately equal to (φ rq   r  /φ rd   r . This computation is performed in block 150. During normal operation ε will be quite small because γ is continuously updated, so the estimate φ rq   r  /φ rd   r  is quite accurate and is used. 
     The error value ε n  is fed through a PI block 152 to find the accumulated error ε a  in measured ω. 
     
         ε.sub.a =k.sub.3 Σ.sub.0.sup.N ε.sub.n dt+k.sub.4 εn                                                (6) 
    
     In block 154 the value of ε a  is added to the commanded ω feed forward for time period N, ω ffN  from omega limiter 116 to form the ω measurement for time period N, ω mN . At comparator 118, this value is subtracted from ω ff (N+1) in much the same way as in prior art control loop to find ω.sub.δ(N+1), which is used, as in prior art servo 10, to determine the commanded torque, T C (N+1). 
     Unfortunately, the computation of EQs. 3 and 4 becomes quite noisy when the rotor is turning slowly. This is because each term on the right side of these equations is a measured or deduced quantity that includes a measurement or deduction error in addition to the true or actual quantity. When the rotor is turning rapidly the true portion is large and dominates the measured or 115 deduced quantity. But when the rotor slows down, the error portion becomes a more significant part of the total quantity, thereby causing EQs. 3 and 4 to be less accurate then they are otherwise. 
     The use of the summation of EQ. 6 helps to mitigate the effect of measurement errors because any distortion in the value of ε is multiplied by dt which is always on the order of tenths of milliseconds, thereby reducing the effect of any particular measurement error in the equation. 
     Finally, in block 156, ω m0 , . . . , ω mN  are summed together to form γ e (N+1) and θ eN+1  (by convention γ has values of no more than 360°, whereas θ may assume any value). The value γ e (N+1), as noted previously, is sent to block 148, to serve as the basis of the vector transformation into the rotating d-q coordinate system for the N+1 sampling time. The value θ e (N+1) is sent to comparator 113 where it is subtracted from θ c (n+1) to yield θ.sub.δ, which is used in the same manner as in prior art assembly 10. As θ en  approaches θ c , k(θ c  -θ en ) becomes less than the ω max  imposed by the ω limiter 116 and ω c  is set to equal k(θ c  -θ en ). Therefore, the accuracy of θ en  is crucial to the accuracy of the rotor speed as it slows to a stop. Because of the computation method, including the use of a phase lock loop, this accuracy is great enough to produce excellent system performance. 
     Referring to FIG. 5, when the rotor approaches its commanded stopping position and, as a result, ω slows to less than 3 radians/sec, the control loops are opened up (i.e. computation is stopped) and the amplifier 124 is commanded to hold the rotor in place by the constant application of a fixed set of stator currents. 
     This avoids the problem of position measurement drift that occurs when the control loops are operated when the rotor is slowed or stopped. When the rotor is commanded to move again, its starting position for running the position control loop is set equal to the fixed position in which it was maintained. Although amplifier 124 is a switching amplifier, a constant current can be maintained because the switching period of 0.2 msec is much briefer than the time constant of the stator windings. Although the accuracy of this stopping position is effected by the anomalies and inaccuracies of the placement of the magnets and stator coils in BDCM 111, these anomalies and inaccuracies are permanent, so they do not reduce the precision of the repeatability of stopping. That is, if the same stopping position θ c  is commanded more than once, the rotor will stop in the exact same position (to within 1/8,000th part) both times. For any type of calibrated equipment, an x-y table for example, it is repeatability that determines the precision of the table placement, because the inaccuracies may be calibrated out of the system. 
     FIG. 6 is a block diagram of an alternative preferred embodiment 210 of a brushless DC motor assembly. Components which are the same as for the embodiment shown in FIG. 4 are marked with identical reference numbers. Unlike embodiment 110, this embodiment includes a position profiler 180. Position profiler 180, commands a θ c  profile and was profile over time. This type of control is used, for example, in x-y tables during machining operations, when not only the ending position is important, but in which the exact position at each moment must be precisely controlled so that it is coordinated properly with machining equipment, (e.g., a laser) that is being activated and deactivated during the machining process. Because the position profiler 180 changes commanded θ c  over time in a manner that takes into account the maximum acceleration and rotational velocity of the motor 111, there is no need for the ω limiter of assembly 110. 
     The operation of assembly 210 is similar to the operation of assembly 110 except for that each position comparison at comparator 113 is critical. The gap between the current computed value of γ and the commanded θ c  for the next time instance determines the rotational velocity desired for the next time interval, which is fed into PI block 122 to determine the torque command (also referred to as current command) for amplifier 124. 
     In the operation of both assembly 110 and assembly 210 the computed error ε is typically zero, because adding ω ff  to the latest computed error ε keeps γ c  current. If there is a sudden change in load on the shaft (e.g. a new workpiece has been dropped onto the x-y table being moved by motor 111) the γ error ε will take on a non-zero value, causing an adjustment to the value of commanded ω for the subsequent time interval until the rotor position δ equals the commanded θ c  from the position profiler 180. 
     The terms and expressions which have been employed in the foregoing specification are used therein as terms of description and not of limitation, and there is no intention, in the use of such terms and expressions, of excluding equivalents of the features shown and described or portions thereof, it being recognized that the scope of the invention is defined and limited only by the claims which follow.