ЭФО предлагает со своего склада новую серию преобразователей интерфейсов USB UART компании FTDI FT232RNL-REEL

Повышение эффективности использования цифровых линий ввода/вывода микроконтроллеров

Журнал РАДИОЛОЦМАН, июнь 2011

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Vasile Surducan и Emanoil Surducan

Мультиплексирование линий ввода/вывода микроконтроллеров и управление светодиодным индикатором

Очень часто разработчики устройств на микроконтроллерах или программируемых устройствах сталкиваются с проблемой нехватки цифровых линий ввода/вывода при подключении многоразрядных светодиодных индикаторов. Особенно острой становится проблема при необходимости реализации в устройстве кнопочной клавиатуры, наряду с индикаторами и другой периферией. С целью экономии портов микроконтроллера в таких случаях прибегают к использованию различной техники мультиплексирования линий ввода/вывода, которые имеют свои преимущества и недостатки.

К таковым методам мультиплексирования цифровых линий ввода/вывода относится Charlieplexing (мультиплексирование «методом Чарли») или Gugaplexing.

Чарли Аллен (Charlie Allen) разработал метод Charlieplexing, работая в компании Maxim, которая с тех пор выпускает микросхемы, реализующие алгоритм Чарли. Аллен использовал высокоимпендансное третье состояние выводов, реализованное во многих микропроцессорах, для выключения светодиодов в матрице, в то время как включение отдельных светодиодов производится путем подачи на соответствующие выводы микропроцессора сигналов высокого и низкого уровня.

Gugaplexing – это новый метод мультиплексирования линий ввода/вывода, и, в сравнении с Charlieplexing, позволяет управлять вдвое большим числом светодиодов при добавлении в схему нескольких дополнительных компонентов.

В общем случае они позволяют подключить 8-разрядный семисегментный светодиодный индикатор, используя всего 9 линий ввода/вывода. Однако, при разработке следует учитывать, что при таком мультиплексировании имеет место низкий коэффициент заполнения, и поэтому требуется наличие драйвера между микроконтроллером и индикатором для достижения высокой видимости символов на индикаторе.

Схема на рисунке 1 использует 8+N/2 линий ввода/вывода для подключения N-разрядного семисегментного индикатора, наряду с восемью кнопками на этой же шине. Стоит заметить, что данная реализация не требует использования драйвера для индикатора и можно использовать ее с любыми программируемыми устройствами и микроконтроллерами, допускающими непосредственное подключение светодиодов к портам, например с микроконтроллерами Atmel или Microchip.

Схема: подключение разных индикаторов и кнопок к одной шине
Кликните для увеличения
Рисунок 1. Индикатор с общим анодом, индикатор с общим катодом и кнопки могут быть подключены к одной шине.

На схеме резисторы R8 – это токоограничительные резисторы для индикатора IC1 (CA56-12HWA) с общим анодом и для индикатора IC2 (CA56-12SRWA) с общим катодом. Допускается любая комбинация стандартных и ультраярких индикаторов IC1/IC2, однако потребуется корректный выбор коэффициента заполнения в программном обеспечении. Резисторы R7 и импульсные диоды D1-D8 (1N4148) используются для исключения подсвечивания выключенных сегментов индикаторов (Antighostig). Появление такого эффекта (Ghosting) – слабое свечение выключенных сегментов – связано с переключением (мультиплексированием) и появлением кратковременных импульсных помех, или с несоответствующими уровнями напряжений на выводах управления, когда эти выводы находятся в высокоимпедансном состоянии (Z-состояние). Такой эффект – результат использования всех линий ввода/вывода: высокий, низкий и высокоимпедансный логический уровень выхода, переключение между ними в последовательности бесконечного цикла программы (см. Таблицу 1).

Рисунок 2. Без резисторов R7 видно подсвечивание выключенных сегментов индикатора (слева).
С резисторами R7 такого эффекта не наблюдается, даже при нажатии кнопок S1-S
3

Нижеследующее выражение позволит вычислить значение резисторов R7:

R7=(VSAFE – 0.6 В)/10IGHOST,

где

  • 0.6 В – падение напряжения на диодах D1-D8, измеренное при температуре 25 °С;
  • IGHOST – пороговое значение статического тока утечки, при котором подсвечивание выключенных сегментов заметно, но минимально;
  • VSAFE – потенциальное значение напряжения, которое может появиться на любом сегменте, когда сегмент не включен.

Таблица 1. Последовательность переключений для индикаторов

Последова-
тельность
Включенный
символ на
индикаторе
Чтение
кнопок
Общие выводы, кнопки
Шина сегментов
A, B, … Dp
AK1
AK2
AK3
AK4
1
IC1 – 1
Z
Z
Z
Z
выход
низкий уровень=данные
2
IC1 – 2
Z
1
Z
Z
3
IC1 – 3
Z
 Z
1
Z
4
IC1 – 4
Z
 Z
Z
1
5
Да
1
 вход
6
IC2 – 5
0
 Z
 Z
Z
 
выход
высокий уровень=!данные
 
 
7
IC2 – 6
Z
 0
 Z
 Z
8
IC2 – 7
 Z
 Z
 0
 Z
9
IC2 – 8
 Z
 Z
 Z
 0
 

Обозначение логических уровней в таблице:

Z – высокоимпедансное состояние;
1 – высокий уровень;

0 – низкий уровень.

Пользователи могут найти значение IGHOST экспериментально при внешнем освещении менее 10 люкс, подав небольшой ток на отдельный сегмент индикатора и наблюдая за значением тока и падением напряжения на сегменте в момент, когда сегмент начинает светиться. Для ультраярких индикаторов значение IGHOST должно быть приблизительно 70 мкА. Ток IGHOST создает нежелательное падение напряжения VGHOST:

VGHOST=1.54 В и VSAFE≤kVGHOST,

где k – доверительный коэффициент в диапазоне 0.5 – 0.7, компенсирующий напряжение VGHOST дисперсии индикатора. В нашем примере значение VSAFE = 0.7 В для ультраяркого индикатора и 1 В для стандартного индикатора. Если будет использоваться комбинация из стандартного и ультраяркого индикатора, то необходимо выбрать меньшее значение VSAFE для вычисленного значения R7.

Чтение кнопок представляет собой асинхронную процедуру, в отличие от цифрового мультиплексирования; таким образом любая комбинация нажатия кнопок не должна включать сегменты индикаторов. Резисторы R1, R2, R3 ограничивают ток через сегменты индикатора IC1 ниже IGHOST при включенном транзисторе Q1 и высоком уровне на выводе AK1. Резистор R6 удерживает транзистор закрытым, даже когда выход AK1 находится в высокоимпедансном состоянии. Резистор R4 ограничивает ток коллектора транзистора.

Также следует отметить, что во время чтения кнопок должны быть включены внутренние подтягивающие резисторы микроконтроллера по линиям A, B и C.

Загрузки

Демонстрационная программа для микроконтроллера PIC16F886 (исходный код, подключение индикаторов по схеме на рисунке 1) – скачать

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Increase efficiency in embedded digital-I/O lines

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя