Часы на газоразрядных индикаторах своими руками на ардуино

Добавил пользователь Дмитрий К.
Обновлено: 05.10.2024

Существует множество способов собрать электронные часы своими руками: схемы широко представлены в литературе и сети Интернет. Большинство современных реализаций построено на основе микроконтроллеров. Выполнение таких проектов зачастую требует обширных практических навыков и теоретических знаний в области электроники: умения пользоваться специализированным программным обеспечением, создавать в домашних условиях печатные платы методом травления в хлорном железе, хорошо паять. Также необходимо иметь множество инструментов и расходных материалов.


Однако существует простой и доступный способ собрать электронные часы своими руками в домашних условиях: использовать платформу Arduino. Она представляет собой программно-аппаратный комплекс, специально предназначенный для обучения основам программирования и электроники. C помощью Arduino любой человек, даже без специальной предварительной подготовки, сможет построить электронные часы своими руками: схемы принципиальные, инженерные программы и даже паяльник не понадобятся!

Шаг 1. Список компонентов

Чтобы собрать простые часы на светодиодных матрицах вам потребуется всего несколько дешёвых компонентов:

  • платформа Arduino. Подойдут самые простые модели — Arduino Nano или Micro;
  • контактная макетная плата;
  • соединительные провода для макетной платы;
  • модуль часов реального времени Adafruit DS3231;
  • светодиодный матричный модуль 32x8 MAX7219;
  • две кнопки.

Также понадобится персональный компьютер и USB—mini-USB кабель для загрузки программы управления в память Arduino IDE. Вот и всё — паяльник, щипцы для снятия изоляции, монтажные ножи и прочие профессиональные инструменты не нужны: все операции выполняются руками. Разве что в некоторых случаях удобнее использовать пинцет, но можно обойтись и без него.

Детали для сборки электронных часов на Arduino

Детали для сборки электронных часов на Arduino

Шаг 2. Сборка электронной схемы

Схема электронных часов с индикацией на светодиодах с применением Arduino даже для неопытных радиолюбителей покажется довольно простой. Для сборки требуется всего несколько проводников. Таблица подключений:

Модуль Arduino → светодиодная матрица 32x8 MAX7219

Модуль Arduino → часы реального времени Adafruit DS3231

Модуль Arduino → кнопки

Второй вывод кнопок соединяется с землёй GND.

Следует лишь обратить внимание и запомнить, каким образом замкнуты между собой контактные отверстия на макетной плате. Следующая схема иллюстрирует способ внутреннего соединения контактных отверстий:

Схема электрических подключений макетной платы

Схема электрических подключений макетной платы

Два ряда (1 и 4) с обеих сторон замкнуты горизонтально — обычно они используются как линия питания +5V и земля GND. Все внутренние контакты (2 и 3) замкнуты вертикально. При этом монтажная плата как вертикально, так и горизонтально разделена на две независимые друг от друга симметричные части. Это позволяет, например, собрать два разных устройства на одной плате.

Схема электронных часов с индикацией на светодиодах, а также расположение элементов на монтажной плате представлена на иллюстрации:


Тщательно проверьте соответствие всех соединений указанной схеме. Также убедитесь в том, что проводники хорошо закреплены в контактных отверстиях монтажной платы.

Внешний вид собранного устройства

Внешний вид собранного устройства

Шаг 3. Прошивка Arduino

Интерфейс среды разработки Arduino IDE

Интерфейс среды разработки Arduino IDE

Теперь для завершения работы над устройством потребуется выполнить лишь ряд простых операций:

  1. подсоедините Arduino к USB-порту компьютера. Если модуль подключается впервые, то необходимо будет дождаться определения устройства операционной системой и установки драйвера;
  2. скопируйте содержимое папки libraries из архива в одноимённую папку в каталоге Arduino IDE;
  3. запустите средство разработки Arduino IDE;
  4. настройте тип Arduino в соответствии с имеющимся у вас модулем. Так, если вы используете Arduino Nano, в меню необходимо выбрать Tools -> Board: “Arduino Nano”. Также убедитесь в том, что модель процессора соответствует микроконтроллеру на вашей плате:

