The USB-C Power Delivery (PD) standard has revolutionized how we think about power delivery via USB. Unlike traditional USB, which provided limited power (typically up to 5V at 2A), USB-C PD offers a wide range of voltage and current levels, making it ideal for charging everything from smartphones to laptops. USB-C PD is flexible and efficient, dynamically adjusting voltage and current to meet the needs of the connected device. This allows for faster charging and the ability to power more demanding devices.
One of the key features of USB-C PD is its ability to negotiate power between the source and the sink. This negotiation happens through the exchange of Power Delivery Objects (PDOs), which define specific voltage and current levels. By configuring these PDOs, users can control how much power is delivered to their devices. This capability is particularly useful in DIY electronics projects, where precise control over power delivery is crucial.
To begin with, you'll need the following components:
Arduino Nano (or clone): This will serve as the microcontroller to send I2C commands.
Cypress CY4533 Evaluation Kit: This kit includes the CYPD3177 sink chip, which is responsible for handling the USB-C PD negotiation.
USB-C Power Source: A USB-C power adapter that supports multiple voltage levels (e.g., 5V, 9V, 12V, 15V, 20V).
Jumper Wires: For making the necessary connections between the Arduino and the CY4533 board.
The setup involves connecting the Arduino Nano to the CY4533 evaluation kit via the I2C bus. The I2C bus is a common protocol used for communication between microcontrollers and peripheral devices. In this case, the Arduino will send commands over I2C to the CYPD3177 chip to select different voltage levels.
Understanding the Arduino Sketch
The core of this project lies in the Arduino sketch, which controls the selection of different voltage levels. The sketch communicates with the CYPD3177 chip over I2C, sending commands to switch between available PDOs. These PDOs correspond to the different voltage levels offered by the USB-C PD source.
The Arduino sketch is designed to loop through the following voltage levels every 5 seconds:
5V
9V
12V
15V
20V
The sketch begins by initializing the I2C communication and setting up the required parameters to interface with the CYPD3177 chip. It then enters a loop where it sequentially selects each voltage level, holding it for 5 seconds before moving to the next one. This process continues indefinitely, allowing you to observe the behavior of your USB-C PD power source as the voltage changes.
With the hardware set up and the Arduino sketch uploaded, you're ready to test the configuration. Power the Arduino and the CY4533 evaluation kit using the USB-C power source. As the sketch runs, the voltage output from the USB-C adapter will change every 5 seconds, cycling through the 5V, 9V, 12V, 15V, and 20V levels.
You can use a multimeter or a similar tool to measure the output voltage at each stage, verifying that the correct voltage is being selected. This experiment demonstrates how the I2C communication and the PDO configuration work together to control the power delivery from the USB-C source.
Conclusion
This project showcases the flexibility and power of the USB-C PD standard, particularly when combined with an Arduino compatible development board and a dedicated sink chip like the CYPD3177. By configuring PDOs over the I2C bus, you can precisely control the voltage delivered to your devices, making this setup ideal for a variety of applications, from charging different devices to powering DIY electronics projects.
For those interested in further customization, the Arduino sketch can be modified to adjust the timing, select specific voltages, or even incorporate other sensors and components into the setup. The possibilities are vast, making USB-C PD a versatile tool for modern electronics.
To get started with your own experiments, check out the Arduino sketch on GitHub and explore the world of USB-C Power Delivery!