Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
BioSehnsucht opened this issue Jul 13, 2024 · 2 comments

Comments

@BioSehnsucht
Copy link

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.:

  • I only need a single fan channel, though depending on resulting board size of all the other changes, maybe fitting 2 is doable without growing the board much
  • I only need a single temp sensor, though if a second fan channel is provided, a second sensor would be good (perhaps someone can use it to run two Tesla GPUs)
  • I don't care about test points or debug header, if getting rid of them helps simplify the layout
  • I don't care about MB I/O, so I can ditch the 5-12V to 3.3V level shifter circuit and related tach output
  • Power everything from the "aux" (now only power input besides the USB on pico) connector, since we've eliminated the MB inputs at this point

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
Copy link
Owner

tjko commented Jul 15, 2024

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
Copy link
Owner

tjko commented Aug 2, 2024

@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...)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants