Shield Nixie Tube Clock NCS314 для Arduino UNO/MEGA — совместимость с IN-14/IN-12
Компоненты и материалы
| Shield Nixie Tubes IN-14 NCS314 для Arduino | ×1 |
| Shield Nixie Tubes Clock IN-12 NCS312 для советских ламп | ×1 |
| Arduino UNO / Genuino | ×1 |
| Arduino Mega 2560 | ×1 |
| Блок питания 12В 1А | ×1 |
| Акриловый корпус для SHIELD NCS314 (модель ACNS314) | ×1 |
Программное обеспечение и сервисы
- Arduino IDE
О проекте
Обзор
Изначально, получив доступ к практически неистощимому запасу качественных советских никсие-ламп IN-12, IN-14 и IN-18, мы решили сделать простой дисплей на никсие-лампах в виде шилда для Arduino. Arduino у нас уже была, поэтому задача казалась небольшой. В то время мы ничего не знали о работе с такими лампами.
Очень быстро в интернете нашли схему питания таких ламп:

ДА! Оно светится! То, что мы увидели, просто поразило нас — это было похоже на маленькое чудо, и мы поняли, что движемся в верном направлении. Сразу началась фотосессия:

На следующий день начали обсуждать концепцию будущего проекта: для упрощения и снижения стоимости решили использовать схему с динамической индикацией, но позже отказались от неё в пользу полностью статического режима. Хотя для ламп IN-14 визуальной разницы не заметно, для IN-18 она существенна — в динамическом режиме они светят менее ярко, появляется так называемый «эффект синих пятен»:

Динамический режим — это режим, при котором в каждый момент времени горит не все лампы, а только одна (или несколько, например, две).
Обсуждая будущее устройство, решили реализовать возможность вывода информации на лампы с компьютера, что позволит энтузиастам создавать свои устройства для отображения, например, количества непрочитанных сообщений или раундов в игре вроде Fallout.
Затем начался выбор аппаратной части для переключения катодов (цифр) в лампах. Выбор пал на сдвиговые регистры с SPI для экономии пинов МК. Но так как питающее напряжение ламп очень высокое — до 200 вольт, вариантов не так много: HV513, HV5812, HV5122. Пока мы тестировали устройство на каждом из этих чипов, остановились на HV5812 (в новых версиях шилдов NCS314 V2.X и NCS312 V1.X используется HV5122). Этот чип удобен тем, что позволяет одновременно управлять двумя лампами как 20-битным регистром.
Для управления 6 лампами понадобятся три таких схемы, соединённые последовательно. Это позволяет один раз отправить пакет по SPI и не заботиться об обновлении информации на лампах, как это было бы при алгоритме динамической индикации. То есть, пока нам не нужно менять информацию на лампах, МК может заниматься другими задачами, даже спать!
Реализованные задачи
- Статическая индикация на сдвиговых регистрах
- Режим «Слот-машина» (профилактика отравления индикаторов)
- Стандартные функции часов: время, дата, будильник
- RTC (часы реального времени) с батареей CR1220 (в версии V1.2-2.X используется высокоточный чип DS3231)
- Измерение температуры DS18B20 [Цельсий или Фаренгейт]
- Управление через ИК-порт TSOP4836 (только для Mega). Проверено с пультом Sony RM-X151, возможны и другие на 36 кГц
- Синхронизация времени с внешним GPS (только для Mega)
- Простое меню
- Отдельное управление двоеточием (верхняя и нижняя точки)
- RGB-подсветка с плавными переходами цветов
- RTTTL-рингтон для будильника (Ring Tone Transfer Language)
- Слот-машина (профилактика отравления индикаторов)
- Самотестирование (проверка всех цифр на каждом индикаторе 0-9, все LED, последовательное переключение цветов синий/красный/зелёный, звуковой тест)
Нереализованные задачи
- Датчик освещённости
Код
Полный код прошивки доступен в репозитории GitHub. Основные моменты:
- Используются библиотеки SPI, Wire, ClickButton, Time, Tone, EEPROM
- Управление сдвиговыми регистрами HV5812/HV5122 через SPI
- Меню навигации с тремя кнопками (Set, Up, Down)
- Поддержка 12/24-часового формата
- RTTTL-проигрыватель для будильника
- RGB-эффекты «огонька»
- Автосохранение настроек в EEPROM
// Пример отправки 64 бит через SPI (8 передач по 8 бит)
SPI.transfer(var64);
SPI.transfer(var64 >> 48);
SPI.transfer(var64 >> 40);
SPI.transfer(var64 >> 32);
SPI.transfer(var64 >> 24);
SPI.transfer(var64 >> 16);
SPI.transfer(var64 >> 8);
SPI.transfer(iTmp);
Репозиторий: github.com/afch/NixeTubesShieldNCS314
Схемы
Схемы подключения и печатных плат доступны в разделе Schematics проекта.
Производственный процесс
- Arduino POV-часы: сборка дисплея на эффекте сохранения образа
- Веб-управляемая DMX-система освещения: Arduino Mega как мастер-контроллер
- Слово-часы (Word Clock) на Arduino — DIY-часы с текстовой индикацией времени
- Часы реального времени на Arduino с расчётом времени намаза
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Сборка стильных часов на индикаторах НИХРОН (Nixie) в корпусе из МДФ на Arduino
- Точные 7-сегментные часы на Arduino Pro Mini и DS1302 RTC
- Беспроводная прошивка Arduino через Bluetooth HC-05: щит без USB-кабеля
- Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код