24-channel USB High-voltage Driver

by jayakody2000lk in Circuits > Microcontrollers

21 Views, 0 Favorites, 0 Comments

24-channel USB High-voltage Driver

DSCN5980.jpg

This is a compact open-source 24-channel USB HV driver module designed for those who need precise control over multiple HV outputs.

Supplies

About This Module

DSCN5985.jpg

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.

Printed Circuit Board (PCB)

24-ch-relay-driver-pcb-top.png
24-ch-relay-driver-pcb-bottom.png

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:

  1. Width: 75.25mm
  2. Height: 33.75mm
  3. Number of layers: 2
  4. Material: FR4 (TG 130-140)
  5. Thickness of PCB: 1.6mm
  6. Copper weight: 1 oz
  7. Surface finish: HASL lead-free
  8. 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

stcgal-full.png
jp201.jpg
stcgal-wait-pwrcycle.png

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:

  1. Ensure that JP201 (the jumper pads next to the STC15W201S MCU) is in the open position. By default, this jumper is open.
  2. 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.
  3. 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.
  4. 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.
  5. 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

heatmap.jpg
sample-driver-interface-sample2.png
sample-driver-interface-sample1-r4.png

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.