24-channel USB high-voltage driver
When it comes to automation and control systems, there's often a need for multiple digitally controlled output terminals with high-voltage handling capabilities. Many existing modules are bulky, expensive, or require numerous additional components to function. To address this gap, I've developed a fully open-source, USB-controlled 24-channel high-voltage driver. This device provides precise, flexible control in a compact and user-friendly package. The project is open hardware, released under the CERN-OHL-W license, ensuring transparency from hardware schematics to firmware code. The driver module communicates via USB using a simple virtual COM port, eliminating the need for special drivers and complex setups.

At the core of the system are three TPIC6B595 shift registers, each supplying eight open-drain outputs that can handle up to 50V and sink currents of up to 150mA per channel. These registers are daisy-chained to achieve a total of 24 outputs. The outputs are designed for low-side switching and include integrated clamping diodes, making them suitable for driving inductive loads such as relays and solenoids. Data is clocked into the registers through serial input from a microcontroller, allowing for fast and reliable state updates across all channels with just a few lines of code.
The logic and communication for this module are managed by the STC15W204S microcontroller, a cost-effective yet powerful 8051-based MCU with enhanced UART performance and an integrated oscillator. This chip is paired with a CH340N USB-to-UART bridge, which presents the device as a standard virtual COM port to the host PC. Upon connection, the microcontroller listens for a set of AT-style commands sent over the serial connection. These commands are straightforward and user-friendly, for example, "ON=65280" activates the middle 8 outputs, "CLR" turns off all channels, and "VER" retrieves the firmware version. Additionally, there is a command to save the current output state to the built-in EEPROM, enabling the system to restore its output to a known state after power cycles. This interface design is perfect for scripting, automation, or integration with software tools such as Python, LabVIEW, or custom control GUIs.
The PCB is designed using KiCad and features a 2-layer layout measuring 75.25mm × 33.75mm. It includes 2.54mm pitch headers for output connections and is equipped with a USB Type-C connector. Power can be supplied through either USB or an external regulated 5V source, which can be selected via onboard jumper settings. The layout ensures clean signal routing and minimizes crosstalk or interference, even when switching high-voltage loads. Careful decoupling and protection components provide robustness for real-world applications.

The firmware for the STC15W204S is written in C using SDCC. It is easy to expand the command set, introduce new communication modes, or add timed control logic as needed. The current implementation allows full 24-bit output control using a base 10 numerical mask, making it both scriptable and human-readable. Thanks to the preloaded bootloader of the STC15W204S, firmware updates can be performed through the same serial interface. Details about this process are covered in the project documentation. Like the hardware, the firmware is released under the MIT License and is available in the project repository.
The system has been tested with a variety of 12V and 24V inductive and resistive loads, including relay banks, solenoids, and LED arrays. Since the outputs are open-drain, external voltages up to 50V can be safely switched on each channel making it ideal for a range of industrial, laboratory, or artistic applications. Output timing is reliable, with clean edge transitions observed during scope testing, and no signal integrity issues even during full 24-channel toggling. It is recommended to use individual heatsinks for the driver ICs when driving high-current inductive loads with this module. While the printed circuit board has heat transfer traces, the addition of individual heatsinks can increase the durability of the module.

Potential use cases for this module include automated test benches, home automation systems, signal routing for instrumentation, nixie tube multiplexing, and other high-voltage control tasks. The command-based protocol makes it easy to script operations or integrate this module into a larger system.
For those who wish to explore the schematics, command protocol, design rationale, and usage examples in greater depth, I have published comprehensive documentation and resources in the project wiki. This includes detailed assembly instructions, firmware flashing guidance, and tips on customizing the firmware for enhanced functionality.
All source files - including schematics, PCB layout, firmware code, and the bill of materials - are freely available at https://github.com/dilshan/24ch-usb-high-voltage-driver.
24-channel USB high-voltage driver
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.
Raspberry Pi 5 7 Inch Touch Screen IPS 1024x600 HD LCD HDMI-compatible Display for RPI 4B 3B+ OPI 5 AIDA64 PC Secondary Screen(Without Speaker)
BUY NOW- Comments(0)
- Likes(1)
-
RichardV31
May 05,2025
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Dilshan Jayakody
-
A simple transistor based electronic siren
For some time, hobbyists have relied on dedicated sound generator ICs, such as the UM3561, UM3562 to...
-
Analog pink noise generator
Pink noise is an essential tool in audio testing, widely used for analyzing speaker systems, room ac...
-
ZZRX-40 Receiver build
I found the ZZRX-40 receiver while going through some old issues of QEX magazine. Designed by Craig ...
-
Arduino Mini Amplifier
The Arduino Mini Amplifier is a compact audio system that merges vintage analog and modern digital c...
-
24-channel USB high-voltage driver
When it comes to automation and control systems, there's often a need for multiple digitally control...
-
Echo Generator for Microphones
This project is about a single-channel microphone echo generator circuit. This circuit builds around...
-
Universal HD44780 LCD interface
YALI (Yet Another LCD Interface) is an open-source project to provide a universal interface to drive...
-
6-channel stereo speaker selector
This project is a DIY six-channel stereo speaker selector based on STC15W201 MCU. The purpose of thi...
-
5.1 channel analog audio processor
In this project, we developed a 5.1-channel analog audio processor using PT2322 IC. PT2322 is an ine...
-
StarPointer - virtual electronic finderscope
StarPointer is a virtual electronic finderscope for astronomical telescopes. This device works with ...
-
Narrowband FM receiver for 2-meter band
This project is about MC3362 and ADF4351 based modularized, 2-meter narrow band FM receiver. In this...
-
5.1 channel audio preamplifier
This project introduces a digitally controlled 5.1 channel audio preamplifier system. This amplifier...
-
NTP based digital clock panel
This project introduces an open-source, ATmega328 based, configurable NTP clock with a 2.3-inch, 7-s...
-
AVR High Voltage Programmer 2
AVR-HV2 is Arduino based high voltage parallel programmer for AVR microcontrollers. This programmer ...
-
-
ARPS-2 – Arduino-Compatible Robot Project Shield for Arduino UNO
1248 0 4 -
-
A Compact Charging Breakout Board For Waveshare ESP32-C3
1763 3 7 -
AI-driven LoRa & LLM-enabled Kiosk & Food Delivery System
1745 2 0 -
-
-
-
ESP32-C3 BLE Keyboard - Battery Powered with USB-C Charging
1921 0 1 -







