Low cost dual Nixie Driver

A simple board, driving 2 nixies from discrete transistors and an Atmega8.

Similar projects worth following
* Drives two IN1 nixe tubes
* Can be programmed like an Arduino
* Simple UART commands with daisy chain capability
* Low cost !

First, like many other here, I love nixie tubes!

So this project is a simple board to control two IN-1 tubes with a cheap ATmega8.
The idea to reduce cost to minimum is to use one transistor per numeral to avoid using expansive high voltage drivers. 

I wanted to avoid temporal multiplexing, to prevent any flickering. 

I was inspired by a similar project here reviewed on HAD here

I first wanted to adapt this project to IN-1 by rerouting the board, but I realized that the part count was not negligible, it was using one micro per tube, and a quite expensive one. 

So finally I came out with this solution using only one ATmega8 for 2 tubes.

To reduce the number of pins used to control the tubes, I used a clever idea from here:

Basically the idea is to use the fact that only one cathode of the tube is active at the same time. Arranging the transistors in a grid, we can reduce the pin used to drive a tube to only 4. 
To command a single transistor, we set the output of pin corresponding to his base to level high, the output corresponding to his Emeter to low level and the remaining two pins are lefted in high impedance (configured as inputs).
This saves 6 base resistors and 6 GPIO !

I also wanted to send command to the boards with minimal interface. I choose UART, but in a sort of daisy-chain way so that we can control a lot of boards with just one TX pin.

