Чарлиплексинг

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Самодельные электронные часы, использующие на 90 диодов 10 выводов микроконтроллера PIC16C54.

Чарлиплексинг — конструкция светодиодной индикации, когда к каждой паре выводов микроконтроллера подключены два встречно-параллельных светодиода. Такая конструкция позволяет подключить много светодиодов к сравнительно небольшому количеству выводов микроконтроллера.

Этот метод пользуется тем, что цифровые выводы микроконтроллеров способны на трёхзначную логику: присоединён к питанию, присоединён к «земле» и не подсоединён ни к чему. Несмотря на эффективность, у этого метода есть и недостатки, не дающие использовать его на больших индикаторах: скважность, отказоустойчивость, требования к току и прямые напряжения светодиодов.

Метод назван в честь Чарли Аллена из Maxim Integrated (1995)[1]. Хотя им пользовались и в 1980-х, и он описан в патенте AEG-Telefunken 1979 года под названием «трёхзначная сигнальная система».[2][3]

Традиционная матричная схема[править | править вики-текст]

Светодиоды, подключенные по матричной схеме

Обычно индикацию подключают по матричной схеме: есть m шин-строк и n шин-столбцов, между каждой строкой и каждым столбцом подключён светодиод. Строки сканируются по одной (на одной отрицательное напряжение, на всех остальных — положительное либо Z-состояние), на столбцы подаётся напряжение (положительное, если диод зажжён, отрицательное или Z-состояние — если нет). Ток будет проходить только через те светодиоды, которые соединяют положительный столбец и отрицательную строку.

Когда нужно экономить выводы, желательно сделать m и n предельно близкими, в лучшем случае — равными. Без использования строчного дешифратора из 2n выводов можно получить n² светодиодов.

Если напряжения таковы, что светодиодам нужны токоограничивающие резисторы, их надо подключать не на сканирующие выводы (строки), а на выводы данных (столбцы).

Два встречно-параллельных диода[править | править вики-текст]

Одинаковые встречно-параллельные диоды
Разные встречно-параллельные диоды

Другая конструкция, широко употребляющаяся, но всё ещё не являющаяся чарлиплексингом — встречно-параллельные диоды.

Если подать «+» на вывод X1 и «−» на X2, загорится 1-й светодиод. Если наоборот — то 2-й. Если быстро менять направление тока, будут гореть оба.

Такие диоды часто объединяют в одном корпусе (обычно красный и зелёный; если зажечь оба сразу, получится оранжевый цвет). Их также можно объединять в матричные схемы. Но если для матрицы обычных диодов Z-состояние желательно, то для встречно-параллельных — обязательно.

Чарлиплексинг: больше выводов[править | править вики-текст]

3 вывода, 6 одинаковых светодиодов (сканируется отрицательным напряжением)
3 вывода, 6 разных светодиодов

Чарлиплексинг начинается, когда мы отходим от матричной схемы и подключаем к любой паре выводов по два встречно-параллельных светодиода. Если нам надо зажечь светодиоды 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 светодиодов.

Впрочем, у этой конструкции есть недостатки.

Недостатки[править | править вики-текст]

Частота обновления и скважность[править | править вики-текст]

В матричной схеме из m строк не все светодиоды горят одновременно: каждой строчке отведена доля времени 1/m. Если переключать строки достаточно быстро, человеку будет казаться, что диод горит постоянно. Чтобы не было заметного мигания, частота этого переключения должна быть не менее 50 Гц.

Чарлиплексинг по этому параметру ничем не отличается от матричной схемы: если к 8 выводам подключены 56 светодиодов (8 разрядов семисегментного индикатора без запятых) и нам нужна частота обновления 50 Гц, мы должны с частотой в 400 Гц подавать на один вывод «+», а остальные или подключать к земле, или переводить в Z-состояние. Соответственно, 400 раз в секунду микроконтроллер приостанавливает всю работу и переключает светодиоды.

Повышенные токи[править | править вики-текст]

Из-за высокой скважности через матричный индикатор текут большие пиковые токи. Чем выше скважность, тем больше нужен ток, чтобы сохранить постоянную яркость. К тому же, если микроконтроллер зависнет, строка светодиодов будет гореть на полной яркости, повышая риск отказа, пока поломку не заметят.

С чарлиплексированным индикатором эта проблема обостряется, особенно если рассчитывается, что будет гореть только небольшая часть диодов: ведь небольшие токи идут и по паразитным путям. Например, когда X2 «в воздухе», небольшой ток идёт и по пути X1 → X2 → X3.

Обязательна трёхзначная логика[править | править вики-текст]

Все выводы в чарлиплексированном индикаторе должны быть троичными. Если микроконтроллерного тока хватает, чтобы зажечь светодиод, это не проблема, но внешние трёхзначные драйверы требуют двух выводов каждый, лишая чарлиплексинг главного преимущества — экономии выводов.

Сложность[править | править вики-текст]

Из-за сложности чарлиплексированные схемы сложнее и в разводке печатных плат, и в программировании, и в пайке. Хотя можно найти компромисс между сложностью разработки и количеством задействованных выводов, чарлиплексируя между собой несколько готовых светодиодных матриц[4].

Прямое напряжение светодиодов[править | править вики-текст]

Если использовать светодиоды с разным прямым напряжением (например, разных цветов), некоторые диоды могут гореть, когда не должны. Если у LED6 прямое напряжение 4 В, а у диодов 1 и 3 — по 2 В, они будут гореть вместе с LED6. Это решается проверкой диодов на совместимость — или установкой одинаковых светодиодов.[1][5][6]

Эта проблема остаётся и с раздельными резисторами: если между выводами X и Y есть путь, где падение напряжения меньше, чем на собственно диоде X→Y, эти диоды будут гореть.

Отказы светодиодов[править | править вики-текст]

У диодов бывают три поломки: сгорел (перестал проводить), пробит (начал проводить в обоих направлениях) и частично пробит (появляется параллельное сопротивление, проводящее в обоих направлениях). В матричной схеме относительно опасен только пробитый диод: частично пробитый не влияет на работоспособность, сгоревший перестаёт показывать сам, но работоспособности остальной схемы не мешает. В чарлиплексированной схеме опасны все три, и любой отказ приводит к полной неработоспособности всего индикатора. Без хорошего знания схемы сложно определить, который из диодов виноват, особенно если отказов несколько.

Если светодиод сгорает, ток будет искать себе путь между какими-то другими диодами; таких путей n−2. Поэтому могут загореться два или более светодиода, никак не связанных с отказавшим. При пробое между выводами X и Y будет загораться любой диод, соседний с X или Y. Поэтому вместо отказа одного сегмента откажет большая часть индикатора — а то и весь. Это надо учитывать, исследуя разрабатывамое устройство на отказобезопасность.

Чарлиплексинг ввода[править | править вики-текст]

Светодиоды сами по себе являются диодами, поэтому там диоды «бесплатны». При сканировании кнопок последовательно с каждой кнопкой приходится припаивать импульсный диод.

Прямое напряжение диода невелико, 1 В и меньше,[7] так что главный «защитник» чарлиплексированных светодиодных схем — прямое напряжение диодов — не действует. Поэтому даже с диодами чарлиплексированная схема не может считывать одновременные нажатия трёх и более кнопок — в отличие от матричной, которая без диодов считывает две кнопки и обнаруживает три, а с диодами считывает любую комбинацию. Существует схема с четырьмя выводами и четырьмя диодами, позволяющая считывать одиночные нажатия на телефонной клавиатуре 3×4 и обнаруживать нажатия двух соседних[8].

Поэтому чарлиплексинг для ввода используется крайне редко — если диоды действительно «дешевле», чем дополнительные выводы.

Примечания[править | править вики-текст]

  1. 1 2 Maxim’s appnote on Charlieplexing use in their chips.
  2. http://www.google.com/patents/US4319227
  3. http://patentimages.storage.googleapis.com/pdfs/US4319227.pdf
  4. Michael E Rule. Charlieplexing with LED dot matrix modules.
  5. This Instructables article explains both the theory and how to implement the design.
  6. Don Lancaster’s Tech Musings #152 is where the name Charlieplexing originated.
  7. http://www.diodes.com/_files/datasheets/ds28002.pdf
  8. electronicdesign.com, Electronic Design Magazine, 1 page article on Charlieplexing for input data