Как подключить драйвер светодиодов tlc5940 к Arduino

микросхема TLC594

микросхема TLC594

Из статьи вы узнаете, как подключить ШИМ генератор TLC5940 в качестве драйвера светодиодов к Ардуино, как подключить несколько драйверов в цепочке и как управлять ими с помощью библиотеки tlc5940. Также рассказано, как освободить SPI выводы Arduino, занимаемые микросхемой при стандартном подключении. Для повторения схемы, рассмотренной в статье, вам понадобятся: любой контроллер arduino (в статье используется Nano в качестве примера), макетная плата, соединительные провода, набор перемычек (желательно), как минимум один светодиодный драйвер, на каждый драйвер потребуется 16 светодиодов, резисторы на 2 кОм и на 10 кОм.

Купить микросхему у проверенного мной продавца можно здесь или сразу десяток со скидкой здесь.

Описание микросхемы tlc5940

Микросхема драйвера имеет по 14 выводов с каждой стороны. С одной стороны корпуса можно заметить небольшую выемку. Расположите микросхему этой выемкой вправо и установите на макетной плате. Лучше установить её на краю макетки. Но у нас на макетной плате расположена ещё и Arduino Nano. Если драйвер расположен выемкой вправо, то нумерация выводов начинается с левого нижнего и идет слева-направо, затем наверх и справа налево (против часовой стрелки). То есть левый нижний вывод — первый, левый верхний — двадцать восьмой. Более наглядно на фото:

Драйвер светодиодов TLC5940

Драйвер светодиодов TLC5940

Подключение микросхемы tlc5940 к arduino

Подключите выводы драйвера к arduino в следующем порядке:

19 и 21 выводы подключаются к рельсе питания +5В (на фото жёлтые перемычки)
22 и 27 выводы подключаются к рельсе земли (белые перемычки)
18 вывод соединяется с 3 цифровым выводом Arduino (белая перемычка)
24 вывод соединяется с 9 цифровым выводом Arduino (белая перемычка)
23 вывод соединяется с 10 цифровым выводом Arduino (зелёный провод)
23 вывод дополнительно соединяется через подтягивающий резистор 10 кОм к рельсе питания, что бы при включении драйвера все светодиоды были погашены.
26 вывод соединяется с 11 цифровым выводом Arduino (оранжевый провод)
25 вывод соединяется с 13 цифровым выводом Arduino (синий провод)
20 вывод нужно через резистор 2 кОм соединить с землёй. Таким способом мы ограничим ток на выводах для подключения светодиодов 20 мА. Рассчитывается этот резистор по формуле: R = 39.06 / I (в Амперах). Максимальный ток составляет 120мА на канал.

Подключение самого драйвера окончено. Соедините перемычками рельсы питания и земли с соответствующими выводами Arduino. Примерно вот так это должно выглядеть:

TLC5940 установлен на макетную плату а подключён к контроллеру

TLC5940 установлен на макетную плату а подключён к контроллеру

Рисунок для тех, кому это кажется более наглядным:

Подключение драйвера светодиодов TLC5940

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

Теперь подключаем светодиоды по порядку к управляемым выводам драйвера. 28 вывод — это нулевой светодиод (OUT0), далее с первого по пятнадцатый номер вывода совпадает с номером светодиода (первый вывод — OUT1, второй — OUT2 … пятнадцатый — OUT15). Драйвер управляет землёй, а не питанием. Поэтому, светодиоды подключаются к выводам драйвера катодами.

Устанавливаем на макетку светодиоды. OUT0 и OUT15 соединены с катодами перемычками:

TLC5940 и 16 светодиодов

TLC5940 и 16 светодиодов

Для работы с драйвером нужно скачать библиотеку Tlc5940. Распакуйте содержимое архива в папку с файлами среды arduino IDE в папку libraries. Загрузите в контроллер следующий код:

