Функционально схему любых подобных часов можно разделить на несколько блоков: источник питания всего устройства, преобразователь питания самих индикаторов, блок отсчитывания времени с календарём, сам индикатор или индикаторы (в зависимости от идеи и реализации) и какой-то микроконтроллер, который этим всем будет управлять. Так же «по вкусу» можно добавить, например, какой-то способ связи устройства со внешним миром, как сделал я для эксперимента и расширения функционала. И «пищалку» для будильника, конечно.
Всё питание часов будет осуществляться от обычного USB. В данном случае — с разъёмом mini (он же - Mini-B) USB, — этих разъёмов у меня в наличии достаточно много и нужно их куда-то тратить.
В качестве индикатора был выбран ВЛИ (вакуумно-люминисцентный индикатор) ИВ-18.
Здесь можно посмотреть pdf
с datasheet'ом, а внешний его вид в рабочем режиме можно увидеть на заглавной картинке.
У ВЛИ всех типов и размеров есть несколько важных особенностей. Так как по внутреннему устройству они — суть те же радиолампы, только ориентированные на «видимость» во время работы, то для работы им нужны основное (анодное) напряжение и напряжение накала.
Из datasheet'а самые важные для работы параметры:
4.5–5.5 В85±10мА50ВВидим, что напряжение на входе USB идеально совпадает с напряжением накала и можно питать накал непосредственно от USB, само собой, добавив небольшой резистор, который, в идеале, можно подобрать для конкретной имеющейся лампы.
Дальше нужно организовать то самое напряжение анода-сегмента. И здесь ещё одно предупреждение.
Повышающий DC-DC преобразователь построен на базе микросхемы-таймера NE555.
Так как минимальное напряжение питания у неё - 4.5В, то она без проблем будет работать от того же USB.
И, если все номиналы подобраны верно и компоненты исправны, то «схема работает сразу,
дополнительных регулировок не требует», как писали раньше в технической литературе.
Здесь джампер XS1 исключительно лишь для удобной отладки и быстрого обесточивания
преобразователя, если что-то пойдёт не так.
Индуктивность катушки L1 можно подобрать по ходу дела, номиналом 100..300мкГн.
Теперь сам ВЛИ. Рассмотрим его распиновку.
Как это работает: например, нам нужно отобразить цифру 7 в самом
дальнем знакоместе от выводов — в 8-м разряде. Для этого нам понадобятся разряды (аноды-сегменты)
а — вывод 12, в — вывод 10,
е — вывод 4. На эти выводы подаём анодное напряжение от преобразователя,
описанного выше, те самые 40В. Однако, теперь надо нужно «указать» на конкретный
сегмент. Для этого нам нужно подать это же напряжение и на необходимую сетку. Для нашего 8-го
разряда это будет сетка с выводом 18. После этого засветятся необходимые нам аноды-сегменты
в нужном разряде. Используя этот принцип, подавая анодное напряжение на нужные нам аноды-сегменты для
соответствующих цифр (и букв) и на сетку, мы получим свечение нужных сегментов. Перебирая цикл достаточно
быстро (10-30 раз в секунду) мы получим динамическую индикацию и визуально светящиеся во всех разрядах
нужные нам символы.
Коммутация. Теперь нам нужно как-то управлять подключением нужных анодов-сегментов и сеток
к анодному напряжению. Конечно, сам микроконтроллер не сможет этого сделать, так как рабочее напряжение МК
существенно ниже 40В. Для решения этой задачи существуют специальные микросхемы — драйверы ВЛИ.
В этом устройстве будет использован подобный драйвер для многовыводных ВЛИ — MAX6921AWI.
Здесь можно посмотреть
pdf с datasheet'ом.
Из datasheet'а самые важные для нас параметры:
3..5.5В76В20Как видно, для этого устройства эта микросхема подходит идеально. Рассмотрим ещё блок-схему.
6931 и 6921 не отличаются блок-схемой — она взята из того же datasheet'а.
Из дополнительного интересного: подавая ШИМ на вывод BLANK можно регулировать яркость свечения ВЛИ.
Вход микросхемы представляет собой обычный сдвиговый регистр, то есть, посылать на неё данные можно
с помощью шины SPI микроконтроллера.
Cхема подключения
Здесь, для упрощения, не отображены остальные подключённые выводы МК.
Так же показан вывод накала индикатора ИВ-18 — VFD_FIL.
При проектировании я не обратил внимание на суть вывода BLANK, поэтому он здесь подключён
на массу, то есть, яркость никак не регулируется (всегда максимальная), как и программное отключение
отображения.
Основной принцип
Из микроконтроллера по SPI отправляем 20-битный пакет (слово), представляющий собой
подготовленную битовую маску для включения/отключения соответствующих сеток и анодов-сегментов.
Самые старшие 3 бита — выводы микросхемы OUT17, OUT18 и OUT19 —
в моём случае не используются, но отправлять их всё равно нужно.
Здесь минимальный набор конденсаторов: по одному электролитическому и керамическому конденсатору на входе
USB и один электролитический с двумя керамическими — на выходе регулятора напряжения.
Само время можно было бы считать и встроенным в МК блоком RTC, но я предпочёл использовать
проверенный вариант с микросхемой DS3231.
Здесь можно посмотреть pdf
с datasheet'ом. Взаимодействие с МК производится с помощью стандартной шины I²C.
Дополнительные возможности микросхемы (таймеры/будильники) я не использую, только подсчёт времени и даты.
Подключение к I²C производится стандартным способом.
Так же использую стандартную батарейку CR2032 — вывод V_Bat —
для сохранения хода часов в обесточенном состоянии.
Для упрощения на схеме все остальные выводы, кроме питания и подтягивающих резисторов для шины
I²C, показаны не подключенными.
Так же в устройстве я решил поэкспериментировать со взаимодействием с компьютером по UART. Для этого была
взята популярная микросхема CH340.
Здесь можно посмотреть pdf
с datasheet'ом. Из всего функционала я использую только RX/TX, без
дополнительных (остальных) сигналов UART (DTR/DSR/CTS и т.д.).
Подключается к микроконтроллеру она стандартно: RX к TX,
TX к RX.
Для упрощения на схеме все остальные выводы, кроме функциональных, показаны не подключенными.
Остались ещё кнопки для управления часами — настройки времени и даты и так далее, «пищалка» для будильника и выводы для программатора.
Конденсатор и резистор для каждой кнопки — для простейшей схемы антидребезга.
Для упрощения на схеме все остальные выводы, кроме функциональных, показаны не подключенными.
Решил использовать STM32F030F4P.
Здесь можно посмотреть
pdf с datasheet'ом.
Дальше всё просто. Трассировка платы, отправка её на производство, запайка компонентов. После чего остаётся только написать прошивку.