В этой статье пойдет речь о некоторых, на мой взгляд, немаловажных аспектах организации динамической индикации (далее ДИ) на 7-сегментных LED индикаторах для микроконтроллерных систем. Ее можно рассматривать как продолжение и дополнение ранее опубликованной моей статьи.
В самом начале коснемся вопроса, который часто вызывает споры на форумах, а именно, насколько эффективна ДИ с точки зрения субъективной яркости по сравнению со статической индикацией, при условии равенства среднего тока, протекающего через сегмент индикатора (эффективность ДИ с позиции аппаратных затрат, я думаю, очевидна). Чтобы расставить все точки над «i» в данном вопросе, была собрана на макетной плате простая схема на МК PIC12F629, изображенная на схеме.
В этой простейшей схеме реализована индикация стилизованной буквы «С» таким образом, что через нижний сегмент (“d”) проходит постоянный ток 1 мА, далее снизу вверх: через сегмент “e” протекает ток 2 мА со скважностью 2, через сегмент “f” – ток 4 мА со скважностью 4 и, наконец, через сегмент “a” – ток 8 мА со скважностью 8. В итоге, имеем средний ток через каждый сегмент в 1 мА, но при разных скважностях от 1 до 8. Во вложении прилагается модель Proteus, в котором, при помощи логического анализатора, можно убедиться, что сигнал подается вышеописанным способом. Резисторы подобраны так, что обеспечиваются указанные токи (с учетом того, что падение напряжения на светодиоде при токах 1-4 мА примерно равно 1.8 В, а при 8мА – около 1.9 В). Ниже приведены фотографии свечения индикатора, как для указанных токов, так и для примерно в два раза меньших при напряжении питания 3.3 Вольт.
Как оказалось, субъективно видимая яркость свечения сегментов практически одинакова во всех четырех случаях (показалось, что есть едва-едва уловимое уменьшение яркости при возрастании тока и скважности, но оно настолько мало заметно, что я не уверен, что ее существование не плод моей фантазии). Исходя из этого эксперимента, утверждаю, что не правы как те, кто утверждает о субъективном снижении яркости, так и те, кто говорит о ее возрастании. ПРИ ОДНОМ И ТОМ ЖЕ СРЕДНЕМ ТОКЕ ЧЕРЕЗ СЕГМЕНТ ЯРКОСТЬ ПРИМЕРНО ОДИНАКОВА КАК ДЛЯ СТАТИЧЕСКОЙ ИНДИКАЦИИ, ТАК И ДЛЯ ДИНАМИЧЕСКОЙ ПРИ СКВАЖНОСТИ ОТ 1 ДО 8 . На том и закончим с этим вопросом.
Современные светодиодные индикаторы, особенно типов “Super Red” и “Hi Red”, начинают светиться вполне достаточно для помещений уже при токах от 0.5 мА. С учетом этого фактора возникает соблазн организовать ДИ без применения дополнительных ключей, управляя разрядами непосредственно с портов МК, например, как на нижеприведенной схеме.
При этом, ограничительные резисторы подбираются такого номинала, чтобы на «разрядных» выходах суммарный ток не превышал допустимый выходной ток вывода. Тут следует отметить, что хотя существуют разного рода доводы о допустимости превышения выходного тока на «разрядных» выходах ввиду большой скважности протекающего через них тока, я сторонник того, чтобы придерживаться Datasheet производителей, а в них (по крайней мере у Microchip) об этом ничего не сказано, для PIC - это максимум 25 мА. Исходя из этого, скажем так «правильные разработчики» выбирают номинал токоограничительного резистора таким, чтобы ток сегмента был не более 3мА (тогда 8 сегментов, включая точку, в сумме дадут 24 мА). При этом, обычно пользуются
формулой (1) R=(Upp-Uled)/I,
где Upp – напряжение питания, Uled – падение напряжения на сегменте индикатора, I – ток через сегмент. По ней для Upp=5V и принимая для индикатора красного цвета свечения Uled=1.8V, получают R=(5-1.8)/3=1.067кОм, ближайший из ряда - 1.1кОм.
Однако, получаемый номинал, как будет показано ниже, завышен и ток получится меньше 3 мА, что не очень хорошо в ситуации дефицита тока, а значит, яркости сегмента. Дело в том, что формула (1) не учитывает выходного сопротивления порта, а он имеет значение, особенно для «разрядных» выводов, через которые протекает предельный ток, а значит и падает существенное напряжение. К сожалению, я не нашел в Datasheet для PIC среднего семейства точной величины выходного сопротивления порта. Косвенные вычисления, исходя из сведений из Datasheet, а так же прямые измерения на конкретных чипах, дают результат примерно: при напряжении питания 5V – 20 Ом для состояния порта «0» и 60 Ом для состояния «1», при напряжении питания 3V – соответственно 30 Ом и 80 Ом. В дальнейших выкладках будем ориентироваться на эти значения.
С учетом сопротивлений выходных каналов имеем для расчета резистора для требуемого тока сегмента
формулу (2) R = (Upp – Uled - I*N*Rout) / I – Rseg, где N – число включенных разрядов, Rout– выходное "разрядное" сопротивление, Rseg - выходное "сегментное" сопротивление.
Из этой формулы для вычисления тока сегмента для данного ограничительного сопротивления получим
формулу (3) I = (Upp – Uled) / (R + N*Rout+Rseg).
Вычисляя требуемый для тока 3мА резистор по формуле (2), получим: 846 Ом (ближайший – 820 Ом) для индикатора с ОК и 576 Ом (ближайший 560 Ом) для индикатора с ОА. Согласитесь, было бы обидно установить ток сегмента на 30 – 40 % меньше возможного, когда «каждый миллиампер на счету».
Для более низких напряжений питания эта разница еще больше. Так для питания в 3 Вольта для сегментного тока в 3мА по формуле (2) даже для индикатора с ОК имеем R=(3-1.8-8*30*0.003)/0.003-80=80 Ом, тогда как по упрощенной формуле (1) мы бы имели 400 Ом, то есть ток был бы 1.67 мА вместо допустимых 3 мА!!
Полученное значение R=80 Ом и формула (3) говорят о том, что для низких питающих напряжений максимальные токи определяются уже в большей степени Rout, чем R. Это может означать при разном количестве горящих сегментов (разных индицируемых знаках) разные токи через них и разную их яркость. Например, вычислим для Upp=3V и R=80 Om ток через один сегмент для цифр 1 (светятся два сегмента) и 8 с точкой (8 сегментов) для индикатора с ОК по формуле (3):
I(1) = (3-1.8)/(80+2*30+80) = 5.5 mA
I(8.)= (3-1.8)/(80+8*30+80) = 3 mA
Как видим, разница почти в два раза – это будет довольно заметно, но в некоторых случаях приемлемо. Для уменьшения неравномерности придется уменьшить ток сегмента или же увеличить напряжение питания хотя бы до 3.3 В (разница в токах примерно в 1.5 раза).
Для наблюдения разницы яркости при токах через сегмент в 1, 2 и 4 мА, соответствующие выводы резисторов с выходов PIC12F629 были переключены непосредственно на плюсовую шину.
В заключении, коснемся еще одного вопроса, также нередко обсуждаемого на просторах Интернета – схем, где индикатор подключен к микроконтроллеру вообще без токоограничивающих резисторов, напрямую как сегменты, так и разряды. Исходя из формулы (3), кажется, что это в принципе возможно для малых питающих напряжений. Действительно, для Upp=3V и R=0 имеем:
I(1)=(3-1.9)/(2*30+80)=7.9 mA, I(8.)=(3-1.8)/(8*30+80)=3.8 mA для индикатора с ОК.
I(1)=(3-1.9)/(2*80+30)=5.8 mA, I(8.)=(3-1.8)/(8*80+30)=1.8 mA для ОА.
Из формул видно, что для индикатора с ОК суммарный ток разрядов превышает допустимый 3.8*8=30.4 мА, но разность яркости 1 и 8 всего в 2 раза. Для ОА ток вполне в пределах нормы, но вот разница в токах сегментов для цифр 1 и 8 слишком велика – в 3 раза, а значит, визуально 1 будет светиться существенно ярче, чем 8, 9 или 6. Вывод: все таки, резисторы нужны при любом напряжении питания.
Надеюсь, изложенные в статье соображения будут кому-то полезными при разработке систем с ДИ.
В приложении кроме упомянутой модели имеется прошивка для тестовой схемы и код в MikroC.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
U1 | МК PIC 8-бит | PIC12F629 | 1 | Поиск в магазине Отрон | ||
HL1 | Индикатор | FYQ5631A | 1 | Поиск в магазине Отрон | ||
R1 | Резистор | 3.3 кОм | 1 | Поиск в магазине Отрон | ||
R2 | Резистор | 1.6 кОм | 1 | Поиск в магазине Отрон | ||
R3 | Резистор | 820 Ом | 1 | Поиск в магазине Отрон | ||
R4 | Резистор | 360 Ом | 1 | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- din_ind.rar (14 Кб)
Комментарии (24) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
Для устранения проблем с изменяющейся яркостью, можно применить посегментную динамическую индикацию. Так же, уходит проблема в применении индикаторов ОК и ОА.
При использовании ультраяркого индикатора с прямым падением в 2.4В(зеленый), ток одного вывода порта будет в пределах допустимого , даже при питании МК напряжением 4.2В(литиевый аккумулятор).
(4.2 – 2.4)/(30+40)=0,0257А – для статического режима.
(30+40) – Ваши данные выходного сопротивления для порта. В цепи участвуют два порта, один коммутирует сегменты, второй разряды.
Для трехразрядного индикатора с посегментной индикацией, постоянный ток для одного пина будет в три раза меньше, - порядка 9мА.
P.S. В течении трех лет использую трехразрядный (посегментная) термометр с питанием от литиевого аккумулятора. Мгновенный ток одного пина около 40мА
Пока нареканий нет, работает…
[Автор]
[Автор]
Насчет превышения пиковым током предельного для вывода в 2 раза, я в статье упоминал: считаю, что это в ущерб надежности и работа одного отдельно взятого устройства несколько лет мало что доказывает. Хотя, конечно, для любительских конструкций такие решения наверное имеют право на жизнь.
По поводу надежности,- думаю, производители перестраховались раза в два, когда заявили о пределе в 25мА на ногу. Зачем им неприятности.
Сам стараюсь придерживаться "как положено", но постоянно тянет в сторону.
Нашел видео, там даже не 3, а 4 разряда. Если снизить ток в половину, то яркость останется еще приемлемая.
[Автор]
Похоже, с током через порты ошибался. По измерениям получилось всего 16.4мА
На картинке все расписано.
[Автор]
Но вернемся к выходному сопротивлению. Я, под впечатлением выкладок Vintik-а, тоже не поленился и еще раз провел измерения на PIC12F629 в статическом состоянии по схеме: порт в состоянии "1" - резистор - светодиод - порт в состоянии "0". Оказалось, что я сильно ошибался (не пойму как так получилось) в выходном сопротивлении порта в состоянии логического 1. При токе 10 мА получил такие значения: питание 5В - состояние "0" - 20 Ом, состояние "1" - 60 Ом; питание 3В - состояние "0" - 30 Ом, состояние "1" - 80 Ом.
Уже отправил на модерацию измененную в соответствии с этими данными статью.
Может ее нужно понимать, как прямое управление светодиодами, при условии не превышения тока одного порта(200мА) или одной ножки(25мА)?
Выходит, в нашем случае можно обходиться без резисторов.
-----
Период обновления индикатора 4.096мс. Соответственно, один разряд 1.024мс, сегмент 128мкс
[Автор]
Еще, хотелось бы узнать Ваше мнение по ниже приведенной моей "выкладке".
Возьмем простой стеклянный плавкий предохранитель. Допустим, перегорает он при токе 5А за 0.1сек.
Ток, проходя по плавкой вставке в течение 0.1 сек, совершает работу, выделяющуюся в виде тепла достаточного для ее расплавления.
Но на токе 2.5А, предохранитель работает годами,- выделяемое тепло успевает отводиться через контакты.
А если пропустить ток в два раза больше(10А) максимального, но длительностью в 10 раз меньше(0.01сек), предохранитель сгорит? Нет, ток выполнит работу в два раза меньшую от необходимой для расплавления плавкой вставки. Но, максимальный ток превышен в два раза, и запас остался, и тепло успевает отводиться.
Вернемся к драйверам портов.
Выход порта собран на полевых транзисторах, смотрим импульсный ток на любой попавшийся полевой транзистор. Он будет больше, как минимум в 4 раза от номинального. Не думаю, что "микрочиповцы" применяют транзисторы сделанные из другого "теста".
Собственно из вышеперечисленных соображений считаю, что ток на одну ножку безболезненно можно увеличить до 50ма, при скважности равной четырем.
П.С. Из личного опыта: Бывали случаи "корочения" выхода (по ошибке монтажа) на землю, - корпус МК нагревался. После устранения ошибки, выход работал без изменения своих характеристик. Запас прочности все-таки есть.
[Автор]
По Вашим выкладкам. Вы совершенно правы, что при увеличении тока в 2 раза и скважности 4 количество выделяющегося тепла не изменится. А так же оно не изменится при увеличении тока в 10 раз и скважности 100 и т.д., но это же не означает, что это допустимо! К тому же, проблема в том, что предельные 25 мА вывода, указанные в datasheet от Microchip, в некотором смысле уже пиковое значение - там есть примечание, что это предельные значения и долговременная работа в этом режиме не предусмотрена (см. прикрепленный файл).
Лично мое мнение: мы можем изготовить для себя некое устройство с некоторым превышением предельных параметров и оно, вероятно, будет долго нас радовать своей работой, но когда мы публикуем схему для повторения другими, мы не имеем права на такие вольности.
Еще раз спасибо за интерес к статье!
Но все равно, спасибо, за высказанное мнение.
[Автор]