The present invention relates to control of stepper motors. More particularly, the present invention relates to apparatus and method for sensorless detection of load torque of a stepper motor and for optimizing drive current for efficient operation.
Stepper motors are used for position control and are designed to operate in open loop (no position feedback). Their inherent stepping ability allows for accurate positioning without feedback.
A stepper motor is usually run at a constant current and the current setting needs to be tuned according to the load conditions of the application in which it is used. The objective of the current setting is to run the stepper motor as cool as possible while ensuring that no steps are skipped (slipping) during operation.
In most situations a stepper motor is operated with motor current that is considerably higher than the actual motor load, i.e., the motor is operated having a torque reserve that is much too high. This leads to excessive current flowing through the motor windings, leading to unnecessary heating of the motor. To arrive at an optimum current level that provides enough torque to avoid slipping, multiple tries based on trial and error are used. In general, a safety margin is provided in the current setting so that the torque equivalent to current setting (i.e., the torque produced by the motor when a current equivalent to the current setting flows through the motor) is sufficiently greater than the load torque (i.e., the torque experienced by the motor from the load) to avoid slipping.
The load torque profile of a stepper motor is not always flat and can have peak torque under certain conditions. The current setting used also depends on the motor speed, higher current being required for higher speed. If the current is set to compensate for peak load torque, it may be too high for other load conditions. This leads to higher power consumption and reduced efficiency. Also, selection of motor power rating will depend on the peak load torque profile.
One known way to control a stepper motor in open loop is called vector control and is illustrated in
A current controller 26 operates by computing Vd and Vq from the calculated currents Id and Iq. The reference current Iq_ref is always set to 0 and the reference current Id_ref is set based on a maximum expected load torque value. The voltages Vd and Vq are then transformed into stationary domain by calculating voltages Va and Vb at reference numeral 28 using an inverse Park transform. A pulse-width-modulation (PWM) module 30 is used to generate drive signals that impose calculated voltages Va and Vb through the stepper motor driver 16. The rotor of the stepper motor moves through command steps at the commanded speed. As indicated above, the “stepper angle” module 20 generates the imposed angle θ based on steps and speed commands set by the user. Each step corresponds to 90 degrees of angle and the rate of change of angle is dependent on the speed. The stepper angle circuit generates angle θ output by integrating the speed input 24 over time. The integration is halted when the angle θ corresponding to the input command steps 22 is reached. The relation between angle θ and the input command steps 22 is given by:
θ=(command_steps*π)/2
The actual motor coil currents are transformed into a rotating reference frame designated d-q at reference numeral 18 using a Park transform based on imposed angle θ according to the equations
I
d
=I
a cos θ+Ib sin θ
I
q
=−I
q sin θ+Ib*cos θ
The voltages Vd and Vq are transformed from the d-q reference frame to voltages in the stationary domain at reference numeral 28 by calculating voltages Va and Vb using an inverse Park transform based on the angle θ according to the equations
V
a
=V
d cos θ−Vq sin θθ
V
b
=V
d sin θ+Vq cos θ
The current controller 26 forces the calculated currents Id and Iq to follow reference currents Id_ref and Iq_ref by calculating Vd and Vq. A PI controller is a simple and widely used form of controller and is suitable for this purpose.
The PWM module 30 compares the input reference signal with a higher frequency modulator signal and generates a pulsed output whose average value is equivalent to the input reference.
The stepper driver 16 imposes driving voltages on stepper coils La and Lb based on signals from PWM module 26. Ultimately, the above solution provides a drive current based on the fixed reference current Id_ref which is based on the maximum expected load torque value. The reference current is thus not dynamic, and leads to wasted energy.
A method is proposed to detect the load torque of a stepper motor and dynamically adjust the current to get best efficiency. The load torque is detected without using any sensor, based on motor voltage, current, resistance and inductance. Stepper motor current is calculated from the load torque. The proposed method may be implemented as an IP in a field programmable gate array (FPGA).
The invention improves the efficiency of a stepper motor drive by optimizing the current. With the present invention, the motor will run cooler due to reduced heat dissipation and reduce or eliminate the need for forced cooling. This will also reduce the size and cost of the motor for an application.
The invention will be explained in more detail in the following with reference to embodiments and to the drawing in which are shown:
Persons of ordinary skill in the art will realize that the following description of the present invention is illustrative only and not in any way limiting. Other embodiments of the invention will readily suggest themselves to such skilled persons.
Referring now to
As in the system depicted in
θ=(command_steps*π)/2
The current controller 26 regulates the transformed currents Id and Iq by calculating Vd and Vq. The reference current Iq_ref is always set to 0 and the reference current is generated dynamically by a reference current generator module 42. The voltages Vd and Vq are then transformed into calculated voltages Va and Vb at reference numeral 28 using an inverse Park transform. A pulse-width-modulation (PWM) module 30 is used to generate drive signals that impose voltages calculated Va and Vb through the stepper motor driver 16. The rotor of the stepper motor moves through command steps at the commanded speed. The “stepper angle” module 20 generates the imposed angle θ based on steps and speed commands set by the user. Each step corresponds to 90 degrees of angle and the rate of change of angle is dependent on the speed.
The currents Ia and Ib are transformed into a rotating reference frame designated d-q at reference numeral 18 by calculating currents Iq and Id using a Park transform based on imposed angle θ according to the equations
I
d
=I
a cos θ+Ib sin θ
I
q
=−I
q sin θ+Ib*cos θ
The voltages Vd and Vq are transformed from the d-q reference frame to voltages in the stationary domain at reference numeral 28 by calculating voltages Va and Vb using an inverse Park transform based on the imposed angle θ according to the equations:
V
a
=V
d cos θ−Vq sin θθ
V
b
=V
d sin θ+Vq cos θ
The current controller 26 forces the currents Id and Iq to follow reference currents Id_ref and Iq_ref by calculating Vd and Vq. A PI controller is a simple and widely used form of controller and is suitable for this purpose.
The PWM module 30 compares the input reference signal with a higher frequency modulator signal and generates a pulsed output whose average value is equivalent to the input reference.
The stepper driver 16 imposes driving voltages on stepper coils La and Lb based on signals from PWM module 30.
According to the present invention, the load angle δ is computed based on measured voltages and currents and is used to calculate the reference current value by reference current generator module 42. The voltage equations of the stepper motor in d-q domain are:
Vd=I
d
R−I
q
Lw+KNw sin δ eq. (1)
Vq=I
q
R+I
d
LNw+Nw cos δ eq. (1)
Where:
N=Number of teeth in the stepper motor
w=Rotor speed
R=Resistance of the stepper motor coils
L=Inductance of the stepper motor coils
K=Back-emf constant of the stepper motor
δ=Load angle which is the angle between rotor magnetic field and stator current
For stepper motor control, Iq is forced to zero, so the above equations can be simplified as:
KNw sin δ=Vd−IdR eq. (3)
KNw cos δ=Vq−IdLNw eq. (4)
The load angle δ can be found from above equations using an inverse tangent, through a look up table, or a CORDIC algorithm, responsive to the inputs Id, Lq and Vd, as:
δ=tan−1(Knw sin δ/KNw cos δ) eq. (5)
Reference current generator module 42 solves eq. (3), eq. (4), and eq. (5), and determines the value of the reference current. The value of δ computed from the above equation is used to set the value of the output reference current Id_ref of reference current generator module 42, which is fed to current controller 26 in place of the fixed reference of the prior art. All of the elements of apparatus 40, with the exception of stepper motor driver 16 and stepper motor 10 are in embodiment implemented in an FPGA 48.
Referring now to
The reference current generator module 42 computes the value of the reference current Id_ref. Equation (3) is implemented in sine term calculator block 50 and equation (4) is implemented in cosine term calculator block 52 to find, respectively, the sine and cosine terms.
The calculated voltage and current Vd, Id_ref, and the resistance R of the stepper coils are presented to sine term calculator 50 on lines 54, 56, and 58, respectively. The value R is a constant characteristic of the stepper motor 10 being controlled, and is thus supplied from a register value set during initial setup or design. The terms Vq, Id_ref, L, N, and w are presented to cosine term calculator 52 on lines 60, 62, 64, 66, and 68, respectively, with L and N being supplied from a register value set during initial setup or design and Id_ref being presented as a feedback from the output of reference current generator module 42. The values L and N are constants characteristic of the stepper motor 10 being controlled, and w is the desired speed command 24 in
Absolute value blocks 70 and 72 convert any negative sine and cosine values, respectively, to positive values, and then an inverse tangent is used to find the load angle δ in arctan block 74. The load angle δ output from arctan block 74 is divided by the quantity π/2 (90°) provided at reference numeral 76 in division block 78 to obtain the ratio of load torque with respect to rated motor torque (torque ratio). As will be appreciated by persons of ordinary skill in the art, arctan calculator 70 can easily be configured from arithmetic circuits that are readily implementable in the FPGA 48.
The torque ratio output from division block 78 is passed through a low pass filter 80 to remove noise. The filtered torque ratio is multiplied at multiplier 82 by a “Maximum current” value setting provided at reference numeral 84 to obtain a current reference representing the current required to meet the load torque on line 86. The Maximum current value setting at reference numeral 84 is set by the user and depends on the application. According to one embodiment of the invention, the value is set to the rated current of the motor. As the current controller module 26 in
The reference current generator module 42 automatically calculates the current required to meet the present load torque. It makes sure only a dynamically calculated current, responsive to the present load, is supplied to the motor instead of driving the motor with maximum current under all load conditions.
The proposed apparatus and method of the present invention is in one embodiment implemented in FPGA 48 because of the simplicity of the equations involved. Persons of ordinary skill in the art will recognize that the present invention is not limited to the use of FPGA devices, but is also applicable to micro-controller or DSP solutions.
Referring now to
At reference numeral 94, a stepper angle is generated from the speed w and number of steps input by the user. At reference numeral 96, the stepper motor is run from the PWM module 30. At reference numeral 98 currents Ia and Ib are measured and converted to values. At reference numeral 100, the Park transform is used to convert the values of the measured currents Ia and Ib to values Id and Iq. At reference numeral 102, the voltage values Vd and Vq are generated from the current values Id and Iq. At reference numeral 104, the load angle δ is calculated. At reference numeral 106, the torque ratio is calculated, responsive to the voltage values Vd and Vq and value Id. At reference numeral 108 the torque ratio is passed through low pass filtered to remove noise. At reference numeral 110, the reference current value Id_ref is calculated by multiplying the filtered torque ratio by the “Maximum current” value. At reference numeral 112 the calculated reference current value Id_ref is provided to the motor current controller (reference numeral 26 in
Referring now to
The graph of
The stepper motor does not rotate until the current reference value is greater than current required to overcome the load torque. As a result the computed load angle continues to increase. When the current reference value increases above the value equivalent to the load torque, the stepper motor starts to rotate and the load angle starts to decrease as shown at reference numeral 120 in
When the load torque undergoes a step change from 10% to 50% as shown at reference numeral 122 in
While embodiments and applications of this invention have been shown and described, it would be apparent to those skilled in the art that the above example is just one of many possible cases and that many more modifications than mentioned above are possible without departing from the inventive concepts herein. The invention, therefore, is not to be restricted except in the spirit of the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
201721045919 | Dec 2017 | IN | national |