Skip to the content
4 layers21 × 67.7 mmFan controller txu0204-pico, the printed circuit board in 3D

Fan controller txu0204-pico

Lannakin/fan-controller-pico

(note: hobbiest) expansion board for controlling 4 4-pin 12v fans for the raspberry pi pico series using pwm output with tachometer feedback designed by a cat

Size
21 × 67.7 mm
Copper layers
4
Thickness
1.75 mm
Parts
61
Nets
62
Pads
202
Tracks, vias
318, 401
Pours
90
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
28 Sep 2026
Updated
15 Oct 2026

Overview

Fan controller txu0204-pico is an open-source printed circuit board by Lannakin, from the Lannakin/fan-controller-pico repository on GitHub. It is a 4-layer board of 21 × 67.7 mm with 61 parts on 62 nets, routed with 318 tracks and 401 vias.

It is built around the OKI-78SR-5/1.5-W36-C, TXU0204PW and LM66200DRL, with the DF3A5.6FV,L3F, SMF12A and 2016L150/33DR among its other parts. Its parts include 16 resistors, 10 diodes, 5 capacitors, 3 ICs and 3 connectors. It belongs with the RP2040 boards of this library.

Main components

11

README

README.md

Overview - Fan Controller TXU0204 Pico

⚠️⚠️⚠️ WARNING ⚠️⚠️⚠️

i am just making this for a hobby. i have no idea what i am doing. as you can see from my profile picture, i am obviously a cat, which means my electrical and maths skills in general are questionable at best.

⚠️⚠️⚠️ WARNING ⚠️⚠️⚠️

i hope github completely mangles my indentation.

using the gratuitously over-qualified raspberry pi pico series, this expansion board is meant to control up to 4 fan connections that had better not exceed 1.5a. they should be 12vdc as well.

pwm output from pico is shifted from 3.3vdc to 5vdc because if i used a 12vdc noctua fan, that's what noctua expects. intel recommended supporting 3.3vdc logic, but that's just a recommendation in what seems to be a de-facto standard, not an industry requirement.

the current immediate usage scenario is controlling an air filtration box using a total of 6 arctic p12 pro pst ln fans. these fans are daisy-chainable, with the power and pwm chained to every fan in the series, but (obviously) only the first fan's tachometer signal connected.

however, i would like this design to support more than 2 channels of fan pwm and fan tachometer, so that it can be used on other projects.


CREDITS FOR FONTS

WebPlus_ToshibaSat_8x14 and WebPlus_ToshibaSat_9x16 by VileR

Schematic Notes

expected fan needs gleaned from various documentation

power 12vdc: 12vdc (less than 12.6vdc) power to fan

  • current draw per fan probably no higher than 0.7a

power 5vdc:

pwm signal:

  • 5vdc pullup, max 5.25vdc
  • should be open-collector
  • max current 5mA, but device should be capable of 8mA minimum
  • 21 - 28kHz is the range for arctic's accepted quality control; 25kHz preferred

tach signal:

  • usually pulled up using 12vdc
  • noctua says max of 13v, but fan manufacturers probably only expect 5vdc can be pulled up to 5vdc or 3.3vdc
  • probably open-collector
  • max current 5mA, but device should be capable of 8mA minimum
  • 2 pulses per revolution

Layout Considerations

might be 2 layer should really be 4 layer sig / gnd / pwr / sig

  • oshpark

general routing

  • every trace will "try" to return to ground using shortest possible path under? the trace
  • try to avoid splitting ground planes, and use vias to help keep ground planes contiguous
  • every time trace uses a via to switch layers, add via to ground as close as possible to give the voltage a return shorter path

signal routing:

  • if having to cross another signal on another layer, try to do so perpendicularly
  • try to keep the traces as spread out as possible
  • larger traces have better noise rejection

Component Notes

other signal translation component possibilities: SN74LVC2G17 TXU0204 - integrated pull-down resistors TXU0202 - integrated pull-down resistors

TXU0204

