0
\$\begingroup\$

I've fried 3 MOSFETs today, quite frustrating.

When I connect the gate directly to positive, it's pretty happy, the motor runs and the FET temp stays below 40 deg C.

MOSFET with gate to positive

When I connect the gate to negative, the motor turns off, and it still stays below 40 deg C, great!

I measured the gate voltage with a multimeter and noticed that when I connect gate to positive, the voltage is between around 0.01V and 0.001V (fluctuates a lot.) This doesn't make much sense to me, as I thought the gate had to be at least 4.5V to trigger. When connected to negative it's -0.01V.

MOSFET with gate to negative

When I connect it to the Arduino, the MOSFET temperature explodes and reaches over 100 deg C in no time. If I'm quick I can cut the power and save the MOSFET, but I've managed to fry 3 of them today.

Arduino Uno connected to gate

When the Arduino is in the circuit, the multimeter shows the Arduino giving the gate 5V when digitalWrite uses HIGH and around 0V when digitalWrite uses LOW. So, I'm wondering if I need to get the Arduino to match the voltages in the non-Arduino scenario to avoid frying the MOSFET. But, apparently it isn't possible to get the Arduino to produce a negative voltage on the pins.

Here's the Arduino code:

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(11, OUTPUT);
}

void loop() {
  
  digitalWrite(LED_BUILTIN, LOW);
  digitalWrite(11, LOW);
  delay(5000);
  
  digitalWrite(LED_BUILTIN, HIGH);
  digitalWrite(11, HIGH);
  delay(5000);
}

Edit: The multimeter is in series from the gate. Full part number is IRLB8721, which is N-chan.

Edit 2: Though the fan is a 12V 200W motor, I'm driving this from a bench power supply at about 5V 5A. I tried driving it from a 12V 20A power supply, but it apparently trips the overcurrent protection. Maybe it's a +240W fan.

\$\endgroup\$
10
  • 2
    \$\begingroup\$ Your multimeter result sounds wrong -- how did you hook it up? \$\endgroup\$ Jul 1, 2021 at 21:38
  • 6
    \$\begingroup\$ My guess would be that the MOSFET isn't fully on at 5V, hence the heating up. What's the part reference? \$\endgroup\$ Jul 1, 2021 at 21:38
  • \$\begingroup\$ What’s the Vgsth of your MOSFET? \$\endgroup\$
    – winny
    Jul 1, 2021 at 21:39
  • 2
    \$\begingroup\$ Edit your question to show how you hooked up the multimeter, and the full part number of the MOSFET. Typical MOSFETs these days want 12V on their gate; "logic level" MOSFETs will work with 5V or 3.3V, at reduced performance. \$\endgroup\$
    – TimWescott
    Jul 1, 2021 at 22:40
  • 7
    \$\begingroup\$ You need to measure the voltage between gate and source. Inserting a voltmeter in series with the gate lead will not tell you anything. \$\endgroup\$ Jul 2, 2021 at 0:38

5 Answers 5

2
\$\begingroup\$

multimeter is in series from the gate

That's not how you measure voltage. Voltage is a difference in potential.

All you're doing is inserting a couple tens or hundreds of MegaOhms of the multimeter input impedance between the driving voltage and the gate. The situation is static, so those are all DC impedances.

Since the gate's input impedance is orders of magnitude higher than that of the multimeter, the multimeter is relatively speaking a short, and the gate is relatively speaking an open circuit. The multimeter will measure zero - it's not really connected to anything (gate is an open!), and there's a short across it.

The voltage that actually turns on an N-MOS is between the source and the gate. So you have to connect one lead of the multimeter to the source, another to the gate.

Also: there shouldn't be such direct connections between the high power circuitry and the microcontroller. I bet that you'll destroy the Arduino many times while you experiment like this - as soon as you start PWM-ing the motor, and put some load on it so the currents get serious.

In your circuit, at this point, the most important part is the physical layout and protection features. You absolutely have to show us a picture of how you put it together. My assumption is that:

  1. You don't nearly provide enough heat sinking for the MOSFET, since you don't run the motor at full load.

  2. You have thin wires/traces and way too much parasitic inductance that will ring like crazy and kill everything on your board over and over.

Also: motor drivers must measure motor current. You must be in fact actively limiting the motor current, in software.

Once you do that, the typical way to test MOSFETs in motor drivers for overheating is to lock the rotor, so that the motor can be actually driven at its full rated current. I bet you that your MOSFET will release the magic smoke soon enough.

To get your design going along, I'd start with an off-the-shelf PWM motor driver module - you can buy them on eBay, Alibaba, etc. It will have a proper MOSFET driver and optical isolation, and will be safe to use with your Arduino without much worry.

Many such cheap driver modules only provide an adjustable hardware current limit, but no current feedback to the controller. You could then use a separate current measurement module, transfer the current limiting responsibility to software, and "peg" the current limit on the driver at maximum.

You'll need the current feedback to implement reasonably decent velocity control loops.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ "One of the most common mistakes made by novice physics students in the lab is getting confused about how to measure voltage and current..." youtube.com/watch?v=WGBcM5YmtR4 \$\endgroup\$ Jul 2, 2021 at 9:01
7
\$\begingroup\$

Sounds like you need a bigger MOSFET or a higher gate voltage. 200W at 12V is 16A. The RDSon for that MOSFET is 13.1 milliohms at 4.5Vgs, let's be generous and call it 10 milliohms at 5V, so you're trying to dissipate 2.6W. The thermal resistance to ambient is 62C/W which is optimistic since that assumes you're on a 1 square inch footprint. All together, your junction temperature should rise at least 158C which puts you above the absolute maximum of 175C starting from room temperature. RDSon drops to 6.5 milliohms at 10Vgs so I'd drive your gate with the convenient 12V you have already (and know works), or find a MOSFET that has a RDSon of ~5 milliohms at a Vgs of 5V.

