Я рассмотрел два метода, и мультиплексирование действительно имеет только одно преимущество: легче отследить неисправный светодиод, чем в массиве Charlieplex.
Может ли кто-нибудь более знающий объяснить другие компромиссы?
Я рассмотрел два метода, и мультиплексирование действительно имеет только одно преимущество: легче отследить неисправный светодиод, чем в массиве Charlieplex.
Может ли кто-нибудь более знающий объяснить другие компромиссы?
Ответы:
Да, мультиплексирование и чарлиплексирование имеют свои преимущества и лучше всего подходят для различных задач.
Основным преимуществом Чарлиплексирования является то, что его можно выполнять на микроконтроллере среднего размера, используя больше светодиодов с меньшим количеством выводов ввода / вывода и, возможно, не используя никаких внешних аппаратных средств, кроме светодиодов.
Теперь преимущество «без внешнего оборудования» применимо только к относительно небольшому количеству светодиодов, до тех пор, пока вы не достигнете предела тока вашего микроконтроллера, и это накладывает ограничение по яркости, которого нет у мультиплексированных массивов. Если вы решите не использовать внешнее оборудование, вы обычно ограничиваетесь включением только одного светодиода в матрицу в любой момент - в отличие от мультиплексированного массива, в котором вы управляете полной строкой за раз.
Как только вы добавите внешнее оборудование для управления светодиодами с более высокой яркостью, чтобы соответствовать яркости мультиплексированного массива, charlieplexing теряет свой блеск.
Во-первых, мультиплексированный массив адресован строго по строке и столбцу; это очень просто сделать. Включите строку 1, включите все столбцы для строки 1, выключите строку 2, включите все столбцы для строки 2 и т. Д. Напротив, массив Чарлиплекса гораздо менее прост. Всегда есть диагональная строка, которая бесполезна, и я лично использую справочные таблицы для связи между моими массивами и прямоугольным массивом, где я храню свои данные.
Во-вторых, убийцей является то, что для чарлиплексирования обычно требуются драйверы с тремя состояниями. Однако мультиплексирование выполняется со строгой двоичной логикой включения-выключения. Если у вас микроконтроллер с низким числом выводов и вы хотите управлять большим количеством светодиодов, то просто использовать внешние логические микросхемы (например, сдвиговый регистр и / или драйверы светодиодов) для управления осями X и Y. Большинство микросхем регистра сдвигового регистра не поддерживают тристатирование, необходимое для того же действия в массиве Чарлиплекса. Доступны специальные драйверы Charlieplexed, но они не так универсальны.
В-третьих, в массиве Charlieplexed каждый вывод, который не активно что-то делает, все еще подключается к светодиодам через слабое («высокое сопротивление») соединение. И хотя соединение слабое, оно ненулевое. Предположим, что у вас есть 25 выводов ввода / вывода, подключенных к сетке светодиодов. Если вы зажжете один светодиод - взяв одну из этих 25 линий высотой и одну из этих 25 линий низко, это оставит 23 линии с высоким импедансом. В каждом месте, где высокая линия ввода / вывода проходит через светодиод к нейтральной линии, есть некоторая возможность утечки тока. Немного. Может быть, микроампер здесь или там. Но с современными, эффективными светодиодами этого часто достаточно, чтобы создать видимые побочные эффекты.
В-четвертых, управлять яркостью светодиодов в массиве Чарли сложно. В мультиплексированном массиве вы можете использовать любое количество общедоступных микросхем светодиодов драйвера для регулирования тока, которые регулируют яркость каждого столбца в отдельности, используя регулировку тока в сочетании с драйвером ШИМ. В той степени, в которой местоположения матрицы Чарлиплекса адресуются индивидуально и используют только резистор на строку или столбец, гораздо труднее выполнить точечную коррекцию яркости и полную анимацию градаций серого / цвета в массиве Чарлиплекс.
Наиболее существенным недостатком светильников "Charlieplexing" является то, что он ограничивает количество светодиодов, которые можно использовать с n-way мультиплексированием, до n (n-1). Я не вижу требования к драйверу с тремя состояниями как большую проблему с техникой в целом. Конечно, необходимость использования двух обычных драйверов вместо драйвера с тремя состояниями уменьшит выгоду от CharliePlexing, но в некоторых случаях преимущества все же могут остаться (например, это может уменьшить количество соединительных проводов между панелью с драйверами и панелью с огни или выключатели).
Что касается коммутаторов Charlieplexing, в статье Википедии не упоминается самый большой недостаток: Charlieplexing не позволяет контроллеру пассивно ожидать нажатия кнопки. С другой стороны, он слишком пессимистичен в отношении требований к компонентам. В 1997 году я выпустил устройство, которое сканирует восемь кнопок с использованием трех выводов ввода-вывода и одного вывода только для ввода на PIC12C508, без необходимости в каких-либо внешних диодах или других компонентах, кроме IIRC, подтягивания для вывода PIC, который не иметь один встроенный; При таком подходе можно было бы обработать десять кнопок с добавлением другого подтягивающего резистора (для другого вывода ввода / вывода, у которого его нет), но клиенту нужно всего восемь кнопок, поэтому в этом не было необходимости.