New PWM FAN controller design


Golfonauta

Recommended Posts

Hello all,

 

I'm part of a team of makers creating a new FAN controller. We have created a board to fully control 8 PWM FANs from software and we are already creating the software to control them relative to the temperature of some other components in the computer for Windows and linux (unraid must be there).

 

We are probably going to create an Indiegogo or Kickstarter campain about it.

 

I would like to know what could we do to take your interest in the product.

 

Thanks for your Support.

And to Lime Tech - Unraid for being my NAS for some years now!!

Link to comment

To the OP (Golfonauta):

 

If the controller has 8 PWMs (a good thing for a high end controller, in my view) then the monitoring and configuration options probably also need to be quite numerous and flexible.

 

Based on my own dissatisfaction with controllers that I have seen in the market place, I would suggest:

 

PWMs - 8

Sensors - minimum 4 (ideally up to 8 to allow multiple sensors near large numbers of disk drives)

 

The clever stuff (where most controllers are limited) comes with how the sensors and PWMs are linked.  The following is overkill in many situations, but at the same time would allow system builders to tailor the cooling to their individual requirements.

  • I would create separate software controllers (as many as sensors).  But I would also permit a software controller optionally to respond to more than one sensor, perhaps with the behaviour of the controller determined by the highest temperature detected from that controller's sensors.
  • Each software controller would be configurable for a minimum fan speed - can be specified as a percentage, but must include the option of the fan being off.
  • I would include a temperature at which the fans on that software controller start and specify that fan speed as a percentage.  I would include a temperature at which the fans on that controller are at maximum. Different software controllers could have different fan start temperatures.
  • I would allow the maximum PWM output of a software controller to be set to a figure less than 100%, since many fans are a lot quieter at only around 80% or so, but can still be effective.
  • I would allow the software controller to linearly calculate the required fan speed based upon the measured temperature if it was between the lower and upper limits.
  • I would allow a lot of flexibility in assigning PWM outputs to the software fan controllers. One software controller might only have on fan (cpu) but another software controller might support two or three fans at least (disk drives) and each fan could still be individually monitored.
  • I would ensure that at least one sensor and output could be used for a liquid cooling pump and its temperature monitor.  Most pumps run only at 100%, I believe, but there might be some value in an on-off control option which is determined by temperature.
  • The controller would have the option of one or more alarms (audible, LED, and via monitoring software in the system to enable email alerts) for over temperature, fan failure, etc. The trigger for these alarms should also being configurable on a per software controller basis.
  • Once configured, all of the controller's parameters would be stored in the controller in non-volatile memory and the controller would always be able to run autonomously.  This allows the controller to be effective while a system is booting and would ensure that in the event of a major system crash the cooling remains under firm control.
  • I would connect the controller hardware to the system via USB for configuration and monitoring.  Once configured controller should run without this connection being present. The USB connection could simply be hosting a standard serial port as far as the software is concerned.  An internal USB connection to one of the system motherboard's USB headers would often be sufficient

This kind of system could allow separate monitoring and control for multiple zones (CPU, disks, more disks, system exhaust, power supply exhaust, etc) with appropriate controls being applied to each zone.  Different cooling regimes could be applied to each zone according to the system's and user's requirements.

 

Sorry it's a long list, but having looked at this in the past, I have found the controllers generally available to small scale users that need sophistication are often quite inflexible and lacking in options. 

 

I hope the above is helpful.

 

Cheers,

 

Les.

 

 

 

 

 

Link to comment

I'm sure some people here would be interested... me included.  unraid would be a bit of niche area to develop for I think.

Maybe, but there are a good number of higher-end system builders and tweakers out there as well - just consider what some spend on higher spec graphics cards, CPU coolers and the like. 

 

Maybe the OP could draw up a spec and then ask what folks might pay for such a controller.

Link to comment

Thanks for all your reply, I'm going to reply your questions later.

 

Just as a quick note the communication will be done by usb :) I know how hard it is with that bunch of SAS controllers. (will be installed internally)

 

Power is taken from the usb and molex.

 

We can use a complimentary part in our device to take physical temperature measurements but we think that a software part will do it better as we already have that values in the system. (unraid shows drive temps, and we can also get CPU temp and sometimes other values.

 

About the configuration options, I'm sure you will see it amazing, we will also be open to user requests, but I will soon show you more information regarding this.

 

Regards

 

 

Link to comment

Very interesting project idea.

 

For me two things jump out. Running FAN cables all over the system is often a pain and a hidden expense i.e. extension cables etc Please keep cable management in mind especially if you end up needing more than one controller.

 

But the absolute must have feature is on any kind of failure the fans must run at full speed. There can be no scenario where any hardware or software failure cause fans to run slower than required (or not at all).

 

Would I buy one. Absolutely.

Link to comment

I've been looking for a programmable fan controller for quite a while.  For whatever reason there really is nothing out there unless you want to spend $100+ for something.

 

What I would love to have right now would be capable of:

 

- operation independent of any PC communication

- 12V or 5V power supply

- any number of 3-pin or 4-pin fan connections (even just a single fan would be great)

- any number of thermistor connections

- able to be programmed for min/max fan speeds and temperature setpoints

- able to be programmed for linear/log speed curves

 

If I could get a board with one temperature sensor and one fan connector that could be programmed with a few simple variables then I'd be tickled. 

 

The answer it seems is always, 'build it yourself using an Arduino'.  Sure ... I get around to that some day, some year.

 

Link to comment

Hi all,

 

let's answer your questions, some of them with more answers :)

 

HW Temperature sernsors: I don't really know the amount of demand on that, it could be done, but will not probably be our first version. But I really want to understand why you want it. If I think in a Server or Gaming computer I know there's software tools to read the system temperatires (CPU, chipset, graphic cards, disks) and if the controller is conected to the system it will also act in consecuence.

 

If what you are looking is kind of a failsafe (and that's why you look for hw sensors) what we can do in this version is to recognize in the device an amount of time without receiving data from the computer (correct data) and use it as a triger to enable a failure mode (100% all FAN for example), and also add an alarm like a buzzer or a flashing red light :) (that will be also used in case a FAN is not correctly reporting RPMs)

 

The control of the temperature - % FAN will be done in software running as a service in the computer (this is at least our idea) and you will be able to save the configuration.

 

You will be able to do things like assign multiple sensors to a FAN, and any number of FAN to a sensor and use MAX or AVERAGE values being able to personalize the % at each temp.

 

 

Thanks,

we are working hard to get a goos product :)

Link to comment

I think you would likely be in the minority?

 

For me at least the market is PC/Server based as currently there is no solution to speak off.

 

So for instance i want to be able to script something up that says if a disk in bank 1 is spun up then increase fan speed x%. If a disk in bank 2 is above this temp then do something else with another fan. If the average disk temp is > some value then max everything out. I think people could get quite clever here but I dont "think" I want to be bogged down by the limitations of some microcontroller or canned logic, I want the power of Linux at my finger tips. I am prepared to be wrong though.

Link to comment

I think you would likely be in the minority?

 

For me at least the market is PC/Server based as currently there is no solution to speak off.

 

So for instance i want to be able to script something up that says if a disk in bank 1 is spun up then increase fan speed x%. If a disk in bank 2 is above this temp then do something else with another fan. If the average disk temp is > some value then max everything out. I think people could get quite clever here but I dont "think" I want to be bogged down by the limitations of some microcontroller or canned logic, I want the power of Linux at my finger tips. I am prepared to be wrong though.

 

What he said.  :)

Link to comment

There is one big parallel market... audio/network equipment cabinets.  Solutions for temperature-based fax speed control there are squat.... and expensive what what little choice there is.

 

But in any event, make sure there is an option to give all 8 fans full power for 5 seconds at power up.... some fans need to be spun up before being PWM'ed down to a slower speed.... especially with significant decreases in speed from their full-voltage max.

 

 

Link to comment

Yes, if this would be used in unRAID then tying the operation of a single cooling fan to a group of disks in various clever ways is required due to the typical 4-disk or 5-disk cages cooled by 1 fan.

 

For example, multiple minimum speeds depending on how many disks are spinning with an over-ride to increase speed if any of the disks go over a certain temperature.

 

Another example is a delay before stopping so the fan can continue to run to cool the disks after all the disks in the cage are spun-down.

 

External sensors could help to control case fans to ensure some part inside the case without software temperature ability isn't cooking.

 

Link to comment

There is one big parallel market... audio/network equipment cabinets.  Solutions for temperature-based fax speed control there are squat.... and expensive what what little choice there is.

Bingo!  I don't want my cabinets relying on a PC for cooling functionality.  And it goes far beyond cabinets, there are endless applications for cooling control.

 

But in any event, make sure there is an option to give all 8 fans full power for 5 seconds at power up.... some fans need to be spun up before being PWM'ed down to a slower speed.... especially with significant decreases in speed from their full-voltage max.

This too.

Link to comment

But in any event, make sure there is an option to give all 8 fans full power for 5 seconds at power up.... some fans need to be spun up before being PWM'ed down to a slower speed.... especially with significant decreases in speed from their full-voltage max.

Actually, if there is a feedback loop implemented from the fan speed sensor to the PWM generator then this is not needed to ensure that the fans are spinning.  If the software says it wants 30%, the software feedback to the PWM would be able to drive a PWM such that it would give a 30% fan speed, even if the PWM output itself needed to be at 50% or 10% to make that happen.  If the fan didn't start, the feedback loop would naturally increase the PWM until it did.  In this case the only need to spin the fans up initially could be as part of an initial equipment check - itself probably a good idea.

 

I am also in the camp that does not want the principal temperature monitoring to be from the system software.  We already see disk drives that report under some conditions and not others, problems with chipset drivers not reporting correctly, or breaking for one chipset variant when updated for something else, and the like.  And as per several requests here, there are use cases where a PC may not be present.  My own concern is simply to be independent of the PC's software so that I know the cooling will perform as expected whether the host system is running correctly or not.

Link to comment

Interesting project and there are plenty of DIY sites out there to help guide you.  I would think being able to react to built-in hardware sensors via software is a requirement just as the ability to react to hardware thermistors connected to the device for those that do not have it installed in a PC.  A Xilinx, ColdFire (even a PIC or Arduino) or combo of devices would be the way to go and will have plenty of inputs and and outputs which will negate the need for multiple discrete timer IC devices which most seem to use.  The key will be in the software where you can configure any number of outputs to react to PC hardware sensors or any number of outputs react to external hardware thermistors.  Suggest to make the software open source so people can continuously improve upon it.  Make your money on the hardware.  Another suggestion is to make it so the program can be burned to the device so it can run without PC, but able to connect via USB (as example) to program or real-time monitor if desired.

Link to comment

So given all that then how could this work: would you program in a matrix versus each sensor in a fashion not dissimilar to a car fuel mapping in a programmable ECU?

 

My concern would be that once you move beyond the basic setup to get into the really tricky/clever stuff (i.e. lots of if then else logic) you would need an highly capable ECU (expensive)

 

One option would be a basic ECU and for those using a PC as well essentially reprogramme it on the fly 24*7.

 

The more I think about it the more i realize I dont mind either way as long as the price is right (and to be honest I could use them on my cabinets here as well but I still suggest we are a fairly unique bunch here with cabinet needs compared to the vast desktop and gaming scene))

 

 

Link to comment

So given all that then how could this work: would you program in a matrix versus each sensor in a fashion not dissimilar to a car fuel mapping in a programmable ECU?

If I was doing this I would almost start the design by looking at the data structures needed - basically a series of look up tables linking sensors to software controllers, setting temperature parameters, setting PWM, characteristics and specifying outputs.  But the processor support needed could be quite modest.  Then on is into the trade-offs between hardware and software PWMs, hardware vs software for fan monitoring (in my mind hardware being a microcontrollers timers counting external inputs) and so on.  Temperature monitoring is thermistors or simple 3-pin sensors with a serial digital output - the latter being preferable, since they're not expensive and don't require calibration.

Link to comment

Hi all,

 

about the spining up of the FANs, the PWM frecuency needed to spin up will be calculated (reading RPM) by software to ensure they wake up. I'm sure we can control them by the % of the PWM pulse or by RPM (or % of RPM)

 

It's so interesting to know about the other market, I will share with the team to do a little investigation of the market (is there any link you can share with me on the solutions you will buy for that? or more information)

 

About the fan-disks correlation that says lionelhutz, yes will be able to configure for example 4 groups of 1 FAN serving 4 drives plates and also the case extraction FANs to speed up at an average of the other ones... something that makes sense for a NAS solution

 

Any of you has the need to control more than 8? how many? do you need to mix with "analog/non PWM" (3PIN) FANs?

 

Thanks again for your comments.

 

We are reviewing the design, aparently we are able to have at least an alarm output to turn on a led or a buzzer ... or up to user.

 

I'll try to show you more soon, we are trying to generate a model of the PC interface to set the sensors->FANs interactions.

Link to comment

Config should be when sensor X goes above value y, set Fan0 to xxx Volts, not "set Fan0 to XXX RPM"

 

Unless you also offer a way/module to calibrate the fans.

 

I can think of a couple of cheap ways this could be done but I will not profess to know if a calibrated fan RPM vs voltage will stay that way over time. Interesting "value add" though.

Link to comment

On the RPMs I think we can ensure we can move PWM up until the FAN moves at least at the RPMs set, and try to be the minimum speed to get that RPMs.

I don't really think it's difficult, but maybe I'm wrong, I will let you know once we test.

 

Regards

 

You are assuming that the RPM the fan tells you is ACCURATE.... IMX the VAST majority of fans out there are wildly inaccurate when reporting RPMs, particularly at anything less than full power.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.