A3950 DC Motor Controller
Tips and Tricks
by Jose I Quinones
DC motors are plentiful. My favorite source for heavyweight robotics projects
is electric scooters. A motor capable of transporting a 250 pound human can
move a lot of robot. However, DC motors require significant current handling
at startup, and during increased load conditions and direction reversal.
Thanks to major advances in H-bridge power FET technology, current handling is no longer problematic. This
article examines the Allegro A3950 DC motor controller
and details how it can be interfaced to a microcontroller.
Allegro Micro’s A3950 is a single H-bridge DC motor
controller capable of delivering up to 2.8A of current in both
directions with up to 36V input voltage. Controlling the motor
could not be easier. Two main signals — ENABLE and PHASE
— control speed and motor rotation direction, respectively.
An open collector output — the NFAULT pin — offers
information on when the H-bridge has become non-operational
due to faults such as shorts to ground or power plane, as
well as the device becoming too hot (thermal shutdown).
This NFAULT signal is tied to a rather well designed
logic which protects the device against most harmful conditions such as the mentioned shorts. Now you can feel safe
about mis-wiring your motor. I have tried a good deal of
combinations and all of them resulted in the device shutting
down and protecting itself until the short was removed.
Other important signals to understand include SLEEP,
which considerably limits device total current consumption
when the H-bridge is unutilized, to less than 10 uA. This is a
priceless feature when dealing with battery saving modes.
50 SERVO 04.2009
The MODE pin selects from different current recirculation modes. This comes in handy when wanting to stop the
motor really fast (a.k.a., brake). For braking, MODE must be
HI, in which case a slow decay mode is selected. During this
configuration, the motor winding back EMF is shorted,
causing the braking to occur. Otherwise, during MODE LO
or fast decay, the motor coasts down as it is disabled.
How Powerful is the A3950?
For being a small IC housed on a SOIC16 package with
a bottom heatsinking pad, the device is impressively powerful; 2.8A of current at 36V translates to 100.8W of power
into the motor load. If that is not enough, stay tuned for a
little trick on how to double this.
How can such a small package provide such a large
power range? There are two important details. First is the
very low RDS_ON parameter on the A3950 FETs. Combined,
the path resistance is about 650 megohms at room
temperature. Power dissipated on the chip is then around
5.096W (2.8A 2.8A .65Ω = 5.096W).
Granted that 5W is a pretty large amount of power to
be dissipated as heat on any IC. In order to help against this
cumbersome and unwanted heat generation, Allegro Micro
has installed the device on a package with a heat slug on the
bottom of the package. For this to work, PCB (printed circuit
board) design must take this into consideration and offer
enough copper space to act as a heatsink. Fortunately, any
large copper area spreading into both top and bottom PCB
layers seems to be sufficient. A good deal of vias (between
five and 10) should be used to connect both copper fills.
I wanted my DC motor controller to be as small as possible.
The idea was to allow for the controller to be used on small
robots, as well as large ones. I was able to cram all the external
components into a board as small as 1” by 1”, and there was
still room for improvement. This also makes the bare board