Nixie tube with Arduino || Simplest design with Opto coupler only


This project will show how to display NIXIE tube by Arduino and Optocoupler chip only. Nixie driver chip 74141 is difficult to purchase, so i decided to design a circuit with Optocoupler only. Fortunately, it works! After this experiment, i will try to make NIXIE CLOCK
Watch the video for full instruction


Part list to make the project:

1. Arduino UNO https://amzn.to/2P58O7s

2. Nixie tube 6 pcs https://amzn.to/3aHyJvX

3. Opto coupler chip TLP627

4. DC step-up module from 12VDC to 390VDC https://amzn.to/30kpdK9

5. Breadboard https://amzn.to/2uCrnsW



1. Circuit design

As matrix design, we only need 12 output from Arduino to control 20 lights of 2 nixie tube.
By quick turn on and off 2 nixie tube, we will see two number as permanent view. The sequence turning on/off is by Arduino Code

2. Arduino code


const int nixie_0 = 2;
const int nixie_1 = 3;
const int nixie_2 = 4;
const int nixie_3 = 5;  
const int nixie_4 = 6;
const int nixie_5 = 7;
const int nixie_6 = 8;
const int nixie_7 = 9;
const int nixie_8 = 10;
const int nixie_9 = 11;

const int row_1 = 0;
const int row_2 = 1;

const int time_on = 3;

void setup() {
  pinMode(nixie_0, OUTPUT);
  pinMode(nixie_1, OUTPUT);
  pinMode(nixie_2, OUTPUT);
  pinMode(nixie_3, OUTPUT);
  pinMode(nixie_4, OUTPUT);
  pinMode(nixie_5, OUTPUT);
  pinMode(nixie_6, OUTPUT);
  pinMode(nixie_7, OUTPUT);
  pinMode(nixie_8, OUTPUT);
  pinMode(nixie_9, OUTPUT);
  pinMode(row_1, OUTPUT);
  pinMode(row_2, OUTPUT);
  //Serial.begin(9600); //should NOT use seiral println, it will effect to output pin D0 & D1
}

void loop() {
  for (int i=0; i<=59; i++){
    int j = i/10; //second number from right
    int k = i%10; //first number from right

    for (int m=0; m<=50; m++){ //this for loop is used for delay showing two numbers
      //-----------show first number
      off_all();
      on_number(1,k+2); 
      delay(time_on);

      //-----------show second number
      off_all();
      on_number(0,j+2);
      delay(time_on);
    }
  }
}

void on_number(int row, int nixie){
  //void off_all();
  digitalWrite(row, HIGH);
  digitalWrite(nixie, HIGH);
}

void off_all(){
  digitalWrite(nixie_0, LOW);
  digitalWrite(nixie_1, LOW);
  digitalWrite(nixie_2, LOW);
  digitalWrite(nixie_3, LOW);
  digitalWrite(nixie_4, LOW);
  digitalWrite(nixie_5, LOW);
  digitalWrite(nixie_6, LOW);
  digitalWrite(nixie_7, LOW);
  digitalWrite(nixie_8, LOW);
  digitalWrite(nixie_9, LOW);
  digitalWrite(row_1, LOW);
  digitalWrite(row_2, LOW);
  delayMicroseconds(420);  //to prevent "ghost" effect to other tube
}-------------------------------------------------------------------
Code and circuit can be downloaded here
http://bit.ly/38KY1ri


0 Comments: