I'm 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). Example: Designing a current limiting circuit for my project

  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?



The L293B (or D) is really a limiting factor on this design. When used in a H bridge configuration from a 3.6 V supply, you'll be lucky to get more than 1.5 volts across the motor. This is because of the turn on saturation voltage in the driver transistors. Check out this data sheet and look for \$V_{CEsatH}\$ and \$V_{CEsatL}\$ on page 4 - they tell you that at 1 amp the top transistor saturation voltage is typically 1.4 volts an the bottom transistor saturation voltage is typically 1.2 volts.

Upshot of this is that you can probably use a much smaller motor for the steering if you used a better driver. See this for a more complete explanation.

Using a better driver will also improve traction, power and efficiency on the rear drive motor too.

Another option for the steering is to use a servomotor - this can be positioned to just avoid mechanical end-stopping and therefore reduce current consumption.

  • \$\begingroup\$ Thanks for your input. Actually this explains why my robot has trouble moving - using the original built-in driver the car could move about 2kg weight, while with this driver circuit it barely manages to get going. I think I'll step up the voltage to about 5V. \$\endgroup\$ – alchemist_anonymous Nov 12 '14 at 22:19
  • \$\begingroup\$ Using that driver you are still going to get the same volt drops and inefficiences - I'd recommend one of the TI parts I mentioned in the linked question. The L293 and its derivatives is basically nonesensical for low battery/supply voltages. \$\endgroup\$ – Andy aka Nov 12 '14 at 22:26
  • \$\begingroup\$ I've checked the part numbers, and I can't buy any of these chips in my country. Sometimes you have to use what you get. Adding an extra AA battery gave me decent results. The Vdrop is about 1V. The L293/298 won't get wasted, because I'm planning on a bigger project using 24V motors scavanged from printers. Closest thing I can get for low voltage stuff is a Polulu motor driver, but it costs 3x the 293+diodes. I might hack the original driver circuit, soldering leads to it's h-bridge, though I wanted to keep it as a radio module, and I'm not sure what the external inputs will do to the RX IC. \$\endgroup\$ – alchemist_anonymous Nov 13 '14 at 20:29

Your Answer

