I have been working on a H-bridge design that controls a 12V motor to rotate forwards or backwards at an adjustable speed using PWM from an Arduino. The motion starts slow and increases to max speed for 10s then decreases back to slow. The entire motion is approximately 40s. I am using Q2 and Q4 for switching direction and applying PWM to Q1 and Q3 for speed control. This motion is initiated by inputs from the two relays. The circuit is show below: enter image description here

For the PMOS I am using the TO-252 package of the IXTY48P05T and for my NMOS I am using the D2PAK package of the IRLZ34NSTRLPBF. My diodes are through hole 1N4004.

Under no-load conditions my motor work perfectly fine. The problem that I am having is when I apply a purely resistive load (since I want to test the limits of my design w/o damaging a motor) my mosfets begin to short around 19A. Even the diodes fail under this resistive load, specifically D2 and D4.

I would be happy if I could only get 25A out of this circuit since the motor is only rated for 20A and I will be using a 20A fuse, but this circuit should sustain a minimum of 30A continuous current yet it fails at 19A. Where am I going wrong?

I can provide code if needed.

Edit: Duty cycle "flow"- 10% -> 90% -> 10%

Edit: I updated the circuit above. Thanks to the help from this amazing community! I managed to get my power dissipation down to approx. 3.2W for the PMOS and 700mW for the NMOS. New schematic:

enter image description here

I figured I could go with the SUM110P06-08L and SUM40012EL since the both have low Rdson and a manageable Qg. I stuck with the TC4420EOA to drive Q1 and Q3 since I am familiar with this chip and I no longer can operate at 100% duty due to the charging/discharging gate resistors. The resistors on Q1 and Q2 were specifically selected for these MOSFETs. Q1 charges fast through R4 (R9 in LTspice) and discharges slow through R5 (R3 in LTspice). Q2s gate charges slow through R7 (R4 in LTspice) and discharges fast through R6 (R10 in LTspice). The diodes direct current depending on charging or discharging. I know doing this methods puts unnecessary strain on the MOSFETs which generates heat but I refuse to use a NMOS for high side-switching. R3 (R1 in LTspice), R9 (R2 in LTspice), R7 (R8 in LTspice), and R12 (R5 in LTspice) are meant to prevent latching. I went with the FAN3268T since this uses TTL and I don't have to worry about adding a charge pump to hold Q2 or Q4 "ON". I will drive the FAN3268T with two inputs from the uC. R10 and R11 in KiCad are simply gate resistors.

I simulated this in LTspice using the MOSFETs with the closest Rdson and Qg compared to SUM110P06-08L and SUM40012EL. This circuit is shown below:

enter image description here

The Arduino UNO Mini has a PWM frequency of 980Hz for pin D5. V3 and V4 are supposed to be simulating FAN3268T. Where V2 is simulating TC4420EOA The circuit characteristics are shown below for V3 and V4 being 12V (Reverse operation at 10% Duty input (90% duty load)):

enter image description here

The circuit characteristics are shown below for V3 and V4 being 0V (Forward operation at 10% Duty input (10% duty load)):

enter image description here

Should I be worried about the voltage spike on the gate of Q1 during "power on"?

I was going to add TVS diodes across drain and source and between gate and source on each MOS but I was worried about leakage. Are diodes in these places necessary? I know they help with ESD but modern MOSFETs have this protection built into them now.

I added a fan circuit as well to help manage the generated heat. I plan to use heatsinks too.

Also if anyone sees any issues that may arise with this setup please comment!

ANY feedback is much appreciated!

Edit: New post at this link.

For future viewers, if anyone plans to use this circuit I am NOT responsible for failed designs, ANY damage, harm to self or others, etc.

  • 1
    \$\begingroup\$ I think the gate driver setup is problematic, as there can be no dead time when the N and P gates are in parallel. \$\endgroup\$
    – Bryan
    Commented Jul 2, 2022 at 5:14
  • 4
    \$\begingroup\$ Agreed, the tied gate drive ensures about 8V of shoot-through as the gate voltages swing from rail to rail. So, dozens of amperes of peak current. FYI, 1N4004 does absolutely nothing here--MOSFETs have internal (body) diodes, with lower voltage drop and faster recovery than 1N4004. \$\endgroup\$ Commented Jul 2, 2022 at 5:32
  • \$\begingroup\$ To completely get rid of shoot-through, I could use the H-bridge solely to change polarity of the motor and add an extra driver w/ NMOS between Q3/Q4 and the ground rail for PWM and to act as an enable. Is there a better way to approach this w/o changing the entire design? I will also ditch the diodes. \$\endgroup\$ Commented Jul 2, 2022 at 5:48
  • \$\begingroup\$ To limit shoot-through, only add an inductor series with your power supply (100 nH->1 uH). This should limit your di/dt to 120A/us - 12A/us. Simulated with 1 Ohm load. \$\endgroup\$
    – Antonio51
    Commented Jul 2, 2022 at 7:50
  • 2
    \$\begingroup\$ Even without shoot-through, 19 A and more is a lot to ask from these MOSFETs. You need very good heat-sinking to dissipate 13 W and more. \$\endgroup\$ Commented Jul 2, 2022 at 9:34

3 Answers 3


You can modify your existing circuit by adding large value gate resistors to reduce turn-on time along with Schottky diodes for fast turn-off time. Properly chosen for your particular MOSFETs, you should be able to greatly reduce cross-conduction at the expense of perhaps some reduced efficiency, but the simulation shows under 100 mW for the MOSFETs.

Motor bridge drive simulation

