Comparison of the efficiency of DC motor current limiting / control methods

comparisoncurrent-limitingdc motordriverefficiency

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?

Best Answer

So how do the above methods compare in terms of efficiency and simplicity of design?

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.