PWM killing MOSFETs driving two cordless drills motors

Hi all,

I’ve made a wooden Kart from my son, and we motorized it with two Chinese
cordless drill driving with gears the rear wheels. To control them we build a
small PWM circuit controlled with an Arduino as it is shown in the image.
T1 = BC548
T2 I’ve tried P55NF06, IRFZ44N
D2 = Schottky diode 1N5822
The circuit is powered with a LeadAcid 12V car battery.

What ever we tried it works for a while (few minutes) and randomly
the MOSFET dies. Sometimes with fumes sometimes without.
I don’t believe it is overheating because the heat sink is still
cool.

I’ve tried several things adding the R4, and D1 15V zener to protect
from the spikes, the C1 470uF, as well replacing the D2 from a
normal Si one to the Schottky… All with no success…
I’ve also tried various PWM frequencies from the default of 500Hz
to 15kHz, still no success.
I believe they are killed the motor spikes that I cannot filter them
out. So I added a ferrite on the cables to the motors as well 100nF
capacitors from the leads to the motors bodies. Nothing.

Recently I’ve bought the IRF540N, which can operate at 100V but now
it lets the motor spin without any load, but does nothing with load.
Like the internal resistance is too high?

Any ideas would be strongly appreciated!

Thanks in advance
Vasilis

Hi,

I don't think the 10K pullup is moving the FET gate very quickly positive.

Usually motor driver circuits use a "FET Driver" chip that can move the gate voltage very quickly for low losses.

You may also be able to use a 555 IC chip as a FET driver. See THIS PAGE.

I have had a similar problem driving an electric wheelchair motor and I need to go back to working on it.

Let us know what you learn!

Hi,

I agree with Terry in that the 10k pullup is definitely not good at all. The MOSFET needs to be turned on and off very fast or else the power dissipation goes up and the MOSFET gets hot and dies off. A typical value in a roll your own driver would be 10 ohms or even less, but that will eat up energy here. For PWM, you really need a MOSFET driver chip or build a good driver yourself.

Also, you may need higher current diodes as the current in the catch diode will be just as high as in the motor when the motor is switched off by the PWM. Check and make sure the diodes are not blown open.

Many thanks for your quick reply!

@terryking228 I've tried the 555 in the beginning, but I couldn't make it to go up to 100% high as output at full throttle, so not very fast as final speed and my son didn't like it :(

While with the arduino at certain moment I switch off the PWM and make the pin (low) to fully turn on the MOSFET. When the MOSFET is fully on, it doesn't heat up and doesn't burn. Its only during the PWM (acceleration or deceleration phase). I will try as @MrAI suggested a smaller value. R3=10 ohm is not too low? Should I remove completely as I did in the first place the R4?

@MrAI The diodes are ok.

vlachoudis:
Many thanks for your quick reply!

@terryking228 I’ve tried the 555 in the beginning, but I couldn’t make it to go up to 100% high as output at full throttle, so not very fast as final speed and my son didn’t like it :frowning:

Were you using it in the normal oscillator kind of configuration? The link in Terry’s post shows a more unorthodox use of the 555 as a high-current buffer for the digital control signal.

While with the arduino at certain moment I switch off the PWM and make the pin (low) to fully turn on the MOSFET. When the MOSFET is fully on, it doesn’t heat up and doesn’t burn. Its only during the PWM (acceleration or deceleration phase).

That clinches it as the gate driving circuit being the culprit. You need to reduce the impedance and have it charge the gate faster. Use Terry’s 555 circuit as a starter.

@Jiggy-Ninja, I didn't see that part in Terry's page. I though it was proposing to use directly the 555 as PWM. I am making a test on the breadboard right now, and the next days I will test on the kart to check. Many thanks again.

You said you increased the frequency but you could try reducing your PWM frequency. A drill motor has a lot of inertia so doesn't need ~500Hz PWM.

I recently used a MOSFET to dim some highish power DC lighting. At normal Arduino PWM frequency, the MOSFET got warmer than I liked so I reduced the frequency (with a library) to 50Hz.

I don't know if the boffins here would consider that a workaround for a bad circuit design but it seems to work how I wanted and doesn't get warm at all.

Make R3 330 ohm (1/2W or more), R1 1k ohm - you need lots of pull-up current to switch the MOSFET in PWM - switching losses normally dominate with PWM.

Move R2 to directly on the PWM pin and make it 1k - you don't want it to form a voltage divider, you do want it to saturate the transistor. The zener is a smart move, it will protect against various failure modes, but it needs to be directly between gate and source, not on T1's collector.

Alternatively a MOSFET driver chip can replace 6 components.

[ BTW what is the stall current of each motor? 30A or more probably, you need a very low on-resistance MOSFET - aim for 3 milliohm or less - for sensible thermal performance ]

