UPDATE: I decided to make a new post for the finished clock, instead of editing this one. See it here
First off i have to say that i am still getting used to posting anything with wordpress so the formatting and position of the pictures is NOT how I want it to be, i will attempt to improve this as time goes on.
After about half a year i finally have time for projects again, so i was thinking about what to built when the clock in my lab died, which just can’t be a coincidence as i was thinking about playing around with some RTC chips. The question was just what (probably old and obsolete) display technology i would use. I had a few VDF 7-segment tubes laying around but since i have already done something with them i decided not to use them. I also saw an old neon matrix display on ebay but that was too small, so the choice was quite obvious – Nixie Tubes!
I had a couple of IN-12 top view ones laying around so I used those.
Another question was how to drive them. If you don’t know what nixie tubes are – they are basically neon indicators with the cathode (where the electrons come from) in the shape of numbers (or whatever else they should display), which makes driving the quite difficult with standard logic as you will need at least ~150V to make them work (depending on the model and size) which is obviously bad news for 5V 74hc595s. There are two basic methods: one is using discrete transistors and the other one is using old binary decoder chips with open drain/collector outputs that were designed for these tubes. But after browsing Digikey for a while i found a shift register from Microchip with 32 open drain outputs that can handle up to 225V, which i think might be perfect for this purpose. They are quite expensive though at almost 5€ a piece, but since i only need one (as i don’t need every segment on all tubes for a clock, eg. the first digit will only be 0,1 or 2 etc.) and it is just one 44-pin qfp i decided to use it. One problem is though, that it needs 12V supply, taking the number of different voltages to 4 (3.3V for the micro, 5V from the usb supply, 12V for the driver and 180V for the tubes).
Next was the choice of the controller. I decided initially to go with a small 8bit Pic (as pic is the only line that i have a programming tool for), but latterly decided to go with a Pic32MX170F256B, even if the power and ram is not at all needed, because i have a lot of them in my lab and they have a builtin RTCC and quite a bit of memory. The reason for needing a lot of Programm memory is because i decided to implement WiFi with an esp8266 module, so it could auto update the time and setting it otherwise is easier (heres where the overbuilt-ness starts).
The one other thing i wanted to do was to make the clock able to dim the display so it wouldn’t be too bright on a bed-side table, and make that automatic so it wouldn’t be neccessary to manually do that (which is obviously stupid) so i just threw in an I2c ambient light sensor for good measure. Btw the best way to dim Nixies as far as i know is PWM as changing se supply can cause parts of the digit to not light up, but luckily the driver has a “strobe” input which forces all outputs high, so all fets off. One interesting discovery I made was, that at ~500Hz PWM frequency the display would also get uneven illumination, which could be prevented with a much lower frequency, which would make the display flicker slightly, so I will include a variable frequency PWM, so the tubes would not look flickery at maximum brightness but would still go dark enough for use as a bedside lamp.
After doing all of the theoretical stuff it was time to actually make the PCB, which will also be the front and back panel, for a simple but (hopefully :P) decent looking clock. I use Altium designer, which allowed me to also do a mock-up of the thing, with all the 3d models and everything.
Finally i would need the actually overbuilt part of it (as is common with all of my projects so i can experiment with the technology without any risk of the project not working), and since i always wanted to get into some web development i decided to give it a web-based setup interface, because why not. However i have never done anything with any web-based stuff except for some raw TCP stuff i first needed to figure out how to send settings to a web server (aka. the clock) and how to fit a full setup page with graphics and all into the memory of the MCU. In the end i decided to only have a webpage, that lives on my webserver, embedded in the one that the clock sends, to save on space (only needing 238 bytes intead of ~28kB) and also allowing me to make updates to it without requiring any firmware update. If you want to know more about the webpage or take a look at it i will make another post detailing that, or you can visit the (BLANK) webpage here (once i have uploaded it obviously.
One issue with the web interface is that the WiFi module doesn’t easily support https, so any data will not be encrypted, which is bad news for online banking data but as it will only need to get the wifi password as the only semi sensitive piece of data, i consider it to be tolerable.
Now i just have to wait for the PCBs to arrive and actually built the thing, which should happen sometime next week.
By the way – if you haven’t seen a nixie tube in real life i really suggest you should buy some, as they look sooo much better in person than on any picture or video I have seen.