Huge Wood Nixie Clock
by andrea biffi in Circuits > Arduino
111361 Views, 1074 Favorites, 0 Comments
Huge Wood Nixie Clock
As many of you have already understood, I'm a bit nixie-addicted.
This is my third nixie clock, and as for previous ones its making process has been fully documented into an instructable, so that everybody with patience and a few tools can build it.
WARNING: the circuit raises the voltage to deadly 300V so you must avoid to touch contacts while working, I'm not kidding, please BE CAREFUL!
What Is a Nixie Tube?
Nixies are devices used to display numerals and symbols around '60 and '70 era. USA and Russian Federation developed similar products, but in Russia nixies survived up to '80 years and more, so now the Soviet NOS (New from Old Stock) Nixies are cheaper and more common than US brand, even though lately some versions are becoming rare and very expensive.
If you wish to analyze what exactly a Nixie tube is you can read the description on wikipedia and look some Nixie examples in the Vintage Technology Association collection.
Mine are Gazotron IN-12 which can be found for cheap on eBay.
Other Components
The six digits represent in three couples hours, minutes and seconds. I didn't like the dots between numbers, but you can easily add them if you prefer. Indeed the circuit described and the pcb in this instructables already provide power for two neon bulb indicators.
To enlarge the view of the IN-12 cathodes I used six glass paperweights, which are actually heavy lenses.
Then I decided to build the case with oak wood boards for body, a less noble wood for back side, and stainless steel for the front side. In the picture you can also see a pair of beer bottles, which give to you a meter to compare dimensions.
The Holes
Dimensions are also specified in the drawing. The lenses have a diameter of 60mm, and I had to use a special drill bit to make holes in the wood front panel, which is needed to keep lenses in place. In front of this wood board is the stainless steel plate. This plate has been cut with a plasma router, on the basis of that drawing.
The Wood Case
The wood boards have been carved with a milling machine, so that front and back board will shift into the grooves.
With a circular saw I was able to cut 45° short edges, and so my boards are now like the four sides of a picture frame, and the correspond one each other.
Wires
There are many wires in this project, because I didn't use a tube shield like the first two clocks. Instead I decided to connect the six tubes together and to the main pcb all by wires.
Connections are easy, you can see the diagram in the picture.
To fast connect nixies's pins to the wires, and also to easily recognize one wire from the others, I used colored Dupont cables. I had to enlarge a bit the female head with a paper clip, but then they became perfect. I soldered and added pieces of hot shrinking tubes.
Pin Rows
At the other end of the cables, two pin rows will be inserted in the corresponding rows for anode and cathode on the main (and sole) pcb. On all six anodes you have to solder one 4K resistor each one. Please refer to my first nixie clock for the explanation and the calculation of this value.
Nixie Holders
Here I had to think a lot about the method to keep the nixie tubes suspended directly behind the glass of the lenses.
Eventually my best thought was to engrave six wood pieces which keep the tubes from above. In this way you will not see the supports looking the clock. A nice copper wire, wrapped 5 or 6 times around the tubes and inside an hole in the wood pieces, keeps the nixie in place and lets you move a bit them to set the right distance from the glass.
Connect Holders
I drilled by hand the holes behind the front board, just above the lenses seats. Six screws will keep the wood holders connected with the board.
To decide the right height of the supports you have to make some test, since magnification factor is connected with distance from the glass, but these factors also modify the narrow angle of view of the clock. To keep the clock on a level lower than your eyes, you have to place nixie tubes a bit lower than the centre line of the lenses.
Complete the Digits Row
When you are sure of the right distance to use (that is an your choice, and it will affect the style of the clock), you can drill all the holes, wrap all the tubes and screw all the supports on the board.
Bom and Schematic
The Pcb
After many prototypes I ended up to build a large number of boards ready to be filled with components. Actually all prototypes have been etched with ferric chloride, and if you don't want to pay for a professional manifacture, you can follow this step of my first nixie clock ible.
I attach here the bottom layer and the top silk of the pcb, you can find on the top silk every information needed to solder the components of the b.o.m. You also will find bottom layer with no copper pour, but I suggest to use copper pour to reduce interference between traces.
Soldering
I always love the soldering part.
Try to never burn any transistor or other components, and check every connection at the time you solder it, so you will have no surprises and the circuit will work good.
Before connecting the nixies remember to set the high voltage to +180V acting on the pot, and checking voltage on the right pins (gnd and +180V) with a multimeter. This circuit is able to provide a voltage up to 300V, so be careful... and I repeat again:
WARNING: this circuit raises the voltage to deadly 300V so you must avoid to touch contacts while working, I'm not kidding, please BE CAREFUL!
The Code
The code of this clock is the same of my second nixie project. The code derives from the open source material available on Arduinix website, and I modified that code to use only one nixie driver instead of two, since I don't need to run more than 6 digits, and I prefer to save drivers. I uploaded the code to the Atmega8 IC using an Arduino board, it's the simpler way in my opinion, but notice that you probably need to burn the bootloader on the new IC to be able to use it in Arduino, I use an USBtinyISP programmer.
// Arduinix 6 Bulb - Also supports Hour and Min. time set. // // This code runs a six bulb setup and displays a prototype clock setup. // NOTE: the delay is setup for IN-17 nixie bulbs. // // original code by Jeremy Howa // www.robotpirate.com // www.arduinix.com // 2008 - 2009 // code modified by Andrea Biffi www.andreabiffi.com to work with only one SN74141 // // Last Edit Nov 2013 // // SN74141 : True Table //D C B A # //L,L,L,L 0 //L,L,L,H 1 //L,L,H,L 2 //L,L,H,H 3 //L,H,L,L 4 //L,H,L,H 5 //L,H,H,L 6 //L,H,H,H 7 //H,L,L,L 8 //H,L,L,H 9 #define DEBUG_ON false // SN74141 int ledPin_0_a = 2; int ledPin_0_b = 3; int ledPin_0_c = 4; int ledPin_0_d = 5; // anod pins int ledPin_a_1 = 8; int ledPin_a_2 = 9; int ledPin_a_3 = 10; int ledPin_a_4 = 11; int ledPin_a_5 = 12; int ledPin_a_6 = 13; void setup() { pinMode(ledPin_0_a, OUTPUT); pinMode(ledPin_0_b, OUTPUT); pinMode(ledPin_0_c, OUTPUT); pinMode(ledPin_0_d, OUTPUT); pinMode(ledPin_a_1, OUTPUT); pinMode(ledPin_a_2, OUTPUT); pinMode(ledPin_a_3, OUTPUT); pinMode(ledPin_a_4, OUTPUT); pinMode(ledPin_a_5, OUTPUT); pinMode(ledPin_a_6, OUTPUT); // NOTE: // Grounding on pins analog0 and analog input 1 will set the Hour and Mins. pinMode(A0, INPUT ); // set the virtual pin analog0 (pin 0 on the analog inputs ) digitalWrite(A0, HIGH); // set pin analog input 0 as a pull up resistor. pinMode(A1, INPUT ); // set the virtual pin analog input 1 (pin 1 on the analog inputs ) digitalWrite(A1, HIGH); // set pin analog input 1 as a pull up resistor. if( DEBUG_ON ) { Serial.begin(9600); } } //////////////////////////////////////////////////////////////////////// // // DisplayNumberSet // Use: Passing anod number, and number for bulb, this function // looks up the truth table and opens the correct outs from the arduino // to light the numbers given to this funciton. // On a 6 nixie bulb setup. // //////////////////////////////////////////////////////////////////////// void DisplayNumberSet( int anod, int num1) { int anodPin; int a,b,c,d; // set defaults. a=0;b=0;c=0;d=0; // will display a zero. anodPin = ledPin_a_1; // default on first anod. // Select what anod to fire. switch( anod ) { case 0: anodPin = ledPin_a_1; break; case 1: anodPin = ledPin_a_2; break; case 2: anodPin = ledPin_a_3; break; case 3: anodPin = ledPin_a_4; break; case 4: anodPin = ledPin_a_5; break; case 5: anodPin = ledPin_a_6; break; } // Load the a,b,c,d to send to the SN74141 IC (1) switch( num1 ) { case 0: a=0;b=0;c=0;d=0;break; case 1: a=1;b=0;c=0;d=0;break; case 2: a=0;b=1;c=0;d=0;break; case 3: a=1;b=1;c=0;d=0;break; case 4: a=0;b=0;c=1;d=0;break; case 5: a=1;b=0;c=1;d=0;break; case 6: a=0;b=1;c=1;d=0;break; case 7: a=1;b=1;c=1;d=0;break; case 8: a=0;b=0;c=0;d=1;break; case 9: a=1;b=0;c=0;d=1;break; } // Write to output pins. digitalWrite(ledPin_0_d, d); digitalWrite(ledPin_0_c, c); digitalWrite(ledPin_0_b, b); digitalWrite(ledPin_0_a, a); // Turn on this anod. digitalWrite(anodPin, HIGH); // Delay // NOTE: With the difference in Nixie bulbs you may have to change // this delay to set the update speed of the bulbs. If you // dont wait long enough the bulb will be dim or not light at all // you want to set this delay just right so that you have // nice bright output yet quick enough so that you can multiplex with // more bulbs (2ms is standard). delay(2); // Shut off this anod. digitalWrite(anodPin, LOW); } //////////////////////////////////////////////////////////////////////// // // DisplayNumberString // Use: passing an array that is 6 elements long will display numbers // on a 6 nixie bulb setup. // //////////////////////////////////////////////////////////////////////// void DisplayNumberString( int* array ) { // bank 1 (bulb 1) DisplayNumberSet(0,array[0]); // bank 2 (bulb 2) DisplayNumberSet(1,array[1]); // bank 3 (bulb 3) DisplayNumberSet(2,array[2]); // bank 4 (bulb 4) DisplayNumberSet(3,array[3]); // bank 5 (bulb 5) DisplayNumberSet(4,array[4]); // bank 6 (bulb 6) DisplayNumberSet(5,array[5]); } // Defines long MINS = 60; // 60 Seconds in a Min. long HOURS = 60 * MINS; // 60 Mins in an hour. long DAYS = 24 * HOURS; // 24 Hours in a day. > Note: change the 24 to a 12 for non millitary time. long runTime = 0; // Time from when we started. // default time sets. clock will start at 12:59:00 // NOTE: We start seconds at 0 so we dont need a clock set // The values you see here would be what you change // if you added a set clock inputs to the board. long clockHourSet = 12; long clockMinSet = 59; int HourButtonPressed = false; int MinButtonPressed = false; //////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////// void loop() { // Get milliseconds. runTime = millis(); // Get time in seconds. long time = (runTime) / 1000; ///change this value to speed up or slow down the clock, set to smaller number such as 10, 1, or 100 for debugging int hourInput = digitalRead(14); int minInput = digitalRead(15); if( DEBUG_ON ) Serial.println( hourInput ); if( hourInput == 0 ) HourButtonPressed = true; if( minInput == 0 ) MinButtonPressed = true; if( HourButtonPressed == true && hourInput == 1 ) { clockHourSet++; HourButtonPressed = false; } if( MinButtonPressed == true && minInput == 1 ) { clockMinSet++; MinButtonPressed = false; } // Set time based on offset.. long hbump = 60*60*clockHourSet; long mbump = 60*clockMinSet; time += mbump + hbump; // Convert time to days,hours,mins,seconds long days = time / DAYS; time -= days * DAYS; long hours = time / HOURS; time -= hours * HOURS; long minutes = time / MINS; time -= minutes * MINS; long seconds = time; // Get the high and low order values for hours,min,seconds. int lowerHours = hours % 10; int upperHours = hours - lowerHours; int lowerMins = minutes % 10; int upperMins = minutes - lowerMins; int lowerSeconds = seconds % 10; int upperSeconds = seconds - lowerSeconds; if( upperSeconds >= 10 ) upperSeconds = upperSeconds / 10; if( upperMins >= 10 ) upperMins = upperMins / 10; if( upperHours >= 10 ) upperHours = upperHours / 10; // Fill in the Number array used to display on the tubes. int NumberArray[6]={0,0,0,0,0,0}; NumberArray[0] = upperHours; NumberArray[1] = lowerHours; NumberArray[2] = upperMins; NumberArray[3] = lowerMins; NumberArray[4] = upperSeconds; NumberArray[5] = lowerSeconds; // Display. DisplayNumberString( NumberArray ); }
Downloads
RTC Module and Automatic Lighting
The Real Time Clock (RTC) module will keep the exact time when you unplug the wall wart. Unfortunately I have not yet been able to improve my code with this feature, but I suggest you to buy a RTC module and already connect it, waiting that someone (maybe myself) find the time to complete the code. For now the clock turns on when you plug the wall wart, and without the RTC module you need to set the time every time you unplug it, not only the first time.
Another very important feature still to improve is the automatic lighting. Since nixie tubes have a short life (about 10000 hours, which is one year if you leave them always on), we need to turn them on only when needed. The simplest way IMHO is to add a mic and set up the Atmega IC to turn on the clock for some minutes every time the sound level in the room is different from silence...
Make a Test
Make a test of the circuit and place one or two lenses in the holes. If you are satisfied with the effect you can now focus on the six lenses (or paperweights as you wish).
The Paperweights Frames
These paperweights are quite cheap compared to a real lens (e.g. a glasses lens), but you can use any type of lens you are able to find.
In this specific case I wished to flip the aluminium border of the paperweights upside-down, so that I will have a small silver frame all around the edge. To make that I placed lenses in cold water and I warmed slower them, so that hot-glue dissolve and aluminium borders can be removed and reversed.
Glue the Lenses
I sustained lenses with three bolts each, and I glued them at the right height. To check the exact position of each lens use the stainless steel plate.
Sanding
To clean the stainless steel plate and to add a nice opaque effect to the surface you can sand it with a orbital sander and coarse-grained sandpaper. Look in the picture the nice looking, it will save you a lot of work compared to polish it as a mirror.
Before assembling the boards I suggest to make almost all the sanding on the wood surfaces, since they are still easy to manipulate. You can anyway leave the thin sandpaper for after the gluing. Check also that assembly is feasible, and that pieces fit one each other.
Glue the Case
Now you can glue the frame of the case. I used vinylic glue and a useful band clamp to keep the wood boards joined tight together. I also painted the inside of the rear board and all six wood supports by black.
The Sliding Back
To access to the inside of the clock, also to set the time, I designed a sliding back panel, and I didn't glue it to the clock body. Hal side panel act as a handle, and is very stylish ;-)
The Power Plug Socket
To connect the 9-12V DC PSU to the clock I used a metal standard 2.1mm socket. I drilled the wood board on the back side to make place for the socket body, then I screwed and glued the socket inside a smaller hole on the external board side.
Smoothing and Polishing
To obtain a better looking I decided to sanding again the edged, smoothing them, and checking that there are no discontinuities between wood parts. Then I sponged shellac on the clock surface, I sanded it with fine-grained sandpaper, and repeated the process a pair of times. After that I added wax and begun polishing.
Check Result
As you can see from the pictures (although in person is much better) the result is astonishing... wood is almost gold.
Add Rubber Tips
I glued four silicone small feet near the corners on the bottom surface.
Now Turn It On...
It's time to turn off the lights in the room, find the right stand for your new clock and plug in the power plug.
When you open the sliding back panel to set the time, pay attention to not touch the pcb contacts, or the components. Anyway the pushbuttons are on the external side, and are easily accessible. I preferred not to add any external button, in prevision to set up the RTC module. In that case you will not need to access the pushbuttons more than one time every five years ;-)
... and Enjoy the Plasma Glow
I still have to add some minor details to this instructable, but you now have all the information to retrace all the making process of a new, huge and unique nixie clock!
I know that you don't believe it... but there are still many improvements to do:
- add a RTC (Real Time Clock) module so that the clock keeps the time also when PSU is disconnected
- add a cathode poisoning prevention routine to extend tubes life
- add a sensor to only turn the clock when you are near (sound sensor, ultrasonic proximity sensor...) and save tubes life
- add an alarm function using the multi-tone speaker
...will they be fixed in my next ible? Let's hope so!
I took a few picture where you can see the proportions compared to an old standard 50mm lens, and also to my other two nixie clocks. I hope you enjoyed this my last project, stay tuned to see the next one!
Last note: about my last instructables I'm very glad to Ford, which sponsored me with a box full of useful tools!