The STB55NF06 has an on-resistance of 18 milliohm and a total gate charge of 60nC at 10V (ie about 75nC at 12V)

From 12V your 10k resistor can pull up with a maximum of 1.2mA. And at the gate plateau voltage it will only pull about half that. 75nC of charge takes 120us to flow at that rate, so the MOSFET will be in a half-on-half-off state for perhaps 50 to 100us or something around that. The MOSFET driven properly can switch hundreds of times faster than that. MOSFET driver chips are often rated around an amp for this reason, not a milliamp.

If the load is 20A at 12V, half-on means 10A flow at 6V, ie the MOSFET sees 60W for the duration of switching, which is perhaps 10% of the time. Thus 6W of switching losses are happening which can be nearly completely eliminated by using a much smaller pull-up resistor of 330 ohms.

By the way with 18 milliohms conduction losses are 0.018 x 20 x 20 = 7.2W, which is why I suggest finding with an order of magnitude lower on-resistance.

The 20A is a bit of a guess, but seems plausible to me. The stall current peaks will probably be rather more and might be causing very high dissipation at start up.

Thank you MarkT. The stall current is of the order of 10A per motor, 20A in total. I will replace the R3 with 330 and move the zener on the gate or remove completely the R4. The R2 I added, because during reset the arduino was pulling low the PWM for a fraction of a second, and the motors were spinning. If I understand well your suggestion is to move the R2 on the left of R1 correct? In the mean time I am testing also the 555 as Terry suggested.

Hi, Do you have a fuse in the power line of the battery, if not FIT ONE.

Also fit a battery isolator, one that connects to the battery terminal, you may be only drawing 10 to 20Amps but that battery if shorted will produce 100's of Amps.

Tom... :)

Thank everybody for the suggestions. Indeed the R1/R2 wrongly perform a voltage divider, luckily it was giving always a Vb=.1V<0.6 so the transistor didn’t turn on. I moved the R2 on the left of R1 and reduce the R1 to 1k.

Also reducing the R3 to 330 and suppressing the R4 the MOSFET goes high immediately giving a “nice” square pulse. With the R3=10k as it was it had a slow rise of 40us. I have prepared also a 555 as monostable and I will check on the weekend on the kart how it performs and report back here.

@TomGeorge I do have a fuse of 30A which didn’t blew up :slight_smile:

vlachoudis:
Thank everybody for the suggestions. Indeed the R1/R2 wrongly perform a voltage divider, luckily it was giving always a Vb=.1V<0.6 so the transistor didn’t turn on. I moved the R2 on the left of R1 and reduce the R1 to 1k.

Also reducing the R3 to 330 and suppressing the R4 the MOSFET goes high immediately giving a “nice” square pulse. With the R3=10k as it was it had a slow rise of 40us. I have prepared also a 555 as monostable and I will check on the weekend on the kart how it performs and report back here.

@TomGeorge I do have a fuse of 30A which didn’t blew up :slight_smile:

That is because your problem wasn’t over current, it was the slow switching time. R1 and R2 had nothing to do with it, and were perfectly fine just as they were. The problem was R3.

When using a transistor as a switch, broadly speaking there are 3 states it can be in.

The first is cutoff. Just like the name implies, the transistor is “turned off” and not conducting current. This is when voltage is at maximum, and the current is at a minimum, just a small amount of leakage. Ideally, it would be 0. High voltage * very low current = low power dissipation, so low heat.

The second is saturation. This is when the transistor is “turned on” and conducting current. The current is it it’s maximum value, but voltage will be at a minimum. High current * low voltage = also low power dissipation, just like cutoff.

The transistor cannot immediately and perfectly transition between those two state. As you reduce the driving signal from saturation, the voltage will gradually fall and the current will gradually rise. During the transition, with the voltage and current both having significantly large values, there will be significant power dissipated by the transistor. The same thing happens in reverse when increasing the drive signal from cutoff: the current ramps up and the voltage ramps down, leading to a similar pulse of power.

This region between saturation and cutoff is called the linear region, and is a very bad place to be for a power transistor. You want to spend as much time as possible in saturation and cutoff, and stay out of the linear region. Unfortunately, whenever you transition between cutoff and saturation, you have to pass through the linear region. You cannot avoid it, and you cannot reduce the peak power of the linear region’s pulse.

The one thing you can control is the amount of time you spend in the linear region. Power is energy per unit time, so if you spend less time in the linear region, the circuit will dissipate less heat even if the peak power is the same. It’s like the relationship between speed and distance. Even if you keep your speed the same, you can change the distance you travel by changing the amount of time you move for.

