Чарлиплексинг
Чарлиплексинг — конструкция светодиодной индикации, когда к каждой паре выводов микроконтроллера подключены два встречно-параллельных светодиода. Такая конструкция позволяет подключить много светодиодов к сравнительно небольшому количеству выводов микроконтроллера.
Этот метод пользуется тем, что цифровые выводы микроконтроллеров способны на трёхзначную логику: присоединён к питанию, присоединён к «земле» и не подсоединён ни к чему. Несмотря на эффективность, у этого метода есть и недостатки, не дающие использовать его на больших индикаторах: скважность, отказоустойчивость, требования к току и прямые напряжения светодиодов.
Метод назван в честь Чарли Аллена из Maxim Integrated[1]. Хотя им пользовались и в 1980-х, и он описан в патенте AEG-Telefunken 1979 года под названием «трёхзначная сигнальная система»[2][3].
Традиционная матричная схема
Обычно индикацию подключают по матричной схеме: есть m шин-строк и n шин-столбцов, между каждой строкой и каждым столбцом подключён светодиод. Строки сканируются по одной (на одной отрицательное напряжение, на всех остальных — положительное либо Z-состояние), на столбцы подаётся напряжение (положительное, если диод зажжён, отрицательное или Z-состояние — если нет). Ток будет проходить только через те светодиоды, которые соединяют положительный столбец и отрицательную строку.
Когда нужно экономить выводы, желательно сделать m и n предельно близкими, в лучшем случае — равными. Без использования строчного дешифратора из 2n выводов можно получить n² светодиодов.
Если напряжения таковы, что светодиодам нужны токоограничивающие резисторы, их надо подключать не на сканирующие выводы (строки), а на выводы данных (столбцы).
Два встречно-параллельных диода
Другая конструкция, широко употребляющаяся, но всё ещё не являющаяся чарлиплексингом — встречно-параллельные диоды.
Если подать «+» на вывод X1 и «−» на X2, загорится 1-й светодиод. Если наоборот — то 2-й. Если быстро менять направление тока, будут гореть оба.
Такие диоды часто объединяют в одном корпусе (обычно красный и зелёный; если зажечь оба сразу, получится оранжевый цвет). Их также можно объединять в матричные схемы. Но если для матрицы обычных диодов Z-состояние желательно, то для встречно-параллельных — обязательно.
Чарлиплексинг: больше выводов
Чарлиплексинг начинается, когда мы отходим от матричной схемы и подключаем к любой паре выводов по два встречно-параллельных светодиода. Если нам надо зажечь светодиоды 1, 2 и 3, сначала мы подаём «+» на X1, «−» на X2 и ни к чему не подключаем X3 (горит LED1). Потом подаём «+» на X2, а «−» — на X1 и X3 (горят LED2 и LED3).
Как мы видим, сканирование чарлиплексированных диодов происходит таким образом: на один из выводов циклически подаётся «+», на остальные или «−», или ничего, в зависимости от того, зажжён диод или нет. Можно и наоборот, сканировать отрицательным напряжением, а в зависимости от того, горят ли диоды, подавать «+» или ничего: «−» на X1, «+» на X2, ничего на X3 (горит LED2), «−» на X2, «+» на X1, ничего на X3 (горит LED1), «−» на X3, «+» на X2, ничего на X1 (горит LED3).
Важный нюанс этой конструкции — как подключать общие токоограничивающие резисторы: их подключать надо так, чтобы со сканируемым выводом диоды были соединены напрямую, без резистора. В противном случае два диода будут гореть тусклее, чем один.
Разумеется, когда подан ток X1 → X2, ток будет проходить и по пути X1 → X3 → X2, поэтому надо позаботиться, чтобы падение напряжения на светодиодах было достаточно велико, чтобы половинное напряжение не зажгло лишних диодов.
Комбинаторика говорит, что n штырей позволяют подключить n(n−1) = n²−n светодиодов.
Гугаплексинг: три напряжения
Транзисторная пара устанавливается так, чтобы, в зависимости от состояния порта, напряжение было V, V/2 или 0. Эта конструкция позволяет 2n(n−1) светодиодов[4][5], но, по-видимому, является простым «трюкачеством» (много обвязки, проще и дешевле поставить более мощный вариант микроконтроллера).
Впрочем, у этих конструкций есть недостатки.
Недостатки
Частота обновления и скважность
В матричной схеме из m строк не все светодиоды горят одновременно: каждой строчке отведена доля времени 1/m. Если переключать строки достаточно быстро, человеку будет казаться, что диод горит постоянно. Чтобы не было заметного мигания, частота этого переключения должна быть не менее 50 Гц.
Чарлиплексинг по этому параметру ничем не отличается от матричной схемы: если к 8 выводам подключены 56 светодиодов (8 разрядов семисегментного индикатора без запятых) и нам нужна частота обновления 50 Гц, мы должны с частотой в 400 Гц подавать на один вывод «+», а остальные или подключать к земле, или переводить в Z-состояние. Соответственно, 400 раз в секунду микроконтроллер приостанавливает всю работу и переключает светодиоды.
Повышенные токи
Из-за высокой скважности через матричный индикатор текут большие пиковые токи. Чем выше скважность, тем больше нужен ток, чтобы сохранить постоянную яркость. К тому же, если микроконтроллер зависнет, строка светодиодов будет гореть на полной яркости, повышая риск отказа, пока поломку не заметят.
С чарлиплексированным индикатором эта проблема обостряется, особенно если рассчитывается, что будет гореть только небольшая часть диодов: ведь небольшие токи идут и по паразитным путям. Например, когда X2 «в воздухе», небольшой ток идёт и по пути X1 → X2 → X3.
Обязательна трёхзначная логика
Все выводы в чарлиплексированном индикаторе должны быть троичными. Если микроконтроллерного тока хватает, чтобы зажечь светодиод, это не проблема, но внешние трёхзначные драйверы требуют двух выводов каждый, лишая чарлиплексинг главного преимущества — экономии выводов.
Некто Guillermo Jaquenod предложил ставить на выводы эмиттерные повторители, чтобы снизить микроконтроллерные токи — такую конструкцию он обозвал «чипиплексинг»[6].
Сложность
Из-за сложности чарлиплексированные схемы сложнее и в разводке печатных плат, и в программировании, и в пайке. Хотя можно найти компромисс между сложностью разработки и количеством задействованных выводов, чарлиплексируя между собой несколько готовых светодиодных матриц[7].
Прямое напряжение светодиодов
Если использовать светодиоды с разным прямым напряжением (например, разных цветов), некоторые диоды могут гореть, когда не должны. Если у LED6 прямое напряжение 4 В, а у диодов 1 и 3 — по 2 В, они будут гореть вместе с LED6. Это решается проверкой диодов на совместимость — или установкой одинаковых светодиодов[1][8][9].
Эта проблема остаётся и с раздельными резисторами: если между выводами X и Y есть путь, где падение напряжения меньше, чем на собственно диоде X→Y, эти диоды будут гореть.
Отказы светодиодов
У диодов бывают три поломки: сгорел (перестал проводить), пробит (начал проводить в обоих направлениях) и частично пробит (появляется параллельное сопротивление, проводящее в обоих направлениях, светодиод продолжает гореть). В матричной схеме относительно опасен только пробитый диод: частично пробитый не влияет на работоспособность, сгоревший перестаёт показывать сам, но работоспособности остальной схемы не мешает. В чарлиплексированной схеме опасны все три, и любой отказ приводит к полной неработоспособности всего индикатора. Без хорошего знания схемы сложно определить, который из диодов виноват, особенно если отказов несколько.
Если светодиод сгорает, ток будет искать себе путь между какими-то другими диодами; таких путей n−2. Поэтому могут загореться два или более светодиода, никак не связанных с отказавшим. При пробое между выводами X и Y будет загораться любой диод, соседний с X или Y. Поэтому вместо отказа одного сегмента откажет большая часть индикатора — а то и весь. Это надо учитывать, исследуя разрабатывамое устройство на отказобезопасность.
Чарлиплексинг ввода
Светодиоды сами по себе являются диодами, поэтому там диоды «бесплатны». При сканировании кнопок последовательно с каждой кнопкой приходится припаивать импульсный диод.
Прямое напряжение выпрямительного диода невелико, 1 В и меньше[10], и не нормируется, так что главный «защитник» чарлиплексированных светодиодных схем — прямое напряжение диодов — не действует. Поэтому даже с диодами чарлиплексированная схема не может считывать одновременные нажатия трёх и более кнопок — в отличие от матричной, которая без диодов считывает две кнопки и обнаруживает три и более, а с диодами считывает любую комбинацию. Существует схема с четырьмя выводами и четырьмя диодами, позволяющая считывать одиночные нажатия на телефонной клавиатуре 3×4 и обнаруживать нажатия двух соседних[11].
Поэтому чарлиплексинг для ввода используется крайне редко — если диоды действительно «дешевле», чем дополнительные выводы.
Примечания
- ↑ 1 2 Maxim’s appnote Архивная копия от 12 декабря 2009 на Wayback Machine on Charlieplexing use in their chips.
- ↑ US4319227A - Three state signaling system - Google Patents . Дата обращения: 22 апреля 2016. Архивировано 1 апреля 2016 года.
- ↑ Источник . Дата обращения: 22 апреля 2016. Архивировано 3 марта 2016 года.
- ↑ Charlieplexing times two: GuGaplex your LEDs | Make: Дата обращения: 12 августа 2017. Архивировано 24 февраля 2021 года.
- ↑ GuGaplexed Valentine LED Heart: 3 Steps . Дата обращения: 12 августа 2017. Архивировано 12 августа 2017 года.
- ↑ “Chipiplexing” efficiently drives multiple LEDs using few microcontroller ports | EDN . Дата обращения: 12 августа 2017. Архивировано 12 августа 2017 года.
- ↑ Michael E Rule. Charlieplexing with LED dot matrix modules Архивная копия от 24 апреля 2014 на Wayback Machine.
- ↑ This Instructables article Архивировано 17 ноября 2006 года. explains both the theory and how to implement the design.
- ↑ Don Lancaster’s Tech Musings #152 Архивная копия от 9 декабря 2021 на Wayback Machine is where the name Charlieplexing originated.
- ↑ Источник . Дата обращения: 24 апреля 2016. Архивировано 24 марта 2016 года.
- ↑ electronicdesign.com Архивная копия от 24 февраля 2021 на Wayback Machine, Electronic Design Magazine, 1 page article on Charlieplexing for input data