Компиляция программного кода и дальнейшая загрузка в память микроконтроллера займёт некоторое время, обычно не более одной минуты. Об успешном завершении операции будет сообщено в консоли Arduino IDE. После чего остаётся лишь перезагрузить Arduino с помощью кнопки Reset на устройстве — простые часы на светодиодных матрицах готовы!


Готовые часы на Arduino

Настройка часов осуществляется с помощью двух кнопок. Устройство поддерживает 12- и 24-часовой формат вывода времени, показ даты и дня недели, отображение времени с секундами и без. Также имеется возможность менять яркость свечения светодиодов.

Вариант корпуса для светодиодных часов

Вариант корпуса для светодиодных часов

Вероятно, в дальнейшем вам захочется добавить больше функций (например, термометр), или же установить устройство в корпус собственного дизайна — хороших результатов можно добиться с помощью изготовления на станках с лазерной резкой. Но уже сейчас вы сможете смело сказать, что собрали полноценные электронные часы своими руками!

Часы на газоразрядных индикаторах

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

Часы на газоразрядных индикаторах — конструктивные элементы и общий принцип работы

Часы на газоразрядных индикаторах

Изделие можно разделить на следующие функциональные блоки:

  • Блок высокого напряжения.
  • Блок индикации.
  • Счетчик времени.
  • Блок подсветки.

Блок высокого напряжения для часов на газоразрядных индикаторах

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

Где же взять подобное напряжение? Первое что приходит на ум — сетевая розетка. Да, можно воспользоваться выпрямленным сетевым напряжением. Схема будет выглядеть следующим образом:

Схема

Недостатки данной схемы очевидны. Это отсутствие гальванической развязки, нет какой-либо безопасности и защиты схемы вообще. Таким образом лучше проверять лампы на работоспособность, соблюдая при этом максимальную осторожность.

Для изготовления часов на газоразрядных индикаторах своими руками идём другим путем — повышаем безопасное напряжение до нужного уровня с помощью DC-DC преобразователя. Если говорить совсем кратко, подобный преобразователь работает по принципу качелей. Мы ведь можем придать качелям достаточно большое ускорение, прикладывая легкое усилие руки? Также и DC-DC преобразователь: малое напряжение раскачиваем до высокого.

Блок индикации

Следующий функциональный блок — индикация. Представляет собой лампы, у которых катоды соединены попарно, а аноды выведены на оптопары или транзисторные ключи. Обычно в часах применяется динамическая индикация в целях экономия места на печатной плате, миниатюризации схемы и упрощения разводки платы.

Часы на газоразрядных индикаторах

Счетчик времени

Следующий блок — счетчик времени. Проще всего его сделать на специализированной микросхеме DS1307

Микросхема DS1307

Она обеспечивает отличную точность времени. Благодаря ей часы сохраняют правильное время и дату, несмотря на длительное отключение питания. Производитель обещает до 10 лет (!) автономной работы от круглой батарейки CR2032.

Вот типичная схема подключения микросхемы DS1307:

Подключение микросхемы DS1307

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

Блок подсветки

Это самая простая часть часов, она ставится по желанию. Блок подсветки — это всего лишь светодиоды (одноцветные или RGB) под каждой лампой, которые обеспечивают фоновую подсветку. Если выбрать RGB, то цвет подсветки можно выбрать какой угодно или вообще сделать его плавно меняющимся. В таком случае необходим соответствующий контроллер. Чаще всего эту функцию возлагают на тот же микроконтроллер, который считает время, но для упрощения программирования можно поставить дополнительный.

Ну а теперь несколько фотографий достаточно сложного проекта часов. В нем использованы два микроконтроллера PIC16F628 для управления временем и лампами и один контроллер PIC12F692 для управления RGB подсветкой.

