

CNIX V2 Control Board
Nixie Tube Clock with flexible tube driver
- Size
- 165 × 51 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 112
- Nets
- 83
- Pads
- 313
- Tracks, vias
- 605, 286
- Pours
- 20
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 11 Mar 2025
- Updated
- 5 Oct 2026
Overview
CNIX V2 Control Board is an open-source printed circuit board by Stustup, from the Stustup/C-Nixie_CNIX repository on GitHub. It is a 2-layer board of 165 × 51 mm with 112 parts on 83 nets, routed with 605 tracks and 286 vias.
It is built around the STM32G051C8T3, UCC3803D and ABS25-32.768KHZ-T, with the BAT54W, ES2G and FDS2734 among its other parts. Its parts include 28 capacitors, 28 resistors, 11 connectors, 7 diodes and 4 switches. It belongs with the lEDs and displays boards and the STM32 boards of this library.
Main components
7STM32G051C8T3
LQFP-48(7x7)LQFP-48(7x7) Microcontrollers (MCU/MPU/SOC) ROHSSTMicroelectronicsMicrocontrollers (MCU/MPU/SOC)UCC3803D
SOIC-8-40℃~+125℃ 1A 3.6V~12V 31kHz 4V 650mW 99% Boost、Flyback、Buck、Forward Isolation Over Current Protection、Soft-start、Under-voltage lockout、Leading edge blanking PWM Modulation Primary-side feedback SOIC-8 AC-DC Controllers and Regulators ROHSTexas InstrumentsAC-DC Controllers And RegulatorsABS25-32.768KHZ-T
SOJ-4-40℃~+85℃ 12.5pF 32.768kHz 50kΩ ±20ppm SOJ-4 Crystals ROHSAbraconCrystalsBAT54W
SOD-123Schottky DiodeshongjiachengES2G
SMA(DO-214AC)-65℃~+150℃ 1 Independent 1.25V@2A 2A 35ns 400V 5uA@400V SMB(DO-214AA) Fast Recovery / High Efficiency Diodes ROHSGOODWORKFast Recovery / High Efficiency DiodesFDS2734
SOP-8-55℃~+150℃ 1 N-channel 2.5W 2.61nF 250V 2V 3A 40pF 45nC@10V SOP-8 MOSFETs ROHSonsemiMOSFETsMMBTA42
SOT-23-55℃~+150℃ 1 NPN 100 100nA 200mV 300V 350mW 500mA 50MHz 5V NPN SOT-23 Bipolar (BJT) ROHShongjiachengBipolar (BJT)
README
README.mdCNIX - Nixie Tube Clock
CNIX is a nixie tube clock that can accept many diffrent nixie tubes with only slight modifications to the tube carrier board.
The motivation was that there are not many clocks out there that let you use almost any nixie tube you like. Most have fixed power supplies, underdesigned driver stages or inflexible microcontrollers. I hope to tackle these problems with an adjustable boost converter PSU, extremely flexible (and electrically protected) driver stages and an open source firmware written with free tools.

Schematic
The control board consists of 4 parts:
- Power Supply
- Microcontroller
- I/O
- GPIO header

Power comes from a simple USB-C plug configured for 5V 3A max with the 5k1 CC line resistors. I thought about adding a PD controller for higher input voltages, but this would just have added complexity and locked you into more expensive USB PD power supplies.
The µC is a STM32G051, because it has an included RTC with added Vbat pin for an external battery, so that the RTC remembers time even when powered off. The unused GPIOs are broken out to a connector, so that in the future one could add cool stuff like a radio time reciever, a display or wifi. Time is set manually with the push buttons on top.
The PSU is heavily inspired by this site. I highly advise you giving it a read. The article goes in depth with boost converter design and its challanges.
The ht power supply is a DCM boost converter powered by the UCC3803. An active low enable pin is realized via pulling the frequency RC combination low. With normal usage temperature of around 50-60°C are reached by the output transistor and the controller, which is a safe area. The case is designed so that a convection current of air is directed over the power supply at all times. This vent should not be blocked.

The driver consists of 4 CD4028 BCD to Decimal converters and 6 SN75468 high voltage drivers. The SN75468 only work up top 100V, but when using two 48V zener diodes as clamps, the voltage on the torned off digits never reach above 100V and above the startup voltage of the nixies. So win win.
I didn't use the old high voltage nixie driving shift registers as they are more and more hard to find for a reasonable price. Also i did not use shift registers at all, to simplify programming and wiring. Instead the whole Port B of the STM32 is used as a big 16 bit control register where the numbers are encoded in BCD. This ensures that there can not be 2 turned on digits at the same time in one tube to prevent bugs and damaging the beautiful nixies.
Except the decoupling capacitors, diopdes and LEDS, everything is a simple to reflow solder IC, The tube pins have to be assembled manually (by putting them on a tube an inserting it into the holes before soldering it to ensure perfect alignment).
The case is designed in FreeCAD and printed in PLA or PETG. Assembly is a bit of a hassle, but the fit is perfect. You can print a front plate, but i think the clock is vastly more beautiful when paired with a wooden front plate. Drill files for this are within the CAD folder. The holes for the LED front indicators can be filled with a 3mm lightpipe cut to length, to get a beautiful finish. Case, PCB and front plate are screwed together with 15mm M3 wood screws.

Neat features
Adaptability
If you want to use any other nixie (up to around 5mA per tube of HT supply current) just modify the tube board PCB to fit your tubes. The driver, power supply and control logic should all be compatible with any other tube. Of course you have to modify the driving circuit when not using the simple common anode topology.
USB-C support
Use any USB power supply with a minimum current of 1.7A (The startup of the boost converter needs a lot of current) Standard power consumption is around 2W (400mA at 5V) when the boost converter is powered on and around 0.2W (40mA at 5V) when the boost converter is powered down.
Fallback structure
If for some reason you change your mind while setting the start/stop times or the main time, just wait for around a minute. The menu will exit automatically, discard all changes and get back to the main time display.
Date and Sensor display
Press the "plus" or "minus" buttons to cycle through submenus in this order: Main Time display -> Date display -> Sensor Display These have a short timeout time to get back to the main Time menu. The sensor display gets disabled when there is no sensor addon board present.
Automatic daylight saving time (DST)
The clock will calculate DST on its own and set the time correspondingly, even when the DCF77 module is not used.
Turn on/off timers
You can set power on and off times in the clock natively, so that the nixies dont always glow. With this the HT-power supply also gets deactivated to save power and lifespan of the parts. There are two sets of start and stop times set by the buttons on the menu with the lower LED blinking. The order is: Start1 -> Stop1 -> Start2 -> Stop2. If all are set to 0, the start stop automatic gets disabled. The start stop times are saved to a backup register of the µC, so the clock remembers them even when powered off as long as the RTC battery is present.
Peek
When out of the "on" timeframes you can "peek" at the current time for 10s with a press of the menu-button. During these 10s you can jump to all the diffrent menus.
Addon Boards
The breakout pins next to the µC can be used for addon boards. Pins D2 and D3 of the µC are used to detect those with an ID system.
| ID | Board |
|---|---|
| 0b11 | No Addon board installed -> defualt |
| 0b00 | DCF77 Addon Board used |
| 0b01 | not yet used |
| 0b10 | not yet used |
Most of the hardware features of the STM32G051 should be mapped to the pins on the breakout. If not you're out of luck (it's open source, so just change it). Stuff like the ST-Link programming pins or I2C are broken out on extra headers to simplify future expansion.
DCF77 Addon Board
In germany (and most of europe) we have the DCF77 signal pushed out by the radio transmitter near Frankfurt.
This board hosts a cheap module from ebay and a HTU21D temperature and humidity sensor. The driver is already programmed into the Control Board and gets enabled when this addon board is detected.
When a valid time is recieved the manual timeSet menu gets disabled, to prevent fuckery.
It is setup, that every night at 2 an alarm gets triggered by the RTC to recalibrate time. If the time-parity bit is not matched within a 20 minute timeout an attempt counter is incremented, which gets saved to a backup-register inside the RTC. As long as a RTC battery is powering the µC this register is kept even when the power is off.
If the attempt counter reches 3 days without successful calibration against the radio time the manual timeSet menu gets enabled again.
On the DCF77 Addon board there is a single pin to give structural strength to a simple perfboard on the main breakout bus. One can use this in tandem with the A1, A2, A3, A4, F0 and F1 pins.

