Nixie Clock Problem

Hello there, I am new around here, and I wanted to see if anyone can help me with the problem I am having. It's driving me crazy and I cannot make sense of it.

I am quite a novice at this kind of thing, but about a month ago I found out about Nixie tubes, and decided I wanted to build my own clock from scratch, so I got an Arduino Uno and a bunch of components, did my research, combined with some programming knowledge from some past messing around, and I have now ALMOST completed my clock.

I have however run into an issue that makes NO sense to me. Now, every tube is controlled by a chip that takes in 4 bits input and outputs to the tube's 10 pins, each of which controls the corresponding digit. The clock needs 6 digits, so that would require 24 pins to control, and the Arduino Uno does not have that many.

So I did some more research and got some 595 shift register chips, figured those out, and I tested one with one tube, everything worked, so I built my entire circuit for the clock and the tubes. Then I wrote a program to run the whole thing, but I got nonsense numbers; I thought I had made some mistake in my program, wrote 2 new programs to do it a different way, no luck.

So I decided to do a sanity check, and I ran into this nonsense: I try to send a byte of data to the shift register, and it displays numbers that make no sense to me.

If I write B00000000, it properly displays 2 0s (one shift register controls 2 4bit in drivers and the corresponding tubes).

But then, if I write B00000001 it displays a 2 digit, which would be a (B00000010). What?

Then I wrote B00000010 and the display showed a 6 digit (B00000110). WHAT? I thought maybe I had wired something incorrectly or read in the wrong order, but where did AN EXTRA 1 come from?!

I then tried B00000011 and the display flat out didn't work, which means that the first 4 bits were displaying a value between 10 and 16 (B00001010-B00001111) (the driver chips obviously can't display more than 9, so if the 4 bits are more than 9 it juts doesn't display anything). Again, teh hell is going on?

Writing B00000100 gave me an 8 digit (B00001000). Writing in B00000101 returned the same error from B00000011, and so did the next two values. Then B00001000 gave me a 9 digit (B00001001), but a B00001001 gave me a 1 digit (00000001).

I REALLY don't understand what in the world is going on. I checked all my wiring and tried to run a single shift register unplugging the other two that were daisy chained to it, nothing, still the weird thing happening.

Does anyone have insight on this? I am so close to finishing my clock, everything else works, but I don't understand what is wrong with the mismatch I get in the shift register output, and it's driving me insane.

PLS HALP.

Got any decoupling on those shift registers and Nixie control chips? http://www.thebox.myzen.co.uk/Tutorial/De-coupling.html

Also do not put the capacitor on the latch pin like it says in the tutorials it needs to go from power to ground.

Post the test code that you have written which displays the behaviour you have described. A schematic diagram would also be good which shows the shift registers, the display drivers and the nixie tubes.

Typical problems could be: 1. Pushing the data from the shift registers out in the wrong order ( LSB or MSB first) 2. Connecting the drivers to the wrong nixie pins (tube holder pin numbers may not equal displayed digit)

Ok, first of all thanks for the answers.

Grumpy_Mike, that is interesting, I can't say that I understand too much of it, considering that I don't know that much about electronics, but it seems plausible. I am powering my 3 shift registers and 6 nixie drivers off of the Arduino 5V pin, and connecting them to its GND pin. I have ordered some capacitors to test it, I will update as soon as I get them and try them.

6v6gt, I stripped my code to the very minimum to do this test. Basically all it is is a loop setting the latch pin low, and using shiftOut to send a byte of my choice to the first register in the chain, LSBFIRST. Lastly, the latch pin is set to high to output the byte. Unfortunately I can't find any correlation between the value I input and the output I get. I had thought it might be reading in incorrect order, but it displays numbers which contain more high bits than I input, so that doesn't make sense to me.

I don't have a schematic, but it's quite easy to explain. Everything runs on 5V and GND from the Arduino. I have three output pins, data, latch and clock coming out of it and gooing into the first shift register (74HC595N), which is then daisy chained to two more. Every register is connected to two nixie tube drivers (SN74141) as follows: pins Q0, Q1, Q2 and Q3 of the shift register are connected respectively to inputs A, B, C and D of the driver; pins Q4, Q5, Q6 and Q7 are connected respectively to inputs A, B, C and D of the second driver. All of this daisy chained to the other two registers etc.

From each SN74141 every pin is connected to the corresponding pin on the tube (IN-14), which has an anode, powered by a separate DC HV power supply, a decimal place, digits 0 through 9, and lastly another decimal place. I am not using a tube holder, I got the tubes and stuck them into my breadboard, I have tested them before and they were working fine.

I even tried unplugging everything except the first register and 2 nixie tubes, still getting the odd behavior.

If the behaviour is consistent and repeatable, it is more likely to be a coding or wiring problem. If the behaviour has a random character, then it is more likely to be a stray electrical effect problem.

If you post the code you have written to demonstrate the effect, there may be an error which is obvious, or you may get suggestions for test statements to put in the code to isolate the problem.

It should certainly be easy to simulate BCD input to the SN71441s to check the path from the decoders to the Nixie tubes.

I don't have a schematic, but it's quite easy to explain.

Sorry but no, you might think you are explaining things but we have to turn that into a schematic in our heads. There is so much missing from that explanation. How can you make anything without a schematic? You certainly can never check that it is right.

Just draw one on paper and post the result. However if you have no decoupling then it is a waste of time doing anything else until you get those ceramic capacitors. It is not an option with electronics you have to have them.

For an example of a schematic which seems to be similar to your design, look here http://scott-bot.com/nixie-bot/ Can you adapt this or produce a hand drawn equivalent for exactly your design ? You can't be helped easily without one as has been pointed out to you.

Incidentally, I spent some time helping someone correct exactly this design. The thread is here https://forum.arduino.cc/index.php?topic=375482.15 and it turned out to be a pcb/schematic mismatch problem which we could correct in software.

Hi,
Welcome to the forum.

Please read the first post in any forum entitled how to use this forum.
http://forum.arduino.cc/index.php/topic,148850.0.html then look down to item #7 about how to post your code.
It will be formatted in a scrolling window that makes it easier to read.

Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?

Tom… :slight_smile: