At the beginning of 2009, I stumbled across some Nixie vacuum display tubes online, and promptly purchased them. I also happened to have a 3.3V Arduino Pro from Sparkfun laying around doing nothing, and apparently too much time on my hands. So, it was the perfect recipe for a Nixie Clock driven by an Arduino.
The clock uses six IN-8 Nixie tubes, six 74141 BCD decoder IC's to drive the Nixies, three 74HC595 serial to parallel shift registers, a DS1305 real-time clock IC to keep time, and a quadrature rotary encoder with integrated push button to set the time and other functions.
I have a lot of cleanup to do on the code, but it works as of right now. I also plan on implementing more features, but I thought that I would share my results so far.
I need to get some better pictures of the Arduino in the mixture, but it's in there :-)
The Arduino reads and sets time from the DS1305 RTC via SPI. The DS1305 also has a few bytes of user-usable memory, so I use that to store other information about user-settable functions. Right now, the one function I have is to be able to put the display to sleep so that the Nixie tubes last longer. I can set the hour in which they sleep and the hour where they wake back up using the rotary encoder. The integrated pushbutton lets me commit my changes and change the mode. Right now, mode 1 displays the time, mode 2 lets me set the time and modes 3 and for set the sleep and wake times for the display. I'm going to implement more functionality, like whether or not to display the time in 12/24 hour mode, and a cathode-poisoning
defense mode that will light all the digits on all the Nixies periodically. I will probably also add a date display feature, since the hardware already has this capability.
The Arduino also controls the 595 shift-registers using ShiftOut(), in which I output binary coded decimal (bcd). While developing this project, before getting the high-voltage power supply and 74141 drivers for the Nixies, I used the 595 shift registers to turn LED's on and off
. Essentially, I made a binary clock, and then turned that into a Nixie clock by replacing the LEDs with Nixie drivers. It actually worked out better than I thought it would :-)
I am actually considering coming up with a PCB design that will house the RTC, Shift registers and 74141 drivers so that I can make my next clock even better. For now, though, this hacked up attempt is encouraging to me. It's my most complicated electronics project to date.