Building a USB Power Delivery Trigger HAT
Overview
This tutorial builds a USB Power Delivery trigger HAT for Raspberry Pi projects that need more than the standard 5 V rail. The circuit uses a CH224K-style PD trigger controller to request a fixed USB-C PD voltage, routes the negotiated output to a terminal block, and adds a status LED plus input filtering.
What You Are Building
The board has five blocks:
- USB-C input connector
- PD trigger controller for fixed voltage negotiation
- Configuration header for selecting the requested voltage
- Bulk and local decoupling capacitors
- Output terminal block and power-good LED
The HAT shape is useful even when the negotiated output powers an external load instead of the Raspberry Pi itself. Keep the Pi powered through its normal input unless you have designed and tested a safe back-powering path.
Bill of Materials
| Reference | Part | Value or package | Notes |
|---|---|---|---|
| U1 | CH224K or similar PD trigger | SOIC/QFN breakout-friendly package | Requests fixed PD voltages |
| J1 | USB-C receptacle | SMD USB-C | PD input |
| J2 | Terminal block | 2 pin, 5.08 mm | Negotiated output |
| J3 | Pin header | 1x3 | Voltage selection jumpers |
| R1, R2 | Resistors | 5.1 kOhm | CC pulldowns |
| R3 | Resistor | 10 kOhm | Default configuration pull-down |
| R4 | Resistor | 1 kOhm | Status LED current limit |
| C1 | Capacitor | 10 uF or larger | Output bulk filtering |
| C2 | Capacitor | 100 nF | Controller decoupling |
| LED1 | LED | Green, 0603 | Power-good indicator |
Step 1: Add the HAT Board
Start with the standard HAT outline so the board can mount above the Raspberry Pi.
import { RaspberryPiHatBoard } from "@tscircuit/common"
export default () => (
<RaspberryPiHatBoard name="HAT1">
{/* USB PD trigger circuit goes here */}
</RaspberryPiHatBoard>
)
Step 2: Add the PD Controller
The PD trigger controller negotiates with the USB-C charger. VBUS, GND, CC1, and CC2 connect to the USB-C receptacle. Configuration pins choose the requested fixed voltage.
Step 3: Wire USB-C and CC Pulldowns
Add 5.1 kOhm pulldowns on CC1 and CC2. These identify the board as a sink before the PD controller negotiates a higher voltage.
Step 4: Add the Output and Filtering
Route the negotiated voltage to a terminal block and add a bulk capacitor near the output. The terminal block should be clearly labeled because it may carry 9 V, 12 V, 15 V, or 20 V depending on the selected profile and charger.
Step 5: Add Voltage Selection and Status LED
Different PD trigger chips encode voltage selection differently. Use a header or solder jumpers for the configuration pins so you can document the selected profile on the enclosure or silkscreen.
<pinheader
name="J3"
pinCount={3}
pinLabels={["CFG1", "CFG2", "CFG3"]}
schFacingDirection="right"
/>
<led name="LED1" color="green" footprint="0603" />
<resistor name="R4" resistance="1k" footprint="0402" />
<trace from=".U1 .PG" to=".R4 > .pin1" />
<trace from=".R4 > .pin2" to=".LED1 .pos" />
<trace from=".LED1 .neg" to=".U1 .GND" />
Voltage Profiles
Confirm the exact truth table in your PD controller datasheet. A practical build label can look like this:
| Selected output | Typical use |
|---|---|
| 5 V | Logic test load, LEDs, USB accessories |
| 9 V | Small motors or audio boards |
| 12 V | Fans, relays, lighting |
| 15 V | Portable lab loads |
| 20 V | Laptop-style adapters and high-power converters |
Only request voltages your downstream circuit can tolerate.
PCB Layout Notes
- Keep the USB-C connector close to the PD controller.
- Route VBUS and terminal-block output with wide traces.
- Place C1 close to the output terminal and C2 close to U1.
- Put voltage-selection jumpers where they are visible after assembly.
- Keep the output terminal away from low-voltage Raspberry Pi GPIO pins.
- Add clear silkscreen labels for
VOUT,GND, and the selected voltage.
Test Procedure
- Inspect the board for shorts between VOUT and GND.
- Plug in a current-limited USB-C PD supply or bench-protected PD source.
- Measure VOUT before connecting any load.
- Change the configuration jumpers and confirm the requested voltage changes.
- Attach a dummy load and verify that the power-good LED remains stable.
- Recheck capacitor temperature after several minutes at the highest expected load.
Safety Notes
- Do not feed 9 V, 12 V, 15 V, or 20 V into the Raspberry Pi 5 V rail.
- Use a fuse or current-limited source for first power-up.
- Mark the selected voltage on the board or enclosure.
- Disconnect the load before changing configuration jumpers.