Coder_s Lair

0x0001 - ВЛИ (VFD) ИВ-18

Собранное устройство. Часы на ВЛИ (VFD) ИВ-18

Основы

Функционально схему любых подобных часов можно разделить на несколько блоков: источник питания всего устройства, преобразователь питания самих индикаторов, блок отсчитывания времени с календарём, сам индикатор или индикаторы (в зависимости от идеи и реализации) и какой-то микроконтроллер, который этим всем будет управлять. Так же «по вкусу» можно добавить, например, какой-то способ связи устройства со внешним миром, как сделал я для эксперимента и расширения функционала. И «пищалку» для будильника, конечно.

Питание

Всё питание часов будет осуществляться от обычного USB. В данном случае — с разъёмом mini (он же - Mini-B) USB, — этих разъёмов у меня в наличии достаточно много и нужно их куда-то тратить.

Индикатор

В качестве индикатора был выбран ВЛИ (вакуумно-люминисцентный индикатор) ИВ-18. Здесь можно посмотреть pdf с datasheet'ом, а внешний его вид в рабочем режиме можно увидеть на заглавной картинке.

У ВЛИ всех типов и размеров есть несколько важных особенностей. Так как по внутреннему устройству они — суть те же радиолампы, только ориентированные на «видимость» во время работы, то для работы им нужны основное (анодное) напряжение и напряжение накала.

Из datasheet'а самые важные для работы параметры это:
  • Напряжение накала: 4.5—5.5 В
  • Ток накала: 85±10мА
  • Напряжение анода-сегмента: 50В

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

Внимание! В отличие от «обычной» радиолампы, свечение накала не должно быть видно. Или видно совершенно минимально, на границе видимости и только в темноте. Иначе нить накала перегорит очень быстро, особенно, если лампа уже была в употреблении какое-то время до этого.

Дальше нужно организовать то самое напряжение анода-сегмента. И здесь ещё одно предупреждение.

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

Повышающий DC-DC преобразователь построен на базе микросхемы-таймера NE555. Так как минимальное напряжение питания у неё - 4.5В, то она без проблем будет работать от того же USB. И, если все номиналы подобраны верно и компоненты исправны, то «схема работает сразу, дополнительных регулировок не требует», как писали раньше в технической литературе.

DC-DC преобразователь Здесь джампер XS1 исключительно лишь для удобной отладки и быстрого обесточивания преобразователя, если что-то пойдёт не так. Индуктивность катушки L1 можно подобрать по ходу дела, номиналом 100..300мкГн.

Теперь сам ВЛИ. Рассмотрим его распиновку

.

Распиновка ИВ-18

Как это работает: например, нам нужно отобразить цифру 7 в самом дальнем знакоместе от выводов - в 8-м разряде. Для этого нам понадобятся разряды (аноды-сегменты) а - вывод 12, в - вывод 10, е - вывод 4. На эти выводы подаём анодное напряжение от преобразователя, описанного выше, те самые 40В. Однако, теперь надо нужно «указать» на конкретный сегмент. Для этого нам нужно подать это же напряжение и на необходимую сетку. Для нашего 8-го разряда это будет сетка с выводом 18. После этого засветятся необходимые нам аноды-сегменты в нужном разряде. Используя этот принцип, подавая анодное напряжение на нужные нам аноды-сегменты для соответствующих цифр (и букв) и на сетку, мы получим свечение нужных сегментов. Перебирая цикл достаточно быстро (10-30 раз в секунду) мы получим динамическую индикацию и визуально светящиеся во всех разрядах нужные нам символы.

Коммутация. Теперь нам нужно как-то управлять подключением нужных анодов-сегментов и сеток к анодному напряжению. Конечно, сам микроконтроллер не сможет этого сделать, так как рабочее напряжение МК существенно ниже 40В. Для решения этой задачи существуют специальные микросхемы — драйверы ВЛИ.

В этом устройстве будет использован подобный драйвер для многовыводных ВЛИ - MAX6921AWI. Здесь можно посмотреть pdf с datasheet'ом.

Из datasheet'а самые важные для нас для работы параметры это:
  • Напряжение питания самой микросхемы и логических уровней: 3..5.5В
  • Максимальное коммутируемое напряжение: 76В
  • Количество коммутируемых выводов: 20

Как видно, для этого устройства эта микросхема подходит идеально. Рассмотрим ещё блок-схему.

Блок-схема подключения MAX6921AWI 6931 и 6921 не отличаются блок-схемой — она взята из того же datasheet'а. Из дополнительного интересного: подавая ШИМ на вывод BLANK можно регулировать яркость свечения ВЛИ.

Вход микросхемы представляет собой обычный сдвиговый регистр, то есть, посылать на неё данные можно с помощью шины SPI микроконтроллера.

Cхема подключения

Подключение MAX6921 Здесь, для упрощения, не отображены остальные подключённые выводы МК..
Так же показан вывод накала индикатора ИВ-18VFD_FIL.
При проектировании я не обратил внимание на суть вывода BLANK, поэтому он здесь подключён на массу, то есть, яркость никак не регулируется (всегда максимальная), как и программное отключение отображения.

Основной принцип

Из микроконтроллера по SPI отправляем 20-битный пакет (слово), представляющий собой подготовленную битовую маску для включения/отключения соответствующих сеток и анодов-сегментов. Самые старшие 3 бита — выводы микросхемы OUT17, OUT18 и OUT19, — в моём случае не используются, но отправлять их всё равно нужно.

Общее питание логики

Общее питание логики Здесь минимальный набор конденсаторов: по одному электролитическому и керамическому конденсатору на входе USB и один электролитический с двумя керамическими — на выходе регулятора напряжения.

Часы

Само время можно было бы считать и встроенным в МК блоком RTC, но я предпочёл использовать проверенный вариант с микросхемой DS3231. Здесь можно посмотреть pdf с datasheet'ом. Взаимодействие с МК производится с помощью стандартной шины I2C. Дополнительные возможности микросхемы (таймеры/будильники) я не использую, только подсчёт времени и даты.

Общее питание логики Подключение к I2C производится стандартным способом. Так же использую стандартную батарейку CR2032 — вывод V_Bat, — для сохранения хода часов в обесточенном состоянии. Для упрощения на схеме все остальные выводы, кроме питания и подтягивающих резисторов для шины I2C, показаны не подключенными.

USB/UART

Так же в устройстве я решил поэкспериментировать со взаимодействием с компьютером по UART. Для этого была взята популярная микросхема CH340. Здесь можно посмотреть pdf с datasheet'ом. Из всего функционала я использую только RX/TX, без дополнительных (остальных) сигналов UART (DTR/DSR/CTS и т.д.). Подключается к микроконтроллеру она стандартно: RX к TX, TX к RX.

USB-UART/USART Для упрощения на схеме все остальные выводы, кроме функциональных, показаны не подключенными.

Кнопки, «пищалка», кварц

Остались ещё кнопки для управления часами — настройки времени и даты и так далее, «пищалка» для будильника и выводы для программатора.

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

Микроконтроллер

Решил использовать STM32F030F4P. Здесь можно посмотреть pdf с datasheet'ом.

Выводы микроконтроллера

Настройки тактирования микроконтроллера

Полная схема

Полная схема часов

Сборка

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