I am working on a project requiring high torque operation of a brushed 12V DC motor at low speed, plus software speed control from a microcontroller. PWM is the obvious choice here.
My driver supports both fast and slow-decay modes, with fast being the default.
I was initially using fast decay (motor pins are left floating during PWM off, and excess current can flow through the driver's body diodes,) but experienced bad low-duty-cycle torque, and bad speed control under low-load.
Slow decay (motor pins shorted during PWM off) runs much better on the other hand. Low-load speed is almost linear with the duty cycle, and there's high torque even at low duty-cycle. Stall current is higher for a given PWM duty cycle too.
I can achieve similar behaviour in fast decay mode by adding a single flyback directly to the motor instead of relying on the driver's body diodes to return current to the power source.
OK, so I've found my solution, and it seems to be common knowledge that slow decay has better speed control and low PWM torque, but I'm struggling to understand why it works better in slow-decay. That's the topic of this question.
Intuitively, the motor would be "braking" itself during PWM off, thus reducing forward torque(because it's applying a reverse torque). In practice, speed is reduced in slow-decay mode, yet somehow forward torque is increased.
This is unintuitive and paradoxical to me. When the motor is shorted during PWM low, wouldn't the back EMF be reversing the current flow through the motor, thus causing higher inductance "intertia" at the start of PWM high, and lower current/torque?
Extra details in case they're relevant:
- I'm using an MX1919 motor driver (datasheets are hard to find, but I managed to find and translate the datasheet, and can confirm it definitely has 4 body diodes on the H bridge, and correctly supports slow-decay; it recommends a PWM frequency between 10KHz-50KHz)
- I'm running from an ESP32-C3 and a 25KHz PWM frequency
- The DC motor is a JGA25-370 geared for 108 RPM, running at 9.5V (motor supported range is 6-18V, with 12V recommended. I'm running slightly lower because the driver only supports up to 10V, and I don't actually need the full 12V power, especially as noise is a concern in my application.)
- The driver/motor are powered from a DC-DC buck converter, not a battery, so any "regenerative braking" in fast decay mode would probably not be applicable.