I'm attempting to build a soft-start motor controller for a Ryobi 40 V, 16 inch electric mower (to replace a broken factory unit; unit is potted so I can't see/access the guts). Only details I have on the motor are:

  • 40 V, 3800 RPM
  • DC resistance is something less than 1 Ω (my meter not so accurate at sub-ohm values
  • When attempting to power motor directly from the 40 V battery, enough current flowed for long enough to blow the 40 A slo-blo fuse in the battery
  • Don't know inductance, but will try to run some tests to look at LR time constant to get a rough idea

As per draft schematic shown, I plan to use an Arduino Uno to generate a PWM signal to drive 4 IRF3205PBF MOSFETs. No idea if I need 4 MOSFETs, but on the 20 inch version of this mower, the control board has 6 power MOSFETs, so hoping 4 will do the trick. The Arduino will also handle the safety logic (not shown in the schematic) of when to power up the mower based on the button and bar on the mower handle.

draft Ryobi 40v 16" motor controller


  1. What MOSFET driver to use? Thinking of Texas Instruments UCC27424. Is there a better controller choice?

  2. What flyback diode to use? Thinking of using Microchip Tech APT30S20BG Schottky (200 V, 45 A continuous, 320 A non-repetitive). Is there a better diode choice?

  3. I'm ignorant as to frequency and duty cycle of the PWM signal (maybe these questions can't be answered without knowing detailed electrical specs of the motor?): a) Should the percentage-on-time be based on the LR time constant of the motor (which I don't know)? b) Should I start with a small percentage-on-time, and slowly increase until it is on 100% of the time?

  4. Out of paranoia and ignorance, I'm thinking of adding an additional MOSFET (shown on the schematic) to power the motor for a few seconds using a ~50 Ω high wattage resistor (I have an old clunky ohmite resistor in my junkbox). This MOSFET would be turned on (via the Arduino) a couple seconds before the PWM MOSFETs in order to build up a little back EMF from the motor. Is this a good/bad/stupid/useless idea?

Thanks for any advice.

  • \$\begingroup\$ Welcome! Since the original controller has six MOSFETs, is the motor three phase brushless by any chance? Does it have two or three wires (thick ones) from it to the original controller? \$\endgroup\$
    – winny
    Aug 28 at 9:19
  • \$\begingroup\$ The motor only has 2 thick wires. \$\endgroup\$
    – ttimtucker
    Aug 28 at 14:45
  • \$\begingroup\$ Good! My answer below applies. \$\endgroup\$
    – winny
    Aug 28 at 14:49

1 Answer 1


All answers below assume the motor is brushed DC.

  1. Seems suitable.
  2. If it's a one-off and not intended for cost cut mass production, I'd aim for 2x voltage rating and 3x current rating. The stalled rotor startup current will be mitigated to a high degree by your 50 Ω soft start resistor anyway.
  3. Since speed and ramp-rate isn't terribly important here, I'd pick one which makes the driver board run cool and quiet, say a few hundred Hz.
  4. A bit costly and brute force approach but very KISS.

What I'm missing is some kind of overcurrent protection if the motor is stalled due to (sudden) load, tall grass, a rock or similar. The current would go sky-high and potentially destroy your MOSFETs. Please consider a current sense resistor or perhaps even just sense the voltage across your MOSFETs as a poor man's current sense. Be aware that you need blanking time and you can only measure during the ON-period of your PWM cycle and not too close to just after the OFF-ON-transition.

  • \$\begingroup\$ Thanks for the advice. I'll look at adding current sense logic. I will also add some potentiometers as input to Arduino so I can experiment with duty cycle and frequency. \$\endgroup\$
    – ttimtucker
    Aug 28 at 17:05
  • \$\begingroup\$ You’re most welcome! One thing sprung to my mind afterwards, your 50 ohm resistor could be dual pressure here if the timing is in your favor. Say you need 80 % duty cycle to have desired output at some battery level, if you extend your bottom MOSFET to run 80.1 %, unless your frequency is too high, all current will flow though that one and you could sense the current over it. At stalled rotor, all the voltage will appear over it so you need to scale it to your MCU. \$\endgroup\$
    – winny
    Aug 28 at 19:29

Your Answer

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

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