Charlieplexing (также известный как мультиплексирование с тремя состояниями , мультиплексирование светодиодов с уменьшенным количеством выводов , дополнительный привод светодиодов и кроссплексирование ) — это метод доступа к большому количеству светодиодов , переключателей , микроконденсаторов или других объектов ввода-вывода с использованием относительно небольшого количества логических проводов с тремя состояниями от микроконтроллера . Эти объекты ввода-вывода могут быть подключены как дискретные компоненты, [1] [2] массивы x/y, [3] [4] или сплетены в диагонально пересекающийся рисунок для формирования диагональных массивов. [5]
Самый простой способ адресовать отдельный пиксель (или кнопку ввода) — это протянуть к нему провод и еще один провод обратно к земле, но это требует много проводов. Небольшое улучшение — вернуть все на общую землю, но это все равно требует одного провода (и одного контакта на микроконтроллере) для каждого пикселя или кнопки. Для массива X на Y требуются контакты X*Y.
С тремя логическими выводами (высокий, низкий, отключенный) для матричной разводки требуются только выводы и провода X+Y. Каждый X и каждый Y по очереди включаются и отключаются; недостатком является то, что каждый индикатор запитан не более 1/(X*Y) времени. Если есть достаточно разветвления , выводы Y можно оставить всегда включенными, и все они будут проверяться параллельно. Затем обновление может происходить каждые 1/X времени, но каждый провод X должен пропускать достаточно тока, чтобы зажечь Y индикаторов одновременно.
Charlieplexing — это дальнейшее усовершенствование матричной разводки. Вместо того, чтобы горизонтальные провода X встречались с вертикальными проводами Y, каждый провод встречался с каждым другим проводом. Если предположить, что для соединений используются диоды (чтобы различать провод 3, встречающийся с проводом 5, и провод 5, встречающийся с проводом 3), Charlieplexing требует всего лишь около половины контактов, чем обычное матричное расположение, за счет более сложного отображения. В качестве альтернативы, то же количество контактов будет поддерживать дисплей почти в четыре раза больше (удваиваясь в обоих направлениях).
Это позволяет подключать эти объекты ввода-вывода (светодиоды, переключатели и т. д.) между любыми двумя вводами-выводами микроконтроллера - например, при 4 вводах-выводах каждый ввод-вывод может быть сопряжен с 3 другими вводами-выводами, что приводит к 6 уникальным парам (1/2, 1/3, 1/4, 2/3, 2/4, 3/4). При стандартном мультиплексировании x/y возможны только 4 пары (1/3, 1/4, 2/3, 2/4). Кроме того, благодаря способности микроконтроллера менять полярность 6 пар ввода-вывода, количество светодиодов (или диодов), которые имеют уникальную адресацию, может быть удвоено до 12 - путем добавления светодиодов 2/1, 3/1, 4/1, 3/2, 4/2 и 4/3.
Хотя он более эффективен в использовании ввода-вывода, при попытке вписать Чарлиплексирование в стандартный массив x/y требуется небольшое количество манипуляций с адресами.
Другие проблемы, которые влияют на стандартное мультиплексирование, но усугубляются Чарлиплексированием:
Метод Чарлиплексинга был представлен [6] компанией Maxim Integrated в 2001 году [7] как схема мультиплексирования светодиодов с уменьшенным количеством выводов в их драйвере светодиодного дисплея MAX6951. [7] [6] Однако название «Чарлиплексинг» впервые появилось в заметке по применению 2003 года. [6] Он был назван в честь Чарльза «Чарли» М. Аллена, инженера-разработчика MAX232 , [8] [9] [10], который предложил этот метод внутри компании. [ когда? ]
Также в 2001 году Дон Ланкастер проиллюстрировал этот метод как часть своих размышлений о проблеме « N-связности » [11], ссылаясь на Microchip Technology [11] , которая уже обсуждала его как «дополнительный метод управления светодиодами» в заметке по применению 1998 года [12] и позже включила его в буклет с советами и рекомендациями. [13]
Хотя Microchip не упомянул о происхождении идеи, они могли подхватить ее в PICLIST, списке рассылки по микроконтроллерам Microchip PIC , где также в 1998 году Грэм Дэниел [14] [15] предложил ее сообществу как метод управления рядами и столбцами двунаправленных светодиодов . Дэниел в то время создал простые схемы с чипами PIC 12C508, управляющими 12 светодиодами с 5 выводов с помощью мини-набора команд для приведения в движение различных световых дисплеев. [14] [15]
Однако этот метод был известен и использовался различными сторонами гораздо раньше, в 1980-х годах, и был подробно описан еще в 1979 году в патенте Кристофера В. Малиновского, Хайнца Риндерле и Мартина Зигеля из Департамента исследований и разработок AEG-Telefunken , Хайльбронн, Германия, на то, что они назвали «трехуровневой сигнальной системой». [16]
Сообщается, что подобные методы уже использовались еще в 1972 году для сигнализации на путях в моделировании железных дорог . [17] [ необходима цитата ]
Мультиплексирование дисплеев сильно отличается от мультиплексирования, используемого при передаче данных, хотя имеет те же основные принципы. При мультиплексировании дисплеев линии данных дисплеев подключаются параллельно к общей шине данных на микроконтроллере. Затем дисплеи включаются и адресуются по отдельности. Это позволяет использовать меньше контактов ввода-вывода, чем обычно требуется для управления тем же количеством дисплеев напрямую. Здесь каждый «дисплей» может, например, быть одной цифрой калькулятора, а не полным массивом цифр.
При традиционном мультиплексировании выводы ввода/вывода могут управлять максимальным количеством светодиодов или прослушивать столько же входных переключателей. Чарлиплексирование может управлять светодиодами или прослушивать кнопки, даже если направленность не обеспечивается диодом.
Конфигурацию Charlieplexing можно рассматривать как направленный граф , где управляющие штыри являются вершинами, а светодиоды - направленными ребрами; есть направленное наружу ребро, соединенное от каждой вершины к каждой другой вершине, следовательно, при n управляющих штырях есть ( n )( n -1) общих ребер. Это равносильно тому, что n штырей могут управлять n 2 − n сегментами или светодиодами.
Булавки | светодиоды |
---|---|
2 | 2 |
3 | 6 |
4 | 12 |
5 | 20 |
6 | 30 |
7 | 42 |
8 | 56 |
9 | 72 |
10 | 90 |
11 | 110 |
12 | 132 |
13 | 156 |
14 | 182 |
15 | 210 |
16 | 240 |
20 | 380 |
24 | 552 |
32 | 992 |
40 | 1,560 |
48 | 2,256 |
56 | 3,080 |
64 | 4,032 |
н | н 2 − н |
Если известно количество светодиодов ( L ), то количество контактов ( n ) можно найти из уравнения: , округлив результат до ближайшего целого числа.
Пример: если L = 57, то √L = 7,549, а 1 + √L = 8,549; ближайшее целое число к этому числу — 9, поэтому для управления 57 светодиодами требуется 9 контактов (9 контактов могут управлять до 72 светодиодов, но 8 контактов могут управлять максимум 56 светодиодами).
Если L = 56, то √L = 7,483, а 1 + √L = 8,483; ближайшее целое число к этому числу — 8, поэтому для управления 56 светодиодами требуется 8 контактов.
В отличие от традиционной мультиплексированной матрицы x/y, где подмножество проводящих элементов пересекает другое подмножество проводящих элементов, в мультиплексированной матрице «полностью Чарлиплексированной» каждый проводящий элемент пересекает каждый другой проводящий элемент.
Шесть ( n ) проводящих элементов в стандартной мультиплексированной решетке x/y образуют максимум девять (( n / 2) 2 ) уникальных пересечений (см. рисунок слева).
На других схемах также показано шесть ( n ) проводящих элементов, но здесь все шесть элементов пересекаются, образуя мультиплексный массив из 36 ( n2 ) пересечений. Светодиоды показаны размещенными на каждом пересечении. Однако каждый проводник также пересекает себя по диагонали. Горизонтальный проводник 1 пересекает вертикальный проводник 1, горизонтальный проводник 2 пересекает вертикальный проводник 2 и т. д. Это означает, что шесть из этих светодиодов замкнуты накоротко (например, D1 и D5 замкнуты накоротко). Следовательно, шесть ( n ) диагональных светодиодов никогда не загорятся, потому что на них никогда не может возникнуть напряжение, поэтому ( n ) нужно вычесть из общего числа. Нет смысла устанавливать эти светодиоды (они просто включены сюда для наглядности).
Остается 30 светодиодов ( n 2 − n ), которые можно адресовать по отдельности и зажигать независимо.
Проводник "a", пересекающий проводник "b", отличается от проводника "b", пересекающего проводник "a", поскольку полярность светодиода обратная. Например, когда проводник 3 положительный, а проводник 2 отрицательный, ток течет через него и зажигает светодиод D8, но когда проводник 3 отрицательный, а проводник 2 положительный, ток течет через него и зажигает светодиод D9.
Эти пары светодиодов с обратной полярностью называются комплементарными парами. На этой схеме 15 комплементарных пар, что позволяет независимо зажигать 30 светодиодов.
Шесть неиспользуемых диагональных светодиодов можно легко заменить реальными двунаправленными ярлыками (чтобы больше не нужно было настраивать линии взаимосвязей, сгруппированные слева и внизу диаграмм, для управления нижним входом вертикальных разъемов от соответствующего левого входа горизонтальных разъемов).
Диагонально изменяя форму горизонтальных и вертикальных разъемов вдоль закороченной главной диагонали исходной матрицы, ее можно легко преобразовать в массив из 5 × 6 или 6 × 5 светодиодов, расположенных в регулярной сетке.
Аналогичный шаблон можно использовать для матрицы 10 × 11, которая может использоваться для управления до 110 клавишами (включая несколько светодиодных индикаторов) на современной клавиатуре ПК , где каждый клавишный переключатель включает в себя небольшой последовательный диод или светодиод, так что для индивидуального управления всеми из них потребуется всего 11 контактов (эти отдельные диоды или светодиоды внутри каждого клавишного переключателя также позволят избежать всех распространенных и нежелательных эффектов «фантомных нажатий», которые трудно полностью устранить, когда произвольное количество клавиш в любой позиции нажимается одновременно).
Charlieplexing также может использоваться для значительного сокращения количества управляющих выводов для гораздо больших матриц, таких как современные цифровые дисплеи с высоким разрешением. Например, для дисплея 4K RGB с разрешением 3840 × 2160 это требует более 8 миллионов индивидуально адресуемых пикселей, каждый из которых имеет не менее 3 цветных светодиодов или ячеек ЖК-дисплея, что в общей сложности составляет около 25 миллионов светодиодов или ячеек ЖК-дисплея. Использование обычного мультиплексирования x/y потребовало бы не менее (3840 + 2160 × 3) = 10320 управляющих выводов и множества микросхем выбора для управления строками и столбцами по всей панели светодиодов или ячеек ЖК-дисплея. Но с помощью Charlieplexing это можно сократить всего до 63 управляющих выводов для затвора выбора столбцов дисплея, плюс 46 × 3 управляющих выводов для выбора и активации питания строк дисплея RGB, с помощью одного транзистора для каждой строки или столбца (возможно, с дополнительным общим экранирующим заземлением для ограничения их взаимной связи); Эти управляющие выводы можно легко разместить вокруг выходных выводов одной или двух микросхем контроллера, даже если мы добавим несколько дополнительных выводов, необходимых на контроллере для питания, заземления, тактовых импульсов и шин ввода-вывода, смонтированных на поверхности с высокой плотностью и низкой стоимостью на однослойной печатной плате , и без необходимости сложной маршрутизации и отверстий для соединения между слоями; двухслойный нужен только для базовой матрицы Чарлиплексинга, установленной на границах самой панели.
Позиции в матрице Чарлиплекса не сводятся только к светодиодам или диодам, они также могут быть заполнены двумя выводами транзистора (включая его вывод затвора), так что его третий вывод используется как выход для дальнейшего управления другими устройствами, такими как горизонтальные и вертикальные линии выбора большой плоской дисплейной панели (в этом случае две матрицы Чарлиплекса транзисторов, управляющие и активирующие строки или столбцы панели, будут разумно расположены вдоль всей границы этой панели).
Charlieplexing в своей простейшей форме работает с использованием диодной матрицы комплементарных пар светодиодов. Простейшая возможная матрица Charlieplexed будет выглядеть так:
При подаче положительного напряжения на контакт X1 и заземляющий контакт X2 загорится светодиод 1. Поскольку ток не может течь через светодиоды в обратном направлении при таком низком напряжении, светодиод 2 останется негорящим. Если поменять полярность напряжений на контактах X1 и X2, загорится светодиод 2, а светодиод 1 не будет гореть.
Метод Charlieplexing на самом деле не делает возможной большую матрицу при использовании только двух контактов, поскольку два светодиода могут управляться двумя контактами без каких-либо соединений матрицы и даже без использования режима с тремя состояниями. В этом примере с двумя светодиодами Charlieplexing сэкономит один заземляющий провод, который понадобится в обычной ситуации с 2-контактным драйвером.
Однако двухконтактная схема служит простым примером для демонстрации основных концепций, прежде чем переходить к более крупным схемам, где Чарлиплексирование действительно демонстрирует преимущество.
Если бы схему выше расширить, включив в нее три контакта и шесть светодиодов, она бы выглядела так:
Однако это представляет собой проблему: для того, чтобы эта схема действовала как предыдущая, один из контактов должен быть отключен перед подачей заряда на оставшиеся два. Если, например, светодиод 5 должен был гореть, X1 должен быть заряжен, а X3 должен быть заземлен. Однако, если X2 также заряжен, светодиод 3 также загорится. Если X2 был вместо этого заземлен, загорится светодиод 1, что означает, что светодиод 5 не может гореть сам по себе. Эту проблему можно решить, используя свойства трех состояний логики контактов микроконтроллера. Контакты микроконтроллера обычно имеют три состояния: «высокий» (5 В), «низкий» (0 В) и «вход». Режим ввода переводит контакт в состояние высокого импеданса , что, говоря электрическим языком, «отключает» этот контакт от цепи, то есть через него будет протекать небольшой ток или вообще не будет протекать ток. Это позволяет схеме видеть любое количество подключенных контактов в любое время, просто изменяя состояние контакта. Для управления представленной выше матрицей из шести светодиодов два контакта, соответствующие светодиоду, который должен загореться, подключаются к 5 В (контакт ввода-вывода «высокий» = двоичное число 1) и 0 В (контакт ввода-вывода «низкий» = двоичное число 0), в то время как третий контакт устанавливается в состояние входа.
При этом предотвращается утечка тока из третьего контакта, что гарантирует, что горит только тот светодиод, который должен быть включен. Поскольку нужный светодиод снижает напряжение, доступное после резистора, ток не будет течь по альтернативным путям (например, для каждой пары контактов в схеме с 3 контактами существует альтернативный путь из 2 светодиодов), пока падение напряжения в желаемом пути светодиода меньше общего падения напряжения на каждой цепочке альтернативных светодиодов. Однако в варианте с отдельными резисторами этот эффект регулирования напряжения не влияет на альтернативные пути, поэтому все используемые светодиоды не должны будут гореть при подаче половины напряжения питания, поскольку этот вариант не использует эффект регулирования напряжения светодиода желаемого пути.
Используя логику с тремя состояниями, матрицу теоретически можно расширить до любого размера, пока доступны выводы. Для n выводов в матрице может быть n ( n − 1) светодиодов. Любой светодиод можно зажечь, подав 5 В и 0 В на соответствующие ему выводы и установив все остальные выводы, подключенные к матрице, в режим ввода. При тех же ограничениях, которые обсуждались выше, до n − 1 светодиодов, имеющих общий положительный или отрицательный путь, могут зажигаться параллельно.
Трехпроводную схему можно преобразовать в эту почти эквивалентную матрицу (резисторы были перемещены).
Это подчеркивает сходство между обычным сеточным мультиплексом и Чарлиплексом и демонстрирует закономерность, которая приводит к правилу « n в квадрате минус n ».
При типичном использовании на печатной плате резисторы физически располагаются в верхней части столбцов и подключаются к входному штырю. Затем ряды подключаются напрямую к входному штырю, минуя резистор.
Первая конфигурация на изображении слева подходит только при использовании идентичных светодиодов, поскольку один резистор используется для ограничения тока через более чем один светодиод (хотя и не одновременно — скорее, один резистор ограничивает ток только через один светодиод в данном столбце в один момент времени). Это контрастирует со второй конфигурацией с индивидуальными резисторами для каждого светодиода, как показано на изображении справа. В этой второй конфигурации каждый светодиод имеет уникальный резистор, соединенный с ним. Это позволяет смешивать различные типы светодиодов, предоставляя каждому из них соответствующее значение резистора.
В обеих этих конфигурациях, как показано на левом и правом изображениях, перемещенные резисторы позволяют зажигать несколько светодиодов одновременно ряд за рядом, вместо того, чтобы требовать, чтобы они зажигались по отдельности. Пропускная способность строки может быть увеличена с помощью транзистора BJT эмиттерного повторителя NPN вместо того, чтобы напрямую управлять током с помощью обычно гораздо более слабого контакта ввода/вывода.
Частота обновления не является проблемой, если используется адресация активной матрицы Charlieplexed с массивом светодиодов Charlieplexed. [18]
Однако, как и в случае с мультиплексированием x/y, при использовании пассивной матричной адресации могут возникнуть проблемы с частотой обновления .
Поскольку только один набор светодиодов, все имеющие общий анод или катод, может светиться одновременно, не включая непреднамеренные светодиоды, Чарлиплексирование требует частого изменения выходного сигнала с помощью метода, известного как мультиплексирование . Когда выполняется мультиплексирование, не все светодиоды загораются одновременно, а скорее один набор светодиодов загорается на короткое время, затем другой набор, и в конечном итоге цикл повторяется. Если это делается достаточно быстро, то они будут казаться включенными все время человеческому глазу из-за инерционности зрения . Для того чтобы дисплей не имел заметного мерцания, частота обновления для каждого светодиода должна быть больше порога слияния мерцаний ; в качестве приближения часто используется 50 Гц.
Например, 8 трехстабильных выводов используются для управления 56 светодиодами через Чарлиплексинг, чего достаточно для 8 7-сегментных дисплеев (без десятичных точек). Обычно 7-сегментные дисплеи изготавливаются с общим катодом, иногда с общим анодом, но без потери общности общий катод предполагается в следующем: Все светодиоды во всех 8 7-сегментных дисплеях не могут быть включены одновременно в любой желаемой комбинации с помощью Чарлиплексинга. Невозможно получить 56 бит информации непосредственно из 8 тритов (термин для символа с основанием 3, поскольку выводы являются трехстабильными) информации, поскольку 8 тритов по сути содержат 8 log 2 3, или около 12,7 бит информации, что намного меньше 56 бит, необходимых для включения или выключения всех 56 светодиодов в любой произвольной комбинации. Вместо этого человеческий глаз должен быть обманут с помощью мультиплексирования.
Только один 7-сегментный дисплей, один набор из 7 светодиодов может быть активен в любой момент времени. Это можно сделать так, чтобы 8 общих катодов 8 дисплеев были назначены каждому из их собственных уникальных выводов среди 8 портов ввода-вывода. В любой момент времени один и только один из 8 управляющих выводов ввода-вывода будет активно низким, и, таким образом, только 7-сегментный дисплей с его общим катодом, подключенным к этому активно низкому выводу, может иметь включенный любой из его светодиодов. Это активный 7-сегментный дисплей. Аноды 7 светодиодных сегментов в активном 7-сегментном дисплее затем могут быть включены в любой комбинации, если другие 7 портов ввода-вывода будут либо высоковольтными, либо в высокоимпедансном режиме в любой комбинации. Они подключены к оставшимся 7 контактам, но через резисторы (общее катодное соединение подключено к самому контакту, а не через резистор, потому что в противном случае ток через каждый отдельный сегмент зависел бы от общего числа включенных сегментов, поскольку все они должны были бы совместно использовать один резистор). Но чтобы показать желаемое число, используя все 8 цифр, одновременно может быть отображен только один 7-сегментный дисплей, поэтому все 8 должны циклически проходить по отдельности и за 50-ю долю секунды в течение всего периода 8. Таким образом, дисплей должен обновляться с частотой 400 Гц для цикла периода 8 через все 8 сегментов, чтобы светодиоды мигали не медленнее 50 раз в секунду. Это требует постоянного прерывания любой дополнительной обработки, выполняемой контроллером, 400 раз в секунду.
Из-за уменьшенного рабочего цикла , требования к току дисплея Charlieplexed растут гораздо быстрее, чем это было бы с традиционным мультиплексированным дисплеем. По мере увеличения дисплея средний ток, протекающий через светодиод, должен быть (примерно) постоянным, чтобы поддерживать постоянную яркость, таким образом требуя пропорционального увеличения пикового тока. Это вызывает ряд проблем, которые ограничивают практический размер дисплея Charlieplexed.
Все выходы, используемые для управления дисплеем Charlieplexed, должны быть трехстабильными. Если ток достаточно мал для управления дисплеями напрямую через контакты ввода/вывода микроконтроллера, это не проблема, но если необходимо использовать внешние тристабильные состояния, то для каждого тристабильного состояния обычно требуется две выходные линии для управления, что исключает большую часть преимуществ дисплея Charlieplexed. Поскольку ток от контактов микроконтроллера обычно ограничен примерно 20 мА, это серьезно ограничивает практический размер дисплея Charlieplexed. Однако это можно сделать, включив по одному сегменту за раз. [19]
При использовании светодиодов с разным прямым напряжением , например, при использовании светодиодов разного цвета, некоторые светодиоды могут загораться, когда это не нужно.
На схеме выше видно, что если светодиод 6 имеет прямое напряжение 4 В, а светодиоды 1 и 3 имеют прямое напряжение 2 В или меньше, они загорятся, когда светодиод 6 должен загореться, так как их путь тока короче. Эту проблему можно легко избежать, сравнив прямое напряжение светодиодов, используемых в матрице, и проверив на совместимость. Или, проще говоря, используя светодиоды, которые все имеют одинаковое прямое напряжение. [11] [6]
Эта проблема также возникает, когда светодиоды используют отдельные резисторы вместо общих резисторов. Если через два светодиода проходит путь с меньшим падением напряжения, чем напряжение питания, эти светодиоды также могут загораться в непреднамеренное время.
Charlieplexing также может использоваться для мультиплексирования цифровых входных сигналов в микроконтроллер. Используются те же диодные схемы, за исключением того, что переключатель размещается последовательно с каждым диодом. Чтобы считывать, открыт или закрыт переключатель, микроконтроллер настраивает один вывод как вход с внутренним подтягивающим резистором. Другой вывод настраивается как выход и устанавливается на низкий логический уровень. Если входной вывод показывает низкий уровень, то переключатель закрыт, а если входной вывод показывает высокий уровень, то переключатель открыт. [20]
Одним из потенциальных применений этого является чтение стандартной (4 × 3) 12-клавишной цифровой клавиатуры с использованием всего 4 линий ввода-вывода. Традиционный метод сканирования строк и столбцов требует 4 + 3 = 7 линий ввода-вывода. Таким образом, Чарлиплексирование экономит 3 линии ввода-вывода; однако оно добавляет расходы на 12 диодов (поскольку диоды свободны только при использовании светодиодов). Возможен вариант схемы только с 4 диодами [20] , однако это уменьшает опрокидывание клавиатуры. Микроконтроллер всегда может определить, когда данные повреждены, но нет никакой гарантии, что он может распознать исходные нажатия клавиш, если только не нажимается только одна кнопка за раз. (Однако, вероятно, можно организовать схему так, что если нажимаются не более двух соседних кнопок, то потери данных не произойдет.) [ неопределенно ] Ввод без потерь в схеме с 4 диодами происходит только в том случае, если нажимается только одна кнопка за раз или если избегаются определенные проблемные нажатия нескольких клавиш. В схеме с 12 диодами это не проблема, и всегда есть соответствие один к одному между нажатиями кнопок и входными данными. Однако для использования этого метода требуется так много диодов (особенно для больших массивов), что, как правило, нет никакой экономии по сравнению с традиционным методом сканирования строк и столбцов, если только стоимость диода не составляет лишь часть стоимости контакта ввода-вывода, где эта часть равна единице, деленной на количество линий ввода-вывода.
Проекционно-емкостные сенсорные экраны и клавиатуры.
В них не используются диоды, а используется изменение емкости между пересекающимися токопроводящими дорожками для обнаружения приближения одного или нескольких пальцев через непроводящие материалы, такие как пластиковые накладки, дерево, стекло и т. д., даже через двойное остекление.
Эти дорожки могут быть изготовлены из широкого спектра материалов, таких как печатные платы, прозрачный оксид индия и олова, тонкая проволока с изоляционным покрытием и т. д.
Технология может варьироваться по размеру от очень маленьких, как в «детекторах отпечатков пальцев», [21] до очень больших, как в «сенсорных интерактивных видеостенах». Обычно на максимальную ширину сенсорного экрана с проводкой x/y накладывается ограничение, поскольку горизонтальное сопротивление дорожки становится слишком большим для того, чтобы продукт мог нормально функционировать. Однако сенсорный экран с диагональной проводкой (как описано далее в этом разделе) не имеет этой проблемы.
Нет никаких светодиодов или диодов, и в любой момент времени только одна линия ввода/вывода устанавливается как выход, остальные линии ввода/вывода устанавливаются как высокоомные входы или «заземлены». Это означает, что требования к питанию очень малы.
В 2008 году Дхананджай В. Гадре разработал Гугаплексинг , который похож на Чарлиплексинг с несколькими управляющими напряжениями. [22] [23]
В 2008 году так называемая технология Chipiplexing Гильермо Жакенода добавила эмиттерные повторители для повышения мощности привода строк, что позволило одновременно зажигать ряды, ширина которых превышает ширину одного порта микроконтроллера. [24] [25]
В 2010 году австрийский производитель микросхем austriamicrosystems AG (с 2012 года именуемый ams AG [nb 1] , а с 2020 года — ams-OSRAM AG ) представил мультиплексную микросхему драйвера светодиодов AS1119, [26] [27] а затем в 2011 году — AS1130. [28] [29]
Кроме того, подразделение аналоговых и смешанных сигналов (AMS) [nb 1] (с 2020 года именуемое Lumissil Microsystems) компании Integrated Silicon Solution Inc. (ISSI) представило IS31FL3731 в 2012 году [30] [31] и IS31FL3732 в 2015 году. [32] [33] [34] Все они используют технологию, которую они называют кросс-плексированием , вариант Чарлиплексирования с автоматическим обнаружением открытых или закороченных соединений и мерами по борьбе с фантомными помехами. [35]
В 2019 году Мика Элизабет Скотт разработала метод использования 3 контактов для управления 4 светодиодами и 4 переключателями, который называется Tucoplexing . [36]
Чарлиплексирование можно использовать даже с широтно-импульсной модуляцией для управления яркостью 12 светодиодов с 4 контактами. [37]
В следующем примере кода Arduino схема [38] [39] использует 8-контактный микроконтроллер ATtiny , который имеет 5 контактов ввода/вывода для создания 7 -сегментного дисплея . Поскольку 7-сегментный дисплей требует управления только 7 отдельными светодиодами, мы используем 4 контакта ввода/вывода ATtiny как Charlieplexed выходы ( n ( n - 1)), т.е. 4 контакта можно использовать для управления до 12 отдельными светодиодами (здесь мы используем только 7 из них). Оставляя пятый контакт ввода/вывода для использования в качестве цифрового или аналогового входа или другого выхода.
// Крошечный код.// Считывает аналоговый (или цифровой) входной сигнал с контакта 4 и каждый раз, когда входной сигнал падает ниже установленного порогового значения.// Он считает один и отображает увеличение счета, активируя один из четырех светодиодов (или транзисторов)// или один из двенадцати светодиодов Charlieplexed.// УСТАНОВИТЕ ЭТИ ЗНАЧЕНИЯ:пороговое значение int = 500 ; int maxCount = 7 ; ////////////////////булев датчикTriggered = false ; количество целых чисел = 0 ; int sensorValue = 0 ; long lastDebounceTime = 0 ; // Время последнего переключения выходного контакта. long debounceDelay = 50 ; // Время дребезга; увеличьте, если выход мерцает. ////////////////////////////////////////////////////////////////////////////////недействительная настройка () { // Используйте понижение напряжения для отключенных выходных контактов вместо повышения, чтобы уменьшить внутреннее потребление. для ( int pin = 0 ; pin < 4 ; pin ++ ) { pinMode ( pin , INPUT ), digitalWrite ( pin , LOW ); } // Внутренний подтягивающий резистор для включенного входного контакта 4. pinMode ( 4 , INPUT ), digitalWrite ( 4 , HIGH ); }////////////////////////////////////////////////////////////////////////////////пустой цикл () { testDigits ();}void testDigits () { charlieLoop ();}////////////////////////////////////////////////////////////////////////////////void readSensor () { sensorValue = analogRead ( 2 ); // pin4! задержка ( 100 ); если ( sensorValue < порог && sensorTriggered == false ) { sensorTriggered = true ; количество ++ ; если ( количество > максимальноеКоличество ) количество = 0 ; charlieLoop (); } если ( sensorValue > threshold ) sensorTriggered = false ; }////////////////////////////////////////////////////////////////////////////////void charlieLoop () { количество ++ ; для ( int i = 0 ; i < 1000 ; i ++ ) { для ( int c = 0 ; c < count ; c ++ ) { charliePlexPin ( c ); } } задержка ( 1000 ); если ( количество > максимальноеКоличество ) количество = 0 ; }////////////////////////////////////////////////////////////////////////////////void charliePlexPin ( int myLed ){ // Убедитесь, что мы не подаем случайные напряжения на светодиоды // в течение короткого времени мы меняем напряжения и режимы контактов. // Используйте понижение напряжения для отключенных выходных контактов вместо повышения, чтобы уменьшить внутреннее потребление. для ( int pin = 0 ; pin < 4 ; pin ++ ) { pinMode ( pin , INPUT ), digitalWrite ( pin , LOW ); } // С 4 контактами мы могли бы зажечь до 12 светодиодов, здесь мы используем только 7. // Обязательно установите напряжение на выводах (с помощью внутреннего подтягивания вверх или вниз) // перед изменением режимов вывода на выход.#if 1 // Сокращенный код с использованием статической таблицы поиска. typedef структура { // Два разных номера пинов (от 0 до 3; порядок имеет значение), // в противном случае светодиод не будет гореть. низкий , высокий : цел .: 2 ; } Контакты ; статические Пины pinsLookup [] = { { 2 , 0 }, { 2 , 3 }, { 1 , 3 } , { 0 , 1 }, { 1 , 0 }, { 0 , 2 }, { 1 , 2 }, // Другие возможные комбинации для 12 светодиодов: // {0, 3}, {2, 1}, {3, 0}, {3, 1}, {3, 2}, // Другие бесполезные комбинации, которые не зажигают ни один светодиод со значительным напряжением и током, // если только подтягивающие или понижающие сопротивления не сильно несбалансированы: // {0, 0}, {1, 1}, {2, 2}, {3, 3} }; если ( myLed >= 0 && myLed <= sizeof ( pinsLookup ) / sizeof ( Pins )) { регистрировать Пины и пины = pinsLookup [ myLed ]; // Обратите внимание, что первая цифраWrite to LOW закомментирована, // как это уже установлено выше для всех выходных контактов. /* digitalWrite(pins.low, LOW), * / pinMode ( pins.low , OUTPUT ) ; digitalWrite ( pins.high , HIGH ) , pinMode ( pins.high , OUTPUT ) ; }#else // Эквивалентный код с использованием длинного переключателя. переключатель ( myLed ) { случай 0 : /* digitalWrite(2, LOW), */ pinMode ( 2 , OUTPUT ); digitalWrite ( 0 , HIGH ), pinMode ( 0 , OUTPUT ); перерыв ; случай 1 : /* digitalWrite(2, LOW), */ pinMode ( 2 , OUTPUT ); digitalWrite ( 3 , HIGH ), pinMode ( 3 , OUTPUT ); перерыв ; случай 2 : /* digitalWrite(1, LOW), */ pinMode ( 1 , OUTPUT ); digitalWrite ( 3 , HIGH ), pinMode ( 3 , OUTPUT ); перерыв ; случай 3 : /* digitalWrite(0, LOW), */ pinMode ( 0 , OUTPUT ); digitalWrite ( 1 , HIGH ), pinMode ( 1 , OUTPUT ); перерыв ; случай 4 : /* digitalWrite(1, LOW), */ pinMode ( 1 , OUTPUT ); digitalWrite ( 0 , HIGH ), pinMode ( 0 , OUTPUT ); перерыв ; случай 5 : /* digitalWrite(0, LOW), */ pinMode ( 0 , OUTPUT ); digitalWrite ( 2 , HIGH ), pinMode ( 2 , OUTPUT ); перерыв ; случай 6 : /* digitalWrite(1, LOW), */ pinMode ( 1 , OUTPUT ); digitalWrite ( 2 , HIGH ), pinMode ( 2 , OUTPUT ); перерыв ; }#endif}////////////////////////////////////////////////////////////////////////////////void spwm ( int freq , int pin , int sp ) { // Вызов Charlieplexing для установки правильных выводов: // на: digitalWrite ( pin , HIGH ); delayMicroseconds ( sp * freq ); // выключенный: digitalWrite ( pin , LOW ); delayMicroseconds ( sp * ( 255 - freq )); }
[…] Эта необычная техника мультиплексирования используется в драйверах светодиодных дисплеев MAX6950, MAX6951, MAX6954, MAX6955, MAX6958 и MAX6959. […] Чарли Аллен изначально отстаивал эту технику внутри компании Maxim, и поэтому сокращенное название "Charlieplexing" стало использоваться для отличия мультиплексирования с уменьшенным количеством выводов от традиционного метода. Первым продуктом Maxim, использующим Charlieplexing, стал светодиодный драйвер Maxim MAX6951, который управляет 8 цифровыми разрядами с помощью всего 9 выводов […][1] (4 страницы)
[…] Успех
MAX232
был в равной степени данью видению его создателя Чарли Аллена, как и изобретательности его конструктора
Дэйва Бингема
. […]
[…] Запуск семейства
MAX232
особенно проницателен. Чарли Аллен, блестящий, ориентированный на клиента инженер по приложениям, заметил, что наши клиенты используют продукт под названием ICL7660, который также разработал
Дэйв
[Бингем], для обеспечения отрицательного питания для линейных драйверов и приемников
RS-232
. Поэтому Чарли обратился к Дэйву и спросил его, может ли он разработать ИС, которая объединит функциональность ICL7660 с линейным драйвером и приемником RS-232. […]
{{cite magazine}}
: Цитата использует общее название ( помощь )[…] Для управления всеми 144 светодиодами требуется всего 18 линий. Это достигается с помощью технологии мультиплексирования austriamicrosystems, называемой кросс-плексированием. Это позволяет сократить количество линий на печатной плате, а также уменьшить количество контактов на разъемах, экономя место и затраты. […] Другие функции включают […] обнаружение ошибок обрыва и замыкания светодиодов […](Примечание. Объявление AMS AS1119.)
[…] Для управления всеми 132 светодиодами требуется всего 12 линий. Это достигается с помощью технологии мультиплексирования austriamicrosystems, называемой кросс-плексированием. Она уменьшает количество линий на печатной плате, а также контактов на разъемах, экономя место и затраты. Другие функции включают […] обнаружение ошибок обрыва и замыкания светодиодов […](Примечание. Анонс AMS AS1130.)
[…] Möglichen Ghosting-Effecte und Issuee mit Offenen LEDs haben die Verbreitung der Charlieplexing-Topologie in der Vergangenheit совершенно gebremst. Eine «Crossplexing» genannte Verbesserung des Verfahrens verspricht nun, die Nachteile des bisherigen Verfahrens zu eliminieren […] Die Kurzschluss- und Defekterkennung des ICs beruht […] auf der Vorwärtsspannung der in der Matrix verwendeten LEDs. Это наилучшее оптимальное решение для устранения дефектов и автоматической настройки. Die Kenntnis der Position eines Kurzschlusses или дефекты устранены естественным образом, но не в случае ореолов. Если вы хотите провести праздничный день, система может быть координирована по устранению дефектов. […] Jedes Mal, wenn der Treiber angewiesen wird, diese LED anzusteuern, wird diese Instruktion ignoriert. Это значит, что необходимо отключить светодиоды на остальных дисплеях Punktmatrix. […]