Documentation

PDSink PD Decoy Fast Charging Test Board 5-20V | ShillehTek Product Manual
Documentation / PDSink PD Decoy Fast Charging Test Board 5-20V | ShillehTek Product Manual

PDSink PD Decoy Fast Charging Test Board 5-20V | ShillehTek Product Manual

ChargerDecoyESP32manualPDpdsink-pd-decoy-pd-fast-charging-test-board-5-20vPower DeliveryshillehtekTest BoardUSB-C

Overview

The PDSink PD Decoy Fast Charging Test Board is a tiny USB Type-C breakout that negotiates with USB Power Delivery (PD) chargers to request a specific high-voltage output: 5V, 9V, 12V, 15V, or 20V. Set the output voltage by flipping three DIP switches on the board, plug a USB-C PD charger into the Type-C port, and the requested voltage appears on the screw terminal — perfect for powering laptops, monitors, 12V LED strips, lab benches, e-bike accessories, and other DC projects that need 5V to 20V from a regular USB-C charger.

At 28 x 11 x 12 mm and 3.9 g, the board is small enough to embed inside almost any project enclosure. It draws no current of its own beyond the PD negotiation handshake and passes the full charger output current straight through to the screw terminal — typically 3A at any voltage (60W chargers) or 5A at 20V (100W chargers).

At a Glance

Input
USB-C PD Charger
Output Voltages
5 / 9 / 12 / 15 / 20V
Voltage Select
3-position DIP switch
Max Current
5A (charger-limited)
Output Terminals
VBUS, GND (screw)
Size / Weight
28 x 11 x 12 mm / 3.9 g

Specifications

Parameter Value
Input Connector USB Type-C (PD 2.0 / 3.0)
Output Voltages 5V, 9V, 12V, 15V, 20V
Voltage Selection 3 DIP switches (1, 2, 3)
Maximum Output Current 5A (limited by charger)
Maximum Output Power 100W (20V x 5A, charger-dependent)
Output Connector 2-pos 3.81 mm screw terminal
PD Protocol USB PD 2.0 / 3.0 (CC1 + CC2)
Negotiation Time < 500 ms after connect
Quiescent Current < 5 mA (after negotiation)
Operating Temperature -20 to +70 C
Physical Dimensions 28 x 11 x 12 mm
Weight 3.9 g

Pinout Diagram

PDSink PD Decoy board pinout showing USB Type-C input, three DIP switches for voltage selection, and a 2-position screw terminal with VBUS and GND outputs; size 28 x 11 x 12 mm, weight 3.9 g

Wiring Guide

DIP Switch Voltage Selection

Three DIP switches on top of the board select which voltage the decoy requests from the PD charger. Set them BEFORE plugging in the charger. If a setting is invalid (no PD profile matches), the board falls back to 5V.

Output Voltage SW1 SW2 SW3
5V OFF OFF OFF
9V ON OFF OFF
12V OFF ON OFF
15V ON ON OFF
20V OFF OFF ON
Warning: Always set the DIP switches BEFORE plugging in the USB-C charger. Changing switches with the charger connected may cause the board to renegotiate during a switch transition, briefly outputting an unintended voltage to your load.
Tip: If you select a voltage the charger doesn't support (e.g., 20V from a 9V-only phone charger), the board defaults to 5V output. Always verify the charger's PD profile sticker matches the voltage you've selected.

Output Wiring

The green 2-position screw terminal is the voltage output. The terminal is labeled VBUS (+) and GND (-). Use a small flathead to loosen the screws, insert your wires, and tighten.

Terminal Connection
VBUS Load Positive (+) — 5/9/12/15/20V
GND Load Negative (-) / Ground
Warning: At 20V x 5A = 100W, use at least 18 AWG silicone-jacketed wire on the output. Thin wires will overheat or drop significant voltage at high power. Verify polarity with a multimeter before connecting your load — wrong polarity will damage most projects instantly.
Tip: Add an inline fuse on the VBUS line for safety, sized to 1.25x your expected load current (e.g., 4A fuse for a 3A load). USB-C PD chargers include overcurrent protection but a local fuse adds a second line of defense.

Choosing a USB-C PD Charger

Not every USB-C charger supports PD. Look for the "PD" or "Power Delivery" logo, and check the printed voltage / current profile list. Common PD profiles are 5V/3A, 9V/3A, 12V/3A, 15V/3A (45W chargers), 20V/3A (60W), and 20V/5A (100W).

Charger Wattage Available Profiles Use Case
18W (PD) 5V/3A, 9V/2A, 12V/1.5A Small projects, phone chargers
30-45W 5V, 9V, 12V, 15V, 20V/2.25A Most DIY projects
60W 5V, 9V, 12V, 15V, 20V/3A LED panels, 12V motors
100W 5V, 9V, 12V, 15V, 20V/5A Laptops, high-power loads
Info: A USB-C charger that ONLY advertises 5V (no PD profiles) will only deliver 5V regardless of DIP switch settings. Always check the charger label or test with a USB-C power meter before assuming PD compatibility.

Powering Projects

The PD Decoy turns any USB-C PD charger into a switchable bench supply. Common uses include powering 12V LED strips, 19V laptops, 12V solenoids and relays, charging hobby battery packs, and giving 3D printers a portable USB-C power option.

