Hi, inspired by Dave's series of videos I designed schematic and PCB of a simple Nixie clock and I hope that someone will be able to explain what's happening.
The problem is that when I'm driving the cathodes with TPIC6B595 shift register, some of the digits are not readable/fuzzy. It's worth noticing that on different tubes different digits (in the same driving circuit) get fuzzy, eg. cathode 0 and 7, the rest is okay.
I'm attaching a photo of a blurry/fuzzy digit and a well displayed digit, as well as part of the schematic. HV is 180 V DC, series resistors are 2x10k, I'm switching on the anode voltage using a pair of MPSA42 and 92. I tried to lower down the anode voltage to 165 V, but it seems that the problem remained.
What I've done:
I checked individual tubes with a resistor and HV power supply - they're all ok.
I checked the TPIC6B595 outputs with a LED and series resistor - they're all ok, I'm driving one cathode at a time, one of them is always on, I'm filling the registers first, then turning on the anode supply, never the other way round.
The displayed sequence is 0-3-4-5-6-7-8-9-0-..., because cathodes 1 and 2 are connected to the next register, which is always filled with 0's. This is for test purpose only, as I have only two shift registers soldered to the PCB for now (the nixies can be just put into PCB for now, they form a tight fit)
I also recorded a video:
https://youtu.be/ibOdviAl_b4 Digit 7 is not displayed correctly. If I check this tube directly with a resistor and HV power supply, digit 7 lights up correctly. Replacing tubes result in a different digit being blurry.
Here is the test code (STM32):
void test_load_and_latch_two_registers(uint8_t output_number)
{
uint8_t value_to_load, j;
if(output_number > 7) return;
value_to_load = (1 << output_number);
// second register fill with 0
for(j = 0; j < 8; j++)
{
set_shift_register_clock(GPIO_PIN_RESET);
HAL_Delay(1);
set_data(GPIO_PIN_RESET);
HAL_Delay(1);
set_shift_register_clock(GPIO_PIN_SET);
HAL_Delay(1);
}
set_shift_register_clock(GPIO_PIN_RESET);
// first register fill with data
for(j = 0; j < 8; j++)
{
set_shift_register_clock(GPIO_PIN_RESET);
HAL_Delay(1);
if(value_to_load & (1 << j)) set_data(GPIO_PIN_SET);
else set_data(GPIO_PIN_RESET);
HAL_Delay(1);
set_shift_register_clock(GPIO_PIN_SET);
HAL_Delay(1);
}
set_shift_register_clock(GPIO_PIN_RESET);
latch_shift_register();
HAL_Delay(1000);
}
I suppose there's a problem with floating cathodes voltage, but have no idea what is happening in this circuit.
I measured voltages when a single digit is displayed in two cases.
Digit 5 displayed correctly:
A - 135 V
C0 - 123 V
C1 - 66 V
C2 - 124 V
C3 - 54 V
C4 - 102 V
C5 - 0 V
C6 - 54 V
C7 - 103 V
C8 - 54 V
C9 - 54 V
Shouldn't all off cathodes be around 50-55 V?
Digit 0 displayed incorrectly:
A - 169 V (way too high?)
C0 - 0 V
C1 - 58 V
C2 - 82 V
C3 - 54 V
C4 - 54 V
C5 - 54 V
C6 - 53 V
C7 - 53 V
C8 - 54 V
C9 - 54 V
As far as I understand, the off cathodes voltages in ideal case should be equal around anode voltage, but the internal clamping of TPIC6B595 should drop this floating voltage to around 50-55 V. But it seems that it doesn't work like that.
I would be grateful for any hints on this, guys.