Skip to the content
PCBKitNew board
4 layers100 × 80 mmPhase1-module, the printed circuit board in 3D

A modular, rack-style DC power supply: up to 8 hot-pluggable 600 W buck modules on a shared DC input bus, coordinated by a central manager over CAN.

Size
100 × 80 mm
Copper layers
4
Thickness
1.6 mm
Parts
144
Nets
99
Pads
457
Tracks, vias
1,295, 352
Pours
26
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
13 Jul 2026
Updated
20 Oct 2026

Overview

Phase1-module is an open-source printed circuit board by udaravima, from the udaravima/Lab_Bench repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 100 × 80 mm with 144 parts on 99 nets, routed with 1,295 tracks and 352 vias.

It is built around the STM32G431CBT6, DAC80502DRXT and INA240A3D, with the LMR36015AQRNXRQ1, OPA2333HD and BAT54W among its other parts. Its parts include 53 capacitors, 44 resistors, 9 ICs, 9 transistors and 7 diodes. It belongs with the power boards and the STM32 boards of this library.

Main components

9

README

README.md

Lab_Bench — Multi-Channel Modular Power Supply

CI

A modular, rack-style DC power supply: up to 8 hot-pluggable 600 W buck modules on a shared DC input bus, coordinated by a central manager over CAN. Each channel is a self-contained analog CV/CC supply with bench-grade precision, usable for lab work, bulk DC power, and battery charging.

Headline specification

ParameterValue
Input bus24–30 V DC nominal (12 V tolerated, output ceiling drops with it)
Channels1–8, hot-pluggable, slot-addressed
Per-channel output0 … (V_in − 2 V), 0–30 A, 600 W envelope (first limit binds)
RegulationAnalog CV/CC (diode-OR min-selector), firmware never in the loop
Setpoint resolution~0.5 mV / ≤0.8 mA (16-bit DAC, per-module calibration)
Readback20-bit INA228, ±0.05 % class
CommsCAN 2.0B @ 500 kbit/s, heartbeat-supervised
ScalingChannels parallel into droop-share groups (firmware feature)
GroundingAll outputs share input ground — parallel OK, no series stacking
Global limitsManager-enforced total power budget + hardwired E-stop line

Documentation index

DocContents
docs/01-system-architecture.mdTopology, backplane, grounding, power budget
docs/02-module-design.md600 W module: power stage, CV/CC loop, sensing, MCU
docs/03-can-protocol.mdBus parameters, ID map, payloads, fault semantics
docs/04-protection-matrix.mdEvery fault: detection, response, latching, recovery
docs/05-build-plan.mdPhased build with exit criteria (150 W proto → 8-ch rack)
docs/06-phase1-circuit-design.mdWorked component values for the 150 W prototype
docs/07-module-firmware.mdSTM32G431 firmware architecture, pin map, bring-up
docs/08-phase2-circuit-design.mdWorked component values for the 600 W module (LM5143 + LM5069)
docs/09-phase3-circuit-design.mdBackplane + ESP32-S3 manager design (slots, E-stop chain, bus metering, UI)
docs/10-manager-firmware.mdManager firmware architecture (host-tested core + ESP-IDF shell)
docs/11-build-guide.mdHow to build one: ordering, assembly, firmware, first power-up
docs/12-phase1-bench-tests.mdPhase-1 bench test procedure against the exit criteria (+ results template)
hardware/SOURCING.mdLCSC-first part sourcing, prices, order-early list
HANDOVER.mdSession handover: state, decisions, gotchas, next steps
hardware/phase1-module/tools/README.mdSchematic/PCB generation + verification pipeline
hardware/phase1-module/lib/PARTS-TO-DOWNLOAD.mdExact orderables, package corrections, verified pricing

Repository layout

text
docs/                         Design docs 01..10, build guide 11, bench tests 12
  test-results/               Bench results (template + one file per board run)
hardware/common/              Shared generators, checkers, bom.py + lcsc_parts.py
hardware/phase1-module/       KiCad 7 project (schematics hand-owned; board generated + routed)
  tools/                      Generators + mechanical checkers (see README)
  lib/                        Vetted symbol + footprint libraries (shared by phase 2)
