Skip to the content
2 layers60 × 60 mmFan controller, the printed circuit board in 3D

A PlatformIO project for Arduino Uno that implements an intelligent fan controller with sensor monitoring, real-time clock, and OLED display.

Size
60 × 60 mm
Copper layers
2
Thickness
1.6 mm
Parts
51
Nets
60
Pads
207
Tracks, vias
836, 45
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
16 Nov 2025
Updated
24 Nov 2025

Overview

Fan controller is an open-source printed circuit board by ferrybig, from the ferrybig/70w-fan-controller repository on GitHub. It is a 2-layer board of 60 × 60 mm with 51 parts on 60 nets, routed with 836 tracks and 45 vias.

It is built around the ATMEGA328P-PU, FT232RL and USBLC6-4, with the TPS3808G50DBV among its other parts. Its parts include 12 capacitors, 11 connectors, 7 resistors, 7 ICs and 4 diodes. It belongs with the lEDs and displays boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

4

README

README.md

Arduino Simple Fan Controller

A PlatformIO project for Arduino Uno that implements an intelligent fan controller with sensor monitoring, real-time clock, and OLED display.

Features

  • Potentiometer-based fan speed control with auto-calibration
  • Real-time environmental monitoring (temperature, humidity, pressure)
  • DS3231 RTC with battery backup for timekeeping
  • 128x64 SPI OLED display for status information
  • Fan tachometer (RPM) monitoring
  • Input voltage monitoring
  • USB power detection
  • Auxiliary fan output control
  • Serial command interface for configuration
  • Multiple fan modes: Auto, Off, On, Safe Mode
  • EEPROM calibration storage

Hardware Components

Sensors

  • AHT20: Temperature and humidity sensor (I2C, 0x38)
  • BMP280: Barometric pressure sensor (I2C, 0x77)
  • DS3231: Real-time clock module (I2C, 0x68)
  • AT24C32: EEPROM on RTC module (I2C, 0x57)

Display

  • SSD1306: 128x64 OLED display (SPI interface)

Inputs

  • Potentiometer: Pin A1 (PC1) - Fan speed control
  • USB Sense: Pin 12 (PB4) - Detects USB power
  • Voltage Sense: Pin A0 (PC0) - Input voltage monitoring
  • RTC Alarm: Pin A3 (PC3) - RTC alarm interrupt

Outputs

  • Fan PWM: Pin 3 (PD3) - Main fan control (Timer2 OC2B, 100Hz PWM)
  • Auxiliary Fan: Pin 8 (PB0) - Secondary fan control
  • OLED Pins: Pins 9, 10, 13, 11 (DC, CS, SCK, MOSI) + Pin 5 (Reset)

Pin Configuration

PinFunctionTypeDetails
A0 (PC0)Voltage SenseAnalog InputInput voltage monitoring
A1 (PC1)PotentiometerAnalog InputFan speed control
A3 (PC3)RTC AlarmDigital InputDS3231 alarm interrupt
3 (PD3)Fan PWMPWM Output100Hz PWM, 15-90% duty cycle
8 (PB0)Aux FanDigital OutputAuxiliary fan control
9 (PB1)OLED DCDigital OutputDisplay data/command select
10 (PB2)OLED CSDigital OutputDisplay chip select
11 (PB3)OLED MOSISPI OutputHardware SPI data
12 (PB4)USB SenseDigital InputUSB power detection (active LOW)
13 (PB5)OLED SCKSPI OutputHardware SPI clock
A4 (SDA)I2C DataI2CSensors and RTC communication
A5 (SCL)I2C ClockI2CSensors and RTC communication

Usage

  1. Upload the code to your Arduino Uno using make upload
  2. Open the serial monitor using make monitor
  3. Adjust the potentiometer to control fan speed in Auto mode
  4. Use serial commands to configure the system (see Serial Commands section)

Build and Upload

This project uses a Makefile for easy building and uploading. The Makefile automatically creates a Python virtual environment and installs PlatformIO.

Available Commands

  • make setup - Create virtual environment and install PlatformIO
  • make build - Build the project (default target)
  • make upload - Build and upload firmware to device
  • make monitor - Open serial monitor (115200 baud)
  • make clean - Clean build files

Serial Commands

Commands can be sent via the serial monitor at 115200 baud.

Parts

