В этой статье пойдет речь о некоторых, на мой взгляд, немаловажных аспектах организации динамической индикации (далее ДИ) на 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 Вольт.
Как оказалось, субъективно видимая яркость свечения сегментов практически одинакова во всех 4-х случаях (показалось, что есть едва-едва уловимое уменьшение яркости при возрастании тока и скважности, но оно наслишь мало заметно, что я не уверен, что ее существование не плод моей фантазии). Исходя из этого эксперимента, утверждаю, что не правы как те, кто утверждает о субъективном снижении яркости, так и те, кто говорит о ее возрастании. ПРИ ОДНОМ И ТОМ ЖЕ СРЕДНЕМ ТОКЕ ЧЕРЕЗ СЕГМЕНТ ЯРКОСТЬ ПРИМЕРНО ОДИНАКОВА КАК ДЛЯ СТАТИЧЕСКОЙ ИНДИКАЦИИ, ТАК И ДЛЯ ДИНАМИЧЕСКОЙ ПРИ СКВАЖНОСТИ ОТ 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-битPIC12F6291
HL1
ИндикаторFYQ5631A1
R1
Резистор3.3 кОм1
R2
Резистор1.6 кОм1
R3
Резистор820 Ом1
R4
Резистор360 Ом1
Добавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- din_ind.rar (14 Кб)