hardware/phase2-module/       KiCad 7 project — GENERATED (600 W module, docs/08)
hardware/phase3-backplane/    KiCad 7 project — GENERATED (8-slot backplane, docs/09)
hardware/phase3-manager/      KiCad 7 project — GENERATED (ESP32-S3 manager, docs/09)
firmware/
  common/labbench_can.h       CAN codec, shared module <-> manager
  module/core/                Portable control core (host-tested)
  module/                     STM32G431 bare-metal firmware (Makefile+arm-gcc)
  manager/core/               Portable manager core (host-tested)
  manager/idf/                ESP-IDF shell (needs IDF >= 5.1; unproven on silicon)
  tests/                      Host unit tests — `cd firmware/tests && make test`
  tools/lbcan.py              Bench helper: build cansend frames, decode candump

Status (2026-10-06)

Nothing has run on silicon yet; the first board to be built is the Phase-1 module. v0.1.0 was released from master on 2026-09-29.

AreaState
Design docsComplete: 01–10, plus the build guide (11) and Phase-1 bench test procedure (12)
Phase-1 module (150 W)100 × 80 mm, routed, 0 unconnected, 0 DRC errors, fab zip and CPL committed. OVP_TRIP routed to the MCU (PB4) for the firmware 0.2 OVP latch. L2 moved to a 5 × 5 mm land (2026-10-06). Next: order and run docs/12. The older 120 × 80 layout on branch phase1-120x80 has wrong L1/U7 lands: do not order it
Phase-2 module (600 W)130 × 90 mm, routed, 0 unconnected, 0 DRC errors, fab zip and CPL committed; pre-order review closed (HANDOVER); L2 moved to a 5 × 5 mm land (2026-10-06)
Phase-3 backplane330 × 100 mm, fab-ready; gated on the XT60 polarity buzz-out (MECHANICAL.md)
Phase-3 manager100 × 80 mm, routed, 0 unconnected, 0 DRC errors; L2 moved to a 5 × 5 mm land (2026-10-05)
Module firmwarev0.2 builds (~7 KB, bare-metal STM32G431) with the OCP backup and OVP latch; control core host-tested
Manager firmwarev0.2 builds on ESP-IDF 5.3.2; manager, SCPI and UI cores host-tested
BOM / sourcingLCSC numbers in the schematics and per-board BOM and CPL files (hardware/common/bom.py); no CHECK: rows left (closed 2026-10-06); INA228 stock is thin (5 at LCSC); generic R/C parts not yet numbered
CIGitHub Actions: host tests, module and manager firmware builds on every PR

Complete Phase-1 build (parts, five PCBs, stencil, shipping) ≈ US$100–125. HANDOVER.md has the detailed resume points. Work lands on the development branch through pull requests; master receives batched merges.

License

GPL-3.0 (see LICENSE).

Parts

