#CH340N
Explore tagged Tumblr posts
Text
Open source 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 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.
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.
0 notes
Text
LV UPDI for basic ATtiny programming 🔌💻🔧

Part 2! We have been working a lot with attiny816 and attiny1616 chips (https://www.adafruit.com/search?q=attiny) lately, as for our seesaw boards. And we're often needing to program them with a CP2102-based breakout (https://www.adafruit.com/product/5335) with a 4.7K resistor soldered between the RX and TX pins. But we are hankering for a nicer programmer. One that can select 3V or 5V power and logic? Yesterday, we designed an HV programmer; today, we tore out a few parts for the 12V HV programming pulse and spun this simple 3/5V-only UPDI programming dongle. It's a lot like this adorable open-source hardware design (https://github.com/wagiminator/AVR-Programmer/tree/master/SerialUPDI_Programmer), and it inspired us to make something similar.
Instead of a USB A plug, going with USB C. Instead of the CH340N, we kept the CH340E because we like the 'activity' LED, assuming it works. for power, the classic 3.3V AP2112K LDO is kept… plus the 3/5V selection switch! We added a JST SH 3-pin to connect to a quick wire harness (https://www.adafruit.com/product/5755). It fits nicely on a single-sided PCB.
#adafruit#attiny#microcontroller#diyelectronics#programmingtools#hardwarehacking#embeddeddesign#techinnovation#circuitdesign#makercommunity#usbprogramming#electronicsproject
2 notes
·
View notes