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
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?