You might look at PC-utilities that allow you to do the same thing. They have the benefit of not having to change any of your wiring, plus have direct access to the temperature sensors inside your PC.
On my earlier board i used speedfan to make fans work as i wanted. I could change fans from 0% to 100% and configure it according to computer sensors. But this new motherboard doesnt react to speedfan at all, cant change any speeds.
How would your Arduino get access to those temperature sensors?
Arduino would not need to get access to sensors. It would take its controlling signal from motherboards fan output. My bios is set to change fan speed according to temperatures. So After all motherboard would be the one controlling the fans but arduino would just finetune that signal to fans.
Don't you suppose that the motherboard manufacturer had the same thought?
Motherboard slows down fans right after CPU temps have gone lower. It would be nice to keep fans running faster after that for GPU etc to cool more.
Considering that there is a minimum PWM value needed to get the fan moving at all, and that there is a higher value needed to get the fan to at least displace more heat than it is generating, I suspect that the motherboard manufacturer knew what they were doing when they set the lower limit.
I bet they did do this to keep newbs from frying their computers. But i am aware that computer needs cooling but with my computer at idle state its not necessary to keep fans running that fast when idle.
To clarify what im doing, i wrote some code to explain the usage. Feel free to comment.
const int moboPin = 2;
const int fanPin = 5;
void setup{
pinMode(fanPin, OUTPUT);
analogWrite(fanPin, 255); // start fan
delay(1000);
analogWrite(fanPin, 50); // back to normal operation
}
void loop{
int nopeus = analogRead(moboPin);
nopeus = map(nopeus, 255, 1023, 50, 255); // 50 is a example minimum to fan speed.
analogWrite(fanPin, nopeus);
if (nopeus >= 250) {
delay(10000); // if we need fans to run at max speed. Keep them running at max speed for awhile to cool other components
}
delay(1000);
}
btw, i am going to use optocoupler between arduino and motherboard. So arduino will get output as voltage(?)