"4-Bit Fixed Direction Voltage-Level Translator with Schmitt-Trigger Inputs and 3-State Outputs"

  • vcc determines output voltage level
  • using 2 to convert pico-output 3v3 pwm signals to 5v fan-input
  • using 2 to convert fan-output 5v tachometer signals to 3v3 pico-input
  • integrated 5Mohm pull-down resistors

Power Distribution

syntax of subsections:

text
### (heading size 3) Xvdc rail

device / component on the rail

* note about that device / component
* another note on the device / component
    * subnote on another note
    * another subnote on another note
* yet another note on that device / component

general rail stuff

regarding rail traces / zones in general

  • keep rail traces and zones off to the side as much as possible
  • attempt to give them clear ground returns with gratuitous vias
  • the zones for the positive inputs / outputs are mostly for heat sinking; the small size of the traces are plenty for these low voltages and amperages

12vdc rail

chanzon 2abn036f 120vac 1a to 12vdc 3a wall wart:

  • claims to be UL listed and shit but i highly doubt it is
  • powers pico and this expansion board
  • powers 4 x P12 Pro PST @ up to 0.3a each
  • powers 1 x OKI-78SR-5/1.5-W36-C @ 0.69a
  • desired circuit protections: transient, reverse polarity, and overcurrent protection; maybe also overvoltage and undervoltage space constraints
    • tvs diode: SMAJ16CA
    • efuse choice 1: TPS259482A space constraints
      • protects against overvoltage, overcurrent, shorts, reverse current, undervoltage
    • efuse choice 2: TPS259472A space constraints
      • protects against overvoltage, overcurrent, shorts, reverse current, reverse polarity, undervoltage
    • reverse polarity protection
      • p-mosfet
    • input tvs diodes on main power and +12vdc fan pins
      • bidirectional to protect against surges from GND
    • current limit
    • input limit <=2A 12vdc to 5vdc psu
    • idk for fans
  • may need filtering but i don't own a real oscilloscope soooooooooo

OKI-78SR-5/1.5-W36-C (12vdc input):

  • based on MP2467
  • recommends 2a fuse
  • inrush transient: 0.16 A2-Sec.
  • might need an electrolytic capacitor for up to 3ft of "20awg" wire from the wall wart to prevent instability or whatever
  • no mention of needing input filtering; that's very bold of you, murata
  • the only filtering mentioned appears to be what is physically on the module's pcb: 2x 100uF (ceramic capacitors)
  • desired circuit protections: counter-emf schottky diode
    • schottky diode SGL1-20 for protection against counter-emf when power is shut off if fuse blows / power is lost
    • output of 12vdc to 5vdc psu has built-in limiter
  • with supposed ripple of 30mV peak-to-peak, doubt additional filtering is neeeded

5vdc rail

