Skip to the content
PCBKitNew board
2 layers24.6 × 11.1 mmPWM+fan stop, the printed circuit board in 3D

PWM+fan stop

yvoronkin/FANSTOP2

In a small form factor, an extension of the fan control is implemented.

Size
24.6 × 11.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
24
Nets
13
Pads
53
Tracks, vias
153, 33
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
31 Aug 2026
Updated
5 Sep 2026

Overview

PWM+fan stop is an open-source printed circuit board by yvoronkin, from the yvoronkin/FANSTOP repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 2-layer board of 24.6 × 11.1 mm with 24 parts on 13 nets, routed with 153 tracks and 33 vias.

It is built around the ATTINY10-TSH, L78L05ABUTR and AO3413. Its parts include 6 resistors, 3 capacitors, 2 ICs, 2 diodes and 2 transistors. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

3

README

README.md

FANSTOP

An inline hardware adapter that adds true fan stop to 4-wire PWM fans and supply-PWM control to 2- and 3-wire fans.

FANSTOP assembled PCB

Some fans keep spinning even when their controller outputs 0% duty cycle. Other fans expose only power and tachometer pins, so they cannot use the standard 4-wire PWM control input at all.

FANSTOP sits between a 12V fan controller and a fan. An ATtiny10 measures the incoming PWM signal and controls a high-side MOSFET in one of two selectable operating modes.

[!CAUTION] FANSTOP can remove power from a cooling fan. Validate the module, firmware thresholds, fan startup behavior, and thermal protection before using it on equipment that can be damaged by loss of cooling.

Features

  • True power-off for fans that do not stop at 0% PWM
  • Supply-PWM speed control for 2- and 3-wire 12V fans
  • Hardware pass-through for PWM and tachometer signals
  • Approximately 300ms low-duty debounce to reject short glitches.
  • 5-10% hysteresis to prevent repeated switching around the stop threshold
  • Static LOW and static HIGH input detection
  • Compact two-layer PCB: approximately 24.5 x 11.15 mm
  • ATtiny10 firmware written in AVR assembly
  • Exposed TPI programming pads compatible with pogo pins or a 2.54 mm 2x3-style fixture
  • KiCad 10 hardware sources and FreeCAD/STL programming-fixture files included.

Operating modes

Mode is sampled at startup using solder jumper JP1

JP1ModeOutput behavior
Open4-wire fan-stopPWM and tachometer pass through. The module switches the fan's 12 V supply only when fan-stop is requested.
Bridged2/3-wire supply PWMIncomming PWM duty is reproduced by switching the fan's 12V supply at a lower frequency. Tachometer passes through.

4-wire fan-stop mode

This is the default mode.

Input stateResult
Duty cycle below 5% for approximately 300 msFan supply OFF
Duty cycle from 5% through 10 %Keep the previous ON/OFF state
Duty cycle abowe 10%Fan supply ON
Static LOWTreated as a stop request after the debounce interval
Static HIGHFan supply ON

The firmware accepts PWM periods from 240 to 500 timer ticks. At the 8 MHz MCU clock this corresponds to approximately 16-33.3 kHz, covering the nominal 25 kHz 4-wire PC-fan control signal.

2/3-wire supply-PWM mode

Bridge JP1 before powering the board. FANSTOP measures the incoming duty cycle and generates power PWM through the high-side MOSFET.

The output timing is derived from the measured input:

output frequency = input frequency / 100

For a nominal 25 kHz input, the fan supply is therefore switched at approximately 250 Hz. The tachometer line remains connected directly between input and output.

Because the entire fan supply is switched, fan compatibility, acoustic noise, tathometer quality, and reliable startup at low duty cycles depends on the particular fan.

Connections

Both fan connectors use the standard 4-wire PC-fan pin order:

PinSignalNotes
1GNDCommon ground
2+12VFan supply; switched on the output side
3TachPassed through directly
4PWMControl input and hardware pass-through

Connect the controller or motherboard to PWM_IN (J1) and the fan to PWM_OUT (J2). Do not reverse the board direction or connector polarity.

The PWM input is pulled up to 5V on the module and is intended for the usual open-collector/open-drain fan-control interface. Verify compatibility before connecting a push-pull controller.

Electrical notes

  • Nominal supply: 12V DC
  • Logical supply 5V (generated by an L78L05 regulator)
  • Controller: ATtiny10
  • High-side switch: A03413 P-channel MOSFET driven through a 2N7002
  • The power path uses 0.9 mm traces and was laid out with a 2A design target
  • Tachometer and PWM signals are not galvanically isolated
  • The board is not intended for 24 V fans; the fitted protection network is designed around a 12 V system

