Pull to refresh

Часы на основе индикатора ИЛЦ3-5/7 (ILC3-5/7)

Reading time5 min
Views9.8K

Хочу поделиться опытом и наработками при создании настольных, компактных часов на основе индикатора ИЛЦ3-5/7.

Давно хотел сделать часы на основе вакуумно-люминесцентного индикатора, но как-то все руки не доходили. И тому было несколько технических причин (если вы это читаете то я думаю вы уже знаете принцип работы вакуумно-люминесцентного индикатора, если нет, то рекомендую сначала ознакомиться):

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

  2. Классическая схема питания — это трансформаторная. Она проста как молоток, но такое дело мне не нравилось из-за громоздкости (и при таком варианте невозможно питать схему от стандартного USB-зарядного устройства).

  3. Двухтактный преобразователь (пробовал тот, который в статье ниже, получил плохие переходные процессы на осциллограммах) с запиткой стандартным напряжением 5В (как в USB), который формирует переменку около ~2В или ~3В для запитки катода и отрицательное высокое или положительное — анодное, более 20В.

  4. Драйвер для сеток и анодов. Основная проблема тут в том, что есть такое понятие как «верхнее» и «нижнее» питание (об этом написано тут). И поэтому есть такие варианты:

    1. Микросхема-драйвер с последовательным интерфейсом SPI, коммутирующая ОТРИЦАТЕЛЬНОЕ относительно общего провода схемы напряжение.

    2. Микросхема-драйвер с последовательным интерфейсом SPI, коммутирующая ПОЛОЖИТЕЛЬНОЕ относительно общего провода схемы напряжение.

    3. Микросхема-дешифратор двоичного кода К176ИД3, которая требует нескольких напряжений и хитрого включения.

    4. Все по хардкору на отдельных транзисторах.

Драйвер катода

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

Драйвер анодов, сеток и DC/DC StepUp конвертер

Основная проблема при использовании драйвера с «верхним» питанием заключается в том, что нам нужно получить отрицательное напряжение относительно общего провода схемы из положительного напряжения питания, да еще и высокое, т.е. нам нужно из +5В получить -25В. И да, такое решение тоже нашлось тут. Но автор пишет, что потребление тока не оптимально. Единственное, что привлекает использовать такое схемное решение, это доступность микросхемы-драйвера PT6311. Но после более тщательного поиска все еще доступных к покупке микросхем нашлась золотая середина — MAX6921AWI. Она, как оказалось, даже еще производится и ее не составило труда купить на AliExpress. Определившись, что схема у меня будет с «нижним» питанием, найти схему DC/DC StepUp конвертера не составило никакого труда. Основой такого конвертера стала «попсовая» MT3608.

Выводы по железу

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

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

Пожалуй начну с особенностей MAX6921AWI, ее суть заключается в том что микросхема принимает по SPI 20 бит и это как бы не кратно ни 8 ни 16, что и накладывает доп логику при использовании микроконтроллера с аппаратным SPI. Я использовал в своей конструкции микроконтроллер STM32F103C8T6 который богат периферией в частности и SPI но он умеет в 8 или в 16 бит. И для того чтобы данные были переданы как задумывалось необходимо учитывать как будет управляться ножка LOAD микросхемы MAX6921AWI. В моей схеме уровень на этой ноге контролируется микроконтроллером (что оказалось не особо нужным) так же у меня не подключены выходы OUT0-OUT4 (просто так было удобнее развести плату).

В общем кратко как происходит передача данных в моей реализации:

Я настроил SPI на размер посылки в 16 бит и выставил постоянный высокий уровень на лини LOAD, а суть в этом следующая. При высоком уровне на ножке LOAD, MAX6921AWI после 20 импульса на линии CLK просто-напросто игнорирует дальнейшие данные и сразу выдает 20 принятых бит на выход.

Первыми 4 битами данных (это маленькие ‘x’) указываю какой уровень будет на OUT16-OUT19, а ‘X’ соответственно OUT5-OUT15.

Моя схема подключения представлена ниже. (Кстати как оказалось новые модели МК поддерживают передачу не только 8 и 16 бит но и 4.)

Подключение дисплея к драйверу
Подключение дисплея к драйверу

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

  1. качество воздуха — CCS811

  2. давление, температура — BMP180

  3. влажность, температура — HDC1080

Датчик качества воздуха весьма забавный, но ооооочень специфический. Внутри себя он содержит микроконтроллер с собственной прошивкой (которую кстати можно обновлять). Работает он по шине I2C, как и остальные датчики, что очень удобно, все датчики висят на одной линии. CCS811 по запросу, если данные готовы, выдает готовый результат.

CCS811 supports intelligent algorithms to process raw sensormeasurements to output a TVOC value or equivalent CO2 (eCO2)levels, where the main cause of VOCs is from humans.

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

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

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

Вот только полноценно этот зоопарк я так и не включил ибо допустил ошибку в трассировке. Я разместил все эти датчики рядом с линейным стабилизатором напряжения 5В->3.3В. Что, как вы понимаете не могло сказаться позитивно на точности измерения) В общем он греется, а за ним следом все что вокруг, так что данные я считываю только с CCS811.

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

Также еще одной ошибкой, но на этот раз ошибка была допущена в схеме. Вывод BLANK микросхемы MAX6921AWI, используется для регулировки яркости при помощи ШИМ, но как потом оказалось в микроконтроллере STM32F103C8T6, если вы включили SPI, то неважно в каком режиме вы это сделали, дуплекс, передача или прием. Все ножки задействованные под этот интерфейс больше не могут использоваться другими блоками, в моем случае таймером. Для того чтобы не вешать провода к свободным ногам(тем самым нарушая инь-янь платы) я сделал программный костыль. Так как оставалась возможность управления этой ногой как просто выводом, я зарядил аппаратный таймер с нужным параметром ШИМ, и в прерывании просто переключаю состояние ноги, тем самым генерируя ШИМ. Но вы смело можете менять STM32F103C8T6 на STM32F091CC, тут уже можно манипулировать ногами на свое усмотрение. Он полностью совместим по распиновке, но программно уже нужно переделывать.

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

Удачи!

Схему и плату делал в DipTrace, версия 3.2.0.1. GitHub

Ну и немного фото проекта

Tags:
Hubs:
+23
Comments37

Articles

Change theme settings