Бирюзовый цвет подсветки:

Бирюзовая подсветка часов на газоразрядных индикаторах

А теперь зеленый:

Зеленая подсветка часов на газоразрядных индикаторах

Розовая подсветка часов на газоразрядных индикаторах

Все эти цвета настраиваются одной кнопкой. Выбрать можно какой угодно. RGB диоды способны выдать любой цвет.

Часы на газоразрядных индикаторах — схема

Часы на газоразрядных индикаторах

Итак, мы рассмотрим одну их самых простых схем часов. Ради простоты и максимальной доступности будем управлять индикаторами при помощи микроконтроллера в лице платформы Ардуино, которая подключается к компьютеру по USB и в неё по клику мышки загружается прошивка. Между Ардуино и индикаторами нам нужна ещё некоторая электроника, которая будет раздавать сигналы по ногам индикаторов. Значит, во-первых, нам нужен генератор, который будет создавать высокое напряжение для питания индикаторов.

Часы работают от постоянного напряжения около 180 В. Этот генератор устроен очень просто и работает на индуктивных выбросах. Частоту генератора задаёт шим-контроллер при частоте в 16 кГц на выходе получаем напряжение 180 В. Но несмотря на высокое напряжение, генератор очень и очень слабый, так что о других его применениях даже не думайте, он способен только на тлеющий разряд в инертном газе.

Это напряжение, а именно +, через высоковольтные оптопары направляется на индикаторы. Сами оптопары управляются Arduino, то есть она может подать +180В на любой индикатор. Чтобы цифра в индикаторе засветилась, нужно подать на неё землю, этим занимается высоковольтный дешифратор — советская микросхема. Дешифратор тоже управляется Ардуино и может подключить к земле любую цифру.

Как устроены часы на газоразрядных индикаторах

А теперь внимание: индикаторов у нас 6, а дешифратор — 1. Как же это работает? На самом деле дешифратор подключен сразу ко всем индикаторам, то есть ко всем их цифрам. Работа дешифратора и оптопар синхронизирована таким образом, что в один момент времени напряжение подаётся только на одну цифру одного индикатора, то есть оптопара очень быстро переключают индикаторы, а дешифратор зажигает на них цифры, и нам кажется, что все цифры горят одновременно. На деле же каждая цифра горит чуть больше 2 мс, а затем сразу включается другая. Суммарная частота обновления 6-ти индикаторов составляет около 60 Гц, то есть кадров в секунду, а учитывая инертность процесса, глаз никаких мерцаний не замечает. Такая система называется динамическая индикация и позволяет очень сильно упростить схему.

Схема

В общем и целом, схема часов получается весьма и весьма сложной, поэтому разумно сделать для неё печатную плату.

Плата для создания часов на газоразрядных индикаторах

Плата универсальная для индикаторов ИН12 и ИН14. На ней, помимо всей необходимой для индикаторов обвязки, предусмотрены места для:

  • кнопки включения/выключения будильника;
  • выхода на пищалку будильника;
  • термометр + гигрометр DHT22;
  • термометра DS18b20;
  • модуля реального времени на чипе DS3231;
  • 3 кнопок управления часами.
  • Смотрите также, как сделать индикатор года на цифровом газоразрядном индикаторе

Ламповые часы на газоразрядных индикаторах своими руками — инструкция по монтажу

Дорожек в этом проекте много, особенно тонких на плате с индикаторами.

Дорожки на плате

Плату нужно распилить на части, так как она двухэтажная. Но лучше не пилить, стеклянная пыль очень вредна для лёгких. Закалённым саморезом царапаем плату и аккуратно ломаем в тисках.

Подготовка платы

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

Паяем компоненты на плату

Рейка с пинами

В проекте используется полноразмерная Arduino Nano. Сделано это для упрощения загрузки прошивки даже для самых новичков.

Arduino Nano на плате

