Build a Nixie Tube Clock: High-Voltage Driving, IN-14 Tubes, and Multiplexing
Nixie tubes are one of the last places where electronics build quality is judged by the warm, uneven glow of neon gas rather than the crispness of an LED matrix. Each tube is a cold-cathode display: ten stacked wire digits (0-9), each its own cathode, sitting inside a glass envelope filled with neon and a trace of mercury, with a fine wire mesh anode running through the stack. Apply roughly 170V across the anode and one digit's cathode and that digit lights up in its characteristic orange glow. This project builds a working clock around four IN-14 tubes — the most common salvaged Soviet-surplus tube and a reasonable starting point — covering the high-voltage supply, the multiplexed driver circuit, and the enclosure that makes it safe to have on a desk.
Safety First: This Project Involves Lethal Voltage
Nixie tubes run on roughly 170-180V DC, and the boost converter that generates it operates from a battery or low-voltage supply through a switching inductor that can produce short but nasty voltage spikes if probed incorrectly. This is not a "be careful" footnote — treat the high-voltage side of this build the way you'd treat a CRT monitor or a disposable camera flash circuit.
- Build and test the boost converter on the bench with a current-limited supply and a resistive dummy load before a single tube is connected.
- Never touch the high-voltage board with the power on, even briefly — capacitors on the boost output can hold a charge for seconds after power-off. Discharge them through a resistor (not a screwdriver) before handling the board.
- Fully enclose the anode/cathode wiring and the driver ICs in a case with no exposed traces; only the tube faces themselves should be accessible to fingers.
- Keep this project away from young children regardless of enclosure — a Nixie clock is a display piece, not a toy, and should live somewhere it won't be handled casually.
How the Tubes Are Driven
You cannot drive a Nixie digit like an LED — 170V is well beyond what any common microcontroller-adjacent transistor switches safely without help, and each tube has ten cathodes that each need independent high-voltage switching. The standard solution is a high-voltage driver IC built for exactly this job: the K155ID1 (a Soviet-era BCD-to-decimal decoder that directly drives Nixie cathodes) or the more modern equivalent built from discrete high-voltage NPN transistors like the MPSA42, one per cathode digit, each gated through an optocoupler or a small logic-level transistor from the microcontroller.
To keep the part count and wiring sane across four tubes (40 cathodes total), this build uses multiplexing: only one tube is fully powered at a time, each for roughly 2-3 milliseconds, cycling through all four tubes fast enough (150+ Hz refresh) that persistence of vision makes them all look continuously lit. This drops the cathode driver count from 40 down to 10 shared decade drivers plus four anode-select transistors (one per tube, switching the 170V anode supply for that tube on and off). An ESP32 or ATmega handles the multiplexing timing and BCD output in software — this is a straightforward timer-interrupt loop, not anything exotic.
Bill of Materials
- IN-14 Nixie tubes (x4, or x6 for HH:MM:SS)
- Nixie tube PCB sockets
- High-voltage DC-DC boost converter module (12V to 170-180V)
- K155ID1 or equivalent Nixie decade driver ICs
- MPSA42 high-voltage NPN transistors (for anode switching)
- ESP32 dev board
- DS3231 real-time clock module with battery backup
- High-voltage ceramic and electrolytic capacitors (250V rated) for the boost converter output
- Perfboard or custom PCB for the driver stage
- 12V 2A DC power supply
- Wood or acrylic sheet stock for the enclosure
- Insulated 22AWG hookup wire rated for 300V+
Difficulty and Build Time
DifficultyAdvanced Build time10-16 hours across an evening or two, plus enclosure fabrication Tools requiredSoldering iron, multimeter with a rated 600V probe, isolated bench power supply, laser cutter or CNC router for the enclosure panels, basic hand toolsBuilding the High-Voltage Supply
Rather than winding a custom flyback transformer, this build uses a ready-made 12V-to-170V boost converter module — the same category of part used in inexpensive Nixie clock kits, based on a switching regulator IC like the MC34063 or a dedicated boost controller driving a small inductor. Feed it from a clean 12V 2A supply; the current draw at 170V for four multiplexed tubes is modest (well under 20mA average), but boost converters are sensitive to input noise, so keep the 12V wiring short and add a bulk electrolytic capacitor right at the module's input.
Verify the output voltage with a multimeter set to a range that can safely read 200V DC before connecting anything else — most cheap boost modules have a trimpot for output voltage adjustment, and getting this wrong in either direction either under-drives the tubes (dim, unreliable digits) or over-drives them (shortened tube life, excessive current through the driver transistors).
Wiring the Multiplex Driver
Each tube's ten cathodes connect in parallel across all four tubes — cathode "3" on tube one wires to cathode "3" on tubes two through four, and so on — because only one tube is powered (via its anode) at any instant, so there's no cross-talk between tubes sharing a cathode driver line. The K155ID1 (or your discrete transistor equivalent) takes a 4-bit BCD input from the microcontroller and switches the appropriate single cathode to ground for whichever digit needs to display.
The four anode lines each get their own MPSA42 high-voltage switching transistor, gated by a GPIO pin (through a current-limiting base resistor) from the microcontroller. The multiplex loop is simple: for each tube in sequence, set the BCD value for that tube's digit on the shared cathode drivers, switch that tube's anode transistor on for roughly 2ms, switch it off, move to the next tube. Run this on a hardware timer interrupt rather than in the main loop so WiFi or other blocking code on the ESP32 doesn't introduce visible flicker.
Firmware: Timekeeping and Multiplexing
Pull time from a DS3231 RTC module over I2C rather than relying on the ESP32's internal clock alone — the DS3231's temperature-compensated crystal keeps drift under a couple of seconds a month, and its coin-cell battery backup means the clock keeps correct time through power outages, which a Nixie clock that has to be manually reset after every blip is a genuinely annoying object to own. If the ESP32 has WiFi available, sync the DS3231 against NTP on boot and periodically thereafter as a secondary reliability layer.
Structure the firmware in two independent loops: a fast hardware-timer interrupt (500Hz-1kHz) that does nothing but cycle through the four tubes and set cathode/anode states from a small in-memory digit buffer, and a slow main loop (once per second) that reads the RTC and updates that digit buffer. Keeping these separate means the display never stutters even if the main loop briefly blocks on an I2C read.
Building the Enclosure
The enclosure has two jobs: hide every trace of the 170V wiring from fingers, and show off the tubes. A common approach that pairs well with a laser cutter or CNC router is a two-layer design — a lower compartment in plywood or acrylic housing the driver PCB, boost converter, and wiring, fully enclosed, with a top panel that has four precisely-sized holes or a routed pocket for the tube sockets to sit in, tube glass proud of the surface and everything below the socket flange sealed off. Add ventilation slots on the enclosure sides away from finger access — the boost converter and driver transistors generate some heat, and Nixie tubes themselves run warm during operation.
Testing and Commissioning
- Bench-test the boost converter alone into a resistive dummy load (a few 100kΩ resistors in series) and confirm stable 170-180V output before any tube or driver IC is connected.
- Connect one tube and one cathode driver IC at a time, verifying each digit lights correctly before wiring the rest.
- Bring up the multiplex firmware with all four tubes connected but at a slow, easily-observable refresh rate first (10-20Hz) to visually confirm each tube is showing the right digit with no cathode/anode wiring swaps, then increase to full refresh speed.
- Run the finished clock continuously for at least 24 hours before closing up the enclosure permanently, watching for any digit that dims, flickers, or fails to strike reliably — a sign of a marginal solder joint or an anode transistor running too close to its voltage rating.
A finished Nixie clock is a genuinely unusual object on a desk — nothing else in a typical maker's project pile produces that particular warm orange glow, and the fact that it runs on a piece of 1970s Soviet military-surplus display technology driven by a 2024 microcontroller is most of the appeal. Respect the high-voltage side of the build, and it's a satisfying weekend project that keeps running for years; Nixie tubes themselves are rated for tens of thousands of hours and mostly fail (if ever) from cathode poisoning after extremely long continuous runtimes, not from age alone.
Related Guides
- Real-Time Clock Modules for Arduino and ESP32: DS3231 vs DS1307, Battery Backup, and NTP Sync
- Build a Wall-Mounted Smart Clock and Weather Display (ESP32 + RTC)
- Build a DIY Geiger Counter with a Pancake Tube and ESP32
- How to Program Addressable LED Strips: WS2812B Patterns, Effects, and Power Design
- I2C vs SPI vs UART: How to Choose and Use Serial Communication Protocols
- How to Use Sensors with Arduino and ESP32: Temperature, Distance, Load, Current, and Hall Effect
- How to Control Motors with Arduino and ESP32: Stepper, DC, and Servo Drivers
- How to Hack Wi-Fi and Bluetooth with the Flipper Zero and Wi-Fi Marauder