Hi folks, long time no post. I've been looking around at DIY/home-made fan controllers. They all seem to change the speed of the fan vs. temperature in a linear fashion (when exponential seems more appropriate to me). I assume there is a particular reason for this, I'm just not sure what it is. Possible problems: -how on earth do you do exponentials on a PIC? -the voltage range used to control a fan is too small to necessitate anything other than linear. Thanks for your help! m.
Ya you got the second on eright. You couldn't have really any temp var. and yo uwould end up with super high voltage which you ahve a limited range.
Think of it this way, how do you perform multiplication using only addition? Just perform successive addition. How do you perform exponentiation? Just perform successive multiplication or... successive addition in groups.
You're looking at this from the wrong angle. With a temperature-controlled environment, it takes a fan speed/voltage/flow of X to produce equilibrium at temperature T. PC fan controllers are a compromise, they don't try to hold the temperature steady whatever the heat being produced, they'll let it creep up to a still-safe level by which temperature the cooling device is running at full speed. So you need control such that the fan will still start at minimum temp and be full speed at maximum temp. Roughly linear in between may give the most pleasing overall noise relationship, though it might be generally quieter under "normal" use to ramp the speed up more gently in the first half of the temperature curve then rapidly at higher temperature - an exponential curve as you say. It's just not easy unless you use a uPC.
First: You can do floating point math routines on a pic. Dont sell it short just because its 8 bit. Now here's the real answer: As said, temperature control is not an absolute. You have system constraints. What would be most apropriate for a dynamic control would be a PID system. In order to do this, you have to look at what your system is. Your fan control is a voltage level between say 7-12Vdc (7-10.5Vdc if you use an adjustable regulator). Your system creates heat dynamically, meaning it can produce more heat when the CPU is under load. Your fans only have so much efficiency. To start, you measure the temperature for when your CPU is at full load and your fans are at maximum speed. Then bring down the load of the CPU and measure the temperature again. This will give you your temperature range. From there, it is possible to make a PID control scheme. If you plan to use a PIC, there is an appnote on the Microchip website that explains in detail how to do a PID system. Its alot of work, but its the right way to control a dynamic system.