What PowerPD Is and Why It Matters
PowerPD is an ESP32-based USB-C PD/PPS programmable power supply and PD analyzer that negotiates power delivery from standard USB-C chargers while measuring voltage, current, and power in real time for electronics testing and prototyping. Instead of buying a full bench supply, you plug in a USB-C PD charger, select a voltage, and PowerPD handles the negotiation and monitoring for you. At its core, it combines an ESP32-WROOM-32E module, an AP33772S USB-C PD sink controller, an INA226 power monitor, and a compact buck-based power stage. Together they provide fixed PD outputs like 5 V, 9 V, 12 V, 15 V, and 20 V, plus fine-grained PPS adjustments when your charger supports them. The result is a small, self-contained ESP32 power supply and USB-C PD analyzer that fits neatly into embedded and IoT development workflows.
Inside the ESP32-Based USB-C PD and PPS Hardware
PowerPD starts at the USB Type-C connector, where the AP33772S sink controller reads the charger’s advertised power delivery profiles over the CC lines and negotiates the selected voltage or PPS setting. Once the charger switches from the default 5 V to your chosen level, power flows through a 5 mΩ shunt resistor and a MOSFET output switch before reaching the output terminals. The INA226 measures voltage, current, and power across that shunt and reports to the ESP32 via I²C. An MP1584 buck converter steps down the USB-C input, and an AP2204K regulator provides a clean 3.3 V rail for the ESP32 and logic. On the front end, a 1.3-inch SH1106 OLED display, rotary encoder, push buttons, and status LEDs form a compact interface that makes this USB-C PPS controller feel like a tiny bench instrument.
USB-C PD, PPS, and How PowerPD Negotiates Voltage
USB-C Power Delivery lets chargers offer several fixed profiles, commonly 5 V, 9 V, 12 V, 15 V, and 20 V, which cover many consumer devices. For electronics work, though, fixed steps can be limiting when you need specific levels like 8.4 V for a two-cell LiPo or 13.2 V for a custom LED driver. PPS, or Programmable Power Supply, solves this by adjusting voltage in 100 mV steps and current in 50 mA steps, turning capable USB-C chargers into flexible sources for light bench tasks. According to the PowerPD project, the AP33772S sink controller “will only negotiate what the charger advertises — it will not force a voltage the charger does not offer.” PowerPD does not request the newer EPR or AVS high-voltage modes, so you stay within the standard PD range while gaining fine control for testing loads safely.
Designing, Assembling, and Flashing Your PowerPD Board
The PowerPD PCB was designed in EasyEDA with careful placement of critical components: the AP33772S sits close to the USB-C connector for short CC traces, while the INA226 is placed right next to the shunt resistor for accurate Kelvin sensing. Because the PD controller, power monitor, and USB-C connector are fine-pitch SMD parts, the project favors professional PCBA rather than hand soldering. The original build used NextPCB to fabricate and assemble the board, including the ESP32 module, AP33772S, INA226, MP1584, AP2204K, MOSFET, and passives, with Gerber, BOM, and pick-and-place files all provided in the GitHub repository. Once your boards arrive, assembly is minimal: connect a 3.3 V USB-to-UART converter to the programming header, add two small buttons for BOOT and EN, and flash the firmware to the ESP32 so it can run the USB-C PD negotiation and monitoring logic.
Using PowerPD as a Programmable Supply and PD Analyzer
With firmware loaded, PowerPD becomes both a programmable power delivery source and a USB-C PD analyzer. Connect a USB-C PD charger that supports at least 9 V, and the system powers up at the default 5 V while the AP33772S reads available profiles. Use the rotary encoder and buttons to choose a fixed PD level or, if your charger supports it, a PPS voltage in fine steps. The ESP32 controls the MOSFET switch so you can toggle the output and protect new circuits while you test them. The OLED shows live voltage, current, and power from the INA226, giving clear feedback as you prototype IoT nodes, small embedded systems, or custom drivers. For connected workflows, the ESP32 can even send these measurements to Adafruit IO over Wi‑Fi, turning PowerPD into a networked USB-C PD analyzer for your lab bench.