I reran the simulation with a 0.5 ohm load, and found that the upper PMOS devices had too high RdsOn, so I changed them to FDS4685, and changed the gate resstors to 500 ohms. Now the entire circuit dissipates less than 10 watts to drive the 115 watt load.


Three problems:

  1. 1N4004 is rated to 1A, not 20A. And it is too slow.

You can use the FET body diodes instead. They should not conduct often if the FETs are driven synchronously, so there should be no need for extra diodes.

  1. RdsON

The PMOS has 30mOhm RdsON max, the NMOS 35mOhm. So at 20A they will dissipate 12W and 14W resp. which would really need a TO-220 on a heat sink and not a D2PAK.

To use D2PAK MOSFETs, unless the PCB is very special and cooled from the bottom, you'd need a lot lower RdsON, which means a bigger MOSFET, higher capacitance, higher gate charge, and slower switching.

For example the lowest RdsON PMOS in stock on digikey has 2mOhms, which takes power down to 0.8W, which is absolutely fine for a SMD package with a bit of copper around it. But it has a Qg of 585nC maximum, which is huge. Another has 5mOhm, and Qg=88nC which is more civilized.

It is also possible to use two FETs in parallel.

On the other hand, you can get NMOS with 4 mOhm, Qg=28nC, for 70 cents. That's why I'm going to suggest ditching the PMOS and going NMOS-only.

  1. Dead time

The schematic in the question does not insert any dead time so there will be cross conduction, with both FETs ON at the same time, which will cause extra dissipation in the FETs.

One solution is to use one PWM output and one driver per MOSFET, and setup the PWMs to create a long enough dead time.

Another solution is to use one of a number of MOSFET driver chips that will do this automatically, and only turn on one FET after the other has turned off. This one costs 59c and has adaptive dead time, which ensures no cross-conduction. It just needs a 12V power supply.

The issue with these bootstrap drivers is they can't drive the top MOSFETs on continuously. The bootstrap caps have to recharge once in a while, so either the duty cycle has to be limited to something like 99.9%, or the micro must sneak in a low pulse once in a while when in a constant-ON state. Nothing stops you from adding a charge pump yourself, if needed.

More expensive chips include the charge pump to make the boosted supply to be able to drive the top FET continuously.

With an inductive load (motor) the power supply also needs solid decoupling. If the bridge reverses the motor direction, the top MOSFETs will dump motor current into the power supply. Without enough capacitance, that can cause the voltage to rise enough to exceed the maximum voltage rating of your parts. That's the main reason I'd prefer 30V FETs instead of 20V ones.

  • \$\begingroup\$ You might be able to add an inverter (12V supply CMOS) for the high side gate so that the PMOS device could be used, and the boost circuit would be unnecessary. That NCP5901 is a pretty nice driver for 59 cents! \$\endgroup\$
    – PStechPaul
    Commented Jul 2, 2022 at 10:08
  • \$\begingroup\$ I've used its cousin ADP3120 from OnSemi and it worked great! \$\endgroup\$
    – bobflux
    Commented Jul 2, 2022 at 10:22
  • \$\begingroup\$ NCP5901 would be a great IC to use but it only supports N-channel switching. Regarding what @PStechPaul said, does anyone have any knowledge on a gate driver that controls both P and NMOS with dead time control and capable of 100% duty or do I have to design a 12V inverter and use a driver (i.e NCP5901) that supports dead time? I am having a hard time finding anything matching these specs. Might seem like a lot to ask for out of a single driver but it definitely would be useful \$\endgroup\$ Commented Jul 3, 2022 at 2:01
  • \$\begingroup\$ The first thing that popped on an internet search for "pmos driver" was this chip, which seems to be exactly what you need: onsemi.com/products/power-management/gate-drivers/fan3268 \$\endgroup\$
    – PStechPaul
    Commented Jul 3, 2022 at 3:38
  • \$\begingroup\$ Unfortunately the FAN3268 has two separate inputs and the low side is inverting, so you can't just tie the two inputs together and drive it with a single PWM. There is also a FAN3278 but it's the same except for up to 30 volts. It might be possible to add an inverter for this device as well, Actually, a usual non-inverting half-bridge driver might work with the inputs tied together, but the cross-conduction protection might not work. I think a circuit like I show in my answer below might be best, if you must use only two PWM signals. \$\endgroup\$
    – PStechPaul
    Commented Jul 3, 2022 at 5:10

To "limit" shoot-through, add an inductor series with your power supply (100 nH->1 uH).
This should limit your di/dt to 120A/us - 12A/us.
Simulated with 0.5 ohm load. Made with microcap v12.
Should replace 1N4004 with MUR2510 (hyperfast, 25A, 100V) or similar.

With L1 = 1 nH, current is ~ 100 A peak.

enter image description here

  • 1
    \$\begingroup\$ A strange band aid on top of a bleeding wound. \$\endgroup\$
    – winny
    Commented Jul 2, 2022 at 8:35
  • \$\begingroup\$ Yes ... First Aid ... \$\endgroup\$
    – Antonio51
    Commented Jul 2, 2022 at 8:52
  • 1
    \$\begingroup\$ I think you will find there are greater problems when typical motor or even just wiring inductance is included... :) The usual solution (when supply inductance is relatively unavoidable) is a peak clamp snubber from Vplus to Isense, or across each individual MOSFET. \$\endgroup\$ Commented Jul 2, 2022 at 10:57
  • \$\begingroup\$ Will try with a inductive load and a motor ... not convinced. \$\endgroup\$
    – Antonio51
    Commented Jul 2, 2022 at 13:26
  • \$\begingroup\$ After simulation with a "motor load", no problems were encountered ... \$\endgroup\$
    – Antonio51
    Commented Jul 2, 2022 at 18:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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