H-Bridge Fundamentals


An introduction into basic H-Bridge theory and operation, this article covers the fundamentals you need to know to make a working H-Brigde with N and P Channel MOSFETs

Obligatory Introduction

Since I began building sumo robots in late 1999, I’ve been wrestling (no pun intended) with motor drivers. At first I used single chip solutions like the L298 in “Chomp” which worked well most of the time, with only the occasional burnout. What most of you who know me and my robots probably don’t know is that Chomp had a twin named “Fatal Discharge”. It was built with almost the same design, with the main difference being the motors. On this robot, the L298 worked occasionally, burning out most of the time. It just wasn’t adequate for the motors, and at the time I didn’t have enough electronics knowledge to make it work. As such, Fatal Discharge never made it to competition.

Since then, I’ve built more robots, and have gained much more experience making motor controllers. This document is meant to provide some vital information on making a “bullet proof” motor driver, based upon my experiences and research into the field.

:::DISCLAIMER:::

I in no way guarantee that I haven’t made any mistakes, and I am not liable for any damage that may be caused by using circuits discussed in this page. If you spot any errors, please let me know.

Be careful when dealing with large batteries and H-Bridges. They require care in design and construction, and carelessness can lead to components overheating, and catching on fire.

If you have any questions of concerns, feel free to ask.

So Why Make My Own Motor Driver?

It’s a commonly known fact to roboticists why motor drivers are needed. 99.99% of the time, the micro controller or control circuitry of a robot just can’t provide the current needed to power motors. For motors with small current draw, single chip solutions such as the L293 or L298 can be used, however these are only useful for a range of less than one or two amps.

In the world of 3kg (and the now obsolete 5kg) autonomous sumo, having motors that can output high power is necessary, especially when vacuum systems are used. These motors are driven in extreme conditions, requiring abrupt speed and direction changes, as well as being subject to high loads. When driving motors under these conditions, an L298 will work only for very efficient motors in the lower power ranges, but these super efficient motors are not always easy to find when you are on a budget. Some motors produce plenty of output power, but can also be very inefficient, thereby causing many problems with associated control circuitry, and a simple single chip solution will no longer cut it.

For my 3kg robot “Event Horizon”, I made the switch from pre-made motor drivers to rolling my own mosfet h-bridges. There are plenty of designs out there, and I went for simplicity using P-channel mosfets for the high side of the bridge, and N-channel mosfets for the low side of the bridge.

H-Bridge designs using only N-channel devices are out of the scope of this article, although many of the concepts discussed in this article still hold valid. Eventually, I may make another page regarding the design of h-bridges using N-channel devices only.

« Previous

  1. Introduction
  2. H-Bridge Basics
  3. The Ideal MOSFET H-Bridge
  4. MOSFET Imperfections
  5. Power Supplies, Noise and Cooling
  6. Design Considerations and Conclusion
Next »

Pages: 1 2 3 4 5 6

