N-Channel MOSFET overheating

Hello I’ve made connected my Arduino to an N channel MOSFET and from there to a DC motor, I’ve connected the cathode of the motor to a 12V 3A power supply and I tried to control the DC motor using the computer that was connected to the computer.
It worked for the first time but afterward, the drain pin got overheated and the soldering got melted and I had to solder it back but afterward, it got melted 2 more times due to overheating.
The MOSFET is heating only when it doesn’t conduct electricity, it seems that the overheating problem had encountered since I’ve tried to run the motor on a PWM signal(although I’m not really sure if it’s related or not).

Can somebody help me to solve the overheating issue?

This is the sketch that I’ve made:

What mosfet are you using?

tinman13kup:
What mosfet are you using?

I have already mentioned, I'm using N-Channel MOSFET, specifically: P55NF062 GF535V6 CHN435.
I think that it's this one: STP55NF06 Original STMicroelectronics Transistor | eBay

Here is the data sheet for that transistor. Much more informative than an Ebay ad. Note the specification for Rds(on) on page 4. Vgs is at 10V to fully turn on the transistor. If you are applying only 5V to the gate, the transistor is not fully turned on. That is why it gets hot. You need a “logic level” transistor for that application.

You also need a pulldown resistor on the gate. Without it, the gate can be left floating somewhere between off and on. A 10K from gate to ground will do just fine.

tinman13kup:
You also need a pulldown resistor on the gate. Without it, the gate can be left floating somewhere between off and on. A 10K from gate to ground will do just fine.

This is only true if the output driving the gate (on the MOSFET), doesn't drive to both rails. In other words, if the output only sources current, this would be an issue. I don't believe this can ever be the case with an Arduino output. Unless the Arduino output is set to "Open Drain" (i.e. to only sink current), it will drive the output both high and low, with plenty of current drive to keep the gate at either VCC or Ground -- so, no possibility of a float condition.

The pull down in there to keep the MOSFET gate at a known state, after reset, until the pin is set to OUTPUT by pinMode. Until then the pin is a floating input.

groundFungus:
Note the specification for Rds(on) on page 4. Vgs is at 10V to fully turn on the transistor. If you are applying only 5V to the gate, the transistor is not fully turned on. That is why it gets hot. You need a "logic level" transistor for that application.

There is, actually more to it than that. The Gate Threshold Voltage [VGth] is more telling.

The maximum gate threshold voltage is 4V, which, technically, means it is possible to turn this MOSFET "on" with 5V. But I put "on" in quotes, because on is defined by the application. If you look at Figure 7 (on the datasheet groundFungus linked to), you can see that at 5V, this transistor is good for up to 15A [with 15V Vds] (probably will need a heatsink at 15A, though). BUT, since this MOSFET's Rds(on) value is spec'd at 10V, it really isn't intended to be "turned on" with a mere 5V at the gate. In fact, because the datasheet doesn't include a graph that shows typical Rds vs Vgs, there is no way to predict the power dissipation with the gate set to 5V. Also, because 5V is so close to the worst case gate threshold voltage, if the Arduino output is at, say, 4.5V, that would make a HUGE difference in the drive capability of this MOSFET. BUT, at a gate voltage in the neighborhood of 10V, there is a LOT of leeway.

A MOSFET is, really, a voltage controlled resistor. And, according to the datasheet, a voltage of 5V will set the Source-Drain resistance to a value that will let some current flow. It's just a matter of how much resistance, and how much power must be dissipated for whatever current will be present at the Drain. If, say, only 100mA were involved, then, yes, this Transistor would be turned on at a gate voltage of 5V. But, why use a transistor with a 50A drive capability to control a mere 100mA? But, the point is, it could be done.

In other words, knowing the details of what is going on makes it possible to, in a pinch, break the "rules" and live "outside the box". I mean, like if you're out in the field, and all you have is one of these transistors, and you needed to do a temporary fix, you might get away with it, if you knew the finer details of how it works :wink:

groundFungus:
The pull down in there to keep the MOSFET gate at a known state, after reset, until the pin is set to OUTPUT by pinMode. Until then the pin is a floating input.

Good point! I forgot about that.

It would be interesting to look at the time is takes to charge the gate capacitance vs the time it takes for the MCU firmware to get to the pinMode call. Since the gate will start at zero volts in most cases, the MOSFET will be solidly off at power up, there's a good chance that the gate will stay at near zero volts long enough for the code to catch up, especially considering that an Arduino input has a very low leakage current, and the typical input capacitance of a MOSFET, especially one designed to handle currents over a few amps, is on the order of hundreds of pF.

The only other problem case might be if the system was shut down when the gate was at a high state. That high state might persist long enough to be a problem, especially if the power is cycled quickly, since there probably won't be a low enough impedance path to discharge the gate.

So, a resistor to ground is a good safety measure, in this case.

ReverseEMF:
The maximum gate threshold voltage is 4V, which, technically, means it is possible to turn this MOSFET "on" with 5V.

So what is Rds(on) of this mosfet at 5volt gs. 1ohm, 5ohm?
You need at least twice the Vgs(th) voltage at the gate for an acceptable low Rds(on).
Otherwise it's just a resistor that gets hot under load.
Leo..

"what is Rds(on) of this mosfet at 5volt gs. 1ohm, 5ohm?
Typically 16mΩ

see 4/15:

Whereas it was working, apparently, and then not working… perhaps there was a mishap or the devices are otherwise questionable. Posting the sketch and a good photo of the actual situation relate more than a “fritzy thing” can.

Runaway, that would be true if it were the same mosfet. Here is the DATASHEET Which has 18mOhm at 10Vgs, and a Vgs(th) of up to 4V.

It simply isn't a LL mosfet nor is it marketed as such.

Still, from what I gathered, the heating problem came with the mosfet supposedly being OFF. I'm thinking the gate was not at 0V, but somewhere around the Vgs(th) causing the mosfet to dump a bunch of voltage as heat.

Hi,
Please post some pictures of your project so we can see you component layout, particularly the solder joints at the MOSFET and show us how you have it connected to the powersupply.

Can you please post a copy of your circuit in a picture of a hand drawn circuit in jpg, png?

Please note down, power supply connections and pin names.

Do you have a DMM?

Thanks… Tom… :slight_smile:

Most of the issues would probably be solved if arduino project guides involving mosfets have some kind of big bold letter thing with big fonts at the beginning of the guide…eg. ‘don’t use just any old mosfet - ask first before using if don’t actually know what to use’. That probably applies to maybe any transistor…or maybe any component.

groundFungus:
The pull down in there to keep the MOSFET gate at a known state, after reset, until the pin is set to OUTPUT by pinMode. Until then the pin is a floating input.

This is an oscilloscope capture from a simple circuit composed of an open Arduino output [pin 4]. In other words, the only thing connected to this output is the oscilloscope probe. Pin 5, also configured as an output is connected to the Gate of an IRL530N logic level N-Channel MOSFET. Both pins are set to HIGH. Here’s the Arduino Sketch that was running in the Arduino for this experiment:

#define PIN_OUT_UNCONNECTED  4
#define PIN_OUT_MOSFET_GATE  5


void setup() {
  pinMode(PIN_OUT_UNCONNECTED  , OUTPUT);
  pinMode(PIN_OUT_MOSFET_GATE  , OUTPUT);

  digitalWrite(PIN_OUT_UNCONNECTED  , HIGH);
  digitalWrite(PIN_OUT_MOSFET_GATE  , HIGH);
}

void loop() {
  

}

This presents the argument that an input gate resistor to ground isn’t absolutely necessary. Notice how, around 26ms after the power is removed, the open output [Pin 4] falls to Ground. This happens because the internal circuitry presents a high impedance to the output. But, also notice the characteristic capacitance discharge curve that follows (it lasts for around 1ms). This shows there is just enough leakage current to discharge the minute capacitance there. That capacitance is probably composed of internal component parasitic capacitance added to whatever capacitance occurs from the breadboard I have this circuit on, and the wires that feed from the Arduino to the breadboard, and the scope probe capacitance. In other words, an Arduino output, even with power removed, is capable of discharging stray capacitance.

Now consider Pin 5. Notice how the discharge slope delays the approach to ground by several tens of ms, but, there is a noticeably different exponential path than before the output goes to High Impedance. The curve after that point is the leakage current, on the unpowered Pin 5, discharging the MOSFET’s gate capacitance.

Also, as groundFungus predicted, the High Impedance state on both outputs occured at around 2.5V (looks more like 2.4V).

According to the ATmega328P datasheet, VIH is between 3V and 4.5V, so, even before the output reaches the High Impedance point, it’s below what would be interpreted as a HIGH. And about 10ms later, the output is at 1.5V which is the upper limit of a solid LOW interpretation (also from the datasheet).

So, output leakage current takes care of bleeding off MOSFET gate capacitance. So, really, no need for that input resistor to ground.

But, it’s still a good idea, in cases where the extra resistance is not a design factor [Example of a case where the extra resistor might be a hindrance: The MOSFET gate needs to monitor a high impedance path].

Here’s the Test Circuit:

ReverseEMF:
...the only thing connected to this output is the oscilloscope probe.

Which is a 1Megohm resistor to ground, which makes any measurement on the open pin and gate invalid.

Try to do the same measurements with the scope ground probe connected to 5volt of the Arduino.
Make sure you have the Arduino on a 'floating' supply (laptop/battery) if you do this.
Leo..

Wawa:
Which is a 1Megohm resistor to ground, which makes any measurement on the open pin and gate invalid.

Try to do the same measurements with the scope ground probe connected to 5volt of the Arduino.
Make sure you have the Arduino on a 'floating' supply (laptop/battery) if you do this.
Leo..

Good point.

And for laughs, here's a Power Up experiment using the same setup:

But, once again, the probe resistance to ground is a factor -- but I have my probes set to x10 so it's more like 10Meg. But, still a factor! --crud :wink:

Hi,
Good scope experiment. :slight_smile: :slight_smile:

Can you put the drain potential on one of the traces so we can see the change in conductivity as the UNO is switched, put the drain resistor directly to V+.

Tom.... :slight_smile: