Skip to the content
2 layers32.5 × 14.5 mmFan, the printed circuit board in 3D

Българска версия / Original Bulgarian internship log

Size
32.5 × 14.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
26
Nets
18
Pads
59
Tracks, vias
114, 0
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
1 Jul 2025
Updated
20 Sep 2026

Overview

Fan is an open-source printed circuit board by yasenOfficial, from the yasenOfficial/ZekEng-Intern repository on GitHub. It is a 2-layer board of 32.5 × 14.5 mm with 26 parts on 18 nets, routed with 114 tracks and 0 vias.

It is built around the HEF4093BT, 1N4148WS and BZX84J-C12,115. Its parts include 9 resistors, 5 diodes, 3 capacitors and 1 IC.

Main components

3

README

README.md

ZekEng Internship Project

Fan-controller reverse engineering, simulation, PCB redesign, humidity-sensor research, and embedded audio DSP development.

Българска версия / Original Bulgarian internship log

Project overview

The main goal of this internship was to analyze and redesign an existing fan-controller board that was prone to failure. The work covered reverse engineering, LTspice simulation, component selection, schematic capture, PCB layout, fabrication, assembly, and supporting research into humidity sensing.

While the redesigned boards were being manufactured, the project was expanded with an embedded-audio task based on the Electrosmith Daisy platform. This included real-time reverb, audio passthrough, SD-card access, WAV parsing, and initial convolution-reverb development.

The original reverse-engineering files are available in Files for Reverse Engineering.

Original fan-controller PCB, top Original fan-controller PCB, bottom

Repository contents

  • Fan/ — KiCad schematic, PCB layout, project backups, fabrication files, and schematic PDF
  • LTSpice Files/ — LTspice tutorials, component tests, power-supply simulation, and fan-controller simulation
  • Files for Reverse Engineering/ — source material for the original board
  • HumSensorResearch/ — humidity-sensor material research and reference papers
  • DaisyExamples/pod/ — Daisy Pod audio experiments and convolution project
  • Images/ — project photos, plots, screenshots, and supporting media
  • README_BG.md — the original Bulgarian day-by-day internship log

LTspice simulation and circuit analysis

The simulation work started with the LTspice workflow in LTSpice Files/TutorialRoman/TutorialRoman.asc, covering component placement, wiring, parameter assignment, directives, and signal analysis.

AC analysis

spice
.ac dec 50 1k 10Meg

This sweeps the circuit from 1 kHz to 10 MHz, using 50 logarithmically spaced points per decade, to measure gain and phase response.

AC analysis

Transient analysis

spice
.tran 0 300u 100u 0.01u

This evaluates voltages and currents over 300 µs, starts saving data after 100 µs, and limits the maximum timestep to 0.01 µs.

Transient analysis

Fourier analysis

spice
.four 500k 10V(out)

The transient output is decomposed into harmonics around a 500 kHz fundamental to assess signal quality.

Fourier analysis

Parameter sweep

spice
.step lin param Rgain 100k 200k 20k

Rgain is swept from 100 kΩ to 200 kΩ in 20 kΩ increments, with the analyses repeated for every value.

Multiple simulations

Identified behavior

The transient simulation revealed a point at which the output departed from the expected sine wave. Cursor measurements showed that the operational amplifier required measurable time to overcome the combined VBE voltage drop of transistors Q1 and Q2. Of the six simulated cases, the third trace—R1 = 140 kΩ, with a 14 V amplitude—was the minimum acceptable result.

Identifying the defect

Imported models and component tests

The CD4000-series models and the MAC97A8 triac model were added to the LTspice project. Supporting tests include:

  • NAND Tests.asc — CD4093B NAND-gate test with a 12 V-amplitude sine wave
  • SW.asc — LTspice voltage-controlled switch experiments
  • PMU.asc — power-supply simulation
  • Ventilator.asc — complete fan-controller simulation

NAND-gate test

Custom switch implementation

The simulated supply reaches approximately 11.3 V after 160 ms and then gradually rises to about 11.6 V within two seconds.

Supply at 11.3 V Supply at 11.6 V

Fan-controller redesign

The board was recreated in KiCad and revised to improve reliability while retaining the original mechanical constraints of approximately 14.5 mm × 32.5 mm.

