Introduction:
This project was created with the goal of creating a compact, portable USB PD library for sink only devices. I went through all available open-source or vendor-provided PD libraries, they are enormous and difficult to implement on small projects.
To tackle this, I study the PD specification, PD PHY chip datasheet, re-write everything without reference to any existing resource. The result is a 3 source file, 3 header library with less than 2000 lines of code in total, consume less than 8k Flash, and 1k RAM in ATmega32U4.
Campaign:
This project is small. Hardware and software codes are ready. I put all details in GitHub. I started a campaign in crowd supply. If you like the project, please support it. I will release all the design files in the last week of the campaign.
Specifications:
- Power
- USB PD2.0 Fixed Power of 5, 9, 12, 15, or 20 V at a maximum of 5 A (100 W at 20 V)
- USB PD3.0 PPS provides 3.3V-21V output in 20mV step
- USB Type-C port (for power delivery and programming)
- FUSB302 USB Type-C PHY (USB PD communication on CC pins)
- ESD protection on D+/D-/CC1/CC2 pins
- TPS62175 DC-DC for efficient 5-20 V output
- 3.5 mm, 2 position terminal block for power output
- Four-layer PCB with ground plane and 3 mm wide VBUS trace
- Microcontroller: ATmega32U4 running at 5 V and 16 MHz
- I/O: pin-compatible with Pro Micro
- 8x 10-bit ADC pins
- 12x Free Digital I/Os
- 5x GND pins
- 3x VBUS pins (USB-C power)
- 1x 5 V pin (DC-DC output)
- PD Status LEDs:
- TX / RX activity
- 5 LED for power delivery voltage level
- 3 LED for power delivery current level
- Reset button
- Size: 1.6 x 0.7 inches (extra 0.3 inches for power connector pins)
- Programming: through USB via the Arduino IDE using the default Arduino Leonardo board setting
![](https://cdn.hackaday.io/images/4844031609856566787.png)
Hello Ryan, let's be modern people and adress the issue of how to transfer data with help such devices also. It seems clear that D+,D- pins are going to the main IC but what happens after?I need capability to provide 12V from laptop to portable synhesiser via USB c PD but also be able to send data back and forth from the synth to my computer via data pins. Is it possible to do that? What happens on data pins?