28 January 2017

Arduino Nixie voltage booster: 12 V to 200 V

Nixie PSU kits are cheap and robust, but sometimes they can be "too much" for a project: too big, too costly, too powerful . It is the case of single tube circuits, where the current requirement is pretty low and board/case space too.

The Net is full of projects that use the 555 in place of specialised IC's: a PWM signal controlling a MOSFET it's (almost) all that you need. Since my circuits are usually based on Arduino, why not use its embedded PWM generator? Again, there is at least one fully working Arduino code and diagram on the Net, and that's where I started (thanks to Ian of nixieclock.biz).

While I could get clean HVDC, it was too high: even more than 350 V! But but but it would drop to about 200V when current was drawn. It behaved like a far-from-ideal voltage generator with a high internal resistance.

All of this could be fixed with careful run-time trimming of PWM parameters in software after a thorough (software) calibration, but still the firmware would lack the real-time response provided by specialised circuits. So I went a different way.

I used a Zener diode to keep the voltage at 180 V. When the Nixie lights up it "pulls" the current its way, effectively cutting out the Zener. The trick here is to calculate the drop resistor Rz before the Zener in a way that it will load the power supply slightly less then the Nixie. When displaying a digit this Rz becomes part of the anode current limiting resistor you need to add anyway. Since the Nixie sustain voltage is less than the striking/Zener voltage, you need Ranode > Rz with Ranode = Rx + Rz. Just do the math in such a way that the anode current is a few hundreds of microA higher than the "stand-by" current.

Yes, I know I am wasting power into the Zener, but this way I keep control over the maximum voltage if something fails upwards in the PWM chain. Moreover, since I fully control the firmware, I can save power by turning totally off the voltage booster when nothing is to be displayed. Last but not least, as in the original circuit, a resistive voltage divider lets me read the output value though one of Arduino ADCs.

I will share the diagram in a second post on this topic.