

Fan controller txu0204-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
11OKI-78SR-5/1.5-W36-C
SIP-3-40℃~+85℃ 1 1.5A 10.4mm 16.5mm 3300uF 500kHz 5V 5mA 75mVp-p 7V~36V 8.64mm 8W 90.5% Short Circuit Protection、Over Current Protection、Automatic fault recovery SIP-3 DC-DC Power Modules ROHSMurataIsolated Power ModulesTXU0204PW
TSSOP-14-40℃~+125℃ 1 1.08V~5.5V 1.08V~5.5V 200Mbps 4 Level translator Power-off protection、Output enable high-impedance SPI、JTAG、UART Tri-State Unidirectional TSSOP-14 Translators, Level Shifters ROHSTexas InstrumentsTranslators, Level ShiftersLM66200DRL
SOT-583-40℃~+125℃ 1.32uA 1.6V~5.5V 2 74mΩ Reverse current blocking、Over temperature protection、With enable SOT-583 ORing Controllers ROHSTexas InstrumentsPower Distribution SwitchesDF3A5.6FV,L3F
SOT-7231uA 2 5.3V 65pF ESD IEC 61000-4-2 Unidirectional SOT-723 ESD and Surge Protection (TVS/ESD) ROHSToshibaESD And Surge Protection (TVS/ESD)SMF12A
SOD-123FL-55℃~+150℃ 10.1A@10/1000us 12V 14.7V 19.9V 2.5uA 200W@10/1000us TVS Unidirectional SOD-123FL ESD and Surge Protection (TVS/ESD) ROHSMDDESD And Surge Protection (TVS/ESD)2016L150/33DR
2016-40℃~+85℃ 1.5A 180mΩ 1s 2W 33V 3A 40A 70mΩ 2016 Resettable Fuses ROHSLittelfuseResettable FusesDMP3014SFDE
U-DFN2020-6U-DFN2020-6 MOSFETs ROHSDiodes IncorporatedMOSFETsMM3Z20B-AQ
SOD-323F-50℃~+150℃ 1 Independent 100nA@15V 15V 19.52V~20.39V 300mW 40Ω ±2% SOD-323F Zener Diodes ROHSDIOTECZener DiodesRU1C002ZPTCL
SOT-323-55℃~+150℃ 1 P-Channel 1.2Ω@4.5V 1.4nC@4.5V 115pF 150mW 200mA 20V 300mV SOT-323 MOSFETs ROHSROHM SemiconductorMOSFETsSGL1-20
DO-213AA-50℃~+150℃ 1 Independent 1A 20V 22A 500mV@1A 500uA@20V DO-213AA Schottky Diodes ROHSDIOTECSchottky DiodesSMAJ16CA
SMA-55℃~+150℃ 1 15.3A 16V 19.7V 26V 400W 5uA Bidirectional TVS SMA ESD and Surge Protection (TVS/ESD) ROHSDiodes IncorporatedESD And Surge Protection (TVS/ESD)
README
README.mdOverview - 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:
- rp2040 and rp2350 draw < 0.2A (the datasheets' highest charts were like 37mW
for the rp2350, and 94.1mA for the pico 2 board from vbus. these datasheets
kinda suck)
- for cyw43439, probably around 0.5A
- txu0204 power draw
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:
### (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 / componentgeneral 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 undervoltagespace constraints- tvs diode: SMAJ16CA
efuse choice 1: TPS259482Aspace constraints- protects against overvoltage, overcurrent, shorts, reverse current, undervoltage
efuse choice 2: TPS259472Aspace 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
- ORing circuit for 5vdc vbus < - > vsys
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| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 750 | lsc-resistor:R_RK37H_0402_1005Metric_KOA | R11, R12, R15, R16, R17, R18, R21, R22, R23, R24, R25, R26 |
| 4 | 1uF | lsc-capacitors-added:C_GRM18_0603_1608Metric_MURATA | C4, C5, C6, C7 |
| 4 | Conn_01x04 | lsc-connector-misc:470531000_4-POS-MALE-HEADER-VERTICAL_FAN_MOLEX | FAN1, FAN2, FAN3, FAN4 |
| 4 | DF3A5.6FV | lsc-transistor:TRANS_SOT-723 | D7, D8, D9, D10 |
| 4 | SMF12A | lsc-diode-smd:D_SOD-123F_EATON | D2, D3, D5, D6 |
| 2 | TXU0204 | lsc-qfn:DHWQFN-14-1EP_2.5x3mm_P0.5mm_EP1x1.5mm_ThermalVias | U2, U3 |
| 1 | 12PROT | lsc-utility:TestPoint_Pad_D1.0mm | TP2 |
| 1 | 12VIN | lsc-utility:TestPoint_Pad_D1.0mm | TP1 |
| 1 | 180 | lsc-resistor:R_RK37H_0402_1005Metric_KOA | R6 |
| 1 | 2016L150/33DR | lsc-polyfuse:PTS1206_FUSC3216X68N_EATON | F1 |
| 1 | 220uF | lsc-capacitors-added:CAP_EEE-FT-SIZE-CODE-F_8x10_PANASONIC | C3 |
| 1 | 274 | lsc-resistor:R_RK37H_0402_1005Metric_KOA | R1 |
| 1 | 3V3 | lsc-utility:TestPoint_Pad_D1.0mm | TP7 |
| 1 | 47k | lsc-resistor:R_RK37H_0402_1005Metric_KOA | R8 |
| 1 | 5.62k | lsc-resistor:R_RK37H_0402_1005Metric_KOA | R9 |
| 1 | DMP3014SFDE | lsc-dfn-vdfn-tdfn:TRANS_6-UDFN_U-DFN2020-6-E_DIO | Q2 |
| 1 | GND | lsc-utility:TestPoint_Pad_D1.0mm | TP3 |
| 1 | LM66200 | lsc-standard-chip-carrier:SOT-583_SOT-5X3_DRL0008A_TEX | U5 |
| 1 | MM3Z20B-AQ | lsc-diode-smd:D_SOD-323F_SOD323F_DIODES | ZD1 |
| 1 | OKI-78SR-5/1.5-W36-C | lsc-module:CONV_OKI-78SR-W36-C_MURATA2 | PSU1 |
| 1 | PWF1 | lsc-utility:TestPoint_Pad_D1.0mm | TP9 |
| 1 | PWF2 | lsc-utility:TestPoint_Pad_D1.0mm | TP10 |
| 1 | PWF3 | lsc-utility:TestPoint_Pad_D1.0mm | TP13 |
| 1 | PWF4 | lsc-utility:TestPoint_Pad_D1.0mm | TP14 |
| 1 | PWR | lsc-connector-terminal-block:2-POS_FK-MPT_1891069_PHOENIX | CN1 |
| 1 | RU1C002ZP | lsc-standard-chip-carrier:SOT-323T-3_SOT-323FL_SC-85 | Q1 |
| 1 | RaspberryPi_Pico | lsc-connector-board:RPI_Pico-CN_Right | CN3 |
| 1 | RaspberryPi_Pico | lsc-connector-board:RPI_Pico-CN_Left | CN2 |
| 1 | SGD | lsc-utility:TestPoint_Pad_D1.0mm | TP8 |
| 1 | SGL1-20 | lsc-diode-smd:DIO_DO213AA_MINIMELF | D4 |
| 1 | SMAJ16CA | lsc-diode-smd:DIO_SMB_LOWVOLTAGE_DIODES | D1 |
| 1 | TCF1 | lsc-utility:TestPoint_Pad_D1.0mm | TP11 |
| 1 | TCF2 | lsc-utility:TestPoint_Pad_D1.0mm | TP12 |
| 1 | TCF3 | lsc-utility:TestPoint_Pad_D1.0mm | TP15 |
| 1 | TCF4 | lsc-utility:TestPoint_Pad_D1.0mm | TP16 |
| 1 | VSYS | lsc-utility:TestPoint_Pad_D1.0mm | TP6 |
| 1 | VSYS | lsc-led-smd:LED_599-00XX-137F_0603_1608Metric | LD1 |
Similar boards
- 2 layers163.7 × 124.3 mm

- 4 layers101.6 × 101.6 mm

- 4 layers86 × 67 mm

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 mm

- 4 layers90.8 × 58.8 mm

HALSER
hatlabs/HALSER-hardware
Hat Labs Serial Interface Device hardware design files
199 partsCC-BY-4.0 - 2 layers108 × 47 mm

Esp32board
ieb/N2KEngineEsp32
N2K Engine Interface with BLE built around an ESP32 and ADS1115 ADCs
88 parts - 4 layers203.5 × 90 mm

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 mm

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.