, ,

  1. #1 by Rodrigo on January 19, 2009 - 9:16 pm

    You say LM293 and LM298. I think you mean L293 and L298. Regards.

  2. #2 by Roko on January 19, 2009 - 9:24 pm

    Good catch, thanks!
    Updated..

  3. #3 by Frank on April 6, 2009 - 5:50 am

    The mosfets I want to use have their heatsink connected to drain. Is it wise to connect them together on a heatsink ? I want to use irf9450 (P) and irf620 (N) but put them all on the same heatsink. Will this produce smoke or am I safe?

  4. #4 by Roko on April 6, 2009 - 8:21 am

    Frank;

    Since all the drains are connected to heat sink pad on the FETs, connecting them all directly to the same external heat sink would cause you to short out your left and right legs if the heat sink is electrically conductive.

    There are available special heat sink insulators available for this purpose:
    http://en.wikipedia.org/wiki/Mica_insulator

  5. #5 by Romeu on April 10, 2009 - 1:18 pm

    hey!

    Thanks a lot for all this informations about H-bridge! I’m trying to make one but it’s not easy when we dont know a lot of things… Now i hope it will be a bit better:)

    Good luck in your hobbies!

  6. #6 by nhaan on April 14, 2009 - 10:59 am

    thanks for your informations.
    Can i use a 12-220V transformer instead of a motor in full h-bridge to make a inverter? I use PWM method with a micro controller.

  7. #7 by djallel on May 20, 2009 - 1:02 am

    hi guys,
    i’m working in a project whitch contient an H-bridge for driving my DC motor with I load =10A.and i have my battery voltage =6V.
    so in the first step i used 4 N channel mosfets to build my H bridge with PWM input toin crease mu current load to 10A.
    the problem i didn’t find a good idea to wire my H bridge with the microcontroller (it’s power supply is 3V) .
    i tried some H-bridge driver can be work in this project but i didn’t.
    can some one help me.
    thanx.

  8. #8 by Roko on May 20, 2009 - 8:40 am

    Using 4 N channel Fets is a good idea, as it is cheaper and N channel fets tend to have a lower RDS On resistance, the challenge is that you need to switch the upper N-channel fets with a voltage higher than your bridge supply voltage.

    I’ve used the MC33883 bridge driver from Freescale successfully. It requires a 5.5 volt supply, so you could power it directly for your battery, but the I/O will work with 3 volt inputs, so you should be able to wire up your micro directly to the bridge driver I/O and a common ground.

  9. #9 by djallel on June 3, 2009 - 6:25 am

    Hi;

    Thank you very mush for your replay,

    Regarding your suggestion,is a good idea but the problem that i haven’t Pins enought in my microcontroller there is just 2 Pins (one for hight mosfets and another for the down mosfets ).
    I found some H-bridge driver like L99H01 with voltage supply of 6V and operate logic supply between 3 to 5.3.

    But I have a doubt about voltage supply will decrease during use.

    Thank you again.

  10. #10 by vpunk on July 17, 2009 - 5:09 am

    Thanks for this very practical and informative guide! You’ve answered all the questions I had and some I hadn’t even considered. Keep up the good work!

  11. #11 by Matt on July 20, 2009 - 9:01 pm

    Hey, this is a damn good article. As an ee, I really appreciate the analysis. I have looked at some websites out there, riddled with foolishness like paralleled BJT’s :( . I have spent a lot of time recently studying mosfets and h-bridges, so I know what I’m talking about when I say excellent Job!

    I’ll be looking forward to upcoming posts.

  12. #12 by aditya on July 28, 2009 - 3:49 am

    i’cant see the picture! i only see a black line… please send the picture to my e-mail. i need their picture to help me to understand how H-bridge work!thx..

  13. #13 by Hugh on August 2, 2009 - 3:38 pm

    Very nicely written article. It is informative and understandable! Thank you so much :)

  14. #14 by sam on August 5, 2009 - 8:53 am

    Thank you for this great article. I’m building my first H-bridge now :)

  15. #15 by Jose on October 12, 2009 - 11:19 pm

    I’m think you might be confused names of the operating areas. The triode/linear region for a fet is where you WANT to be for switching this area is similar to a BJT’s saturation reagion (this is where i think the confusion started). Now the fets saturation region is typically used for amplification NOT SWITCHING this is similar to the BJT’s active region.

  16. #16 by Roko on October 14, 2009 - 9:09 pm

    Thanks for the note! It’s been a while since I wrote this, so I’ll check it over and correct that when I get a chance.

  17. #17 by ashish on November 5, 2009 - 5:39 am

    heyy all,
    im making a solar boat.. the solar panel can deliver a max 12 v. can u help me to make a motor driver circuit which can drive a 12 v , 5A motor ..plz give me the details

  18. #18 by ashish on November 5, 2009 - 5:41 am

    itz realy urgent and important for me…plz send me the circuit layout on a pcb….my email id is ashishr_singh@yahoo.co.in

  19. #19 by Omer Malik on November 7, 2009 - 11:55 pm

    can some one tell that waht are the chances of burnout in L298/293. I have heard that they are quite often burnt and dont prove to be reliable

  20. #20 by Omer Malik on November 9, 2009 - 8:25 am

    ……. i am using pitman motor.

  21. #21 by Roko on November 9, 2009 - 9:50 am

    Omer, the chances of burning out an L298/L293 depends a lot on your motor an application. Smaller motors that they are designed for will run well, and won’t burn them out. However, larger motors that draw a lot of current are what often causes problem. To reliably use them, you will need to ensure that your motor’s stall current is lower than the maximum rated current for the chip, and that you are properly cooling the chip with a large heat sink.

  22. #22 by Guy on November 13, 2009 - 6:47 am

    Hi,
    I was just reading through this design and was curious as to whether this design requires that motor supply voltage be at the same voltage as the output of the micro ? Otherwise if say the motor supply was 12 V and the micro outputs 5 V, wouldn’t there still be a negative potential across the p-channel Vgs? hence not turning it off when we want it to. Or perhaps I am misunderstanding something?

    Cheers

  23. #23 by Roko on November 14, 2009 - 12:08 pm

    Hi Guy,

    You are correct that by itself a 5 volt MCU would have trouble switching a 12v bridge. To get around this, a mosfet driver should be used to translate the low current 5v signal to a higher current signal capable of sourcing 12v to the fets.

    I briefly mention this on page 4, but when I get a chance I’ll elaborate upon this in the article. Thanks for the note!

  24. #24 by Guy on November 15, 2009 - 8:30 pm

    Thanks man,

    Its just a small area of confusion.

  25. #25 by Guy on November 15, 2009 - 8:35 pm

    So should I some how amplify the signals from the micro to the Mosfets to match that of the load?

    Would that work?

  26. #26 by XTL on November 16, 2009 - 4:01 am

    “Turning either A or B high will cause the motor to rotate in one direction or the other. If they are both high or both low at the same time, then the motor will actively bake.”

    :-D That line really made my day.

  27. #27 by Martin Kynde on December 2, 2009 - 4:52 am

    Hallo

    I am studying electronics. The interface circuit would not work! Q1 and Q4 has to work together, and Q2 and Q3, else the motor would not turn in any direction. Just swap Q1 with Q2 on figure 3.2, then it would work :-)

  28. #28 by Roko on December 2, 2009 - 9:47 am

    Hi Martin,

    I believe you’re confusing the operation of P and N channel FETs. As the paragraph below figure 3.2 states, the P and N channel fets are activated by opposite polarities.

    Thus, the interface circuit is correctly set up to provide a high signal to Q4, and a low signal to Q1 to switch them both on, while ensuring that the others are off.

  29. #29 by Martin Kynde on December 13, 2009 - 6:28 am

    Hallo Roko

    I think you have right. Sorry for the confusing

  30. #30 by John Essen on January 12, 2010 - 10:40 pm

    A clearly written article on this subject, it answered all my questions.
    Thanks Roko

  31. #31 by genotio on January 19, 2010 - 1:47 pm

    Note that you can put 2 or more mosfets in paralell. Rdson will be smaller, but driver will be more loaded.

  32. #32 by arash on January 24, 2010 - 2:45 pm

    hello
    my friend
    please help me
    please send pdf or shematic file circuit driver dc motor 24 v for automatic door(left or right fasrt speed and low speed by pwm and countering rpm by shaft encoder ) by mosfet and L99H01 chip or masfet and ir 2102 chip

    thank you

    please send now
    i am a waiting

  33. #33 by tuan anh on March 16, 2010 - 3:18 pm

    Hi, thanks much for your good explanation of H-bridge. I just want u to explain more about operation of the 4 high-speed Schotky diodes. As u said, we use them to prevent back EMF (electro-magnetic field – right?), in other words, to prevent back current flow. Could u make it clear about how the back current flows inside the circuit?

  34. #34 by Mitul on July 26, 2010 - 4:48 pm

    I have to control the motor using microcontroller.Is H-bridge required? how do i interface microcontroller ,h bridge and motor.
    please help

  35. #35 by John on October 7, 2010 - 3:38 am

    Jose :I’m think you might be confused names of the operating areas. The triode/linear region for a fet is where you WANT to be for switching this area is similar to a BJT’s saturation reagion (this is where i think the confusion started). Now the fets saturation region is typically used for amplification NOT SWITCHING this is similar to the BJT’s active region.

    I have to disagree with this statement (and I believe that wiki does also). Perhaps the confusion arises because MOSFET saturation mode is also referred to as “active”, but this has nothing to do with BJT active mode.
    IMO the article has the correct definitions (of MOSFET sub-threshold, triode/linear and saturation modes) and the above comment should be refuted to avoid confusion to others.

  36. #36 by water damage pomona on January 7, 2011 - 10:09 pm

    with thanks for sharing this marvelous post. Please hold up this particular weblog as ensure it is an example of my preferred site in my reader, with thanks

  37. #37 by Laila on February 20, 2011 - 12:14 pm

    Thanksssssssssssssssssss alot

  38. #38 by Mahbub on March 29, 2011 - 12:05 am

    Laila, plz write

  39. #39 by DIVYANSHU PUROHIT on April 16, 2011 - 12:20 pm

    SIR ,most the doubts cleared from your this informative article. This is my first first robot car……….

  40. #40 by Abdullah on May 7, 2011 - 1:35 pm

    Man you have definitely mixed up the MOSFET’s operating modes. You mention that analog amplifier use the triode region and that is untrue because they use the saturation region, when the MOSFET is exhibiting current source like behavior. You also say that you want the transistor should operate in saturation when switching, or turning load on and off, and that is also untrue. You would want it to operate in the triode region, so that vDS is as small as possible and so that most of the source voltage is applied across the load.

  41. #41 by Emily on May 10, 2011 - 6:51 am

    Thanks for the post — Much appreciated!

  42. #42 by Valerie on May 11, 2011 - 3:34 am

    I just discovered this site — I’ve been exploring it for a while. Great stuff!

  43. #43 by Manny on June 9, 2011 - 6:19 pm

    Hi, we are trying to control an AC motor using H-Bridge with PWM at the inputs of our IGBTS. when we increase the DUTY CYCLE, the motor suddenly stutters or stops. it works fine at 50-60% dutycycle. what could be the problem?

  44. #44 by Lonnie on August 19, 2011 - 6:07 am

    I have built several H-bridges and have had a problem finding mosfets that work well in a 3V system. I need a small package, 3 amps peak current, .5 amp run current. Anyone know of good P & N ch devices that fit this application?

  45. #45 by RobotJay on January 27, 2012 - 5:21 pm

    Maybe I’m just dumb, but according to Figure 3.2, won’t Q1 and Q3 ALWAYS be on together? Won’t Q2 and Q4 also do the same? Thanks for clarifying for me. Great article.

  46. #46 by RobotJay on January 27, 2012 - 5:34 pm

    Similarly, when A and B are on together, what prevents shoot through then?

  47. #47 by RobotJay on January 27, 2012 - 5:40 pm

    Ahhhhh… nevermind. I see now. P-Mosfets are “ON” when ground is applied. And although Q1 and Q3 will always be logic high at the same time, Q1 and Q3 will always be opposite of each other. Sorry for bugging you. Again, great article.

  48. #48 by Roko on January 27, 2012 - 5:46 pm

    Hi RobotJay,

    You’re correct on both counts. The intent of the circuit in Figure 3.2 is to simplify the control slightly by reducing the number of required control lines, and allowing for a single PWM line. Nothing is preventing shoot-through if A and B are enabled at the same time, so care still needs to be taken when using that circuit.

    A long time ago, when it was harder to source microcontrollers with a high pin-count in the hobby world, controlling motors with as few pins as possible was important to save the few pins available for other important uses, however ultimately this reduced the functionality and flexibility of controlling motors.

    Nowadays, it’s easier to get larger microcontrollers with enough pins that such a circuit is not required. To be honest, on most of my H-bridges nowadays, I control each MOSFET individually, with it’s own pin from the microcontroller. This allows me to be much more creative in firmware with how I control the H-bridge, allowing for more advanced control than would be possible with the circuit in Figure 3-2.

    Hopefully that makes sense, it’s been a long day at work and my brain is shutting down. :)

    Cheers,
    Roko

(will not be published)