144
QtyValueFootprintReferences
17100nCapacitor_SMD:C_0603_1608MetricC3, C5, C27, C28, C33, C34, C41, C43, C52, C62, C68, C69, C70, C71, C72, C73 +1
6100KResistor_SMD:R_0603_1608MetricR16, R18, R19, R22, R23, R52
52N7002Package_TO_SOT_SMD:SOT-23Q5, Q6, Q7, Q8, Q9
410K 1%Resistor_SMD:R_0603_1608MetricR47, R61, R67, R68
410u/50V X7RCapacitor_SMD:C_1210_3225MetricC20, C75, C76, C77
422u/25V X7RCapacitor_SMD:C_1210_3225MetricC23, C79, C80, C81
4BAT54WPackage_TO_SOT_SMD:SOT-323_SC-70D1, D2, D3, D4
4M3MountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
310KResistor_SMD:R_0603_1608MetricR43, R64, R65
31nCapacitor_SMD:C_0603_1608MetricC31, C32, C44
3FiducialFiducial:Fiducial_1mm_Mask2mmFID1, FID2, FID3
2100K 1%Resistor_SMD:R_0603_1608MetricR20, R50
210K 0.1%Resistor_SMD:R_0603_1608MetricR3, R6
210K B3950Resistor_SMD:R_0603_1608MetricRT1, RT2
218pCapacitor_SMD:C_0603_1608MetricC66, C67
21KResistor_SMD:R_0603_1608MetricR31, R66
21uCapacitor_SMD:C_0603_1608MetricC42, C53
2220u/25V polyCapacitor_SMD:CP_Elec_8x11.9C22, C78
222u/16VCapacitor_SMD:C_1210_3225MetricC54, C55
23.9KResistor_SMD:R_0603_1608MetricR5, R8
24.7KResistor_SMD:R_0603_1608MetricR62, R63
24.7u/50VCapacitor_SMD:C_1210_3225MetricC50, C51
260V NFETlabbench:PowerFET_SON5x6_GDSQ3, Q4
2CSD18563Q5Alabbench:PowerFET_SON5x6_GDSQ1, Q2
11.0KResistor_SMD:R_0603_1608MetricR25
11.0K 0.1%Resistor_SMD:R_0603_1608MetricR2
110.0K 0.1%Resistor_SMD:R_0603_1608MetricR33
110A bladeFuse:Fuse_Blade_Mini_directSolderF1
110nCapacitor_SMD:C_0603_1608MetricC1
110u MWSA1707S-100/XAL1350labbench:L_1707_XAL1510L1
110u/16VCapacitor_SMD:C_1210_3225MetricC56
1120pCapacitor_SMD:C_0603_1608MetricC25
113K 1%Resistor_SMD:R_0603_1608MetricR21
1150nCapacitor_SMD:C_0603_1608MetricC4
1158K 1%Resistor_SMD:R_0603_1608MetricR45
115KResistor_SMD:R_0603_1608MetricR7
115pCapacitor_SMD:C_0603_1608MetricC19
11N4148WDiode_SMD:D_SOD-323D6
11u VDDACapacitor_SMD:C_0603_1608MetricC65
12.2K 1W preloadResistor_SMD:R_2512_6332MetricR27
12.2uCapacitor_SMD:C_0603_1608MetricC29
1200K 1%Resistor_SMD:R_0603_1608MetricR60
120K 1%Resistor_SMD:R_0603_1608MetricR46
1220u/50VCapacitor_SMD:CP_Elec_10x10.5C21
122nCapacitor_SMD:C_0603_1608MetricC2
122u/10VCapacitor_SMD:C_1210_3225MetricC57
124.9K 1%Resistor_SMD:R_0603_1608MetricR51
125.5K 0.1%Resistor_SMD:R_0603_1608MetricR1
128.7K 1%Resistor_SMD:R_0603_1608MetricR26
12m/1W KelvinResistor_SMD:R_2512_6332MetricR30
13.3nCapacitor_SMD:C_0603_1608MetricC26
131.6K 1%Resistor_SMD:R_0603_1608MetricR48
133KResistor_SMD:R_0603_1608MetricR4
133u/1.2AInductor_SMD:L_Changjiang_FNR5040SL2
1365 1%Resistor_SMD:R_0603_1608MetricR28
14.7Resistor_SMD:R_0603_1608MetricR29
14.7uCapacitor_SMD:C_0603_1608MetricC64
147KResistor_SMD:R_0603_1608MetricR44
147nCapacitor_SMD:C_0603_1608MetricC18
169.8K 0.1%Resistor_SMD:R_0603_1608MetricR32
18.2KResistor_SMD:R_0603_1608MetricR24
18.2nCapacitor_SMD:C_0603_1608MetricC24
18MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1AGND-PGND tieNetTie:NetTie-2_SMD_Pad0.5mmNT1
1BACKPLANEConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ5
1DAC80502DRXTlabbench:DAC80502_DRX_WSON-10U1
1DNPCapacitor_SMD:C_0603_1608MetricC17
1DNP snubResistor_SMD:R_0603_1608MetricR17
1FANConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ6
1INA228Package_SO:VSSOP-10_3x3mm_P0.5mmU5
1INA240A3Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU4
1LM5145RGYRlabbench:LM5145_RGY0020BU3
1LMR36015AQRNXRQ1labbench:LMR36015_RNX_VQFN-HR-12U8
1LTC7004Package_SO:MSOP-10-1EP_3x3mm_P0.5mm_EP1.68x1.88mmU6
1NCP1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U9
1OPA2333Package_SO:VSSOP-8_3.0x3.0mm_P0.65mmU2
1OUTPUTTerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-2-5.0-H_1x02_P5.00mm_HorizontalJ4
1SMBJ33ADiode_SMD:D_SMBD5
1STATUSLED_SMD:LED_0603_1608MetricD7
1STM32G431CBT6Package_QFP:LQFP-48_7x7mm_P0.5mmU10