Итак, собрали нижнюю плату. Сначала нужно протестировать работу генератора. Если он собран неправильно, то может бахнуть конденсатор. Так что накрываем его чем-нибудь и включаем питание.

Тестирование работы генератора

Ничего не бахнуло, уже хорошо. Аккуратно измеряем напряжение на ногах конденсатора, должно быть 180В.

Замеряем напряжение

Отлично. Внимательно смотрим как паять индикаторы. На всех индикаторах одна нога помечена белым — это анод.

Паяем индикаторы

Лампу нужно вставлять так, чтобы анодная нога попала вот в это отверстие, это анодные дороги.

Вставляем лампу

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

Паяем остальные элементы

Датчик температуры пришлось выносить на проводах, чтобы разместить его подальше от источников нагрева.

Плата устройства

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

Готовые часы

Всё работает! Поздравляю, мы сделали ламповые часы.

Теперь, что касается корпуса. Вот такая заготовка для самодельной шкатулки идеально подходит по размеру к плате.

Корпус для часов на газоразрядных индикаторах

Также делаем отверстия под пищалки, провода, кнопки и переключатели.

Делаем отверстия

Часы в корпусе

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

Плата на стойках

Корпус было решено покрасить под орех. Не очень удачно, лучше используйте морилку.

Покрашенный корпус часов

Готово! Перед прошивкой можно настроить некоторые моменты: времена режима часов и режима отображения температуры и влажности. Есть 2 режима яркости индикаторов, дневной и ночной. Соответственно для этого настройки.

Настройки часов

Удержав кнопку ещё раз, попадаем в режим настройки времени. Настроили, удерживаем ещё раз и попадаем обратно на просто режим часов. Также из настройки времени будильника можно выйти сразу же, дважды кликнув по кнопке выбор. То есть выйти, минуя настройку времени.

Часы в руках

Звонок будильника конечно отвратительный, но такой лучше всего пробуждает.

Видео о сборке и тестировании часов на газоразрядных индикаторах:

Сегодня короткий пост, в основном картинки. Лет 15 лежали в коробке лампы ИН-12Б и не находили себе применения, но я знал, что когда то им придется показывать время.

Теперь твой час настал. — Молись!

Немного про лампы ИН-12 — это индикатор тлеющего разряда для работы в качестве визуального цифрового индикатора электрических сигналов. Катоды — в форме арабских цифр (от 0 до 9) и запятой в приборе (ИН-12Б). Высота цифр 18 мм. Индикация производится через купол баллона. Оформление — стеклянное, (РШ 31а). Масса 20 г.

Начнем со схемы устройства:


Схема часов на индикаторе ИН-12Б. Для просмотра полной картинки нажмите на ней ПКМ и выберете открыть в новой вкладке.

Часы выполнены на микросхеме DS3231 — часы реального времени, погрешность составляет всего ±2 минуты за год. Кроме часов микросхема имеет два будильника и календарь до 2100 года, если будет не хватать перепаяю на новую если еще будут выпускаться.

На часах предусмотрена RGB подсветка колб ламп на умных светодиодах WS2812B. Можно выбрать практически любой цвет и яркость. ESP12 устанавливается как опция для управления часами по WiFi, можно управлять RGB подсветкой и настраивать время, календарь и будильник. Дополнительно на ESP заведен датчик температуры ds18b20.

После того как нарисована схема, приступаем к трассировке печатной платы. Их будет две, отдельно мозги и отдельно индикаторы, собираются бутербродом.

Готовая и собранная плата часов


Плата часов на индикаторах ИН12

Первый запуск и тест подсветки, уровень и цвет подсветки регулируется и когда часы будут собраны в корпус то она будет видна только как подсветка самих колб ламп. Прошивка для микроконтроллера находится на моей странице GitHub.

По просьбам читателей желающих повторить проект, выкладываю HEX файл прошивки. Скомпилировано для Atmega328 с кварцем на 16 МГц.


Первый запуск часов

