I have been working on drives for a while, but one problem that I never seem to be able to really get around is the regeneration that occurs when our PID loop commands a lower speed/torque value while the motor is spinning and I am looking for the 'Aha!' that will guide us.
We generally use a standard 3-phase Space Vector Modulation (SVM) technique, which means that - aside from dead time - there is always a MOSFET that is 'on' in a particular phase. We like it that way as our switches operate most efficiently using this method.
Braking Methods we have Known
I know that this isn't a comprehensive list, but we have considered a few things and I feel that it might be informative to include them.
We integrate drives into small motors (P < 200W), so we simply don't have the space for a braking resistor that is large enough to handle the peak powers involved. We have a motor with ~41J when it is rotating at 50krpm that we need to decelerate in ~300ms, which means that the expected peak power is ~136.7W for a short time. Anything on the size order of a TO-220 would be out of the question.
Large Energy-Storage Capacitor
For many of the same reasons that we wouldn't be able to use the resistor, a large capacitor would not work as well. In order to get a 10V rise, we would have to be able to store the 41J directly on the capacitor, requiring ~1F.
Coasting the Motor
"Releasing" the PWM and allowing the motor to coast is OK in some of our applications, but not most.
Shorting the Low Sides of the Motor (Dynamic)
For very fast deceleration from high speed without regeneration, we have resorted to shorting the low-side MOSFETs for a period. This has the unfortunate side-effect of being an uncontrolled deceleration.
Effectively, reversing the voltage across the motor. This generates some pretty high currents, but does brake the motor. The problem with this one is deciding under what conditions to plug. We have never deployed this one to production because of the high currents involved and the uncertainty of when the software should begin plugging. Small braking events shouldn't plug, but large braking events should... this is a viable option if we could get the software right.
What do I Want from You Guys?
Ideally, I would like to find some PWM technique or timing/conditions that would allow me to effectively plug (see above) in a controlled and predictable manner. I'm under no illusions that I don't have to shove the stored energy somewhere, but I would prefer that the somewhere be across the motor winding since we aggressively cool the winding.