24-channel USB High-voltage Driver
by jayakody2000lk in Circuits > Microcontrollers
21 Views, 0 Favorites, 0 Comments
24-channel USB High-voltage Driver

This is a compact open-source 24-channel USB HV driver module designed for those who need precise control over multiple HV outputs.
Supplies
- 0.1µF/16V Capacitor 0603 × 6
- 1µF/16V Capacitor 0603 × 1
- BAT60A × 1
- USB Type-C 16-pin connector × 1
- KF128-5.08-2P × 1
- 2.54mm 1x05 2.54mm Pin Header × 6
- 2.54mm 1x02 2.54mm Pin Header × 1
- 2.54mm 1x03 2.54mm Pin Header × 1
- 5.1kΩ Resistor 0603 × 2
- 150kΩ Resistor 0603 × 1
- 22kΩ Resistor 0603 × 1
- USBLC6-2SC6 × 1
- CH340N × 1
- STC15W204S × 1
- TPIC6B595DWR × 3
About This Module

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.
Schematic
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.
Downloads
Printed Circuit Board (PCB)


The printed circuit board (PCB) of this module is design using KiCAD. The dimension of the PCB is 75.25mm × 33.75mm. To build this PCB, use a 1.6mm FR4 board with a 1 oz thickness of copper.
The parameters to manufacture the PCB is in the below list:
- Width: 75.25mm
- Height: 33.75mm
- Number of layers: 2
- Material: FR4 (TG 130-140)
- Thickness of PCB: 1.6mm
- Copper weight: 1 oz
- Surface finish: HASL lead-free
- PCB solder mask: Green
The PCB for this module was fabricated by PCBWay, who generously sponsored this project. PCBWay offers high-quality PCB manufacturing and assembling services. Also, they offer CNC and 3D printing services. The PCB of this module is available to order from PCBWay. Check out the PCBWay website for its manufacturing capabilities and pricing.
Firmware



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.
To flash the MCU, clone the stcgal repository and install it in your build environment. Detailed installation instructions can be found in the stcgal's INSTALL.md file.
Follow these steps to flash the firmware:
- Ensure that JP201 (the jumper pads next to the STC15W201S MCU) is in the open position. By default, this jumper is open.
- Connect the module to your PC using a USB to Type-C data cable. Make sure that JP203 is set to external power mode and apply 5V power to the module.
- Run lsusb to ensure that CH340N is detected by the operating system. Use the dmesg command to find the path to the serial interface. The Makefile assumes the module is mapped to /dev/ttyUSB0; if it is not, update the FLASHDEV variable in the Makefile with the correct path.
- Type make flash in your build environment. If everything is set up correctly, the programmer will be ready for the next power cycle of the STC15W201S MCU.
- Short the JP201 jumper using a metal tweezers or screwdriver, and hold it until stcgal uploads the entire firmware to the device.
After the upload is successful, disconnect all connections from the module and permanently short the JP201 jumper by soldering it.
Testing the Module



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.
Project Repository and Documentation
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.