1
\$\begingroup\$

I designed a 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 get fuzzy, eg. cathode 0 and 7, the rest is okay.

Example of a bad/fuzzy digit

Digit blurry/fuzzy

Example of a well displayed digit

Digit displayed ok

HV is 180 V DC, series resistors are 2x10k, I'm switching on the anode voltage using a pair of MPSA42 and 92.

Schematic

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 lit, I'm filling the registers first, then turning on the anode supply.

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.

Here is the code:

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 would be grateful for any hints on this. I suppose there's a problem with floating cathodes voltage, but have no idea what is happening in this circuit.

Edit 1: 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.

Edit 2: 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

Digit 0 displayed incorrectly:

  • A - 169 V
  • 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.

EDIT: I was able to solve the problem - some nixie pins didn't make a contact with PCB pads and were left floating. Now everything works as expected.

\$\endgroup\$
2
  • \$\begingroup\$ I have not looked at your code. Have you tried changing HAL_Delay to 2? \$\endgroup\$ – Spehro Pefhany Jan 31 '20 at 22:12
  • \$\begingroup\$ Yes, I tried, unfortunately without success. I'm afraid it's more an electrical problem instead of firmware. I added a video showing the problem. \$\endgroup\$ – Adam Feb 1 '20 at 10:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.