This is only a preview of the October 2026 issue of Silicon Chip. You can view 36 of the 104 pages in the full issue, including the advertisments. For full access, purchase the issue for $10.00 or subscribe for access to the latest issues. Articles in this series:
Items relevant to "Mighty USB-C Bench Supply, Part 1":
Items relevant to "Programmable USB-PD Modules":
Items relevant to "Audio Spot Frequency Oscillator":
Items relevant to "Phenomenal Pinball Machine, Part 5":
Purchase a printed copy of this issue for $14.00. |
Mighty
USB-C
Part 1 / 2
Bench PSU
By
Ti
m
Bly
thm
The Mighty USB-C Bench
an
PSU leverages USB-C’s Power
Delivery features to create an efficient
adjustable supply that can deliver up to 20V at
2A. It’s extremely portable and has many handy
features, including an adjustable current limit.
Delivers up to 20V at 2A (if the USB power source is capable)
Compact case measures 94 × 83 × 30mm
Detailed OLED display plus LED status
Rotary encoder for tactile voltage and current control
Highly configurable for efficiency or low-noise operation
Software features include fuse emulation
Detailed USB-PD source information
T
here is an increasing amount
of inexpensive USB-C power
supplies from local retailers,
which we can use to supply much
higher voltages and currents than
legacy 5V USB. The original USB-PD
(Power Delivery) standards allow a
variety of voltages up to 20V at up to
3A; the newer USB-PPS (Programmable Power Supply) offers even more
fine-grained control.
28
Silicon Chip
So we thought it’d be very convenient to have a light, portable power
supply you can plug into a range of
USB ports to operate as a simple but
useful bench supply. That’s exactly
what this project delivers.
USB-PD dates back to 2013 and
USB-PPS was introduced in 2017, so
they are not new standards. It takes
time for products to be developed,
released and adopted; we have now
Australia's electronics magazine
reached the point that such power
supplies are easy to come by, meaning that a design using these features
is practical.
In a sense, this project supersedes
the Dual-channel Breadboard PSU
from December 2022 (siliconchip.au/
Series/401). That small and simple
device acted as a basic bench power
supply for circuits on a breadboard
or in similar prototyping situations.
It used a voltage-boosting module to
derive up to 15V from a 5V USB input
at low currents and could also utilise
fixed DC supplies like plugpacks. It
was a strictly linear design that could
manage 1A output with a DC supply,
or much less with a USB input. The
Breadboard PSU did not include a
microcontroller; it used potentiometers for its setpoints and analog circuitry to drive its outputs.
A separate, optional display unit
(driven by a microcontroller) monitored the PSU and showed its status
on an LCD panel.
Despite its simplicity, we use the
prototype from time to time; the ubiquity of 5V USB means that there is
never any problem finding a suitable
power source.
This new design can deliver considerably higher voltages and currents than the Breadboard PSU, and
it’s very convenient due to the fact it
can be powered from a range of USB-C
power supplies (including some
power banks) and because it’s small,
light and highly portable. It also has
quite a few new features, like a load
switch, automatic thermal shutdown
and a ‘circuit breaker’ mode.
Hybrid power supplies
To understand why a variable supply voltage is so useful (as provided
by USB-PD), consider ‘hybrid’ PSU
designs. A traditional linear power
supply design, like our Breadboard
PSU or the 45V/8A Bench PSU from
October-December 2019 (siliconchip.
au/Series/339) must be capable of dissipating a lot of power.
The 45V/8A Bench PSU might
need to dump nearly 400W from
its heatsink during operation under
some conditions. Our design needs
to handle this dissipation and ensure
the circuitry does not fail from overheating. As a result, the heatsink and
fans for that design took up a considerable amount of space in the large
enclosure.
siliconchip.com.au
Fig.1: the requested supply voltage (red area) for DC, USB-PD and USB-PPS sources when a particular output voltage
(blue area) is selected. The amount of red visible reflects the voltage that needs to be dropped across the output transistor
and thus its dissipation. Less red area is preferable, which is best achieved using a USB-PPS source.
The worst-case scenario for such a
device is a low output voltage at high
current. The circuitry must drop the
voltage from the input supply (over
50V for the 45V/8A Bench PSU) to
nearly 0V at the maximum current,
thus dissipating a lot of power.
In contrast, a hybrid PSU includes
switch-mode circuitry to provide a
variable voltage at the input of the linear section that is high enough to allow
proper regulation but no higher. Our
Hybrid Bench Supply from April-June
2014 (siliconchip.au/Series/241) can
manage about half the output power
of the 45V/8A Bench PSU but fits in
a case that is about an eighth the size!
Pure switch-mode designs are possible, but can suffer from a noisy output, particularly at the switching frequency. The presence of a linear stage
after the switch-mode stage in a hybrid
design can help to reduce undesirable
noise and also speeds up the onset of
current limiting in response to a rapidly changing load impedance.
The Mighty USB-C Bench PSU is a
hybrid design that uses the variable
voltage capability of modern USB-PD
devices to feed a linear output stage
at a level that minimises dissipation.
It provides the sort of features that
are expected from a bench PSU while
using ubiquitous USB power.
The Mighty USB-C Bench PSU looks
much more polished than the Breadboard PSU and, thanks to the developments in USB power sources, is considerably more powerful too.
With much of the circuitry handed
off to a separate USB power supply, the Mighty USB-C Bench PSU is
tiny, fitting in the palm of the average
hand. Its specified output (20V at 2A)
is quite modest compared to some of
the other units mentioned here, but we
siliconchip.com.au
are limited by the capabilities of readily available USB-C power supplies.
Control algorithm
Fig.1 shows graphically how a
USB-PD or USB-PPS based power
supply can be much more efficient
and compact than one running from
a fixed DC supply.
The red area shows the amount of
voltage that must be dropped by the
output transistor to achieve the voltage setpoint. This voltage, multiplied
by the output current, is the amount
of power that the PSU must dissipate during normal operation. So the
smaller the red zone, the less power
the pass transistor has to manage.
A USB-PD power supply can provide one of several discrete voltage
output levels. We
choose the lowest
level that allows enough headroom for
the linear regulator to avoid dropout.
That provides a significant reduction
in the red area.
USB-PPS has more fine-grained
control (typically steps of 100mV),
so it can operate much closer to the
ideal level, shrinking the red area
even further.
Note that a DC supply needs to
drop the most voltage at low output
voltages, while the USB-PPS supply
allows a small but uniform amount of
headroom across most of the working
range, since it is finely programmable.
The USB-PD supply only offers a few
discrete steps, but still outperforms
the DC supply.
In operation, the supply chooses a
preferred USB source voltage depending on several settings and live readings. The source is not
The Mighty USB-C
Bench PSU can be
so compact since
it outsources the
role of AC-DC
conversion to
an external
USB-PD or
USB-PPS
power
supply.
Australia's electronics magazine
October 2026 29
permitted to supply less than 5V, since
that would prevent proper operation
of the logic circuitry. Also, the output
is capped at whatever maximum the
source can supply. You can see these
two last behaviours in the horizontal
regions of Fig.1(c).
The ideal source voltage is based on
either the setpoint or output voltage,
plus an amount known as the Voltage
Headroom. The next highest available
PDO (power data object) voltage above
this is chosen for USB-PD supplies;
you can see this changing behaviour
in the stepped shape of Fig.1(b).
A USB-PPS supply allows the PDO
voltage to be chosen to the nearest
100mV. If no PDO is found, the highest available is chosen, as long as it is
at or below 25V. Different PDOs will
typically have different current limits, so the achievable current setpoint
might change as the voltage setpoint
is adjusted.
If the Headroom is relative to the setpoint, the PSU will respond quickly
to changes, even if current limiting
occurs. However, it may dissipate
more power while current limiting is
active, since the source voltage does
not reduce, even if the output voltage drops.
Setting the Headroom relative to
the output voltage will allow efficient operation (even when limiting is
active), but that might result in it being
slower to recover from current limiting, since the algorithm then limits
the preferred voltage to a lower value
than it would with the setpoint. Effectively, the output slowly ramps up on
recovery as allowed by the Headroom.
Along with numerous other parameters, the Headroom is adjustable, so
the behaviour of the USB-C PSU can
be optimised for different scenarios
and to favour efficiency or response
time as needed.
Design considerations
To interface with a USB-C power
supply, we need some circuitry that
can request an appropriate voltage
from it. There are modules available
that can do this, including some based
on the HUSB238 USB-C power delivery sink controller IC. Suitable modules include the Adafruit 5807 and
Jaycar’s PP2081 (www.jaycar.com.
au/p/PP2081).
The HUSB238 chip cannot handle
USB-PPS, so we have also designed
our own compatible module using the
30
Silicon Chip
AP33772S USB-C power delivery sink
controller IC, which can.
Since these modules are quite interesting in their own right, we have
described them in a separate article, starting on page 38. You can use
our module or one of the commercial
modules mentioned above for the
USB-C PSU. You can even use a pure
DC power source, although you will
miss out on the efficiency gains that a
hybrid device offers.
Because the AP33772S is only available as a QFN (quad flat no-lead) part,
which is tricky to hand-solder, we have
designed the module for assembly by
JLCPCB. In other words, you can purchase the module fully assembled.
We recommend you check out that
article, if you have not already done
so, since it provides more detail on the
operation of these power delivery sink
controller modules. There is also an
explanation of some of the terminology
that relates to USB-C Power Delivery
(PD) and Programmable Power Supply
(PPS) modes.
The 2022 Dual-channel Breadboard
PSU was intended to be as straightforward and inexpensive as possible. We
have the same aim with the USB-C PSU
design. There are no obscure parts; the
AP33772S IC is the most unusual, but
it is readily available from suppliers
like DigiKey, Mouser and LCSC (the
component supply part of the JLCPCB
group).
The basic operation is similar to
the Breadboard PSU in that a pair of
reference voltages are used to set the
output voltage and current limit. A
dual op amp and some extra circuitry
(mostly passives) monitors the voltage
and current signals to drive a power
transistor as the pass element.
The USB-PD modules have an I2C
interface, so a microcontroller is necessary. Using a trusty PIC16F18146
8-bit microcontroller adds more than
enough smarts to provide a detailed
user interface. All the voltage regulation and current limiting happens in
the hardware around the op amp, so
the core functions are not limited by
the software speed.
The presence of the PIC16F18146
allows us to provide many other features; for example, a relay can be used
to manually switch the USB-C PSU’s
output. Combined with a thermistor as
a temperature sensor (read by an analog-
to-digital converter in the micro), the
relay can also provide an automatic
Australia's electronics magazine
safety shut-off if the temperature rises
too high or other problems occur.
Circuit details
Figs.2 & 3 show the complete circuit of the Mighty USB-C Bench PSU.
Fig.2 contains all the parts on the main
PCB, while the Fig.3 components are
on a separate PCB that forms the front
panel. The two are connected by a sixway cable from CON1 to CON101.
The main voltage control and current limiting is based around IC1, a
common LM358 op amp. IC1a performs the voltage control using NPN
transistor Q1 (fed from the POWER+
rail) as an emitter-follower to provide
current gain. The output from Q1’s
emitter passes through a 50mW shunt
resistor for current sensing and into
the 10kW/1kW divider, which in turn
feeds back to IC1a’s inverting input
as Vsignal.
The control voltage, Vset, is presented to IC1a’s non-inverting input
via a 1kW resistor so that the op amp’s
inputs see a similar impedance. With
the op amp in control, the voltage at
the two inputs is the same, meaning that the voltage at the top of the
10kW/1kW divider is 11 times that at
the pin 3 non-inverting input.
The 50mW shunt resistor is monitored by IC2, a differential amplifier
with a gain of 20. Thus, 1A through the
shunt resistor results in 1V appearing
at IC2’s pin 4. The Isignal line is sent
to the non-inverting input of IC1b,
which forms the current-limiting part
of the circuit.
A voltage, Iset, is supplied to IC1b’s
inverting input. The output of IC1b
connects to NPN transistor Q2 via a
100kW resistor. Q2 has its emitter connected to ground and its collector to
the point where the voltage control signal is fed into IC2a. When Q2 switches
on, its collector is pulled to ground,
reducing the voltage control signal.
When the current signal from IC2
rises above the Iset reference, IC1b’s
output voltage rises, switching on
Q2, reducing the voltage setpoint and
thus the output voltage to bring the
current under control. The principle
of the circuit so far is much the same
as the Dual-channel Breadboard PSU,
although it only has one channel rather
than two.
Note that Q2’s base is connected to
IC3’s pin 18 via a 10kW resistor. This
is primarily so that the microcontroller
can monitor the voltage at this point. If
siliconchip.com.au
Fig.2: this is the part of the circuit on the main PCB; CON1 here connects to CON101 in Fig.3. Two microcontrollers are used;
IC3 is the main controller, while IC4 is used mostly for its DAC feature and to control the boost regulator that produces the
OA+ op amp supply. The red dotted line from CON5/CON6 to CON2 shows the main current path through the circuit.
Q2’s base is near 0.6V then Q2 is conducting and pulling down the voltage
reference at IC1’s pin 3, so current limiting is occurring. If Q2’s base is near
0V, there is no current limiting.
Relay RLY1 is used to switch the
output to screw terminals CON2. RLY1
is in turn controlled by NPN transistor Q4, with back-EMF suppression
diode D2 protecting Q4 when the relay
switches off. Schottky diodes D4 and
D5 protect the circuitry in case the load
tries to pull the output below GND or
above the positive supply rail.
siliconchip.com.au
IC1 and IC2 have the necessary
supply bypassing capacitors, while
the capacitors between the op amp
outputs and inverting inputs provide
negative feedback to suppress any
tendency for the circuit to oscillate.
The feedback loop for the current has
substantial gain, hence the 10nF feedback capacitor there.
LM358 op amp IC1 has some properties that are critical to the operation
of the USB-C PSU. Firstly, its inputs
and outputs can both operate near its
negative rail. Since the signals are
Australia's electronics magazine
referenced to circuit ground (and will
come close to ground at times), these
levels must be within the common-
mode input range of the device.
To assist with operation near the
negative rail, the feedback voltages are biased slightly upwards via
220kW resistors to the output of 3.3V
regulator REG1. A 0V or 0A output
actually registers at around 15mV
on the Vsignal and Isignal lines. This
keeps the op amp away from the
limits where the behaviour might
become non-ideal.
October 2026 31
The output behaviour of IC1 is not
so critical, as Q1’s base-emitter voltage drop means that even with a 0V
output, the op amp’s output does not
need to get close to its negative rail.
The op amp’s positive rail is a different matter, as we need enough voltage
for IC1 to drive Q1’s emitter near to the
POWER+ rail.
The positive rail output swing of IC1
is a few volts less than its supply, and
we need to compensate for the ~0.7V
base-emitter drop of Q1 and the voltage across its 47W base resistor. Thus,
a separate OA+ supply is provided,
which is above the POWER+ voltage.
We will see where the OA+ voltage and
the POWER+ rail come from shortly.
Main microcontroller
IC3 is an 8-bit PIC16F18146 microcontroller with 20 pins. It includes several handy analog and digital peripherals. It is supplied with the usual
support circuitry of a 100nF bypass
capacitor on its supply rails (+5V and
GND), a 10kW resistor pulling up its
MCLR pin, with these and the other
programming pins (PGD/PGC) connected to header CON3 for programming and debugging.
In terms of peripherals, it includes
an 8-bit (256-step) digital-to-analog
converter (DAC) that we use to provide
the Vset voltage. The DAC is referred
to an internal 2.048V reference with
8mV steps, meaning that the PSU output can be controlled up to a nominal
22.4V (2.048V × 11) in 88mV steps.
This DAC output is available at pin 17.
While there are two 8-bit DACs in
the PIC16F18146, only one can be connected to an external pin. The other
DAC is referred to IC3’s supply voltage
and set to code point 32, or ⅛ of the
supply. The internal analog-to-digital
converter (ADC) is configured to use
the internal 4.096V reference, so the
chip can measure its own supply voltage without any external components.
The ADC is also used to measure
a number of other signals, including
those relating to the output circuitry,
such as Vsignal, Iset and Isense on pins
14, 15 and 16. Pins 10 and 11 (POWER_
SENSE and OA_SENSE rails) also measure other analog voltages.
The POWER+ and OA+ rails voltages are monitored via 10kW/1kW
dividers in similar fashion to the output voltage. They have 100nF capacitors on their lower legs to provide
some low-pass filtering.
32
Silicon Chip
Tsense (on pin 8) is another analog
signal formed from a divider made of
a 10kW NTC (negative temperature
coefficient) thermistor and a 2.2kW
resistor; this also has a 100nF capacitor for filtering. The lug-type thermistor is mounted on Q1 and connected
to the main PCB at CON4, for sensing
Q1’s temperature.
Second microcontroller
As mentioned above, only one of
IC3’s DACs can be fed outside the chip.
Since that is providing Vset, we need
another way to control the Iset current-
limit determining voltage. External
DAC ICs exist, but typically have a
3-wire SPI interface, and we were
already running out of pins on IC3.
Instead, we have employed IC4, a
PIC16F18115 microcontroller, to provide the second DAC channel. The
PIC16F18115 is just as cheap as any
of the DAC chips we could find and,
like IC3, it has an internal 2.048V reference, so it incorporates all the features we need to work as a DAC.
IC4 provides the current control
voltage ISET_DAC from its pin 5. It
is controlled by IC3 via a single-wire
asynchronous serial (UART) interface
from pin 9 on IC3 to pin 3 on IC4.
Like IC3, IC4 is powered from the
+5V rail (pin 1, with pin 8 being
ground), which is bypassed by a 100nF
capacitor. Pins 1, 4, 6, 7 and 8 connect to a second ICSP header, CON7,
with pin 4 pulled up by a 10kW resistor. This means both chips can be
reprogrammed while on the board, if
necessary.
IC4 is also responsible for the generation of the OA+ op amp supply
rail from the POWER+ rail. This is
achieved by the circuitry around NPN
transistor Q3 and N-channel Mosfet
Q5, connecting to IC4 at its pins 2, 6
and 7. Pins 6 and 7 feed a comparator
inside IC4.
Pin 6 of IC4 also connects to the
POWER_SENSE line to measure the
voltage feeding into Q1. Pin 7 (OA_
FB) connects to a similar divider
(10kW/1kW) that is in series with a
‘Vbe multiplier’ based on Q3 and the
10kW/1.2kW divider.
The Vbe multiplier drops a voltage
that is proportional to the transistor’s
base-emitter voltage. The multiplier
is given by the divider ratio; in this
case, 11.2kW (10kW + 1.2kW) divided
by 1.2kW = 9.3. At the small currents
involved, we measured the base-emitter
voltage at 0.55V, so the voltage across
the Vbe multiplier is around 5.1V; this
is bypassed by a 100nF capacitor.
The circuitry around Q5 is a simple
boost converter utilising inductor L1
and diode D1. Q5 is driven by pin 2
of IC4, which is fed a PWM signal as
long as the pin 7 comparator input is
lower than the pin 6 comparator input.
This is handled by the configurable
logic cell (CLC) peripheral of IC4, so
voltage regulation occurs without software intervention.
IC4 thus controls the voltage on
the output of the boost regulator
Fig.3: the front panel has the screen, four pushbuttons (one integral to the
encoder), rotary encoder and dual-colour LED.
Australia's electronics magazine
siliconchip.com.au
circuitry. The concept is similar to
that used in the Digital Boost Regulator from December 2022 (siliconchip.
au/Article/15588), although that used
an internal DAC as the control voltage rather than a different signal from
within the same circuit.
Effectively, the circuit regulates the
OA+ rail to 5.1V above the POWER+
rail, which is high enough to allow IC1
to drive Q1. We noted in the Digital
Boost Regulator article that the control algorithm is quite crude, so the
output passes through a 47W resistor
and is bypassed by a 10μF capacitor to
provide some filtering at the op amp’s
supply pins.
If Q1’s collector cannot source
enough current, the load will tend to
draw from Q1’s base and IC1 instead,
because Q1’s base current contributes
to the output current. The two 47W
resistors help to protect the boost circuit and op amp from exceeding their
output current capacity and being
damaged.
Power delivery
Incoming power is supplied via a
USB-PD module at CON5, or a pair
of screw terminals at CON6. We’ll
discuss the operation of the USB-PD
module shortly, but we can expect a
nominal voltage of 5-20V here, perhaps up to 25V, via 3A fuse F1 to the
POWER+ rail.
The +5V rail comes from an
MCP1804 5V LDO (low-dropout) regulator IC; it has the requisite 10μF
bypassing capacitors. The LDO function is vital, as we need to provide near
enough to 5V even with a 5V supply.
This is necessary so that the 4.096V
reference in IC3 can regulate correctly
and there is enough voltage to drive
the 5V coil of the relay.
The practical limit for the incoming
supply voltage is about 25V; it must be
below op amp IC1’s 30V recommended
maximum less the 5V added to the
OA+ rail. Current shunt monitor IC2,
which runs from the incoming supply,
has a maximum supply voltage of 26V.
Digital circuitry
IC3 is responsible for some other
digital signals. Its pin 2 drives Q4 via
a 5.1kW resistor, which in turn controls RLY1. There are two I2C serial
buses (SDA, SCL, SDA2 and SCL2),
which all have 5.1kW pullups to the
+5V rail. The RE_A and RE_B lines
connect to the quadrature outputs of a
siliconchip.com.au
Parts List – Mighty USB-C Bench Power Supply
1 main PCB assembly (see below)
1 front panel assembly (see below)
1 USB-C PD or PPS power source (eg, AC to USB-C adaptor or USB-PD battery bank)
1 extruded aluminium enclosure, 94 × 83 × 30mm [Adafruit 2230; DigiKey, Mouser]
1 M3 × 6mm blackened panhead machine screw
1 M3 × 12mm blackened panhead machine screw
2 M3 nuts (solderable; eg, brass or nickel-plated)
2 M3 flat washers
1 TO-3P insulated mounting kit (silicone pad and 3mm plastic bush)
4 small self-adhesive rubber feet
wire and connectors to suit usage (eg, 5A cable; optionally, banana sockets)
wiring to connect panel to main PCB (approx. 30cm of light-gauge hookup wire)
Main PCB assembly
1 73 × 77mm double-sided PCB coded 04107261
1 USB-C PD module [Adafruit 5807, Jaycar PP2081] OR
1 USB-C PPS module [Silicon Chip SC7740]
2 2-way 5mm/0.2in pitch screw terminals (CON2, CON6; optional)
2 5-way 2.54mm/0.1in pitch pin headers (CON3, CON7; optional, for ICSP)
1 2-way JST XH board-mount male connector (CON4; optional)
2 3-way 2.54mm/0.1in pitch pin header (CON5)
1 10kW lug-mount NTC thermistor [Altronics R4112]
2 M205 fuse clips (F1)
1 3A fast-blow M205 fuse (F1)
1 4.7μH 1.3A 120mW SMD inductor, M2520/1008 (L1)
[Abracon AIML-1008HC-4R7M, Murata LQM2MPN4R7NG0L]
1 5V/2A DPDT SMD or TH 2A telecom relay (RLY1) [Omron G6K-2F-Y-DC5V]
Semiconductors
1 LM358 dual single-supply op amp, SOIC-8 (IC1)
1 INA180B1IDBVT 20× current sense amplifier, SOT-23-5 (IC2)
1 PIC16F18146(T)-I/SO SMD 8-bit microcontroller programmed with 0410726A.HEX,
SOIC-20 (IC3)
1 PIC16F18115(T)-I/SN SMD 8-bit microcontroller programmed with 0410726B.HEX,
SOIC-8 (IC4)
1 MCP1700(T)-3302 SMD 3.3V LDO regulator, SOT-23 (REG1)
1 MCP1804(T)-5002 SMD 5V LDO regulator, SOT-223 (REG2)
1 FJA4313 or 2SC5242 NPN transistor, TO-3P (Q1)
3 BC817-40 SMD 45V 800mA NPN transistors, SOT-23 (Q2-Q4)
1 2N7002 SMD 60V 115mA N-channel Mosfet, SOT-23 (Q5)
2 1N5819WS 40V 1A SMD schottky diodes, SOD-323 (D1, D2)
2 SS34 40V 3A SMD schottky diodes, DO-214AB/SMC (D4, D5)
Capacitors (all SMD M3216/1206 50V X7R MLCC unless noted)
5 10μF X5R
3 1μF
9 100nF
1 10nF
1 1nF
Resistors (all SMD M3216/1206 ±1% ⅛W unless noted)
2 220kW
12 10kW
1 2.2kW
7 1kW
1 50mW M6331 3W
1 100kW
5 5.1kW
1 1.2kW
2 47W
Front panel assembly
1 double-sided 29 × 89 × 0.8mm black PCB coded 04107264
2 small rubber grommets [Keystone 730]
1 0.91-inch I2C OLED module (MOD101) [SC7484]
1 rotary encoder with pushbutton and 18t spline shaft (RE101)
1 knob to suit RE101
3 reverse-mount SMD tactile switches (S101-S103) [Adafruit 5410]
1 PCF8574 or PCF8574A SMD I2C I/O expander IC, wide SOIC-16 (IC101)
1 back-emitting/reverse red/green bicolour SMD gullwing LED, 3.2×2.8mm (LED101)
[Kingbright AAA3528SURKCGKC09]
1 100nF SMD M3216/1206 X7R 50V MLCC capacitor
1 1kW M3216/1206 ±1% ⅛W SMD chip resistor
short lengths of solid core wire (eg, component lead offcuts)
to connect and secure the OLED
Complete Kit (SC7739, $95 + P&P): includes the USB-PPS module, two PCBs, two
programmed microcontrollers, the case, and pretty much everything else needed.
Preassembled USB-C PPS Control Module (SC7740, $25 + P&P)
rotary encoder and also have pullups
to +5V and 100nF debounce capacitors to ground.
CON1 is the connection to the separate control panel PCB (at CON101).
The panel PCB carries OLED module
MOD101, which takes in +5V, GND,
SDA and SCL signals for power and
communication.
IC101 is a PCF8574 (or PCF8574A)
I2C I/O expander, which also connects
to the +5V, GND, SDA and SCL lines.
Its pins can act as inputs (with internal pullups) or open-drain outputs,
so it is used to read the pushbuttons
switches S101, S102 and S103, as well
as the pushbutton switch on rotary
encoder RE101.
IC101 also drives dual red/green
LED101 via a single 1kW resistor. To
save space on the panel PCB, the resistor is shared, and only one element is
driven at a time. If both LED outputs
are driven, the lower forward voltage
of the red element means that the green
element does not illuminate.
The quadrature outputs of the rotary
encoder (RE_A and RE_B) go directly
back to the main PCB. Although IC101
has spare inputs, we don’t expect the
I2C interface to be fast enough to keep
up with the rotary encoder’s operation.
Finally, the second I2C bus (SDA2
and SCL2) connects to CON5 to control the external USB-PD module.
Keeping this independent means that
the display and controls can still be
used even if there is a fault with the
second I2C bus.
S = Setpoint
(target)
Mechanical design
The main PCB is designed to fit
into a small, inexpensive extruded
aluminium enclosure, with the intention that Q1 can be affixed to it to add
thermal mass and assist with dissipation. The case we have chosen is sold
by the Adafruit company and is available from various sellers, including
DigiKey and Mouser.
The main and front panel PCBs
are both sized to be a neat fit to this
enclosure, with the front panel PCB
replacing the included front panel.
The USB-C connection is accessed via
a hole cut in the rear panel, and the
main PCB is secured to it by means of
a nut soldered to the PCB.
If you need to resort to a different
enclosure, we recommend a similar
but larger aluminium case, such as a
diecast or extruded design. This will
allow Q1 to be heatsinked. The front
panel PCB could be used as a bezel
and mounted to a larger panel. The
holes in the front panel and adjacent
to the USB-PD module are suitable for
M2.5 hardware.
To assist with alternative enclosures, there are mounting holes on
the main PCB to allow the use of M3
machine screws and tapped spacers.
Two of the holes are adjacent to where
the USB socket (on the module) is
located, so mechanical strength is supplied where it is most needed.
To keep the part count and cost
down, we have designed the PCB with
strain relief holes adjacent to CON2
Angle brackets <>
mark the value that Current setpoint
Voltage setpoint can be set with the will flash if it is too
rotary encoder
high
will flash if
supply is too low
DAC setting
(0-255) of the
setpoint under
user control
(output) and CON6 (DC input). This
means that wires can be soldered
directly to the PCB. The output wires
can then be run through the holes in
the front panel or be terminated to
banana sockets if you wish. You may
need to drill out the panel holes to suit
banana sockets.
Similarly, the thermistor termination and front panel wiring are suitable for 0.1in/2.54mm pitch headers,
but the simplest option is to solder the
wires directly. There will be little need
for strain relief since these parts will
not move once the unit is closed up.
Firmware for IC4
IC4’s firmware is quite simple. It
configures the EUSART peripheral to
listen for 9-bit serial data on the SER_
CON line. To avoid problems with spurious data, IC4 waits to receive two
identical data words in a row before
acting.
Using nine bits allows us to send
two different sets of 8-bit commands
without worrying about data framing.
With the ninth bit set low, the remaining eight bits are used to set the DAC
level for current control. If the ninth
bit is set high, the command uses the
other eight bits to set the duty cycle
of the PWM peripheral.
The PWM peripheral uses a 32MHz
internal oscillator with a period of 100
cycles, so it operates at 320kHz, and
the value corresponds directly to the
duty cycle percentage. Setting the duty
cycle to zero effectively disables the
PWM signal and thus the boost feature.
The software limits the duty cycle to
15% to avoid excessive loads on the
boost section.
Firmware for IC3
Fig.4: the display is packed with information about the settings and
operating conditions of the USB-C PSU. Many of the indicators will flash if
improper conditions are detected.
At startup, the processor initialises
all the necessary peripherals and scans
the first I2C bus to determine if there
is a PCF8574 (7-bit bus address 0x20)
or PCF8574A (0x38) present. After
this, the second I2C bus is scanned to
determine whether a HUSB238 (0x08)
or AP33772S (0x52) is present.
If neither is present, a fixed DC
source is assumed. This information
is displayed on the OLED screen. If
present, the module is queried for the
USB-C source capabilities, and a summary of this is also displayed. Commands are then sent to IC4 to ensure
it is in a known state.
Much of the firmware on the main
processor is dedicated to providing the
Australia's electronics magazine
siliconchip.com.au
L indicates that
current limiting is
active
A = Actual
Thermistor (Q1)
temperature
will flash if it is
approaching the
trip limit
34
Silicon Chip
Incoming USB-PD
supply voltage (or
DC voltage)
5V+ supply rail
is shown and will
flash if below
4.5V
user interface. There are numerous settings that can be changed to alter the
behaviour of the USB-C PSU, not just
the main operating parameters like
voltage, current and so forth.
A 5Hz timer is used to control updating the display and USB-PD module
at a reasonable rate. Various lines are
read to measure the voltage and current setpoint and actual value; the
thermistor temperature; the OA+,
POWER+ and +5V rails; and Q2’s base
for current-limiting detection.
The monitoring of the nine analog
voltages is performed in the background by the ADC peripheral operating continuously in an accumulating mode. This automates oversampling and effectively gives fresh 16-bit
results from the 12-bit ADC every
20ms. When a new result is ready, the
values are adjusted by calibration constants to provide meaningful values for
display and calculation.
With the 220kW resistors biasing the
voltage and current readings, these are
not simply a ratio, but also include
an offset adjustment. The remaining
values (OA+, POWER+ and +5V rails
and Q2’s base) have no offset and are
simply scaled.
The reason for choosing a 2.2kW
resistor as part of the thermistor
divider chain is that this value gives a
fairly linear relationship (within 1°C)
between voltage and temperature over
the range of 20°C to 80°C. Thus, the
temperature can be estimated using
a ratio (slope) and offset calculation,
and the same software routines are
used to perform the calculations as
for the voltages.
The main operating screen (Fig.4)
allows the two DAC outputs to be
adjusted, using the rotary encoder to
set the voltage and current setpoints.
Pressing the rotary encoder toggles
between voltage and current setting.
The relay can be controlled with two
of the pushbuttons.
The raw 8-bit (0-255) DAC value is
adjusted, and the calculated voltage
and current setpoints are shown. The
steps correspond to about 88mV for
voltage control and 8mA for current
control. With the offset noted above,
the DACs need to be at step two or
higher to have a non-zero output,
which ensures that zero levels can be
achieved.
In the event that the USB-C PSU
detects a fault condition, such as
the thermistor going open-circuit or
siliconchip.com.au
The design uses our
APS33772S USB-PPS board (published
separately in this issue) to provide the USB-PPS features when powered by a
suitable USB power source. Alternatively, you can use a commercial HUSB238
module (such as Jaycar’s PP2081) instead.
detecting a high temperature, the relay
is opened and the voltage control DAC
is set to zero. The fault is displayed
and must be cleared before the condition can be reset.
The LED on the front panel shows
solid red when the relay is off and
green when the relay is on and the
output is active. A fault will cause the
LED to flash. Other data is also shown
on the main screen, including the temperature, supply voltage (POWER+)
and available current. An “L” is shown
if current-limiting is active.
In one mode, an overcurrent fault
condition will open the relay. The
behaviour then is more like a fuse,
opening the circuit if the limit is
reached. In the brief period before the
relay opens, the current limiting is still
enforced for safety.
Minor faults (not severe enough to
cause a trip) are shown on the main
page by flashing the appropriate data
display. For example, if the temperature is flashing, it is nearing its limit.
If the current setpoint is flashing, it
might be exceeding the capacity of the
power supply. For the current, there is
also an option to automatically ramp
the setpoint down to a safe level.
Settings
There are many pages of settings
and calibration data. These are entered
and cycled through by using the > button on the front panel; this can only
be done while the output relay is off.
Some calibration settings require an
output from the PSU, so the voltage,
current and relay are under software
control when the settings pages are
active.
Australia's electronics magazine
The first few settings are the ones
that might be changed regularly, such
as the different operating modes and
settings, while the later ones allow
adjustment of the calibration parameters. We’ll delve into these later, once
construction of the unit is complete.
While there are many ways to adjust
the settings, we expect that most applications will fall into one of two cases.
Firstly, running the boost regulator for
the OA+ rail will allow the output to
come very close to the incoming supply voltage and offer very efficient
operation, since Q1 needs to drop very
little voltage.
USB-PPS supplies allow the source
voltage to be chosen in 100mV steps,
and dissipation in Q1 below 1W can
easily be achieved across most of the
range with this configuration.
If necessary, the boost regulator can
be shut off. In this case, Q1 will likely
be dropping 3V or more depending on
the current draw. Due to the loss of
headroom, these settings might be better for sensitive applications at lower
currents or lower voltages.
USB-PD control
A critical part of the USB-C PSU’s
operation is the need to control the
USB-C power source via the module connected at CON5. The aim is
to ensure sufficient headroom of the
POWER+ rail above the desired output
voltage while minimising that headroom, since that is the main contributor to dissipation and heating in Q1.
Several parameters and settings that
can be used to tweak this behaviour.
These are used, along with the source
capabilities, to determine the best PDO
October 2026 35
(power data object) to request. This is
checked and updated multiple times
per second; you can see the POWER+
voltage display change as the voltage
is changed.
Of course, the capabilities of the
USB-C PSU are strongly dependent on
the features of the USB-C power source
that is connected. Most USB power
sources provide a slightly higher voltage (than nominal) to compensate for
cable resistance. There is tolerance
in the voltage specifications for this.
For example, a nominally 20V
power source powering the USB-C
PSU measured at 20.15V and from this,
the PSU was able to supply 20.07V
into a 200mA load.
That does mean that there needs
to be some headroom in the current
capacity of the supply. During our
testing, we sometimes exceeded the
power source’s limit (deliberately and
accidentally!) and found that the typical supply behaviour was to simply
shut down until a power cycle had
occurred.
Performance
The USB-C PSU has been optimised
for stability under a very wide range
of conditions, so we aren’t making any
claims that it has a very fast response
to changes. As with similar designs,
the ability of the output voltage to
decrease due to changes in setpoint is
limited by the load and output resistance, since Q1 is only capable of
sourcing current.
Increasing the output voltage will
be as fast as designs like the Breadboard PSU, provided that the USB-PD
source does not need to ramp up. The
ramp rate under these conditions will
depend on things like the headroom
setting and source response. Scope 1
shows a typical response to ramping
being limited by the behaviour of the
source.
Since current limiting is handled in
hardware, this response is
not affected
Scope 1: changing the setpoint from 0V to 10V. The blue trace shows the output
voltage, while the red trace is the Vset line. The green trace (also 12V scale)
shows the USB-C supply voltage. The supply voltage must ramp up to allow the
output to meet its setpoint. Although there is a delay due to the supply requiring
software control, the output voltage follows the supply quite closely due to the
OA+ boost circuitry.
by the source’s behaviour. Recovery
from current limiting may be slowed
if the source voltage has been ramped
down. If the USB-C PSU is set to track
the setpoint voltage, ramping will not
happen except on setpoint changes.
Tests with our prototype showed
a temperature rise of around 6°C/W,
so we expect that the PSU should be
able to dissipate around 4W continuously without tripping at normal ambient temperatures. At 50°C, the case
is noticeably hot to the touch, so we
have chosen this as the trip limit. The
electronics can handle this with ease.
4W dissipation should thus allow
2A of continuous current with 2V
of headroom, which was achievable
over most of the range for the USB-C
sources we tested. The continuous
SOA (safe operating area) of Q1 goes
up to 30V at 4A, so the expected
working range is well within these
limits.
Note that this is dissipation in the PSU and not in
the load. With a USB-PPS
source and lower headroom, continuous operation at less than 1W
dissipation should be
Views of both sides of the
black front panel PCB.
36
Silicon Chip
Australia's electronics magazine
achievable, even with a 2A load.
Efficiency
Fig.1 demonstrates how difficult it
would be to give a single efficiency
figure for the USB-C PSU. The efficiency and dissipation depend a lot
on the voltage and current settings,
the headroom settings, and the USB
source capabilities.
With a USB-PPS power source,
the headroom will be close to nominal, especially if the OA+ boost circuit is active. With a USB-PD source,
the actual headroom might be much
higher due to the spacing of the source
voltages, as indicated by the sharp
upward steps in Fig.1(b). This is the
main reason that we thought it best to
design a USB-PPS module.
Broadly speaking, efficiency can be
improved by tweaking the settings,
but this may result in longer response
times to setpoint changes or slower
recovery from current limiting. We
will discuss this in detail in Part 2,
along with the settings.
Next month
As you can see, there is much that
has gone into the design of both the
hardware and firmware of the USB-C
PSU. Since there are so many settings
and features to be explained, we will
look at the assembly, setup and how
to use the PSU next month, including
details of the many settings and their
SC
operation.
siliconchip.com.au
|