Nixie Clock Project

In 1973 I bought a bunch of Burroughs B-7971 15 segment Nixie tubes from the local Burstein-Applebee store. They often carried electronic surplus and I may still have some surplus 8-track player chassis I bought from them way back then as well.

I built a 6 tube clock out of some of the Nixies and it was all TTL logic chips. Divide by 10, divide, by 6, divide by 2, etc. The time base was not the power line, that would have been too easy. Instead I built a 20 MHz oscillator board and divided it down to 1 PPS to feed the clock logic. Here are some pictures of those original hand drawn printed circuit boards.

Clock chassis removed from case.

The clock has served me well but does have one serious shortcoming, a power bump and I have to manually reset the time.

So I am going to bring it into the 21st century by replacing the discrete logic with a Raspberry Pi and derive my time off of the Internet! How's that for steampunk? Nixie tubes from the 1960's, meet computer processing from the 21st century!

Since the clock already has working 7448 drivers for the 7 segments of the Nixie tubes, the logical step would be to just feed them binary for each digit. It's not quite that simple with a microprocessor board such as an Arduino as the clock sketches typically generates decimal and I need a special kind of binary.

The Arduino generates this code when it displays 59 seconds: 00111011 and I need to split it into two 4 bit nibbles like this: 0101 1001. Remember, binary doubles from right to left so the bit places are 128 64 32 16 8 4 2 1. Looking at 00111011 you can see the 32 bit, the 16 bit, the 8 bit, the 2 bit, and the 1 bit is on.

Add them and you get 32+16+8+2+1=59. Since I have a 7448 driver for each tube, I need to feed it 4 bits to display the appropriate number fom 0 through 9, Since we are only dealing with a 4 bit code, the values are 8 4 2 1. The 0101 1001 two nibble code is 5 and 9 which would display properly.

After spending several evenings Googling every Nixie clock article I could find, I discovered that most folks use the RTC time chips which output hex and just break that down into 4 bit nibbles.

I have since found a nice Raspberry Pi example at so I will be using that instead. The only differecce is he is using ten digit nixies and I am using 7 segment nixies but the bcd driver circuitry is exactly what I need. I will simply pull the time code off of an NTP server and be satisfied with that. Here is my version of his code modified to show local time in a 12 hour format and using 6 tubes instead of 4.

One advantage of using the Raspberry Pi is that it runs Debian Linux and I assist in teaching a Linux class using Debian at the local community college so I am very familiar with it.

I might even throw in a DHT22 temp/humidity sensor or two and have it display the inside and outside temps and humidity once in a while. It sure is a lot easier making things work with code than it was building logic circuits back in the 70's. You young folks don't realize how much fun you missed. :-)

In case you want to build your own power supply to provide the 170 VDC that most nixies use, Here is a link to one that I built around common parts. It uses a 555 timer to drive a IRF730 JFET at 31 KHz which switches an inductor which boosts the 9VDC input and is rectified and filtered. The 1K pot is to adjust the output voltage and really should be a multi-turn pot for fine adjusment.

Most of the schematics on the web show 1K/10K/.0022 mfd timing components but that is really on the low edgte of acceptable values. A 2.2K, 22K, and .001 mfd cap gives the same frequency and duty cycle but is much closer to the middle of the range of acceptable values. The inductor coil needs to be a good one and Jameco Part no. 371856 seems to work well. It doesn't cause the JFET to overheat and the toroid only gets slightly warmer than ambient. C11 is part of the snubber network from the inductor to ground and should be rated at 400 volts or better. C10 is the filter for the 170 volts and should be rated at 250 volts or better. Transistor Q13 is a BC547B which is just a small signal transistor. The 1N4936 diode (D1) was selected because it is a fast switching rectifier and works well at 31 KHz.

I have been able to get nearly 250 volts out of this circuit with only a 9 volt wall wart power supply. While the current is low, around 25 ma or so, be careful as it can shock you.

I will be posting more code, drawings and photos as the project evolves.

August 01, 2015 - The clock is working using the Raspberry Pi. I just installed a base copy of Raspian which is based on Debian Jessie and configured it to use ntpdate to sync with Internet time servers.

One downside of the Raspberry Pi is the lack of a hardware clock so I added an RTC module and configured it as shown on the Adafruit website. I did not use the DS1307 clock shown but instead found one based on the DS3231 RTC chip available from Amazon or eBay. The DS3231 chip is more stable than the DS1307 and includes an internal oscillator crystal.

One other issue I had with my 42 year old design was I just used five 7448 drivers and drove the tens of hours position with a single transistor as it only displayed a one or nothing at all.

Since I can now just add features in software, I wanted all six nixies driven by 7448's so I had to build a board to take the serial data from the Raspberry Pi and feed it to the five existing 7448's and add one more for the tens of hours digit. Here are a couple of pictures of that board.

December 2016

I have since built a second version of the nixie clock using the Russian 1N-14 tubes and Russian driver chips. This one uses a Raspberry Pi Zero W with the built in wi-fi. It works well using the same python script.

The only issue is the Russian driver chips do not support leading zero blanking like the 7447 or 7448 seven segment drivers. Therefore the clock shows something like

09 49 41 when the hour is less than 10. I need to poke around in the python code to figure out how to blank the leading zero when the time is less than 10 o'clock.

One simple mechanical fix is just to not connect the "0" pin on the nixie tube for the tens of hours since it just shows a 1 or 2 for most clocks. That is what I have done for now.

The next step is to build a nice case to display the clock properly.

To be Continued....