Часы пока без корпуса, жду когда его сделают. Корпус будет из массива дерева, когда оформлю часы в корпус добавлю фоток. (PS. Фото в корпусе ниже.)

Галерея фоток готовых часов, без корпуса.

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

Видео работы часов

Мерцание видно только на камеру, так как индикация динамическая, глаз этого не видит.

Nixie_clock

Года 2 назад, я узнал о замечательных советских газоразрядных индикаторах. До этого, я конечно видел, что то подобное в старой советской технике, но никогда не задумывался, что такие индикаторы можно применить в быту, довольно таки в многочисленных проектах, в которых нужно выделить эдакую эстетическую изюминку. Свою популярность эти индикаторы вновь приобрели среди радиолюбителей несколько лет назад из за своего антикварного вида и довольно красивого визуального отображения индикации. В интернете уже сейчас можно найти прекрасные реализации часов на советских ИНках, но мне с самого начало хотелось разобраться с принципами построения таких часов, написать свою прошивку и сделать самодельный корпус из подручных материалов. Не давно я выкроил время и соорудил свои собственные часики на платформе arduino. Самым сложным оказалось достать эти индикаторы. В моем городе я так их и не нашел. Через форум сайта радиокот, нашел человека, который как раз был не далеко в г. Омске. Купил у него 6 ламп ИН-14 и 12 ламп ИН-12Б, а также 6 высоковольтных дешифратора К155ИД1.

Набросал вот такую схему, которую подглядел на каком то сайте. Здесь мы видим 2 высоковольтных дешефратора К155ИД1, 6 трубок ИН-14, преобразователь напряжения с 12 до 180В для питания анодов колб. Подсветку сделал с возможностью управлять через микроконтроллер, но ума так и не дал. Просто постоянно горит. Пищалку позднее я вообще подключил мимо транзистора напрямую к модулю с атмегой. Почти все компоненты используются в планарном исполнении.

Nixie_clock_shematic

Модуль с атмегой и часами реального времени ds1307 сделал на отдельной плате. Я использовал atmega168PA-AU, но в данном проекте можно смело использовать atmega8PA или atmega88PA (просто зашейте соответствующий bootloader), работающие от внутреннего осцилятора 8MHz.

Схема модуля atmega + ds1307 Печатная плата модуля atmega + ds1307

Далее написал вот такую простенькую прошивку с помощью Arduino IDE 1.0.3. Как видим в начале скетча идет определение пинов К155ИД1, анодов и другой периферии Так, что кто захочет извратится и сделать такую схему на макетке с обычной ардуиной можете переназначить на другие удобные вам порты. Есть 2 режима отображения: время и дата, настройка часов, 1 анимация. Я немного пытался оптимизировать исходный код, некоторым новичкам может потребоваться время на его осмысление. Советую почитать вот это для начала.

// К155ИД1 (1)
uint8_t Pin_1_a = 14;
uint8_t Pin_1_b = 16;
uint8_t Pin_1_c = 17;
uint8_t Pin_1_d = 15;
// К155ИД1 (2)
uint8_t Pin_2_a = 5;
uint8_t Pin_2_b = 7;
uint8_t Pin_2_c = 8;
uint8_t Pin_2_d = 6;
// Анодные пины
uint8_t Pin_a_1 = 11;//колбы 1, 4
uint8_t Pin_a_2 = 10;//колбы 2, 5
uint8_t Pin_a_3 = 9; //колбы 3, 6

