TinyPPS is a pocket-sized programmable power supply built on the USB Power Delivery (PD) standard and the USB Programmable Power Supply (PPS) feature. It transforms a standard USB-C PD charger into a flexible bench-style power source by negotiating selectable output voltages and current limits directly with the charger.
Key features:
- Support for fixed PDO and PPS profiles
- Operating VCC voltage range: 3 V to 31 V
- Fine-grained voltage adjustment via PPS negotiation (100mV steps)
- Output current up to 5 A (charger and cable dependent)
- Programmable current limiting (250mA steps)
- User-switchable output
Huge thank you to PCBWay for sponsoring this project!
The firmware is written in C++ using the Raspberry Pi Pico SDK.
There are two options to flash RP2040:
- Via USB by pressing the
BOOTbutton during power on. On a PC a new virtual drive calledRPI-RP2should appear. Then, drag and drop a .uf2 file onto the drive. - Via SWD interface by attaching a debugger like Raspberry Pi Debug Probe to the "DBG" connector and then using OpenOCD.
Schematic and PCB are designed in KiCAD.
Key components:
- The schematic is based on the RP2040 and AP33772S reference designs.
- A 0.96 in 128×64 SSD1306 OLED is added to display the UI.
- A EC11 rotary encoder is added for user input.
- INA226 is used for measuring current and voltage. While AP33772s provides these features, INA226 gives more precise measurements.
