The Motor Driver Myth

Introduction

So you bought a “2A motor driver” and expect it to provide 2A of current to your motors? You probably won’t even get close.

There are many motor drivers that use the L298 motor driver integrated circuit. At first glance, it looks like the L298 is capable of providing 2A of continuous current for each motor output -- here’s what its datasheet says:

L298.img1.jpg

Unfortunately, the datasheet says something else too: the L298 “steals” voltage from the power supply. More formally, there is a voltage drop between the input voltage and the L298’s motor outputs. The worst-case drop in voltage is 3.2V at 1A of motor phase current and 4.9V at 2A of motor phase current.

L298.img2.jpg

This voltage drop leads to power losses in the L298 according to the equation:

eqn19.gif

According to the datasheet, typical voltage drop (the center column on the right side of the datasheet) in each L298 channel is 2V+1.7V=3.7V (worst-case is 4.9V). If the motor current is 2A, the typical power lost in the L298 would be 7.4W (worst-case is 9.8W). Not only is this power that is wasted because it never makes it to your motor, it is a power loss that heats up the L298.

Here is the final part of the story: the L298 can only operate when its internal temperature is less than 130 degrees Celsius:

L298.img3.jpg

Can the L298 operate when it’s dissipating 14.8W of power (7.4W in each channel)? Not even close. The L298 will go into thermal shutdown long before it supplies 2A to two motor phases.

Our Experiment

Here’s a circuit we used to demonstrate this problem. A commercially-available Arduino motor driver using the L298 was used for testing (the Sparkfun Ardumoto). The motor driver was connected to a variable DC voltage source and two  power resistors. The motor driver was plugged in to an Arduino Duemilanove running a sketch that simply enabled both motor outputs all the time. Tests were conducted at room temperature.

mdtest1.png

The voltage Vin was started at 6V and increased in 0.5V increments until the motor driver went into thermal shutdown. The voltages across the resistors (V1 and V2) were measured to compute the current flowing in each resistor (I1=V1/R1 and I2=V2/R2).

We then replaced the Ardumoto motor driver with our own Rugged Motor Driver, reduced the load resistors to  resistors and repeated the test, keeping all other components the same. The load resistors were reduced so we could run higher currents through them while still respecting their power ratings.

Our measurements are shown below. The currents listed are the currents supplied by the motor driver to the two load resistors before the motor driver entered thermal shutdown. That is, these currents were sustained by the motor drivers, but increasing the Vin voltage any higher caused thermal shutdown.

 
Motor Driver I1 I2 I1+I2
Ardumoto 0.79A 0.80A 1.59A
Rugged Motor Driver 1.58A 1.61A 3.19A
 

Conclusions

From this experiment we can see:

  • Due to thermal shutdown, neither motor driver delivered the “maximum current rating” listed on the H-bridge device datasheet
  • The Rugged Motor Driver delivered twice as much total current as the L298-based motor driver

Analysis

Why can’t the motor drivers achieve the “maximum current rating” listed on the datasheet?

There is an aspect of marketing involved here -- manufacturers like to put the largest possible number in their documentation to lure prospective buyers. But each datasheet parameter is often specified by itself, without consideration for other constraints.

The “2A” number often associated with the L298 means that as long as no other datasheet maximums are exceeded, the driver will provide 2A of current, but as you can see from our experiment this cannot be done without first exceeding the maximum temperature.

With aggressive heatsinking, forced-air cooling, or other active cooling approaches it is possible that the L298 will provide 2A of current, and it is possible that the DRV8801 will provide 2.8A of current.

Why does the Rugged Motor Driver deliver twice as much total current as the Ardumoto?

There are three main reasons:

  1. Dual drivers: the Rugged Motor Driver uses two DRV8801 H-bridge IC’s, one for each motor output, rather than a single L298 for both outputs. This means that the power dissipation is spread out over two devices and over a wider area of the PCB rather than all being dissipated in one place.
  2. DMOS construction: the DRV8801 uses modern MOSFET switches in the H-bridge rather than the older BJT technology in the L298, leading to lower power losses.
  3. Careful design: the Rugged Motor Driver is carefully designed for high heat transfer away from the DRV8801 devices, keeping them cooler at higher currents. Both the top and bottom sides of the PCB have large heat spreading areas connected by thermal vias to act as an effective heat sink for the two DRV8801 devices.