The 139 most common of 144 parts.

Questions

How big is the Phase1-module PCB?

It measures 100 × 80 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Phase1-module use?

144 parts, built around the STM32G431CBT6, DAC80502DRXT, INA240A3D and LMR36015AQRNXRQ1. 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 Phase1-module KiCad files?

From the udaravima/Lab_Bench repository on GitHub, at the commit this page was made from: the board is hardware/phase1-module/phase1-module.kicad_pcb and its schematic hardware/phase1-module/aux-rails.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Phase1-module design in my own project?

Its repository publishes it under the GPL-3.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).

More from udaravima/Lab_Bench

3
  • 4 layers130 × 90 mmPhase2-module, the printed circuit board in 3D

    Phase2-module

    udaravima/Lab_Bench

    A modular, rack-style DC power supply: up to 8 hot-pluggable 600 W buck modules on a shared DC input bus, coordinated by a central manager over CAN.

    180 parts1GPL-3.0
  • 2 layers100 × 80 mmPhase3-manager, the printed circuit board in 3D

    Phase3-manager

    udaravima/Lab_Bench

    A modular, rack-style DC power supply: up to 8 hot-pluggable 600 W buck modules on a shared DC input bus, coordinated by a central manager over CAN.

    87 parts1GPL-3.0
  • 2 layers330 × 100 mmPhase3-backplane, the printed circuit board in 3D

    Phase3-backplane

    udaravima/Lab_Bench

    A modular, rack-style DC power supply: up to 8 hot-pluggable 600 W buck modules on a shared DC input bus, coordinated by a central manager over CAN.

    39 parts1GPL-3.0

Similar boards

  • 4 layers72.5 × 34 mmXr25, the printed circuit board in 3D

    Xr25

    KreativeName1/Renault-PiDash

    digital gauge pods for the Renault 19 and other cars

    47 partsMIT
  • 2 layers130 × 80 mmSmu main 1, the printed circuit board in 3D

    Smu main 1

    jaromir-sukuba/J-SMU

    DIY source-measure unit

    210 parts244
  • 6 layers237.9 × 80.5 mmXG Mobile Dock, the printed circuit board in 3D

    XG Mobile Dock

    osy/XG_Mobile_Station

    Open source eGPU dock for ROG Ally and ROG Flow

    300 parts712CC-BY-4.0
  • 4 layers100 × 80 mmPd brick, the printed circuit board in 3D

    Pd brick

    enkhbold470/pd-brick

    USB-C Power Delivery bench supply: STUSB4500 sink, LM5176 buck-boost, INA228 monitor, 1.2-22 V set over I2C by an ESP32-S3. 4-layer KiCad 10 board.

    120 partsCERN-OHL-S-2.0
  • 2 layers95 × 78 mmE Bike, the printed circuit board in 3D

    E Bike

    zachleedogg/E_Bike

    Ebike PAS controller

    71 parts6CC0-1.0
  • 4 layers113 × 65.6 mmMicroMotor, the printed circuit board in 3D

    MicroMotor

    kyleRhess/MicroMotor

    165 parts
  • 4 layers127.5 × 145 mmSkidSteer PCB, the printed circuit board in 3D

    SkidSteer PCB

    raitzjm/SkidSteer_PCB

    PCB for skid steer spraying rover project for KSU Precision Ag Lab

    153 parts
  • 4 layers282 × 112 mmVfd, the printed circuit board in 3D

    Vfd

    SimonSchaeff/variable-frequency-drive-induction-motor

    This repository contains the hardware and software design files for a frequency inverter for asynchronous motors up to 3 kW, developed as part of a university project at Munich University of Applied Sciences.

    117 parts