RPN Nixie Calculator

A programmable RPN calculator using way too many Nixie tubes

Similar projects worth following
What's better than Nixies? More Nixies.

What's better than a calculator? An RPN calculator.

What do you get when you put them together? A totally impractical calculator that takes up way too much space.

The RPN Nixie Calculator has 80 IN-12B Nixie tubes organized in four stack levels of twenty tubes each. The drivers are MAX6922 VFD drivers, which are 32-bit cascadable, and have a serial interface. The main processor is a Kinetis FRDM-K64L evaluation board containing an ARM Cortex M4 MPU.

They keyboard and display are separate modules connected by USB.

When not in use, the calculator can be put into clock mode.

The software is based on the GNU MPFR library (Multiprecision Floating Point with Rounding), using a precision of about 200 digits (665 bits). When displaying such high-precision numbers, you can use a paddle switch to "scroll" the display 20 digits left or right.


PDF schematic for high side switch.

Adobe Portable Document Format - 16.65 kB - 06/20/2016 at 21:55



Eagle schematic for a high side switch which can switch 170VDC using a 3v3 or 5v logic signal. This is used to disable power to the Nixie display until the processor is ready.

sch - 343.44 kB - 06/20/2016 at 21:51



Eagle board file for high side switch.

brd - 33.03 kB - 06/20/2016 at 21:51


Gerber files for high side switch.

x-zip-compressed - 6.55 kB - 06/20/2016 at 21:51



Schematic for 10x1 VFD driver board. The actual driver board is 4x this schematic.

Portable Network Graphics (PNG) - 80.57 kB - 05/03/2016 at 02:05


View all 13 files

  • 80 × IN-12B Nixie tube For display boards
  • 1 × Kinetis FRDM-K64L ARM Cortex M4 evaluation board
  • 1 × Holtek HT82K629A USB keyboard interface
  • 35 × Cherry MX Blue key
  • 32 × MAX6922 VFD driver For driver boards

