Управляем газоразрядной трубкой (Nixie Tube) с помощью Arduino

01 апреля 2017

Газоразрядная трубка или Nixie Tube – это заполненная газом неоновая трубка с анодом из проволочной сетки и различными катодами в форме цифр или других символов. Еще в 1950-х годах они использовались в компьютерах, калькуляторах и лабораторном оборудовании. Позже они были заменены вакуумно-люминесцентными и жидкокристаллическими дисплеями и светодиодами и стали довольно редки сегодня. Произошло это из-за большей стоимости трубок. Поэтому постепенно они были заменены практически во всех приборах.


Сегодня мы вспомним об этом замечательном изобретении и постараемся научиться управлять им при помощи платы Arduino.

Предупреждение! В данном проекте используется высоковольтный источник питания. Поэтому необходимо быть предельно осторожным при работе. Все действия вы производите на свой страх и риск.

Материалы


  • Источник питания 12 VDC;
  • Преобразователь 12-180 VDC;
  • Плата Arduino;
  • Газоразрядные трубки (в нашем распоряжении оказались IN-12B и IN-14);
  • Чип SN74141;
  • Мультиметр.

Тестируем наши трубки

Перед подключением трубок к Arduino необходимо убедиться, что все цифры отображаются верно. Для настройки преобразователя постоянного тока лучше использовать мультиметр. Нашим трубкам необходимо около 180 VDC. Необходимо подключить «+» преобразователя к аноду трубки с резистором 12К. Эти цифры не точны и относятся именно к нашим экземплярам трубок. Для определения своих данных необходимо ознакомиться со спецификацией трубок. Также в спецификации необходимо выяснить какой из контактов является анодом. Но рассмотрев несколько трубок мы выяснили, что анод всегда имеет белое защитное покрытие, в то время, как катоды черное. Теперь подключаем оставшиеся контакты к земле, чтобы убедиться, что все цифры корректно работают. Не стоит беспокоиться, если вы подключите два контакта одновременно. Ничего страшного не произойдет, а просто одновременно загорятся две цифры.

Подключение трубок


Если трубка исправна и нормально работает можно приступать к подключению к микросхеме SN74141. Соединяем контакт 11 с контактом 4 (D), 10 с 7 (С), 9 с 6 (В), а 8 с 3 (А). Подключаем 5V от Arduino к 5 на микросхеме и заземляем на 12 на микросхеме. Катоды на трубке подключаем к соответствующим выходам на микросхеме, а анод к 180 VDC. Микросхема принимает двоичный сигнал и передает его на трубку. Для управления двумя трубками понадобится 8 цифровых контактов на Arduino, либо придется использовать регистр сдвига (рисунок 4).

Код

Далее необходимо загрузить данный код. Он будет циклически перебирать цифры в трубках. Для создания собственного кода можно воспользоваться таблицей в прилагаемом документе.

void
setup() {
    pinMode(11, OUTPUT);// D
    pinMode(10, OUTPUT);// C
    pinMode(9, OUTPUT);// B
    pinMode(8, OUTPUT);// A
}

void loop()
{
    //0 
    digitalWrite(11, LOW);  //D
    digitalWrite(10, LOW);  //C
    digitalWrite(8, LOW);  //B
    digitalWrite(8, LOW);  //A
    delay(1000);

    //1
    digitalWrite(11, LOW);  //D
    digitalWrite(10, LOW);  //C
    digitalWrite(9, LOW);  //B
    digitalWrite(8, HIGH); //A
    delay(1000);

    //2
    digitalWrite(11, LOW);  //D
    digitalWrite(10, LOW);  //C
    digitalWrite(9, HIGH); //B
    digitalWrite(8, LOW);  //A
    delay(1000);


    //3
    digitalWrite(11, LOW);  //D
    digitalWrite(10, LOW);  //C
    digitalWrite(9, HIGH); //B
    digitalWrite(8, HIGH); //A
    delay(1000);


    //4
    digitalWrite(11, LOW);  //D
    digitalWrite(10, HIGH); //C
    digitalWrite(9, LOW);  //B
    digitalWrite(8, LOW);  //A
    delay(1000);


    //5
    digitalWrite(11, LOW);  //D
    digitalWrite(10, HIGH); //C
    digitalWrite(9, LOW);  //B
    digitalWrite(8, HIGH); //A
    delay(1000);


    //6
    digitalWrite(11, LOW);  //D
    digitalWrite(10, HIGH); //C
    digitalWrite(9, HIGH); //B
    digitalWrite(8, LOW);  //A
    delay(1000);


    //7
    digitalWrite(11, LOW);  //D
    digitalWrite(10, HIGH); //C
    digitalWrite(9, HIGH); //B
    digitalWrite(8, HIGH); //A
    delay(1000);


    //8
    digitalWrite(11, HIGH); //D
    digitalWrite(10, LOW);  //C
    digitalWrite(9, LOW);  //B
    digitalWrite(8, LOW);  //A
    delay(1000);


    //9
    digitalWrite(11, HIGH); //D
    digitalWrite(10, LOW);  //C
    digitalWrite(9, HIGH); //B
    digitalWrite(8, LOW);  //A

    delay(1000);
}


Статья является авторским переводом с сайта instructables.com


Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.


Поделиться: