The last time I posted about my Nixie Clock project the sockets for the tube connections had just arrived and I was beginning to formulate a plan as to how I would power and control these tubes. The plan I came up with, though solid, was implemented so poorly that it seemed worthy of a write-up just to document the extreme level of failure I managed to bake in at every step.
The final goal of this project is a six digit nixie clock / media streaming pc driven by a Raspberry Pi. The plan was to use 6 Russian BCD high-voltage tube driver ICs (KM155ID1) to control the pins on the tubes and those would in turn be controlled by three daisy-chained 74HC595N shift registers. This would allow me to control all six tubes from 3 GPIO pins on my raspberry pi. The power for this whole unit would be sourced from a 12/5V 2 Amp power supply that I found a sparkfun. I wont link to it because it has been about 80% of my problems up to this point, but here’s a picture of the little bastard:
The hope was that the 5V rail on this guy could be used to power the Rasberry Pi and that the 12V could be fed into the 12->170V voltage converter that I bought on ebay:
Common sense should have told me that this wasn’t going to work, but you’ll find in reading this that common sense was lacking at almost every turn. It seems that the wall power brick above has no internal load balancing, meaning that the heavy current draw on the 12v rail used to power the nixie tubes caused the 5V rail to dip down as low as 3.8v, obviously this is a problem for the Rasberry Pi which has no on-board voltage regulation unless it is being powered via USB.
This was obviously a setback, but since I have a whole drawer 7805 voltage regulators I figured I could just ignore the 5V rail on the power supply and make my own 5V supply coming off the 12V line. If load balancing is the issue then only using one channel should remedy this right?
Wrong! The 5V coming off this was still not clean enough for the Raspberry Pi. It would reset at random, something which would put a big damper on the whole movie streaming aspect of the project. But the 5V was clean enough for my arduino, which while not being my target platform would at least allow me to forge ahead and start building out the tube control board. The first step in this process was to simply use the outputs on the arduino to control a single tube / driver-IC combo:
Since the driver ICs have a 4 digit Binary Coded Decimal input, it should be possible to drive two tubes from a single 8 output shift register. I chose the 74HC595N because I have plenty of them on hand. These have the advantage of being daisy-chainable, meaning that if I push in more than 8 digits the chip would output the first digit I sent to the next chip in the line. So an infinite number of these can be connected in a row and not require any more pins on the processor to control them. Here is what I came up with after a few hours in kicad:
I am not going to upload the files for this because it honestly sucks. It is full of errors, wasteful of space and could have been broken into three separate smaller boards and cost much less money. If you read the rest of this post and still want it drop me a line and I’ll send it to you, but you’ve been warned.
I ordered the boards from OSH-Park and I could not have been more pleased with the quality, pricing, or run-time.Now that the boards were in hand, it was time to gather the rest of the parts. The sockets I had made in the last post, while awesome, had no connectors, making them effectively useless. I found some female crimp sockets online and determined them to be not only the right size but the right length to fit through the plastic pieces I had previously acquired.
Here are all the parts together:
As you see I have 3 boards and only intend on making 2 clocks, this is good since I am about to hit a huge problem ( I just don’t know it yet).
Fitting the metal sockets in the plastic housings and then attaching them to the board was tedious to say the least but progress was steady (if not slow)
This was an exciting moment, but that excitement quickly faded once I hooked the tube board up to my arduino and power supply and attempted to start displaying numbers on the tubes — Nothing happened.
After a lot of frustrated data sheet reading and multi-meter / logic analyzer testing I concluded two things. First, I am a moron. Second, while my schematic was correct the footprints for my PCB design were up-side-down (now you see why I didn’t post the files).
Knowing this I grabbed my spare board, repeating all the steps above but this time i attached the tube sockets to the bottom of the board:
And this time when the control circuit / power supply was connected it worked!
While, this was a victory in the end, it took me about three times longer than I had originally anticipated and was a source of much frustration. Next time I post on this I hope to have nailed down the power supply issues and be posting code for how I was able to control the clock from the raspberry pi GPIO.