Positive voltage spikes on 12v rail when switching is killing MOSFET drivers

I'm switching two of these N channel MOSFETs in parallel with a TC4422a driver @ 60-100hz using an Atmega328 PWM pin on a custom PCB on battery power(3s lipo pack). I started with the TC4427 driver and they died randomly. Now the TC4422a is dying randomly. My buddy used his scope and noticed something very strange. Hoping someone can shed some light on it. The load is resistive(30a for this test or so), but it has some inductive properties, as it's a coil of resistance wire. Flyback diode is in place for the load.

The issue I believe is the positive voltage spikes that are high enough to go over the max of the driver(18v), but only on the 12v rail from the battery. The output from the driver to the gate looks great as well as the actual load itself. I attached pics so you could see them. The 12v input is the battery going from loaded to unloaded due to switching. It looks to me like the positive spike is where it goes from loaded to unloaded.

The 12v rail also powers a linear regulator that is working perfectly even while switching. The rest of the board is functioning as it should as well.

I read up on TVS diodes which I believe would stop the drivers from dying, but I'd really like to figure out what's going on here. Spikes of 15v wouldn't be an issue.

Please let me know if you need more info.

MOSFETS:(2 in parallel)
http://www.digikey.com/product-detail/en/0/568-11557-6-ND

DRIVER:(0.1uf and 4.7uf bypass caps)

Would you have a schematic of your hardware setup?
Is your leads to the battery short and stout?
Do you have several capacitors on your 12V rail?

Hi, thanks for the reply. I attached the schematic. I have one 10uf cap at the input of the 3.3v regulator and the 0.1uf + 4.7uf on VDD of the driver. No other caps on the 12v rail.

The battery wires are as short as possible and the driver is <1cm away from the battery input pad.

EDIT:This was just one example. The spikes were as high as 30v and usual was around 20v. The MOSFETs aren't having an issue it's the driver that dies. There is no spikes/riging/other issues on the output of the driver to the gate.

Maybe a 15V zener diode reverse-biased across the battery. It will shunt any spikes above 15V to ground. The diode could have any zener voltage between about the battery voltage plus 1V and the max voltage of the MOSFET driver.

I'm going to be using a TVS diode for the same idea, but I feel like it's a band aid. Figuring out the issue would be very cool.

I did not see the load on the schematic.
I assume the VDD on the TC4427 and the BATT+ is the 12V battery?

There are several ways to wire a flyback diode, but the one I usually prefer, is parallel to the inductor.

Right. There's another schematic sheet with a shunt monitor and shunt. Batt + goes across the shunt and is labeled OUT+. The flyback diode is in parallel between OUT- and OUT+(the load) It got rid of the negative spikes on the output.

Well, I can't find a TVS diode that meets my requirements. The issue is the clamping voltage is too close to the operating voltage.

My operating voltage is 7v-12.6v(2s-3s input). 12.6v max operating voltage and 15v or so clamping voltage is very close. Any idea on a super fast zener or other idea to clamp the voltage to 15v?

Your schematic indicates you are using a TC4427, but your original post seem to say you have changed to a TC4422.

The pinouts on these two are different. Could that be causing a problem?

You should ideally power the 4422 from a clean 12V supply with plenty of decoupling, 10uF or more ceramic
and 100uF electrolytic for good measure. You do not power it from the motor supply if at all possible,
motor supplies are extremely nasty. If your entire system is 12V then use a DC-DC converter from
12V to 12V for the MOSFET driver supply, then when the system is under heavy load and the motor
supply drops to 6V briefly, nothing bad happens. You could also up-convert from 5V to 12V from the
logic supply with a little DC-DC converter, the MOSFET driver average current is reasonably small.

You can try adding 50uF or so of ceramic and 10,000uF of electrolytic to your motor supply (gets
expensive), which should help bring down those spikes and reduce EMI too.

In general for high current circuits decoupling capacitors get very expensive and you are forced
to compromise.

My old board was using the 4427 and I switched it to the 4422a after changing the wiring in the schematic. Using another regulator to power the driver might be a decent option. Thanks!

I had a chance to test myself. The spike isn't random. It happens every time the MOSFETs turn off. I tested at first how the board was before any modifications and I saw a spike of 18.5v every pulse. I added a 1k series gate resistor and the spike went down to about 13.5v. I used the board for awhile over and over and the MOSFETs didn't heat up at all. I also added a 470uf electrolytic capacitor and saw no change at all, which was odd.

I know the proper thing to do is use a gate resistor for each MOSFET. Impossibe on this board revision, but I'll fix in the next one. I'll also test a lower value resistor, but even limiting it to 10-12ma is working just fine @ 60hz. No issues.

I attached some pics showing the spikes after adding the gate resistor. My scope sucks and is reading a bit higher than it should has well, so the spikes are probably only about 13.3v.

" @ 60-100hz using an Atmega328 PWM "
Have you changed the frequency of the PWM? It is normally set at about 500hz by default.

A 13.3V spike should not be a problem, where as 18.5v spikes could cause a problem.

The spike is due to inductance and the rapid dI/dt on switching. Minimising stray inductance
is everything in high speed design and it might help to rework the layout a bit perhaps. Slowing
the transistions will obviously work, but you then have to keep an eye on switching losses. 1k is
too high if you are PWMing, you'll just cook the MOSFETs on high power as they cannot switch
quickly enough. Since the 4422 is very powerful (many amps) you might want to try 30 ohms
or so in combination with better decoupling on the driver.

The frequency is 60hz right now, but I might up to 100hz. It's working fine at 60hz for now. The TC4422a is way overkill and expensive. I'm switching back to the tc4427 or similar. I calculated the rise/fall time for these MOSFETs using a 1k series gate resistor.

10v worst case Vgs with 3s input using a driver
1k ohm series gate resistor
2 MOSFETs in parallel with 25nC gate charge(rounded up to 30nC each)
Frequency = 100hz
Period = 10ms

10v/1k= 10ma of current

60nC/10ma = 6µS(0.006ms) rise/fall time.

Time the MOSFETs spend in linear region each period:
0.006ms * 2 / 10ms=0.12%
^rise + fall time divided by period. Is that correct? Even limiting it to 10ma seems perfectly OK to me. They're not heating up at all like this even after much use.

0.12% is nice and low - I'd say try to keep below 2% of the time in switching and switching losses
are "under control" That means < 0.5us switch time for 20kHz for instance. Ultrasonic
PWM rates are often used to avoid loud and annoying whining of motors and give much smoother
operation

Did I calculate that correctly? You can definitely hear it when it's running. At 60hz it's more like a 'buzz'. 100hz isn't as noticeable.

You've identified the spike happens when the FET opens, so it's the inductive flyback that's creating the issue. That being said, the flyback diode needs to return that spike back to the power supply. This means the battery (and all the leads to it) need to be as short and non-inductive as possible.

The separate DC/DC is a good idea ONLY IF the switching spike doesn't kill that like the FET driver. MarkT's suggestions on decoupling are spot on. About 50uF Ceramic or Tantalum in addition to however much electrolytic you can afford. The decoupling needs to be as CLOSE to the FET as possible, not at the battery.

" the flyback diode needs to return that spike back to the power supply. This means the battery"

It seems to me that the power source for the spike, is the motor (inductor), and the flyback diode should absorb the power produced by the inductor. So hook the diode parallel to the inductor. Maybe I misunderstand.