Close
0%
0%

ZK-4KX Power Supply with Fan

A bench power supply built around the ZK-4KX buck-boost module, with a 3D-printed case and a fan that runs only when the module gets warm

Public Chat
Similar projects worth following
0 followers
Source files, build guide and updates: github.com/CatalinSerafimescu/ZK-4KXPowerSupplyWithFan

Features
• Fan off below a start temperature set with a trimmer (about 15–52 °C), full speed about 18 °C above it.
• Fan voltage never exceeds 5 V, whatever the input voltage or a fault.
• Runs from the same DC input as the ZK-4KX: 9 V / 2 A adapter tested, up to about 28 V supported.
• Single-sided PCB, 90 × 66 mm, no vias, no jumpers — made for toner-transfer etching.
• Through-hole parts only: LM35, LM358, LM317, 78L05 and one trimmer.
• Printed case, 98 × 128 × 68 mm, magnetic lid, prints without supports.

Features

  • Fan off below a start temperature set with a trimmer (about 15–52 °C), full speed about 18 °C above it.
  • Fan voltage never exceeds 5 V, whatever the input voltage or a fault.
  • Runs from the same DC input as the ZK-4KX: 9 V / 2 A adapter tested, up to about 28 V supported.
  • Single-sided PCB, 90 × 66 mm, no vias, no jumpers — made for toner-transfer etching.
  • Through-hole parts only: LM35, LM358, LM317, 78L05 and one trimmer.
  • Printed case, 98 × 128 × 68 mm, magnetic lid, prints without supports.

How it works

An LM35 on the ZK-4KX heatsink measures temperature. One half of an LM358 buffers the start-temperature voltage from the trimmer; the other half amplifies the difference: V_ADJ = 11 × V_LM35 − 10 × V_REF. That drives the ADJ pin of an LM317, so the fan gets V_ADJ + 1.25 V: 1.25 V (stopped) up to 4.75 V (full speed). A 78L05 powers the op-amp and the sensor, which also caps the fan voltage.

Fail-safes: if the trimmer wiper opens, the fan starts at about 17 °C; if the LM35 is disconnected, the fan runs at full speed.

Design and checks

  • Designed in KiCad 10; ERC and DRC clean.
  • Simulated in both ngspice and LTspice: nominal, trimmer at both ends, input sweep, power-up hot and cold, open wiper, open sensor, op-amp offset worst cases.
  • Enclosure and solder-mask jig modelled in FreeCAD and fit-checked against models of the real parts.
  • Measured on the built unit: the fan starts at about 2.8 V.

Files in the project

  • Enclosure base and cover, ready to print (in print orientation): mechanical/enclosure/Enclosure_base.3mf, Enclosure_cover.3mf
  • Bambu Studio project for the Bambu Lab A1 (0.20 mm, PLA Basic, two plates): mechanical/enclosure/Enclosure_A1_project.3mf
  • Enclosure CAD for remixing: mechanical/enclosure/Enclosure_base.step, Enclosure_cover.step, and the FreeCAD script gen_enclosure.py
  • Solder-mask jig (optional): mechanical/mask_jig/Mask_jig.stl / .step
  • PCB print for toner transfer and the solder-mask film, A4, print at 100 %: KiCAD/toner_B.Cu_1to1.pdf
  • Gerbers and drill files for ordering the PCB: KiCAD/gerber/SursaTensiune_gerbers.zip
  • Schematic: KiCAD/SursaTensiune_sch.pdf
  • KiCad 10 project: KiCAD/
  • Bill of materials: bom.md
  • Full build guide: instruction.md
  • SPICE simulations (ngspice and LTspice): simulation/
  • Build photos: photos/

fan_controller.png

Portable Network Graphics (PNG) - 45.11 kB - 10/06/2026 at 15:29

Preview

SursaTensiune_sch.pdf

Adobe Portable Document Format - 145.18 kB - 10/06/2026 at 15:28

Preview

toner_B.Cu_1to1.pdf

Adobe Portable Document Format - 89.66 kB - 10/06/2026 at 15:27

Preview

Mask_jig.step

step - 27.03 kB - 10/06/2026 at 15:27

Download

Enclosure_base.step

step - 619.33 kB - 10/06/2026 at 15:26

Download

View all 6 files

  • 1
    Building instructions

    The steps below are a summary; the full guide with wiring table, drill sizes, printer settings and troubleshooting is instruction.md in the repository.

    1. Print the case. Base floor-down and cover upside down, both without supports. Check the banana socket thread and the switch hole against your parts before printing.
    2. Make the PCB. Print KiCAD/toner_B.Cu_1to1.pdf at 100 %, not mirrored, and check the 90 × 66 mm outline with a ruler. Transfer, etch and drill (0.8 / 1.0 / 1.1 / 2.2 / 3.2 mm). Optional: UV solder mask using the two mask copies on page 3 and the printed jig. Or order the board from the Gerbers.
    3. Solder the board, low parts first: resistors, D1 (band on the "K" pad), DIP-8 socket (leave U2 out), 100 nF caps, trimmer, 78L05 (pin 1 = OUTPUT, reversed vs a 7805), 10 µF caps (+ on the square pad), JST connectors, heatsink.
    4. Mount the LM317 on the heatsink with the insulating kit — its tab is live. Check with a multimeter that the heatsink and the tab read open, then solder the legs. Trim all leads to 3 mm or less.
    5. Fit the panel parts: ZK-4KX snaps into the front, then the switch, banana sockets and DC jack.
    6. Wire it: jack + → switch → ZK-4KX IN+ and board J1; jack − → ZK-4KX IN− and J1; ZK-4KX OUT+/OUT− → red/black sockets. Use 0.75–1 mm² wire for the power path. Never connect OUT− to IN−.
    7. Fix the LM35 flat against the ZK-4KX heatsink with thermal paste and Kapton, legs insulated, and wire it to J2. Measure the heatsink voltage first: it may not be at ground.
    8. First power-up, U2 out and fan unplugged: check about 5 V on U2 socket pin 8. Power off, insert U2, plug in the fan and the LM35. At room temperature the fan should stay still (about 1.25 V on it).
    9. Mount the board and fan: board on 6 mm standoffs with M3 screws, fan on the left wall, then glue the magnets into the base and cover (mind the polarity).
    10. Calibrate: measure U2 pin 7 and turn the trimmer until V_REF [mV] = 11 × T_start − 155 — for example 285 mV for a fan that starts at 40 °C. The trimmer can be reached through a hole in the lid.

View all instructions

Enjoy this project?

Share

Discussions

Does this project spark your interest?

Become a member to follow this project and never miss any updates