PC fans switch

Hi, when a certain temperature is reached, I need to switch 3 12v PC fans on. When the temperature is lowered, I need to switch them off. For my application, it is possible that the fans have to stay on for about 10 hours. Fans use 120 mA @ 12v each, my controller is an Arduino UNO. I'm asking for the simplest (and possibly cheapest - but simplest is more important) way to implement this switch.

Thanks for your help! :)

first you need 4 connectors (now is standard) PC Fan;-

  1. Ground

  2. Power - +12 V

  3. Sense - a tachometer that measures the actual speed of the fan as a pulse train, frequency being proportional to speed. With each fan rotation, there are two pulses sent through this pin.

  4. Control - PWM signal (Pulse-width modulation), gives the ability to adjust the rotation speed on the fly without changing the input voltage delivered to the cooling fan

The PC Fan noise levels can reach 70 dB. Since fan noise increases with the fifth power of the fan rotation speed,
reducing rotations per minute (RPM) by a small amount potentially means a large reduction in fan noise.

like learn more about noise vibration control: Handbook of Noise & Vibration Control, Sixth Edition

Control fan speed, Dave did fantastic job, here is his thread. http://forum.arduino.cc/index.php?topic=109403.0

Here is diagram:

Read fan rpm,

http://fritzing.org/projects/reading-pc-fan-rpm-with-an-arduino/

Well that might be a bit of a complex solution sonnyyu, where the OP really just wants off and on.

First you need to look for a temperature sensor: there are lots of threads about them, and have a look on Sparkfun or adafruit to see what they sell.

Second you simply hook the motors up in parallel using an NPN transistor, something like this. (Assuming they all work at once... )

Then third, write a sketch to read the sensor and switch the fan on and off. You'd need to think of something to prevent it switching off and on too quickly if the temp is hovering near the threshold, some kind of "band" idea maybe.

Maybe consider the fans working separately (sounds like you want them working together?) and have the second and third switch in at higher temps, ie if one or two fans is not controlling the temp adequately.

I agree with JimboZA, you don't need a micro to do just this. An analog temp sensor, a potentiometer and a comparator driving a small MOSFET would do it. Or did you want to display temp and do other things?

Although my idea does use a micro: just not doing the fan speed thing which is getting a bit complex. A micro-less solution is even better of course, unless the micro is in play for some other part of the project and is “free” in that sense.

afremont: you don't need a micro to do just this.

JimboZA: A micro-less solution is even better of course

I agree 100%, however we are in Arduino forum and fall in this situation - "if all you have is a hammer, everything looks like a nail" "if all you have is a brand name Atmel hammer, everything looks like a brand name Atmel nail".

PC Fan Control using ATtiny13, App Note, Atmel

http://www.atmel.com/Images/doc8005.pdf

Hi, thanks everyone for the replies! :) At first my idea was to use PWM fans, but 1) they all have a fixed minum rotation speed (as per Intel spec) that is 30%, and 2) the PWM freq should be around 25 khz (Intel spec) which in my limited experience involves changing the Arduino timers which in turn affects millis, PWMs etc

I also tried to PWM an optocoupler that was driving a mosfet, but the fan was making a whining noise so someone suggested to raise the frequency (same cons as above) and someone else also stated that fast switching the current of a brushless dc motor could in the long run damage the motor.

So, to keep everything simple, I decided to go for a 3 wire (I find them easily) or a 2 wire (rare) fans and switch all of them on/off based on the reading of 3 temperature sensors.

My application is an aquarium fixture, and arduino is needed to manage (by PWM) the various LED channels.

It will also read the heatsink temp, and if above a threshold it will turn the fans on. If the temp continues to raise (probably a fan faulting), dim LEDs at 50%. If the temp still raise, turn the LEDs off.

I was just wondering if it would be better/safer to use a transistor or a relays or something else.

So again thank you for the replies, and please add any suggestion you may have! :)

Panta_rhei: At first my idea was to use PWM fans, but 1) they all have a fixed minum rotation speed (as per Intel spec) that is 30%, and 2) the PWM freq should be around 25 khz (Intel spec) which in my limited experience involves changing the Arduino timers which in turn affects millis, PWMs etc

First thing, you need make sure your fish is happy with 70 dB fan noise 3*70 dB fan noise. :P

Here is the 4 fan speed control methods:

Fan minimum specified RPM.

It could go below 30%, please follow Dave's thread. He has code to take care range 21 kHz to 28 kHz PWMs and turn the headache into fun.

Panta_rhei: My application is an aquarium fixture, and arduino is needed to manage (by PWM) the various LED channels. It will also read the heatsink temp, and if above a threshold it will turn the fans on. If the temp continues to raise (probably a fan faulting), dim LEDs at 50%. If the temp still raise, turn the LEDs off.

perfect application for water cooling heatsink ! zero fan, one plumb.

Cooling LEDs by heating the water saves on electricity

http://hackaday.com/2010/02/26/cooling-leds-by-heating-the-water-saves-on-electricity/

Thermal conductivity at 25 degree C

Air, athmosphere (gas) 0.024 Water 0.58 Water beats Air 2417%.

sonnyyu: First thing, you need make sure your fish is happy with 70 dB fan noise 3*70 dB fan noise. :P

If the noise was so high, wife would complain much more than fishes :D They will be 3 Noctua 13 dB fans

sonnyyu: It could go below 30%, please follow Dave's thread. He has code to take care range 21 kHz to 28 kHz PWMs and turn the headache into fun.

Yes before posting I read many articles including the one you linked, but as far as I understand (newbie) what he does to rise the PWM involves "losing" one PWM pin (pin 9) and can control 1 fan.

Also:

dc42: OK here is the version for Uno or Mega. For the Mega it can control 2 fans. To set the speeds, call setTransistorFanSpeed or setDiodeFanSpeed. The range is 0 to maxFanSpeed, however in practice the minimum fan speed is about 30%.

I found another interesting article, http://www.apcc.tk/diy-projects/pwm-arduino but if you watch the video, you can hear the "whining" and also pwm DC motors etc.

sonnyyu: perfect application for water cooling heatsink ! zero fan, one plumb.

Cooling LEDs by heating the water saves on electricity

YES! A little more different than the one in the link: pipe in the heat sink has to be high (temperature) conductive material but heater serpentine in water has to be made of plastic, also a bypass/check valve has to be implemented not to overheat the water (during day and/or summer) and not to unnecessarily heat the heatsink with the water heat (during night/light off). But I agree with you it would save a lot of money (and I wonder why no commercial manufacturer of light fixture has not industrialized yet such a system... :roll_eyes: )

Thanks everyone for the help on the subject, time to solder some dozen LEDs now! :D

Regards