switch (timeset)
//Установка часов
case 1:
DOT_ON;
mode=0;
NumberArray[2] = 10;
NumberArray[3] = 10;
NumberArray[4] = 10;
NumberArray[5] = 10;
if (!TIME_UP&&!up)
up=true;
DateTime adjust (now.unixtime() + 3600); // + 1 Час
RTC.adjust(adjust);
playTone(80, 2800);
>
if (TIME_UP&&up) up=false;
break;
//Установка минут
case 2:
NumberArray[0] = 10;
NumberArray[1] = 10;
NumberArray[4] = 10;
NumberArray[5] = 10;
if (!TIME_UP&&!up)
up=true;
DateTime adjust (now.unixtime() + 60); // + 1 минута
RTC.adjust(adjust);
playTone(80, 2800);
>
if (TIME_UP&&up) up=false;
break;
//Установка секунд
case 3:
NumberArray[0] = 10;
NumberArray[1] = 10;
NumberArray[2] = 10;
NumberArray[3] = 10;
if (!TIME_UP&&!up)
up=true;
DateTime adjust (now.unixtime() + 1); //+ 1 секунда
RTC.adjust(adjust);
playTone(80, 2800);
>
if (TIME_UP&&up) up=false;
break;
//Установка дня
case 4:
mode=1;
NumberArray[2] = 10;
NumberArray[3] = 10;
NumberArray[4] = 10;
NumberArray[5] = 10;
if (!TIME_UP&&!up)
up=true;
DateTime adjust (now.unixtime() + 86400L); //+ 1 день
RTC.adjust(adjust);
playTone(80, 2800);
>
if (TIME_UP&&up) up=false;
break;
// Установка месяца
case 5:
mode=1;
NumberArray[0] = 10;
NumberArray[1] = 10;
NumberArray[4] = 10;
NumberArray[5] = 10;
if (!TIME_UP&&!up)
up=true;
DateTime adjust (now.unixtime() + (86400L*31)); //+ 1 месяц
RTC.adjust(adjust);
playTone(80, 2800);
>
if (TIME_UP&&up) up=false;
break;
//Установка года
case 6:
mode=1;
NumberArray[0] = 10;
NumberArray[1] = 10;
NumberArray[2] = 10;
NumberArray[3] = 10;
if (!TIME_UP&&!up)
up=true;
DateTime adjust (now.unixtime() + (86400L*365)); //+ 1 год
RTC.adjust(adjust);
playTone(80, 2800);
>
if (TIME_UP&&up) up=false;
break;
>
// Вывод данных на ИН-14.
DisplayNumberString( NumberArray );
>
//Функция "пищалки"
void playTone(long duration, int freq) duration *= 1000;
int period = (1.0 / freq) * 1000000;
long elapsed_time = 0;
while (elapsed_time [download >
[/stextbox]


Полностью собранные часы. Платы спаяны землями.

Ну и последняя часть часиков это конечно внешний вид — корпус. Я его сделал из остатка сосновой плахи пятерки. В принципе никаких специальных навыков я не имею. Бывало на школьных уроках труда делал указки и на токарном станке скалку точил, но это было уже больше 12 лет назад. Просто нужно терпением запастись и несколькими инструментами. Итак понадобятся: лобзик или ножовка, стамеска, напильник, мелкая шкурка, морилка на алкидной основе дубового или другого цвета, деревяха подходящего размера. Подробный фото отчет изготовления корпуса я не запечатлел, так как изготавливал его на одном дыхании. Вкратце на словах несколько этапов:

1) Ножовкой или лобзиком облагораживаем наш без форменный кусок дерева до состояния прямоугольника близкого к идеальному :).
2) Cтамеской снизу выдалбливаем прямоугольник меньшего размера.
3) Cверху где лампы будут торчать, выдалбливаем, выпиливаем длинный и узкий овал по размеру ламп.
4) Шкурим, придаем углам овальности.
5) Делаем 6 отверстий для дна из простой деревоплиты или фанеры тонкой.
6) Покрываем корпус морилкой на 2 раза.

Вообще если у вам нет времени на это безумие я советую добежать до ближайшей столярки и вам за не большую плату из палена на фрейзере сделают необходимые преобразования.

Корпус без покраски. Вид снизу. Корпус без покраски. Вид сверху. Подгон верхнего отверстия. Все делал на глаз. Плата закреплена внутри корпуса с помощью обычного клеевого пистолета Насверлил кучу отверстий для охлаждения

Читайте также: