One day I was digging through a box of wall warts, trying to find one that would work for my latest project. I needed one with 12-16 V output at no less than 0.5 A, and with a reasonable output connector. Untangling cords and checking labels was taking a while, and I started thinking. “If I could use USB Power Delivery, I wouldn’t ever have to do this again.” Since USB PD power supplies can provide a multitude of voltages at sizable currents, all you’d need is a little circuit board that takes the place of a power jack and tells the power supply what your project needs.
I searched the web, and to my surprise, no such device was available! I realized that I would have to create it myself, so I started figuring out the device’s requirements. It would be a small circuit board with a USB Type-C connector on one side and a screw terminal block for power output on the other. When plugged in, an on-board microcontroller would negotiate the power for your project. For simplicity and flexibility, the configuration should be done by USB. To avoid drawing excessive power, the output would have to be controlled by a MOSFET so as to only turn on once negotiation is complete.
A couple days later, I had a hardware design. A couple weeks later, I built a prototype, and the first PD Buddy Sink was born.
PD Buddy Sink
PD Buddy Sink is a smart power jack for USB Power Delivery. Configure it with the voltage and current your project needs, then plug it into any USB PD power supply with a high enough power capability. It negotiates with the power supply and turns on its output, giving your project up to 3 A at 5, 9, or 15 V, and up to 5 A at 20 V.
PD Buddy Sink is simple to configure. Just plug it into a computer while holding the setup button, and connect to the USB CDC console interface. Alternatively, use the (still experimental) configuration GUI. The configuration interface works with Linux, Mac OS X, and Windows 10.
I developed the first PCB prototypes (v0.1) in early February 2017, and built them mid February. This design had a few errors, which were fixed in v0.2. The next revision (v0.3) was a complete redesign for automated assembly. This got a few more optimizations for the first stable release, v1.0, released in mid-July 2017.