We’ve all got projects kicking around that we haven’t had time to document for our own purposes, let alone expose to the blinding light of the Internet. There are only so many hours in a day, and let’s face it, building the thing is a lot more fun than taking pictures of it. It took [Matthew Millman] the better part of a decade to combine everything he’s learned over the years to finally document the definitive version of his open source intelligent fan controller, but looking at the final result, we’re glad he did.
At the heart of this board is an ATmega328P, but don’t call it an Arduino. [Matthew] makes it very clear that if you want to hack around with the code for this project, you’re going to need to not only have a programmer for said chip, but know your way around AVR-GCC. He’s provided pre-built binaries for those content to run with the default settings, but you’ve still got to get it flashed onto the chip yourself. The project is designed to use the common DS18B20 temperature sensor, and as an added bonus, the firmware can even check if yours is a bootleg (spoilers: there’s an excellent chance it is).
Arguably the most interesting feature of this fan controller is its command line interface. Just plug into the serial port on the board, open your terminal emulator, and you’ll have access to a concise set of functions for querying the sensors as well as setting temperature thresholds and RPM ranges for the fans. There’s even a built-in “help” function should you forget a command or the appropriate syntax.
Originally [Matthew] developed this project as a way to control multiple fans inside of a PC case, but naturally, things have changed quite a bit since those early days. While today there’s no shortage of fancy controllers that can handle throttling an array of fans based on the internal temperature of your rig, there’s still something to be said for rolling your own solution. More importantly, there’s certainly other potential uses for a fully open source programmable fan controller.
another way PIC is better than AVR. PICs are so power-efficient they don’t need a fan to cool them
Who said the fan was cooling the AVR?
Ba-dum-bum!
That’s a thorough article and a great hack. Thank you!
What’s a serial port?
Go to the corner.
It’s what early teletype machines used … remember … CTTY (Cable TeleTYpe) and RTTY (Radio TeleTYpe).
Early DOS even had a CTTY pipe. eg, copy con ctty
On another note: Nice compact board layout. It looks retro with all that through hole. Nice choice of components, I see all but the capacitors on the crystal are tantalums.
But Yeah, RS-232 ??? I probably would have put a USB to 5V serial adapter on it. I rarely see a true RS-232 serial port now.
Or an Arduino Pro Micro and configure it as a USB serial device.
Hey guys check out those 4-Pin fans and the meaning of the “fourth pin” .. will make your life easier!
Some four-pin fans take a voltage input, some take a PWM signal, some take an inverted PWM signal, some take 12 volt PWM signal, others take 5 Volts, or 3.3 Volts, have or don’t have internal pull-ups for the signal… and some are fakes that simply have the wire put on a standard 2-pin fan.
Oh, the last type of fans are the worst. They are especially common for laptop fans. When you replace fan for somebody and then it gets louder than the one you replaced, because those fans start spinning at 3.5V, have fake 4-pin connector and they only operate in two modes – stopped or full speed whining and there isn’t any data send on PWM line.
Just came here to call it a Fanduino.