Увеличение количества ШИМ контактов Arduino с помощью TLC5940


В данной статье мы рассмотрим подключение микросхемы драйвера светодиодов TLC5940 (также ее называют ШИМ драйвером) к плате Arduino Nano. Микросхема TLC5940 позволяет получить 16 12-битных (значения от 0 до 4095) ШИМ каналов. При подключении микросхем по цепочке это количество можно увеличивать. С помощью драйвера TLC5940 можно не только управлять яркостью свечения подключенных светодиодов, но также управлять сервомоторами, электродвигателями постоянного тока и другими электронными устройствами, управляемыми с помощью ШИМ (широтно-импульсная модуляция) сигналов.

Внешний вид проекта увеличения количества ШИМ контактов Arduino с помощью TLC5940

Более подробно об использовании ШИМ в плате Arduino вы можете прочитать в данной статье.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Драйвер светодиодов TLC5940 (купить на AliExpress).
  3. Светодиод (купить на AliExpress).
  4. Резистор 2 кОм (купить на AliExpress).
  5. Конденсаторы 0,1 и 1 мкФ (купить на AliExpress).

Принцип работы и основные характеристики TLC5940

Микросхема TLC5940 представляет собой 16-ти канальный драйвер светодиодов, поддерживает аппаратный 12 битный ШИМ, имеющий 4096 градаций яркости для каждого канала независимо. Согласно даташита микросхема способна ограничивать ток в диапазоне 0-120 mA (если питающее напряжение менее 3,6 В, то в диапазоне 0-60 mA). Поддерживает питание источников до 17V, а сама микросхема способна питаться от напряжения от 3 до 5.5V. Микросхема имеет последовательный интерфейс, поддерживает передачу данных с частотой до 30 МГц. Также она умеет выдавать информацию о ошибках в работе на соответствующие выводы. Микросхема выпускается в 3-х корпусах: PDIP (28) 35.69 mm × 6.73 mm, HTSSOP (28) 9.70 mm × 4.40 mm и VQFN (32) 5.00 mm × 5.00 mm. В данной статье мы рассмотрим ее PDIP версию.

Если микросхему TLC5940 расположить выемкой вправо, то нумерация ее выводов начнется с левого нижнего края и идет слева-направо, затем наверх и справа налево (против часовой стрелки). То есть левый нижний вывод — первый, левый верхний — двадцать восьмой. Более наглядно это представлено на следующем рисунке.

Нумерация контактов микросхемы TLC5940

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

Распиновка микросхемы TLC5940

Назначение ее контактов следующее:

OUT0-OUT15 — подключение светодиодной нагрузки (или других устройств, управляемых с помощью ШИМ);
VCC и GND — питание микросхемы;
SIN — вход даных;
SCLK — тактовый сигнал данных (максимальная частота тактовых импульсов – 30 МГц);
SOUT — выход данных (для каскадного соединения);
XLAT — сигнал защелкивания данных из сдвиговых регистров;
BLANK — обнуление счетчика ШИМ и выключение каналов OUT0-OUT15;
GSCLK — тактовый сигнал ШИМ;
IREF — ограничение по току для одного канала;
XERR — выход для сигналов ошибок;
VPRG — задает режим работы (0 – режим ШИМ, 1 – режим коррекции тока каналов);
DCPRG — задает режим работы с данными коррекции тока каналов (0 – EEPROM, 1 – DC Register).

Основной принцип работы драйвера светодиодов TLC5940 заключается в следующем: данные последовательно пропихиваются в сдвиговый регистр Input Shift Register. В зависимости от предназначения этих данных (значения ШИМ (GrayScale) или коррекция тока каналов (Dot Correction)) они по приходу сигнала XLAT и состояния VPRG записываются в регистры ШИМ (GS Register) или коррекции тока каналов (DC Register). Далее ШИМ-контроллер заземляет или отключает от земли свой вывод OUTn. То есть микросхема работает со светодиодами по схеме общего анода, что не всегда удобно.

Микросхема TLC5940 позволяет ограничить максимальный выходной ток ШИМ-каналов с помощью резистора, который тянет вывод IREF к земле. Номинал резистора между IREF и землей выбирается в соответствии со следующим графиком:

График для выбора номинала токоограничивающего резистора для микросхемы TLC5940

Для обычных светодиодов с током 20 mA требуется резистор сопротивлением 2 кОм - такой мы и использовали в нашем проекте. Также значение этого резистора можно посчитать исходя из формулы:

