Hacker News new | ask | show | jobs
by bobsterlobster 78 days ago
MSI shipped a genuinely good motherboard and forgot to wire one chip, so PWM doesn't work. Instead of tossing the board or living with the noise, I decided to make lemonade.

An Arduino Nano generates the 25kHz PWM signal, and a companion Windows application reads CPU temp and sends the duty cycle over serial. The Arduino firmware is open source (MIT).

2 comments

What if Windows crashes? It's better to attach a thermal sensor to the heatsink, I think.
Just send a heartbeat every few milliseconds and set fan speed to 100% if it died. Bonus: You get an audible indicator that the system crashed.
Well, what if?

We don't live in the AMD Athlon era[0] anymore. Modern CPUs are designed to boost until they hit a thermal limit, improper cooling is just going to result in a lower clock speed.

[0]: https://youtu.be/UoXRHexGIok?t=55

What a blast from the past. I still remember seeing it for the first time on my Socket A Athlon 1900+ pc.
Damn, that video took me waaay back.
If windows crashes, then the audio generation crashes, so the fan will start to operate without PWM. Should default to 100%. At least that's how the PWM fans I have behave when the PWM signal suddenly disappears.
Could you use an audio out port for creating the signal and ditch the Arduino?
That might work for the PWM signal, however you'd still need some electronics as the fan has internal pull-up to 5V and expects it to be pulled low by the PWM signal.

But a small circuit with a Schmitt-trigger inverter IC and some resistors and capacitors might do the trick, for example.

Interesting idea, I'll look into it.