\$\endgroup\$
2
\$\begingroup\$

The FET needs a higher gate-source voltage (Vgs) than the Ardiuno is providing to fully turn on at minimum Rds(on).

Even with proper drive, with a 200W motor it's at the limits of its thermal capability and so needs better cooling.

It's not a happy FET. It needs some help.

First, the drive is inadequate.

The IRLB8721 gives the following Rds(on) values at different Vgs drive:

  • Vgs=4.5V: Rds(on) = 13.1 to 16 milli-ohm
  • Vgs=10V: Rds(on) = 6.5 to 8.7 milli-ohm

What you're seeing is that the lower drive coming from the Arduino results in a higher ON resistance, and that's making the FET heat up. The dissipation at worst-case current (16.7A for 200W @ 12V) we get:

  • Vgs=4.5V: Rds(on) = 13.1 to 16 milli-ohm, FET dissipation at 16.7A is 3.7 to 4.5W
  • Vgs=10V: Rds(on) = 6.5 to 8.7 milli-ohm, FET dissipation at 16.7A is 1.8 to 2.4W

Big picture: driving higher (10V or greater) reduces the FET dissipation by more than half.

You can add a level shifter to make a higher Vgs drive to turn the FET on harder.

Example:

schematic

simulate this circuit – Schematic created using CircuitLab

Second, the FET thermal limits aren't being met.

Thermal resistance for that part (TO-220) package is 62 deg.C/W in free air. Max junction temp is 175C, so this limits the allowed rise to 150C (25C ambient.) Taken together, this effectively limits the power to 150C/62C/W = 2.4W. That matches the dissipation at your worst-case current and Vgs=10V, so it's barely adequate which is why it doesn't blow up immediately when you connect the gate to 12V.

For better results consider adding a heatsink to keep its junction temp under 175C. Consider also using two devices in parallel.

\$\endgroup\$
1
\$\begingroup\$

Only use Logic level FETs with Vt around 1V for this and use PWM to vary speed.

You were making the FET into a big resistor that would share the motor power dissipation.

Always use a FET with a Vt=Vgs(th)max < 1/2 of Vdd for Vgs.

\$\endgroup\$
1
\$\begingroup\$

IRLB8721PbF Datasheet

https://cdn-shop.adafruit.com/datasheets/irlb8721pbf.pdf

Figure 6 shows Typical Gate Charge vs.Gate-to-Source Voltage.

Figure 8 shows Maximum Safe Operating Area.

Figure 12 shows On-Resistance vs. Gate Voltage.

It is not clear to me how to interpret the SOA graph or how it relates to operation with or without a heat sink.

As the Gate charge increases this induces an electric field in the channel between Drain and Source which increases the population of charge carriers in the semiconductor materials which decreases the on-resistance. When switching the MOSFET "On" the design goal is to rapidly increase the Gate charge to rapidly minimize the on resistance. When switching the MOSFET "Off" the design goal is to rapidly drain the Gate charge. The Gate to Source equivalent circuit looks like a capacitor and it takes time to charge or discharge this capacitance through the resistance in the circuit (RC time constant).

The Gate-Source voltage does not have to go below zero to turn-off the MOSFET. In your Arduino drive circuit the 10k resistor from Gate to ground could be reduced in value to allow the gate charge to flow off the Gate more rapidly so the transistor spends less time conducting current with relatively high on-resistance. Heat sink would increase the safe operating area for the device and proper On-Off drive circuit are necessary to keep the power MOSFET from dissipating extra power when it operates in between the On (saturated) and Off states.

Fundamentals of MOSFET and IGBT Gate Driver Circuits

https://www.ti.com/lit/ml/slua618a/slua618a.pdf?ts=1625178399487&ref_url=https%253A%252F%252Fwww.google.com%252F

enter image description here

This reference describes the turn-on and turn-off behavior of the MOSFET in terms of the Gate charge and device parameters. Figure 10 shows the bipolar totem-pole driver which may be useful in your application. I plan to build one of these soon from discrete components to perform low side driver experiments using a 7.4 volt battery powered hand held vaccuum as the motor and load with a so-called logic level power MOSFET.

Gate-Source Equivalent Capacitor

The figure below, taken from this question:

Why doesn't shoot-through occur on totem-pole structure?

shows Cg as the equivalent capacitor storing the gate charge while driven by the so-called totem-pole circuit.

enter image description here

Based on comments below it may be true that Vgs is still limited by the logic level voltage output used as input to the driver circuit. However this driver circuit still might improve the switch time On/Off using the same logic levels and MOSFET as applied in the question.

\$\endgroup\$
3
  • \$\begingroup\$ Your "Totem Pole" driver still won't allow the gate voltage to exceed the input logic levels which won't help the OP. \$\endgroup\$
    – user16324
    Jul 2, 2021 at 10:41
  • \$\begingroup\$ @user_1818839 The Figure 10 shown above has V_DRV distinct from V_BIAS where V_DRV would be above the logic level output of the PWM controller or microcontroller output pin. However if the application is limited to logic level power supply Vcc then I agree an integrated circuit MOSFET driver or perhaps a discrete component charge pump would be necessary to fully turn on the MOSFET at higher gate voltage. Heat sink might still be necessary based on thermal analysis. \$\endgroup\$ Jul 2, 2021 at 17:20
  • \$\begingroup\$ However V_DRV supplies a couple of emitter followers, thus the gate drive is limited to < VBIAS whatever the value of VDRV. \$\endgroup\$
    – user16324
    Jul 2, 2021 at 17:53

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.