Imax = V(IREF) × 31.5 / R(IREF), где V(IREF) = 1.24V — опорное напряжение, Imax (5-120 mA) — максимальный ток одного выходного канала, R(IREF) — искомое сопротивление.

Но есть нюанс. Если мы используем светодиоды разных цветов, то, как правило, номинальный ток для них не одинаковый. Если мы будем ограничивать ток диодов одним значением, передача цвета исказится. Для устранения проблемы можно применить 64-ступенчастую коррекцию тока канала (Dot Correction) – на каждый канал приходится по 6 бит (96 бит на все каналы). Предел коррекции тока – от 0% до 100%. В режим коррекции тока канала можно войти подтянув контакт VPRG микросхемы к напряжению питания. Начинаем отправку со старшего бита 15-го канала и заканчиваем младшим битом 0-го канала, при этом запись осуществляется по нарастанию тактового импульса SCLK. Когда все 96 бит прошли, защелкиваем их в регистры DC Register импульсом на XLAT.

Но если вы подключаете микросхему TLC5940 к плате Arduino, то вас подобные низкоуровневые моменты не будут особенно волновать потому что они уже успешно реализованы в специальных библиотеках для этой платы, предназначенных для работы с драйвером TLC5940.

Схема каскадного соединения микросхем TLC5940 показана на следующем рисунке.

Схема каскадного соединения микросхем TLC5940Используя эту возможность микросхемы TLC5940, мы можем увеличить количество ШИМ контактов платы Arduino до 32, 48 или 64 контактов и при этом мы будем использовать те же самые 4 контакта платы Arduino, к которым будет подключаться микросхема TLC5940.

Схема проекта

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

Схема подключения драйвера светодиодов TLC5940 к плате Arduino

Для управления микросхемой TLC5940 нам понадобится 4 контакта платы Arduino. Поскольку для управления TLC5940 мы будем использовать специальную библиотеку, разработанную Alex Leone (ссылка на ее скачивание приведена ниже), то нам необходимо подключить микросхему TLC5940 в точности к тем контактам платы Arduino, которые указаны в приведенной библиотеке. В сети есть статьи на русском о подключении микросхемы TLC5940 к плате Arduino с помощью других библиотек, но я ради разнообразия, чтобы не копировать идеи с чужих статей, решил перевести для нашего сайта именно вариант с использованием библиотеки от Alex Leone - вдруг она кому то покажется более удобной, чем библиотеки, использованные в аналогичных русскоязычных статьях.

В схеме мы использовали внешний источник для подачи питания на светодиод (в перспективе на несколько светодиодов), но для этой цели можно использовать и контакт VCC платы Arduino если вы не превышаете лимит по току (для контактов VCC и GND платы Arduino это 200 mA.

Также надо помнить о том, что микросхема TLC5940 является, по сути, приемником постоянного тока, поэтому ток через нее течет в направлении ее выходных контактов. Это означает, что при подключении светодиодов мы должны подключать их катоды к выходным контактам микросхемы, а их аноды - к 5V постоянного тока.

Также в схеме нам будут необходимы 2 развязывающих конденсатора и резистор для ограничения тока, протекающего через выходные контакты микросхемы. По графику, приведенному выше, мы определили что сопротивление данного резистора должно быть равно 2 кОм.

Исходный код программы (скетча)

Как мы уже говорили, в нашей программе для управления микросхемой TLC5940 мы будем использовать библиотеку от Alex Leone, скачать которую можно по следующей ссылке. После того как вы ее скачаете и установите, можно использовать пример из нее под названием “BasicUse” для демонстрации основных принципов работы с микросхемой TLC5940.

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

Управление более чем одной микросхемой TLC5940

Для последовательного соединения нескольких таких микросхем мы можем использовать нашу схему проекта, приведенную выше. Разница будет заключаться лишь в том, что контакт SOUT (Signal Output – pin 17) первой микросхемы необходимо будет подключить к контакту SIN (Signal Input – pin 26) второй микросхемы и т.д.

В коде программы также необходимо будет сделать некоторые изменения. В каталоге с библиотекой TLC5940 необходимо в файле tlc_config.h изменить значение переменной NUM_TLCS на 2 как показано на рисунке ниже - именно в этой переменной хранится количество микросхем TLC5940, соединенных последовательно. С помощью двух микросхем TLC5940, соединенных последовательно, мы сможем управлять уже 32 светодиодами используя те же самые принципы, которые мы рассмотрели в нашем коде программы.

Изменение конфигурации библиотеки для управления двумя микросхемами TLC5940, соединенными последовательно

Источник статьи

(Проголосуй первым!)
Загрузка...
185 просмотров

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *