The engineering approach to fan curves: Using real control engineering and a PI-Controller. Thoughts?
So, I'm used to the crappy Corsair software. I currently control my fans based on water temp using a classic fan curve. This makes my fans run louder than necessary, or spin too slowly during the summer months.
I want my fans to always run at the lowest RPM possible to achieve a specific water temp under load. My idea is: what if I constantly keep the water temp at around 42°C under load, and only let the fans spin exactly as fast as they need to maintain that target? But with a strict minimum of 450 RPM. Always.
A fellow mechanical engineering guy and I looked at this from a control engineering standpoint: We'd use a normal base fan curve that works for the system, based on either water temp or Delta T (I guess Delta T would work better). Which is called feedforward control. Then, we'd combine it with a PI controller that adds or subtracts PWM% from the fan curve's baseline. The minimum RPM would still be locked at 450; the PI wouldn't be able to drop it below that.
Scenario: Water temp is too low (System louder than necessary)
The logic would work like this: The "dumb" base curve claims "We need 45% PWM at 38°C water temp." The water stays at 38°C, but the system is unnecessarily loud. Then the PI controller steps in: "No, we don't need that much fan RPM. Our goal is 42°C under load, so I'm going to instantly subtract X PWM% (Proportional) and continue subtracting a tiny PWM% from your baseline every second (Integral) until we hit our target."
Scenario: Water temp is too high
When the water temp exceeds the desired 42°C load temp, the base curve might claim "We only need 50% PWM for this current water temp." But in the summer, that’s just not true. The PI controller intervenes: "No, you need a bit more PWM% to prevent the water from going way above 42°C, so I'm going to add a bit more PWM% until we are there. I exactly know how much I need to add over time to make it perfect" The PI will slowly get more aggressive if the water tries to climb above 42°C. The further the water temp drifts above the target, the more PWM% it adds.
This way, the system will never run too hot, and it will never run too cold (which just means unnecessarily loud fans).
What do you guys think about this Idea? Do you have any suggestions? I think it is also a good idea to use the current power draw of the system to make it more intelligent
And yes, I'm an absolute enthusiast, lol