OKI-78SR-5/1.5-W36-C (5vdc output):

  • output of 5vdc at up to 1.5a
  • mostly selected because it's in my drawer from years ago and has like <30mV ripple, which appears to be completely obscene even at like $6
  • the okami series that this dcdc module is from has a cool wolf logo
  • no mention of adding additional filtering; output filtering on the module pcb (assuming that's what "Cvbus" is) is 1x 1000uF (ceramic capacitor)

pico supplying via vsys

  • raspberry pi pico datasheets rec using p-mosfet DMG2305UX or a schottky diode
    • ORing circuit for 5vdc vbus < - > vsys
      • diode - feel like Vf drop too high, might hinder fans' pwm input
      • p-mosfet - i ain't wanna do another one of these
      • ORing dual ideal diode
      • lm66200 is like $0.60 each max, cool, simple, and small, vs p-fet at like $0.45 each, 40 mΩ on-resistance

3.3vdc rail

pico 5vdc to 3.3vdc converter (same for pico, w, 2, 2w): RT6150

  • note that the datasheet won't fully cover the converter's output capabilities b/c the converter is the sum of the conversion circuit
  • super noisy in power save mode (115mV pk-pk vs 31mV); power efficiency is much worse, though
  • maybe should use linear regulator
  • if using analog, rec use external shunt ref like lm4040 (in case using potentiometer for fan speed setting)
    • note: someone said for a human-operated potentiometer, the precision probably doesn't matter
  • recommended: stay under 300mA

Signal Integrity

this should probably be a 4-layer board, i don't think i can avoid splitting the ground plane.

References

pcb production

oshpark: oshpark - 2 layer prototype service oshpark - after dark (also 2 layer) service oshpark - 4 layer prototype service

digikey: pcb builder - faq pcb builder - technical specs

efuses

texas instruments "basics of efuses"

general 12vdc pwm fan control (pc fans)

intel corporation "4-wire pulse width modulation (pwm) controlled fans" reference to pulling up to 12v power to fans on tachometer pin

edn article "4 wire pc fan" yoinked motherboard schematic picture from edn article pulls up to 12v power to fans on tachometer pin

texas instruments "fan controller overview" "The tachometer output from the fan is typically an open-collector (or open-drain) output that requires a pull-up resistor. It's customary to connect this pull-up to the same voltage as the fan power." "you can still pull up to a lower voltage though" (slight paraphrasing)

arctic p12 pro pst (ln)

pwm curve for p12 pro pst series p12 pro pst docs page p12 pro pst pwm guidelines p12 pro pst ln docs page p12 pst pro ln pwm guidelines

noctua fan jumpscare

noctua "noctua pwm specifications white paper" Vtachometer for 12V fans: 5V recommended (13V max.)" at <5mA for 12v fans

raspberry pi pico boards

pico power supply note: this applies to pico, pico w, pico 2, pico 2w


layout filched from KiNotes

Parts

61
QtyValueFootprintReferences
12750lsc-resistor:R_RK37H_0402_1005Metric_KOAR11, R12, R15, R16, R17, R18, R21, R22, R23, R24, R25, R26
41uFlsc-capacitors-added:C_GRM18_0603_1608Metric_MURATAC4, C5, C6, C7
4Conn_01x04lsc-connector-misc:470531000_4-POS-MALE-HEADER-VERTICAL_FAN_MOLEXFAN1, FAN2, FAN3, FAN4
4DF3A5.6FVlsc-transistor:TRANS_SOT-723D7, D8, D9, D10
4SMF12Alsc-diode-smd:D_SOD-123F_EATOND2, D3, D5, D6
2TXU0204lsc-qfn:DHWQFN-14-1EP_2.5x3mm_P0.5mm_EP1x1.5mm_ThermalViasU2, U3
112PROTlsc-utility:TestPoint_Pad_D1.0mmTP2
112VINlsc-utility:TestPoint_Pad_D1.0mmTP1
1180lsc-resistor:R_RK37H_0402_1005Metric_KOAR6
12016L150/33DRlsc-polyfuse:PTS1206_FUSC3216X68N_EATONF1
1220uFlsc-capacitors-added:CAP_EEE-FT-SIZE-CODE-F_8x10_PANASONICC3
1274lsc-resistor:R_RK37H_0402_1005Metric_KOAR1
13V3lsc-utility:TestPoint_Pad_D1.0mmTP7
147klsc-resistor:R_RK37H_0402_1005Metric_KOAR8
15.62klsc-resistor:R_RK37H_0402_1005Metric_KOAR9
1DMP3014SFDElsc-dfn-vdfn-tdfn:TRANS_6-UDFN_U-DFN2020-6-E_DIOQ2
1GNDlsc-utility:TestPoint_Pad_D1.0mmTP3
1LM66200lsc-standard-chip-carrier:SOT-583_SOT-5X3_DRL0008A_TEXU5
1MM3Z20B-AQlsc-diode-smd:D_SOD-323F_SOD323F_DIODESZD1
1OKI-78SR-5/1.5-W36-Clsc-module:CONV_OKI-78SR-W36-C_MURATA2PSU1
1PWF1lsc-utility:TestPoint_Pad_D1.0mmTP9
1PWF2lsc-utility:TestPoint_Pad_D1.0mmTP10
1PWF3lsc-utility:TestPoint_Pad_D1.0mmTP13
1PWF4lsc-utility:TestPoint_Pad_D1.0mmTP14
1PWRlsc-connector-terminal-block:2-POS_FK-MPT_1891069_PHOENIXCN1
1RU1C002ZPlsc-standard-chip-carrier:SOT-323T-3_SOT-323FL_SC-85Q1
1RaspberryPi_Picolsc-connector-board:RPI_Pico-CN_RightCN3
1RaspberryPi_Picolsc-connector-board:RPI_Pico-CN_LeftCN2
1SGDlsc-utility:TestPoint_Pad_D1.0mmTP8
1SGL1-20lsc-diode-smd:DIO_DO213AA_MINIMELFD4
1SMAJ16CAlsc-diode-smd:DIO_SMB_LOWVOLTAGE_DIODESD1
1TCF1lsc-utility:TestPoint_Pad_D1.0mmTP11
1TCF2lsc-utility:TestPoint_Pad_D1.0mmTP12
1TCF3lsc-utility:TestPoint_Pad_D1.0mmTP15
1TCF4lsc-utility:TestPoint_Pad_D1.0mmTP16
1VSYSlsc-utility:TestPoint_Pad_D1.0mmTP6
1VSYSlsc-led-smd:LED_599-00XX-137F_0603_1608MetricLD1

Similar boards

  • 2 layers163.7 × 124.3 mmMicro PowerModule, the printed circuit board in 3D

    Micro PowerModule

    yingchaotw/micro_PowerModule

    µPower Supply Module

    235 parts1GPL-3.0
  • 4 layers101.6 × 101.6 mmSbc, the printed circuit board in 3D

    Sbc

    dpicken/atari-hw

    Hardware for Atari 8-bit projects

    118 parts6MIT
  • 4 layers86 × 67 mmRobo con Wi Fi, the printed circuit board in 3D

    Robo con Wi Fi

    tmcit-ararobo-2026a/robo-con-for-Wi-Fi

    the code and pcb in this repository is wireless robot's controller.

    125 partsMIT
  • 4 layers49.2 × 38.7 mmMotor Driver, the printed circuit board in 3D

    Motor Driver

    AdamTuraj/BLDC_ESC

    25A, 8.4V BLDC Motor Controller

    52 parts2MIT
  • 4 layers90.8 × 58.8 mmHALSER, the printed circuit board in 3D

    HALSER

    hatlabs/HALSER-hardware

    Hat Labs Serial Interface Device hardware design files

    199 partsCC-BY-4.0
  • 2 layers108 × 47 mmEsp32board, the printed circuit board in 3D

    Esp32board

    ieb/N2KEngineEsp32

    N2K Engine Interface with BLE built around an ESP32 and ADS1115 ADCs

    88 parts
  • 4 layers203.5 × 90 mmBDCMotorController, the printed circuit board in 3D

    BDCMotorController

    nunosousa/TelescopeMirrorTester

    This is an application intended to provide useful tools to perform Foucault or Wire testing on reflective telescope mirrors

    323 partsMIT
  • 2 layers82.5 × 127 mmPower supply, the printed circuit board in 3D

    Power supply

    nunosousa/SCART-switcher

    An old school SCART switcher. Its main purpose will be to automaticaly detect and switch the video output to the active input video source.

    59 parts

Questions

How big is the Fan controller txu0204-pico PCB?

It measures 21 × 67.7 mm and has 4 copper layers, 1.75 mm thick.

What parts does the Fan controller txu0204-pico use?

61 parts, built around the OKI-78SR-5/1.5-W36-C, TXU0204PW, LM66200DRL and DF3A5.6FV,L3F. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Fan controller txu0204-pico KiCad files?

From the Lannakin/fan-controller-pico repository on GitHub, at the commit this page was made from: the board is fan-controller-txu0204-pico.kicad_pcb and its schematic fan-controller-pico_hmi.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Fan controller txu0204-pico design in my own project?

Its repository states no licence, so its author keeps all rights: ask Lannakin before reusing the design.