tjko / fanpico

Fanpico: Open Source Smart PWM (PC) Fan Controller
GNU General Public License v3.0
115 stars 10 forks source link

Minimal version with smaller footprint and minimal additional components? #89

Open BioSehnsucht opened 1 month ago

BioSehnsucht commented 1 month ago

I was looking for a solution for controlling a fan cooling a repurposed Nvidia Tesla GPU (which are intended for specific server cases, depending on airflow being force fed into them), to control a regular PC fan. Ducting the fan into the card's air inlet isn't an issue, but rather than just having the fan running at 100% all the time, I was looking for an easy solution to control the fan based on outlet temperature from the GPU.

This project would work perfectly, but be totally overkill.

I am wondering how feasible a minimal board design (and corresponding flavor of code) would be if I started with the 8404 design (directly reading tech signals) and start ditching things I didn't need, i.e.:

Starting with 8404 rather than 8404D I also don't have serial or display headers, which is fine.

Is there any other obvious simplification I'm missing for such a minimalist use case?

When creating the new minimal board header file, what would I need to change besides changing the fan counts? I assume I can just configure it at run time to ignore the missing inputs, rather than specifically code around them?

tjko commented 1 month ago

If you only have one fan channel, you might also be able to ditch the IC for handling PWM output level shifting and implement single level shifter with a transistor (something like: https://cdn.sparkfun.com/datasheets/BreakoutBoards/Logic_Level_Bidirectional.pdf).

Ideally you should just need to create new header file your board (under src/board/) and update the counts in the beginning (FAN_COUNT, MBFAN_COUNT, SENSOR_COUNT), and then set any of the pins unused to "-1".

In practice, there may be issues that needs to be 'fixed' if setting any of the counts 0, since I don't think that edge case was always in mind when creating the initial firmware. Also, changing SENSOR_COUNT might not yet work 'out of the box', since I seem to recall I haven't yet gotten around to make the code properly configurable via the board header files.

I've started working on smaller variant of FanPico "0401D", etc, that has 4 fan outputs and one (mbfan) input from motherboard. So I should soon be testing new board variant, and I'll try to remember to look fixing if there is any obvious problems with 'edge cases' like board where FAN (or MBFAN) count is 0...

tjko commented 2 weeks ago

@BioSehnsucht , I have initial prototype in testing for "0401D", that might be better starting point than the old 0804 board: https://github.com/tjko/fanpico/tree/main/boards/fanpico-0401D

Implementing only one fan output is probably not worth it? Since adding a second port does not really require much additional space on the PCB.
For PWM output to Fans, doing 3.3V to 5V level shifting is probably easiest with the SN74AHCT125/SN74AHCT126 IC as with just two components (IC and bypass capacitor) it gives up to 4 level shifters (with ESD protection built-in)...

If only one level shifter is needed, then implementing one with discrete components likely would require about same space, but would require more components (2 resistors, small MOSFET, TVS diode, etc...)