Arduino:Библиотеки/TLC5940: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Библиотека TLC5940<ref>[http://playground.arduino.cc/Learning/TLC5940 playground.arduino.cc - Texas Instruments TLC5940]</ref>= | =Библиотека TLC5940<ref>[http://playground.arduino.cc/Learning/TLC5940 playground.arduino.cc - Texas Instruments TLC5940]</ref>= |
Версия от 12:28, 20 мая 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Библиотека TLC5940[1]
Чип TLC5940 – это 16-канальное ШИМ - устройство, способное управлять коэффициентом заполнения (12 бит; доступны значения от 0 до 4095), ограничением тока (6 бит; доступны значения от 0 до 63) и имеющее гирляндный последовательный интерфейс. Этот девайс очень удобен для увеличения количества каналов для выходных данных, использующих ШИМ. Даташит чипа TLC5940 можно почитать по этой ссылке.
О проблемах, обнаруженных при использовании чипа и корпуса (посадочного места) из Eagle для TLC5940 можно прочесть тут.
Загрузка
Новые версии исходного кода можно найти тут.
Старый исходник можно найти на Google Code. Зайдите сюда, а потом нажмите кнопку «Download».
Установка
Чтобы использовать библиотеку, скачайте ZIP-файл, распакуйте его, а затем поместите в папку для библиотек IDE Arduino.
Чтобы узнать, где находится эта папка на PC, откройте IDE Arduino, кликните на Файл > Настройки (File > Preferences) – адрес папки будет указан в самом верху, в поле «Размещение папки скетчей» (Sketchbook location). Затем перезапустите IDE Arduino. Если папки «libraries» нет, ее нужно создать.
Начало работы
Откройте в IDE Arduino пример, который называется «BasicUse». Чтобы сделать это, кликните на Файл > Примеры > Tlc5940 > BasicUse (File > Examples > Tlc5940 > BasicUse).
Настройка оборудования
Схему подключения можно посмотреть на картинках по этой ссылке.
Обратите внимание:
- Контакт DCPRG на TLC5940 должен быть подключен к GND (т.е. к «земле»), а не к Vcc, как показано на картинке по ссылке выше. Более подробно об этом читайте ниже.
- На контакт BLANK можно повесить подтягивающий резистор номиналом 10 кОм. Это будет стирать выходные данные на всех светодиодах, пока Arduino будет загружаться.
Чтобы повысить силу тока в цепи с чипами TLC5940, можно добавить в нее транзисторы TIP122. Соответствующее руководство можно найти тут.
Сервомоторы (1)
Начиная с r8, библиотека может управлять сервомоторами. Максимальное количество сервомоторов, которыми можно управлять, составляет «16» (по количеству каналов), однако если сервомоторов будет меньше, то оставшиеся каналы можно спокойно использовать для других ШИМ-нужд. Более подробно смотрите в примере «Сервомоторы» (Servos).
RGB-светодиоды
Вместе с этой библиотекой необходимо использовать RGB-светодиоды с общим анодом, потому что RGB-светодиоды с общим катодом работают некорректно.
Функции
- Функция init() инициализирует библиотеку.
- Функция clear() выключает сразу все светодиоды. Другими словами, она сбрасывает значения, отвечающие за оттенки черного и белого, на ноль, но не отсылает их на TLC.
- Функция update() обновляет значения для всех контактов. Она, собственно, и отсылает значения на TLC после работы, выполненной функцией clear().
- Функция set(channel, brightness) задает определенную яркость (уровень ШИМ) для заданного контакта. Собственно, первый аргумент – это канал, для которого нужно задать яркость, а второй – это яркость, которую нужно задать. По состоянию на 7 декабря 2011 года нумерация каналов увеличивается с каждым новым TLC5940, подключенным к цепи. То есть, если вы захотите «поговорить» с последним каналом второго чипа, то это будет 32-ой канал. Значение во втором аргументе (для яркости) может варьироваться от 0 до 4095.
Самую последнюю информацию читайте в этом посте на форумах Arduino.
Устаревшая информация
Информация ниже уже не релевантна, но все же может оказаться полезной.
Во-первых, последовательный интерфейс на TLC5940 оснащен большим количеством контактов. Но, к счастью, многие из них можно просто проигнорировать.
- XERR: Выходной контакт с открытым коллектором, который позволяет узнать, не перегрелся ли TLC5940 и не перегорел ли какой-нибудь светодиод. Мы можем его проигнорировать, потому что он всегда будет в состоянии «вкл», за исключением случаев, когда ко всем выходным контактам будут подключены элементы, использующие ток.
- SOUT: Последовательные данные от TLC5940. Его подключать к Arduino не обязательно, разве что вы не хотите считывать ошибочные биты. Если в вашей цепи более одного TLC5940, то этот контакт нужно гирляндно подключить к контакту SIN на следующем TLC5940.
- DCPRG: Выбор регистра для ограничителей тока. Этот контакт можно просто подключить к «земле». По умолчанию использует EEPROM-значение, равное «63». Если на контакте DCPRG задано HIGH, все регистры для ограничителей тока, использующие RAM, должны быть выставлены на время загрузки.
- XLAT: Этот контакт нужен, чтобы «защелкнуть» данные после их передачи.
- SCLK: Тактовый сигнал для передачи данных.
- VPRG: При помощи этого контакта осуществляется выбор между записью на регистры, управляющие ограничением тока, и на регистры, управляющие коэффициентом заполнения.
- GSCLK: Тактовый сигнал для ШИМ. Чтобы генерировать этот сигнал, на Arduino нужно перепрограммировать timer2. Впрочем, из-за этого придется пожертвовать «родной» ШИМ на этом таймере (на mega8 это 11-ый контакт, а на mega168 это 11-ый и 3-ий контакты).
- BLANK: Стирает данные на всех выходных контактах, а также знаменует конец цикла ШИМ. Чтобы генерировать этот сигнал, на Arduino нужно перепрограммировать timer1. Впрочем, из-за этого придется пожертвовать «родной» ШИМ на 9-ом и 10-ом цифровых контактах. (Чтобы при загрузке Arduino выходные контакты по-прежнему оставались «чистыми», к этой линии нужно подключить настоящий подтягивающий резистор. Может случиться так, что TKC5940 будет идти в конфигурации, расходующей слишком много тока, но это зависит от оборудования.)
Почему приходится жертвовать «родной» ШИМ?
Сигналы на контактах GSCLK и BLANK должны быть точными и аккуратными, т.к. в противном случае сигнал на всех выходных контактах будет нестабильным. При помощи аппаратных таймеров мы можем сделать этот сигнал максимально стабильным – независимо от того, что происходит в скетче. Впрочем, для этого вам придется пожертвовать 3-мя или 4-мя 8-битными ШИМ-каналами, но взаимен вы получаете от 16-ти до 640-ка 12-битных ШИМ-каналов. Хорошая сделка.
Я не ослышался? Вы написали «расходует слишком много тока»?
Да. Если выставить ограничитель тока на максимум, то никаких проблем возникнуть не должно (разве что вы не пытаетесь осветить светодиодами целую комнату, хотя и тут может обойтись). Но если задать значение, при котором TLC5940 будет выдавать слишком много тока, то может случиться перегрев. В даташите на этот счет есть специальный раздел, но если вам не хочется слишком заморачиваться, просто задайте на всех регистрах DC значение «63» и периодически щупайте пальцами TLC5940, проверяя его на перегрев.
Сервомоторы (2)
Любительские сервомоторы управляются короткими импульсами типа HIGH каждые 10-40 миллисекунд. Эти константные значения позволяют управлять не только сервомоторами, но также светодиодами и электродвигателями. Поскольку сервомоторы используют импульсы типа HIGH, а на выходах TLC5940 используется сигнал с активным LOW, все значения, пригодные для управления сервомоторами, находятся в верхней части диапазона.
- 3993, 0xf99: 500 микросекунд
- 3584, 0xe00: 1500 микросекунд
- 3168, 0xc60: 2500 микросекунд
Это заставит, к примеру, дешевый сервомотор HS-311 повернуться примерно на 180 градусов. Если задать неверное значение, то сервомотор может предпринять попытку повернуться слишком сильно. Или, другими словами, сверх заданных пределов. Таких ситуаций лучше избегать. Из-за этого девайс будет тянуть слишком много тока, а если держать его в этом состоянии слишком долго, он может даже перегореть. Помните: эти выходные линии только тянут ток, поэтому лучше повесить на них подтягивающие резисторы.
Моторы
При помощи этой библиотеки можно управлять и двигателями постоянного тока. Подключите к мотору обратный диод, чтобы защитить выходной каскад TLC5940 от выброса индуктивного напряжения при выключении мотора.
Ограничители тока
Чип TLC5940 оснащен EEPROM-памятью для хранения отдельных ограничителей тока. То есть вы можете просто однажды задать эту настройку и больше к ней не возвращаться. По умолчанию там стоит значение «63» – его можно использовать с настройками, которые имеются в TLC5940 и прочем оборудовании по умолчанию.
Если вы хотите программировать их отдельно, то для этого к контакту VPRG нужно подключить 22 вольта. Если вам не нужны отдельные ограничители тока, то можно воспользоваться настройками по умолчанию, а главный ограничитель тока задать, указав правильное количество омов.
Примеры
- BasicAnimations - Базовые анимации
- BasicUse - Базовое использование
- CircularLightBuffer - Анимированный «значок загрузки» из светодиодов
- FadeScope - Простой осциллограф
- Fades - Затухание светодиодов
- Servos - Сервомотор
- UsingProgmem - Использование PROGMEM