I have 90V brushed DC motor which I try to make to turn 100-500rpm with PWM controller (555 based, 100Hz). Otherwise it works but the motor heats up so much that I can not touch it with hand. I think if I continue, it will burn.

I tried it with 70V DC (can't get higher voltage from my 3 bench power supplies), it draws 1.2A and with 50% duty cycle the rpm is roughly 200rpm with the load. Little bit difficult to measure the load but very roughly it's max 0.25Nm.

I thought this is the way to control DC motor so I wonder what's going wrong..? It the load too much for this motor, does 70V (instead of 90V) make the difference, would higher PWM frequency help...?

Thanks, Tipo

  • \$\begingroup\$ What is the motor's full-load current rating? \$\endgroup\$
    – user80875
    Commented Sep 7, 2015 at 22:06
  • \$\begingroup\$ Higher PWM frequency could potentially help. You probably have a lot of ripple and excessive core loss at 100Hz. Try a few KHz. \$\endgroup\$
    – John D
    Commented Sep 7, 2015 at 22:35
  • \$\begingroup\$ Unfortunately the only marking on the motor is "90V". Dia 2.75", length 3,87", black and white wires, 2 'screws' to change brushes and "spiral" kind of thing on axle (for gear obviously). Just something I had lying around... \$\endgroup\$
    – tipo1000
    Commented Sep 7, 2015 at 22:58
  • 1
    \$\begingroup\$ What rpm does it do and how much current does it draw without a load (at 100% PWM)? \$\endgroup\$ Commented Sep 8, 2015 at 0:34
  • \$\begingroup\$ @Bruce: With 70VDC, 100% PWM: 120mA, 4100rpm. \$\endgroup\$
    – tipo1000
    Commented Sep 8, 2015 at 0:57

4 Answers 4


The basic problem is the rpm you want out of the motor is too low. You can fix this by adding a gearbox, which multiplies torque while increasing motor rpm and reducing current to make the motor more efficient.

A PMDC motor delivers maximum power when loaded down to 50% of no-load rpm. However this also corresponds to 50% of the power being wasted, which will probably overheat the motor unless the voltage is very low. A more practical target rpm is 80% of no-load.

You want 200rpm out at 50% PWM. Your target speed is therefore 4100*0.5*0.8 = 1640rpm. To get 200rpm at the load you need a gearbox ratio of 1640/200 = 8.2:1. This will multiply torque by the same ratio. Since torque is proportional to current, the motor will draw fewer amps and run much cooler.

If you can't get a gearbox with ~8:1 ratio, a lower ratio can still make a big improvement. You can then use a lower supply voltage that matches the lower gear ratio, eg. 35V with 4.1:1, 24V with 2.8:1. The down-side is lower torque multiplication and therefore higher current draw to get the required output torque (so the motor will run hotter).

DC motor performance curves

A secondary cause of excessive heating is your low PWM frequency, which is creating very high current ripple (it is going up to double the measured current when the PWM pulse is on, and down to zero when off). Since power loss in the motor's resistance is proportional to current squared, this causes twice as much heating as the same amount of smooth DC current.

To reduce current ripple, increase the PWM frequency so that the inductance of the motor windings has a useful effect. 3KHz is high enough for most conventional brushed motors.

  • \$\begingroup\$ Good info/advice, thanks! Increasing PWM freq 100Hz -> 2kHZ helped a lot (motor runs cooler) (also John D suggested this). It was interesting to try different PWM freqs (keeping the rpm same), and see how it affects current consumption/efficiency. ~2kHz was best; going to 10kHz it started to draw more current. No need for gear box currently: with the worst rpm/load the motor case temp is 65C. The graph/pic was useful to understand what's going on. \$\endgroup\$
    – tipo1000
    Commented Sep 9, 2015 at 5:39

You need more PWM frequency. The idea behind PWM speed control is that the inherent inductance of the motor smooths out the current so that, from the motor's perspective, the current is constant and it behaves the same way as if you had used a linear regulator. However you are running at such a low PWM frequency that the current is not being smoothed by the inductance. This has the effect of essentially pulsing the motor - running it at an extremely high torque for a short amount of time and then letting it coasting for the rest of the time. The problem is that the losses in the motor are proportional to the square of the current but the torque is directly proportional. So when you average out the torque in this situation you have squared your losses compared to if you just ran it with a smooth and constant torque/current. The result is it gets really hot.

You'll probably need at least 2kHz before you start getting smooth current flowing in the motor, and upwards of 10kHz would be best.


Similar question here: DC Motor - PWM vs Voltage

When running at a lower voltage/higher duty cycle, you will need more power for a given speed/torque when compared to a higher voltage/lower duty cycle.

More power means more heat, which is what you are seeing.


There could be a reason as to why the motor is overheating.

You have applied 70Vdc and achieved 4100rpm thus 2V would potentially result in 120rpm. If you were to supply 2V from a DC powersupply it should spin and not overheat.

The thing is you mention you are using PWM (via a 555timer) at 100Hz. That is potentially too low depending on the stator inductance. If you have, relatively speaking, low inductance you will end up with high current ripple which itself will heat the motor (via copper loss and eddy loss)

A simple rule of thumb in control is a factor of 10 through all the loops... The inductance is an input into your switching frequency.

IF you needed 10Hz for position control (if you have an actuator)

100Hz for speed control

1kHz for current control

10kHz for the voltage/PWM


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.