51
QtyValueFootprintReferences
80u1Capacitor_THT:C_Disc_D6.0mm_W2.5mm_P5.00mmC2, C4, C5, C6, C7, C8, C9, C12
4USBLC6Package_TO_SOT_SMD:SOT-23-6U2, U4, U5, U6
4~MountingHole:MountingHole_3.2mm_M3_PadH1, H2, H3, H4
310kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR2, R4, R6
21kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR3, R7
21uCapacitor_THT:C_Disc_D6.0mm_W2.5mm_P5.00mmC1, C3
222pCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC10, C11
22N7000Package_TO_SOT_THT:TO-92_InlineQ1, Q3
230VDiode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD2, D6
2Extra i2c busConnector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_VerticalJ6, J11
116MCrystal:Crystal_HC49-4H_VerticalY1
11N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD3
138kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR5
14.7kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1
1ATmega328P-PPackage_DIP:DIP-28_W7.62mm_SocketU3
1AVR-ISP-60Library:ISP_HeaderJ10
1Aux fanConnector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ8
1FT232RLPackage_SO:SSOP-28_5.3x10.2mm_P0.65mmU8
1Main connectorTerminalBlock:TerminalBlock_MaiXu_MX126-5.0-08P_1x08_P5.00mmJ4
1NetTie_2NetTie:NetTie-2_SMD_Pad0.5mmNT1
1Oled moduleConnector_PinSocket_2.54mm:PinSocket_1x07_P2.54mm_HorizontalJ7
1RTC_moduleConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_HorizontalJ3
1SMPS moduleConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_HorizontalJ9
1Secondary connectorTerminalBlock:TerminalBlock_MaiXu_MX126-5.0-08P_1x08_P5.00mmJ1
1TPS3808G50Package_TO_SOT_SMD:SOT-23-6U7
1Temp sensorConnector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_VerticalJ5
1USB-BConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_HorizontalJ2
1blueLED_THT:LED_D3.0mmD1
1rst_bypassJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP2
1sense_vinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1

More from ferrybig/70w-fan-controller

2
  • 2 layers60 × 60 mmFan controller with ch, the printed circuit board in 3D

    Fan controller with ch

    ferrybig/70w-fan-controller

    A PlatformIO project for Arduino Uno that implements an intelligent fan controller with sensor monitoring, real-time clock, and OLED display.

    51 parts
  • 2 layers60 × 60 mmFan controller old, the printed circuit board in 3D

    Fan controller old

    ferrybig/70w-fan-controller

    A PlatformIO project for Arduino Uno that implements an intelligent fan controller with sensor monitoring, real-time clock, and OLED display.

    40 parts

Similar boards

  • 2 layers130 × 95 mmBefore, the printed circuit board in 3D

    Before

    magic-alt/fpga-servo

    This directory preserves the ADS8588S legacy PCB, native project and custom rules from b0172a2f65902c7281cf4a8454f192dc791a9ef9.

    162 parts
  • 2 layers68.8 × 53.6 mmZArduino, the printed circuit board in 3D

    ZArduino

    zmaker/arduino_cookbook

    gli sketch del nuovo progetto Arduino Cookbook e dei video di YouTube

    46 parts269
  • 2 layers83 × 72 mmLivello serbatoio definitiva, the printed circuit board in 3D

    Livello serbatoio definitiva

    giorossi91/livello_serbatoio

    This project realizes a simple device to monitor the water level in a tank.

    44 parts2GPL-3.0
  • 2 layers78.7 × 99.1 mmHBTU REV 2, the printed circuit board in 3D

    HBTU REV 2

    Prsh0502/HBTU_PCBContest_2026

    54 parts
  • 2 layers48.3 × 59.7 mmArduino, the printed circuit board in 3D

    Arduino

    Randyansah/PCB

    Config files for my GitHub profile.

    40 parts
  • 2 layers38 × 33 mmVictim, the printed circuit board in 3D

    Victim

    ronitghai/Fault-Injection-on-AES-Cryptographic-Hardware-Attack

    16 parts
  • 2 layers43.2 × 17.6 mmOtterPill, the printed circuit board in 3D

    OtterPill

    Jana-Marie/OtterPill

    stm32f072 dev board with arduino nano alike pinout

    37 parts162
  • 4 layers95 × 95 mmOpenmicro, the printed circuit board in 3D

    Openmicro

    conol-ai/openmicrokbd

    Open-source recreation of OpenAI's Codex Micro macropad — PCB written in CoHDL, an AI-native hardware description language. Rust firmware (embassy) + companion app (makepad). MIT licensed. https://openmicrokbd.org

    88 parts154MIT

Questions

How big is the Fan controller PCB?

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

What parts does the Fan controller use?

51 parts, built around the ATMEGA328P-PU, FT232RL, USBLC6-4 and TPS3808G50DBV. 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 KiCad files?

From the ferrybig/70w-fan-controller repository on GitHub, at the commit this page was made from: the board is pcb/Fan controller.kicad_pcb and its schematic pcb/Fan controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

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

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