Skip to the content
PCBKitNew board
4 layers100 × 80 mmPd brick, the printed circuit board in 3D

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.

Size
100 × 80 mm
Copper layers
4
Thickness
1.6 mm
Parts
120
Nets
104
Pads
500
Tracks, vias
908, 208
Pours
9
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
2 Oct 2026
Updated
2 Oct 2026

Overview

Pd brick is an open-source printed circuit board by enkhbold470, from the enkhbold470/pd-brick repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 4-layer board of 100 × 80 mm with 120 parts on 104 nets, routed with 908 tracks and 208 vias.

It is built around the ESP32-S3-WROOM-1-N8R8, LM5176PWPR and MT3608, with the USBLC6-2SC6, CL31A106KBHNNNE and CC0603KRX7R9BB104 among its other parts. Its parts include 42 resistors, 41 capacitors, 9 diodes, 8 ICs and 7 transistors. It belongs with the power boards and the ESP32 boards of this library.

Main components

12

README

README.md

PD Brick

A USB-C Power Delivery bench supply: STUSB4500 sink, LM5176 buck-boost, 1.2-22 V set over I2C by an ESP32-S3.

Part of the KiCad projects portfolio. Gerbers are in fab/gerbers/ and zipped in fab/.

PD Brick, raytraced in KiCad

LayersSizePartsNetsConnections routedViasERC errorsDRC errors / unconnected / parity
4100 x 80 mm12071283 -> 0 open20800 / 0 / 0

Not fabricated, assembled or powered. Every number on this page is measured by KiCad 10 on the files in this folder; the full measurements are in report.json.

KiCad projectkicad/
Gerbers, BOM, CPL, STEP, schematic PDFfab/
Renderstop, bottom
Design process, every step as KiCad rendered itmedia/design-process.mp4

PD Brick design process, sped up

PD Brick is a USB-C Power Delivery programmable bench supply with a 1.2-22 V output. It was designed with the HeyPCB method on KiCad 10. A headless pipeline (KiCad 10.0.6, Freerouting 2.4.1) took the brief in board.json through schematic, placement, routing, pours, DRC and fab outputs.

This board has not been fabricated, assembled or powered. There is no firmware. On the final run it passes these checks:

  • ERC and the netlist round trip;
  • routing at 0 open;
  • DRC with 0 errors, 0 unconnected and 0 schematic-parity rows;
  • DFM with 0 errors.

The fab gate is ready. Everything under "Check before ordering" is a datasheet calculation or a layout measurement, not a bench result.

What it is

  • Input: USB-C, USB PD 3.0 sink up to 20 V (ST STUSB4500). The controller closes an AOD4185 P-FET between the receptacle and the power stage. There is a 24 V TVS on the receptacle.

  • Converter: TI LM5176 4-switch buck-boost at about 390 kHz, with:

    • four TI CSD18563Q5A 60 V FETs;
    • a Coilcraft XAL7070 4.7 uH / 15.2 A inductor;
    • a 10 mOhm low-side current-sense resistor;
    • 220 uF + 4 x 10 uF on each side.

    The output is about 1.2-22 V.

  • Setpoint: a Microchip MCP4725 12-bit I2C DAC injects into the LM5176 feedback node through 15k. A higher code gives a lower voltage.

  • Monitor: a TI INA228 (20-bit V / I / power / energy) on a 10 mOhm high-side output shunt. It shares the LM5176's average-current-limit filter on the same shunt (50 mV, about 5 A).

  • Output enable: one CSD18563Q5A high-side N-FET. Its gate is pulled up from a 25.6 V rail made by an MT3608 boost, Vgs is clamped at 12 V, and a 2N7002 pulls the gate down. The output is off from reset.

  • Output: Phoenix MKDS 1,5/2-5,08 screw terminal (17.5 A), with an SMBJ24A TVS and 1 uF across it.

  • MCU: ESP32-S3-WROOM-1-N8R8, from the HeyPCB block esp32_s3_minimal:

    • Wi-Fi for remote control;
    • native USB on the same USB-C port (USBLC6-2SC6 on D+/D-, referenced to 3V3);
    • BOOT and RESET buttons.
  • 3.3 V: Diodes AP63203 buck from VBUS (3.8-32 V in). An LDO would burn up to 8 W from a 20 V contract.

  • UI:

    • a 1x4 0.1" header for a 1.3" I2C OLED (GND, VCC, SCL, SDA), with the bus pull-ups;
    • an Alps EC11E push-button encoder;
    • PWR, PD and OUT LEDs.
  • Board: 100 x 80 mm, four M3 holes, 4 layers:

    • F.Cu;
    • In1, a GND plane;
    • In2, routing with a 3V3 pour;
    • B.Cu.

Chip substitutions

Asked forFittedWhy
TPS55289 (or similar) I2C buck-boostLM5176 controller + 4 x CSD18563Q5A + MCP4725 DACKiCad 10 has no TPS55289 (or TPS552xx) symbol, and the live JLC lookup returned no TPS55289 row. The LM5176 (Regulator_Switching:LM5176PWP, LCSC C442493) has no I2C, so the DAC programs its FB node.
STUSB4500, AP33772 or CH224KSTUSB4500All three have KiCad 10 symbols. The AP33772 returned no JLC row. The CH224K is pin-strapped, with no I2C. The STUSB4500 (C2678061) renegotiates over I2C at 0x28.
INA228 (or INA226)INA228Sensor_Energy:INA228, C2887910.
Load switch or MOSFETone CSD18563Q5A high-side N-FET + MT3608 gate railNo KiCad 10 load switch covers 1-22 V at several amps. A P-FET cannot turn on at a 1 V output. A low-side switch is bypassed by any second ground (a scope, or a USB-powered load).
(VBUS switch for VBUS_EN_SNK)AOD4185 on the generic Transistor_FET:Q_PMOS_GDS symbolKiCad 10 has no AOD4185 symbol. Q_PMOS_GDS (1 G, 2 D, 3 S) is this part's TO-252 land (tab = drain).
(power FETs)CSD18563Q5A, 5 x 6 mmThe 3.3 x 3.3 mm CSD18543Q3A was tried first. Its KiCad VSON land puts the gate pad 0.14 mm from a source pad, so DRC fails at 0.2 mm on the footprint itself.

How it is wired

text
USB-C -VBUS-> AOD4185 (STUSB4500 VBUS_EN_SNK) -VIN-> LM5176 buck-boost -VOUT-> 10 mOhm shunt -VOUT_SH-> N-FET -OUT_P-> terminal
   |                                                ^ FB <- 15k <- MCP4725 (I2C)   |  ISNS 100R/100R/1uF -> LM5176 + INA228
   +-VBUS-> AP63203 -3V3-> ESP32-S3, STUSB4500 I2C side, INA228, DAC, OLED, encoder          gate <- 1M <- 25.6 V (MT3608 off VIN)
  • Setting the output. FB has 100k from VOUT and 4.7k to GND, and the DAC drives FB through 15k:

    VOUT = 0.8 V x (1 + 100/4.7 + 100/15) - VDAC x 100/15

    That is about 23.2 V at code 0 and 1.2 V at full scale. Firmware clamps the code to 1.2-22 V.

  • Order at power-up.

    1. The STUSB4500 closes the VBUS switch at attach.
    2. The LM5176 stays off: EN has a 100k pull-down.
    3. The output stays off: OUT_OFF has a 22k pull-up.
    4. Firmware writes the DAC, sets BB_EN high, then pulls OUT_OFF low.
  • Wide power nets. No 1.2 mm power track lands on an IC pin. On the routed board, the seven power-path nets reach only FETs, the inductor, passives, the TVS, the zener and the terminal. Every IC pin on a power net hangs off it through a resistor, placed at the power node (an at target in the brief):

    • LM5176 VIN, VISNS, VOSNS, SW1/SW2, CS/CSG and ISNS;
    • STUSB4500 VDD;
    • INA228 VBUS;
    • MT3608 IN.
  • I2C (IO38 SDA, IO39 SCL, 4.7k pull-ups):

    • STUSB4500 at 0x28;
    • INA228 at 0x40;
    • MCP4725 at 0x60;
    • the OLED module at its own address.
  • ESP32-S3 pins. All GPIOs are on the module's right column and bottom row, which face the board:

    PinFunction
    IO42 / IO41 / IO40encoder A / B / switch
    IO1 / IO2PD / OUT LEDs
    IO10PD_RST
    IO11PD_ALERT
    IO12BB_EN
    IO14OUT_OFF
    IO19 / IO20USB D- / D+
    IO0BOOT

    The LM5176 PGOOD, the INA228 ALERT and a VIN divider were cut to shorten routing; the INA228 and STUSB4500 report the same information over I2C.

Measured (full run of 2026-10-01)

