I am building a coffee roaster using an Arduino Uno and a custom coffee roasting control board known as TC4+. The board has a PWM controller built in. I have a 24V power supply and a motor, which is part of a repurposed hot air popcorn popper, that is rated at 20.5V, 1.78A. In looking up recommendations, one respondent said the power source should be rated for at least twice the motor current rating because of the inrush current. Since the PWM controller will never run the motor at full duty cycle, can I get away with using the slightly higher voltage PS given that finding a supply for 20.5V seems impossible. Even the Buck convertors I have found are not rated at the roughly 4A needed to meet the "twice the current rating" that was recommended. Thoughts? Recommendations? Thank you for your help!

Thank you, Mr. Abbott! Your explanation is awesome! Regarding the higher frequency suggestion, I found on another post that it is possible to change the PWM frequency in the code. Here's what they said:

// The faster frequencies below are for advanced users only, and will require changes to the PWM16 Library

//#define TIME_BASE 15 // approx. 977 Hz

//#define TIME_BASE 7 // approx. 1.95kHz

//#define TIME_BASE 6 // approx. 2.2kHz

//#define TIME_BASE 3 // approx. 3.9kHz

Are you recommending I select the 3.9kHz option? Also, I was able to find an 8A Buck convertor, so I can input the precise voltage if needed. However, if you think driving the circuit with the aforementioned 24V source is better, I will do that.

Below is the blurb from the TC4+ user manual regarding the configuration of the add-on board that controls the DC load:

"The board features an on-board power MOSFET transistor to drive small DC loads, with PWM control. This is controlled via the Arduino’s IO3 pin. By default, the kit and assembled boards come with an IRF540N transistor. This is rated for up to 100V and 33A. Note however that the copper traces on the board are only rated for around 4A. A current much higher than 4A is strongly discouraged. The MOSFET acts as a low-side switch for the load attached to the DC+ and DC- terminals. In other words, it sits between DC- and GND. DC+ is connected directly to VIN. Therefore, with a suitable power supply connected to VIN and GND, you can connect a DC load to DC+ and DC-, and control it from the Arduino. The circuit was designed with DC fans in a popcorn roaster in mind, but the driver is by no means limited to this type of load. Make sure that the load is PWM-compatible."

  • 1
    \$\begingroup\$ "twice the motor current rating because of the inrush current." Not universally true. It depends how you start up the motor. If you ease into it and smoothly start it up it draws less current on startup. Regulating voltage to motors is generally bad practice. You design your system so the most power hungry components directly run off your power source to avoid regulating high power which is inefficient, complex, and delicate. 24V to a 20V motor is near the edge of what is acceptable, but it is acceptable. \$\endgroup\$
    – DKNguyen
    Commented May 9, 2022 at 23:58
  • \$\begingroup\$ If we assume the motor in question is a brushed permanent magnet dc motor, then you should be fine. These motors are generally thermally limited - the harder you work them, the hotter they get. \$\endgroup\$
    – Kartman
    Commented May 10, 2022 at 0:03
  • 1
    \$\begingroup\$ Agreed, it should be fine with a limited duty cycle. \$\endgroup\$
    – Drew
    Commented May 10, 2022 at 4:21
  • \$\begingroup\$ you can deliver 20.5v AVG with PWM on a 24v source. \$\endgroup\$
    – dandavis
    Commented May 10, 2022 at 4:48
  • \$\begingroup\$ Hey DKNguyen - thanks for your answer! When you say "ease into it and smoothly start it up..." do you mean ramping up the duty cycle on the PWM? I was able to track down an 8A Buck that will supply the precise voltage, so my original question is moot unless there is an advantage to the high input voltage. \$\endgroup\$ Commented May 11, 2022 at 2:02

1 Answer 1


The "20.5V, 1.78A" DC motor in your popcorn popper is actually powered by 120 VAC through a heater element and bridge rectifier. This setup relies on the motor having a mechanical load which causes it to draw the current required to drop the average voltage from 108 V (average rectified 120 VAC) to 20.5 V. The heating element absorbs most of the excess voltage in accordance with Ohm's law (the bridge rectifier should drop less than 2 V).

Assuming that in the original circuit the motor draws an average current of 1.78 A, the rms current would be ~2.0 A, consisting of half sine waves pulsing to a peak of ~3.0 A at 120 Hz. To match that with a 24 V DC supply and standard Arduino 490 Hz PWM you would need a PWM ratio of ~70%, and the rms motor current would be a little higher at ~2.3 A.

With higher frequency PWM (>= 3 kHz) the motor's inductance would smooth the current more, causing rms current to approach average current with a PWM ratio close to 85% (20.5/24). So while with standard PWM the motor might heat up a little more than normal, with high frequency PWM it could heat up less.

Note that without the resistance of the heating element in series the startup current will be much higher. Therefore you should ramp the PWM ratio up slowly rather than applying the full amount immediately.

  • \$\begingroup\$ See my response below. Thank you! \$\endgroup\$ Commented May 11, 2022 at 2:04
  • \$\begingroup\$ Bruce Abbott - Hi, FYI the response from the OP mentioned in the comment above, which contains clarification questions about your helpful answer, was itself mis-posted as an answer. It is too long to fit into a comment here, below your answer. Therefore it has been moved into the question as an update. \$\endgroup\$
    – SamGibson
    Commented May 11, 2022 at 2:27

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.