View all 9 components

  • Quick update: 10-tube test

    robert.c.baruch07/23/2016 at 18:44 0 comments

    I decided to use a Raspberry Pi 3 to run the display, and tested it using a simple program that uses WiringPi.

    Since I'm pretty confident that all the hardware works, I'll be focusing on the software now.

  • High side switch

    robert.c.baruch06/20/2016 at 22:02 0 comments

    Previously I mentioned that I needed a high-side switch that the processor could control to enable +170VDC power to the Nixies when it was ready. I prototyped it 2 weeks ago, but it wasn't until today that OSHPark came back with the boards. I didn't make it breadboard-compatible, since it's just intended to be a little module.

    It must have +170VDC to switch or else the voltage divider for the high-side MOSFET doesn't give the gate the right voltage. But then you can use 3v3 or 5v to turn it on.

    Eagle and Gerber files in the Files section.

  • Keyboard

    robert.c.baruch06/02/2016 at 02:34 2 comments

    I found a cheap USB keyboard controller chip! It is the Holtek HT82K629A. It requires a minimum of passives, plus a 6MHz crystal, and you're done -- just hook it up to USB and it looks like a standard keyboard.

    You don't get to say which key is which: a given intersection of row and column is hardwired to be a given key. I've hooked up the "1" key. When I plug it in to my computer, it works great. I can type 1's all day. So now I don't need an FRDM board to run the keyboard.

  • Initial testing of the driver board

    robert.c.baruch05/28/2016 at 20:52 0 comments

    With the high voltage power supply sorted out, I wrote a quick Arduino sketch for an Adafruit 5V Trinket Pro to drive one Nixie digit via the pseudo-SPI. I am using a Murata OKI-78SR-5/1.5-W36-C 3-terminal DC/DC converter to convert the 12V input power supply to 5V for the Trinket and the driver board.

    Normal SPI has clock and data, plus a slave select line which goes low before transmitting data, and high after the transmission is done. However, the VFD driver requires a latch pulse after the transmission is completed to latch the clocked-in data to the output buffers. Also, there is no slave select line.

    The sketch goes through all the digits, and adds the latch pulse at the end of every transmission.

    Note that there's a problem. When the thing powers up, the default state of the VFD driver output is low, which turns on a digit. Well, with all outputs at low, all digits are on until the Trinket starts and sets the state properly.

    I will probably need a switch to disable the 170v line until the controller is ready.

  • China 1 Rob 0

    robert.c.baruch05/22/2016 at 00:18 0 comments

    Yeah, I couldn't get the boost converter I designed to work. It was fine up to about 4 mA out, but then the voltage would sag.

    Rather than waste time on chasing down why the circuit doesn't work, I'll just stick with the power supply from China. It works.

  • Reverse engineered boost converter

    robert.c.baruch05/19/2016 at 02:53 12 comments

    So I got the Chinese DC/DC converter, and it seems to work. Powered with 12VDC and set for 170VDC loaded with 150mA, efficiency is 75%.

    The chip, as well as the board, is labelled with the Chinese for "Strong Electronic Technology". Note the two heatsinked MOSFETs. The switching diode is in the lower right.

    I didn't turn it on, I took it apart first.

    The schematic (click to embiggen):

    (Updated to show a transformer T1 instead of a single inductor. It probably has a turns ratio of 1:14, but I won't be sure unless I sacrifice the transformer and unwind it. Also corrected the current sense circuit.)

    The bright minds over at the eevblog forum identified the chip from its topology as the UC3843 SMPS controller.

    The only weird thing here is that input MOSFET. It appears to be for reverse input polarity protection. A MOSFET and two resistors when a single diode would do. I must not be seeing something.

    In any case, now that I designed my own, with fewer parts, maybe I can get better efficiency?

  • A boost converter design

    robert.c.baruch05/12/2016 at 02:09 1 comment

    Goal: Design a boost converter that gives 170VDC at 0.15A from a 12VDC supply.

    Adafruit has a nice boost converter calculator, assuming you're using the simple single-inductor version. To power my boost converter, I'd like to use a 12VDC wall adapter. I don't know, but suspect that the output voltage of the adapter will drop under load, so I'm just going to go ahead and specify a minimum input voltage of 8VDC. Min and max output voltage are 170VDC, output current is 0.15A, I'll specify an output ripple voltage of 2V, and a switching frequency of 150kHz. I hate low-frequency converters with their whining. Shut up already, converter!

    This gives me a required inductance of at least 17.5uH capable of handling 4.25A. Also a duty cycle (switch on-time to total time) of 0.953. This rules out the popular MC36033, which has a max duty cycle of 0.857.

    TL;DR: After the design procedure, here's what I ended up with:

    Design procedure

    The LM3478 datasheet provides a nice series of design procedures for various converter topologies. Here's the one for the boost converter:

    Switching frequency

    First, choose a switching frequency between 100kHz and 1MHz. I chose 150kHz because I wanted it to be above the minimum, but not so fast that all my components had to be super-fast.

    Duty cycle

    Next, compute the duty cycle, D. We got this from the Adafruit calculator, 0.953. Also convenient is the inverse duty cycle (proportion of off-time to total period), D' = 1 - D.

    Note that the converter will adjust the duty cycle based on the output voltage and switch current, so this is only a value for calculation.

    Minimum inductance

    Compute the minimum inductance required. Again, this is from the Adafruit calculator, but here is the formula:

    So with a maximum input voltage of 12V, and an output current of 0.15A, I get L > 12uH. Note that the Adafruit calculator (correctly, in my opinion) uses the lowest of two possible duty cycle based on the minimum input and output voltage, because this will result in the highest minimum inductance. In any case, I chose L = 22uH as a convenient value.

    Maximum inductor current

    Compute the maximum current flowing through the inductor. Again, Adafruit gives this as 4.25A, but the formula is:

    And so I get a current of 4.92A. Again, Adafruit correctly is using the D based on the maximum input voltage, but I'm using a higher value for extra safety margin.

    So based on the inductance and current, I can choose an inductor that can handle this current. Thus, I chose the Bourns 2105-H-RC, capable of 7A.

    Frequency adjust resistor

    The LM3478 uses this formula:

    With my chosen frequency of 150kHz, I get 135.4k. I chose a 133k 1% resistor which slightly increase the frequency to 152kHz. I'll keep using 150kHz in the calculations as it doesn't matter much.

    Current sense resistors

    One of these is the resistor that goes between the switch and ground. This resistor protects the circuit against overload currents. We use the maximum inductor current from above, plus an additional 20% margin, to set the overload threshold:

    And so I get a sense resistor of 0.014 ohms. I chose a standard resistor of 0.015 ohms (Stackpole BR3FB15L0). With that resistor, the current limit would be 5.52A, well within the maximum required 4.92A and the 7A spec for the inductor.

    There is a second resistor which goes between the current sense pin of the converter and the current sense resistor. The datasheet recommends adding this resistor when the duty cycle is above 50% to prevent sub-harmonic oscillations (that is, oscillations lower than the switching frequency) caused by instability in the loop. No whiny converters!

    We first calculate the maximum sense resistor for current mode loop stability (loop stability is always a good thing):

    I get a maximum sense resistance of 0.004 ohms. Our chosen sense resistor is bigger than this by a factor of 3.75, so we need to add that second "slope compensation" resistor:

    This yields 6.325k as the minimum slope compensation resistor.

    The problem is that addition of...

    Read more »

  • Power

    robert.c.baruch05/11/2016 at 03:50 3 comments

    In the previous log I was pretty happy with my transformer power supply. Then I realized that at full load the voltage out dropped too much. I would like to keep the output at 170VDC.

    So, I wanted to find a regulated high-voltage power supply. First I designed a boost converter that takes 12VDC in and yields 170VDC out. It might work, I just need the parts to come in. The problem with such high voltage ratios is that they lead to a slow charge time for the inductor, followed by a very fast drain into the output capacitor. So it requires high-quality high-speed low-ESR parts.

    Apparently you can use a transformer instead of an inductor, but I hate transformers because I don't know how to wind my own (I really should learn, though), and almost inevitably the specs I need aren't anywhere to be found.

    In the meantime, I found a Chinese manufacturer on ebay that makes 12VDC in to 100-250VDC out, 70W open-frame supplies. It looks like a plain old boost converter with a big transformer. The chip, predictably, has its top dremeled off so that we can't see what it is, but of course it's going to be an 8-pin dc/dc converter chip, so it doesn't really matter what it is.

    I bought two. One for testing and one for tearing apart to reverse engineer and post here. If it works, great. If it doesn't, oh well, it was only USD 12.50.

    The power supply is arriving via ePacket from China. This is basically a free shipping thing that the US and China has going. But it takes a while, like up to three weeks. I've had better shipping times, though, since I'm on the west coast of the US. So hopefully I'll have this soon.

  • Transformer part 4

    robert.c.baruch05/02/2016 at 03:28 0 comments

    Success! A 1:1 transformer (Triad Magnetics VPS230-190, a 43W transformer) worked much better than a step-down followed by a step-up transformer.

    I hit 166VDC at 110mA. I did some more science to get power losses.

    A few interesting things. First, the 1:1 transformer isn't quite 1:1. In fact, turning the transformer around got me only 127VDC, so I have to keep the orientation correct. Second, there is between 3.6W and 4W being lost in the transformer. Finally, the power lost in the rectifier/capacitor is 1W at the low end, and 6W at the high end.

    The inlet I used (Delta Electronics 06AK2D) is an EMI filter, switched and fused for 6A.

    With the power circuitry decided upon, I can finally get to the business of testing the Nixie driver board.

  • Transformer part 3

    robert.c.baruch05/01/2016 at 05:11 0 comments

    I feel like I've taken a crazy pill. I measured the voltage and current at four points in the circuit. First, at the wall. Next, between the two transformers. Then, after the two transformers (the input to the bridge). Finally, the DC output across 22.5k.

    At the wall: 150mA AC @ 122VAC (18.3W RMS power)

    Between the transformers: 460mA AC @ 15.6VAC (7.2W RMS power)

    At the bridge: 13.1mA AC @ 115VAC (1.5W RMS power)

    At the load: 6.2 mA DC @ 154 VDC (1.0W)

    That's an immense power loss. The first transformer is losing 11.1W and the second transformer is losing 5.7 watts! And then the bridge (and maybe the capacitor) is losing us another 0.5 watt. No wonder this thing is not performing the way I expect, especially when I load it down with more current and the voltage output drops. Maybe these transformers are just crap?

    I loaded the output down with 1.52k (four resistors in series, each 25W) and measured an output voltage of merely 118VDC. That's terrible and that's just about halfway to what I really need.

    The reason that I chose this step-down step-up configuration was for safety, so that you'd never have to plug in something lethal. The lethality would come after the step-up transformer.

    On the other hand, we plug in 120VAC appliances to the wall all the time. Perhaps I should start thinking of just using a 1:1 isolation transformer and live with the fact that both sides of the transformer are now lethal.

View all 17 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

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