Project tutorial
Nixie tube with Arduino || Simplest design with Opto

Nixie tube with Arduino || Simplest design with Opto © GPL3+

This project will show how to display NIXIE tube by Arduino and Optocoupler chip only

  • 1,993 views
  • 2 comments
  • 8 respects

Components and supplies

About this project

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

Buy electronic component on utsource.net

Step 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

Step 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 herehttp://bit.ly/38KY1ri

Code

Code snippet #1Plain text
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
}-------------------------------------------------------------------

Comments

Similar projects you might like

Nixie Tube Shield for Arduino

Project in progress by Marcin Saj

  • 11,415 views
  • 2 comments
  • 18 respects

Arduino Shield NCS314 NIXIE Tubes Clock IN-14

Project tutorial by Team GRA_AND_AFCH

  • 26,591 views
  • 9 comments
  • 79 respects

Arduino Clock on IN-18 Nixie Tubes NCS318 LONG Service Life

Project tutorial by Grisha Anofriev

  • 14,980 views
  • 4 comments
  • 47 respects

Nixie Clock Thermometer Hygrometer - Shield for Arduino

Project in progress by Marcin Saj

  • 6,403 views
  • 2 comments
  • 18 respects

A PM2.5 and PM 10 Detector design for Windows 10 UWP App

Project tutorial by Jiong Shi

  • 10,518 views
  • 6 comments
  • 24 respects

Simplest UNO Digital Clock Ever

Project tutorial by plouc68000

  • 41,811 views
  • 31 comments
  • 68 respects
Add projectSign up / Login