Controlling power to a DC heater through PWM

Hello,

I'm a hobbyist and I'm trying a simple project to control the power of a 12 V DC heater. I'm doing this through the use of a PWM pin (arbitrarily pin 7) and using the analogWrite command. My plan is to use PWM to send a voltage to the gate of an N-channel enhancement mode MOSFET (FQP13N10) and use this MOSFET to switch the heater on and off rapidly to essentially use PWM to control the voltage.

The heater is between 15 W and 24 W (24 W as it's heating but settles around 1.2 A). I've set the voltage with my power supply unit to 12 volts and it also displays the current drawn. I used a for loop to sweep analogueWrite values, and I notice there's no current draw up until about 130. However, my concern is that the MOSFET is quite hot; it's actually slightly melted the two holes in my breadboard that were connected to the drain and source. I know that they can get quite hot during use and a heat sink can be used, but I'm wondering whether this is typical, or whether I'm making a mistake? The MOSFET I'm using has an absolute DS voltage of 100 and the drain current is rated 12.8 A, so I'm well within the parameters. I'm just concerned because of the melting of the breadboard haha. I've attached a picture of the circuit. Please could anyone confirm whether this is suitable?

7 is not a PWM pin.
3,5,6,9,10,11 are on the Uno.

Provide a link to that MOSFET. I don't get any hits at Digikey.com to pull up a datasheet.

Yes, I said pin 7 by mistake (I made the diagram on my computer in a different room so I was going from memory). I'm actually using pin 5. I've attached the datasheet. I will clarify that I am using the uno as well as I've not explicitly stated that.

FQP13N10.pdf (754 KB)

Your problem is you don't have a "logic level" MOSFET so it doesn't turn fully-on at 5V and it gets hot. (VGS)

Yes, these numbers here tell the story:
At 4.5-5V, the part is barely on, so it gets hot.

Where a Logic Level MOSFET will have a Low Rds while supporting high current with a low Vgs:

(Ignore my previous deleted post).
I think I understand the issue now. I'll look into a logic level MOSFET, either the one that you posted or a similarly specced one that I can source.

Regards

If you have a real logic-level MOSFET, why not just use it?

You could use a pullup resistor to 12V to turn the current MOSFET fully on, and use a 2nd transistor that the Arduino can drive to then turn it off by bring the gate of the current MOSFET off. If the new one is a MOSFET also, I would pull it's gate high (turn it on) so the current MOSFET is turned off while the Arduino starts up, and once the Arduino is in control then High output will be off and Low output will be on.

Unfortunately, the only logic-level MOSFETs I have on-hand are both low voltage and low current so I don't think they're directly suitable? Based on your advice I'll look for either that or an equivalent low-V high current MOSFET

2N7000.pdf (110 KB)

BS170.pdf (1.27 MB)

And, in case it has not been mentioned, you might look into how much current the breadboard can handle.

Use a MOSFET like the FQP30N06L or IRL540NS/L (already shown) as to part number suggestions. I would also place a 10K resistor Gate to Ground(Source) to make sure when you turn it Off it is Off.

Ron

I would also put a pull down resistor on the gate to ensure it switches off .

A side issue with heaters such as this, is they have large changes in resistance with temperature , you see this with the extra current taken as it warms up .
The consequence is that power output doesn’t vary with voltage in the way you might hope ( not V^2).

You do not need PWM hardware for heaters.

Your code can cycle the heater on and off a few times per second and generate the required duty cycle. :sunglasses:

hammy:
I would also put a pull down resistor on the gate to ensure it switches off .

A side issue with heaters such as this, is they have large changes in resistance with temperature , you see this with the extra current taken as it warms up .
The consequence is that power output doesn’t vary with voltage in the way you might hope ( not V^2).

Heater current falls as it warms up, as resistance of metals increases with temperature (first post confirms this,
current falls to 1.2A (~15W rather than 24W). Standard heater wires are chosen for lowish tempco so the
change isn't that big, typically nichrome is used. If something has a resistance that falls with temperature
its likely a semiconductor.

Paul_B is right, its ridiculous to PWM a dc heater as it wont respond - unless it has a VERY small thermal heat capacity (like a light bulb filament.)

The big disadvantage of pwm at frequencies above a few Hz is that the main source of dissipation in the FET is during the change from on - off or vice versa - so the les often you do this the better.

Depending on the heater its enough to cycle it a few times a minute.

Depending on what you are heating and to what temperature you may want to do a Google of Arduino PID and get a handle on PID control and maybe apply that to your project. PID (Proportional Integral Derivative).

Ron