051-Демострация: 049-Драйвер линейки 7-сегментных индикаторов на ATtiny13 (бегущая строка).

Автор: | 02.09.2010

Ранее я описал устройство вывода — драйвер линейки 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-driver+block - Печатка для драйвера и блока линейки 7-сегментного индикатора
049-7Seg-shem - Схема драйвера линейки индикаторов
ATTiny13.pdf - Даташит для ATTiny13/13V
RL-S10-SERIES - Даташит на дюймовый 7-сегментный индикатор
74HC164 - Даташит на сдвиговый регистр
Terminal v1.0 - Программа для работы с COM портом

Смотрим также:
Описание устройства линейки 7-сегментных индикаторов.


(Visited 1 655 times, 2 visits today)

051-Демострация: 049-Драйвер линейки 7-сегментных индикаторов на ATtiny13 (бегущая строка).: 31 комментарий

  1. neon-f

    вместо регистров НС164 можно применить АС164. у него стандартные токи АС серии — 20 ма на выход (правда общий 100ма). можно смело 15ма на разряд пихать. есть еще какая-то серия, с общем током 160ма, и 20 ма на вывод, но я уже не вспомню какая. а вообще в такие схемы просятся 595 регистры. на один проводок больше, зато без мерцания. ведь если задача передергивать на ходу, следовательно раз 5 в сек нужно обновлять всю линейку, и «мусор» сдвига будет заметен.

  2. GetChiper Автор записи

    Насчет 595-регистра согласен, мерцания не будет вообще. И, скорей всего, следующая версия драйвера (она уже назревает) будет на ATtiny2313 и с сигналами OE и LE. Это позволит применять как 595-регистр, так и специальные драйвера светодиодов.

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

  3. neon-f

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

  4. GetChiper Автор записи

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

    1.00 USD — 8.12 ГРН -курсы валют

    15.09.2010 CPEDA -календарь

    _ _ _ooo000 -полоса опасности

    count 37 -счетчик

  5. neon-f

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

  6. GetChiper Автор записи

    Это я изначально предусмотрел введя в алгоритм работы команду «(» запрещающую автоматический вывод. Посылка типа «( сообщение !» будет мгновенно отображать сообщение без последующих обновлений (а значит и мерцаний.

  7. GetChiper Автор записи

    neon-f :

    есть смысл сделать обновление регистров только при смене отображаемой информации

    Вы, наверно, имели в виду, чтобы драйвер автоматически прекращал вывод если нет изменений информации? Я об этом как-то не задумывался. Так, действительно, визуально более приятней будет смотреться. Нужно будет в следующей версии такой алгоритм работы предусмотреть.
    Спасибо за подсказку.

  8. Bass85

    Проект хороший! Захотелось повторить поиграться ).Такой вопрос. А нету в планах вместо семисегментника прикрутить матрицы светодиодные тогда получится клевая бегущая безразмерная строка.

  9. GetChiper Автор записи

    В будущем такое есть, но не очень скоро. Вот разгребу текущие проекты …

  10. kc3

    А у вас нет схемы чтобы сделать индикацию для Блока Питания для контроля выходного напряжения

  11. nick458

    Замечательный проэкт. Можно ли с помощью этого устройства на бегушей строке отображать время? Т.е нужны часы с синхронизацией от сервера.

  12. GetChiper Автор записи

    Конечно можно, только нужно строку с временем «скармливать» по UART этому устройству

  13. nick458

    А как её «скармливать»? Я с Терминалом не работал никогда. Может подскажите?

  14. nick458

    И ешё. Как должна выглядеть эта строка?

  15. nick458

    Но как отображать постоянно часы? Т.е типа настенных часов с синхронизацией с компьютером?

  16. GetChiper Автор записи

    Если говорить о конкретном данном устройстве — тут два варианта:
    1 написать прогу на компе которая будет периодически выдавать через СОМ порт строку с временем типа «12.34»;
    2 или собрать на микроконтроллере устройство, которое будет делать тоже самое только по UART.

    Конечно, лучший вариант собрать часы уже сразу с такими индикаторами, а не делать два раздельных устройства.

  17. nick458

    Спасибо. Буду думать.

  18. h12002

    я правильно понимаю что на переходник уарт-юсб идут только три провода это: рхд, тхд и гнд?

  19. GetChiper Автор записи

    Да

  20. h12002

    индикаторы загораются как только я включаю питание, не запустив терминал….Но на команды терминала они не реагируют

  21. Vinnie

    Здравствуйте. Скажите, откуда в тини13 появился УАРТ?

  22. superlemur

    Уважаемый автор! А нельзя как нибудь обойтись без такого количества резисторов, например понизив напряжение питание анодов?

  23. GetChiper Автор записи

    Не желательно.

  24. superlemur

    Может обоснуете? Купил индикаторы(заказал) они оказались маленькие — где-то пол дюйма, резисторы некуда впихнуть, так в чем разница, куча резисторов или один стабилизатор вольта так на 2.

  25. GetChiper Автор записи

    Эти резисторы выполняют роль балластных. Они уравнивают токи через сегменты индикатора. Можно конечно их не ставить, но тогда, во-первых, сегменты индикатора могут светиться с разной яркостью (так как яркость зависит от тока, а не напряжения), а во-вторых, яркость будет зависеть от количества одновременно зажженных сегментов.

  26. GetChiper Автор записи

    Я не вижу куда дальше развивать это устройство.

  27. VITALYA

    Под другие сдвиговые. С задействованной линией ое.)
    ТинибТини25 б работать в этой плате и с этой прошивкой? А то впаял и прошилпо ошибке 25…
    Спасибо за разработки, все которые повторил с Вашего сайта, работают без плясок с бубном)

  28. GetChiper Автор записи

    Если я и буду что-то делать с этим устройством, так это перевод его на драйвера MAX7219-MAX7221, портирование на мегу и подключение CD-карты, для воспроизведения текстовых файлов.

Добавить комментарий