Silicon ChipProgrammable USB-PD Modules - October 2026 SILICON CHIP
  1. Outer Front Cover
  2. Contents
  3. Publisher's Letter: A self-made trap for RAM manufacturers
  4. Feature: Improvised Electronics, Part 2 by Dr David Maddison, VK3DSM
  5. Project: Mighty USB-C Bench Supply, Part 1 by Tim Blythman
  6. PartShop
  7. Project: Programmable USB-PD Modules by Tim Blythman
  8. Feature: Motor Control, Part 1 by Andrew Levido
  9. Project: Audio Spot Frequency Oscillator by Richard Kabzinski
  10. Feature: A guide to EV Charging by Geoff Graham
  11. Subscriptions
  12. Project: Phenomenal Pinball Machine, Part 5 by Phli Prosser
  13. Serviceman's Log: ELSEC 764 UV Monitor Repair by David Worboys et al
  14. PartShop
  15. Vintage Radio: The Philco Model 38-7 by Dr Hugo Holden
  16. Market Centre
  17. Advertising Index
  18. Notes & Errata: Simple USB Power Monitor, June 2026; Simple LC Meter, May 2026
  19. Outer Back Cover

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:
  • Improvised Electronics, Part 1 (September 2026)
  • Improvised Electronics, Part 2 (October 2026)
Items relevant to "Mighty USB-C Bench Supply, Part 1":
  • USB-C Power Supply main PCB [04107261] (AUD $5.00)
  • USB-C Power Supply control panel PCB [04107264] (AUD $5.00)
  • PIC16F18146-I/SO programmed for the USB-C Power Supply [0410726A.HEX] (Programmed Microcontroller, AUD $10.00)
  • PIC16F18115-I/SN programmed for the USB-C Power Supply [0410726B.HEX] (Programmed Microcontroller, AUD $10.00)
  • 0.91-inch white OLED with 4-pin I²C interface (Component, AUD $7.50)
  • TH transistor - 2SC5242-O(Q)‎ 230V 15A NPN (TO-3PN) (Component, AUD $8.00)
  • USB-C Power Supply kit (Component, AUD $95.00)
  • USB-C Power Supply firmware (Software, Free)
  • USB-C Power Supply PCB patterns (PDF download) [04107261-2] (Free)
Articles in this series:
  • Mighty USB-C Bench Supply, Part 1 (October 2026)
  • Programmable USB-PD Modules (October 2026)
Items relevant to "Programmable USB-PD Modules":
  • USB-C Power Supply main PCB [04107261] (AUD $5.00)
  • USB-C Power Supply control panel PCB [04107264] (AUD $5.00)
  • PIC16F18146-I/SO programmed for the USB-C Power Supply [0410726A.HEX] (Programmed Microcontroller, AUD $10.00)
  • PIC16F18115-I/SN programmed for the USB-C Power Supply [0410726B.HEX] (Programmed Microcontroller, AUD $10.00)
  • 0.91-inch white OLED with 4-pin I²C interface (Component, AUD $7.50)
  • TH transistor - 2SC5242-O(Q)‎ 230V 15A NPN (TO-3PN) (Component, AUD $8.00)
  • USB-C Power Supply kit (Component, AUD $95.00)
  • USB-C Power Supply firmware (Software, Free)
  • USB-C Power Supply PCB patterns (PDF download) [04107261-2] (Free)
  • Preassembled USB-C PPS control module (Component, AUD $25.00)
  • USB-C PPS control module PCB pattern (PDF download) [04107265] (Free)
Articles in this series:
  • Mighty USB-C Bench Supply, Part 1 (October 2026)
  • Programmable USB-PD Modules (October 2026)
Items relevant to "Audio Spot Frequency Oscillator":
  • Audio Spot Frequency Test Generator PCB [04111261] (AUD $5.00)
  • PCM5102 DAC module (Component, AUD $10.00)
  • NJM5532DD ultra-low-noise, low-distortion dual op amp (Component, AUD $5.00)
  • NJM5532D low-noise, low-distortion dual op amp (Component, AUD $3.50)
  • 0.96in white OLED with SSD1306 controller (Component, AUD $10.00)
  • 0.96in cyan OLED with SSD1306 controller (Component, AUD $10.00)
  • Audio Spot Frequency Oscillator firmware (Software, Free)
  • Audio Spot Frequency Test Generator PCB pattern (PDF download) [04111261] (Free)
