I am using the wheels and motors of an RC toy car as a simple robotics platform. The car has 2 motors, one drives the back wheels, the other steers the front wheels. The steering motor is stalled by design when steering, it is blocked at a fixed angle by the plastic chassis. It draws 0.85 A when stalled (i.e. anytime when steering).

Due to this marvel of toy engineering I have to use an oversized motor driver IC (L293B – 1A continuous) and this motor draws about 3W of power (0.85A x 3.6V). I’m using this IC to control the other (“normally rotating”) motor as well, which appears to be the same type: 0.85A stall current, around 100mA no-load, and 250-400mA at normal loads.

Testing with various series resistors I have found out that 0.3A are sufficient to turn the steering wheels and keep them in position. Using a resistor might allow me to use a driver IC with a lower Amp rating (L293D – 0.6 A), however the same energy is still wasted, only as heat. While this is not a serious issue with this toy setup, I am planning to build bigger robots with significantly more power, so energy conservation and current control will be important in the long run, and motors may also stall accidentally.

Looking into DC motor current limiting, I’ve found the following approaches:

  1. Series resistor – simple, cheap, bidirectional, wastes energy, dissipates heat

  2. Current source with 2-3 transistors and sensing resistor – relatively simple, however I’ve only found unidirectional circuits, which would get shorted when switching motor direction. Is there a way to use this method bidirectionally? (and/or with a 2-channel H-bridge IC? - I cannot place it before the ICs common supply, because the 2 motors draw different currents).

  3. Chopper circuits/PWM – Will this reliably protect the IC from overload? Is it energy-efficient?

  4. Are there other other methods I am unaware of? Something on the principles of switching supplies?

  5. Would it be simpler in my application to use 2 separate drivers/h-bridges and place a voltage divider between them, so that a lower voltage is provided for the inefficient stalling motor and more to the one that moves the robot?

So how do the above methods compare in terms of efficiency and simplicity of design? What is the preferred method in robotics/other DC motor applications? Also, is it standard practice to limit DC motor current, or a motor is most efficient if allowed to draw as much current as it needs? Is it acceptable to use a DC motor that is mechanically stalled by design, or is this only used in cheap crap toy cars?


1 Answer 1


Of the choices you presented, PWM + BJT/FET is most efficient. An H-Bridge is a prime example of that.

-BJT's dissipate heat in proportion to their "on-ness"
-FET's dissipate heat based on their (very low) on-state resistance, plus a small loss during the actual switching.

By PWM'ing, you are approximating an analog voltage in proportion to the BJT/FET duty-cycle.

In practice, you will want to employ (non-plastic) feedback. With feedback, all of your motors know when they have done what you told them, and will correct themselves without having to be told again. Current-sense resistors, PIDs, steppers, servos, encoders are a few examples you should explore. The simplest method would be to have the motor or assembly activate a switch when it has reached the intended limit of its' range.


Your Answer

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