I am trying to reverse the polarity on a rather beefy motor (5 amp, 60v) in the most simple way possible.

I need to build an h-bridge just to reverse the current, I am controlling speed elsewhere. Can I simply wire up 2 N-Channel MOSFETs and 2 P-Channel MOSFETs into a IO pin from the MC (with resistors of course) or is it more complicated than that.

I see lots of schematics online that are different, some use diodes, some don't.

Any advice?

  • 2
    \$\begingroup\$ How often do you need to reverse the current? A DPDT relay makes an excellent "binary" H-bridge. \$\endgroup\$ – Dave Tweed May 16 '13 at 22:09
  • 1
    \$\begingroup\$ Can you add images to some the different online schematics that you refer to and what makes you doubt about them? \$\endgroup\$ – jippie May 17 '13 at 6:13

You can buy H-bridges with built-in drivers. Just look on Digikey. Their inputs are designed to be driven by a microcontroller and they'll often have a flyback protection diode built in as well -- verify this for your particular part.

If you want to roll your own you can do it with 2 N and 2 P MOSFETs but you have to select the parts carefully, paying attention to VGSth, Rds-on, and maximum drain current, VDSS max, to match your application. You'll also need 2 lower spec N-MOSFETs (and 2 pull-up resistors) to drive the gate of the P-MOSFETs as your microcontroller will likely not be able to drive it high and low enough to meet your needs.

I strongly recommend an off the shelf H-Bridge. If you really, really have a good reason for rolling your own come back with more details about your requirements: current, voltage and I'll help you.

  • \$\begingroup\$ Add: pay attention to the maximum gate voltage, especially for the P-FETs. \$\endgroup\$ – Wouter van Ooijen May 16 '13 at 21:12
  • \$\begingroup\$ Got any good links to a digikey driver? I cant seem to find anything. I need to support 0-60v and up to 5A. They all seem smaller... \$\endgroup\$ – Chris Kooken May 16 '13 at 21:51
  • \$\begingroup\$ @ChrisKooken That is a pretty hefty motor. Are you sure about the voltage spec? Does the motor work up to 60V or you're driving it at 60V@5A? Because that's close to 300W of power! If it's the latter you'll have to roll your own but you'll have to account for heat and have pretty generous heat sinking. \$\endgroup\$ – EEToronto May 16 '13 at 21:59
  • \$\begingroup\$ @ChrisKooken for your PFET you can use SQ3427EEV and for your NFET you can use DMN6068LK3. Connect them per this schematic. Tie the gates of Q1&Q3 together and tie gates of Q2&Q4 together. Put one NMOS at each of the tied gates with a 1K pull-up to your 60V rail. Turning on the NMOS will pull the gate to GND. You can use any NMOS that tolerates 60V and is logic level gate drive such as: 2N7002F. \$\endgroup\$ – EEToronto May 16 '13 at 22:10
  • \$\begingroup\$ Link to the schematic is not working. \$\endgroup\$ – Chris Kooken May 16 '13 at 23:28

The main problem with driving P-channel high-side switches from logic levels is that the gate voltage needs to go to the source voltage level for the switch to turn off. That's 60 Volts in your situation, and the output of a logic control is only 5V. The simplest way to fix this is to use a small N-channel signal transistor to pull the P-channel gate to ground, and use a pretty small pull-up to pull the gate voltage to source when that N-channel is off. If you just switch on/off occasionally, a 500 Ohm or 1 kOhm pull-up may be enough. If you're doing PWM, you want 100 Ohms or less to make sure the switch happens fast enough to not blow the device.

The problem with a small resistance for pull-up is that it "wastes" current while the P-channel is on, as the N-channel signal device will keep current flowing.

Additionally, in your case, because it's a 60V potential, you have to protect the gate/source voltage differential; many devices will die if that goes below -20 V or so. Thus, you want a small resistor on the pull-down side, too, and a Zener diode on the high side to limit the max voltage differential between source and gate.

All in all, one half H-bridge home-grown to this recipe looks like this:


simulate this circuit – Schematic created using CircuitLab

Don't pay too much attention to the specific part numbers; there's quite a limited selection at CircuitLab.

Additionally, you'll need a logic-level N-channel device to switch the low end, as your logic control signal will only be 5V, and many power MOSFETs prefer a 10 V voltage to really turn on right. For driving 5A, that might not be so much of a problem if you get a high rated device.

You also want to try to time the switch-off of the low end to happen before the switch-on of the high end, else you may get cross conduction, which can be a quite nasty problem -- spikes of hundreds of amps, killing your H-bridge in no time! Been there, not pretty :-) The diagram does not include this feature -- you'd have two separate control lines for the high end vs low end, rather than tying them together.

Finally, with 60V inductive load, you will see spikes up to 120V when trying to reverse polarity. This means you should have devices rated for 120V, which will be more expensive than your typical 30V 30A budget devices. It's worth the extra dollars, though, because a randomly failing H-bridge is not something you'll want to live with.

OK, so what you really want to do is to use a dedicated half-bridge driver circuit, hooked into the gates of MOSFET devices (IR2183, or similar,) as that device will do the cross-conduction prevention timing for you, and will properly drive the gates without unnecessarily burning current after switching like the pull-up resistor option will.

Or you want to buy a H-bridge already made and tested. Honestly, if this is just a one-off project, you'll be better of doing that, rather than building your own. Much less blood, sweat, and tears!

Or, finally, if your duty cycle is really low (switching only once a minute or whatever) then a DPDT relay will serve you just as well, and will be much easier to wire up!

  • 1
    \$\begingroup\$ On the Circuit Lab parts limitations: I generally right click the part, use Edit Parameters --> Edit Individual Parameters, and put in my chosen part number as well as its operating parameters. \$\endgroup\$ – Anindo Ghosh May 17 '13 at 12:11

protected by markrages May 17 '13 at 3:14

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.