ОБНОВЛЕНИЯ
- 27.11.2019 nixieClock_2_v2.0: добавлены эффекты, поправлены баги
- 27.11.2019 nixieClock_2_v2.1: исправлен баг =)
- 30.11.2019 nixieClock_2_v2.2: сброс секунд при установке времени с кнопок
- 02.12.2019 nixieClock_2_v2.3: Добавлены расширенные настройки яркости и исправлены зависания при нулевых значениях некоторых настроек
- 02.12.2019 nixieClock_2_v2.4: Ещё исправления ошибок при нулевых настройках
- 17.03.2020 nixieClock_2_v2.5: Демонстрация эффекта при смене с кнопок
ОПИСАНИЕ
Решил я сделать максимально простой и доступный проект часов на газоразрядных индикаторах и Arduino! Односторонняя плата, выводные компоненты, никакой жести!
Плата:
- Габариты платы меньше 100х100мм, то есть заказать 10 таких плат у китайцев будет стоить $2 без учёта доставки
- Плата односторонняя, её без проблем можно сделать классическим ЛУТом!
- Все компоненты – выводные, припаяет даже новичок
- Т.е. плата народная: можно сделать её бабкиным утюгом и распаять горячим гвоздём!
- Количество компонентов сведено к минимуму!
- На данный момент в проекте есть платы под индикаторы ИН-12 и ИН-14, возможно будут сделаны и другие
- Система состоит из двух плат: нижней (вся управляющая электроника) и верхней (лампы и светодиоды подсветки)
- Нижних плат два варианта: обычная (4 оптопары, точка – светодиод) и с дополнительной оптопарой под неоновую точку (5 оптопар, точка – неонка)
- У плат ИН-14, ИН-12, ИН-12_перевертыш нижняя часть одинаковая! Части плат взаимозаменяемы. Нижняя плата отличается только у ИН-14_неон
Аппаратные фишки:
- Сердце платы – полноразмерная Arduino NANO, это означает простую сборку и прошивку
- Питание всей схемы – 5 Вольт
- Генератор высокого напряжения раскачивается ШИМ каналом Arduino
- Напряжение генератора подстраивается резистором с крутилкой
- Время задаёт RTC DS3231
- 3 кнопки для настройки времени и будильника
- Пищалка для будильника
- Подсветка ламп индикаторов
- Проект основан на плате Железнякова Андрея. Спасибо! Ссылка на проект (сайт не работает, вот последний рабочий снапшот с архива)
Программные фишки:
- “Перебор” цифр, не дающий индикаторам окисляться
- Плавное изменение яркости точки и подсветки ламп
- Настройка яркости цифр, “точки” и подсветки ламп
- Два режима яркости в зависимости от времени суток
- 6 режимов переключения индикаторов
- 3 режима подсветки ламп
- Будильника пока что нет
ЭФФЕКТЫ
Нет эффекта
Плавный переход
Перебор цифр
Перебор катодов
Случайный глюк
ВИДЕО
КОМПОНЕНТЫ
Стараюсь оставлять ссылки только на проверенные крупные магазины, из которых заказываю сам. Также по первые ссылки ведут по возможности на минимальное количество магазинов, чтобы минимально платить за доставку. Если какие-то ссылки не работают, можно поискать аналогичную железку в каталоге Ардуино модулей. Также проект можно попробовать собрать из компонентов моего набора GyverKIT.
Arduino Nano ATMega328: купить в РФ, aliexpress, aliexpress, искать
Часы DS3231: aliexpress, aliexpress, искать
- Гнёзда на плату https://www.chipdip.ru/product/pbs-40
- Рейка штыревая https://www.chipdip.ru/product/pls-40
- Конденсатор электролитический 4,7 мкФ 350V https://www.chipdip.ru/product0/33635
- Резистор подстроечный 470 кОм (можно 500 кОм) https://www.chipdip.ru/product/3362p-1-504
- Индуктивность 220 мкГн (uH) https://www.chipdip.ru/product/rlb0712-221kl
- Диод HER106 https://www.chipdip.ru/product/her106
- Мне рекомендовали поставить диод BYV26C – он быстрее
- Транзистор IRF840PBF https://www.chipdip.ru/product/irf840
- Оптопара TLP627(F) DIP-4 https://www.chipdip.ru/product/tlp627
- Дешифратор К155ИД1 https://www.chipdip.ru/product/k155id1
- Светодиоды 5 мм https://www.chipdip.ru/catalog/round-leds?x.222=s4Q&x.226=EbW
- Светодиоды 3 мм https://www.chipdip.ru/catalog/round-leds?x.222=s4Q&x.226=s4S
- Резисторы 0.25 Вт для версии ИН12/ИН14 со светодиодной точкой
- 150 Ом
- 470 Ом
- 10 кОм
- 100 Ом – 3шт
- Резисторы 0.25 Вт для версии ИН14 с неоновой точкой
- 200 кОм
- 470 Ом
- 10 кОм
- 100 Ом – 3шт
- Блок питания 5 V (зарядник от смартфона) – 500 мА минимум
ПЛАТЫ
Чертёж плат v2.0
- 2.0 – первоначальная версия (такая есть только у меня)
- 2.1 – убран DS18b20, куча мелких исправлений
- 2.2 – добавления:
- Добавлена поддержка микро-версии DS3231
- Добавлен конденсатор по питанию платы (необязательный)
- Добавлен конденсатор по питанию RTC (необязательный)
- Добавлен шёлк линии отлома
Скачав gerber-файлы, вы можете заказать изготовление платы у китайцев на сервисе https://jlcpcb.com/, я получил платы через 2 недели после заказа.
- Создать заказ и загрузить гербер файл (архив .zip) на сайт JLCPCB
- Настроить (я менял только количество плат). Цвет платы теперь выбирается бесплатно!
- Раньше получалось попросить китайцев сделать надрез между платами для удобного разделения. Теперь у них изменились правила, и бесплатно разделить две разные платы они не могут. Я добавил линию разреза на слой шелкографии для каждой платы, разделить платы нужно будет вручную (читайте ниже). Никаких комментариев к заказу оставлять не нужно, V-cut теперь платная функция.
- Выбрать тип доставки и оплаты (ePacket и PayPal – мой выбор)
Открыв плату в EasyEda, вы можете экспортировать её как картинку (желательно PDF, иначе страдает качество) для дальнейшего изготовления ЛУТом или импорта в Altium (скрин 1). Параметры экспорта (скрин 2) позволяют настроить вывод нужного слоя и его зеркальность по горизонтали. В настройках печати обязательно ставить реальный размер (скрин 3). На 4 и 5 скринах показано, как убрать металлизацию нижней платы. Если вам это нужно.
ПРОШИВКА
Прошивки находятся в скачанном архиве в папке firmware:
- lamp_test – прошивка для теста ламп, перебирает цифры на лампах по очереди (сначала 0–9 на первой, потом на второй…), пауза перебора задаётся в самом начале скетча
- nixieClock_2_test_v1.1 – “минимальная” прошивка чисто для работы с лампами, на её основе можно написать свои часы. В сыром виде прошивка перебирает по очереди цифры на всех лампах одновременно
- nixieClock_2_v2.5 – основная прошивка часов, со всеми эффектами, временем и прочим прочим
В самом начале кода находятся настройки. Самая важная для вас – выбор типа платы, по умолчанию выбрана плата под ИН-12. Для ИН-14 нужно сменить цифру с нуля на на 2, получится BOARD_TYPE 2
#define BOARD_TYPE 0 // тип платы часов: // 0 - IN-12 turned (индикаторы стоят правильно) // 1 - IN-12 (индикаторы перевёрнуты) // 2 - IN-14 (обычная и neon dot) // 3 другие индикаторы
Максимально подробный гайд по началу работы с платой и загрузке прошивки для проекта находится ЗДЕСЬ. Изучи его внимательно, прежде чем писать на форум или в группу ВК!
СБОРКА
Последовательность сборки и настройки. Подробности по каждому пункту читай ниже.
- Полностью собрать нижнюю плату (можно не паять DS3231).
- Отмыть флюс! Зубной щёткой и спиртом/калошей, или на худой конец горячей водой.
- Выставить крутилку напряжения (в самом верху на левой половине платы) в среднее положение
- Загрузить прошивку lamp_test, выбрав тип платы (читай код в самом начале)
- Должен начать работать высоковольтный генератор. Аккуратно пальцы, за низ платы не хватаем
- Измеряем напряжение на конденсаторе в верхнем левом углу платы (мультиметр ставить в режим DC, напряжение 50-300 Вольт). Крутилкой выставляем напряжение в районе 180-200 вольт
- На данном этапе можно и нужно проверить лампы, подключив анод (белая нога) через резистор 10 кОм на «плюс» конденсатора, и любую другую ногу на «минус» конденсатора. Перебирая ноги минусовым проводом проверить все цифры индикатора. Если цифра горит не полностью, можно повысить напряжение и “прожечь” катод, или просто подождать. Лампы старые, могут начать нормально работать не сразу. ВНИМАНИЕ! Цифра (катод) в плохом «старом» состоянии потребляет бОльший ток, что может приводить к падению напряжения на генераторе и заветных 180В в работе вы не получите. Поэтому рекомендуется прокалить лампы от генератора в ручном режиме, как написано выше.
- Далее можно смело паять лампы на верхнюю плату.
- Обязательно отмыть флюс!
- При включенном питании верхнюю и нижнюю платы не соединять!
- На прошивке lamp_test будут последовательно перебираться цифры на лампах на максимальной яркости, в порт будет выводиться текущая цифра. Снова берём отвёртку и подстраиваем генератор на 180-200 Вольт (предыдущая настройка была нужна для первого пуска ламп, чтобы ничего не сгорело. При подключении ламп напряжение просядет, и его нужно будет выкрутить обратно).
- Есть смысл оставить часы поработать на этой прошивке пару часов, чтобы лампы пришли в себя, т.к. каждый индикатор перебирает все цифры на максимальной яркости без динамической индикации.
- Если всё нормально – прошиваем актуальную прошивку часов nixieClock_2_v2.* и наслаждаемся!
- Что касается компонентов: индуктивность катушки зависит от частоты. Частота у нас фиксированная, так что будьте добры купить катушку на 220 мкГн с током насыщения не менее 240 мА, так как напряжение высоковольтной линии сильно проседает под нагрузкой. Индуктивность по ссылке вывозит нормально, крупнее – ещё лучше. Меньше – не ставьте, будет 140 Вольт и блэдные лампы. Диод быстрый (импульсный), в принципе любой этого класса. Резисторы любые по мощности и точности, я ставил 1/4 Вт самые обычные. Оптопары нужны высоковольтные! Обычные не подойдут. Если приспичило выпаять индикатор, то вам поможет паяльный фен. Также можно попытаться убрать припой с ног при помощи медной оплётки или паяльного отсоса. Фокус с иглой от шприца скорее всего не прокатит, диаметр отверстий под ноги лампы маловат.
- Если вы заказывали плату на JLCPCB без прорезания V образной фрезой, разделить плату нужно будет вручную. Можно распилить ножовкой: будет лететь стеклопыль, очень мерзкая и опасная штука! Лучше прорезать по линии раздела сверху и снизу чем-нибудь острым (саморез), а затем аккуратно сломать по ней в тисках. Также рекомендую резак по оргстеклу: 2-3 царапины с двух сторон платы и можно аккуратно отломить. Умельцы делают такие резаки из старых полотен от лобзика.
Компоненты паяются на шелкографию, в том числе лампы. Дорожки остаются на нижней стороне платы. Лампы вставляем белой ногой в помеченное кружочком отверстие. Схема паяется за 20 минут обычным паяльником, все компоненты выводные, припаяет даже новичок.
- Упаси вас хосподи паять с кислотой или активным флюсом, поверьте, вам это не надо. Всё паяется обычным припоем с флюсом внутри (ПОС-61, китайский SOLDER).
- После пайки компонентов обязательно отмыть флюс (который вытечет из припоя). В идеале изопропиловым спиртом или калошей, но вполне достаточно будет потереть зубной щёткой под горячей водой.
- На неотмытую плату питание не подавать! Могут погореть компоненты.
- Перед первым запуском установить крутилку (потенциометр в верхней части платы) в среднее положение
- Бутерброд из плат при подключенном питании не собирать/разбирать! Перед снятием/установкой верхней платы обязательно отключите питание. Малейший перекос/лишний дребезг может привести к выгоранию компонентов.
- Перед пайкой индикаторов на плату желательно проверить их работоспособность, потому что они из Совка и не все отлично сохранились. Нужно взять напряжение с высоковольтной линии платы – схему найдёте чуть выше. Проще всего подпаяться к конденсатору в левой верхней части платы и подать плюс на анод (белая нога лампы) через резистор на 10 кОм, а gnd – на один из катодов, катоды это собственно и есть цифры. Перебрав катоды вы узнаете, все ли цифры работают. Нерабочую цифру в некоторых случаях можно восстановить, повысив напряжение высоковольтной линии. Также для “прожига” лампы можно чуть чуть уменьшить сопротивление токозадающего резистора (10 кОм который), можно влепить подстроечник. Для более точного теста цифр используйте прошивку lamp_test
Напряжение высоковольтной линии – 140-300 Вольт, держите пальцы подальше от контактов на плате с лампами и от генератора на левой части платы (где катушка и конденсатор). Не убьёт, но тряхнёт знатно! Если держите часы – гарантированно их бросите, и нет гарантий, что они не разобьются.
По поводу напряжения: его задаёт во-первых резистор (на моей плате подстроечный, вверху в центре), и во-вторых скважность ШИМ сигнала. По умолчанию скважность стоит 180, что уменьшает просадку под нагрузкой. Резистор в оригинальной схеме стоит на 360 кОм, у меня подстроечный на 500 кОм, и я его выкрутил на максимум (170 Вольт). Также на напряжение влияют сами лампы (как нагрузка). Измерять и настраивать напряжение нужно под нагрузкой (со включенными лампами), минимальное напряжение около 130 Вольт (лампы зажигаются), максимальное не должно превышать 175-180 Вольт (это максимум для лампы). Также окисленную (отравленную) лампу можно прожарить, подав на неё бОльшее напряжение (скажем 220-250) на некоторое время. Выбор горящей лампы и цифры появится в прошивке позже. Не забывайте о том, что при питании от USB напряжение 5-ти Вольтовой линии составляет около 4.5 Вольт (часть падает на диоде по питанию Ардуино), поэтому все настройки производить только при подключенном внешнем питании 5 Вольт в соответствующие входы питания на плате (сверху, правее Ардуино).
- Если отстают/спешат часы, проблема скорее всего в питании схемы. Если при смене блока питания на более качественный проблема не уходит, повесьте конденсатор по питанию RTC модуля (прям на плату на VCC и GND паять): обязательно керамический, 0.1-1 мкФ (маркировка 103 или 104, смотрите таблицу маркировок). Также можно поставить электролит (6.3V, 47-100 мкФ)
- Если часы показывают 2525 или 6565, проблема в RTC модуле. Проверять пайку, мыть флюс, также мог попасться брак и придётся заменить. Пишут что среди мелких модулей часто встречаются бракованные, я с таким ни разу не сталкивался.
Как настроить скетч под другие индикаторы (даже если вы сделали под них свою плату)? Всё очень просто: за порядок цифр отвечает массив digitMask, хранящий в себе соответствие цифры и номера ячейки. Прошиваем тестовый скетч (nixieClock_2_test_v1.1) с настройкой BOARD_TYPE 3. Также пролистайте чуть ниже (ДЛЯ РАЗРАБОТЧИКОВ) до строчки
#elif (BOARD_TYPE == 3)
На следующей строчке находится ваш digitMask, который будет активен при BOARD_TYPE 3. Заполните массив цифрами от 0 до 9 в порядке возрастания. Прошейте скетч и запишите куда-нибудь порядок цифр, который покажут часы (10 цифр). Осталось только изменить свой массив digitMask согласно полученной информации. Например:Порядок 0123456789 Часы показали 7491308265 Тогда ваш digitMask будет строиться так: по порядку чисел на нижней строчке выписываем числа из верхней: 0-5, 1-3, 2-7….
Получим 5374198062, соответственно byte digitMask[] = {5, 3, 7, 4, 1, 9, 8, 0, 6, 2};
Второй важный массив это opts[], отвечающий за порядок индикаторов слева направо, зависит от платы. Если вы переделывали плату, то не составит труда провести аналогию (или методом тыка) и понять, нужен вам 0123 или 3210.
Также в основном скетче есть cathodeMask, это порядок катодов (цифр) начиная с дальнего от переднего стекла. Его можно посмотреть на картинке из документации по лампе, этот порядок нужен только для эффекта “перебор катодов”.- Если что-то не работает: первым делом грешить на плохую пайку (непропай, сопли, КЗ) и неотмытый флюс. Первым делом умирают оптопары, могут сразу все 4 выгореть. Вторым слабым местом является индуктивность. В некорректном отображении цифр может быть виноват дешифратор, можно попробовать заменить. Если время отображается некорректно – возможен брак модуля часов, лучше покупайте сразу два.
4 светодиода подсветки ламп питаются напрямую от пина Ардуино через резистор, ток с пина не превышает допустимых 40 мА. Питать через транзистор я не стал в целях упрощения схемы. Светодиодная точка также питается от пина. Неоновая точка питается от высоковольтной части через оптопару (пятую, на плате NEON DOT).
Светодиоды подсветки ламп для платы с ИН-14 паяются снизу платы (длинной ногой в круглое отверстие, короткой – в квадратное) и загибаются к отверстиям под лампами. 3мм светодиод вставляется в отверстие (отверстие можно залить термоклеем для лучшего рассеивания света), 5мм светодиод между платами не вмещается, поэтому его можно вдвое укоротить кусачками и затереть напильником. Точно также прислоняется к отверстию и подсвечивает лампу снизу. Также можно использовать SMD светодиод, подпаяв его проводочками и приклеив под отверстие в плате. Светодиоды подсветки ламп ИН-12 паяются сверху платы и наклоняются примерно под 45 градусов к лампе. У лампы непрозрачный задник, подсветить снизу не получится.
ВАРИАНТЫ КОРПУСА
Корпус для платы на ИН-12 под печать от AlexGyver
Корпус для платы на ИН-14 от AlexGyver
Корпус для платы на ИН-12 от Максима Осипова
ПОДДЕРЖАТЬ
Вы можете поддержать меня за создание доступных проектов с открытым исходным кодом, полный список реквизитов есть вот здесь.