Ideas for future addon Boards:
- ESP32 addon board to integrate WiFi time synchronisation or HomeAssistant integration
- Other sensors like air quality sensors
- maybe displays?
TODO
- Change to new MCU. STM32H5 for USBC pd -> more efficient boost converter because higher input voltage
- Sleep modes during off times paired with wakeup alarms at start times -> reduce power consumption even more
- Improve the case to simplify assembly
- More tube boards to fit more types of nixies (IN-14 e.G.)
- BOM optimization to reduce number of unique parts
- galvanic isolation between high voltage areas and µC GPIOs
Parts
112| Qty | Value | Footprint | References |
|---|---|---|---|
| 16 | TestPoint_Small | TestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mm | TP4, TP5, TP6, TP7, TP8, TP9, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18, TP19 |
| 10 | 4k7 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R4, R5, R6, R7, R8, R9, R10, R11, R12, R15 |
| 9 | 100n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C2, C4, C5, C8, C9, C10, C11, C104, C106 |
| 7 | TestPoint_Small | TestPoint:TestPoint_Pad_D1.5mm | TP1, TP2, TP3, TP20, TP22, TP23, TP24 |
| 3 | 1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R100, R107, R113 |
| 3 | LED_red | LED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D1, D2, D3 |
| 2 | 100k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R101, R102 |
| 2 | 100n 250V | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C112, C114 |
| 2 | 100u 16V | Capacitor_SMD:CP_Elec_6.3x7.7 | C113, C115 |
| 2 | 10u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C6, C12 |
| 2 | 220u | Capacitor_SMD:CP_Elec_8x10 | C100, C105 |
| 2 | 2k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R16, R103 |
| 2 | 330k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R111, R112 |
| 2 | 5k1 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R13, R14 |
| 2 | 6p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C3 |
| 2 | GND | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J8, J9 |
| 2 | LED_G | LED_SMD:LED_0805_2012Metric | D102, D103 |
| 1 | 0R | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R106 |
| 1 | 0R1 | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R108 |
| 1 | 100nf 250V | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C111 |
| 1 | 100p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C109 |
| 1 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1 |
| 1 | 1n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C107 |
| 1 | 220p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C103 |
| 1 | 22u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C7 |
| 1 | 2u2 250V | Capacitor_SMD:C_2220_5750Metric_Pad1.97x5.40mm_HandSolder | C110 |
| 1 | 33u, 4.2A | Inductor_SMD:L_12x12mm_H8mm | L100 |
| 1 | 430p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C102 |
| 1 | 47u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C101 |
| 1 | 4k12 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R104 |
| 1 | 560p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C108 |
| 1 | 60k4 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R105 |
| 1 | 634k | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R109 |
| 1 | 7k68 | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R110 |
| 1 | ABS25-32.768KHZ | Crystal:Crystal_SMD_Abracon_ABS25-4Pin_8.0x3.8mm | Y1 |
| 1 | AP7361C-33ER-13 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | BAT54W | Package_TO_SOT_SMD:SOT-323_SC-70 | D100 |
| 1 | Coin Cell | Battery:BatteryHolder_Renata_SMTU2032-LF_1x2032 | BT1 |
| 1 | ES2G | Diode_SMD:D_SMB_Handsoldering | D101 |
| 1 | EXT | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1 |
| 1 | EXT | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | J4 |
| 1 | FDS2734 | Package_SO:SO-8_3.9x4.9mm_P1.27mm | Q101 |
| 1 | GND | TestPoint:TestPoint_Plated_Hole_D3.0mm | H100 |
| 1 | GND | TestPoint:TestPoint_Loop_D3.80mm_Drill2.0mm | H1 |
| 1 | HT | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J7 |
| 1 | HT_en | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J100 |
| 1 | I2C_ext | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J5 |
| 1 | LED | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J10 |
| 1 | LOGO | Logos:C Audio Logo 15mm | G*** |
| 1 | MMBTA42 | Package_TO_SOT_SMD:SOT-23 | Q100 |
| 1 | Prog | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J6 |
| 1 | RST | Button_Switch_SMD:SW_SPST_Omron_B3FS-100xP | SW1 |
| 1 | STM32G051C8T3 | Package_QFP:LQFP-48_7x7mm_P0.5mm | U1 |
| 1 | SW_Menu | Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx31-2LFS | SW3 |
| 1 | SW_Minus | Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx31-2LFS | SW2 |
| 1 | SW_Plus | Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx31-2LFS | SW4 |
| 1 | Tube Out | Connector_PinSocket_2.54mm:PinSocket_2x08_P2.54mm_Vertical | J3 |
| 1 | UCC3803 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U100 |
| 1 | USB_C_Receptacle | Connector_USB:USB_C_Receptacle_GCT_USB4085 | J11 |
More from Stustup/C-Nixie_CNIX
2- 2 layers185 × 51 mm

- 2 layers77 × 47.5 mm

Similar boards
- 2 layers168.8 × 95.8 mm

- 2 layers38.6 × 29 mm

NixieSupply5vto170vDCMBoostMini
drkmsmithjr/NixiePowerSupply
170v Nixie Tube Power Supply from 5v Supply
43 parts98MIT - 4 layers155.3 × 50 mm

- 4 layers20 × 140 mm

- 4 layers76.2 × 51.4 mm

Pypilot controller
ottermarine/pypilot_controller
A repo for working on a snapshot of a PyPilot motor controller from SdE
99 parts - 4 layers156.2 × 76.2 mm

- 4 layers140 × 100 mm

- 2 layers85.5 × 66.8 mm

Questions
How big is the CNIX V2 Control Board PCB?
It measures 165 × 51 mm and has 2 copper layers, 1.6 mm thick.
What parts does the CNIX V2 Control Board use?
112 parts, built around the STM32G051C8T3, UCC3803D, ABS25-32.768KHZ-T and BAT54W. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the CNIX V2 Control Board KiCad files?
From the Stustup/C-Nixie_CNIX repository on GitHub, at the commit this page was made from: the board is Hardware/Control Board/CNIX V2 Control Board/CNIX V2 Control Board.kicad_pcb and its schematic Hardware/Addon Boards/DCF77-Addon/DCF77-Addon.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the CNIX V2 Control Board design in my own project?
Its repository states no licence, so its author keeps all rights: ask Stustup before reusing the design.