Items relevant to "Phenomenal Pinball Machine, Part 5":
  • Pinball Machine Control PCB [08107261] (AUD $25.00)
  • Pinball Machine Power Supply PCB [08107262] (AUD $7.50)
  • Pinball Machine Player LED PCB [08107263] (AUD $2.50)
  • Pinball Machine Score LED PCB [08107264] (AUD $5.00)
  • Pinball Machine LED Output PCB [08107265] (AUD $2.50)
  • Pinball Machine Bumper LED PCB [08107266] (AUD $5.00)
  • Pinball Machine Cascade LED PCB [08107267] (AUD $5.00)
  • Pinball Machine Switch Input PCB [08107268] (AUD $2.50)
  • Pinball Machine General Input PCB [08107269] (AUD $2.50)
  • Pinball Machine High Current Interface PCB [08107260] (AUD $2.50)
  • Pinball Machine Rollover Interface PCB [08117261] (AUD $2.50)
  • Pinball Machine Bumper Driver PCB [08117262] (AUD $5.00)
  • 5m of 10-way ribbon cable (Component, AUD $10.00)
  • Pinball Machine Control Board short-form kit (Component, AUD $150.00)
  • Pinball Machine Power Supply short-form kit (Component, AUD $50.00)
  • Pinball Machine cable and connector set (Component, AUD $65.00)
  • Software and 3D printing files for Phil Prosser's Pinball Machine (Free)
  • Phil's Phenomenal Pinball Machine PCB patterns (PDF download) [08107260-9, 08117261-2] (Free)
Articles in this series:
  • Phenomenal Pinball Machine, Part 1 (June 2026)
  • Phenomenal Pinball Machine, Part 2 (July 2026)
  • Phenomenal Pinball Machine, Part 3 (August 2026)
  • Phenomenal Pinball Machine Part 4 (September 2026)
  • Phenomenal Pinball Machine, Part 5 (October 2026)

Purchase a printed copy of this issue for $14.00.

Programmable USB-PD and USB-PPS Modules We’re starting to see inexpensive power sources that include modern USB-PD and USB-PPS capabilities, making it an ideal time to experiment with compatible modules. This article presents one that is commercially available and another we have designed, both being controlled over an I2C serial bus. By Tim Blythman U SB Power Delivery (USB-PD) is a means for a device to request a specific voltage and negotiate a current limit from a USB-C power source. For example, a USB-PD compatible device might request 12V from a power supply rather than 5V; if the supply doesn’t support that voltage, the device can choose another one that it does. The USB Programmable Power Supply (USB-PPS) protocol goes even further, allowing a USB device to request a voltage from 3.3V to 21V in 20mV steps. As with USB-PD, both the source (eg, a USB charger) and sink (device) need to support this protocol for it to work. These days, more and more USB power supplies support both USB-PD and USB-PPS. We published an article titled “How USB-C Power Delivery Works” by Andrew Levido in our July 2021 issue (siliconchip.au/Article/14919). It describes the electrical interface and communication protocol used by power sources that support USB-PD and USB-PPS. Jim Rowe looked at so-called USB-PD triggers and decoy boards back in August 2021 (siliconchip.au/ Article/14996). These are modules that can be configured to request voltage and current levels from suitable power supplies. They incorporate an IC that manages the signalling needed to communicate with the power supply. They also have an interface that allows a certain voltage (usually) to be directly selected by a user. This might be something simple, like a solder jumper that can be modified, or pushbuttons and a display for interactive operation. One of the modules that we are presenting here has a solder jumper setting, but the main thing we are interested in is an interface (I2C or ‘inter-integrated 38 Silicon Chip circuit’ in this case) that allows them to be controlled programmatically by something like a microcontroller. That means we can build a USB-C powered PSU with a controller that can choose the best supply voltage for efficient operation. The glossary overleaf lists some terminology that is common to USB-PD and USB-PPS. Next, we will review a commercially available module. Then we will follow with our design, which keeps the same physical outline but allows the use of USB-PPS. Using the same outline allows them to be mechanically interchangeable, so either can be used in our USB-C PSU design. Adafruit HUSB238 PD Breakout This module is made by the Adafruit company and can be found on their website at www.adafruit.com/ product/5807 The photo below shows the module and Fig.1 its circuit diagram. This is one of the modules we used for testing our USB-C Power Monitor prototype for the project in the September 2025 issue (siliconchip.au/Series/445). Jaycar sells a module (Cat PP2081) that appears to be identical, and we tested some of these alongside the Adafruit parts. This module also functions as a trigger module, since it can be configured via solder jumpers to provide one of several preset voltages or current settings. Of course, these features depend on the attached power supply being able to provide the requested levels. The module is shipped with settings of 5V and 1A. The jumper settings are used until a different command is received on the I2C bus. Fig.1: like many such modules, the circuit is simple but provides sufficient support circuitry to explore the features of the HUSB238 chip. Original source: https://learn.adafruit.com/assets/124712 Australia's electronics magazine siliconchip.com.au It is based on the Hynetek Semiconductor Company HUSB238 chip (https://en.hynetek.com/2421.html), which is only available in a DFN leadless package. This chip supports USB-PD but not USB-PPS, so it can only supply one of the six voltage levels prescribed by the older USB-PD standards. The voltage levels are 5V, 9V, 12V, 15V, 18V and 20V, which you can see marked on the solder jumpers on the module. Interestingly, none of the USB-C power sources we used for testing these modules supported 18V. Apart from some passive components, there is a P-channel Mosfet that is controlled by an open-drain output on the HUSB238 chip. This version of the chip simply switches on the Mosfet when power is applied, although the data sheet notes that other chip variants may support different behaviours. Module connections The package for the module includes a two-way screw terminal header and a 0.1-inch (2.54mm) pitch pin header; the screw terminal can be fitted to connect the power (VUSB and GND) pads. The header pads break out the I2C bus, power and USB2.0 (D+ and D−) connections, allowing the module to be integrated into a peripheral. There is also a pair of mounting holes near the USB-C socket. The chip is directly powered from the USB supply (which could be up to 20V) and lacks I2C pull-up resistors, requiring these to be fitted externally to suit the desired logic level. The I2C slave address (7-bit) of the HUSB238 is 0x08 (8 in decimal). Interface Internally, the HUSB238 has ten control registers, shown in Table 1. Control and monitoring of the module is achieved by reading from and writing to the registers. Like many such chips, it includes internal resistors to signal an implicit 5V contract when the source is first connected to ensure that the device powers up. The chip appears to automatically make source capability requests to populate the SRC_PDO (0x02-0x07) registers, although this can also be commanded through the I2C bus. After this, the general mode of operation is to read out the SRC_PDO registers to confirm the modes that the power source offers. Register 0x08 can then be written with a value to select a PDO, and the GO command is written to register 0x09. The PD_STATUS0 register can be read to confirm that the new contract is in force. Scope 1 shows a typical timing whilst switching from a 5V PDO to a 9V PDO. The I2C activity consists of writes to registers 0x08 and 0x09. There appear to be numerous HUSB238 libraries available for the Arduino IDE that can be found by searching for “HUSB238”. One of these is developed by Adafruit for this specific module; it can be found at https://github.com/adafruit/Adafruit_ HUSB238 Interestingly, this library was written with the help of an AI agent. The library webpage above has links to the chat sessions, so you can see how it was done. USB-PPS module We found that many of the modern USB-C power sources we tested featured PPS. The finer granularity of PPS means that we can reduce the necessary headroom and thus the dissipation in our USB-C PSU. We discuss these advantages in detail in the project article. We were not able to find a suitably compact prebuilt module that was able to use PPS. The lack of USBPPS support on the HUSB238 is the main reason that we developed our own USB-PPS Module, which we’ll describe now. Our research found the MikroElektronika range of USB-C Sink Click modules, which work with MikroElektronika’s mikroBUS socket; they have a much larger footprint than the Adafruit part. One of these uses the Diodes Incorporated AP33772 USB-PD sink controller IC, which led us to the newer AP33772S chip. Table 1: HUSB238 control registers Just 25mm long, the HUSB238 Power Delivery Breakout (shown enlarged) can be controlled over an I2C interface, making it handy for devices that need to request different voltages from a USB-C source. Source www. adafruit.com/product/5807 siliconchip.com.au Register Notes PD_STATUS0 (0x00) Read-only register with information about the current and voltage available after an explicit contract is established. PD_STATUS1 (0x01) Read-only register with other status information, including that relating to an implicit (5V) contract. SRC_PDO_5V (0x02) Read-only registers with information about capabilities (presence or absence and allowable current) for the indicated voltage. SRC_PDO_9V (0x03) As above SRC_PDO_12V (0x04) As above SRC_PDO_15V (0x05) As above SRC_PDO_18V (0x06) As above SRC_PDO_20V (0x07) As above SRC_PDO (0x08) Read/write register, used to select a PDO for activation by the Go command. GO_COMMAND (0x09) Read/write register, used to request a contract per the Source PDO or issue other commands such as checking source capabilities or resetting. Australia's electronics magazine October 2026  39 Fig.2: similar to the HUSB238 PD Module, our circuit consists of little more than the components required by the data sheet. The external connection at CON2 has been laid out to match the other module, although it lacks the USB data lines due to the limited space available. Like all the other USB-PD chips we investigated, it is in a leadless package; QFN-24 in this case. We would have liked to use a hand-solderable part, but it is available amongst JLC­ PCB’s parts catalog, so we were able to design a PCBA (PCB assembly) for manufacture by JLCPCB. The AP33772S Information about this part can be found at siliconchip.au/link/accy – it can handle VBUS voltages up to 31V and USB-PD modes up to 28V. The circuit for our USB-PPS Module is based on the typical configuration diagram in the data sheet, which you can download from siliconchip.au/link/accz Since we plan to use this module interchangeably with the HUSB238 module, we have adopted the same layout and external connections. While it is electrically and mechanically interchangeable, it requires different communications over the I2C bus. Size restrictions have also limited the features that we have provided. Its operation is otherwise similar to the HUSB238, with reads and writes to the various registers needed to monitor and configure the state of the chip. The AP33772S has 13 PDO registers, seven of which are for SPR mode (up to 20V) and the remaining six are for EPR modes. Support for PPS modes means that there are more options to be selected and configured; for example, checking and setting the voltages and currents for the PPS modes. The AP33772S also has a load switch control, which can be configured to shut off VBUS in the Inspired by the HUSB238 PD module (black PCB), we have created our own USB-PPS Module (green PCB) using the more advanced AP33772S chip. As well as being usable as standalone modules, either can be used in the USB-C PSU we have designed. event of a fault such as a voltage mismatch or overcurrent. USB-PPS Module circuit Fig.2 shows the circuit of our USBPPS Module. CON1 on the left is the standard power-only USB-C socket we use for many applications. We have opted not to add the USB data lines, since the necessary traces would occupy precious space on the small PCB and also necessitate a USB-C socket with more pins to solder. Connections are made directly to IC1, the AP33772S, with the CC lines having external 5.1kW pulldown resistors to ground, required for legacy 5V operation, which is needed to bootstrap the chip. The VBUS line goes via a 5mW shunt resistor that has an upstream tap at the ISENP pin for V 10 8 6 4 2 0 -80 ms -60 -40 -20 0 20 Scope 1: The red and blue traces here show the I2C traffic, while the green trace shows the VBUS level changing after the HUSB238 PD Module receives a command. It’s interesting to note the time taken for the change to occur and the slow ramping applied by the power source. 40 Silicon Chip Australia's electronics magazine One of the advantages of having the module assembled by JLCPCB is that smaller components can be used. Note the use of very small M1608 (imperial 0603) parts. siliconchip.com.au USB-PD and USB-PPS Glossary APDO (Advanced Power Data Object): A PDO that includes variable and programmable modes such as SPR PPS, SPR AVS and EPR AVS. AVS (adjustable voltage supply): The voltage is not fixed but can be varied in 100mV increments EPR (extended power range): Modes that range above 100W – up to 48V and thus 240W when capable of 5A. EPS (external power supply): A device such as a plug pack or battery bank that is used to supply DC voltage. Explicit power contract: A mode that is provided after negotiation between the source and sink. Implicit power contract: The default 5V mode that is provided when a source detects that a sink has connected due to the CC lines being pulled down. PD (Power Delivery): The USB specification that allows compatible devices (sources, Fig.3: since the modules will be offered fully assembled, this overlay diagram is provided for reference only. Note that R2 and R3 at top right are the I2C pull-up resistors, which should be removed if you wish to interface to logic levels other than 5V. current sensing. The downstream tap at VCC provides power to the chip. Downstream power (to the power sink) is switched by dual N-channel Mosfet Q1 in the standard bidirectional blocking configuration, with its sources commoned and gates commoned. The drains provide the external switch connections. In this configuration, the body diodes are back-to-back and prevent current flow in both directions when the Mosfets are off. To control the N-channel Mosfets as a high-side switch, the AP33772S features an internal boost circuit to drive the gate voltage high enough above VBUS; this signal is fed via a 5.1kW resistor. The switched VBUS circuit is taken to the output at CON2, which is laid out to match the output connection on the HUSB238 module. This also breaks out ground and the I2C SDA and SCL lines, which have 5.1kW pull-up resistors to an internally generated 5V rail (V5V). Where possible, 5.1kW resistors have been used in lieu of nearby values. For example, the I2C resistors are usually 4.7kW and the value of the resistor on the gate of Q1 is not critical. This choice was intended to simplify the BoM (bill of materials) for PCB assembly, since each different component reel loaded into the pick and place machine incurs an extra cost. The capacitors are as per the typical system configuration in the data sheet, with these providing bypassing on different power rails. siliconchip.com.au cables and sinks) to deliver higher voltages and currents than previous specifications. PDO (Power Data Object): A configuration of the power source that can be selected by a sink. The PDO will include a voltage level and current capability. PPS (programmable power supply): A mode where the source output voltage can be controlled in 20mV increments up to 21V and current in 50mA increments. SPR (standard power range): The PD mode that supports 5V to 20V. The circuit is quite simple; it just exposes the features of the AP33772S chip. We had originally intended to incorporate the AP33772S directly into the USB-C PSU, but considered that readers may find other uses for it as a separate module. This way it’s also easier to source it pre-soldered to the board. If you need to use the USB-PPS Module with a 3.3V (or lower) I/O voltage microcontroller, we recommend removing the onboard I2C pull-up resistors and using pullups to the logic level being used elsewhere. The I2C pullups are the two 5.1kW resistors marked R2 and R3 near IC1. Fig.3 shows the PCB overlay diagram. Assembly Since the module has been fully assembled by JLCPCB, you only need to fit the requisite headers for your application before use. If you are using it for the USB-C PSU, there are instructions for preparing it in that series. You can test the USB-PPS Module by powering it from a USB-C power source. It should provide a 5V output between the VBUS and ground connections. This test isn’t comprehensive, but at least establishes that the AP33772S chip is requesting 5V and driving the Mosfet switch. Testing and use Scope 2 shows a similar test to Scope 1 but using our AP33772S module and its PPS features. Despite the AP33772S having larger (16-bit) registers, only one packet is needed to request a new PDO from the source, so the transmission is briefer, as is the delay before the voltage change commences. Parts List – USB-PPS Module 1 double-sided 21 × 24mm PCB coded 04107265 1 USB-C socket (CON1) [GCT USB4135 or similar] 1 AP33772S USB-PD interface chip, QFN-24 (IC1) 1 BSO150N03 dual N-channel Mosfet, SOIC-8 (Q1) 2 10μF X5R MLCC M3216/1206 SMD capacitors 1 1μF X7R MLCC M2012/0805 SMD capacitor 2 100nF X7R MLCC M1608/0603 SMD capacitors 5 5.1kW M1608/0603 ±1% 100mW SMD resistors 1 200W M1608/0603 ±1% 100mW SMD resistor 1 5mW M1608/0603 ±1% 100mW SMD resistor Note: the parts listing is provided for reference since the modules will be supplied fully assembled. You just need to supply and solder headers to suit your application. Preassembled USB-C PPS Control Module (SC7740, $25 + P&P) Australia's electronics magazine October 2026  41 Ideal Bridge Rectifiers Choose from six Ideal Diode Bridge Rectifier kits to build: siliconchip. com.au/Shop/?article=16043 28mm spade (SC6850, $30) Compatible with KBPC3504 10A continuous (20A peak), 72V Connectors: 6.3mm spade lugs, 18mm tall IC1 package: MSOP-12 (SMD) Mosfets: TK6R9P08QM,RQ (DPAK) 21mm square pin (SC6851, $30) Compatible with PB1004 10A continuous (20A peak), 72V Connectors: solder pins on a 14mm grid (can be bent to a 13mm grid) IC1 package: MSOP-12 Mosfets: TK6R9P08QM,RQ 5mm pitch SIL (SC6852, $30) Compatible with KBL604 10A continuous (20A peak), 72V Connectors: solder pins at 5mm pitch IC1 package: MSOP-12 Mosfets: TK6R9P08QM,RQ mini SOT-23 (SC6853, $25) Width of W02/W04 2A continuous, 40V Connectors: solder pins 5mm apart at either end IC1 package: MSOP-12 Mosfets: SI2318DS-GE3 (SOT-23) D2PAK standalone (SC6854, $35) 20A continuous, 72V Connectors: 5mm screw terminals at each end IC1 package: MSOP-12 Mosfets: IPB057N06NATMA1 (D2PAK) TO-220 standalone (SC6855, $45) 40A continuous, 72V Connectors: 6.3mm spade lugs, 18mm tall IC1 package: DIP-8 Mosfets: TK5R3E08QM,S1X (TO-220) See our article in the December 2023 issue for more details: siliconchip.au/Article/16043 42 Silicon Chip V 10 8 6 4 2 0 -40 ms -20 0 20 Scope 2: This shows the same as Scope 1, but for our USB-PPS Module. Only one data packet is needed to effect a change and it is initiated much more promptly after the command is given. If you are using the USB-PPS Module in the USB-C PSU, you don’t need to fit any headers until it is time to attach it to the PCB in that project. Otherwise, we found that a pair of three-way socket headers was the best way to experiment with the module, allowing jumper wires to be fitted for breadboarding. Take care when working with this module (and the HUSB238) because it will expose voltages above 5V that should not be directly connected to the pins on a microcontroller. The AP33772S data sheet does not have much detail on the operation of the I2C registers, but we found more information in a user guide for an AP33772S evaluation board (EVB) at siliconchip.au/link/acd0 This guide has more detail on the registers and I2C command format. The AP33772S has a 7-bit I2C address of 0x52. There are also code examples using an Arduino Uno with the EVB (which we expect should also work with the USB-PPS Module). The code can be downloaded from siliconchip.au/ link/acd1 We found that the AP33772S required a slow I2C bus to operate correctly. The data sheet reports a very low requirement for a low-level (logic zero) input of 0.4V, while the I2C specifications allow up to 30% of the logic voltage to be recognised (eg, 1.5V for a 5V system). We suspect this requirement means that extra time is needed for the voltage levels to settle correctly. Table 3 shows a very small subset of the registers available on the AP33772S; these two registers (the ones that we use in the USB-C PSU project) are sufficient to check and select power data objects and thus request different voltages from a connected source. Summary Now we have two different USB-PD modules that we can use with the USB-C PSU, or as standalone parts to be incorporated into other projects. You can find the USB-C PSU project starting on page 28 in this issue. SC Table 2: a subset of AP33772S registers as used by the USB-C PSU Register Size (bytes) Notes Get all 26 source PDOs (0x20) The 26 bytes contain 13 16-bit PDO entries with information about the available voltage, current and whether the PDO is a fixed or PPS type. Select PDO (0x31) The PDO request includes information about the PDO (1-13 from above) to be activated and what voltage is being selected for a PPS PDO. 2 Australia's electronics magazine siliconchip.com.au