THRMISTOR CONTROLLED PWM WITH ARDUINO UNO, HELP NEEDED

:slight_smile: I am new to using Arduino, UNO, I have a project in my mind, as shown in this concept drawing.
My concept is to run a heavy load (upto 30amp 12VDC for a car radiator motor or Hydrolysis cell etc). The idea is to get readings from Thermistors (change resistance by change in ambient temp), and change the Pulse width with this from Arduino uno PWM. The resulting Modulation will control the amperage to the load, hence, upon getting high readings ( thermistor) the PWM could provide more current or vice versa, in case of hydrolysis cells. All readings to be displayed on LCD.
my concept drawing shows the basics. i am not sure about wiring and then coding it.
Bare with me, because i am an architect by profession and have an interest in Electronics. Pardon my ignorance about ELECTRONICS microchips arduino etc.

kind regards
architect
Syed Danish Raza

THRMISTOR CONTROLLED PWM WITH ARDUINO CONCEPT.pdf (144 KB)

First thing you need to do is learn how to write a short program to detect the temperature with a Thermistor and display the value on the Arduino Serial Monitor. Google Arduino Thermistor for lots of advice.

...R

When you say 'thermistor' I'm assuming you mean a DHT11 or an DS18B20 temperature sensors (easy to read using an Arduino). The latter (DS18B20) allows multiple sensors to the SAME pin because each sensor has a unique identifying code built into it.

Controlling a motor via PWM is what Arduinos were made for, although make sure your MOSFETs are TTL level gated which means the Arduino can turn them fully on with just 5 volts. Your IRF740s are not suitable as they require 10 volts to do this. (They will run HOT on an Arduino, just the thing you want to avoid).

I've covered all this in my videos and I'm suggesting in all seriousness that you might want to watch a couple that cover just these topics. I mean, you did say you were new to Arduinos and that's what my channel is all about. Check out videos #14 and 15 which describe PWM and video #28 which coves using multiple DS18B20 temperature sensors. For starters, anyway!

Ralph_S_Bacon:
When you say 'thermistor' I'm assuming you mean a DHT11 or an DS18B20 temperature sensors

When someone writes "thermistor" I will always assume they mean "thermistor". Definitely not an DHT11 or even it's more advanced brethren that at least gives some accuracy - that sensor won't last long in automotive anyway. OP even drawn thermistors in their concept drawing. Thermistors are a robust, cheap, and offer an accurate way to measure temperatures albeit with a bit of extra work on the microprocessor side.

Looking at the image, one major issue: the IRF740 mosfets are NOT logic level so will not switch on fully with Arduino level signals. Use the IRL equivalent (L = Logic level), or another logic level power MOSFET.

Your IRF740 is specced at a limit of 10A if you can keep them cool, dropping to 6A when running hot - with an Rds(on) of 0.55 Ohm you'll need a big heat sink - 10A means 55W of power dissipated! I don't think it's a good idea to run components at their limit, you have no room for error, or for the higher start-up currents of a motor, for example. Many other loads may also spike upon switching. I'd spec my parts at double the expected current, and allow for a peak of 5-10x the current if working with motors.

The IRL540 will do a lot better already. Logic level, Rds(on) = 0.077 Ohm so 10A still means 7.7W of dissipation, and they can handle 28A continous loads and peaks of 110A.

There are logic level power MOSFETs out there with much lower Rds(on), in the tune of 10-30 mOhm. That'd mean 1-3W of power at a 10A load: a much smaller heat sink & no more need for a fan.

You cannot read the thermistors as drawn - you should read make resistive divider by them and read resulting voltage: 5V - thermistor - (analog read here) - 10(?)k resistor - GND.

Also you cannot use diodes as you have them drawn, also the caps provide no protection AFAIK. Anyway to switch such current and large MOSFETs you probably need some driver chip.

i am using another arrangement to read thermistor as follows

5v----thermistor(10K)----A0----resistor(10K)---GND

and code is taken from a site and it reads fine. now the problem is to fire the IRF740, not one but 3. I can generate pulse width at PWD 12 connector.

So far not my first day at arduino.

Not a bad first day at arduino...! am thankful for your reply and interest.

Coding is still a problem for me, my circuit without introduction of Diods + capacitors works, but i need coding for this to run.

Help guys.

MOSFETs don't draw any significant current from the Arduino, so there should be no problem driving three power MOSFETs from one gate. Maybe add a resistor (1k or so) to limit currents when switching on but that'd be it.
The MOSFETSs of course also need a pull-down resistor to be able to switch off properly when there's no signal coming from the Arduino (an issue upon startup mainly).

Thermistor: to be wired with pull up resistor if you want to use the beta-formula to calculate temperature (the common way).

Looking at the datasheet you MAY be able to switch this MOSFET with Arduino, even though it's not logic level it seems to have low enough Vgs(th) for that. Start with a single MOSFET switching just an LED or so, make sure that works for starters. Then increase the power. But as pointed out before this is a pretty poor choice for your application.

my new setup, i can read accurate temperature in Celsius now. need to connect to 3 x MOSFET maybe use 3 x pwd outputs, coding still required.

DRAWING Model (1).pdf (131 KB)

Hi,
Thanks for the diagram, it would be better if you attached them as jpg or png.
The CAD you are using should let you export in jpg format.

OPs new circuit.


You will need to connect the gnd of the UNO to the gnd of the car battery.
It will help if you make positive wires RED and negative/gnd wires BLUE or BLACK.

Thanks.. Tom.. :slight_smile:

Three PWM signals to a MOSFET array driving a single load? Doesn't sound like a good idea.

Those signals will not be exactly in sync (now it's a question of how the internals of the ATmega work when it comes to PWM - you have to carefully study the data sheet), meaning your MOSFETs don't switch at the same time. I assume at least that these ports will be switched one after the other, based on the PWM timers, so even if they're supposed to switch at the same time there will be one or more clock cycles delay. This means you may overload MOSFETs (the first and last to switch have to take the full load for a moment), and your PWM signal does not have the bandwidth you think it has.

Connecting the gates to the same output sounds like a much better solution.

Check out these MOSFETS: SIR492DP-T1-GE3, SI7858BDP-T1-GE3 and SIS612EDNT-T1-GE3. Other than that they only come in SMD package which makes mounting a bit harder, they seem to be ideal for your application. The second has an on resistance of a mere 2 mOhm so at your 30A load dissipates just 1.8W. You don't need much of a heat sink for that to run cool, and at USD 1.79 in single quantities won't break the bank either.

Hi,

The IRF740 will not be particularly suitable.
10A is the ABSOLUTE max Ic, not the continuous current which is 6A.

The Rds is 0.55Ohms for each, so you would need a heatsink and as you have noted, if continuous operation, a fan.

It is not a Logic level device , your UNO will be supplying 5V PWM pulses, not 3.3V.

Tom... :slight_smile:

wvmarle:
MOSFETs don't draw any significant current from the Arduino, so there should be no problem driving three power MOSFETs from one gate. Maybe add a resistor (1k or so) to limit currents when switching on but that'd be it.

I have little experience with such "high" power but from theory: lot of current needs large FET -> large FET has high gate capacitance -> with "weak" Arduino pin (made even weaker with 1k resistor you suggest) it will take "long time" to turn the FET on or off -> power dissipation grows. But this may be issue only for even larger FETs? I don't know.

Couple of things to add:

  • I’d use a DS1820 temperature sensor - the non linearity of a thermistor makes it difficult to get the range within that of your A/D and you have to linearise it. The 1820 will give you a nice accurate temperature value, and is easy to use, and available in suitable package.
  • You need to look at PID loops to control the fan speed.
  • it might be easier to start with just having say two fan speeds - fast when it is a long way from your desired temperature and slow near to it , off at it . You need a bit of hysterisis around the control point to stop the fan going on /off all the time. ( you might find the workable speed range of the fan is low anyway as fan performance is non linear )

Smajdalf:
I have little experience with such "high" power but from theory: lot of current needs large FET -> large FET has high gate capacitance -> with "weak" Arduino pin (made even weaker with 1k resistor you suggest) it will take "long time" to turn the FET on or off -> power dissipation grows. But this may be issue only for even larger FETs? I don't know.

Mmm... It looks like you're right, never tried to work with those very high current FETs. I didn't look at that parameter, also wasn't aware of it going up much with increased peak current. It kinda makes sense: bigger current will mean bigger chunk of silicon for the gate, and that means more charge needed to charge it up.

The SI7858BDP-T1-GE3 as I suggested (selected with Mouser's selection function) has a gate capacitance of 5760pF. Definitely needs a resistor on the gate at that kind of capacitance - 250Ω for 20 mA, or 270Ω as first higher R24 value - otherwise fair chance the port will fail after some time doing PWM. Switching on/off now and then it may survive but still not a good idea.

Now the good thing with these specific MOSFETs is that 1.4V Vgs means the Rds(on) is down to about 6mΩ, and that voltage is reached in 0.53µs already (based on 270Ω and 5V signal voltage). The first 0.4V (minimum Vgs(th), maximum is 1V) it doesn't conduct at all, that's the first 0.13µs, so about 0.4µs this MOSFET is in partial-on state when switching on.

The switching off part takes a bit longer. To switch fully off (drop the gate to 0.4V) takes 4.06µs. The first part, until Vgs = 1.4V, it's fully on, to drop from 5V to 1.4V takes 2.05µs, so that's 2.01µs in partial-on state when switching off, or a total of 2.4µs per PWM cycle.

Of note is also that the switching takes 4.6µs per cycle, that may affect the PWM duty cycle at high frequencies. At 1000 Hz it's just 0.46%, probably not noticeable. At that frequency the MOSFET is 0.24% of the time in partial-on mode generating extra heat (which indeed can add up quickly at 30A), a number that can be reduced by reducing PWM frequencies.

That's getting a bit harder to calculate, not just because there's no data on the actual Rds values, but also because very soon the Rds will start limiting the current itself. If it would be at 0.4Ω the current goes down to 15A but power dissipation is 90W - if that's the whole switching period it'd be 0.22W total, while the constant on current would mean a dissipation of about 2W. So 90% or less duty cycle at 1000Hz should reduce the overall dissipation.

The MOSFET still needs a pull-down resistor (missing from the latest schematic), 10k will do just fine for that as all it has to do is keep the thing switched off during startup. When doing PWM the port will pull down the gate as fast as it pulls it up.

That was a very interesting note! Hope I understood everything correctly, if anything is wrong in this post, please correct me!

Hi,

I have little experience with such "high" power but from theory: lot of current needs large FET -> large FET has high gate capacitance -> with "weak" Arduino pin (made even weaker with 1k resistor you suggest) it will take "long time" to turn the FET on or off -> power dissipation grows. But this may be issue only for even larger FETs? I don't know.

So you use a MOSFET driver chip if you don't think the Arduino output will do the job.

Tom.. :slight_smile:

My 3rd day starts with good luck, all my equipment working just fine, i modified the simple LED dimmer (PWM) to monitor the thermistor input and "Vooollaaaa" my IRF740 MOSFET working like charm now. will share the diagram .

Good to hear you got the circuit going as such.

But have you already found some good use for all the excessive heat you're producing? Or are you really going to ignore all the comments about the suitability of your MOSFET?

on 3rd day i could fire up my irf740 with this concept. and for a full day of system test, they work like charm guys.

sdaniraza:
on 3rd day i could fire up my irf740 with this concept. and for a full day of system test, they work like charm guys.

  • no pull-down resistors on the MOSFET gate. Will probably work without but not a good idea.
  • pretty large resistors between Arduino and gate, slows down switching (port capacitance - see above), bad for PWM applications and may cause extra heat.
  • you can't switch them with just 3VDC.
  • that "push button to switch on Arduino" is almost certainly a switch.
  • that 10k resistor in the GND line, is that even a good idea?
  • did you actually test this at full 30A load for longer period of time?