The pwm_deadzone value is the estimate of the minimum PWM setting where the drivers start to turn on. It's only used in the overspeed calculation.
Very short PWM pulses to the MOSFET gates provide minimal motor current and just generate heat. Older IGBTs are even worse, taking a long time to fully turn on. Plus the Cougar uses an optoisolator, which both delays and shortens the gate drive signal.
In my notes I have that the default setting of 5 corresponding to 1.2usec. My early-morning calculation puts it at 600ns (9 cycles at 16MHz). Either is a reasonable estimate.
I'm a little surprised that the Cougar code doesn't have a similar parameter for setting the PWM register, rather than only compensating for it in the overspeed check. The code should enforce a minimum PWM on time, not turning on at all if there would only be a very short output pulse. It doesn't preclude low speed operation. If you continue to accumulate the error, eventually the difference builds up enough that the MOSFETs are turned on for a few cycles. Add a little randomness (A/D converter noise seems to be enough) and you get low speed dithering for free.
The Cougar firmware might also do a better job with minimum off time. If the motor controller is estimating 98%+ PWM, it should just turn on 100%. It should specifically not clamp at 510! Switching off for a few cycles is just generating heat without adding control.
Plus my still-in-progress experiment with stand-alone SR gate drive works better when there are not very short off / freewheel phases. A stand-alone SR circuit drives a MOSFET to emulate a diode by switching the gate on when negative drain-source voltage is detected. To avoid false turn off from ringing, the drain-source voltage detection is ignored (really "heavily biased to stay on") for a bit, the minimum on time (MOT). If the MOT requirement isn't met, the result is some shoot-through current, which generates lots of heat.
|