Skip to content

FanPico User Manual

Timo Kokkonen edited this page Feb 16, 2023 · 28 revisions

FanPico is a generic programmable (PWM) fan controller. Altough it was initially created to be used inside a PC, it can be used for other purposes and does not necessarily require any fan PWM signals (from motherboard). It could be easily programmed to control fan speeds based on temperatures measured by one or more temperature sensors.

fanpico-wiki-ports

Connectors

Connector Description Notes
MB FAN1 Fan Signal Input from motherboard Can be used to power FAN1 and/or FAN5 (and FanPico itself)
MB FAN2 Fan Signal Input from motherboard Can be used to power FAN2 and/or FAN6
MB FAN3 Fan Signal Input from motherboard Can be used to power FAN3 and/or FAN7
MB FAN4 Fan Signal Input from motherboard Can be used to power FAN4 and/or FAN8
AUX POWER Auxiliary Power Input Can be used to power any of the FAN outputs (and FanPico itself)
SENSOR1 Remote Temperature Probe K-type probe 10k or 100k nominal resistance (JST 2.5mm connector)
SENSOR2 Remote Temperature Probe K-type probe 10k or 100k nominal resistance (JST 2.5mm connector)
FAN1 Fan Output
FAN2 Fan Output
FAN3 Fan Output
FAN4 Fan Output
FAN5 Fan Output
FAN6 Fan Output
FAN7 Fan Output
FAN8 Fan Output
Serial (TTL) Serial Console This is for 3.3V TTL level serial connector (not RS-232!)
SPI I2C / SPI Pins shared between SPI and I2C bud. Current firmware does not support SPI, but this could be used to connect I2C bus devices
USB RPi Pico USB USB Serial Console for programming and monitoring.

Jumpers

Jumper Name Description
JP1 Main Power Main Power Input selection(AUX POWER connector / MB FAN1 connector)
JP2 FAN1 Power FAN1 Power Source selection (MB FAN1 connector / AUX POWER connector)
JP3 FAN2 Power FAN2 Power Source selection (MB FAN2 connector / AUX POWER connector)
JP5 FAN3 Power FAN3 Power Source selection (MB FAN3 connector / AUX POWER connector)
JP4 FAN4 Power FAN4 Power Source selection (MB FAN4 connector / AUX POWER connector)
JP6 FAN5 Power FAN5 Power Source selection (MB FAN1 connector / AUX POWER connector)
JP7 FAN6 Power FAN6 Power Source selection (MB FAN2 connector / AUX POWER connector)
JP8 FAN7 Power FAN7 Power Source selection (MB FAN3 connector / AUX POWER connector)
JP9 FAN8 Power FAN8 Power Source selection (MB FAN4 connector / AUX POWER connector)
JP10 SENSOR1 Type Select between 10k ohm and 100k ohm NTC thermistor.
JP11 SENSOR2 Type Select between 10k ohm and 100k ohm NTC thermistor.

Powering FanPico

FanPico (unit itself) can be powered from the first motherboard fan input (MB FAN1) or alternatively from the Auxiliary ("Floppy") power connector (AUX POWER).

Use jumper JP1 (Main Power) to select the power source.

Power Consumption

FanPico typically consumes under 100mA from 12V Input. Power consumption can wary significantly depending on if using Pico or Pico W (WiFi can use significant amount of power) and if using OLED module or not.

In power calculations it is probably best budget 200mA for the FanPico itself.

Power Limits

AUX POWER input is meant to draw up to 3A (there is PolyFuse that will start limiting if usage goes over).

MB FAN inputs should not draw more than the corresponding motherboard output is rated for.

Power Calculations

To be sure that all Fans will get enough power and not too much current is drawn from any of the inputs (AUX POWER or MB FAN inputs) it is good to calculate (maximum) power consumption for each input.

With modern motherboards (that generally provide at least 1A on each motherboard fan output) and modern fans (that typically rated around 0.3A at 12V) FanPico can be safely powered from just only motherboard outputs. But it is still good idea to make sure not too much strain is put on motherboard fan outputs.

MB FAN Inputs

Following "worksheet" could be used to determine that there is sufficient power available:

Input Input Max Current Output 1 Output 1 Current Output 2 Output 2 Current FanPico Curent Output Max Current
MB FAN1 FAN1 FAN5 0.2A
MB FAN2 FAN2 FAN6 N/A
MB FAN3 FAN3 FAN7 N/A
MB FAN4 FAN4 FAN8 N/A
  1. First fill in the "Input Max Current" column based on the motherboard documentation
  2. Then fill in the fan max current for each FAN (that is not set to be powered from "AUX")
  3. Finally fill in 0.2A for "FanPico Current" on first row, if powering FanPico from MF FAB1 connector.
  4. Calculate "Output Max Current" by adding up the "Output 1 Current", "Output 2 Current", and "Fan Pico Current"
  5. Finally, check that Output Max Current is never higher than the Input Max current.

