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.
  • \$\begingroup\$ Interesting. I think on macro scale the motor starts to brake because current starts to lag. So while current flow direction doesn't change, the timing changes. Maybe. \$\endgroup\$
    – Radzor
    Aug 12, 2023 at 23:45

2 Answers 2


When the motor is shorted during PWM low, wouldn't the back EMF be reversing the current flow through the motor

It seems like you may have misunderstand this point; current doesn't reverse, it decays towards zero but remains in the same direction because the back-emf reverses.

I may have misunderstood your thinking but, think what happens when the current flow through an inductor is interrupted and a short is placed across the inductor; inductor back-emf acts to try and maintain current flow in the same direction and, it does so by reversing the emf.

  • \$\begingroup\$ Hmm, this makes sense, but then why does the motor brake when the power is dropped and the pins are shorted? If the current continues flowing, why is the motor not allowed to coast freely? When using a flyback diode it is able to coast freely, but not when using slow-decay that shorts the motor pins. \$\endgroup\$
    – ryan27968
    Jun 19, 2022 at 15:58
  • \$\begingroup\$ Because the motor turns into a generator driving into a short circuit and depleting its inertia @ryan27968 \$\endgroup\$
    – Andy aka
    Jun 19, 2022 at 16:21
  • \$\begingroup\$ right, why doesn't it also do that during the PWM low cycles? \$\endgroup\$
    – ryan27968
    Jun 19, 2022 at 16:38
  • \$\begingroup\$ It should do if I have interpreted your meaning correctly without a schematic. \$\endgroup\$
    – Andy aka
    Jun 19, 2022 at 16:40
  • \$\begingroup\$ and yet the motor has higher forward torque when functioning like that? \$\endgroup\$
    – ryan27968
    Jun 19, 2022 at 16:46

You may also wish to evaluate clamping the motor winding(s) with back-to-back Zener diodes, configured so they are just about cut off at the maximum operating voltage. Let them conduct a couple Volts above that.

Another option is to add an R-C snubber to the winding.

You'd have to evaluate the performance of the control loop with various solutions and see what works best for that particular motor. That's if you don't want to go into developing a usable mathematical model that would let you come up with an optimum design numerically.

Laminated iron cores behave very differently over a range of frequencies, and simple L-ESR models are not usable coil representations in evaluating flyback waveforms.

An anecdote: I have an 18Ω coil relay (NEC MR52 from 1991) whose inductance measures >10mH between 120 Hz and 10kHz. With a 10mH+18Ω inductor in spice, the optimal snubber for fastest turn-off is about 10uF + 50Ω. With the actual, physical coil, the optimal snubber is 1uF + 50Ω. The turn-off without any flyback control on the winding is significantly slower than with the snubber. Now here's the catch: that's in a circuit where the coil is controlled by other relay contacts. The un-snubbed coil current tended to make the driving relay's contacts "get sluggish", i.e. they'd stick for about 0.1ms longer than otherwise.

I expect that a variant of this effect would occur on mechanically commutated motors. When the flyback voltage gets high enough, the winding will spark to either adjacent commutator segment and will drive current into one of the adjacent windings. I wouldn't be surprised if some memory effect due to arcing would periodically and chaotically shift the bias to either side of each winding. Let's say if the arcing cleaned up the conductive dust from between the commutator segments and increased the breakdown voltage enough to favor the other winding. Such emergent behavior is tricky to predict, and it can lead to a lot of head scratching.

But in general, I've stopped using semiconductors as flyback control elements years ago. Everything I put together these days has a bench-optimized snubber.

  • \$\begingroup\$ I appreciate the contribution, but my question was very explicitly not about finding a solution, but understanding why the solution I already found works, and how the current flow looks. \$\endgroup\$
    – ryan27968
    Jun 19, 2022 at 18:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.