This is why I said that your observation that the failure happens during acceleration clinches it. PWMing the MOSFET will cause it to make very frequent transitions through the linear region, around 1,000 times per second at the default PWM frequency. Increasing the frequency to 15 kHz does not help, it actually makes it much, much worse. In the worst case, the low-pass filter caused by the resistor and the gate capacitance will cause the MOSFET to stay in the linear region causing constant power dissipation. This will not happen when the MOSFET is held fully on or fully off, because then there are no transitions through the linear region causing excessive power dissipation.

This is why the gate driving circuit is critically important for high-powered MOSFETs that will be rapidly switched. There are even specific ICs called gate drivers that are specifically designed to switch MOSFETs as rapidly as possible with high current pulses, some of them rated for several amps. A 10A gate driver will fully charge a 1 nF gate to 10 V in 1 ns.

Decreasing the R3 resistor from 10K to 330R is a legitimate solution that will increase your gate drive current, allowing you to spend less time in the linear region. However, it also consumes more power because turning off the MOSFET requires connecting it straight to GND. 12V/330R = 36 mA being wasted when the MOSFET is help off. This may or may not matter depending on how much room you have in your power budget.

I have prepared also a 555 as monostable and I will check on the weekend on the kart how it performs and report back here.

The circuit in Terry’s link is not a monostable configuration, nor is it an astable configuration, which is the other way the 555s are normally used. It is using the 555 as a current buffer in order to take advantage of the relatively large amount of output current (100-200 mA) that most 555 chips are capable of driving. It’s basically just a stand-in substitute for a real gate driver chip.

Hi,

The circuit in Terry's link is not a monostable configuration, nor is it an astable configuration, which is the other way the 555s are normally used. It is using the 555 as a current buffer in order to take advantage of the relatively large amount of output current (100-200 mA) that most 555 chips are capable of driving. It's basically just a stand-in substitute for a real gate driver chip.

Right! A real FET Gate Driver (I just got some from DigiKey.com) is HERE

I also got some of these TVS diodes to put across the Motor leads on my electric wheelchair transaxle that runs the Little Blue Car my kids and grandchildren have ridden for many years.. See HERE.

The car was a lot simpler in 1962 when it had a 6V car generator used as a 12V DC motor, chain drive and a "starter solenoid" ON-OFF pedal control. But nerds need to do upgrades. This is V 3.x [Not Working Yet] Here's V2.x:

|500x375

Let us know how you do; when I can get this back together I'll report what I find..

How much rubber can that beast burn?

Many thanks everybody! I've followed your suggestions, reducing R3 to 330Ohm, removing R4, additionally I added a RC snubber across the D-S of the MOSFETs as a high pass filter, a bigger aluminium cooler and put in parallel two IRFZ44N MOSFETS. My son test it today on the Kart, and for the moment it didn't burn any MOSFET :)

Hi, Good to hear, looks like its fun...

Tom... :)

Yes, its fun for the kids, now, we can do the more serious stuff, add Ferrari stickers, headlights, horn, mirror, I have even an old voltmeter panel (with the needle) and I will add it as a speed indicator :)

Hi, Don't forget kids grow, you had better get started on the next larger model.

ABS, AIR BAGS, CRUISE CONTROL, TRACTION CONTROL, ACTIVE SUSPENSION ohhh the many extras you will need..

Tom... :)

vlachoudis:
Many thanks everybody! I’ve followed your suggestions, reducing R3 to 330Ohm, removing R4, additionally I added a RC snubber across the D-S of the MOSFETs as a high pass filter, a bigger aluminium cooler and put in parallel two IRFZ44N MOSFETS. My son test it today on the Kart, and for the moment it didn’t burn any MOSFET :slight_smile:

The two bolded items are the ones that would have made the most difference. If you didn’t give the two MOSFETs their own gate drive circuits and just paralleled two of them up, it’ll be a wash basically. You’ll have half the resistance when they’re on, but you didn’t have a problem with it fully on to begin with. But with the same gate driver driving two MOSFETs, they will take twice as long to charge up so they will heat up more than necessary during each transition through the linear region (which happens 1,000 times per second when you are PWMing at the default frequency). It won’t be nearly as bad as when you had the 10k resistor in the drive path, but it will still be suboptimal.

vlachoudis:
Yes, its fun for the kids, now, we can do the more serious stuff, add Ferrari stickers, headlights, horn, mirror, I have even an old voltmeter panel (with the needle) and I will add it as a speed indicator :slight_smile:

Flames add 10 horsepower. True fact. Though that’s for cars, you’ll need to scale your expectations down for your little buggy.

TomGeorge:
Hi,
Don’t forget kids grow, you had better get started on the next larger model.

ABS, AIR BAGS, CRUISE CONTROL, TRACTION CONTROL, ACTIVE SUSPENSION ohhh the many extras you will need…

Tom… :slight_smile:

And powered steering, and lane departure warnings, and a backup camera, and a touchscreen infotainment system, radio, etc.