Gate numbers come from report.json. Rows marked "on the board" were measured on kicad/pd_brick.kicad_pcb with KiCad's Python (pcbnew, read-only scripts). Current ratings use ipc2221_amps from the pipeline (IPC-2221, 1 oz outer, 0.5 oz inner). A path's rating is the total current at which its busiest segment reaches its own rating at a 20 C rise. The share each segment carries comes from solving the net's copper as a resistor network, with the source pads tied (ideal contacts).

GateResult
Composition18 block instances, 16 distinct blocks (11 written for this board, 5 reused) → 120 footprints, 71 nets
Part binding116 of 116 BOM parts bound to a pinned LCSC table, 0 unsourced, 0 conflicts. H1-H4 are drilled M3 holes, kept out of the BOM. 23 distinct Extended parts, about $69 in JLC loading fees. 1 warning: the 10k 0603 R9 (C25804, the ESP32 EN pull-up) had 0 stock at its 2026-06-23 snapshot
ERC (kicad-cli sch erc --severity-all)0 errors, 0 warnings
Netlist round tripidentical, 71 nets
Freerouting, rung 1, fanout on (kept)283 → 0 open in 160.9 s, with no last-mile help. DRC score 0, 73 vias
Freerouting, rung 1, fanout off (for comparison)283 → 1 open (VOUT, R17.1 to C29.1) in 38.4 s. The last-mile router found no path, so this rung was not kept
Copper908 tracks, 73 routing vias, 2856.2 mm of track (F.Cu 1624.4, In2 1030.5, B.Cu 201.3). No segment was widened, kept narrow or raised: every segment is at its class width (also checked on the board)
VBUS input (on the board)0.6 mm, all on F.Cu, no vias. Each receptacle VBUS pad pair has its own track to Q1's source pad: 8.6 mm from A4/B9 and 7.5 mm from A9/B4. No segment is shared; the two tracks meet only inside the source pad. They split the current 45 / 55. Path rating 4.07 A at a 20 C rise (3.0 A at 10 C)
Power path (on the board)VIN, BB_SW1, BB_SW2, BB_CS, VOUT, VOUT_SH and OUT_P run only on F.Cu at 1.2 mm, with no vias and no necks. OUT_P's branch to the output TVS is F.Cu too. VIN from Q1 to the buck high-side FET, and the output path (VOUT, VOUT_SH, OUT_P) to the terminal, each rate 3.70 A at a 20 C rise
3.3 V buck (on the board)Switch node 0.8 mm on F.Cu, no vias: 1.6 mm from the AP63203's SW pin to the inductor pad, 5.1 mm with the branch to the bootstrap cap. Rated 2.76 A at a 20 C rise. 3V3 is 0.3 mm everywhere (271.5 mm: F.Cu 87.9, In2 169.1, B.Cu 14.5, 10 vias), with the In2 3V3 pour around it
Pours (only after a measured 0 open)GND on F.Cu, B.Cu and In1; 3V3 on In2. 144 stitching vias, 0 island-repair vias, still 0 open. 217 vias in all
DRC (kicad-cli pcb drc --severity-all --schematic-parity)fresh: 0 errors, 3 warnings, 0 unconnected, 0 parity
DFM (jlcpcb_4layer)0 errors, 1 warning: 338 stock-footprint silk strokes at 0.12 mm, which the fab prints at its 0.15 mm minimum
Fab gateready, no blockers. Outputs: gerbers for four copper layers (the gerber job says 4 layers, 1.6 mm), drill, BOM, JLC placement file (8 rotations corrected), position file, schematic PDF, STEP
  • The 3 DRC warnings are lib_footprint_mismatch on three parts: the USB-C receptacle (J1), the terminal (J2) and the ESP32-S3 module (U4).
    • Silk is clipped at the board edge, so each has fewer silk shapes than its library copy: 2 of 5, 6 of 9 and 4 of 8 (on the board).
    • J1's shield pads are also set to join the GND pour solid.
  • Hole spacing. The closest via holes on different nets are 0.53 mm apart (I2C_SCL and J1_PD_DISCH), against the 0.5 mm board rule (on the board).
  • Silk (from report.json, texts read back on the board).
    • All 7 words fit: PD IN, PWR, PD, OUT, BOOT, RST and SET.
    • OUT+ and OUT- sit beside the terminal's two pins.
    • The OLED header's pin names (GND, VCC, SCL, SDA) are printed on both faces: 8 labels.
    • All 4 back title lines fit.
    • 84 designators were seated and 28 hidden; parts that carry a word hide theirs. 10 silk shapes were clipped at the board edge, and 9 stitching vias gave way to text.
  • Media. Render and video ran in the same full run as the gates. The design-process video (media/design-process.mp4) is 168.6 s long (ffprobe on the run's own MP4), made from 253 stills. It ends on the fab card.
  • Repeatability. Two full runs of the final brief (one --no-media, then the full run with media) routed identically: 908 tracks, 73 vias, 2856.2 mm, and the same VBUS feeds and split. A brief change is a new sample, though. Adding one more F.Cu keep-out (under the receptacle body) routed the VBUS feeds into one shared 0.6 mm track again (see below). After the final run, only why texts in board.json were corrected; nothing they feed changed.

What changed along the way (each measured on this board)

  • The schematic packer. It could not fit one 52-part buck-boost block on A1 (993 mm wide), so the block was split into a controller block and a power-stage block.

  • Sense resistors at the power nodes. Left to the shelf placer, they landed under the controller. Every 1.5 mm power track then had to cross the controller's satellites, and Freerouting stalled at 22 unrouted.

  • The output switch. A back-to-back (source-to-source) pair was tried first. With the S-S-S-G pinout, one gate always sits across the wide source-to-source track, and that gate net was left open in four of six rebuilds. The board now uses a single FET (see "Check before ordering").

  • An early 0-open route ran the output (OUT_P) through one via and 17.9 mm of In2: about 1.3 A on 0.5 oz inner copper. Placing the terminal pin level with the FET drain moved it to F.Cu. On the final board, OUT_P has no inner-layer copper at all.

  • The VBUS input. On the previous build, the last 7.8 mm of VBUS into Q1 was a single 0.6 mm track carrying all the input current. That is 2.24 A at a 20 C rise, and about a 39 C rise at 3 A. Freerouting had left the A9/B4 pad pair unrouted because its CC2 fan-out via sat too close to that pad's exit. The last-mile router then joined that pair onto the other pair's track. A wider class cannot help: the receptacle's VBUS pads are 0.6 mm wide, 0.2 mm from the GND pad beside them, and Freerouting runs with neckdown off. What fixed it, over four --no-media runs:

    • Q1 is locked with its source pad level with the middle of the two VBUS pad pairs, and its gate network is pinned above it, out of the way.
    • The VBUS class clearance went from 0.2 mm to 0.15 mm, the board's. At 0.2 mm, a 0.6 mm track had a 0.05 mm window to leave the A4/B9 pad, and Freerouting reported J1-B9 -> J1-A9 unrouted.
    • board.keepouts add:
      • an F.Cu track ban above the A4/B9 feed and a via ban along it;
      • an F.Cu track ban box and wedge between the two feeds, up to the source pad;
      • a via guard beside the CC2 pad.
    • The first try used via-free corridors along both feeds. Both pairs still merged into one 6.2 mm detour. The width floor also kept two 0.45 mm VBUS stubs that Freerouting laid at the pads narrow, because it never widens a segment whose midpoint lies in a via keep-out.
  • The 3.3 V buck. Before, the switch node was a 0.15 mm track (about 0.8 A), and the output caps sat on the far side of the IC from the inductor. Now the IC, inductor and four caps are locked as one cell:

    • the input cap sits under the IN and GND pins;
    • the inductor sits against the SW pin;
    • the bootstrap cap sits above BST;
    • both output caps sit under the inductor's 3V3 pad, with their GND pads beside the input cap's.

    The switch node has its own 0.8 mm class and 3V3 a 0.3 mm class.

  • Silk. On the previous build, 4 of 7 words fit (BOOT, RST and the OUT LED's word did not), the terminal had no + / - mark, and 0 of 8 OLED pin labels fit. The fixes were all in the brief:

    • BOOT and RESET. The module's courtyard box, antenna keep-out included, spans x -4 to 44 mm and y down to 20.3 mm. The silk stage keeps words off every courtyard box, so the two buttons moved out of it.
    • LEDs. They are spaced 3.75 mm apart, each with its resistor below it.
    • OLED header. It now stands vertical, so its pin names land beside the pins.
    • Terminal marks. They come from a silk.switches entry. silk.polarity tries spots 1.9-2.3 mm from each pin, and every one of them hits the terminal's own 2.6 mm pads or its body outline.
  • Rules.

    • The power class went from 1.5 mm to 1.2 mm.
    • Default track and clearance went from 0.2 mm to 0.15 mm.
    • Default vias went from 0.6/0.3 to 0.45/0.2 mm.

    All are inside the DFM profile.

Check before ordering

Current

  • The input is the limit, not the converter. Output power can never exceed the USB PD contract, less conversion loss.
    • 20 V / 3 A (60 W) gives roughly 50-55 W out.
    • A 5 V-only source gives about 13 W.
  • Out of the box, the STUSB4500 asks for only 20 V / 1 A, then 15 V / 1.5 A, then 5 V (default NVM, datasheet DS12499 Table 18). That is a 20 W ceiling. Firmware must rewrite the PDO currents over I2C and renegotiate before drawing more.
  • The USB-C receptacle. The HRO TYPE-C-31-M-12 drawing rates the contact set 5 A / 20 V. Above 3 A, USB PD also needs a 5 A e-marked cable and a source that offers it.
  • The VBUS input is rated for a 3 A contract, with two 0.6 mm feeds in parallel.
    • Each receptacle VBUS pad pair has its own 0.6 mm F.Cu track to Q1's source pad: 8.6 mm from A4/B9 and 7.5 mm from A9/B4. There are no vias and no shared segment (measured above).
    • With the copper alone deciding, the shorter feed takes 55%. At 3 A that is 1.65 A on a 0.6 mm track, about a 10 C rise. The other feed takes 1.35 A, about 6 C. The pair is rated 4.07 A at a 20 C rise, and 3.0 A at 10 C.
    • What is left:
      • 0.6 mm is the narrowest point, and it is set by the receptacle. Its VBUS pads are themselves 0.6 mm wide, and no wider track can enter them.
      • The split assumes the plug shares current between the two pad pairs as the copper does. If contact resistance pushed everything through one pair, a single 0.6 mm track is 2.24 A at a 20 C rise.
      • It is not sized for a 5 A contract.
    • After Q1, VIN is 1.2 mm on F.Cu to the buck-boost: 3.70 A at a 20 C rise.
  • Output current the copper supports: about 3.5 A. The ratings below use IPC-2221 (I = k x dT^0.44 x A^0.725) on 1 oz outer copper.
    • The load path is 1.2 mm on F.Cu end to end (measured above). That is about 2.7 A at a 10 C rise and 3.7 A at 20 C. The power class's own 3.5 A budget is about an 18 C rise.
    • The LM5176's hardware average-current limit (4.3-5.7 A, below) is higher than that. At 5 A the formula gives about a 40 C rise on these tracks. Hold the output at 3.5 A or less in firmware, using the INA228.
    • In boost mode the inductor tracks (BB_SW1, BB_SW2, BB_CS) carry the input current instead, which the PD contract caps.
  • Inner layers carry no load current. On the final board, none of VBUS, VIN, BB_SW1, BB_SW2, BB_CS, VOUT, VOUT_SH or OUT_P has inner-layer copper or a via.
  • The GND return relies on the pours and stitching vias, not on the 0.15 mm routed GND tracks.
  • 3.3 V rail.
    • The AP63203's switch node is 0.8 mm on F.Cu, 1.6 mm from the SW pin to the inductor pad. It is rated 2.76 A at a 20 C rise, against the regulator's 2 A (about a 10 C rise at 2 A).
    • The input cap's VBUS pad is 1.6 mm of 0.6 mm track from the IN pin. Its GND pad sits under the IC's GND pin. The F.Cu GND pour joins the IC's GND pin, that pad and both output caps' GND pads along straight lines (on the board).
    • The output caps are 3.2 and 5.2 mm of 0.3 mm track from the inductor's 3V3 pad (pad centre to pad centre).
    • The 3V3 rail is 0.3 mm everywhere: about 1.4 A at a 20 C rise on F.Cu. From the inductor to the module's 3V3 pin it runs 30.1 mm (15.9 mm F.Cu, 14.2 mm In2 inside the In2 3V3 pour, 2 vias).
    • The bootstrap trace is a default 0.15 mm track, 2.2 mm long.
  • Hardware current limits.
    • The LM5176 ISNS loop limits the average output current at 50 mV (43-57) across the 10 mOhm shunt: 4.3-5.7 A. It is a slow loop acting through soft-start, not a programmable bench constant-current mode. A real CC mode needs firmware on the INA228.
    • The cycle-by-cycle limits over the 10 mOhm sense resistor are 80 mV valley (buck) and 120 mV, 140 mV maximum, peak (boost): 8 A and 12-14 A of inductor current. The XAL7070-472 saturates at 15.2 A.
  • No reverse blocking at the output. The single N-FET's body diode conducts from the terminal into the converter's output capacitors when an external source sits above the set voltage. Do not leave a battery on the terminal while the supply is off or set lower.

Thermal

  • LM5176 VCC regulator. BIAS is grounded here; the datasheet doesn't say how to tie an unused BIAS, so confirm with TI. Gate drive is roughly 2-4 FETs x 15 nC x 390 kHz, 12-23 mA, all drawn from VIN through the internal regulator: up to about 0.3 W in the controller at a 20 V contract.
  • FETs. CSD18563Q5A is 5.7 mOhm at Vgs 10 V (JLC listing).
    • The LM5176 drives about 7.35 V of gate. At a 5 V contract VCC follows VIN, which gives about 4.9 V of gate drive.
    • At 4 A each conducting FET dissipates roughly 0.1-0.15 W plus switching loss.
    • The drain pads sit on F.Cu inside the GND pours, with no vias under them. None of the power-path nets has a via (on the board).
  • Inductor. XAL7070-472MEC, 14.26 mOhm DCR (JLC listing): about 0.23 W at 4 A.
  • Shunts. Two 10 mOhm 1 W 1206 parts: 0.16 W each at 4 A DC.
  • Output switch at high output voltage. The gate rail is 25.6 V, so Vgs is only about 3.6 V at 22 V out, well short of the 10 V Rds(on) condition. For full current, keep the output at or below about 20 V (5.6 V Vgs), or raise the MT3608 rail (28 V maximum).
  • Bulk capacitors. The two 220 uF 50 V electrolytics (MA50V220M10x10) came from a live JLC lookup that gives no ESR or ripple-current rating. Check them against about 2 A RMS on the input side at full load.

Layout and design items to verify

  • Gate-drive and feedback lengths. The controller sits below the power stage. Measured on the board, pin to pin:

    • high-side gates: BB_HDRV1 is 31.8 mm (29.1 mm on In2, 2 vias), and BB_HDRV2 is 29.0 mm (25.2 mm on In2, 2 vias);
    • low-side gates: BB_LDRV1 is 20.5 mm (14.0 mm on In2, 2 vias), and BB_LDRV2 is 23.5 mm, all on F.Cu;
    • the FB node runs 41.6 mm from the top divider resistor at the output caps (R17) to the IC. 33.0 mm of that is on In2, through 2 vias.

    Both work against switching performance and noise. A hand-tuned layout would put the controller beside the FETs.

  • Output TVS. D6 reaches the terminal pin through 10.0 mm of F.Cu, with no via. A TVS clamps best right at the terminal. The 1 uF (C38) is 4.2 mm away on F.Cu.

  • VBUS under the receptacle. The 3.3 V buck's VBUS feed runs on F.Cu under the USB-C receptacle's body (a straight 11.4 mm along x = 4.67 mm), with only solder mask between it and the receptacle's GND shell. It carries only the buck's input current. A brief keep-out there was tried, and it merged the two main VBUS feeds into one shared 0.6 mm track again (2.24 A), so it was dropped. Check the receptacle's seating, or move that feed by hand, before ordering.

  • Compensation (33k + 10 nF, 100 pF across) is a first-pass calculation for about 4-5 kHz crossover with the 220 uF output bulk. Check the loop on the bench with load steps at 5, 9, 15 and 20 V inputs.

  • Low outputs from high inputs. 1.2 V out from 20 V in is a 6 % duty cycle, about 150 ns on-time at 390 kHz. The LM5176 datasheet gives no minimum on-time. Firmware should renegotiate the lowest PDO that covers the setpoint.

  • VISNS is taken from the LM5176's filtered VIN-pin node (10 ohm + 100 nF), not from VIN itself. The 10 ohm drop at the VIN-pin current (tens of mV) offsets the buck/boost mode-transition sense slightly.

  • Power-up state of the DAC. The MCP4725 powers up at its EEPROM code (factory mid-scale, about 12 V). Write the lowest-output code to EEPROM on first boot, and enable the converter only after writing the DAC.

  • VBUS switch at attach. With default NVM, the STUSB4500 closes the P-FET at a 5 V attach, before any PD contract, into about 260 uF of input capacitance. A 100 ohm + 100 nF gate-drain network slows the turn-on; the inrush has not been measured.

  • OLED pin order. The header is GND, VCC, SCL, SDA, and the silk now prints those names beside the pins. Some 1.3" modules swap GND and VCC, so match the module to the silk.

  • Encoder variant. EC11E15244G1 was picked for the EC11E-Switch footprint from a live lookup. Confirm it has the push switch and the detent count you want.

  • Ground is shared. OUT- is board GND, which is the USB source's ground. The output is not isolated.

  • USB D+/D-. Both are 0.15 mm tracks with no necks.

    • D+ runs 22.9 mm from the receptacle to the module, 20.4 mm of it on In2, through 2 vias. Its branch to the ESD clamp adds 13.4 mm on B.Cu, for 3 vias on the net.
    • D- runs 24.4 mm, 21.7 mm of it on In2, through 2 vias.
    • There is no impedance control. That is fine for the ESP32-S3's Full Speed USB.
  • Part numbers.

    • Every row added for this board came from a live jlcsearch lookup on 2026-09-30, with that snapshot date and no manufacturer column (the mirror returns none).
    • Low stock at that lookup: CSD18563Q5A (5 per board) 2319, INA228AIDGSR 1046, XAL7070-472MEC 752.
    • Stock and Basic/Extended class go stale. Re-check before ordering.

Files

  • board.json is the brief. It holds the blocks, the nets, the placement, the keep-outs, the silk and these net classes:
    • PWR_HI, 1.2 mm / 3.5 A;
    • VBUS_IN, 0.6 mm / 3 A;
    • BUCK_SW, 0.8 mm / 2 A;
    • RAIL_3V3, 0.3 mm;
    • GATEDRV, 0.3 mm;
    • ANALOG, 0.25 mm.
  • report.json is the run's report. Every gate number above comes from it.
  • kicad/ is the KiCad 10 project (pd_brick.kicad_pro, pd_brick.kicad_sch, pd_brick.kicad_pcb) with its 3D models/.
  • fab/ holds the fab outputs:
    • pd_brick_gerbers.zip: four copper layers, mask, paste, silk, outline, drill and the gerber job file;
    • pd_brick_bom.csv: 57 lines, 116 parts, each with an LCSC number;
    • pd_brick_cpl_jlc.csv: 113 SMD placements for JLCPCB. J2, J3 and SW3 are through-hole and appear only in the BOM;
    • pd_brick_pos.csv: KiCad's position file;
    • pd_brick_schematic.pdf;
    • pd_brick.step.
  • media/ holds the renders (hero.png, top.png, bottom.png) and the design-process video (design-process.mp4, design-process.gif).

License

CERN-OHL-S v2.

Parts

120
QtyValueFootprintReferences
910uFCapacitor_SMD:C_1206_3216MetricC6, C24, C25, C26, C27, C29, C30, C31, C32
8100nFCapacitor_SMD:C_0603_1608MetricC5, C7, C10, C13, C15, C16, C34, C35
84.7kResistor_SMD:R_0603_1608MetricR7, R18, R30, R35, R36, R37, R38, R39
61uFCapacitor_SMD:C_0603_1608MetricC1, C2, C3, C4, C12, C22
510Resistor_SMD:R_0603_1608MetricR8, R10, R24, R28, R32
5100Resistor_SMD:R_0603_1608MetricR5, R20, R21, R22, R23
5CSD18563Q5APackage_TO_SOT_SMD:TDSON-8-1Q2, Q3, Q4, Q5, Q6
4100kResistor_SMD:R_0603_1608MetricR3, R6, R17, R19
410nFCapacitor_SMD:C_0603_1608MetricC18, C39, C40, C41
4M3MountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
31kResistor_SMD:R_0603_1608MetricR1, R41, R42
322uFCapacitor_SMD:C_0805_2012MetricC8, C9, C11
3B5819WDiode_SMD:D_SOD-123D2, D3, D5
21Resistor_SMD:R_0603_1608MetricR12, R13
2100pFCapacitor_SMD:C_0603_1608MetricC19, C23
210mResistor_SMD:R_1206_3216MetricR25, R27
21MResistor_SMD:R_0603_1608MetricR29, R33
21uFCapacitor_SMD:C_0805_2012MetricC37, C38
2220uF 50VCapacitor_SMD:CP_Elec_10x10C28, C33
222kResistor_SMD:R_0603_1608MetricR4, R31
2SMBJ24ADiode_SMD:D_SMBD1, D6
110kResistor_SMD:R_0603_1608MetricR9
115kResistor_SMD:R_0603_1608MetricR26
11kResistor_SMD:R_1206_3216MetricR2
12.2kResistor_SMD:R_0603_1608MetricR40
120kResistor_SMD:R_0603_1608MetricR14
1220pFCapacitor_SMD:C_0603_1608MetricC20
122uHInductor_SMD:L_Changjiang_FNR4030SL3
124kResistor_SMD:R_0603_1608MetricR34
12N7002Package_TO_SOT_SMD:SOT-23Q7
12kResistor_SMD:R_0603_1608MetricR11
133kResistor_SMD:R_0603_1608MetricR15
133nFCapacitor_SMD:C_0603_1608MetricC17
14.7uFCapacitor_SMD:C_0805_2012MetricC14
14.7uFCapacitor_SMD:C_1206_3216MetricC36
14.7uHInductor_SMD:L_Sunlord_SWPA4030SL1
14.7uHInductor_SMD:L_Coilcraft_XAL7070-XXXL2
147pFCapacitor_SMD:C_0603_1608MetricC21
182kResistor_SMD:R_0603_1608MetricR16
1AOD4185Package_TO_SOT_SMD:TO-252-2Q1
1AP63203WU-7Package_TO_SOT_SMD:TSOT-23-6U3
1BOOTButton_Switch_SMD:SW_SPST_PTS810SW1
1BZT52C12Diode_SMD:D_SOD-123D4
1EC11E15244G1Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmSW3
1ESP32-S3-WROOM-1-N8R8RF_Module:ESP32-S3-WROOM-1U4
1Green (PD)LED_SMD:LED_0603_1608MetricD8
1Green (PWR)LED_SMD:LED_0603_1608MetricD7
1INA228AIDGSRPackage_SO:TSSOP-10_3x3mm_P0.5mmU7
1LM5176PWPRPackage_SO:HTSSOP-28-1EP_4.4x9.7mm_P0.65mm_EP3.4x9.5mm_ThermalViasU5
1MCP4725A0T-E/CHPackage_TO_SOT_SMD:SOT-23-6U6
1MT3608Package_TO_SOT_SMD:SOT-23-6U8
1OLEDConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ3
1OUTTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ2
1RESETButton_Switch_SMD:SW_SPST_PTS810SW2
1Red (OUT)LED_SMD:LED_0603_1608MetricD9
1STUSB4500QTRPackage_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.7x2.7mmU1
1USB-C PDConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U2

Questions

How big is the Pd brick PCB?

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

What parts does the Pd brick use?

120 parts, built around the ESP32-S3-WROOM-1-N8R8, LM5176PWPR, MT3608 and USBLC6-2SC6. 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 Pd brick KiCad files?

From the enkhbold470/pd-brick repository on GitHub, at the commit this page was made from: the board is kicad/pd_brick.kicad_pcb and its schematic kicad/pd_brick.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pd brick design in my own project?

Its repository publishes it under the CERN-OHL-S-2.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).

Similar boards

  • 2 layers28 × 30 mmPower boost 1s, the printed circuit board in 3D

    Power boost 1s

    HeyPCB/power-kit

    Six open power and charging boards: KiCad 10, JLCPCB-ready, CERN-OHL-S-2.0

    13 partsCERN-OHL-S-2.0
  • 4 layers70 × 157.5 mmController Tv Lift, the printed circuit board in 3D

    Controller Tv Lift

    vyrubaev/TV-Lift-Controller

    TVLift Controller is an intelligent controller for TV lift and lower mechanisms, based on the ESP32 microcontroller.

    103 parts
  • 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 mmPhase1-module, the printed circuit board in 3D

    Phase1-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.

    144 parts1GPL-3.0
  • 6 layers68 × 52 mmRemotev1, the printed circuit board in 3D

    Remotev1

    ABauschat/ESPNuggetv1-ADS1262HAT

    49 parts
  • 6 layers497.4 × 154.7 mmFCSTMV1.05, the printed circuit board in 3D

    FCSTMV1.05

    CGainsWorks/emb-drone-flight-stack

    Open-source quadrotor flight stack: custom KiCad flight-controller and power distribution boards plus C++ firmware with a PID attitude loop, written from scratch.

    1,198 partsMIT
  • 4 layers100 × 100 mmFarmMesh Node, the printed circuit board in 3D

    FarmMesh Node

    chinawrj/FarmMesh-Node

    Developing an integrated hardware and software solution for farm-wide Mesh networking: RP2350B/ESP32-C5 nodes, firmware, network protocols, and Wi-Fi/BLE sensor access.

    164 parts
  • 2 layers40 × 61 mmEsp32-4to20ma board, the printed circuit board in 3D

    Esp32-4to20ma board

    Diode663/ESP32_4-20mA_Sensor

    Single-channel industrial 4-20 mA current-loop reader for ESPHome / Home Assistant. ESP32-S3 + INA226, USB-C powered, 24 V loop supply with a constant-current limiter. KiCad 10, generated from Python.

    59 partsCERN-OHL-P-2.0