System: DRV 8825 running half step with Vm =36V, current resistor 0,2 ohm, slow decaymode, max current set to 2.1A. Force is made by a spring.
Running the stepmotor at frequencies below 5.5 Khz the output torque from the motor is fine. Picture 1 shows currents and steppulses.
Increasing freq to 6 kHz much torque is lost and as shown at the picture 2 the chopping time is short (only one cycle) It looks like the holding torque during this short choptime is lost or are lost when the steppulse overrides the chopping. Further increasing the frequency to 6.5 kHz current does not reach choplevel and torque is regained.
What happens with the torque is this area where it goes from chopping to not chopping, and what be be done to work. ( it is the same in fast decaymode)
The oscillope pictures shows vaweform for the 3 different frequencies.
Channel B show current in a motorcoil using a current probe, Channel D show the voltage over the current measure resistor and channel C shows the steppulses going high and low (vertical white lines). freq: 5.5 kHz
freq: 6 kHz
freq: 6.5 kHz
regards Henrik
Hi Henrik,
As much as I like to tell people that driving a stepper motor is a simple matter, the truth is far from it. What you are experiencing here is a fairly complex interaction of the laws of physics and there is no way to easily explain what is going on with a single sentence. So let me tell you all the aspects of stepper motor control that are playing a role here:
1. Like you correctly noted, the faster you step, the less current chop cycles you get. This is because it takes so long for the current to reach the tripping point and if you are shortening this amount of time by increasing speed, then the amount of current chop cycles must diminish. This translates into a loss of current regulation or current control. At this point in time you will also see that the PWM duty cycle is in essence 100% so as you can imagine it is not possible to control current anymore.
2. The item we are not taking into consideration is what happens with the BACK EMF. In this case, this is the major reason for torque loss. The faster you step the motor, the higher the BACK EMF. But since the BACK EMF is fighting the current into the motor, it takes longer for the current to charge up the inductor. As a result, you issue a step before the current actually reaches the value you want. As you can imagine this translates into lower average current which must also mean lower torque. This is one of the reasons of why you see the SPEED/TORQUE curve for a stepper diminishing in torque as the speed increases. Eventually the stepper rotor cannot keep up and the motor stalls. Stepper motors, and because they are commutated in an open loop fashion, are not known for being good at fast speeds. They just can't handle it.
3. As if it were not quite complex already, we cannot forget about resonance. As you increase speed, you are also walking into speeds for which resonance is maximized. This is very hard to explain without an actual drawing of what the rotor is doing as steps are issued, but basically what happens is that there are some speeds in which the next step is issued when the rotor is pretty far away from where it should be. Recall that on a stepper, the rotor is being "hammered" into position so the rotor position is actually oscillating in and out of the commanded angle. If you issue a step when the rotor is at its commanded angle, then no resonance occurs. But if you issue a step when the rotor is away from the commanded angle, then some resonance will occur. The farther away the rotor is from the commanded angle, the worst are the resonance effects. This is why you sometimes get better response from a faster speed than a slower speed. To quantify resonance, however, is not an easy topic. Everything in the application will play a role. The motor, the load, the application voltage, the motor current, etc.
4. The last item is the most obscure of them all and in essence I have gone through it with the previous ones, but I thought of adding it hoping it would help to draw the picture. For any motor to properly run, you need the rotor to be 90 degrees out of phase with the magnetic field. This is what we call maximum torque. If the magnetic field and the rotor were perfectly aligned, then the torque would be 0, which is why the motor does not move. When we electronically commutate the stepper, what we are doing is moving the magnetic field 90 degrees into the "future". Same as the bunny and the carrot on a stick. We want the carrot to remain at the same distance away from the bunny so the poor creature feels compeled to go after it with the same intensity. As you go faster, the BACK EMF increases and all of the previous factors come into play, the angle gets worst and worst. Because the system is open loop, we are commutating without taking into consideration how this angle is being adversely affected. In a closed loop system, we would commutate at the right time to ensure the angle is the required 90 degrees, but in an open loop system we are just assuming that we have enough current to counteract the angle discrepancy. As you can imagine, such an implementation can work for only so long, which is why everybody accepts the fact that torque diminishes with increased speed, or as the rotor lags the magnetic field up to the point in which it simply cannot keep up.
So which one of these factors is haunting you? All of them! You cannot look at the system with only one factor playing an adversing role as they are all affecting the motor behavior at once.
So what can you do? Unfortunately not much, or nothing that can be tweaked. Basically what you are experiencing is the limits of the system and this is not a driver issue. As a result, the solutions to this kind of problem are system related and they can be one or more of the following:
1. Increase application voltage: In essence, the higher the input voltage, the faster can the motor move because the faster you can charge the motor winding.
2. Decrease the motor inductance (in other words, change the motor): same as before; if you can increase the winding charge rate, the motor can move faster.
3. Decrease load: I know this is easier said than done, but as the laws of physics set in and the motor losses torque as the speed increases, there is really no way to get this required torque from nowhere. The only way then is to maximize the usage of whatever available torque is present.
I realize none of these solutions are what we want to hear or work with. In most ocassions, they are just not attainable as changing power supply, the motor or the load are not that simple matters. Unfortunately, like I said before, you are approaching the system's limits.
That being said, if you need to go very fast, the stepper motor is not necessarily the best topology. For very fast speeds, BLDC motors are better suited. The only stepper motor that can go fast is the unipolar topology, so this is something else you can try. The DRV8825, however, can only drive bipolar stepper motors. For a unipolar stepper motor, you can try the DRV8805 which has an integrated indexer.
Hope the info helps. Best regards,
Jose Quinones