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)
I take no responsibility for the end result when following the instructions from this article. This is a hobby project. Feel free to ask questions regarding the project in the comment section below
|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|
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
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:
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.
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.
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.
Take care to not connect/disconnect cables when set up is powered!
The Nixie Clock
Using the following circuit design all the components should be placed according to the labels.
|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)|
|J5, J6, J7, J8 and J9||Headers for connecting cathodes of nixie tubes to K155ID1 drivers|
|J11||Additional header for accessing +5V|
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
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.
Example of how the soldering could be done. Red wires are soldered directly to the corresponding nixie driver (K155ID1)
The codeThese libraries are required to run the Nixie clock.
- Rtc_Pcf8563 – by Joe Robertson(time IC)
- DHT_sensor_librar – by Adafruit (temp/hum)
- Unified sensors – by Adafruit
- NixieAS – by Codeterrific
You add these libraries to your arduino IDE by doing:
- Download the zipped library. Place it where you please.
- Open the Arduino IDE. Go to “Sketch->Import library->Add .ZIP library” and find your zip file.
- Repeat for all libraries above
Finally download the main sketch and burn it to your arduino nano
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).
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”
Check it out at http://www.thingiverse.com/thing:2143880