Случилось так, что по наследству мне досталась целая коробка семисегментных индикаторов с гордой надписью «Комплект часы». Давно хотелось пустить её содержимое в дело, а когда дошли руки — оказалось, что внутри целый зоопарк разномастных индикаторов, разных размеров, цветов, с общим катодом и с общим анодом. По количеству штук так двадцать. И чтобы не пилить «очередные часы» пришла идея сделать, собственно, сабж — максимально универсальный семисегментный дисплей.
Что из этого получилось — под катом.
Disclaimer
Описанные ниже устройства являются довольно нишевыми, сделаны мною just for fun, но примененный подход может быть использован для решения аналогичной задачи универсализации там, где это потребуется. Текст разбавлю пояснениями для начинающих. Основная цель — спроектировать единую плату под все имеющиеся индикаторы и различные идеи их использования.
Статья получилась объемная, так что я разделил hardware и software части. К вашему вниманию часть первая — hardware.
Постановка задачи
Что я понимаю под максимальной универсальностью? Спроектировать модуль, с помощью которого или его комбинаций можно создать любой (или практически любой, в разумных пределах) дисплей для отображение информации с использованием этих самых семисегментных индикаторов. В голову приходит сразу с десяток применений — часы, конечно же, куда без них; туда же таймеры, счетчики чего угодно; термометры; табло для разных игр; дисплеи для отображения цифровой информации — курсов валют, индексов бирж и т.п. В общих чертах задача абсолютно тривиальная, но усложняется зоопарком типов индикаторов. В наличии одноразрядные китайские индикаторы с размером цифры 2.3 дюйма (тип FJ23101, четыре светодиода на сегмент) и 3 дюйма (тип CL-30011, пять светодиодов на сегмент), разных цветов и с различным типом подключения — с общим катодом и с общим анодом. Чтобы покрыть использование всех этих типов пришлось посидеть над схемой и разводкой, которая давала бы возможность без изменения топологии печатной платы управлять разными индикаторами. Поискав вечерок в интернете мне не удалось найти универсальных решений или схем, что и стало поводом для написания данной статьи.
По приведенным примерам использования становится понятно, что модуль должен поддерживать различную разрядность, от одной цифры для простых счетчиков событий, до шести для индексов некоторых финансовых бирж. Я решил ограничиться двумя цифрами для большего трехдюймового размера и тремя для меньшего, с возможностью подключения еще одного модуля в виде slave-а.
При выборе управляющей части долго думать не пришлось, выбор сразу пал на готовые модули ESP-07 на контроллере ESP8266 от Espressif. Дешевизна и простота использования этих модулей, возможность легкого подключения к Интернету, обширная комьюнити разработчиков и элементарность программирования этого контроллера отмели все другие варианты.
Приступим к деталям
Начнем с питания семисегментных индикаторов большого размера, где каждый сегмент представляет собой цепочку из нескольких последовательно включенных светодиодов. Такие дисплеи уже не получится зажечь «цифровыми» уровнями напряжения, так как падение на цепочке светодиодов больше этого значения. Конкретное значение указывается в даташите на дисплей, оно зависит от характеристик светодиодов, цвета и их количества и может варьироваться от 6 до 12 Вольт. Ток через каждый сегмент также превышает допустимые значения тока через отдельный пин для большинства контроллеров и составляет от 20 до 50 мА. Соответственно, нужно использовать напряжение 12 Вольт и коммутирующие ключи для управления сегментами и общими выводами. Также не стоит забывать о динамической индикации — последовательном переключении разрядов с частотой превышающей частоту восприятия глаза человека. Это позволяет значительно снизить энергопотребление практически без потери визуальной яркости дисплея.
Общее питание было решено брать от порта USB, как наиболее универсального стандарта на данный момент. После непродолжительного гугления я выбрал готовый модуль повышающего DC-DC преобразователя на МТ3608. Он компактный, дешевый (<0.5$), регулируемый, с достаточно высоким КПД — всё что нужно для наших целей. От резервного питания отказался, так как под рукой есть Интернет, где можно получить актуальную информацию в любой момент.
Питание цифровой части обеспечит линейный low-dropout стабилизатор LM1117-3.3, классическое решение для нетребовательных применений.
Теперь по транзисторным ключам.
Для управления индикатором с общим катодом на сегменты нужно подавать плюс питания, общий контакт, катод, подключить к земле. Для данных целей удобно использовать микросхемы источников тока (source drivers IC), как пример UDN2981. На картинке ниже подключение индикатора к драйверу и упрощенная схема одной ячейки для лучшего понимания пути прохождения тока. Стоит заметить, что в классической схеме должны быть токоограничивающие резисторы в цепи каждого сегмента, они упущены по причинам использования другого метода ограничения тока — МАХ7219 имеет изменять скважность управляющих импульсов, что в сумме с возможность регулировки напряжения питания индикаторов даст необходимый результат.
Для индикаторов с общим анодом — наоборот, общий контакт подключается к плюсу питания, а сегменты коммутируются на землю. В плане управления индикаторы с общим анодом более простые, так как не требуют коммутации высокого напряжения, по этой причине они более распространены. Для управления сегментами удобно использовать микросхему-массив составных транзисторов Дарлингтона (Darlington Transistor Arrays), например всеми любимую ULN2803.
Значительным преимуществом перед UDN2981 является стоимость, которая в разы меньше. На картинке ниже подключение индикатора к драйверу и упрощенная схема одной ячейки.
Можно заметить, что верхние части схем очень схожи. Пара драйверов UDN2981 и ULN2803 подобрана неспроста. Относительно ножек вход/выход они pin-to-pin совместимы. Это дает возможность сделать универсальное посадочное место на плате добавив всего несколько перемычек под запайку для ножек питания. Бинго!
Чтобы упростить задачу динамической индикации я решил не изобретать велосипед, не городить 595-е сдвиговые регистры, а взять надежное и проверенное решение — специализированный драйвер семисегментного дисплея MAX7219. Эта микросхема умеет хранить во внутренней памяти до восьми цифр и самостоятельно коммутировать разряды с заранее установленной яркостью. По этой причине и не нужны резисторы последовательно с каждым сегментом. Управляется драйвер по шине SPI. Как по мне, микросхема имеет всего один недостаток — высокую стоимость. Имела. Пришли китайцы и наклепали полный функциональный аналог со стоимостью в несколько центов. Название такое же, правда маркировка отличается, отсутствует оригинальный логотип Maxim. В работе отличий не замечено, временные диаграммы такие же, не греется, отказов пока не было. Но для ответственных применений все-таки рекомендую ставить дорогой оригинал.
Вот такой набор MAX7219-MATRIX-KIT можно купить на Ali и в локальных магазинах для ардуинщиков по цене в четыре раза ниже оригинального драйвера MAX7219. Да-да, вы меня правильно поняли, набор с матрицей, платой и рассыпухой. Дешевле. В четыре раза. Выбор очевиден же?
Пока всё звучит очень хорошо и просто, берём драйвер дисплея, который всё делает за нас, в зависимости от типа индикатора ставим нужные ключи и вуа-ля! Все почти так и есть, кроме одного «но». MAX7219 рассчитан на работу с дисплеями с общим катодом с напряжением сегмента до 5В и никак иначе. Что это дает в сухом остатке? Перебирая разряды индикаторов драйвер подключает их на землю, поддерживая высокий уровень на катодах остальных разрядов. А теперь вернемся к схемам выше и проанализируем, что будет в случае с индикатором с общим анодом.
Нетрудно понять, что мы получим инверсию — нужный разряд будет выключен, все остальные — активные. Вместо динамической индикации на дисплее будет сплошной засвет от соседних разрядов. Чтобы избежать такой ситуации между контроллером и драйвером нужно добавить микросхему инвертирующую логические уровни. Так как максимальное количество разрядов шесть, гуглим «hex inverter» и тут же находим 74hc04. Отлично, а для общего катода вместо микросхемы сделаем перемычки или можно использовать pin-to-pin совместимую микросхему-буфер 74als34/74as34 (hex noninverter, но обязательно с выходом push-pull, открытый коллектор/сток типа 74hc07/74als35 работать не будет из-за отсутствия подтяжки к питанию).
В итоге имеем финальные схемы подключения индикаторов. Для общего катода все просто — драйвер плюс ключи способные подавать на сегменты повышенное напряжение. В даташите на MAX7219 приводится схема подключения индикаторов размера 2.3 дюйма и все это запитано от 5 Вольт, но мои экземпляры наотрез отказались работать при таком низком напряжении, сегмент начинал слабо светиться при подаче 7.2В (1.8В на светодиод). Катоды подключены напрямую к MAX7219, контроллер может прокачивать через себя от 320мА на каждый канал (>45мА на сегмент), чего с головой достаточно для данных типоразмеров индикаторов.
Для общего анода все немного сложнее. Тут уже нужно использовать разнотипные ключи для верхнего и для нижнего плечей плюс инвертирующий буфер для управления разрядами. Инвертирование сигналов для сегментов получаем автоматически при использовании ULN2803.
Как видим, со стороны драйвера MAX7219 и управляющего всем этим ESP8266 нет никакой разницы какой именно тип индикатора установлен в модуле, модифицировать прошивку не требуется.
Замечу, что при использовании внешних драйверов встроенное в контроллер ограничение тока сегментов (которое задается резистором на входе Iset) корректно работать не будет, поэтому интенсивность будем регулировать напряжением питания при максимальной скважности от MAX7219. Драйвер позволяет устанавливать интенсивность скважностью встроенного ШИМ генератора от 1/32 до 31/32 с шагом 1/16.
Для управляющей части на ESP8266 ничего выдумывать не нужно, берем типовое включение модуля, заводим линии SPI на MAX7219, UART для прошивки на внешний разъем. Дополнительно решил добавить преобразователь протокола UART в virtual COM port через USB, его устанавливать необязательно, но места на плате предостаточно, пускай будет такая возможность. Как преобразователь я выбрал СН340, как максимально простое и бюджетное решение. В версии чипа СН340G преобразователь даже не требует частотозадающего кварца, он уже встроен в конвертер, а из обвеса всего пара конденсаторов, проще не бывает.
Полная схема в хорошем качестве тут.
Со схемой определились, теперь можно приступать к топологии печатной платы. Как я уже упоминал, все эти заморочки именно через плату. Хотелось заказать партию плат на нормальном производстве под все вышеперечисленные устройства и не дорабатывать их по месту напильником и скальпелем. После непродолжительных размышлений на плате вырисовались аж целых восемь посадочных мест под семисегментные индикаторы:
- По одному для 2.3" и 3" по центру платы — для дисплея с одной цифрой
- По два для 2.3" и 3" — для дисплея с двумя цифрами
- Три для 2.3" — соответственно, для дисплея с тремя цифрами
По краям платы расположены контакты расширения — для подключения справа от ведущего еще одного аналогичного ведомого модуля, но без схемы управления и питания, только индикаторы.
Такая комбинация позволяет расширить разрядность до шести цифр, а так же комбинируя расположение и размер индикаторов изготовить табло для различных, предположим, настольных игр и, конечно же, часы! На контакты продублированы сигналы управления всеми сегментами и выведены линии подключения 3 и 4 разряда для трехдюймовок, и 4, 5 и 6 разряд для двухдюймовок.
Дополнительно, два оставшихся свободных канала MAX7219 подключены к двум цепочкам дискретных светодиодов, расположенных над и под индикаторами. Их, например, можно будет использовать для фоновой подсветки, так сказать эффект ambilight.
Размер платы выбран таким образом, чтобы она не выходила за края индикаторов. В таком случае можно скомбинировать дисплей с одинаковыми расстояниями между цифрами для бо?льших и 6ти-разрядный для меньших индикаторов.
По углам платы расположены четыре отверстия под болт М3 для крепления модуля к несущей конструкции.
Микросхемы, если это было возможно, выбраны в выводных корпусах DIP, так как вопрос миниатюризации для данного устройства не актуален, а на плате они выглядят уже почти стимпанково, на фоне привычных BGA монстров. Это придает особого шарма, как у ламповых усилителей.
Посадочное место под модуль ESP-07 также pin-to-pin совместимо с модулями ESP-12S/E/F.
Плата проектировалась за два вечера, по этой причине использовался простой принцип разводки как у автороутеров — разделение горизонтальных и вертикальных линий на разные слои. В итоге плата получилась двухсторонняя, несложная и визуально красивая.
Плата была отправлена в производство как раз в канун китайского Весеннего Фестиваля и карантинных мер в КНДР. Рассматривал три популярные площадки для изготовления мелкосерийных прототипов — PCBway, Seeed и JLCpcb. На последней стоимость получилась на 20 долларов дешевле (при партии в 20 шт) и значимым плюсом для меня было то, что фабрика не закрывалась на праздничную неделю. Суммарная стоимость составила 44 доллара, с учетом доставки 21$ и купона на скидку -5$. В пересчете на плату — чуть больше 2 долларов за штуку. Несмотря на разгар эпидемии коронавируса, от отправки gerber-ов на фабрику к моменту получения прошел 21 день. Качество плат на высоте.
За время пока в Китае изготавливались платы, в местном рекламном агентстве были заказаны основы из прозрачного акрила, куда можно закрепить платы и светорассеиватель. Теперь можно посмотреть, что получилось из задуманного.
Вот так выглядит вариант платы, запаянной под индикаторы с общим катодом. На фото указаны названия микросхем и обведены перемычки под запайку.
А вот так — под индикаторы с общим анодом.
На фото ниже различные комбинации индикаторов разных размеров. Как вы можете понять, их также можно удвоить, добавив slave-модуль.
Далее осталось только написать скрипт под конкретную реализацию, чем и займемся в следующей части.
Всем спасибо за внимание!
P.S.: Если кто-то заинтересовался проектом — пишите в личку, осталось еще с десяток плат или могу выслать gerber-файлы.
ionicman
А можно вопрос?
Зачем в 21 веке схемотехника не с динамической индикацией?
Ибо динамическая индикация избавляет от кучи буферных микросхем (и даже транзисторов-ключей), гребенок сопротивлений, а чарлиплексинг избавляет от перерасхода кол-ва выводов. При этом появляется возможность в разы снизить потребляемый ток и управлять яркостью вплоть до сегмента?
Пример чарлиплексинга для двух семи-сегментников укладывается в 4 линии (на схеме просто 5 линий):
И это еще самый простой чарлиплексинг, двух-уровневый, есть трех за счет Z состояния вывода.
staticmain
Падение яркости.
ionicman
На глаз не заметите.
staticmain
Падение прямо пропорционально количеству диодов.
ionicman
Поверьте — я тоже — при таком количестве диодов как здесь и при той частоте обновления что может дать ESP — на глаз — не заметите.
staticmain
Независимо от частоты обновления диод горит 1/N времени. Суммарный световой поток диода делится на N.
ionicman
Вы не учитываете здесь инерционность глаза.
С точки зрения физики да — он мигает.
Как и, наверняка, монитор, в который вы сейчас смотрите, однако вы этого не видите.
sim2q
яркость падает
enjoyneering
таки да — яркость падает. На хабр недавно проскакивала статья про хак IKEA диско-кубов, там для градации серого из белого применяли PWM с гаммакорекцией. Если такое применить с чарлиплексинг то вроде как должно взлететь. Что вы думаете?
rexen
Походу тут говорят немного о двух разных вещах.
1) При наличии источника бесконечной яркости его можно ШИМ-ить сколько угодно. И при наличии глаза с линейной чувствительностью это будет работать.
2) Но у нас и диод и глаз — с ограничениями. При увеличении тока на ширпотребном СД более 20мА — яркость уже не растёт. Кристалл же перегревается и деградирует. В даташите есть не только максимальный постоянный, но и максимальный пиковый ток — «выше головы» вы тут не прыгнете.
Так что если у нас «сверхяркие» СД и, грубо говоря, нам достаточно яркости в 10% от их «максималки» — то, да, мы можем ШИМ-ить/чарлиплексить их в пределах 1/10.
Можно поставить к каждому СД по конденсатору, но это усложнение, а мы же вроде как хотим упростить.
madf
Угу и мега рост потребления (при статике).
ARMag Автор
А зачем в 21 веке вопрос не относящийся по сути к статье? :)
В статье не рассматривается вопрос статической индикации в принципе, так само как и нет перерасхода выводов и гребенок резисторов.
Подход с чарлиплексингом я не отрицаю совершенно, его можно и нужно применять там, где это уместно. Для индикаторов использованных в статье это практически не применимо.
Прочитайте статью не по диагонали перед тем как писать комментарий ;)
ionicman
Вот именно по-этому и был написан мой комментарий — зачем так делать вообще?
Статью я прочел.
Чарлиплексинг? Для этих конкретно — да.
Но по той-же цене есть 7-сегментные индикаторы у которых сегменты не связаны.
Ну и динамической индикации это в любом случае — не помеха.
Плюшки — избавляетесь от кучи ненужных здоровых dip-корпусов на плате.
Без чарлиплексинга, для трех из данных в вашей статье индикаторов потребуется 10 линий управления — 7 для сегментов и по одной на выбор индикатора.
ARMag Автор
Я потерял суть вашего вопроса… Зачем делать так как? В статье динамическая индикация описана.
Приведите мне пример чарлиплексинга для индикаторов с падением на сегменте больше 5В и током 20мА+
ionicman
Вроде всего один комментарий был, а уже потеряли? :)
Зачем не делать динамическую индикацию — вот главное.
Чарлиплексинг шел вторым пунктом, как бонус. Естественно, у него есть ограничения. И для мощных решений он не подходит.
ARMag Автор
Та потерял потому что третий раз пишу что в статье ДИНАМИЧЕСКАЯ индикация. А вы третий раз спрашиваете почему НЕ использовать динамическую индикацию :)
Наличие отдельного специального драйвера, реализующего динамическую индикацию не делает индикацию статической.
По поводу бонусного чарлиплексинга уже сами написали, что не актуально в данном случае.
ionicman
Окей, тогда еще раз — динамическую индикацию без доп.обвеса центральным микроконтроллером (вроде бы не сложно понять из моего первого комментария, что я имею ввиду, правда?). А как уж там в обвесе это реализовано — нужно уточнять в датащите. Есть драйвера с ШИМ, есть линейные.
Дополнительный обвес не нужен в этой схеме — линий ESP за глаза.
С током тоже должен справиться, ну а если нет — один ключ на транзисторе (да хоть на мосфете) поставить — его одного хватит на все.
У вас уменьшаться габариты платы, стоимость изготовления, стоимость покомпонентная, и самое главное — появится бОльшая универсальность для стэкования — ничего перепаивать не нужно будет. Мало того — можно сделать мастер-плату с контроллером и к ней уже стэковать шилды с индикаторами — что правильней, чем иметь по контроллеру с WiFi на каждую плату с индикаторами.
Вобщем, все получается в разы проще и круче.
pvvv
Линий esp не хватит, там 12мА всего, а не 20-30, и один ключ тут не поможет.
А для динамической индикации ток ещё бы задрать надо чтобы яркость совсем уж не проседала.
ionicman
Потребление надо пиковое считать, а не константное — оно будет коротковременно импульсом работать — так что вполне может справиться.
Почему один ключ не поможет?Да, при общем аноде/катоде такой вариант не поможет, согласен. Забыл опять что тут спаянные сегменты, этот пункт неверен для такой схемотехники, ок.
Еще раз — при высокой частоте обновления Вы не заметите на глаз уменьшения яркости.
pvvv
у esp 12мА выход не потому что он сразу отгорит при большем постоянном токе, у него выходное сопротивление такое, и даже если его наглухо заземлить он больше этих 12мА не выдаст. и импульсный режим тут никак не поможет, на 1мкс из 10мкс, 120мА из него не получить никак.
В светодиод, да, можно задуть импульсно больше тока, в каких-то пределах, чтобы частично скомпенсировать большую скважность работы.
Но при том же токе яркость будет пропорциональна скважности, так что ещё как уменьшится.
ARMag Автор
Один ключ не поможет не только по причине общего катода/анода, а по причине того, что фигурально выражаясь выход контроллера — это полумост, который может подключать к плюсу питания и к земле (и еще есть и hiZ). И в данном случае это не просто логические уровни, по этим плечам будет проходить полный ток светодиода и нужно уже как минимум два транзистора, а лучше три. Так что гипотеза, что «будет проще» неверна.
ionicman
А вот здесь по-подробнее — если стоит транзистор в режиме ключа через который и питаются диоды, а ключом как раз управляет МК, где там полный ток через ножку МК?
ARMag Автор
При чарлиплексинге диоды устанавливаются встречно-параллельно и ток течет в обе стороны, и к земле и к плюсу, в зависимости от того, какой светодиод горит. Соответственно и ключей должно быть два — для верхнего и для нижнего плечей.
ionicman
При чарлиплексинге — да.
Но мы вроде-бы договорились тут что с этим типом индикаторов он смысла не имеет.
Почитал я спеки по ESP — да, печаль — 12 ма на ножку, даже в импульсе. ST и ATMEL рвут ее на части.
ИМХО — надо делать индикацию на нормальном проце, а управление (мастер-модуль) с ESP — тогда все нормально будет.
Ну и напряжение можно нормальное брать — 5 вольт.
Проц дешевле будет всего этого обвеса.
P.S.
Можно, наверное, заюзать один мосфет для переменки :)
ARMag Автор
Ну мы же с вами не сферического коня в вакууме обсуждаем, а конкретно ваше предложение из первого комментария.
ionicman
Мы сейчас уже обсуждаем, как сделать максимально правильно, современно и при минимальных затратах, нет?
Как-то медленно Вы контекст переключаете.
u_235
А чем ваше решение правильней? Вы предлагаете дополнительный проц вместо нескольких простых микросхем. На мой взгляд, спорное преимущество.
ionicman
Правильней тем, что один корпус вместо 4.
Цена таже, универсальность выше — там можно задавать как угодно конфигурации без пайки.
Хочешь — матрицу, хочешь — 7-сегментники, хочешь — вообще WSки.
Трансфер данных и стыкование в разы проще — хочешь i2c, хочешь обычный com, хочешь — свой протокол.
Ну и отсутствие дипа.
u_235
И какой же микроконтроллер сможет без обвязки коммутировать токи до 50 мА и напряжением до 12 В? Мы же конкретно эту конструкцию обсуждаем, с четко обозначенными вводными.
DIP не нравится? Так все примененные микросхемы есть в SMD. Но с DIP проще паять перемычки вместо неиспользуемых корпусов.
Про трансфер вообще непонятно, что вы хотели сказать. Чем передача по SPI сложнее IIC или com? И зачем городить свой протокол? И кстати, программы для всей этой вакханалии сами по себе напишутся?
pvvv
Может потому что давно есть адресуемые драйвера вроде ws2811 стоимостью несколько центов, и даже сразу светодиоды с встроенным дрйвером, которыми прямо на плате выложить сегментный индикатор любого размера будет и гораздо проще и возможно даже дешевле.
ionicman
Здесь речь идет о 7-сегментниках.
7-сегментники на WS будут большими — раз, и потреблять гораздо больше — два и стоить будут дороже обычных 7-сегментников точно — три, при этом их главная возможность — RGB не будет востребована.
7-сегментники со встроенным драйвером — очень редкая и соответственно, дорогая штука.
pvvv
так речь и идёт вроде про индикаторы размером ~50мм, с толшиной светящейся части как раз 5мм.
если его выложить на плате из 30 диодов ws2812, за 2$, что-то сомневаюсь что отдельный индикатор такого размера + драйвера будут дешевле.
ionicman
Отдельный индикатор будет дешевле — можете посмотреть на ТаоБао.
Драйвера не нужны при динамике. Потреблять будет меньше.
Нет, как вариант — можно — особенно если хочется, чтобы цифры цвет меняли по настроению :)
ARMag Автор
Да, индикаторы большие и сверхяркие, хорошо видно при дневном свете. При использовании дискретных адресуемых светодиодов думаю основная проблема будет в создании качественного светорассеивателя, чтобы сегменты не состояли из отдельных светящихся точек. А при такой плотности «пикселей» это задача будет не такая уж и простая.
sav13
А вы пробовали?
Рассеиватель нужен хоть в пиксельных, хоть в обычных
Вполне нормально получается
samopal.pro/clock_moon1
rexen
— что-то тут с ISO не то. Фотка нереальная.
ARMag Автор
Да, тоже обратил внимание. Как по мне она пересвечена, потому и кажется более-менее равномерный цвет внутри сегмента, хотя если присмотреться — и тут пятна видно. Я под один проект довольно много времени уделил поиску правильного светорассеивателя и могу с уверенностью сказать, что вопрос очень непростой и помощью широкодоступных материалов качественно его решить сложно. Требуется или большое увеличение толщины или использование специальных пластиков/пленок, которые применяются, например, в торцевых LED подсветках мониторов/телевизоров. Там, к слову, для того чтобы добиться хорошей равномерности используют сендвичи из разных рассеивателей от 4 до 10 слоев (возможно и больше есть, 10 это то что я встречал на 60+ дюймовых матрицах телевизоров).
rexen
Т.е. ни оргстекло (матовое/зашкуренное) ни термоклей (в т.ч. «молочные») — не решают?
ARMag Автор
Такие методы частично могут решить вопрос равномерности, но ценой потери яркости за счет рассеивания. Спец пластики практически не уменьшают поток (95-98%), а перераспределяют его.
lingvo
ИМХО достаточно взять всетодиоды с широким углом обзора, плату взять с маской белого цвета или заказать полностью белую шелкографию, а сверху наклеить белую пленку.
ARMag Автор
Вы, наверное, не совсем понимаете основы оптики. Все что даст белая шелкография — это чуть больший коэффициент переотражения света отраженного обратно от пленки. СД с широким углом тоже не решат проблему равномерности, будут наложения от соседних и пики от кристаллов. Присмотритесь к конструкции линз для качественных светодиодных фонарей, там бывает очень сложный профиль, матирование зонами и другие ухищрения для получения равномерного пятна. И линзы такие делаются конкретно под определенную модель светодиода.
lingvo
Чем в данном случае недостаточна линза на самом светодиоде, которая стоит на светодиодах с широким углом обзора?
Пиков от кристаллов при закрытие пленкой не видно.
Я думаю, что у индикаторов и светодиодных фонарей есть важная разница — в индикаторе я могу потерять значительную часть мощности, чтобы получить равномерность. А в фонарях нужно выдать всю мощность в нужном направлении и терять 30% на непрозрачной пленке никто не хочет. Вот и делают там сложные прозрачные линзы.
ARMag Автор
Широкоугольных SMD светодиодов у меня нет, так что проверить не могу. Посмотрел пару даташитов на DigiKey для светодиодов с углом 130+ градусов, на их диаграммы направленности. В теории, при плотном расположении корпусов можно добиться неплохой яркости и равномерности даже прикрыв обычной бумагой на расстоянии 3-5мм :)
Цена 15-20 центов за штуку на сотне. Корпуса 0805, 1206.
Думайте сами, считайте сами… :)
Стандартный 160-градусный представитель:
lingvo
Ага, а если учесть еще обратное отражение от этой самой бумаги, белой подложки и белых стенок, то равномерность там будет очень неплохая и при не очень плотном расположении.
И это не теория, а практика — широкий угол решает все.
ARMag Автор
Пруф?
lingvo
Скоро будет. Уже разрабатывается плата и накладка.
Только у меня цифры не такие уж большие — 55мм всего. Вам маловато будет?
ARMag Автор
Покопался в загашниках, чтобы не быть голословным.
Линзы под точечные светильники.
Матричная линза под небольшой фонарь уличного освещения.
sav13
samopal.pro/clock_moon1
WS и аналоги бывают 3528 и еще меньше
На счет стоимости, индикаторы крупнее 2" тоже весьма не дешевы
drWhy
ionicman
Нивидимое глазу? :)
drWhy
Почему невидимое? Бывает вполне заметное.
ionicman
Бывает, но не в этом случае.
lingvo
При динамической индикации следует учитывать, что частоту сканирования сегментов нужно еще умножать на количество адресуемых сегментов, так как шина управления обычно последовательная.
И если сегментов много, можно легко подняться до неожиданных цифр, которые не каждый контроллер потянет.
ionicman
Тут у ESP-шки стоковая частота 80Mhz, ну как бы…
lingvo
Дело не в стоковой частоте. Вам нужна высокая частота SPI и еще и возможность обрабатывать прерывания в реальном времени, чтобы успевать обновлять сегменты.
В общем не такое это простое дело — недаром всякие MAX7219 пользуются популярностью, несмотря на их относительную дороговизну.
Deymos
Не первый раз вижу подобные треды, которые сводятся к столкновению мнений "мерцает/не мерцает" о динамической индикации.
Вообще было бы интересно увидеть на Хабре подробную статью на эту тему.
ARMag Автор
Было бы интересно, но там, помимо этого «столкновения мнений» будет холивар по поводу методов оценки и замера. Плюс, у каждого человека это индивидуально, знаю по себе — бегущие строки в автобусах, я боковым зрением отчетливо вижу мерцание, многие люди — нет.
Потом, нужен прибор для замера реальной яркости, в идеале какой-то бокс или сфера. В итоге много работы, а адепты «мигает/не мигает» всё-равно останутся при своем.
lingvo
Ну я не знаю, о каких тредах вы говорите и почему мой пост показался вам подобным.
Лично у меня мнение простое — частота обновления больше 250 Гц — мерцания не будет. Все что ниже — это баг и некачественно разработанное железо и софт.
Бегущие строки в автобусах тоже из этой оперы — хотели подешевле — получите мерцание.
Osnovjansky
А вы о какой частоте говорите? А то на советских часах с "зелененьким" люминесцентным индикатором и частотой индикации 512 Гц. Боковым зрением при повороте головы мерцание было отчетливо видно. (про частоту мог приврать — быстро нагуглить какая именно она тогда обычно была не смог)
ionicman
Ну Вы частоты то не сравнивайте, которые были там и тут :D
Osnovjansky
Так мне и любопытно, на каких частотах сейчас работает динамическая индикация
lingvo
На советских часах наверняка было 50Гц — мерцание как раз заметно боковым зрением.
У меня в схеме внизу было 250Гц или около того. В используемой ТС схеме MAX7219 сканирует на частоте 800Гц.
ZEvS_Poisk
Дело не только в яркости, а еще и в проблемах при сьемке например.
Один знакомый оператор кино рассказывал, что редко где в фильмах можно увидеть электронные часы с динамической индикацией. Или часы убирают вообще, или, где это принципиально, ставят со статической индикацией, чтобы цифры не мигали в кадре.
lingvo
Чисто для обсуждения. Моя схема динамической индикации:
Все работает от SPI STM32F103 и требует всего 3 пина.
Яркости тут маловато, так как питание от +5В, но использование ультраярких семисегментников снимает эту проблему.
Насчет, зачем в 21-ом веке не динамическая индикация? В следующем проекте возвращаюсь к статической на TLC59284. Просто и резисторы не нужны и до 35мА на светодиод.
А вообще, чтобы поговорить — а нафига использовать готовые семисегментники, если сегодня спокойно можно сделать такой самому? SMD светодиоды на плате + соответствующая накладка на 3D принтере позволяет получить любой вид и размер индикатора с нужными сегментами.
ARMag Автор
Прочитайте первый абзац. Кучка индикаторов досталась мне бесплатно и проект не является коммерческим (синоним cost-effective). Реализация затачивалась под максимально простое использование конкретно этих индикаторов.
/sarcasm mode ON/
А нафига использовать готовые микросхемы, если сегодня спокойно можно сделать самому на SMD транзисторах? :)
/sarcasm mode OFF/
lingvo
А вы, кстати, свою схему включали уже?
ARMag Автор
Да, два устройства уже работают нон-стоп больше недели. Скоро будет вторая часть статьи с софтом и конкретными реализациями.
lingvo
Вопрос не во времени работы, а, например, в яркости свечения.
При прямом солнечном свете можно разглядеть сегменты?
А также в том же мерцании — какая у вас частота обновления получается?
ARMag Автор
У этих индикаторов всё хорошо с яркостью. Даже при солнечном свете читаются.
Паспортная частота обновления МАХ7219 800Гц. Никакого мерцания не видно даже боковым зрением. Тут расчет простой, насколько я понимаю, максимально 8 цифр, выходит при полном наборе индикаторов мерцание каждого будет 100Гц, что с головой должно хватить в том числе для бокового зрения.
lingvo
Не, 100Гц — это маловато. Если я прочитал даташит правильно, то 800Гц — это частота сканирования всех 8 линий по кругу. Если линий будет меньше(там это как-то программируется), т.е. меньшее кол-во индикаторов, то частота будет еще больше.
Но лучше проверить осциллографом.
sim2q
ARMag Автор
Спасибо за конструктивное замечание. Перефразировал.