Nixie clock build

Introduction

Nixie clocks are fascinating. They show time through glow discharges from bent wires. A tube contains a mixture of gases(mostly neon) that will become ionized when high voltage(~180V) strike between the anode and cathode. Every tube contains several cathodes bent into different digits or letters.

This article summarizes my nixie clock build. The clock shows accurate time on six multiplexed digits (3×2). Time is set using a mobile phone over bluetooth. The clock also shows the temperature(±0.5 C°) and humidity(±4%). All content is free for private use (code, etch, PCB-design, etc)

Note!

I take no responsibility for the end result when following the instructions in this article. This is a hobby project. Feel free to ask questions regarding the project in the comment section below

Table 1: Components used
Component Quantity Link (Ebay affiliate link)
Arduino Nano 3.0 (ATmega328) 1 Nano V3.0 ATmega328P CH340G 5V 16M Micro-controller Arduino
Bluetooth RF transceiver HC-06 1 HC-06 Wireless Bluetooth Transeiver RF Module Serial+4p Port line
DHT22 – temperature/humidity sensor (optional) 1 DHT22/AM2302 Digital Temperature And Humidity Sensor
PCF8563 – Real-time IC + surrounding components 1 PCF8563 Real-time clock DIP8
Nixie – PSU 1 Nixie PSU
Linear Voltage regulator: LM7805 1
IN-12A – Nixie tubes 6 IN-12 6PCS NIXIE TUBES
IN-12A sockets 6 SOCKETS 6PCS for NIXIE tubes
MPSA42 NPN – High voltage transistors 3
MPSA92 PNP – High voltage transistors 3
3.3K ohm – Resistors 3
470K ohm – Resistors 3
100K ohm – Resistors 3
15K ohm – Resistors 3
Nixie driver:K155ID1 3 K155ID1-NIXIE-CLOCK-TUBE-DRIVER

A simple set up

Lets start with a basic breadboard setup with one nixie tube, one nixie driver and an Arduino. The goal is to light all the digits of the tube, one at a time. The schematics are straight forward. Connect the Arduino to the K155ID1 accordingly:

  • D5 to In.A
  • D4 to In.D
  • D3 to In.B
  • D2 to In.C
Schematic for driving one nixie tube

The four outputs from the Arduino represent a nibble(4 bits). A nibble can represent a 0-15 decimal number, which sufficiently covers the 0-9 decimals of the nixie-tube. The driver(K155ID1) will receive the binary representation of the digit to turn on. How to combine the outputs from the Arduino is presented in the following table:

Table 2: Pin logic for turning on a certain digit
In.D In.C In.B In.A Output (Digit)
LOW LOW LOW LOW 0
LOW LOW LOW HIGH 1
LOW LOW HIGH LOW 2
LOW LOW HIGH HIGH 3
LOW HIGH LOW LOW 4
LOW HIGH LOW HIGH 5
LOW HIGH HIGH LOW 6
LOW HIGH HIGH HIGH 7
HIGH LOW LOW LOW 8
HIGH LOW LOW HIGH 9

An active digit corresponds to a “open” pin in the driver IC. The K155ID1 will then allow current through the pin down to GND and hence light up the connected cathode of the tube. The tubes cathodes are mapped to the K155ID1 according to the picture below.

Schematic of K155ID1 IC and nixie tube

A high voltage is supplied to the anode of the tube that will light up according to the current state of the K155ID1. By introducing two high voltage transistors (MPSA42 & MPSA92) the Arduino can effectively switch the current of the anode on and off. This makes it possible to multiplex the digits used. The picture below illustrates the set up for one tube on a breadboard.

Note!

If you are not interested in multiplexing the tube, then the switch (two transistors) can be omitted by connecting the common anode with a resistor(~15K ohm) to the +180 V source.

Caution! 180V

Take care to not connect/disconnect cables when set up is powered!

Test set up for one nixie tube
Download simple_tube_test_ino.ino

The Nixie Clock

Using the following circuit design all the components should be placed according to the labels.

Etch of main circuit board
Resistors
Label Value
R1 3.3 kΩ
R2 3.3 kΩ
R3 3.3 kΩ
R4 470 kΩ
R5 470 kΩ
R6 470 kΩ
R7 15 kΩ
R8 15 kΩ
R9 15 kΩ
R10 100 kΩ
R11 100 kΩ
R12 100 kΩ
R13 2.2 kΩ
Transistors
Label Value
Q1 MPSA42 NPN
Q2 MPSA42 NPN
Q3 MPSA42 NPN
Q4 MPSA92 PNP
Q5 MPSA92 PNP
Q6 MPSA92 PNP
Headers
Label Value
J12 A4, A5, GND, Vin (left to right) (RTC)
J13 +5V, D13, x, GND (left to right) (DHT22)
J10 +5V, GND,RX, TX (left to right) (Bluetooth)
J2 GND, ~180V (top to down)
J4 Pair 3 anodes, Pair 2 anodes, Pair 1 anodes (left to right)
J14 GND, +9-12V (left to right)

Note!

The bluetooth header J10 has the +5V pin disconnected. An on-off switch should be added between the V_in and header J11

D13 on the arduino (top left pin) will need a cable soldered to header J13 (second pin from the left). This is the data pin from the DHT22

Download etch_copper_bottom.pdf

Download etch_copper_bottom_mirror.pdf

Multiplexing and connecting the tubes

Multiplexing means that the tubes will share drivers. The arduino will then turn tubes on and off while changing the state of the driver. The switiching happens faster than what our eyes can detect. The result is perceived as a fully turned on clock. In this build multiplexing is done using two drivers connected to three tubes each. The tubes anodes are divided into pairs of two and connected to the J4 header. This results in that only 8+3 pins are required from the arduino and that a smaller circuit board can be constructed.

The front of the clock is organized like the pictures below. The digits from left to right are called H1, H2, M1, M2, S1 and S2. Due to multiplexing, the cathodes of H1, H2 and M1 share K155ID1 IC1 and the cathodes of M2, S1, S2 digits share IC2.

Nixie tube anodes pairs
Tube connections. Note that connections are only partially done, since this picture only serves as an illustration of how to connect the tubes

Example of how the soldering could be done. Red wires are soldered directly to the corresponding nixie driver (K155ID1)

Connections to nixie tube sockets

The code

These libraries are required to run the Nixie clock.

You add these libraries to your arduino IDE by doing:

  1. Download the zipped library. Place it where you please.
  2. Open the Arduino IDE. Go to “Sketch->Import library->Add .ZIP library” and find your zip file.
  3. Repeat for all libraries above

Finally download the main sketch and burn it to your arduino nano

Download clockMain.ino

Video compilation of the build.

The Android app – Blue Arduino

The clock uses bluetooth to update its time. Code Terrific provides a free android application for this. Download it directly to your mobile phone from Google play(Blue Arduino).

Blue Arduino app on google play store
Clock widget for selecting the time to sett in the Nixie clock

You set the time by using the clock widget in the app or by sending the following string: #HHMMSS

Example would be sending the string “#121300”

3D-printed Case

Stefan Achterholt 3D-printed a nice looking case when building his nixie clock. He was kind enough to make it available at Thingiverse for all of us to use (CC). Thanks Stefan!

Check it out at http://www.thingiverse.com/thing:2143880

Stefan’s clock with custom 3D printed case
The insides of the case