High-resolution LED bargraph

A solid-state replacement for IN-13 Nixie tubes

Similar projects worth following
Starting from
jmw has 5 orders / 0 reviews
Ships from United States of America
This design is a linear array of LEDs that has a resolution of 128 points/steps. The display is controlled through a serial peripheral interface and and can be optionally dimmed with a PWM signal.

Two of the lesser-known Nixie tubes are the IN-9 and IN-13 bargraph indicators. Instead of being digital numeric displays, these are analog linear indicators where the length of the glow discharge is proportional to the current.

While aesthetically pleasing, Nixie tubes have some disadvantages:

  • They require a high-voltage power supply. If the tube is being controlled by a microcontroller, a discrete driver circuit is also required to isolate the Nixie tube cathode from the microcontroller and create a adjustable current source to drive the tube.
  • The relationship between current and length of the glow discharge is nonlinear, and shows some variation between units, which may require tuning and trimming. Lines are marked in paint on the side of the tube, between which the display is guaranteed to be linear ±10%.
  • With the exception of some artisanal manufacturers, Nixie tubes aren't being made anymore. The supply of surplus Nixie tubes will continue to dry up and prices can be expected to rise. As of the time of writing, IN-13 tubes cost 8-10 USD each in small lots.

While bargraph LED modules are available, they usually only offer 8-12 steps of resolution and the LEDs are quite large and spaced generously. They aren't a good substitute for the continuous and infinitesimally adjustable line that you get from a IN-9 or IN-13.

This design combines densely-placed SMD LEDs and shift registers to create a linear indicator that is easy to control from microcontrollers. A shift register makes it possible to control 100 LEDs without needing 100 pins. All that is required is to send the shift register a string of bits, for example, 10000001 to indicate the first and last LEDs should be lit. The shift register holds its state until new data is received, meaning the display does not need to be continually refreshed.

In detail, the shift register requires three pins: a clock (CLK), serial data in (SDI), and latch enable (LE). Data is read from the SDI line on the rising edges of the clock. After the string is finished, pulsing the LE line will make the current values in the shift register effective in driving the LEDs. Most microcontrollers provide built-in serial peripheral interface (SPI) controllers that can generate the clock and serial data signals.


Arduino sketch demoing an animated progress bar

- 1.09 kB - 07/17/2020 at 23:05


  • Evaluation

    James Wilson07/16/2020 at 03:29 0 comments

    I received 10 boards from JLCPCB with all the LEDs and passive parts assembled. The only remaining work was to place the eight shift register chips. Reflowing QFN by hand seemed straightforward at first, but proved a bit trickier than I thought. There were several boards needed some rework of one or two chips after testing.

    For a quick demo, I wrote an Arduino sketch that lights the indicator like a growing progress bar. I used the built-in SPI pins on the Arduino for wiring the display board. The board does not communicate back to the Arduino, so it is unidirectional serial connection. Of course, unlike the Nixie tubes, this display isn't limited to a contiguous line starting from one end. Any pattern can be assigned the 128 shift register outputs.

    Viewed at any more than a few feet or a meter away, the lit section looks almost continuous without a diffuser.

    The LEDs are also pretty bright when driven at 5 mA. I set up the board next to a IN-13 driven by my flyback converter, and used PWM dimming down to 5% to take a comparison shot.

    All told, it's a satisfying substitute for the IN-13, with the additional flexibility of higher brightness and capability of arbitrary patterns. Compared with the added cost and complexity of a power converter, and sourcing tubes that have been out of production for nearly four decades, it's already an economical substitute for microcontroller projects that need a discrete linear indicator.

    I'm planning to offer these for sale on Tindie. If you're interested, please visit my Tindie store!

  • Goals and initial design

    James Wilson07/02/2020 at 21:04 0 comments

    The design goal is produce a LED array that can be a good substitute for a IN-13 Nixie tube, and easy to control from a microcontroller. After looking at available options, I decided on these design elements: 0603 LEDs and 16-bit constant-current shift registers.

    0603 LEDs can be spaced 1 mm apart for high resolution, and they are plentiful and cheap. While 0402 or even 0201 parts would allow higher resolution, they're a bit more expensive.

    TI and ST both make a line of constant-current LED drivers with shift-register multiple outputs. More channels = fewer parts = generally better, but many of the 24- and 48-channel chips are expensive and have features that are unneeded and complicated. In fact, many of these drivers blur the lines between "dumb" shift registers and "smart" microcontrollers: some of them have multiple configuration registers to adjust the current, PWM counters for each channel, and diagnostic output. All of this is controlled by sending special serial sequences on the data and latch pins. The need to send bespoke synchronized data sequences across multiple lines make these features hard to use, and somewhat more appropriate for FPGA control than microcontrollers. After some searching, I found a 16-bit driver that was suitably dumb (and cheap): the TI 59283. It lacks current gain control (meaning the output current is fixed by the choice of a resistor) and individual LED dimming, but supports global dimming by PWMing the output enable line. A second consideration was the chip package. Most of these chips are available in leaded packages (SO and SSOP) that are a bit large. Something in a QFN would be better, to keep the board size small. Fortunately, the 59283 is available in a QFN-24 package.

    The target board size should be no more than 1" wide and about 150mm long (about the length of the IN-13; the actual display length is less). Allowing some space for connectors and plumbing, 128 LEDs, using 8 shift registers, was the natural choice. The board should have a small (5 mm or so) border so a spacer and diffuser can be glued on.

    I'd like to share this design as it fills a hole not available from hobbyist LED arrays, so breadboard headers are the universal connector to use, but I also want a JST PA connector on the rear side for nicer board-to-board and enclosure integration.

    My plan is get JLCPCB to assemble the board with the LEDs and passives. They do not stock the 59283, so I will need to rework it manually. Here is a 3D model of the board design. Each shift register has a 11 kΩ resistor that sets the output current to 5 mA (plenty bright). A 4.7 µF capacitor provides some bulk decoupling for the LEDs when they are turned on or off in unison by PWM. LED color is a personal choice, but I went with orange to mimic the color of Nixies, and it's a good color regardless of viewing conditions.

View all 2 project logs

Enjoy this project?



Dan Maloney wrote 07/06/2020 at 20:52 point

I like this idea, should be useful. Do you think you'll have any problems keeping the LEDs aligned during soldering? Seems like a crooked one would ruin the look.

  Are you sure? yes | no

James Wilson wrote 07/06/2020 at 20:57 point

Yes, this is definitely a design where an automated pick and place machine is required. JLCPCB has a SMT assembly service that can do this. They don't stock the shift register chips, so I'll have to add those by hand.

Also, it helps to think about solderability and DFM. I slightly rounded the corners of the LED pads (I've read this helps) and I put thermal relief spokes around the plane and pour connections to help reflow.

  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