Pololu Robotics & Electronics
Menu
My account Comments or questions? About Pololu Contact Ordering information Distributors

Pololu Forum

Are decay modes only for stepper motor PWM drive?

It looks like all stepper motor drivers support several decay modes, e.g. slow, fast, mixed, and maybe others I don’t know about. I’ve read that these modes deal with issues that arise from pulsing inductive loads, issues that cause one to want to treat rising currents differently from falling ones. Seems reasonable, assuming I’ve understood things correctly. But in a brief search, I couldn’t find any discussion of decay mode management in either BLDC motor drivers or class-d audio amplifiers. Both these devices pulse inductive loads and drive rapidly changing positive and negative currents through them, just like stepper drivers. Why don’t they support decay modes too?

Additionally, if one were to drive a stepper motor continuously with an analog current signal, would it be reasonable to assume that decay modes are irrelevant? After all, there are no dead times.

Hello.

I am not that familiar with all three applications, but I think the main reason you hear about decay modes more with stepper drivers is that those drivers specifically regulate current and do it for you, as in you just say go to the next step, and you expect it to magically do that for you right away and then be able to hold that current level with minimal deviation (ripple).

The other applications you mention, brushless DC motor drivers and class D audio amps, don’t generally do closed-loop current control. Audio applications have all kinds of measures and characterizations specific to them that I’m not familiar with, but one thing they can have in common with the BLDC systems is that in their fancy forms, they have way more complicated modeling or processing before even getting to the final driver/MOSFET stage. I’ll just stick to the BLDC drivers for the rest of this response since I’ve looked into those a bit more.

In general, BLDC control is much more complicated than what we typically see with steppers (I suppose we could do some equivalent things with stepper motors, too), so I do not even know of many chips that do it all for you the way we get with stepper drivers. Most BLDC parts and applications I’ve seen expect you to do much more in the microcontroller, and the special hardware drivers just give you individual control of the MOSFETs, which means whether you do the equivalent of fast or slow decay is up to you.

There are parts like this, which apparently do a little more for you, and this one does have a fast decay/slow decay option:

https://www.allegromicro.com/en/products/motor-drivers/bldc-drivers/a3930-1

That datasheet mentions this:

“Slow decay allows a lower ripple current in the motor at the PWM frequency, but reduces the dynamic response of the current control. It is suitable for motors which run at a more-or-less constant speed. Fast decay provides improved current-control dynamic response, but increases the motor current ripple. It is suitable for motors used in start-stop and positioning applications.”

However, it looks like those control options are not used for closed-loop current monitoring to achieve a specific current in the coils; it’s more like how many brushed motor H-bridge drivers have the option to PWM between drive and brake (slow decay) or drive and coast (fast decay).

The more sophisticated BLDC motor control approaches do measure the current through all three coils (i.e. measure two and calculate the third from that), but they have more complex models and then use the PWM at the final output stage basically to impose voltages on the three wires to the motor. The half-bridges are going to be driving high or low (as opposed to hi-Z), so that would correspond to what that datasheet above is calling fast decay. But I think that kind of term doesn’t even mean anything since that should apply to current in a particular coil, and with BLDCs the different coils are going to be doing different things at the same time anyway.

So, the short version is probably that for basic speed control of a BLDC motor, you don’t need exact current control as with microstepping on a stepper motor, and for fancy control of a BLDC, you’re gonna be doing way more than what the stepper motor drivers are doing and doing it yourself in the firmware of your MCU.

- Jan

1 Like