Ранее я описал устройство вывода — драйвер линейки 7-сегментных индикаторов. В этой статье я покажу, как работает данное устройство «в живую», предложу возможные применения данного девайса и приведу несколько примеров.
Для начала
НЕМНОГО ОБ ИСПОЛЬЗУЕМЫХ КОМПОНЕНТАХ ЛИНЕЙКИ
Для демонстрации работы устройства я выбрал дюймовые индикаторы, 6 зелененьких и 2 красненьких :).
Индикаторы с общим катодом, но это не существенно, так как прошивки есть и для общего анода. Внутренняя схема у них такая:
В качестве драйвера индикатора был выбран самый простой сдвиговый регистр 74HC164. Выбор обусловлен дешевизной и доступностью. Регистр не имеет ни сигнала разрешения отображения, ни сигнала защелкивания данных, поэтому при работе линейки будет наблюдаться еле заметное помигивание сегментов из-за того, что данные проталкиваются последовательно бит за битом по всем сегментам. Для устранения этого эффекта всегда можно применить другой, более функциональный регистр сдвига или же драйвер светодиодов. Еще один минус применения 74HC164 небольшой ток ножки. По даташиту микросхема может выдержать суммарный ток до 50мА, а значит, нам придется отказаться от запитки сегментов номинальным током – 20мА (если засветить все сегменты то ток возрастет до 20мА*8сегментов=160мА, что, конечно же, много для 74HC164). Уменьшив ток сегментов до 7 мА, мы тем самым уложимся в допустимые 50 мА. Ток сегмента задается гасящими резисторами на каждый сегмент индикатора. Резисторы можно рассчитать, имея параметры индикатора, но, зная китайских производителей компонентов и их даташиты, лучше включить в цепь переменный резистор и миллиамперметр и самому подобрать нужный номинал резистора. В моем случае номиналы вышли следующие:
Для зеленого индикатора
Все сегменты цифры – 100 Ом,
Десятичная точка (там один светодиод) – 180 Ом
Для красного индикатора
Все сегменты цифры – 180 Ом,
Десятичная точка (там один светодиод) – 180 Ом
Небольшой ток сегмента в данном случае играет нам на руку так как почти сводит на нет отрицательный эффект мигания сегментов.
В линейке можно использовать любые одноциферные семисегментные индикаторы, но нужно учитывать тот факт, что у индикаторов больше дюйма для подсветки сегмента используются больше двух последовательно включенных светодиодов, а значит, может не хватить 5ти вольт для их засветки. В этом случае нужно применять специальные микросхемы – драйвера светодиодов (например STP8C596).
КОМПОНОВКА ПЛАТЫ ИНДИКАТОРА.
Если посмотреть на схему устройства
то видно, что одноциферные индикаторы подключаются каждый отдельно, но на практике удобнее их компоновать на плате парами (упрощается разводка печатной платы). Плата имеет размер пары индикаторов и держится на ножках индикатора (припаивается к ним). На плате, под индикаторами, с обеих сторон установлены разъемы типа PLS-R (папа) и PBS-R (мама) для подключения индикаторов к драйверу линейки и соединения между собой. Разъемы установлены таким образом, что невозможно случайно закоротить линии питания или сигнальные линии.
СБОРКА ПЛАТЫ ИНДИКАТОРА
Начнем, наконец-то, собирать устройство. Если Вы не имеете опыта такого рода, общие рекомендации по сборке устройств я описывал раньше. Плата односторонняя и имеет лишь несколько перемычек.
Травим необходимое количество плат
Подготавливаем разъемы, откусывая ненужные ножки как на фото
Припаиваем разъемы и перемычки (в ЛейАут-файле красными линиями указаны необходимые перемычки)
Припаиваем микросхемы и остальные компоненты, отмываем плату
! Обратите внимание на две перемычки выполненных на стороне монтажа! Их нужно припаять именно с этой стороны, иначе они будут мешать разъему.
Далее припаиваем индикаторы вплотную к разъемам, на папу перед этим нужно надеть маму для того, чтобы не «посадить» слишком низко индикатор.
Припаяв оба индикатора, мы получаем готовый модуль.
ДРАЙВЕР ЛИНЕЙКИ.
Плата довольно простая, не буду детально расписывать последовательность пайки – все понятно и так. Разводка выглядит немного странно, но не обращайте внимания – это предусмотрено для будущего развития функционала драйвера. На плате драйвера с одной стороны установлен разъем PLS-R (папа) для подключения линейки индикаторов, а с другой – разъем для внутрисхемного программирования и входом / выходом UART.
Так как суммарный ток сегментов велик, помехи, возникающие на линии питания, будут значительны — керамический конденсатор, повешенный прямо на ножки питания микроконтроллера, будет не лишним. При значительной длине линейки, я думаю, даже придется ставить RC-цепочку в цепи питания микроконтроллера.
Плата в сборе выглядит вот так
Все части устройства собраны, можно собирать в линейку платы индикаторов.
Общие рекомендации по включению / отключению индикаторов.
К драйверу линейки части линейки можно включать / отключать прямо «на ходу» — драйверу все равно, сколько индикаторов в работе – все будет работать корректно. Единственное условие, не стоит включать сразу несколько соединенных между собой плат индикаторов, так как ток, потребляемый каждой парой, значительный и включение сразу нескольких индикаторов может дать просадку напряжения до уровня, при котором сбросится микроконтроллер драйвера.
Для демонстрации я использовал собранный ранее преобразователь USB-UART и программу терминал.
Видео демонстрации работы линейки
http://www.youtube.com/watch?v=ejYvHORHE44
При ручном управлении (с клавиатуры, через терминал) ограничены возможности линейки по причине отсутствия обратной связи и оперативного управления. При использовании для управления линейкой Вашего микроконтроллера значительно расширятся возможности отображения
Файлы к статье:
051-7seg-drider-block.zip (Одна Загрузка)
Смотрим также:
Описание устройства линейки 7-сегментных индикаторов.
Если я и буду что-то делать с этим устройством, так это перевод его на драйвера MAX7219-MAX7221, портирование на мегу и подключение CD-карты, для воспроизведения текстовых файлов.
Под другие сдвиговые. С задействованной линией ое.)
ТинибТини25 б работать в этой плате и с этой прошивкой? А то впаял и прошилпо ошибке 25…
Спасибо за разработки, все которые повторил с Вашего сайта, работают без плясок с бубном)
Я не вижу куда дальше развивать это устройство.
Тема закрыта?..
Эти резисторы выполняют роль балластных. Они уравнивают токи через сегменты индикатора. Можно конечно их не ставить, но тогда, во-первых, сегменты индикатора могут светиться с разной яркостью (так как яркость зависит от тока, а не напряжения), а во-вторых, яркость будет зависеть от количества одновременно зажженных сегментов.
Может обоснуете? Купил индикаторы(заказал) они оказались маленькие — где-то пол дюйма, резисторы некуда впихнуть, так в чем разница, куча резисторов или один стабилизатор вольта так на 2.
Не желательно.
Уважаемый автор! А нельзя как нибудь обойтись без такого количества резисторов, например понизив напряжение питание анодов?
Он программный http://www.getchip.net/posts/046-programmnyjj-uart-dlya-attiny13/
Здравствуйте. Скажите, откуда в тини13 появился УАРТ?
индикаторы загораются как только я включаю питание, не запустив терминал….Но на команды терминала они не реагируют
Да
я правильно понимаю что на переходник уарт-юсб идут только три провода это: рхд, тхд и гнд?
Спасибо. Буду думать.
Если говорить о конкретном данном устройстве — тут два варианта:
1 написать прогу на компе которая будет периодически выдавать через СОМ порт строку с временем типа «12.34»;
2 или собрать на микроконтроллере устройство, которое будет делать тоже самое только по UART.
Конечно, лучший вариант собрать часы уже сразу с такими индикаторами, а не делать два раздельных устройства.
Но как отображать постоянно часы? Т.е типа настенных часов с синхронизацией с компьютером?
Алгоритм работы:
http://www.getchip.net/posts/049-drajjver-linejjki-7-segmentnykh-indikatorov-na-attiny13-begushhaya-stroka/
Работа с терминалом очень проста набираешь на клавиатуре строку, нажимаешь Enter — все.
И ешё. Как должна выглядеть эта строка?
А как её «скармливать»? Я с Терминалом не работал никогда. Может подскажите?
Конечно можно, только нужно строку с временем «скармливать» по UART этому устройству
Замечательный проэкт. Можно ли с помощью этого устройства на бегушей строке отображать время? Т.е нужны часы с синхронизацией от сервера.
А у вас нет схемы чтобы сделать индикацию для Блока Питания для контроля выходного напряжения
В будущем такое есть, но не очень скоро. Вот разгребу текущие проекты …
Проект хороший! Захотелось повторить поиграться ).Такой вопрос. А нету в планах вместо семисегментника прикрутить матрицы светодиодные тогда получится клевая бегущая безразмерная строка.
Вы, наверно, имели в виду, чтобы драйвер автоматически прекращал вывод если нет изменений информации? Я об этом как-то не задумывался. Так, действительно, визуально более приятней будет смотреться. Нужно будет в следующей версии такой алгоритм работы предусмотреть.
Спасибо за подсказку.
Это я изначально предусмотрел введя в алгоритм работы команду «(» запрещающую автоматический вывод. Посылка типа «( сообщение !» будет мгновенно отображать сообщение без последующих обновлений (а значит и мерцаний.
если горячая замена не нужна, то тогда есть смысл сделать обновление регистров только при смене отображаемой информации. тогда пропадет мерцание(довольно сильное судя по видео) и можно оставить 164 регистры.
Для горячей замены, конечно, трудно найти практическое применение. Горячую замену я рассматриваю как интересный побочный эффект данной реализации драйвера, а не как какоето достоинство.
А вот у разборности (модульности) довольно широкое практическое применение. Так как модули можно сделать разных цветов, то в зависимости от целей применения можно складывать сообщения с выделением цветом какого либо участка.
Вот, например, так:
1.00 USD — 8.12 ГРН -курсы валют
15.09.2010 CPEDA -календарь
_ _ _ooo000 -полоса опасности
count 37 -счетчик
а где и для чего на практике может применяться эта конструкция. я имею ввиду именно разборность?? для каких целей может пригодиться горячая замена?
Насчет 595-регистра согласен, мерцания не будет вообще. И, скорей всего, следующая версия драйвера (она уже назревает) будет на ATtiny2313 и с сигналами OE и LE. Это позволит применять как 595-регистр, так и специальные драйвера светодиодов.
Что касательно данной реализации, то я преследовал цель ужаться в ATtiny13, получив максимальную функциональность в ограниченных условиях. В данном девайсе еще будет реализовано устройство ввода (в печатке драйвера я это уже заложил). Под устройство ввода заберется и линия OE.
вместо регистров НС164 можно применить АС164. у него стандартные токи АС серии — 20 ма на выход (правда общий 100ма). можно смело 15ма на разряд пихать. есть еще какая-то серия, с общем током 160ма, и 20 ма на вывод, но я уже не вспомню какая. а вообще в такие схемы просятся 595 регистры. на один проводок больше, зато без мерцания. ведь если задача передергивать на ходу, следовательно раз 5 в сек нужно обновлять всю линейку, и «мусор» сдвига будет заметен.