Introduction: Nixie Tube Arduino Uno Driven Thermometer
First off I give credit to the many sources I found right here on Instructables and GitHub to pull this project off. The design of the box and the programming modification to get the Nixie tubes to sequence on start up to help prevent poisoning of the tubes is all mine, but I cobbled a lot of info together to get this thing to work. As we go along, I will point to very good links that helped me greatly as they do a far better job explaining than I could.
1 - Arduino Uno ($10.00 eBay) - (I tried using a Pro Micro actually tried wiring two different units, and could NOT for the life of me get either to work with the DallasTemperature sensor. In frustration, I switched over to the UNO and had zero issues.
1 - Dallas Temperature sensor DS1820B ($5.00 eBay) - Water proof design, bought 3 to get the price discount.
1 - High Voltage Power transformer board (12vdc to 180 vdc). ($8.00 eBay)
1- Wall Plug Transformer (120 VAC - 12 vdc) ($3.00 at Goodwill thrift store).
1 - 120 VAC Wall outlet plug. ($2.00 Home Depot)
3 - IN-1 Nixie Tubes ($2.00 ea. eBay)
3 - Nixie tube Driver Chips SN74141 ($3.00)
1 - Plexiglass panel (front and for back), Perforated steel sheet metal panels
1 - On / Off toggle switch, cord, wire, solder, hot melt glue, etc.
Step 1: Build the Circuit and Test the Heck Out of It.
A great guide / overview of what you will be doing is model your project from Sascha's located here:
Then, you can use his code and modify it as you see fit as I did. Shout out to him for helping me find a bug in my code. Once you have an idea how this will come together, it is time to get into the details...
The core to this project is to understand how the tubes are driven. I suggest you understand and build this instructable first:
to understand how the tube is wired and the driver chip selects the output to obtain a given digit. This is well written and accurate.
Repeat this circuit build for each of the three nixie tubes needed for the display. Program your UNO to drive all three tubes to ensure you have the circuit wiring correct. It is very easy to cross wires and not get the correct bit pattern out of the chip to drive the desired digit. Trouble-shoot this until correct.
For the decimal point I just used a high voltage neon indicator bulb powered off the same high voltage source as the tubes.
One the Uno drives the Nixies correct... build this circuit to understand how the temperature sensor works using the OneWire protocol. Go here to learn about this:
If you have a breadboard and an second Uno, do that code and use the serial port function of the UNO output to convince you understand how that works. Once you got the temperature reading to the UNO, you are almost done!
Step 2: Marry the Programs Together.
Build your code by first getting the temp probe to output on the UNO serial port. Once working, add the lines in for sequencing the nixie tube. I originally did this in the reverse order and had nixie cycling but no temp display...
If the Arduino code freezes after it cycles and gets stuck like this...
Chances are your temperature sensor is not transmitting or the UNO is not converting the data to the serial port. I struggled with this for days... I think my Pro Micro was not working with the OneWire correctly because when I switched over to an UNO, it worked just fine.
Here is my program...
On power up it rolls through the digits to help stop nixie poisoning. Then goes right into displaying the temperature.
Once all was working I had to cram it in the box and add 6 LED lights to light up the interior. I used exotic woods of Zebra and orange agate. The copper and the steel plate were patina'd with muriatic acid and copper sulfate.
We have a be nice policy.
Please be positive and constructive.
Finally, I managed to get this nixie thermometer working on a breadboard. Now, I need to design a proper PCB to build it. A number of changes have been made: First, I used IN-14 nixie tubes. Second, since using an Arduino Uno is a huge waste of space, I used an ATMega328P as a stand-alone Arduino and it works perfectly OK.
Since the cathode poisoning prevention cycle runs just once at start up, is there a way to include in the sketch a "reset" function once every 24 hours, so that this cycle is running on a routine basis? I am not an expert in Arduino programming and I would need your help.
There are two ways to do this. The direct way would be to add a RTC Clock module and set the clock up to run. Use an IF statement that when the value of hours equals 24 to run the RunPoison() routine. See my Nixie clock instructable I just posted on my clock. It has the clock and a poison routine in it already. An indirect way without using a clock module would be to use the statement that counts scans. You can It is called millis...After so many milliseconds, then call the routine to anti-poison. From the google search...
Returns the number of milliseconds since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 50 days.
time = millis()