The 2 A figure is a layout target, not a certified continuous-current rating. The practical limit also depends on connectors, assembly quality, ambient temperature, MOSFET dissipation, and fan startup current.

Building the firmware

The firmware is a PlatformIO project and uses a pinned AVR toolchain that contains ATtiny10 support

text
git clone https://github.com/yvoronkin/FANSTOP.git
cd FANSTOP/firmware
pio run

The resulting firmware image is placed under: .pio/build/attiny10/firmware.hex

Programming

ATtiny10 uses the TPI programming interface. The board exposes five programming pads:

PadSignal
GNDGround
+5VProgramming supply
DATTPI data
RSTReset
CLKTPI clock

The tools/ directory contains a printable programming gixture in FreeCAD and STL formats.

Project status

FANSTOP is an actively developed hardware project. The firmware builds with PlatformIO, but fan controllers and fans vary considerably; treat electrical, thermal, acoustic, and tachometer compatibility as something to validate for each installation.

Contributing

Bug reports, oscilloscope captures, fan compatibility results, firmware improvements, and hardware revisions are welcome. When reporting a control issue, include the fan model, input PWM frequency and duty cycle, selected mode, and measured output behavior.

License

Parts

24
QtyValueFootprintReferences
210kResistor_SMD:R_0603_1608MetricR3, R4
21kResistor_SMD:R_0603_1608MetricR1, R2
21uFCapacitor_SMD:C_0603_1608MetricC1, C2
2GNDTestPoint:TestPoint_Pad_D1.5mmTP1, TP6
1+5VTestPoint:TestPoint_Pad_D1.5mmTP2
1100kResistor_SMD:R_0603_1608MetricR6
1100nFCapacitor_SMD:C_0603_1608MetricC3
12.2kResistor_SMD:R_0603_1608MetricR5
12N7002Package_TO_SOT_SMD:SOT-23Q2
1AO3413Package_TO_SOT_SMD:SOT-23-3Q1
1ATtiny10-TSPackage_TO_SOT_SMD:SOT-23-6U2
1BZX384-B6V2.115Diode_SMD:D_SOD-323D2
1CLKTestPoint:TestPoint_Pad_D1.5mmTP5
1CONF1Jumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP1
1DATTestPoint:TestPoint_Pad_D1.5mmTP3
1L78L05ABUTRPackage_TO_SOT_SMD:SOT-89-3U1
1PWM_INConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ1
1PWM_OUTConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ2
1RSTTestPoint:TestPoint_Pad_D1.5mmTP4
1TVS VRWM15Diode_SMD:D_SOD-323D1

Questions

How big is the PWM+fan stop PCB?

It measures 24.6 × 11.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PWM+fan stop use?

24 parts, built around the ATTINY10-TSH, L78L05ABUTR and AO3413. 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 PWM+fan stop KiCad files?

From the yvoronkin/FANSTOP repository on GitHub, at the commit this page was made from: the board is hardware/PWM+fan_stop.kicad_pcb and its schematic hardware/PWM+fan_stop.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PWM+fan stop design in my own project?

Its repository publishes it under the CERN-OHL-S-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers104.1 × 54.6 mmVoltage Sensor Card, the printed circuit board in 3D

    Voltage Sensor Card

    odtu/Powerlab

    METU Powerlab File Repository

    62 parts16
  • 2 layers72.4 × 78.7 mmAudioInterface, the printed circuit board in 3D

    AudioInterface

    Diabltica/AudioInterface

    An hardware audio interface featuring an ouput selector and an amplifier powered by usb C

    91 parts
  • 2 layers40.1 × 54.3 mmBSPD 2027, the printed circuit board in 3D

    BSPD 2027

    SCFormulaElectric/USC-Electrical-Systems

    71 parts9
  • 2 layers56 × 44 mmCphp82001-pcb, the printed circuit board in 3D

    Cphp82001-pcb

    calcpsu/cphp82001

    CalcPack replacement for HP 82001, suits HP35/45/55/65/67 calculators

    30 parts4
  • 2 layers100 × 100 mmPowersavers, the printed circuit board in 3D

    Powersavers

    Bolukan/KiCAD

    KiCad projects

    344 parts1MIT
  • 2 layers51.4 × 43 mmCptibp8-pcb, the printed circuit board in 3D

    Cptibp8-pcb

    calcpsu/cptibp8

    CalcPack for TI BP8

    62 parts