Press "Enter" to skip to content

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.


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.

Next page….

Pages: 1 2 3 4 5 6


  1. darling
    darling December 21, 2017

    am using RFP30N06LE mosfet for pwm based heating coil giving pwm from arduino. 15v applied to drain and mosfet is heating fastly . when i calcute current thruogh coil is 0.8 amps and gate voltage is getting dropped …can you plz suggest me any chnages….????

    • Roger
      Roger December 21, 2017

      When you say that 15v is applied to the drain, do you mean that the drain is connected to the power supply, and the source is connected to the coil? If so, you’re using what’s known as a “high side” arrangement. In order to turn on the n-channel FET in that arrangement, you will need to supply it with a higher voltage than 15v in order to turn it on.

      Instead, try putting it on the “low side”, so the drain is connected to the coil, and the source is connected to ground. This way, you can turn it off by driving it to ground.

      You may want to also use a gate driver (either a dedicated chip, or a simple transistor ) to drive the FET, as the Arduino’s I/O pins may not be able to supply enough current to rapidly turn the FET fully on and off with PWM. This will also have the added benefit of bringing the lower Arduino voltage to the full supply voltage at the FET’s gate, ensuring it’s fully turning on and off.

      I suggest reading through the rest of the pages in this article (Specifically Page 4), as I explain FETs and their driving requirements in more detail.

Leave a Reply

Your email address will not be published. Required fields are marked *