Schematic and component changes

  • Replaced the original 220 nF capacitor with a suitably rated part that fits the board.
  • Corrected an intermediate selection error where a 22 nF part had been chosen instead of 220 nF.
  • Changed the resistor topology from parallel to series.
  • Selected a new Zener diode because the original component could not be identified.
  • Verified and corrected the MAC97A8 triac pinout.
  • Reviewed pulse-current capability and physical dimensions when selecting replacement parts.

Fan schematic

PCB layout and custom footprints

The PCB work included:

  • A custom test point with a 1.8 mm pad diameter and 1.1 mm drill
  • A revised humidity-sensor symbol and footprint
  • Improved placement of high-voltage resistors R21–R24
  • A custom 220 nF capacitor footprint supporting multiple package sizes and updated 3D models
  • A custom footprint and 3D representation for two horizontally mounted 100 µF capacitors
  • Component rearrangement so the fan connection pads are not hidden under the electrolytic capacitors

PCB layout PCB 3D view PCB 3D view

After review, Gerber fabrication files were exported to Fan/Gerbers.zip, and the prototype was sent to Hardtech for production. A bill of materials was also prepared, including cost estimates for prototype quantities of 25 boards and mass production at 1,000 boards.

Bill of materials

Manufactured prototypes

The boards and components were received and three prototypes were assembled for evaluation.

Manufactured PCBs Manufactured PCBs Assembled PCB Assembled PCB

Humidity-sensor research

The original resistive humidity sensor was coated with latex, which degraded when exposed to moisture. Several hydrophilic sensing materials were investigated:

  • Polyimide, including the possibility of a flexible-PCB sensor
  • Polyaniline (PANI), which was rejected because of its cost and excessively high resistance
  • Polyvinyl alcohol (PVA)
  • Carbon-based construction for improved durability

Measurements from the original sensor indicated a nominal resistance of approximately 1.8 MΩ, falling to around 1 MΩ at 100% relative humidity. A major obstacle was the lack of reliable resistance-versus-area data for candidate coatings at a defined thickness.

To avoid this uncertainty, a commercial HR202 humidity sensor was removed from another fan, evaluated, and selected for the redesign.

HR202 humidity sensor

Reference material is stored in HumSensorResearch/, including Polyaniline_based_impedance_humidity_sen.pdf.

Daisy embedded-audio work

While waiting for PCB fabrication, an Electrosmith Daisy development board was configured using the official C++ development-environment guide.

Daisy DSP evaluation board

The following Daisy Pod examples were developed:

  • Reverb — generates a signal and applies reverb
  • Passthrough — routes computer audio through the board to the headphone output without processing
  • PassthroughReverb — applies reverb to the passthrough signal
  • Convolution — WAV loading, parsing, and convolution-reverb development

Demonstrations:

Convolution and WAV processing

The convolution goal was to load an impulse-response WAV file from an SD card and reproduce the acoustic response on the incoming audio signal. The tunnel-entrance impulse response is stored under DaisyExamples/pod/Convolution/deprecated/mono files/.

The source file was prepared with SoX:

bash
sox tunnel_entrance_f_1way_mono.wav -r 48000 -b 24 -c 1 tunnel_entrance_48k.wav gain -n -3 rate -v

This converts the file to the Daisy board's native 48 kHz sample rate, uses a mono 24-bit output, normalizes the peak to −3 dBFS, and enables SoX's high-quality resampling filter.

Serial logging fix

Back-to-back PrintLine calls caused serial output to stall. A short delay provided an initial workaround:

cpp
hw.DelayMs(1);

A proper Flush() method was then added to the libDaisy logger and the library was rebuilt:

cpp
template <LoggerDestination dest>
void Logger<dest>::Flush()
{
    if(tx_ptr_ > 0)
    {
        TransmitBuf();
    }
    tx_ptr_ = 0;
}

SD-card access and RIFF/WAV parsing

After resolving file-access issues, the firmware successfully opened the SD-card file and verified its bytes against a hex viewer.

A WAV file is a RIFF container, so the audio data chunk is not guaranteed to begin at byte 37. Tools may insert chunks such as LIST or bext before the audio payload. The parser was therefore changed to scan dynamically for both the fmt and data chunks instead of assuming fixed offsets.

