Bruce Robinson's "Full-featured" Dual
H-bridge
Design, limitations, usage -- all
described by Bruce himself
This is a slightly revised version of the 6-transistor
H-bridge designed by Mark Tilden and found on
the BEAM Tek website (now only available via
archive).
I encourage anyone interested in H-bridges
to read Mark's article, as it gives an excellent
step-by-step explanation of how the bridge works. In
particular, it discusses variations on the bridge, such as
the positive-input
and negative-input
versions.
The basic circuit is as Mark describes it. The changes
are as follows.
1) BRAKING
I had always assumed that dynamic braking would be most
effective at higher speeds. However, actual tests using a
Faulhaber (micro mo) gearmotor showed that the brake would
hold a motor almost stationary. These gearmotors are so well
made that I can turn the 4 mm diameter shaft with light
finger pressure. For the tests I had mounted a 90 mm
diameter wheel, which gave me tremendous mechanical
advantage. I found with the wheel mounted that I could
barely turn the motor against the brake.
When I spoke to Wilf Rigter about this feature, he
suggested that the brake would be very power hungry as
originally designed. He guessed it would draw around 50 to
100 mA which I confirmed by actual measurement. At Wilf's
suggestion I added a resistor
next to each diode
in the brake. He recommended resistors
in the range 1000 to 5000 ohms; I found 1000 ohm resistors
give almost instant braking with only 5 mA current
draw.
2) FLEXIBLE BRAKE CONTROL
When I designed my general purpose H-bridge circuit
board, I provided a jumper for each bridge. With no pins
connected, the brake is disabled. With a pair of adjacent
pins connected, the brake is applied by either a (0,0)
input, or a (1,1) input, depending which way the jumper is
connected. Of course, for a specific application it isn't
necessary to provide an actual jumper block.
3) SPEED ADJUSTMENT / BALANCING
For the bridge input resistors,
I show a 47k fixed resistor
(to prevent overstaturation in case a trimpot gets turned
down too far), a 100 k trimpot for fine adjustment, and a
1.0 M trimpot for coarse adjustment. The pots I like to use
are 6 mm Panasonics, sold by Digikey
(about $.50 US each). I found trying to fine tune a motor
with a ten turn pot was a pain. Note that the Panasonic
trimpots have a life of 50 turns, so they should not be used
in a test-rig circuit that you will be constantly
adjusting.
There are plenty of alternatives. One is to simply use
fixed value resistors
and not worry about balancing motor speeds at the bridge.
For a walker this seems to be the best approach. Another
idea is to use a through-hole fixed value resistor
for coarse adjustment, and a 100k trim pot for fine tuning
where needed. This may be desirable for a two-motor rolling
robot.
4) BRIDGE DISABLE
After experimenting with my first prototype H-bridge board,
I realized it was useful to have the two enable lines from
the 74HC139
chip come off the board, but it was a real pain to do
development work. I had to keep remembering to hook the
enable lines to ground. Eventually I carefully soldered a
pair of 100 k pulldown resistors
to the bottom of the board. Now the two halves of the chip
are permanently enabled, but I can still apply an enable /
disable signal directly.
5) TRANSISTORS
I have given up trying to "optimize" the transistors
for each application. I pay a few extra cents for each
bridge and use PN2907
and PN2222
transistors
for the motor control transistors
(also still found as 2N2907
and 2N2222).
This gives a very comfortable 1/2 amp capability, and is
good for up to 800 mA if needed. If all you have is
2N3904
and 2n3906
transistors,
the bridge will handle 100 mA comfortably. I still use
2N3906
transistors
to control the other transistors,
because they don't handle the full motor current.
6) MOTOR NOISE SUPPRESSION
Mark Tilden uses it, and I use it as a matter of course.
Yet on the web, hardly anyone shows the anti-noise capacitors
on their H-bridge designs or on 74AC240/245
driver schematics. I think experienced people assume
"everyone knows about this". Looking back at old messages,
I've "repaired" at least a dozen erratic robots for people
by suggesting this simple fix.
The 0.47 microfarad value is the one suggested by Mark
Tilden. I've also used 0.22 and 1.0 microfarads with good
results.
7) DESIGN CONSIDERATIONS
For my actual circuits,
I chose to use through-hole components on home-etched
circuit
boards. My second prototype has 135 holes in it, and even
using a small milling machine with precise scales, that's a
lot of hole drilling.
Although I originally rejected surface mount designs, I
now think it's a feasible approach. I found you can lay out
one bridge with 3 SOT-6 packages (2 transistors
each) and only 3 through-holes required (double sided boards
or jumpers). That's excluding the connections to the
74HC139.
I was able to configured the layout so no single chip has
two active transistors
so this will prevent overheating under higher loads.
8) Summary
These are full-feature, general purpose circuits as shown.
You can use them in just about any situation, but you won't
need ALL the features in every application.
- The brake is only needed when you have to stop or
hold a motor that will otherwise "drift".
- The trimpots are only needed if you want to balance
your motor speeds at the bridge. This really needs to be
done under load, so it isn't always worth the effort.
- The 74HC139 is only needed:
- To prevent the bridge from receiving two "on"
signals at once.
- If you want to disable your motors while the
controlling circuit is still operating.
- To activate the brake feature.
If you don't need the brake, don't need to disable your
motors, and your circuit can't send two "on" signals
simultaneously (e.g. bicore, auto-startup quadcore),
then you don't need the 74HC139 (and can, in fact, use the
"Tilden"-style 6-transistor
bridge design).
|