This application is a section 371 of PCT/EP2003/014 211, filed 13 Dec. 2003, Published 14 Jul. 2004 as WO 2004-059 830-A3, claiming priority from German application 102 61 583.7, filed 31 Dec. 2002, the entire disclosure of which is hereby incorporated by reference.
The invention concerns a rotor position sensor arrangement and a method, in particular for an external-rotor motor, for sensing the rotor position.
U.S. Pat. No. 6,400,109 B1, Hans Helmut, discloses a rotor position sensor arrangement for an external-rotor motor in which the rotor position is sensed with the aid of digital Hall sensors.
In this context, each signal change of a signal generated by the digital Hall sensors indicates that a specific rotor position in the region of a change in the detected magnetic field has been reached, as well as the direction in which the change has taken place. A rotor position datum is thus obtained at discrete rotor positions.
It is therefore an object of the invention to make available a new rotor position arrangement and a new method for sensing the rotor position.
According to a first aspect of the invention, this object is achieved by generating, from at least one sensor a respective rotor Position signal and delivering the signal(s) to a rotor Position evaluation arrangement which converts each analog signal into a digital value having a resolution of at least two bits.
Conversion of the rotor position signal into a digital value having a resolution of at least two bits makes it possible to obtain data from the rotor position signal, even within the angle range of a sensor pole.
According to a further aspect of the invention, the object is achieved by an electric motor having a stator, an external rotor with a sensor magnet having a plurality SP of sensor poles, at least one rotor position sensor for generating a respective rotor position signal, the output(s) of the sensor(s) being connected to an input of a rotor Position evaluation apparatus which includes an A/D converter with a resolution of at least two bits.
The use of an A/D converter having a resolution of at least two bits makes it possible, in the context of an external rotor, to obtain data from the rotor position signal even within the angle range of a sensor pole.
Further details and advantageous refinements of the invention are evident from the exemplary embodiments, in no way to be understood as a limitation of the invention, that are described below and depicted in the drawings.
From signals 16 and 18, the exact position of rotor 10 can be unequivocally ascertained for each position of the rotor and thus at any point in time. This is referred to as an “absolute value sensor.”
The shape of signals 26, 28 exhibits flat regions 30 because, for example as depicted in
The use of a sinusoidal magnetization would cause the rotor position signal to be more similar to a sine wave. A motor with sinusoidal magnetization cannot, however, supply as much output as a motor with trapezoidal magnetization.
External rotor 96 of
If a digital rotor position sensor 95 and/or an A/D converter having a resolution of one bit is used, the result is measurement points 98 depicted with a circle in
If, on the other hand, an analog rotor position sensor 95 and an A/D converter having a resolution of at least two bits is used, the result is measurement points 99 depicted with an X in
Rotor position sensors 42, 44 can also be offset by an angle n*180° el.(sens.)+90° el.(sens.), where n=1, 2, 3, . . . , the sign of the rotor position signal being reversed for n=1, 3, 5, etc.
Unmagnetized region 52 shown in
Drive magnet 50 and sensor magnet 54 are preferably produced integrally. This is done, for example, by simultaneously magnetizing poles 51 of drive magnet 50 and poles 55 of sensor magnet 54 onto a magnetic material. With small motors in particular, unmagnetized zone 52 can also be omitted.
At each north-to-south (N→S) transition of drive magnet 51, a north-to-south transition of sensor magnet 54 preferably also takes place, so that signals 46, 48 are not weakened by the superposition of the magnetic fields in the region of the respective zero transition.
This is achieved by the fact that sensor magnet 54 comprises an odd number of poles, e.g. 1, 3, 5, 7 in the region of each pole of drive magnet 50.
In the case of a four-pole drive magnet 50 (rotor poles=RP=4), sensor magnet 54 can comprise, for example, 4*7=28 sensor poles (SP=28), or 4*5=20 sensor poles (SP=20); or, in general:
SP=(2n−1)*RP, where n=1, 2, 3.
Because of the large number of poles, the rotor position signal is sinusoidal, even with trapezoidal magnetization, so that a good measurement is possible.
Normalization of Signals
Because of a number of influences, measured signals 46, 48 (see
These discrepancies result in errors in the calculation of the rotor position angle phi. A normalization of signals 46, 48 is therefore performed.
At each revolution of rotor 40, measured values MV for each period of sinusoidal signal 46 are sensed in a sensing apparatus 70. The maximum MAX and minimum MIN are ascertained from measured values MV in a filter FILTER 80, and both the minimum MIN and a value ZOOM=AD MAX/(MAX−MIN) are stored in a correction value apparatus 72, AD_MAX being the maximum value of the A/D converter. For a 16-bit A/D converter the value AD_MAX=65,535; for a 10-bit A/D converter AD_MAX=1023.
Upon a subsequent revolution of rotor 40, the following normalization is performed in a calculation apparatus 74 for each measured value MV of sinusoidal signal 46:
MV—N:=(MV−MIN)*ZOOM
Subtraction of the MIN value eliminates DC offset 60 and yields curve 46′ in
Subsequent multiplication by the ZOOM value results in a stretching of curve 46′, and is depicted as curve 46″. This stretching results on the one hand in a normalization of the amplitudes, and on the other hand in utilization of the entire value range 0 through DIGITAL_MAX of the digital number format being used. This also makes it possible to select a lower value for the resolution of the A/D converter than for the resolution of the digital number format being used.
During the previous revolution of rotor 40, values MIN=20,000 and MAX=40,000 were ascertained in the corresponding period. For a 16-bit A/D converter where AD_MAX=65,535 and a 16-bit number format where DIGITAL_MAX=65,535, this results in a ZOOM value=65,535/20,000=3.27675.
During the subsequent revolution of rotor 40, normalization produces the following results:
As is apparent from the results, values that lie outside the value range 0 to AD_MAX, or 0 to DIGITAL_MAX, are limited to that range.
The same normalization is performed (but not depicted) with cosinusoidal signal 48. For normalization in the case of the 28-pole sensor magnet 54 depicted in the exemplifying embodiment, for example, the following number of memory locations is therefore needed:
14(no. of sensor poles)*2(MIN and ZOOM)*2(cosinusoidal and sinusoidal signal)=56 memory locations.
Storage of the correction values MIN and ZOOM is preferably continuous, since temperature fluctuations, for example, can cause changes in signals 46 and 48.
In this normalization apparatus, an averaging operation over the respective previous correction values MIN and ZOOM takes place in filter FILTER 80, for example by storing
MIN=0.9*MIN_OLD+0.1*MIN
as the new MIN value and
ZOOM=0.9*ZOOM_OLD+0.1*ZOOM
as the new ZOOM value. Preferably the ZOOM_OLD and MIN_OLD values are initialized with a predetermined value at startup.
The values MIN_OLD and ZOOM_OLD are temporarily stored in a memory apparatus 82. The averaging operation decreases the effect of greatly divergent measured values.
Alternatively, an averaging of the MIN and MAX values can also take place, from which the ZOOM correction value is also calculated.
Calculating the Rotor Position Angle PHI
Sinusoidal signal 46 and cosinusoidal signal 48 of the 28-pole sensor magnet 54 depicted in the exemplifying embodiment cycle through fourteen periods for each revolution (360° mech.) of rotor 40, i.e. 14*360° el.(sensor) (see
Period counter PER is incremented each time sinusoidal signal 46 exhibits a “zero transition” (approximately at AD_MAX/2; see
The depiction of the value PER that was outputted on an oscilloscope indicates a stepped shape, and at the jumps in the value PER the respective calculated rotor position angle phi_calc is exactly equal to
phi_calc=PER*(360°/14)=PER*(360/SP).
The exact angle PHI between the jumps of the value PER can be calculated from sinusoidal signal 46, i.e. MV_SIN=sin(phi) and cosinusoidal signal 48, i.e. MV_COS=cos(phi) (see
phi—el:=arc tan(sin(phi_sensor)/cos(phi_sensor))=arc tan(MV_SIN/MV_COS).
The calculated angle phi_el cycles through the value range from 0° to 360° el.(sensor) a total of fourteen times, since rotor 40 comprises a sensor magnet 54 having fourteen pole pairs.
Alternatively, a single rotor position sensor 42 can also be used. But because each value can occur twice and is therefore not unequivocal, in this case the previous rotor position signals must be taken into account in order to restore uniqueness.
The calculated rotor position angle phi_calc is determined as
phi_calc=PER*(360°/14)+phi—el/14,
or more generally as
phi=PER*(360°/SP)+arc tan(MV_SIN/MV_COS)/SP.
At any rotor position, the exact rotor position angle phi can thus be calculated by counting the periods of the rotor position signal (or signals) and by additionally evaluating the angle information contained in the rotor position signal (or signals), and an absolute value sensor for a motor having an external-rotor sensor magnet is thus obtained.
This would not be possible with digital Hall sensors, since with the latter a change in the rotor position signals occurs only at certain motor positions, and between those changes no further information can be derived from the rotor position signals.
To enable a measurement in both rotation directions for motors that can run in both rotation directions, the rotation direction can be ascertained from the difference phi_el−phi_el_OLD, between the currently ascertained angle phi_el and the angle phi_el_OLD ascertained at the previous measurement. Care must be taken that this determination does not occur at the time of a jump from 360° el. to 0° el. or vice versa.
If the sign of the difference is positive, the motor is running in the “positive” direction. Calculation of the period counter PER is performed as described above.
If the sign of the difference is negative, however, the motor is running in the “negative”, direction. To ensure continued correct determination of the rotor position angle with a negative rotation direction, at those points at which the period counter is incremented with a positive rotation direction, it is instead decremented. The calculation of the rotor position angle phi_calc is identical.
Stator 39 comprises three winding terminals 131, 132, 133, connected via respective upper transistors 114, 115 and 116 to a positive line 122 and via respective lower transistors 117, 118 and 119 to a ground line GND 124. Three windings 111, 112 and 113 are connected between each two winding terminals 131, 132 and 133.
Upper transistors 114, 115 and 116 and lower transistors 117, 118 and 119 are connected via control lines 161, 162, 163, 164, 165 and 166 to a commutation logic COMMUT LOGIC 167.
Rotor 40 comprises a sensor magnet 54 having twenty-eight poles 55; a first rotor position sensor 42; and a second rotor position sensor 44 (see
μC 100 comprises a timer TIMER1156; an A/D converter A/D 144; a rotor position calculation arrangement CALC_PHI 146 having auxiliary arrangements 146′ (CALC_MV_N, CALC_PER, SET_MAX/MIN); a commutation apparatus COMMUT 148; a rotation speed calculation arrangement CALC_n 150; a controller RGL 152; and a rotor position angle utilization arrangement PHI_WORK 154.
Commutation arrangement COMMUT 148 outputs to commutation logic COMMUT LOGIC 167, via one or more lines 128, a value COMM. The value COMM 128 is determined as a function of the calculated angle PHI_CALC.
As a function of that COMM value, commutation logic COMMUT LOGIC 167 determines which of upper transistors 114, 115 and 116 and lower transistors 117, 118 and 119 are opened and which are closed.
Windings 111, 112 and 113 can thus be energized in both directions; this is referred to as a “full bridge” circuit.
To allow the magnitude of the current flowing through windings 111, 112 and 113 to be controlled or regulated, the upper transistors 114, 115 and 116 or lower transistors 117, 118 and 119 that are to be closed in accordance with COMM signal 128 are triggered via a clocked signal. For that purpose, in addition to COMM signal 128, a value PWM_SW is delivered by controller RGL 152 to commutation logic COMMUT LOGIC 167 via a line 126. The PWM_SW signal is calculated by controller 152, and controls the pulse duty factor.
The energization of stator 39 causes rotor 40 to be driven, and rotor position sensors 42, 44 that are arranged in the vicinity of sensor magnet 54 generate analog rotor position signals SIN_SIG and COS_SIG that are transferred via lines 140, 142 to A/D converter A/D 144.
A/D converter A/D 144 converts signals SIN_SIG and COS_SIG into digital values MV_SIN and MV_COS having a resolution of at least two bits.
The values MV_SIN and MV_COS are delivered to rotor position calculation arrangement CALC_PHI 146 which calculates therefrom, with the aid of auxiliary arrangement 146′, an absolute value PHI_CALC that corresponds to the instantaneous rotor position.
The calculated absolute value PHI_CALC is delivered to commutation arrangement COMMUT 148 for determination of the commutation time, to rotation speed calculation arrangement CALC_n 150 for determination of the rotation speed n, and to rotor position angle utilization arrangement PHI_WORK 154 for further utilization of the calculated angle PHI_CALC.
Rotation speed calculation arrangement CALC n 150 calculates the rotation speed n of rotor 40, and the value n is delivered to controller 152 which calculates therefrom a control input PWM_SW. Control input PWM_SW is outputted via line 126 to commutation logic COMMUT LOGIC 167, and determines the pulse duty factor of the clock timing for upper transistors 114, 115 and 116 and lower transistors 117, 118 and 119.
Further tasks that require the absolute value PHI_CALC are performed in arrangement PHI_WORK 154.
Timer TIMER1156 controls, for example via interrupts, the particular point in time for A/D conversion using A/D converter A/D 144.
The program contains an interrupt routine MV-INTERRUPT S300 that is called by an interrupt 110, for example, every 100 ps, i.e. at regular, predetermined intervals.
In S304 an initialization occurs in which, for example, the variables are initialized. In addition, windings 111, 112 and/or 113 are energized with a predetermined energization pattern so that rotor 40 is rotated into a defined initial state. With a four-pole rotor magnet 50, two positions offset 180° mech. from one another are magnetically equivalent, so that here the initial state corresponds to either one or the other rotor position.
Alternatively, the sensor magnet can comprise a marking to allow assignment of the rotor position. If this initial energization were not performed, the relative rotation angle would be known, but not the absolute electrical angle of rotor magnet 50 needed for commutation.
A main loop then begins at S306. In S306 a flag DO_CALC_MV_N is polled; if it is equal to 1 (Y=Yes), a routine CALC_MV_N S307 is called, and execution then branches back to beginning S306 of the main loop.
In similar fashion, S310 checks whether routine CALC_PER S311 has been requested, S314 whether routine SET_MAX/MIN S315 has been requested, S318 whether routine CALC_PHI S319 has been requested, S322 whether routine COMMUT S323 has been requested, S326 whether routine CALC_n S327 has been requested, S330 whether routine RGL S331 has been requested, and S334 whether routine PHI-WORK S335 has been requested; lastly, in S338 an ALARM routine and further routines necessary for operation of the motor are executed.
The routine MV-INTERRUPT S300 encompasses both the signals SIN_SIG 140 and COS_SIG 142 (see
In S352, the instantaneous values of signals SIN_SIG 140 and COS_SIG 142 are read in via A/D converter 144, and are assigned to variables MV_SIN and MV_COS.
In S354, the value of variable t_MV from the last measurement is assigned to the variable t_MV_OLD, so that it is available for further calculations. The instantaneous value from timer TIMER1144 is read out and stored in the variable t_MV.
In S356 the variable DO_CALC_MV_N is set to 1, thereby requesting the routine CALC_MV_N S307.
In S360 the values of variables MV_N_SIN and MV_N_COS are stored in variables MV_N_SIN_OLD and MV_N_COS_OLD for further calculations.
In S362 a normalization is performed (see description of
In S364 the routine CALC_PER S311 is requested by setting DO_CALC_PER to 1, and in S366 the variable DO_CALC_MV_N is reset to zero.
Execution leaves the routine CALC_MV_N S307 at S368.
S380 checks whether the variable MV_N_COS is greater than 0.9* AD_MAX, i.e. whether the signal COS_SIG is close to its maximum (see description of
If yes (Y), in S382 the rotation direction DIR of rotor 40 is checked. If it is negative, S384 then checks whether the old normalized measured value MV_N_SIN_OLD was greater than or equal to the value AD_MAX/2, and whether the current normalized measured value MV_N_SIN is less than the value AD_MAX/2. This corresponds to a check as to whether the signal SIN_SIG 140 has a zero transition from the positive into the negative range (see description of
If Yes, then a period change has taken place, and execution branches to S388. If No, a period change has not taken place, and execution branches to S398.
For a positive (POS) rotation direction DIR of rotor 40, S386 similarly checks whether the signal SIN_SIG 140 has a zero transition from the negative into the positive range (see description of
If Yes, then a period change has taken place, and execution branches to S388. If No, a period change has not taken place, and execution branches to S398.
In S388, i.e. after a period change, the values of variables ZOOM_SIN(PER) and ZOOM_COS(PER) for the last period are set to the value just calculated (see description of
What occurs in S392 and S394, depending on the rotation direction DIR of rotor 40, is respectively a decrementing of the value of variable PER with the routine DEC_MOD_SP or an incrementing of the value of variable PER with the routine INC_MOD_SP.
The routine DEC_MOD_SP decreases the value of variable PER in consideration of the modulo function of SP. Assuming multiple calls of DEC_MOD_SP and a sensor pole number SP=14, PER thus, for example, cycles through the values 4, 3, 2, 1, 0, 13, 12, . . . 1, 0, 13,.
In similar fashion, assuming multiple calls of INC_MOD_SP where SP=14, PER cycles through the values 12, 13, 0, 1, 2, . . . , 12, 13, 0.
The value (PER*360°/SP) therefore accurately indicates, for both rotation directions, the rotor position angle phi at the time of the period change.
In S396 the variables MAX_SIN(PER), MIN_SIN(PER), MAX_COS(PER), MIN_COS(PER) are reset to the average value AD_MAX/2 so that new maximum and minimum values can be determined for the new period.
In S398 the routine SET_MAX/MIN S315 is requested by setting DO_SET_MAX/MIN to 1, and in S400 the request for CALC_PER S311 is reset.
Execution leaves the routine CALC_PER S311 at S402.
S420 checks whether the measured value MV_SIN is greater than the value MAX_SIN(PER), i.e. the maximum value of MV_SIN so far in that period PER. If Yes, then in S422 MAX_SIN(PER) is set to the value MV_SIN.
S424 checks whether the measured value MV_SIN is less than the value MIN_SIN(PER), i.e. the minimum value of MV_SIN so far in that period PER. If Yes, then in S426 MIN_SIN(PER) is set to the value MV_SIN.
The values MAX_COS(PER) and MIN_COS(PER) are set in similar fashion in steps S428, S430, S432, and S434.
In S436 DO_CALC_PHI is set to 1 (request), and in S440 the request flag DO_SET_MAX/MIN is reset.
Execution leaves the routine at S446.
In S450 the value of the variable PHI is stored in the variable PHI_OLD for further calculations.
In S452 the rotor position angle phi is calculated and stored in the variable PHI (see description of
In S454, S456, and S458 the routines COMMUT S323, CALC_n S331, and PHI_WORK S331 are requested by setting the corresponding request flags.
In S460 the request flag DO_CALC_PHI is reset, and execution leaves the routine at S462.
S470 checks whether the value PHI is less than 30°. If Yes, the variable COMM is set to a value of 1. This corresponds to the commutation pattern necessary for the angle range 0°<=PHI<30°, and the corresponding phases 111, 112 and/or 113 are energized via commutation logic COMMUT LOGIC 167.
In steps S472 through S493, the commutation pattern COMM is set in similar fashion to the necessary value at angular intervals of 30 degrees. Because the value PHI reflects the rotor position at every point in time, commutation requires no time measurement, such as would be necessary in a motor without an absolute value sensor.
In S494 the request flag DO_COMMUT is reset, and execution leaves the routine at S496.
In S500 the rotation speed n is calculated, as follows:
n=60/360°*(PHI−PHI_OLD)/(t—MV−t—MV_OLD).
The rotation speed n is proportional to the quotient of the angular difference between angle PHI at measurement time t_MV and angle PHI_OLD at measurement time t_MV_OLD, and the time difference between measurement time t_MV of the current measurement and measurement time t_MV_OLD of the previous measurement. The factor 60/360° defines the unit as revolutions per minute.
If the measurement is performed at fixed time intervals, the value t_MV−t_MV_OLD is constant and can be replaced by a constant (see interrupt 110 in
The above relationship is derived from
n=60/(2*Pi)w=60/(2*Pi)d/dt PHI(t),
where w is the angular velocity and PHI is to be indicated in radians.
Throughout the program, the value PHI can alternatively be indicated as an angle value, in radians, or in another unequivocally assignable form.
In S502 the control routine RGL is requested by setting the request flag to 1.
In S504 the request flag for the routine CALC_n is reset, and execution leaves the routine CALC-n at S506.
In S510 the system deviation RGL_DIFF is calculated from the difference between target value n_s and true value n.
In S512 the control input RGL_VAL, with proportional component RGL_PROP and integral component RGL_INT, is calculated using an ordinary PI controller. The magnitudes of the components are determined by the factors RGL_P and RGL_I. The equations for calculating RGL_PROP and RGL_INT are indicated.
S514 checks whether control input RGL VAL is less than zero. If Yes, in S516 it is set to the lowest possible pulse duty factor 0.
S518 checks whether control input RGL_VAL is greater than RGL_MAX. If Yes, in S520 it is set to the highest possible pulse duty factor RGL_MAX.
In S522, control input RGL_VAL is assigned to the output value PWM_SW which determines the pulse duty factor and thus the magnitude of the winding current.
In S524, the request flag for the routine RGL is reset, and execution leaves the routine RGL at S526.
Many variants and modifications are, of course, possible within the scope of the present invention.
Number | Date | Country | Kind |
---|---|---|---|
102 61 583.7 | Dec 2002 | DE | national |
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/EP03/14211 | 12/13/2003 | WO | 4/28/2005 |