If output max current is higher for some MB FAN input, then consider powering one of the FANs from AUX POWER or using lower power FAN, etc...

AUX POWER Input

AUX POWER input has 3A fuse protecting it. So it is good idea to make sure that the planned fan configuration will not end up using more than that.

Following "worksheet" could be used to calculate power usage:

Connector Max Current Notes
FAN1
FAN2
FAN3
FAN4
FAN5
FAN6
FAN7
FAN8
FanPico Enter "0.2A" if powering FanPico from AUX POWER (JP1 set to "AUX")
  1. Enter max current for each FAN connector that is configured to be powered from "AUX" (otherwise leave empty or enter zero)
  2. Calculate total current by adding up all the values on second column.
  3. Check that the result is less than 3A

If result is over the max current for AUX POWER connector, consider powering some of the fans from MB FAN inputs or using fans with lower power consumption.

Installation

FanPico PCBs have 4 mounting holes that are grounded, so it's safe to mount it directly to a PC case using metal screws/mounts. But it is fine to use plastic mounts/screws if desired, as MBFAN connections or AUX POWER connection will connect the ground on FanPico to the computer ground.

Connections

When installing FanPico following connections are typically needed:

  • MB FANs: One or more motherboard FAN outputs (4-pin PWM outputs) connected, to provide power and PWM signals to drive fans. NOTE, it is possible to use FanPico without using these connections if planning on controlling fans from temperature sensors or using a program/script to control fan speeds using the SCPI command set.
  • AUX POWER: If there is not enough power provided by motherboard FAN connectors (outputs), this can be used to power Fans connected to FanPico.
  • USB: This is typically connected to motherboard USB 2.0 header for programming and monitoring purposes.
  • FANs: One or more 4-prin PWM fans connected to the FAN ports.

Example Installation

This examples shows the process of setting up FanPico on a PC that has 5 case fans and 1 CPU fan. So that FanPico is controlling all the fans.

fanpicoinstalled1

System Specifications

  • Motherboard: ASUS Prime X570-Pro
    • Using 4 PWM Fan outputs (all rated 1A each): "CPU_FAN", "CHA_FAN1", "CHA_FAN2", "CHA_FAN3"
    • Using USB2.0 pin header for FanPico "console": "USB34"
  • Fans
    • Top Exhaust: 2 x Noctua NP-14s redux 1500 PWM (0.20A)
    • Front Intake: 2 x Scythe KF1425FD12SR-P 1200 PWM (0.12A)
    • Rear Exhaust: 1 x Scythe KF1425FD12SR-P 1200 PWM (0.12)
    • CPU Cooler: Noctua NF-A15 1500 PWM (0.13A)

Parts Needed

  • FanPico 0804D (or 0804)
  • Temperature Sensors: generic 10k Ohm NTC with JST 2.5mm connector (for measure temperature of air intake and exhaust)
  • PWM extension cables (4-pin female to 4-pin male)
  • PWM "motherboard" cables (4-pin female to 4-pin female)
  • Motherboard USB 2.0 header to Micro USB cable (alternatively generic motherboard USB2.0 cable to USB-A and regular Micro-USB cable works)
  • Motherboard standoffs (and some M3 lock nuts for securing them)

Choosing Mounting location

If using FanPico without a display (or using cable to relocate the display) it is often easies to install in on the "back side" of typical PC case. But if using it with nice OLED module it is nice to have unit visible through transparent side panel.

