Получение большого количества (~ 100) цифровых выходных сигналов от Arduino

19

Я хотел бы иметь возможность контролировать около 100 независимых светодиодов с помощью Arduino. Проблема в том, что Arduino не имеет почти достаточно контактов, которые можно настроить для этого. Как бы решить эту проблему? Есть ли чип, который может демультиплексировать более сложный сигнал от Arduino, который затем может управлять светодиодами? Или есть другое решение?

Алексис К
источник
каковы ваши требования к частоте обновления? сколько ток потребляет на светодиод?
Викачу
частота обновления около 1 секунды. думая около 8мА на светодиод. Будет работать от внешнего адаптера - не Arduino
Alexis K
Существует много решений для демультиплексирования. Но учтите сложность вашей задачи; будет ли алгоритм, который вам нужен для генерации данных, соответствовать ограничениям mcu Arduino? Некоторые задачи будут, другие не будут или будут соответствовать только через создание проектов, которые могут быть весьма удовлетворяющими, но могут усложнить обслуживание кода.
Крис Страттон

Ответы:

22

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

Есть несколько простых подходов, самый простой подход подробно описан ниже:


  • Драйвер постоянного тока для светодиодов TLC5940 в каскадной конфигурации:

TLC5940 управляет 16 светодиодами на каждую микросхему, управляемую последовательным входом через небольшой вариант интерфейса SPI. Можно каскадировать до 40 устройств TLC5940, но 7 из них будет достаточно для управления этими 100 светодиодами.

Есть как минимум пара библиотек Arduino ( 1 , 2 ) для TLC5940.

Рекомендуемые тактовые частоты для отправки с Arduino и соответствующая частота обновления:

  • 1 МГц GSClk с использованием кода в этой теме .
  • 330 кГц SCLK (тактовая частота последовательных данных)
  • Таким образом, частота обновления данных светодиода 244 Гц

Это основано на формулах из таблицы:

f (GSCLK) = 4096 * f (обновление)
f (SCLK) = 193 * f (обновление) * n
где:
f (GSCLK): минимальная частота, необходимая для GSCLK
f (SCLK): минимальная частота, необходимая для SCLK и SIN
f ( update): частота обновления всей каскадной системы
n: число каскадных устройств TLC5940

TLC5940 является постоянным током раковины , так аноды светодиодов будут связаны с напряжением несколько вольт больше , чем LED Vf, или около 7 вольт, в зависимости от того ниже, питания независимо от выводов питания на Arduino в. Этот источник напряжения должен обеспечивать 100 * (независимо от тока, на котором работают светодиоды), но может быть нерегулируемым источником.

Светодиодные катоды поступают на линии привода соответствующих микросхем TLC5940.

Сам TLC5940 потребляет до Icc = 60 мА на устройство во время записи данных, поэтому питание 7 из них от Arduino не будет работать, для этого потребуется независимый регулируемый Vcc от 3,3 до 5 Вольт, в идеале то же значение, что и для Vcc Arduino используется, и наземные следы должны быть подключены обратно к земле Arduino, конечно. Работа частей TLC с напряжением, отличным от Arduino, может привести к необходимости преобразования уровня последовательного сигнала, поэтому лучше избегать этого.

Несколько видео на YouTube демонстрируют использование Arduino с каскадными микросхемами TLC5940.


Хотя эти микросхемы были разработаны для управления 7-сегментными цифровыми светодиодными дисплеями, они обеспечивают индивидуальное управление светодиодами, поэтому их можно использовать для 64 светодиодов на ИС. Два из них могут быть соединены каскадом для управления 100 требуемыми светодиодами. Страница 13 таблицы данных показывает каскадную конфигурацию.

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

MAX7219 / 7221 являются мультиплексными драйверами светодиодов, поэтому максимальная яркость светодиодов будет ниже, чем для статического драйвера светодиодов, как в предыдущем разделе.

Вот полезная библиотека светодиодных матриц и руководство по использованию MAX7219.

Некоторые соответствующие видео YouTube ( 1 , 2 ) могут представлять интерес.


Опять же, эти микросхемы были разработаны для управления 7-сегментными цифровыми светодиодными дисплеями, они обеспечивают индивидуальное управление светодиодами, поэтому могут использоваться до 40/64 светодиодов на ИС. Два / три из них можно подключить к шине Arduino SPI, чтобы получить 100 необходимых светодиодов.

Примечания к дизайну остаются такими же, как и в предыдущем разделе. Кроме того, максимальная яркость отдельного светодиода будет ниже, чем у модели прямого мультиплексирования MAX7219.

Есть несколько видео на YouTube, которые могут быть интересны.


  • Дискретные конструкции компонентов, регистры сдвига, расширители ввода-вывода, режущие светодиодные ленты с отдельными контроллерами и многое другое ...

Это все подходы, которые использовались с различными уровнями простоты и успеха. Они являются более сложными реализациями, чем 3 подхода, описанных выше, поэтому более подробно не рассматриваются. Поиск в Интернете даст полезные руководства для этих подходов, если это необходимо.

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

У меня нет личного опыта с этим последним набором опций, поэтому не могу помочь.


Сноска. После ответа на этот вопрос я нашел более старый вопрос , в котором есть ответы, подробно описывающие и обсуждающие несколько подходов в моем последнем разделе. Эта тема делает интересным "дальнейшее чтение как домашнее задание".


Аниндо Гош
источник
1
Недорогие сменные регистры типа 74HC595?
Томас Е
Кроме того, как Max5951 обеспечивает «индивидуальное управление светодиодами» - кажется, что он имеет только 7-сегментное управление (8 контактов на 8 цифр), нет?
Томас Е
Да, те тоже. Нужно много резисторов для защиты светодиодов, а затем сложная проводка по сравнению со специализированными интегральными схемами.
Аниндо Гош
@ThomasE No: «MAX6950 управляет до пяти 7-сегментных цифр или 40 дискретных светодиодов. MAX6951 управляет до восьми 7-сегментных цифр или 64 дискретных светодиодов». Один из них просто подключает группы из 8 светодиодов в каждой катодной линии, как описано в разделе MAX7219 моего ответа.
Аниндо Гош
2
@starblue Overkill v / s простота DIY реализации : Для одноразового или хобби усилий, бы TLC5940 ($ 3,78 в единичных количествах в Digikey) не остаются теми Простейшие решения, так как из Arduino библиотек и активной поддержки в рамках сообщества Arduino? Если нет других не менее хорошо поддерживаемых частей, таких как вы указали, которые любят форумы Arduino.
Аниндо Гош