Skip to the content
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.

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

Overview

Fan controller with ch 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 57 nets, routed with 796 tracks and 41 vias.

It is built around the ATMEGA328P-PU, CH340B and USBLC6-4, with the TPS3808G50DBV among its other parts. Its parts include 11 capacitors, 11 connectors, 7 ICs, 5 resistors and 5 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
70u1Capacitor_THT:C_Disc_D6.0mm_W2.5mm_P5.00mmC4, C5, C6, C7, C8, C9, C12
42N7000Package_TO_SOT_THT:TO-92_InlineQ1, Q3, Q4, Q5
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_HorizontalR1, R2, R6
21N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD3, D5
21uCapacitor_THT:C_Disc_D6.0mm_W2.5mm_P5.00mmC1, C3
222pCapacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mmC10, C11
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
138kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR5
1470Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR3
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
1CH340BPackage_SO:SOIC-16_3.9x9.9mm_P1.27mmU1
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, the printed circuit board in 3D

    Fan controller

    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 layers137.2 × 83.8 mmPWA REV2, the printed circuit board in 3D

    PWA REV2

    PubInv/krake

    The Krake™ is a Wi-Fi–enabled server using an MQTT broker, which means it can be controlled remotely by other devices ("clients") via the internet.

    215 parts9AGPL-3.0
  • 4 layers56 × 56 mmStepper driver, the printed circuit board in 3D

    Stepper driver

    matthewlai/ESP32Stepper

    This is the PCB design and firmware for a Trinamic TMC2590-based stepper motor driver with an ESP32 microcontroller.

    116 parts5Apache-2.0
  • 2 layers18 × 11 mmBase, the printed circuit board in 3D

    Base

    brainsmoke/uuart

    14 parts3
  • 2 layers72.8 × 38 mmFanControl, the printed circuit board in 3D

    FanControl

    bakadave/fanControl

    104 parts
  • 2 layers36.8 × 64.5 mmRelay tester, the printed circuit board in 3D

    Relay tester

    brainsmoke/leddriver3d

    Renamed from esp32leddriver because it also contains code and PCBs for other MCUs

    36 parts11
  • 2 layers29 × 29 mmModule CH340B USB C, the printed circuit board in 3D

    Module CH340B USB C

    Squantor/various_PCB

    Various little boards are added here like level shifters, oscillator breakouts and other simple PCB's. Most of these boards are breadboard plugin friendly.

    31 parts4MIT

Questions

How big is the Fan controller with ch PCB?

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

What parts does the Fan controller with ch use?

51 parts, built around the ATMEGA328P-PU, CH340B, 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 with ch 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_with_ch.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 with ch design in my own project?

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