После загрузки скетча все светодиоды должны засветиться с максимальной яркостью. В этом скетче хорошо виден принцип управления драйвером. Первым делом должна быть вызвана функция Tlc.init(), которая произведёт инициализацию микросхемы или микросхем, если у нас их подключено несколько. Переменная NUM_TLCS, равняется количеству микросхем, подключённых в цепочке (об этом ниже). Обратите внимание, что автоматически количество драйверов в цепочке не определяется и задаётся вручную в файле библиотеки Tlc5940/tlc_config.h в строке 55. Tlc.clear() вызывается для установки яркости всех каналов в ноль (т.е. для выключения всех светодиодов). Tlc.set() устанавливает яркость светодиода. Функция принимает номер канала (нумерация начинается с нуля, как уже упоминалось) и уровень яркости (фактически, скважность ШИМ). Уровни яркости изменяются от 0 до 4095. Наконец, функция Tlc.update() фактически устанавливает яркость. До вызова этой функции изменения не вступят в силу.

Теперь усложним пример. Запустим «бегущий огонь». Загрузите вот этот скетч (он есть в стандартных примерах библиотеки и называется BasicUse):

После загрузки скетча, вы увидите нечто подобное:

Драйвер светодиодов TLC5940 с шестнадцатью подключёнными светодиодами.

Драйвер светодиодов TLC5940 с шестнадцатью подключёнными светодиодами.

Теперь установите второй драйвер рядом с первым. Лучше оставить промежуток между микросхемами. иначе вы намучаетесь потом, снимая их с макетной платы. Все выводы второго драйвера подключаются параллельно выводам первого (просто соедините их проводами или перемычками), кроме 26 вывода. 26 (SIN) вывод второго драйвера должен соединяться с 17 выводом (SOUT) первого. Теперь в папке с библиотекой откройте файл Tlc5940/tlc_config.h, найдите 55 строку и замените

на

Это позволит без правки кода скетча адаптировать код программы для разного количества драйверов. Честно говоря, у автора статьи возникают сомнения, что этот подход удобнее правки кода скетча, но оставим всё так, как задумано авторами библиотеки.
После подключения ещё 16 светодиодов ко второму драйверу, перезалейте скетч в контроллер, чтобы изменения, внесённые нами в библиотеку, применились, и наблюдайте:

Драйвер светодиодов TLC5940 с тридцатью двумя подключёнными светодиодами.

Драйвер светодиодов TLC5940 с тридцатью двумя подключёнными светодиодами. Светодиоды второго драйвера не удалось выстроить в ряд, и линия светодиодов «завалена».

Решение проблемы с SPI

Вариант подключения по умолчанию, рассмотренный выше — использует интерфейс SPI. Особенности библиотеки Tlc5940 не позволяют подключать к arduino одновременно с драйвером другие модули, использующие интерфейс SPI. Например, беспроводной модуль подключить уже не получится. Авторы библиотеки предлагают в качестве решения проблемы использовать другой интерфейс драйвера «bitbang». Он сравнительно медленнее SPI, но это проявляется только на действительно огромном количестве микросхем, соединённых в цепочку. Для использования интерфейса bitbang нужно в папке с библиотекой открыть файл Tlc5940/tlc_config.h и в строке 45 заменить

на

и переключить выводы драйвера:

25 вывод соединить с 4 цифровым выводом Arduino
26 вывод соединить с 7 цифровым выводом Arduino

Теперь библиотека драйвера не занимает SPI интерфейс, а сам драйвер полностью сохранил свою функциональность.

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

Как подключить драйвер светодиодов tlc5940 к Arduino: 2 комментария

  1. Denis111

    Есть ли возможность вместо светодиодов поставить силовой ключ и управлять мощным светодиодом на 10 Вт ?
    Драйвер управляет землей, как в этом случае надо подключать мосфет или транзистор?

    1
    1. uscr Автор записи

      Добрый день. Я не силён в электронике на самом деле. Когда работал магазин, для ответа на такие вопросы просто брали детали, собирали, пробовали и анализировали. Сейчас ничего под рукой нет чтоб попробовать. Но вообще драйверу всё равно. Ему можно подсунуть любую схему, управляемую землёй. Например, PNP транзистор с подходящими характеристиками по току.

      0

Добавить комментарий