Output Project DIP Setting
5V Arduino Uno / 5V LED strip / Pi 4 All OFF
9V Arduino barrel jack / small DC motor SW1 ON
12V 12V LED strip / fan / car accessory SW2 ON
15V 3S Li-ion charger input (with 16.8V converter) SW1 + SW2 ON
20V Laptop charging / 4S Li-ion charger SW3 ON
Info: Combine with a buck converter to get any voltage below the selected PD voltage. For example: set the decoy to 20V, then use a buck converter to drop to 5V for a Raspberry Pi while reserving extra headroom for a 12V fan and 20V tool charger on separate buck outputs.

Code Examples

The PD Decoy is a hardware-only voltage selector with no software interface — the DIP switches do all the configuration. The examples below show how to safely interface its high-voltage output with a microcontroller using a buck converter, plus how to monitor the output voltage with an ADC.

Arduino (Output Voltage Monitor)

pd_decoy_monitor.ino
// PD Decoy Output Voltage Monitor for Arduino
// Voltage divider sized for 20V max: VBUS -- 1M -- A0 -- 100k -- GND
// Max ADC voltage: 20 * (100 / 1100) = 1.82V (safely under 5V)

const int adcPin = A0;
const float dividerRatio = (1000.0 + 100.0) / 100.0;  // = 11.0
const float vRef = 5.0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int raw = analogRead(adcPin);
  float vAdc = (raw / 1023.0) * vRef;
  float vOut = vAdc * dividerRatio;

  Serial.print("Output: ");
  Serial.print(vOut, 2);
  Serial.println(" V");

  // Identify which PD profile is active
  if      (vOut > 18.5) Serial.println("  Profile: 20V");
  else if (vOut > 13.5) Serial.println("  Profile: 15V");
  else if (vOut > 10.5) Serial.println("  Profile: 12V");
  else if (vOut >  7.5) Serial.println("  Profile: 9V");
  else if (vOut >  4.0) Serial.println("  Profile: 5V");
  else                  Serial.println("  Profile: none / disconnected");

  delay(1000);
}

ESP32 (Voltage Monitor with Safety Cutoff)

pd_decoy_esp32.ino
// ESP32 PD Decoy monitor with relay cutoff
// VBUS -- 1M -- GPIO34 -- 100k -- GND (20V max -- 1.82V at ADC)
// Relay on GPIO25 opens load if voltage exceeds expected setting

const int adcPin = 34;
const int relayPin = 25;
const float dividerRatio = 11.0;
const float vRef = 3.3;
const float expectedV = 12.0;     // We set DIP for 12V
const float toleranceV = 2.0;     // +/- 2V tolerance

void setup() {
  Serial.begin(115200);
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, LOW);
  analogReadResolution(12);
}

void loop() {
  int raw = analogRead(adcPin);
  float vOut = (raw / 4095.0) * vRef * dividerRatio;

  if (vOut > expectedV + toleranceV) {
    digitalWrite(relayPin, HIGH);   // Open relay -- disconnect load
    Serial.printf("FAULT %.2f V (expected %.0f) -- relay opened\n", vOut, expectedV);
  } else {
    digitalWrite(relayPin, LOW);
    Serial.printf("Output: %.2f V (OK)\n", vOut);
  }
  delay(1000);
}

Raspberry Pi Pico (MicroPython)

pd_decoy_pico.py
# Pico PD Decoy voltage monitor
# VBUS -- 1M -- GP26 (ADC0) -- 100k -- GND

from machine import ADC
import time

adc = ADC(0)
divider_ratio = 11.0
v_ref = 3.3

while True:
    raw = adc.read_u16()
    v_adc = (raw / 65535) * v_ref
    v_out = v_adc * divider_ratio

    if v_out > 18.5:   profile = "20V"
    elif v_out > 13.5: profile = "15V"
    elif v_out > 10.5: profile = "12V"
    elif v_out >  7.5: profile = "9V"
    elif v_out >  4.0: profile = "5V"
    else:              profile = "none"

    print("Output: {:.2f} V ({})".format(v_out, profile))
    time.sleep(1)

Frequently Asked Questions

Does this work with any USB-C charger?
It works with any charger that supports USB Power Delivery (PD). Plain USB-C 5V chargers (no PD) will only deliver 5V regardless of DIP settings. Look for "PD" or "USB Power Delivery" on the charger label, or check the printed voltage/current profile list — chargers without PD typically only show 5V/3A.
What if I select a voltage my charger doesn't support?
The PD negotiation falls back to 5V. For example, an 18W phone charger that only supports 5V, 9V, and 12V will deliver 5V if you select 20V on the decoy. Always check the charger's printed PD profile list before setting the DIP switches.
Can I change the voltage while the charger is plugged in?
Technically yes — the board will renegotiate after the switch change — but it's not recommended. Switching during runtime can briefly output an intermediate voltage and may confuse your connected load. Best practice: unplug, change switches, plug back in.
How much current can I draw at 20V?
Up to the charger's rated current. A 100W charger advertises 20V/5A. A 60W charger advertises 20V/3A. The decoy board itself passes whatever the charger can provide — there's no internal current limit beyond the screw terminal's ~10A rating.
Why is the output voltage slightly lower than the selected setting?
USB PD tolerances allow +/- 5%, so 20V can read 19.0 - 21.0V depending on the charger and cable. Long, thin USB-C cables also drop voltage under load. Use a high-quality, short USB-C cable (rated for the wattage you need) for the most accurate output.
Is it safe to leave this connected long-term?
Yes — the PD negotiation completes once at connect and the board then acts as a passive pass-through. Quiescent current is under 5 mA. USB-C chargers include over-current and over-temperature protection, so a properly-sized charger + load combination is safe for continuous use.