/Engineering
/Engineering
Nixie Tube clock
Jacob Thompson December 2016
Background
A Nixie tube is a glass tube used in the mid 1900's to display numbers. It is filled with neon gas, and when you run power through it (around 180 volts DC) the metal segments light up to display a number. Each nixie tube has 10 separate metal cutouts - one for each digit 0-9 all stacked inside of the tube. The page on Wikipedia goes into far more detail on it here: https://en.wikipedia.org/wiki/Nixie_tube
If you're interested in making a project with Nixie tubes yourself I highly recommend reading the Instructable I wrote here: https://www.instructables.com/id/Nixie-Tube-Clock-W-Arduino-Mega/
My version of the project is unique by using four separate Nixie tube driver IC chips instead of using a single driver and a multiplexor chip like most Nixie tube projects do.
Features
A few of the things the clock can do using the rear control panel
-
Change the time. There are separate buttons for
-
Minute + 1
-
Minute - 1
-
Hour + 1
-
Hour - 1
-
-
Change the color mode
-
Solid red, white, orange, blue, or green
-
Smooth fade throughout the rainbow
-
Smooth fade of orange to purple to white and repeat
-
Turn off lights
-
Parts
Below is a parts list of what I used. I ordered most of the parts on Ebay from sellers in China, because it's cheaper. I ordered the parts early enough that I could wait the 1-2 months for them to come in.
-
Arduino Mega
-
NH-14 Nixie tubes (4)
-
DS3231 clock module
-
Voltage booster 130-200V
-
5.6KΩ 3W resistors (8)
-
K155ID1 Nixie driver (4)
-
8 pushbutton matrix
-
Toggle switch SPDT
-
Breadboard
-
Lots of wire
-
Heat shrink tubing + heat gun
-
Solder + soldering iron
-
Hot glue
Soldering
Each nixie tube has 13 wires on the bottom of it (0-9, power, and two decimal points). I wasn't using the decimal points, but I still had to solder 11 small wires on the bottom of each tube.
I like to bend a hook in the end of each wire I'm soldering so that they'll stay together even if the solder fails. I also had to use heat shrink tubing around each connection so that the wires wouldn't touch each other and short anything out.
For the leftmost digit on the clock (12:45) I only soldered wires to display the digits 0-2, since there isn't a time that needs more than a 2 in that place. I have no intentions of displaying the time in military format, but at least I have the option.
All the wires cut/bent for 1 tube |
---|
One tube down, 3.5 to go |
Three of the four soldered tubes |
Wiring
Breadboard layout |
---|
Partially wired |
Fully wired up |
Wired up with the top on |
I learned a lot about wiring/controlling Nixie tubes from this Instructable guide: http://www.instructables.com/id/How-to-Control-a-Nixie-Tube-with-an-Arduino/
On the left and right of the board you can see the sets of 5.6kΩ resistors. I used two of the resistors in series to add up to 11.2kΩ, which is close to the 12kΩ that the instructable recommended.
The large item in the bottom left is the clock module. The four IC's are the K155ID1 drivers for the nixie tube. You feed a 5V signal from the Arduino, and those IC's can switch power at a the 180V that the nixie tubes need. They have 4 inputs and 10 outputs (the four inputs are binary, 0101, which it converts to turning on spots 1-10)
I later added in some resistors for the RGB LED lights I put under each nixie tube. Each nixie tube sits on top of an acrylic standoff that I laser cut.
Testing
After wiring everthing up, I thought it would all work perfectly.
It did not work perfectly.
When I was wiring multiple of the tube wires to the driver IC chips, I messed up and put wires in the wrong holes. Instead of the nice sequence in the video on the right, Some of the tubes might display in the order 0-1-4-6-2-3-8-5-7-9. I eventually got all the wires put in the right places, and recorded the nice video you see on the right.
I was super excited to be this far in the project, because it basically meant that I just had to do some programming and then it was done.
Programming
You can download the code here if you want: [Google Drive link] or with the Download button on the right
Here's my pseudo-code for the project:
void setup()
Initialize the clock module
set the LED pins as outputs
loop()
Read the button matrix, see if any buttons are pressed
if a time changing button is pressed, change the time for its respective change
if a color button is pressed, change the led mode to that
if the 11:11 button is pressed, display 11:11 with green lights for a few seconds
Read the time from the clock module
See if the time has changed from the last time we wrote values to the driver IC's
if the time has changed, write new values to the IC's