Electronic – Why do the P-channel MOSFETs keep dying in this H-bridge

bjth-bridgemosfet

So this is my H-bridge:
enter image description here
Every time I start using it in one direction the P-channel MOSFET and the NPN BJT which belong to the used direction die in seconds. The killed MOSFET and the BJT developing a short circuit so I can use the other direction no more. They die without noticeable heat or smoke!
The controller is an arduino uno, and only the N-channel MOSFETs are driven with PWM signal, the P-channels are connected to simple digital output pins.
PWM frequency is the default 490Hz for digital pins 9 and 10 (each PWM output is individual).
I've already killed 4-5 P-channel MOSFET + BJT pair, it could happen on both side. (It depends which direction I use first.)
The motor is a 12V car windshield wiper DC motor, the power supply is 12V 5A.
12V and 5V power supply grounds are connected.

There are two things which may be true, but I am not 100% sure as I did not test it thoroughly:

  • in the former version I was using 1k resistors for R7 and R8, and I did not have any problems. I will try it again but I am running low on P-channel MOSFETs now..
  • when I cut out the fried MOSFET + BJT pair, I can use the other direction without killing the remaining MOSFET + BJT pair.

Please help me, what is happening here 🙂

  • Should I use a resistor between the NPN BJT and the P-channel MOSFET?
  • Should I use a 2n7000 MOSFET instead of the 2N2222 BJT?

UPDATE:
I've just tested the H-bridge with a 12V 55W light bulb instead of the wiper motor. The P-FET and NPN were killed during the test. The N-channel side was driven with a 40% PWM signal.
Without a load it did not have any problem.

UPDATE2:
I changed back R7 and R8 to 1k from 150R. Now the bridge is working again without any components failing. (I didn't run it for days, but with the 150R resistors the reproducing of the fault only took a few seconds.)
I will add some decoupling capacitors on the bridge between the GND and +12V anyway as Brian suggested. Thanks for the answers to everyone!

Best Answer

How are you decoupling the 12V supply?

One possible failure mode is that inductive spikes from switching off the motor current (i.e. at the PWM rate) are dumped into the 12V supply via the flyback diodes. Yes, that's supposed to happen, but...

If the 12V supply is not decoupled, and is sourced from a PSU not a rechargeable battery, or is sourced via a long (inductive) cable, it is not actually a 12V supply, but momentarily driven up to that inductive spike voltage. Which could be well above the MOSFET ratings...

Monitor the 12V supply with a fast oscilloscope. If it shows signs of over-voltage spikes, increase its decoupling until it doesn't. (That should include 0.1uF ceramic capacitors for low HF impedance as well as an electrolytic reservoir capacitor. And possibly a 16V or 25V zener diode just in case...).

I don't know that this is your actual problem, but it is one base you MUST cover.