Introduction: Retro Nixie Tube Clock

About: Big hobbyist in the mechanical and electrical field of science. Amateur film photographer and reader

Hello in this post i´ll show u how i made Nixie tube clock utilizing ZM1080 tubes, SN74141 drivers and Atmega 328p.

Its stylized as what i would imagine as clock made industrial (I liked old Czechoslovak Tesla designs of meters)

Since i wanted to use 6 nixie tubes (2 for hours, 2 for minutes and 2 for seconds) i chose to use shift registers to spare pins on atmega and make wiring easier. I used 3 74hc595 whose 8 bits were split into 2 4-bit outputs to drive SN74141. I also incorporated 4 buttons, 3 wired to pins of Atmega to setup time and one wired to RST pin of Atmega to reset it. The main feature of clock is to show precise time, so in addition i used DS1307 I2C real time clock.

Step 1: Design

I designed the pcb in EASYEDA utilizing its ability to share footprints mady by user, so I didnt have to make my own for the nixie tubes. The design took about 2 days to complete, but even after making pcb and putting everything together I had to do troubleshooting. The design consists of 3 pcbs:

1) pcb with Atmega, tubes and RTC

2) psu

3) Buttons

The First pcb is the most complicated part of this project. Since im doing most of pcbs at home i couldnt utilize 4 layer pcb (2 for connnecting signals, 2 for power) so I hardwired the power rails from one ic to another, which could have been done better, but I am lacking quite the determination to do it (after 2 hours of strippping small wires I was so mad I didnt touch the project for a day). After installing power rails I started instaling all small components (resistors > capacitors > crystal > sockets > nixies). The most irritating thing about my project is the fact I hardwired the Anode power connection and 5v rails (meaning wires sticking from pcb to first pcb connectors).

The power supply is classic 5 volt design using transformer, graetz rectifier, some filters and LM7805. The ,,Weird" part is that the neutral is connected to the minus of the 5 volt psu, Otherwise the nixies dont shine. I´ve put heatsink on the regulator but there isnt much current being used so its kinda useless. The nixies require resistor in series to Anode of the tube for lowering voltage from 230V to around 17O v. Using datasheet we can determine that we need 56k Ohm resistor, I was paranoid so I used 2w package, but 1w should be ok (dont take my word for it :D). The pcb has its inputs and outputs made into screw terminals. I tried to make use of seperate colours (Black = life threatening, blue = safe (5 volt and grounding). Also the switch has its own screw terminal because i dont like making wire connections from part to part.

The buttons pcb is simple, 4 buttons with 1 connector.


I wanted the pcbs to look profesional, so I used JST-XH connectors for leds and rst button, for everything else I used normal Screw terminals.

Step 2: Box

The box is made of sheet metal with aproximatly 2mm thickness. Its very primitive construction which was mayde by break wise. The whole process of making took about 2 work days. Its painted Black and white.

Hardest part about makin anything out of sheet metal is the work to make fitting holes for the switches and connectors and all that stuff while having it flat before bending.


Step 3: Trouble Shooting

The biggest problem I encountered was getting it to work, few of my problems were: 1) didnt connect 2 gnds on ATmega, 2) bad crystal 3) neutral disconnected from gnd. After hours of troubleshooting I made it work. One of the weird quirks is the white-purple glow behind the number on nixies with damaged red coating.


Step 4: Code

From the codes perspective its simple and straight foward. Its first take information from ds1307 and then divides it into 6 4-bit values to then send to 74HC595. Theres one thing that might bug some people and thats the "seconds" led, which isnt synced to nixies updating but uses millis(); and simple math to determine if second passed (previous version used delays, which made the program slow and re-programing time using buttons even slower). The buttons got de-bounce tie of 300ms which is enough. For some reason sometime I get random time which doesnt corespond to the actual time, but re-programing time makes it disappear. Theres also a "reset sequence" which make the nixies to show one number after another to help debugging but also to inspect the wear on them. The code showcase is also on Wokwi: https://wokwi.com/projects/435088086154402817