An open question on fan curves
Environment: I am currently playing with a pid control function for my gpu fan, that is instead of saying "map temp x to fanspeed y"(fan curve) say "set fan to speed needed for temp z"(pid control)
Question: is there a reason pid type control is never a thermal option? Or put another way, is there something about the desired thermal characteristics of a computer that make pid control undesirable?
As a final thought, I have halfway convinced myself that in a predictable thermal system a map would match a set of pid parameters anyway.
> Question: is there a reason pid type control is never a thermal option? Or put another way, is there something about the desired thermal characteristics of a computer that make pid control undesirable?
I've only every seen something like this in really high reliability equipment because they're worried about repeated thermal expansion causing cracks in the boards/solder joints. There is, often, heaters available for use if the temperature gets too low. For most equipment I think that the juice just isn't worth the squeeze so it isn't done.
PID loops work best when you have active control for both heating and cooling. PIDs are also best when you have a single optimal point you’re aiming at, there’s a kind of fundamental mismatch here in that there isn’t really a “too cold” for your system, you’re just aiming to keep the system below an upper limit while hopefully keeping fan noise to a minimum (otherwise you’d just send it and run at max 24/7).
> "set fan to speed needed for temp z"(pid control)
Why though? I generally don't care about the specific temperatures of my CPU and GPU, just that they don't get too warm, so for the CPU (AIO) I basically have "0% up until 45C, then increment up to 100% when it hits 90C" and the same for the GPU except it's always at 10%.
I guess I could figure out target temperatures, and do it the other way, but I'm not sure what the added complexity is for? The end results (I need at least) remains the same, cool down the hardware when it gets hotter, and for me, the simpler the better.
I also have two ambient temperature sensors in the chassi itself, right at the intake and the outtake. The intake one is just for monitoring if my room gets too warm so the computer won't be effective at cooling (as the summers here get really warm) and the outtake one is to check overall temperature and control the intake fans. In reality, I don't think I need to do even this, just the CPU+GPU temperature + set fan speed based on that feels simple enough to solve 99% of the things you'd like to be able to do here.