On our example system there is plenty of "free" space beside the 5.25" drive bays. So drilling two 1/8" holes and installing brass motherboard standoffs (using M3 locknuts so they won't come loose):

mountingposts2 fanpicomounted2

Cabling

Cabling can be tricky, since depending on FanPico mounting location and location of motherboard connectors, chassis fans, etc. usually means that large number of different cable lengths is needed.

MB FAN connections

Connecting motherboard FAN (outputs) to FanPico "MB FAB" inputs to provide power and fan PWM input signals (as well as tachometer output signals back to motherboard).

These connections require 4-pin Female to Female cables. These cables exist but can be hard to find. So one option is to build your own cables from scratch. If you're comfortable crimping your own connectors, easies is to cutoff the 4-pin male connector and replace it with 4-pin female connector.
Another alternative is to use two "extension" cables and cutoff the 4-pin male connectors, then solder the two cables together.

In this example we're running cables as follows:

Motherboard Connector FanPico Connector
CPU_FAN MBFAN1
CHA_FAN1 MBFAN2
CHA_FAN2 MBFAN3
CHA_FAN3 MBFAN4

FAN connections

Connect chassis fans to "FAN" connectors on Fan Pico.

This is straightforward process, simply connect fans directly (if fan's own cable is long enough) or using extension cables as needed.

In this example we connect fans as follow (fans can be connected to any output):

Fan Location FanPico Connector
CPU Cooler FAN1
Rear (Exhaust) Fan FAN2
Front (Intake) #1 FAN5
Front (Intake) #2 FAN6
Top (Exhaust) #1 FAN7
Top (Exhaust) #2 FAN8

SENSOR connections

Temperature sensors can be used to monitor temperature inside the PC.

In our example we decided to monitor intake air temperature and exhaust air temperature.

Sensor Location FanPico Connector
Behind front intake fan SENSOR1
Behind rear exhaust fan SENSOR2

temperaturesensors

sensorbehindfan

USB Connection

USB (Console) connection is meant to be connected on one of the motherboard USB 2.0 connectors so that it is easy to configure and monitor FanPico.

usbcable

Configuring FanPico

Now we get to the fun part. Configuring FanPico to control our fans the way we like.

Connecting to FanPico console

First we need to get connected to the console. For this any terminal emulation program will do.

On Windows PuTTY is one good option. On Linux and MacOS "tio" is easy to use.

To validate that connection is working we can issue *IDN? SCPI command to request instrument to identify itself.

Using PuTTY

To use PuTTY to connect to FanPico console is rather easy. Just need to know which COM port FanPico got assigned to and set baudrate to 115200.

In this example FanPico got assigned "COM3" so we select COM3:

putty_config

Additionally you may want to enable local echo and editing in under Terminal settings so you can see what when you type commands:

putty_terminalsettings

Next use "Connect" to open terminal emulator.

Check that connection to FanPico works by sending command *IDN?:

putty_idn

Using tio

With tio we can specify speed (baud rate) from command line along with local echo.

On Linux RaspberryPi Pico usually gets device name like /dev/ttyACM0, while on MacOS it gets name like /dev/cu.usbmodem83101.

fanpico-tio

Configurations Steps

After we have working connection to the device, we can start configuring it using.

See Command Reference for full list of available commands.

Clear Any Existing Configuration

First step should be to clear existing configuration (if any) from the device. So we start from known default state.

This can be done by issuing CONF:DEL command and then rebooting the unit by using *RST command:

CONF:DEL
*RST

Name Inputs and Outputs

Next we'll want to name our inputs and outputs.

MBFAN Inputs

In our example we had connected MBFAN inputs as follows:

Motherboard Connector FanPico Connector
CPU_FAN MBFAN1
CHA_FAN1 MBFAN2
CHA_FAN2 MBFAN3
CHA_FAN3 MBFAN4

Now we can use CONF:MBFANx:NAME command to set names for these inputs:

CONF:MBFAN1:NAME CPU Fan
CONF:MBFAN2:NAME Chassis Fan 1
CONF:MBFAN3:NAME Chassis Fan 2
CONF:MBFAN4:NAME Chassis Fan 3
FAN Outputs

In our example we had connected FAN outputs as follows:

Fan Location FanPico Connector
CPU Cooler FAN1
Rear (Exhaust) Fan FAN2
Front (Intake) #1 FAN5
Front (Intake) #2 FAN6
Top (Exhaust) #1 FAN7
Top (Exhaust) #2 FAN8

Now we can use CONF:FANx:NAME command to set names for these (Fan) outputs:

CONF:FAN1:NAME CPU Fan
CONF:FAN2:NAME Rear Exhaust
CONF:FAN3:NAME unused
CONF:FAN4:NAME unused
CONF:FAN5:NAME Front Intake 1
CONF:FAN6:NAME Front Intake 2
CONF:FAN7:NAME Top Exhaust 1
CONF:FAN8:NAME Top Exhaust 2
SENSOR Inputs

Temperature sensors were connected as follows:

Sensor Location FanPico Connector
Behind front intake fan SENSOR1
Behind rear exhaust fan SENSOR2

Now we can name sensors using CONF:SENSORx:NAME commands.

CONF:SENSOR1:NAME Intake Air
CONF:SENSOR2:NAME Exhaust Air
CONF:SENSOR3:NAME RPi Pico

Now is good time to save configuration using CONF:SAVE before moving to next step:

CONF:SAVE