If I take the example of a clock (yeah, let's inovate) with 6 digits, to display 12h30m59m the master simply sends '0x12 0x30 0x59 0xff' to RX pin of the first board. 
The fist boards transmits 0x12 0x30 0xff to the second one and displays '59'
The second transmits 0x12 0xff to the third one and displays '30'
The last one transmits nothing and displays '12'

In this case, a perfect Master could be a ESP8266 to read time from internet and configure the clock settings from a local webpage !

The final key component would be a high voltage DC converter to power up the tubes and this is easy to find on Ebay for few dollars.

  • 1 × ATMEGA8A-AU TQFP-32 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 20 × Mmbta42 Discrete Semiconductors / Transistors, MOSFETs, FETs, IGBTs
  • 9 × 5.6k 0402 resistor Passive

  • Another clock !

    Thomas Flayols09/20/2018 at 18:54 8 comments

    This time I used the new design allowing to aligne the tubes. I took a piece of wood found on the beach. I 3D printed a back enclosure to protect the electronic.

    I like the mix of gray wood and warm red tubes !

    While testing this clock I found some problem with the power supply module.

    First, now the display module are powered in 3.3v. No problem for the Atmegas.. except that their internal RC oscillators are calibrated at 5V. At 3.3V the incoming uart messages are misread and the whole module is unusable, displaying random numbers.

    I manage to recalibrate them, and that problem has been solved. I will go into the details in a next log.

    The second problem is with the 170V switching power supply. It is not efficient enough, and the transistor get really hot after some time in the enclosure when powering 4 tubes.

    This is more problematic and need some investigation. I took somemeasument and I found out that the gate voltage was oscillating a lot..

    To finish this clock in time for a gift, I use the eBay Nixie power module I used in the first clock.

  • Everything works !

    Thomas Flayols09/02/2018 at 18:01 0 comments

    The power supply and esp8266 board works as expected, it makes the wiring a lot easier !

    I'm now looking for cool enclosures, I might give the concrete case another try.. I also would like to find an old wood box.

    Maybe I can also order a machined aluminum front panel to do something like the first clock without the plastic.

  • New PCB received !

    Thomas Flayols09/01/2018 at 22:19 0 comments

    I just received my order from JLCPCB, this time I ordered solder paste stencil. 

    It's the first time I use stencil, and I have to say it's a game changing! So much quicker and cleaner than with the iron!

    I'm missing some component for the ESP+power board, so I still have to wait a bit to validate the design. 

    Here is a video of my very first hot gun soldering process 

  • ESP8266 firmware + PCB ordering

    Thomas Flayols08/17/2018 at 08:43 0 comments

    After a long break, I finally got the time to work on this project again.

    So this log is a quick update about the esp8266 firmware used to drive the clock presented in the last couple of posts.

    The ESP8266 is programed via the arduino SDK 

    The firmware is really simple; it has to connect to a NTP server to get the time and send it to the daisy chained display modules via a serial port. The main complexity was to find a way for the user to enter his WiFi credentials. 

    I want the clock to be really minimalist from the outside, so no button used !

    To setup the clock, I used the WiFiManager library here At startup an open WiFi access point is created. After connecting with a phone or a laptop, a connection popup ask for your home access point credentials and the UTC timezone used. This parameter are stored in flash and will be recalled at next bootup.

    The firmware can be found in the GitHub repository here

    There is room for additional feature, here are some ideas:

    • Automatic summer time changes. I did not take the time to implement that and hopefully we soon get rid of summer time in Europe 
    • Parameter for a turn off time window to the clock to save tube's lifetime.
    • Parameter to set animation style when changing numbers, or a dimming parameter (This needs the protocol and the display module firmware to be update)
    • Act as something else than a clock, Facebook or YouTube likes counter ? Chronometer? Score display? 

    Some of the followers asked me to sell PCB with or without components. I'm still not sure about doing that, I have to see how much time soldering takes with the ordered solder mask, and to check the shipping cost...

    Anyway, this project is opensource and openhardware!

     I've just order a revision version that I talked about in the last post, and the esp8266+power supply auxiliary board. This design hasn't been tested yet so I would recommend to wait for the validation before ordering a PCB to a fab. I should get the boards in less than a month.

  • A concrete failure

    Thomas Flayols03/29/2018 at 16:35 0 comments

    I wanted to try making a concrete clock with my modules. 

    I started by designing an interior mold printed in 3d

    The outside of the mold is made of wood panel.

    I poured the concrete in two stages.

    Everything seemed to be going well...

    But removing the cylindrical parts was complicated. I had to bump them out. Result: big cracks!

    I'm thinking of redesigning the cylinders to give them a conical shape. Maybe also add more fiber to the concrete...

  • Optional HAT: ESP8266 + Power Supply

    Thomas Flayols03/15/2018 at 21:29 0 comments

    This optional board takes the same size and plugs behind the display module. 

    It makes wiring the daisy chain easier, and it can be populated with an ESP8266 master and/or a 170V and 3.3V power supply from a 9V input.

    There is jumper on the back so that we can isolate the powers if several boards need to be populated with HV supply (in case we use a lot of nixies :-)

    If no components are populated, the board simply acts as a wire. It could be considered a waist but making the wire is boring, and PCB manufacturing makes it for almost the price of cables and connectors... It also allows only HV caps to be filled and the power supply to be filtered locally.

    HV DC

    For the high voltage power supply, I copied a commonly used design from :

    It does not have a perfect efficiency but it is simple and cheap.

    For 3.3V, the simplest and cheapest solution I have found is two linear regulators in series. A 5v and a 3.3V. This limits the input voltage to 9V. 

  • Rev 1

    Thomas Flayols03/10/2018 at 16:34 0 comments

    So here is a revision of the PCB, It addresses two major problems of the first design. 

    The anode resistances were 0402 sized, too small to dissipate a power of (P=RI² = 22k*2.5mA² = 0.14 W) They are replaced by 1206 (0.25W).

    Second issue, some IN1 nixies have very bad alignments between numbers and pins. For example from another project here :

    [bad alignment effect from an other HAD project]

    In order to compensate, I modified the tube footprint to have a little margin. 

    To do this with Eagle, I generated the commands from a python script:

    # Script to do circular slots in eagle
    from math import cos,sin,pi
    arclen = 0.12 #rad
    r=13.5 #mm
    Nslots = 11
    cmds = [";CHANGE LAYER 17 ;CHANGE WIDTH 3.0",
            ";CHANGE LAYER 29 ;CHANGE WIDTH 3.2",
            ";CHANGE LAYER 30 ;CHANGE WIDTH 3.2"]
    for cmd in cmds:
        print cmd
        for i in range(Nslots):
            angle = i*2*pi/Nslots
            start_x = r*sin(angle-arclen)
            start_y = r*cos(angle-arclen)
            opp_x   =  -start_x
            opp_y   =  -start_y
            stop_x  = r*sin(angle+arclen)
            stop_y  = r*cos(angle+arclen)
            print ";ARC CW ({} {}) ({} {}) ({} {})".format(start_x,start_y,opp_x,opp_y,stop_x,stop_y)
    #milling outline
    # A1 ____ B1
    #   (____)------
    # A2 \  / B2    | r
    #     \/ _ _ _ _|
    width = 2.5
    print " "
    Nslots = 11
    cmds = [";CHANGE LAYER 46 ;CHANGE WIDTH 0"]
    for cmd in cmds:
        print cmd
        for i in range(Nslots):
            angle = i*2*pi/Nslots
            A1_x = (r+width/2.)*sin(angle-arclen)
            A1_y = (r+width/2.)*cos(angle-arclen)
            B1_x = (r+width/2.)*sin(angle+arclen)
            B1_y = (r+width/2.)*cos(angle+arclen)
            A2_x = (r-width/2.)*sin(angle-arclen)
            A2_y = (r-width/2.)*cos(angle-arclen)
            B2_x = (r-width/2.)*sin(angle+arclen)
            B2_y = (r-width/2.)*cos(angle+arclen)
            print ";WIRE ({} {}) @-{} ({} {});".format(A1_x,A1_y,r+width/2.,B1_x,B1_y) #from A1 to B1
            print ";WIRE ({} {}) @-{} ({} {});".format(A2_x,A2_y,r+width/2.,B2_x,B2_y) #from A2 to B2
            print ";WIRE ({} {}) +180 ({} {});".format(A1_x,A1_y,A2_x,A2_y) #from A1 to A2
            print ";WIRE ({} {}) -180 ({} {});".format(B1_x,B1_y,B2_x,B2_y) #from B1 to B2

    Finally, a few small changes, I re-centered the ATmega8 to move it away from the tube pins. And all base resistors are changed from 0402 to 0603 for easier welding.

    I'll push that to github after a triple check ! Done!

  • Let's make a clock with this!

    Thomas Flayols03/05/2018 at 23:39 0 comments

    This is the kind of clock that motivated this module. Twice two digits for hours and minutes, a simple wooden box and a PLA panel.

    For power supplies, we need 3.3v and 170v.
    From a voltage of 9V, I use an LM317 plugged in to make 3.3v (I could have used a fixed regulator, but I didn't have any on hand)
    For the 170V, I bought this.

    [Left 3.3V - Right: 170V ]

    The master is a ESP8266-01. There's no buttons. 

    At the boot of the clock, a free wifi is created for 30seconds for the first configuration. If a user logs in, he can set the host SSID and password via a web page. He can also choose the timezone.

    After 30 seconds, or after setting is done, the time is updated from the internet.

    The box is a bamboo box sold for the bathroom!

    Supports are 3d printed to hold each module in the box.

    The front-panel is also 3d printed.

View all 8 project logs

Enjoy this project?



todd.krein wrote 08/23/2018 at 05:32 point

You only need to add about a 3 degree draft to the cylinders to make them slide out. That's standard in injection molding. It's also almost undetectable by eye.

Great project!!

  Are you sure? yes | no

Chris B wrote 03/24/2018 at 11:54 point

I like your project very much, too. If you don't find time to do necessary updates of the PCB: Could you mention the issues and someone (e.g. me) could update the eagly files?

If you buy PCBs next time and plan to sell some, I would also take 1 / 2. I think some people would be happy to get one but ordering just 1 or 2 may be expensive again.  :)

What socket do you use for the nixies?

  Are you sure? yes | no

Thomas Flayols wrote 03/25/2018 at 09:22 point

The issues are explained in this log:

I just updated the Eagle files. But feel free to join and modify it as you wish.

I do not use a socket, the tubes are simply soldered to the PCB.
I'm about to order PCBs, but I'm still not sure about selling them. 

I'll let you know!

  Are you sure? yes | no

eschuyler wrote 03/07/2018 at 19:28 point

I'm ready to buy some of the PCBs, preferably with the surface-mount components already installed. Any chance you'll consider making them available?

  Are you sure? yes | no

Thomas Flayols wrote 03/07/2018 at 21:45 point


I wasn't planning on selling them. But perhaps if the demand is strong...

Anyway, I'm going to be busy for a few months to finish my PhD. Note that the project is open-source and open-hardware!

But don't go too fast to print the PCBs, they deserve some small improvements and corrections. I'll explain all of this in the next log.

  Are you sure? yes | no

eschuyler wrote 03/08/2018 at 13:10 point


Thanks for your fast reply, and good luck on your PhD. I'll check out your next log entry. Please do let me (and others) know if/when you decide to sell the boards.



  Are you sure? yes | no

AlexC wrote 03/07/2018 at 16:19 point

I love Nixies too. I remember that when I was a child, my step-mother worked as an accountant in a major retailer and she used this huge calculator with 8 or so Nixie tubes. (This was just in the cusp of being replaced by calculators with not-so-bright red LEDs.)  The Nixie-based calc was a little larger than the mechanical-hand-crank type. I must get off memory lane!

Are you planning on making a kit available?

  Are you sure? yes | no

Thomas Flayols wrote 03/07/2018 at 21:47 point

I'm glad to see that we share the same enthusiasm for these little creatures!

As for selling the PCB, see my answer to eschuyler above.

  Are you sure? yes | no

Stephen Tranovich wrote 03/03/2018 at 00:06 point

I love this design getting both nixies driven with one atmega8. Smart pinning!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates