Circuits Logo

> Home

V Motor drivers

 > About H-bridges

 > 6-trans. Tilden H-bridge

 > "Full-featured" H-bridge

 > Wilf's reversing H-bridge

 > Buffered H-bridges

 > Bolt's 4-trans. H-bridge

 > The Z-bridge

 > 74*245-based driver

 > 74*240-based driver

 > 74*24x drives compared

 > Stepper motor drivers

> Solar engines

> Sensors

> Complete robots

> Misc. circuits


The BEAM Circuits Collection is a BEAM Reference Library site.

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.


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.


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.


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.


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.


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.


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.


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).

Sitemap  Image  Search  Image  Legalities  Image 
Page author: Bruce Robinson
This page was last updated on

Creative Commons License
This work is licensed under a
Creative Commons License.