P-Channel MOSFET Heat in H-Bridge

Thread Starter


Joined Feb 6, 2010
Hello All,

I'm trying to create a MOSFET h-bridge using the same design I had success with using TIP127 and TIP122 transistors. I thought I would be able to plug in my new IRF9460 and IRF530 in place but I'm finding that this is not working as I thought.

When using the TIP127, it drives my motor with 12V SLA battery with no heat and no noticable power loss (PWM working fine).

However, when I exchange the TIP127 with a IRF9640, it heats up to the point where I can't touch it (> 150 degrees) and seems to be driving the motor at a lower power level...and slows down as MOSFET heats up.

I'm driving the P-Channel (IRF9640) Mosfet with an NPN transistor to Ground (See schematic).

The N-Channel IRF530 has no heat and seems to be working perfectly. Does anyone have any suggestions (ie resistor combinations or logic drivers) to keep my MOSFETS safe?

Many thanks.



Joined Sep 20, 2005
Well, do you know the difference between a mosfet and a transistor?
Mosfet needs at least 10 Vgs voltage, while transistor is controlled by voltage.
No unipolar transistor drive circuit will reliably work with mosfets.

Thread Starter


Joined Feb 6, 2010
Thanks Kobeek,

I guess I don't really understand the difference and that is probably the root cause of my issue. What do you suggest to use between a microcontroller and a mosfet gate to get the 10 Vgs with a PWM signal?


Joined Jul 9, 2011
The problem you are having right now is described on page 19 figure 19 of THIS app note.

IMO the resistors R2 and R4 are too big.

Example: When turning ON the transistor T1, the voltage at Q1's gate will be T1's saturation voltage + the voltage drop over the 1,8k resistor, all in all around 1V (-11V) The Vgs threshold of this FET is between -2 and -4V. Enough to turn the FET on.

Then, with T1 blocked you need to discharge the gate of the p-FET through R2, which is going to take quite a long time because it's resistance is too high. If you want to stick to this circuit you could try to lower this resistance to see if it helps a bit. Let's say 10k, just to have something to compare to.

Better would be to use a mosfet driver circuit like in figure 20 of the above app note or figure 6 of THIS app note or a level shifter/driver IC using LOW gate resistances (a few Ohms). The faster you turn on the MOSFETs the less switching losses you'll have.

Also, what's the PWM frequency?
Last edited:

Thread Starter


Joined Feb 6, 2010
Thanks for the advice and links. I'll try changing the resistor configuration and give it a shot.

The PWM frequency is around 30 Khz I believe (I don't have access to the code as I type this) using AVR phase-correct.

One thing I noticed is after switching out motors to a slower RPM gearmotor the heat essentially disappeared. My initial testing was done on a high RPM motor that was geared down quite a bit (Ride-on toy car motor). This motor either drew more amps or was creating more inductive noise. I wonder if adding Schotkky diodes would help this as well? I tried regular a diode and it didn't help.

Again, thanks for your help!