A successfully parsed test file reported:

text
RIFF: RIFF
File size: 480072
WAVE: WAVE
fmt : fmt
Audio Format: 1
Channels: 1
Sample Rate: 48000
Byte Rate: 96000
Block Align: 2
Bits Per Sample: 16
data: data
Data Size: 480002
Data Offset: 78

The WAV handling code was separated from main, and FatFs FIL objects were moved to global storage after debugging initialization problems with local instances. A file-copy routine was implemented to read and rewrite both the WAV header and sample data, providing a way to validate the SD-card data before integrating it into the convolution pipeline.

Main outcomes

  • Reverse-engineered and simulated the original fan-controller circuit
  • Identified important transient behavior and power-supply characteristics
  • Redesigned the schematic and compact PCB with corrected components and footprints
  • Generated fabrication files, a BOM, and production cost estimates
  • Assembled three physical prototypes
  • Replaced an uncertain custom humidity-sensing coating with an HR202 sensor
  • Built real-time Daisy audio examples and established SD-card WAV parsing for convolution work

Parts

26
QtyValueFootprintReferences
7TestPointPads:TestPoint_Top_Hole_D1.8x1.1mmHS1, HS2, TP1, TP2, TP3, TP4, TP5
4130RResistor_SMD:R_1206_3216MetricR21, R22, R23, R24
41N4148WSDiode_SMD:D_SOD-323D1, D2, D3, D4
2100uFCapacitors:C_Radial_D5.0mm_H11.0mm_P2.00mm_LyingC1, C3
23M3Resistor_SMD:R_0805_2012MetricR3, R7
115kResistor_SMD:R_0805_2012MetricR6
11k8Resistor_SMD:R_0805_2012MetricR8
1220kResistor_SMD:R_1206_3216MetricR1
1220nFCapacitors:C_Rect_L11.5mm_W4.5mm_P10.00mm_MKT_DoublePadC2
1BZX84J-C12,115Diode_SMD:D_SOD-323FDZ1
1Generic_Triac_A2GA1Package_TO_SOT_THT:TO-92_InlineD6
1HEF4093BCD4093:D14U2

Similar boards

  • 2 layers482.5 × 711 mm8Q, the printed circuit board in 3D

    8Q

    Spooky-Manufacturing/8Q

    General Purpose 8 Qubit Optical Quantum Computer

    157 parts101GPL-3.0
  • 2 layers292.1 × 88 mmRolandMpuImcMod, the printed circuit board in 3D

    RolandMpuImcMod

    schlae/mpu-imc

    MPU-IMC clone board layout and schematic

    123 parts7
  • 2 layers127 × 91.5 mmAccumulator Board, the printed circuit board in 3D

    Accumulator Board

    formulaslug/fs-3-schematics

    Electrical Design Repository for fs-3 schematics and PCBs

    110 parts5
  • 2 layers245.6 × 85.9 mmMycelium pcb, the printed circuit board in 3D

    Mycelium pcb

    microresearch/mycelium

    134 parts5GPL-3.0
  • 2 layers60.1 × 109.8 mmBabyOdes, the printed circuit board in 3D

    BabyOdes

    oficinadesonido/miPrimerModular

    Mi Primer Modular

    91 parts3GPL-3.0
  • 2 layers160 × 124.7 mmBSPD, the printed circuit board in 3D

    BSPD

    formulaslug/fs-2-schematics

    Electrical design repository for the FS-2 racecar

    139 parts2
  • 2 layers176.8 × 100.3 mmUMI4M, the printed circuit board in 3D

    UMI4M

    fordp2002/music2xxx

    A clone of the Hybrid Music2000 Midi interface for the Acorn BBC Microcomputer

    103 parts1

Questions

How big is the Fan PCB?

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

What parts does the Fan use?

26 parts, built around the HEF4093BT, 1N4148WS and BZX84J-C12,115. 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 KiCad files?

From the yasenOfficial/ZekEng-Intern repository on GitHub, at the commit this page was made from: the board is Fan/Fan.kicad_pcb and its schematic Fan/Fan.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Fan design in my own project?

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