- Самодельные электронные часы, элементная база — часть 2
- 1. Устройства вывода
- Сегментная индикация
- Матричные индикаторы
- ЖК-индикаторы
- OLED-индикаторы
- Газоразрядные индикаторы (ИН-14, ИН-18)
- 2. Выбор платформы
- Arduino
- 32-разрядные процессоры STM
- Raspberry PI
- ESP8266
- Вместо заключения
- Ламповые часы Nixie clock своими руками
- Введение
- Подготовка
- Печатная плата
- Сборка платы
- Изготовление корпуса
- Финал
Самодельные электронные часы, элементная база — часть 2
Привет, geektimes! В первой части статьи были рассмотрены принципы получения точного времени на самодельных часах. Пойдем дальше, и рассмотрим, как и на чем это время лучше выводить.
1. Устройства вывода
Итак, у нас есть некая платформа (Arduino, Raspberry, PIC/AVR/STM-контроллер, etc), и стоит задача подключить к нему некую индикацию. Есть множество вариантов, которые мы и рассмотрим.
Сегментная индикация
Тут все просто. Сегментный индикатор состоит из обычных светодиодов, которые банально подключаются к микроконтроллеру через гасящие резисторы.
Осторожно, траффик!
Плюсы: простота конструкции, хорошие углы обзора, невысокая цена.
Минус: количество отображаемой информации ограничено.
Конструкции индикаторов бывают двух видов, с общим катодом и общим анодом, внутри это выглядит примерно так (схема с сайта производителя).
Есть 1001 статья как подключить светодиод к микроконтроллеру, гугл в помощь. Сложности начинаются тогда, когда мы захотим сделать большие часы — ведь смотреть на мелкий индикатор не особо удобно. Тогда нам нужны такие индикаторы (фото с eBay):
Они питаются от 12В, и напрямую от микроконтроллера просто не заработают. Тут нам в помощь приходит микросхема CD4511, как раз для этого предназначенная. Она не только преобразует данные с 4-битной линии в нужные цифры, но и содержит встроенный транзисторный ключ для подачи напряжения на индикатор. Таким образом, нам в схеме нужно будет иметь «силовое» напряжение в 9-12В, и отдельный понижающий преобразователь (например L7805) для питания «логики» схемы.
Матричные индикаторы
По сути, это те же светодиоды, только в виде матрицы 8х8. Фото с eBay:
Продаются на eBay в виде одиночных модулей либо готовых блоков, например по 4 штуки. Управление ими весьма просто — на модулях уже распаяна микросхема MAX7219, обеспечивающая их работу и подключение к микроконтроллеру с помощью всего лишь 5 проводов. Для Arduino есть много библиотек, желающие могут посмотреть код.
Плюсы: невысокая цена, хорошие углы обзора и яркость.
Минус: невысокое разрешение. Но для задачи вывода времени вполне достаточно.
ЖК-индикаторы
ЖК-индикаторы бывают графические и текстовые.
Графические дороже, однако позволяют выводить более разнообразную информацию (например график атмосферного давления). Текстовые дешевле, и с ними проще работать, они также позволяют выводить псевдографику — есть возможность загружать в дисплей пользовательские символы.
Работать с ЖК-индикатором из кода несложно, но есть определенный минус — индикатор требует много управляющих линий (от 7 до 12) от микроконтроллера, что неудобно. Поэтому китайцы придумали совместить ЖК-индикатор с i2c-контроллером, получилось в итоге очень удобно — для подключения достаточно всего 4х проводов (фото с eBay).
ЖК-индикаторы достаточно дешевые (если брать на еБее), крупные, их просто подключать, и можно выводить разнообразную информацию. Единственный минус это не очень большие углы обзора.
OLED-индикаторы
Являются улучшенным продолжением предыдущего варианта. Варьируются от маленьких и дешевых с диагональю 1.1″, до больших и дорогих. Фото с eBay.
Собственно, хороши всем кроме цены. Что касается мелких индикаторов, размером 0.9-1.1″, то (кроме изучения работы с i2c) какое-то практическое применение им найти сложно.
Газоразрядные индикаторы (ИН-14, ИН-18)
Эти индикаторы сейчас весьма популярны, видимо из-за «теплого лампового звукасвета» и оригинальности конструкции.
(фото с сайта nocrotec.com)
Схема их подключения несколько сложнее, т.к. эти индикаторы для зажигания используют напряжение в 170В. Преобразователь из 12В=>180В может быть сделан на микросхеме MAX771. Для подачи напряжения на индикаторы используется советская микросхема К155ИД1, которая специально для этого и была создана. Цена вопроса при самостоятельном изготовлении: около 500р за каждый индикатор и 100р за К155ИД1, все остальные детали, как писали в старых журналах, «дефицитными не являются». Основная сложность тут в том, что и ИН-хх, и К155ИД1, давно сняты с производства, и купить их можно разве что на радиорынках или в немногих специализированных магазинах.
2. Выбор платформы
С индикацией мы более-менее разобрались, осталось решить, какую аппаратную платформу лучше использовать. Тут есть несколько вариантов (самодельные я не рассматриваю, т.к. тем кто умеет развести плату и припаять процессор, эта статья не нужна).
Arduino
Самый простой вариант для начинающих. Готовая плата стоит недорого (около 10$ на eBay с бесплатной доставкой), имеет все необходимые разъемы для программирования. Фото с eBay:
Под Arduino есть огромное количество разных библиотек (например для тех же ЖК-экранов, модулей реального времени), Arduino аппаратно совместима с различными дополнительными модулями.
Главный минус: сложность отладки (только через консоль последовательного порта) и довольно-таки слабый по современным меркам процессор (2КБайт RAM и 16МГц).
Главный плюс: можно сделать много чего, практически не заморачиваясь с пайкой, покупкой программатора и разводкой плат, модули достаточно соединить друг с другом.
32-разрядные процессоры STM
Для тех кто захочет что-то помощнее, есть готовые платы с процессорами STM, например плата с STM32F103RBT6 и TFT-экраном. Фото с eBay:
Здесь мы уже имеем полноценную отладку в полноценной IDE (из всех разных мне больше понравилась Coocox IDE), однако понадобится отдельный программатор-отладчик ST-LINK с разъемом JTAG (цена вопроса 20-40$ на eBay). Как вариант, можно купить отладочную плату STM32F4Discovery, на которой этот программатор уже встроен, и его можно использовать отдельно.
Raspberry PI
И наконец, для тех кто хочет полной интеграции с современным миром, есть одноплатные компьютеры с Linux, всем уже наверное известные Raspberry PI. Фото с eBay:
Это полноценный компьютер с Linux, гигабайтом RAM и 4х-ядерным процессором на борту. С краю платы выведена панель из 40 пинов, позволяющая подключать различную периферию (пины доступны из кода, например на Python, не говоря о C/C++), есть также стандартный USB в виде 4х разъемов (можно подключить WiFi). Так же есть стандартный HDMI.
Мощности платы хватит к примеру, не только чтобы выводить время, но и чтобы держать HTTP-сервер для настройки параметров через web-интерфейс, подгружать прогноз погоды через интернет, и так далее. В общем, простор для полета фантазии большой.
С Raspberry (и процессорами STM32) есть одна единственная сложность — ее пины используют 3-вольтовую логику, а большинство внешних устройств (например ЖК-экраны) работают «по старинке» от 5В. Можно конечно подключить и так, в принципе заработает, но это не совсем правильный метод, да и испортить плату за 50$ как-то жалко. Правильный способ — использовать «logic level converter», который на eBay стоит всего 1-2$.
Фото с eBay:
Теперь достаточно подключить наше устройство через такой модуль, и все параметры будут согласованы.
ESP8266
Способ скорее экзотический, но довольно-таки перспективный в силу компактности и дешевизны решения. За совсем небольшие деньги (около 4-5$ на eBay) можно купить модуль ESP8266, содержащий процессор и WiFi на борту.
Фото с eBay:
Изначально такие модули предназначались как WiFi-мост для обмена по serial-порту, однако энтузиастами было написано множество альтернативных прошивок, позволяющих работать с датчиками, i2c-устройствами, PWM и пр. Гипотетически вполне возможно получать время от NTP-сервера и выводить его по i2c на дисплей. Для тех кто хочет подключить много различной периферии, есть специальные платы NodeMCU с большим числом выводов, цена вопроса около 500р (разумеется на eBay):
Единственный минус — ESP8266 имеет очень мало памяти RAM (в зависимости от прошивки, от 1 до 32КБайт), но задача от этого становится даже интересней. Модули ESP8266 используют 3-вольтовую логику, так что вышеприведенный конвертор уровней тут также пригодится.
На этом вводный экскурс в самодельную электронику можно закончить, автор желает всем удачных экспериментов.
Вместо заключения
Я в итоге остановился на использовании Raspberry PI с текстовым индикатором, настроенным на работу с псевдографикой (что вышло дешевле чем графический экран той же диагонали). Сфоткал экран настольных часов во время написания этой статьи.
Часы выводят точное время, взятое из Интернета, и погоду которая обновляется с Яндекса, все это написано на Python, и вполне работает уже несколько месяцев. Параллельно на часах запущен FTP-сервер, что позволяет (вкупе с пробросом портов на роутере) обновить на них прошивку не только из дома, но и из любого места где есть Интернет. Как бонус, ресурсов Raspberry в принципе хватит и для подключения камеры и/или микрофона с возможностью удаленного наблюдения за квартирой, или для управлением различными модулями/реле/датчиками. Можно добавить всякие «плюшки», типа светодиодной индикации о пришедшей почте, и так далее.
PS: Почему eBay?
Как можно было видеть, для всех девайсов приводились цены или фото с ебея. Почему так? К сожалению, наши магазины часто живут по принципу «за 1$ купил, за 3$ продал, на эти 2 процента и живу». В качестве простого примера, Arduino Uno R3 стоит (на момент написания статьи) 3600р в Петербурге, и 350р на eBay с бесплатной доставкой из Китая. Разница действительно на порядок, безо всяких литературных преувеличений. Да, придется подождать месяц чтобы забрать посылку на почте, но такая разница в цене думаю, того стоит. Но впрочем, если кому-то надо прямо сейчас и срочно, то наверно и в местных магазинах есть выбор, тут каждый решает сам.
Источник
Ламповые часы Nixie clock своими руками
Я уже больше 5 лет занимаюсь изготовлением часов на газоразрядных индикаторах, а недавно заполучил довольно редкие лампы ZM1040, часы на которых считаю одними из лучших в своей коллекции. Надеюсь, и вы сможете по достоинству оценить мою работу, ознакомившись с подробностями и процессом изготовления.
Картинка кликабельна
Введение
Газоразрядный индикатор Nixie tube — электровакуумный прибор, в котором используется тлеющий разряд для отображения различных символов за счёт свечения газа вокруг них. Состоит, как правило, из одного анода и 10 катодов в форме цифр, расположенных друг за другом. Подробнее об устройстве и принципе работы можно почитать на Википедии.
Несмотря на то, что ГРИ не производятся уже почти 30 лет, интерес к часам на их основе в настоящее время не утихает. Справедливости ради стоит сразу отметить, что в мире существует по меньшей мере два современных производителя ГРИ: появившийся около 5 лет назад Daliborfarny, создающий аналоги индикаторов Z5680M/Z568M по весьма высокой для рядового радиолюбителя цене в €135 за штуку и Millclock, с 2018 года создающий нечто похожее на ИН-18 по $99. В то же время на различных барахолках, сайтах с объявлениями и даже на Алиэкспресс сейчас можно без труда купить индикаторы ИН-12, ИН-14, ИН-8 и т.д. по цене от 200 рублей за штуку. Все они по-своему хороши и находят своих почитателей.
Подготовка
Первым делом — выбор ламп. Для этого проекта мне удалось приобрести 6 индикаторов ZM1040 производства ныне несуществующей компании Tesla.
Собственно сайт, на котором можно найти больше информации о ГРИ.
К сожалению, почти на всех лампах местами отсутствовал красный лак, так что мной было принято решение полностью его удалить, фактически получив таким образом индикаторы ZM1042:
Для сравнения размеров рядом находится индикатор ИН-8-2 с высотой символа 18 мм.
Эти ГРИ имеют внушительную по своим меркам высоту символа в 30 мм, что хоть и уступает на 10 мм самым большим из советских индикаторов ИН-18, но при той же ширине символа обеспечивает, на мой взгляд, более гармоничные пропорции.
Так как я пока не умею самостоятельно писать прошивки для микроконтроллеров, следующим этапом был поиск подходящего проекта в открытом доступе. В этом мне в частности помог сайт Радиокот, где есть тема с огромным количеством различных устройств на ГРИ. В этом плане большой плюс — универсальность решений: без труда в схему часов на ИН-8-2 можно установить лампы ИН-16, например, и наоборот.
Вот схема, которую выбрал я:
Картинка кликабельна
При создании часов на ГРИ можно использовать статическую или динамическую индикацию, лично я предпочитаю второй вариант. Именно поэтому на схеме так странно показано соединение дешифратора BU2090F с катодами ламп: все катоды соединены параллельно. Подробнее об этом можно прочитать здесь.
Кроме того, на схеме не показано, к какому катоду подключается каждый выход дешифратора. Дело в том, что для упрощения разводки печатной платы в прошивке имеется возможность «переназначить катоды», то есть задать правильный для конкретного случая порядок отображения цифр.
Для питания ГРИ необходимо напряжение порядка 170 Вольт при токе в несколько миллиампер. Для его получения используется импульсный преобразователь на микросхеме МС34063, хорошо зарекомендовавшей себя в подобных схемах.
Следующий типовой блок — транзисторы для управления анодами ламп — здесь используется ставшее уже классическим сочетание MMBTA42 и MMBTA92.
В качестве микросхемы часов реального времени применена достаточно точная DS3231SN с батарейкой для поддержания хода часов при отключении от сети.
Также на схеме присутствует линейный понижающий преобразователь на 5 Вольт для питания микросхем, датчик температуры DS18B20 и управляющий всем этим микроконтроллер PIC16F628A.
Печатная плата
С лампами, схемой и деталями определились, теперь — плата. Имея некоторый опыт, печатные платы я сразу подготавливаю для изготовления в Китае: два слоя, шелкография, маска, переходные отверстия — всё это здорово упрощает сборку и позволяет позволяет сделать плату в меру компактной. Подробно на этим этапе останавливаться не буду, так как о проектировании и методах изготовления плат написано уже очень много, в частности:
7 правил проектирования печатных плат
Перестаньте травить печатные платы дома — заказывайте их на производстве
Отмечу, что на этом этапе самым сложным для меня оказался поиск чертежа цоколя лампы со всеми размерами. В подобных случаях я всегда стараюсь изготовить первый экземпляр платы (или её фрагмента) самостоятельно, чтобы наверняка исключить возможность ошибки.
В результате моя плата получилась вот такой:
Вырез под разъём питания (который будет закреплён на корпусе, а с платой соединён проводами) и вырезы под электролитические конденсаторы — для уменьшения габаритов и толщины собранной платы. Это незначительно скажется на стоимости плат, но позволит уменьшить размеры корпуса.
Далее — экспорт в формат gerber, заказ на Jlcpcb.com и около месяца ожидания (расплата за самую дешёвую доставку).
На нижней стороне платы перечислены индикаторы, которые можно в неё установить без доработок
Сборка платы
О том, как паять SMD и выводные компоненты я не смогу сказать ничего нового, поэтому лишь уточню пару нюансов.
Во-первых, схему рекомендую собирать по частям: сначала — преобразователи, затем — остальные детали, и только в последнюю очередь — лампы. В данном случае лампы не впаиваются в плату, а устанавливаются через штырьки из разъёма DPBS-25F, которые отдельно можно найти в продаже по запросу «nixie tube pin» — это заметно упрощает сборку.
Во-вторых, если используете какие-то флюсы, не забывайте их потом отмывать. Сам я использую припой с флюсом, не требующим отмывки, что довольно удобно.
В-третьих, советую покупать электронные компоненты только в проверенных магазинах — это поможет избежать множества проблем при сборке и наладке устройства. В случае с этими часами особое внимание советую уделить BU2090F — уж очень часто они мне попадались бракованные: если после сборки в одной или нескольких лампах вместо одной цифры светятся сразу все, проблема почти наверняка в дешифраторе.
После сборки части платы проверяю наличие всех напряжений:
174 Вольта вместо 170 получилось из-за погрешности номиналов резисторов в обратной связи преобразователя, что в данном случае не критично
И полностью собранная плата со всех сторон:
Я собирал сразу две платы, поэтому можно найти некоторые отличия в компонентах между этой и предыдущей фотографией
На этом этапе уже можно установить лампы и продемонстрировать работу часов (что я и делал для окончательной проверки всех элементов), но фотографировать не стал — лучше чуть позже покажу полностью законченные часы.
Изготовление корпуса
В подобного рода изделиях корпус — очень важная составляющая. Вариантов здесь масса: металл, дерево, полимерные материалы (включая 3D печать), камень и различные их комбинации — у кого на что хватит терпения, опыта, оборудования/инструментов и денег. Лично мне нравится древесина.
Именно под деревянный корпус проектировалась плата, и именно этим обусловлено такое расположение разъёма питания и кнопок для настройки.
В качестве материала была выбрана давно полюбившаяся мне древесина бубинга, которая имеет относительно высокую плотность и прочность и хорошо себя зарекомендовала при обработке на фрезерном станке.
Чертёж корпуса в электронном виде я не создавал, но в архиве в конце статьи будет фотография чертежа, сделанного от руки, если кому-то вдруг это нужно.
Модель получилась вот такой:
Извиняюсь за фотографию монитора, сделать скриншот не было возможности
После изготовления, шлифовки и покрытия воском корпус стал выглядеть вот так. Попутно уже вручную были просверлены отверстия для винтов крепления нижней крышки и платы и сделаны небольшие углубления под выступающие детали:
Фотография не очень хорошо передаёт цвет древесины, на КДПВ он больше похож на действительный
Как и ожидалось, после минимальных доработок корпуса, плата была установлена именно так, как и планировалось:
Между нижней стороной платы и крышкой есть зазор в 4 мм для размещения кнопок и конденсаторов
Последняя деталь корпуса — нижняя крышка. Здесь я воспользовался лазерной резкой.
Материал — нержавеющая сталь толщиной 1 мм. Так как заготовка не была зеркальной и имела небольшие царапины, после резки с крышкой надо было что-то делать. Терпения на полировку (после недавней продолжительной обработки корпуса наждачкой) у меня бы не хватило, так что я пошёл другим путём: мелкой наждачной бумагой буквально за минуту шлифовки сделал плоскость матовой, покрытой мелкими царапинами — получилось довольно неплохо:
Размеры получившегося корпуса — около 225х57х19,5 мм. Из-за большой длины для плотного прилегания нижнюю крышку решено было крепить не 4, а 6 винтами. Они разные: 3 с высокими шляпками, 3 — с низкими. Благодаря этому при установке на неровную поверхность часы не будут качаться
Я старался сделать корпус в меру компактным и минималистичным. Понимаю, что некоторым такой подход не понравится, но надеюсь, что кто-то оценит его по достоинству.
Финал
Корпус готов, лампы установлены — вот и всё:
Сравнение размеров с аналогичными часами на ИН-8-2:
При другом освещении:
А теперь самое время написать о возможностях часов. Помимо времени они могут показывать дату (в формате «день, месяц, номер дня недели») и температуру (в моём варианте датчик температуры не установлен, но место под него на плате предусмотрено) по нажатию кнопки или автоматически каждую минуту. Ещё одна полезная функция — наличие трёх режимов смены цифр: в первом цифры плавно гаснут, затем плавно загораются следующие; во втором при смене цифр происходит быстрый перебор всех цифр в лампе; в третьем цифры при смене накладываются друг на друга. Всё это показано на трёх видео ниже.
Работают часы от блока питания на 12В 0,5А (потребляют не более 200мА), при отключении от сети за счёт батарейки CR2032 ход времени будет поддерживаться много месяцев.
Перед видео хочу сказать о единственном существенном (на мой взгляд) недостатке динамической индикации — при съёмке на камеру телефона можно увидеть мерцание индикаторов, незаметное для глаз. И я заранее извиняюсь за качество видео, фото- и видеосъёмка — не совсем моё.
Источник