- Цена: $8.45 за 10 штук
Как и обещал, поделюсь еще одной поделкой для комфортной жизни в дачных условиях. Многие за эту зиму запаслись светодиодными лентами, светодиодами и прочим осветительным оборудованием по различным акциям. Конечно, я не исключение, и коробочка с подобными штуками ждет дачного сезона (некоторые из них я уже тут обозревал). Оставался открытым вопрос управления всем этим делом. В этот раз будем конструировать устройство для управления несколькими мощными светодиодными источниками света. Под катом разработка устройства на микроконтроллере с применением предмета обзора. TLC5940 16-ти канальный драйвер светодиодов, поддерживает аппаратный 12 битный ШИМ, имеющий 4096 градаций яркости для каждого канала независимо. Согласно datasheet, драйвер умеет ограничивать ток в диапазоне 0-120 mA. Поддерживает питание источников до 17V, а сама микросхема способна питаться от 3 до 5.5V. Микросхема имеет последовательный интерфейс, поддерживает передачу данных с частотой до 30 MHz. Также она умеет выдавать информацию о ошибках в работе на соответствующие выводы. Микросхема выпускается в 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 версию. Обозначения выводов: Их назначение: OUT0-OUT15 — подключение светодиодной нагрузки; VCC и GND — питание микросхемы SIN — вход даных SCLK — тактовый сигнал данных (максимальная частота тактовых импульсов – 30 МГц) SOUT — выход данных (для каскадного соединения) XLAT — сигнал защелкивания данных из сдвиговых регистров BLANK — обнуление счетчика ШИМ и выключение каналов OUT0-OUT15 GSCLK — тактовый сигнал ШИМ IREF — ограничение по току для одного канала XERR — выход для сигналов ошибок VPRG — задает режим работы (0 – режим ШИМ, 1 – режим коррекции тока каналов) DCPRG — задает режим работы с данными коррекции тока каналов (0 – EEPROM, 1 – DC Register) Блок схема микросхемы выглядит таким образом: Основной принцип работы заключается в следующем: данные последовательно пропихиваются в сдвиговый регистр Input Shift Register. В зависимости от предназначения этих данных (значения ШИМ (GrayScale) или коррекция тока каналов (Dot Correction)) они по приходу сигнала XLAT и состояния VPRG записываются в регистры ШИМ (GS Register) или коррекции тока каналов (DC Register). Далее ШИМ-контроллер заземляет или отключает от земли свой вывод OUTn. То есть микросхема работает со светодиодами по схеме общего анода, что не всегда удобно. Микросхема TLC5940 позволяет ограничить максимальный выходной ток ШИМ-каналов с помощью резистора, который тянет вывод IREF к земле. Номинал резистора между IREF и землей выбирается согласно графику: В частности, для 20 mA (обычные светодиоды) требуется резистор на 2 kOhm. Также, значение этого резистора можно посчитать исходя из формулы: 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. К счастью, большинство низкоуровневых моментов реализуется в специальных библиотеках. Возможно каскадное соединение микросхем: Для Arduino есть библиотека скрывающая все низкоуровневые хитрости микросхемы и делающая управление светодиодами с помощью драйвера TLC5940 максимально простым. Далее мы рассматриваем типовое (простое) подключение драйвера, с ограничением тока выхода в 20 mA. Предупрежу сразу, перенос пинов в библиотеке возможен только двух SIN(26) и SCLK(25) и то в режиме BITBANG, остальные используют специфические возможности конкретных пинов. Подключить данный драйвер к Arduino можно двумя способами, первый наиболее производительный, но отнимающий шину SPI (а соответственно большинство коммуникативных возможностей контроллера), второй менее производительный, но достаточный для большинства задач, не требующий SPI — называется BITBANG. Рассмотрим схему подключения к Arduino (первый вариант, отнимающий SPI): DCPRG(19) и VCC(21) подключаются к +5V GND(22) и VPRG(27) подключаются к земле GSCLK(18) соединяется с 3 цифровым выводом Arduino XLAT(24) соединяется с 9 цифровым выводом Arduino BLANK(23) соединяется с 10 цифровым выводом Arduino, этот вывод подтягивается резистором 10 кОм к +5V, чтобы погасить диоды при включении питания IREF(20) через резистор 2 кОм соединяется с землёй SIN(26) соединяется с 11 цифровым выводом Arduino SCLK(25) соединяется с 13 цифровым выводом Arduino Во втором (BITBANG) варианте необходимо: SIN(26) соединить с 7 цифровым выводом Arduino SCLK(25) соединить с 4 цифровым выводом Arduino Помимо этого в папке с библиотекой, в файле tlc_config.h заменить: на Ну а теперь перейдем к самой интересной DIY части, с поделками и реальными штуками + программами 🙂 На mysku уже было описание проекта с использованием данной микросхемы. Однако выбор элементной базы и полученное решение для меня не являются подходящими. В том обзоре существенно больше философских выводов, чем в этом, но я не считаю что это недостаток читаемого вами обзора. Поэтому сформулируем требования к нашему устройству: — устройство должно управляться через локальную сеть (на даче везде она имеется с соответствующими коммутаторами); — устройство должно управлять не менее чем 10-ю источниками света; — каждый источник потенциально должен уметь потреблять до 4А при 12V; — устройство должно иметь не менее 5 выводов (лучше аналоговых, которые можно использовать как цифровые) для подключения дополнительных датчиков (освещенность, датчик движения и тп); — необходимо иметь возможность управления всеми источниками независимо; — ШИМ и управление яркостью должно быть доступно для каждого источника света: — детали должны быть доступны, самих деталей минимальное количество, цена приемлемая для обычного дачника; — устройство должно уметь собираться в домашних условиях, даже кривыми руками (типа моих). Основные требования ясны, теперь подходы к решению. Дешево и достаточно эффективно снабдить устройство сетевым интерфейсом можно за счет использования модуля ENC28J60, дороже но более эффективно W5100. Чтобы выполнить требования по количеству и яркости нам потребуется предмет обзора (конечно сейчас бы я купил их в планарном исполнении, но в дип — они уже есть, поэтому будем использовать их). Остался нерешенным вопрос с выходной мощностью, при том, что TLC5940 предусматривает схему с общим анодом. Нам нужно компактное устройство управляющее достаточно большим током при напряжении 12V, причем открываемое нулевым сигналом (нам ведь совсем не нужны дополнительные инверторы). Вся современная цифровая электроника построена, в основном, на полевых МОП (метал-оксид-полупроводник) транзисторах, как более экономичных, по сравнению с биполярными транзисторами. Иногда МОП-транзисторы называют МДП (металл-диэлектрик-полупроводник). Международный термин таких транзисторов — MOSFET (metal-oxide-semiconductor field effect transistor). Существуют два типа MOSFET транзисторов n-канальные и p-канальные. Наиболее распространены n-канальные транзисторы, из-за простоты подключения и, как следствие, массовости производства. Однако в нашем случае лучше подходят p-канальные, так как TLC5940 рассчитана на подключение по схеме с общим анодом. Схема подключения к TLC5940 p-канального транзистора будет следующей (на примере двух): Приведенные на схеме IRF7314 выпускаются как сборка состоящая из двух полевых p-канальных транзисторов (datasheet). Основные характеристики: Напряжение (Vdss) 20V, Ток 5.3A, сопротивление сток-исток: 58 mOhm, корпус SO-8. Такие характеристики нас более чем устраивают. Схема (достаточно условно и не на конкурс, но кому нужно думаю все поймут): Питание по входу фильтруется электролитическим конденсатором на 470mF. Из 12V с помощью понижающего dc-dc преобразователя (на ШИМ схеме cn1584) получается 5V, которые также фильтруются электролитом на 470 mF, указанная плата на входе и выходе уже имеет керамические конденсаторы. 5V используются для питания контроллера и микросхемы TLC5940. Модуль связи требует для питания 3.3V, которые формируются из 5 линейным стабилизатором ams1117 на 3.3V, после стабилизатора также стоит электролит на 470 mF и добавляется керамика на 100nF. В качестве контроллера я использовал ATmega328 в корпусе tqfp32 с внешним кварцевым резонатором (16 MHz), от которого работает встроенный в микроконтроллер генератор. Оба вывода кварца соединяются с землей через конденсаторы на 22pF. V+ и GND соединяются керамическим конденсатором в 100 nF возле самого контроллера. RESET подтянут к питанию резистором в 10kOhm. Для загрузки программ Serial (TX, RX), RESET, +V и GND выведены на отдельные 5 пинов — обозначены как J1. Кнопка S1 позволяет соединять RESET и GND (нужно при заливке скетчей и для перезагрузки устройства). Сопряжение с сетью обеспечивает модуль ENC28J60, который имеет одинаковую распиновку с модулем W5100, и, соответственно, с легкостью может быть заменен (я даже сделал его съемным, что позволит в дальнейшем использовать для связи любой SPI модуль: Nrf24L01, W5100, W5500, ENC28J60 — в зависимости от конкретных потребностей). В качестве драйвера открывающего сборки полевых транзисторов — предмет обзора (конечно в режиме BITBANG — ведь SPI нам нужен для связи). В данном случае задействовано 14 выводов микросхемы. Неиспользуемые 2 вывода согласно документации соединены с землей через резисторы в 10 kOhm. Между землей и IREF подключен резистор в 2 kOhm, обеспечивающий ограничение тока в 20 mA. Вывод BLANK подтянут к питанию резистором в 10 kOhm. По периметру платы расположились винтовые клемники, обеспечивающие подключение источников света рассчитанных на 12V. Каждый клемник подключен к земле и одному из стоков транзисторной сборки irf7314. На истоки сборки подается 12V. На затвор сборки подается сигнал от TLC5940 через резистор 1 kOhm, также затвор, для закрытия транзистора при отсутствии открывающего сигнала от TLC5940, подтянут к +12V через резистор в 33kOhm зашунтированный керамическим конденсатором в 100 nF. Дополнительно выведены 7 аналоговых пинов и 1 цифровой. Помимо этого имеются пины +5V, GND, +12V — для удобства подключения дополнительных устройств (пины питания и земли, довольно часто требуются, и один раз столкнувшись с их нехваткой, стараюсь не забывать об этом теперь). Еще один нюанс, я не захотел сверлить под переходы через дорожки и сделал переходы резисторами номиналом 0 Ohm. Надо сказать, что расположение выводов микросхемы TLC5940, в данном случае, оказалось не сильно удачным и таких переходов оказалось довольно много (переназначение пинов не прошло удачно — поэтому оставил как есть). Печатная плата (фото вид): Печатная плата (обычный вид): Да уж, технологический процесс усложнился, но приступим к изготовлению. Термотрансфером (грубо говоря, утюгом через бумажку — ЛУТ) перенесли рисунок платы на текстолит: Лудим (на фотке как будто кривовато вышло, на самом деле все ровно и красиво 🙂 — обман зрения): Напаиваем компоненты (рекомендую сразу прозвонить критические участки): Сторона элементов: Со вставленным сетевым модулем: После первичных тестов покрываем лаком сторону дорожек:
По моему, получилось вполне красиво (на мой криворукий взгляд 🙂 ), все удалось уместить на плате 7 на 10 см — что меня очень даже устраивает. Если кто-то хочет повторить — вот файл платы. Контроллеры еще до пайки к плате (отчасти, чтобы убедится, что с ними до процесса все в порядке) я прошил с помощью адаптера, рассмотренного мной ранее. Паял SMD компоненты в держателе для плат, который описал здесь. Если кто то забыл поставить там ‘+’, сейчас это сделать самое время 🙂 — шучу конечно. Паял феном на паяльную пасту. Флюс использовал KINGBO RMA-218. Как видите, все это вполне пригодно для получения дачных поделок. При пайке таких маленьких деталек в большом количестве, нужно тщательно прозванивать схему особенно на предмет появления контакта там где его не должно быть, иначе есть риски получить волшебный дым. Итого, для построения этого замечательного устройства требуются: — контроллер ATmega328 в корпусе tqfp32 — 1 шт; — кварц на 16 MHz — 1 шт; — светодиодный драйвер Tlc5940 в корпусе dip28 — 1 шт; — dc-dc преобразователь cn1584 — 1 шт; — сборка из двух p-канальных MOSFET irf7314 (или аналоги под ваш ток и напряжение) в корпусе so8 — 7 шт; — линейный стабилизатор ams1117 (3.3V) в корпусе sot223 — 1 шт; — сетевой модуль enc28j60 mini либо w5100 — 1 шт; — конденсатор электролитический 470 mF (25V) — 3 шт; — конденсатор керамический smd1206 100nF — 16шт; — конденсатор керамический smd1206 22pF — 2шт; — резистор smd1206 10kOhm — 4шт; — резистор smd1206 33kOhm — 14шт; — резистор smd1206 1kOhm — 14шт; — резистор smd1206 2kOhm — 1шт; — резистор smd1206 0Ohm — 10шт; — клемники винтовые 2pin — 14 шт (либо собрать из 3pin и 2 pin); — разъем питания 2.1 x 5.5 мама — 1 шт; — штыри лучше разных 5 цветов по одной линейке; — разъемы типа мама 2.54 — 2 по 6 или один двойной по 6 пинов; — кнопка 6.3 на 6.3 мм — 1 шт; — фольгированный текстолит 10 на 7 см — 1 шт. Ну и конечно паяльный инструмент, флюс и материалы для ЛУТ. И, самое главное, хорошее настроение и желание получить готовое устройство. Переходим к программной части. Первым делом, припаяв контроллер и обвес для него, я загружал blink, чтобы проверить что с ним все в порядке (код тут не привожу он стандартный в примерах среды Arduino). Потом переходил к дальнейшей пайке. Собрав всю схему, кроме 13 каналов с винтовыми клемниками, транзисторными сборками и обвеса к ним (проверял на одном канале). Загружал первую программу тестирования: Данный код раз в секунду включает и выключает все выводы. Нехитрое видео с лампой на 1А (про нее я рассказывал в одном из новогодних обзоров): Подключим к осциллографу: Видим ряд импульсов с периодом 2с, заполнение 1с, напряжение соответствует 12V. Передний фронт вполне норм. Задний немного завален. В данном конкретном случае это совсем не критично. Затем тестировал связку сетевого модуля и управления светодиодами: Здесь нам уже потребуется библиотека для работы с сетевым модулем enc28j60. Программа очень простая, но тестирует все возможности данной платы, позволяя включать и выключать любой источник света через сетевое соединение. Законченную программу я буду писать по месту, решив что и как я хочу делать, в частности, на лом пойдет логика управления описанная в этом обзоре. Но на основе простых приведенных примеров, думаю, каждый сможет построить решение для своей задачи со светом. Конечно, кто-то разочаровался отсутствием «Вау эффектов» — которые на данной плате легко реализовать программно, я их обязательно реализую, в каждом конкретном случае свои, если будет интерес, выложу код и сниму видео. Просто не хочется делать бесполезную тестовую работу, библиотека очень хорошо описана и написать соответствующие программы для многих не составит труда. Мне полученное решение очень понравилось, и на следующий вечер я изготовил дополнительно еще 3 платы (слегка модифицировал изначальную), например, перенеся кнопку на другую сторону. По ссылке в обзоре доступна уже модифицированная версия. Получилось как-то так: Единственное, на новых платах не хватает сборок полевых транзисторов, так как личные запасы кончились, а в местных магазинах они стоят неадекватных денег — теперь дождусь посылку и припаяю. Конечно можно было заказать платы в Китае, это сейчас модно, но несколько штук для себя я в состоянии изготовить за вечер, полученное качество меня вполне устраивает, а стоимость заготовки порядка 30 рублей (менее 0.5$)… Тут уж каждый делает выбор сам. Планирую реализовать с помощью данных плат освещение на веранде дома, веранде бани, сделать подсветку лестницы (причем управляемую по сети — например завязанную на сигнализацию) и, наверное, освещение в сарае, туалете, поленнице (у меня это один комплекс). На этом заканчиваю. Спасибо тем кто дочитал до конца, надеюсь кому-то информация окажется полезной! Если заинтересует, опишу еще парочку новых «дачных разработок».Хищник обнюхал устройство и многозначительно отвернулсяTLC594 » data-medium-file=»https://i1.wp.com/uscr.ru/wp-content/uploads/2014/02/TLC594Main-e1456318674889.jpg?fit=300%2C83&ssl=1″ data-large-file=»https://i1.wp.com/uscr.ru/wp-content/uploads/2014/02/TLC594Main-e1456318674889.jpg?fit=612%2C169&ssl=1″ class=»wp-image-92 size-medium» src=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/02/TLC594Main-e1456318674889-300×83.jpg?resize=300%2C83″ alt=»микросхема TLC594″ srcset=»https://i1.wp.com/uscr.ru/wp-content/uploads/2014/02/TLC594Main-e1456318674889.jpg?resize=300%2C83&ssl=1 300w, https://i1.wp.com/uscr.ru/wp-content/uploads/2014/02/TLC594Main-e1456318674889.jpg?w=612&ssl=1 612w» sizes=»(max-width: 300px) 100vw, 300px» data-recalc-dims=»1″ />микросхема TLC594
Из статьи вы узнаете, как подключить ШИМ генератор TLC5940 в качестве драйвера светодиодов к Ардуино, как подключить несколько драйверов в цепочке и как управлять ими с помощью библиотеки tlc5940. Также рассказано, как освободить SPI выводы Arduino, занимаемые микросхемой при стандартном подключении. Для повторения схемы, рассмотренной в статье, вам понадобятся: любой контроллер arduino (в статье используется Nano в качестве примера), макетная плата, соединительные провода, набор перемычек (желательно), как минимум один светодиодный драйвер, на каждый драйвер потребуется 16 светодиодов, резисторы на 2 кОм и на 10 кОм.
Купить микросхему у проверенного мной продавца можно здесь или сразу десяток со скидкой здесь.
Микросхема драйвера имеет по 14 выводов с каждой стороны. С одной стороны корпуса можно заметить небольшую выемку. Расположите микросхему этой выемкой вправо и установите на макетной плате. Лучше установить её на краю макетки. Но у нас на макетной плате расположена ещё и Arduino Nano. Если драйвер расположен выемкой вправо, то нумерация выводов начинается с левого нижнего и идет слева-направо, затем наверх и справа налево (против часовой стрелки). То есть левый нижний вывод — первый, левый верхний — двадцать восьмой. Более наглядно на фото:
Драйвер светодиодов TLC5940 » data-medium-file=»https://i1.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594pinscounted.jpg?fit=300%2C85&ssl=1″ data-large-file=»https://i1.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594pinscounted.jpg?fit=612%2C173&ssl=1″ class=»size-full wp-image-630″ src=»https://i1.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594pinscounted.jpg?resize=612%2C173″ alt=»Драйвер светодиодов TLC5940″ srcset=»https://i1.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594pinscounted.jpg?w=612&ssl=1 612w, https://i1.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594pinscounted.jpg?resize=300%2C85&ssl=1 300w» sizes=»(max-width: 612px) 100vw, 612px» data-recalc-dims=»1″ />
Драйвер светодиодов TLC5940
Подключите выводы драйвера к arduino в следующем порядке:
Подключение самого драйвера окончено. Соедините перемычками рельсы питания и земли с соответствующими выводами Arduino. Примерно вот так это должно выглядеть:
TLC5940 установлен на макетную плату а подключён к контроллеру » data-medium-file=»https://i2.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594Connection.jpg?fit=300%2C193&ssl=1″ data-large-file=»https://i2.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594Connection.jpg?fit=625%2C402&ssl=1″ class=»wp-image-629 » src=»https://i2.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594Connection.jpg?resize=464%2C299″ alt=»TLC5940 установлен на макетную плату а подключён к контроллеру» srcset=»https://i2.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594Connection.jpg?w=1290&ssl=1 1290w, https://i2.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594Connection.jpg?resize=300%2C193&ssl=1 300w, https://i2.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594Connection.jpg?resize=768%2C494&ssl=1 768w, https://i2.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594Connection.jpg?resize=1024%2C659&ssl=1 1024w, https://i2.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594Connection.jpg?resize=777%2C500&ssl=1 777w» sizes=»(max-width: 464px) 100vw, 464px» data-recalc-dims=»1″ />
TLC5940 установлен на макетную плату а подключён к контроллеру
Рисунок для тех, кому это кажется более наглядным:
Подключение драйвера светодиодов TLC5940. Показан только один подключённый светодиод. что бы не загромождать рисунок. » data-medium-file=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/oneTLC6940_bb.jpg?fit=300%2C102&ssl=1″ data-large-file=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/oneTLC6940_bb.jpg?fit=625%2C212&ssl=1″ class=» wp-image-631 » src=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/oneTLC6940_bb.jpg?resize=625%2C212″ alt=»Подключение драйвера светодиодов TLC5940″ srcset=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/oneTLC6940_bb.jpg?w=1782&ssl=1 1782w, https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/oneTLC6940_bb.jpg?resize=300%2C102&ssl=1 300w, https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/oneTLC6940_bb.jpg?resize=768%2C260&ssl=1 768w, https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/oneTLC6940_bb.jpg?resize=1024%2C347&ssl=1 1024w, https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/oneTLC6940_bb.jpg?resize=1025%2C347&ssl=1 1025w, https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/oneTLC6940_bb.jpg?w=1250&ssl=1 1250w» sizes=»(max-width: 625px) 100vw, 625px» data-recalc-dims=»1″ />
Подключение драйвера светодиодов TLC5940. Показан только один подключённый светодиод, чтобы не загромождать рисунок.
Теперь подключаем светодиоды по порядку к управляемым выводам драйвера. 28 вывод — это нулевой светодиод (OUT0), далее с первого по пятнадцатый номер вывода совпадает с номером светодиода (первый вывод — OUT1, второй — OUT2 … пятнадцатый — OUT15). Драйвер управляет землёй, а не питанием. Поэтому, светодиоды подключаются к выводам драйвера катодами.
Устанавливаем на макетку светодиоды. OUT0 и OUT15 соединены с катодами перемычками:
TLC5940 и 16 светодиодов » data-medium-file=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594WithLeds.jpg?fit=300%2C173&ssl=1″ data-large-file=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594WithLeds.jpg?fit=625%2C361&ssl=1″ class=» wp-image-628 » src=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594WithLeds.jpg?resize=625%2C361″ alt=»TLC5940 и 16 светодиодов» srcset=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594WithLeds.jpg?w=1420&ssl=1 1420w, https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594WithLeds.jpg?resize=300%2C173&ssl=1 300w, https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594WithLeds.jpg?resize=768%2C443&ssl=1 768w, https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594WithLeds.jpg?resize=1024%2C591&ssl=1 1024w, https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594WithLeds.jpg?resize=866%2C500&ssl=1 866w, https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/TLC594WithLeds.jpg?w=1250&ssl=1 1250w» sizes=»(max-width: 625px) 100vw, 625px» data-recalc-dims=»1″ />
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 с шестнадцатью подключёнными светодиодами. » data-medium-file=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/16leds.gif?fit=300%2C168&ssl=1″ data-large-file=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/16leds.gif?fit=319%2C179&ssl=1″ class=»size-full wp-image-619″ src=»https://i0.wp.com/uscr.ru/wp-content/uploads/2014/03/16leds.gif?resize=319%2C179″ alt=»Драйвер светодиодов TLC5940 с шестнадцатью подключёнными светодиодами.» data-recalc-dims=»1″ />
Драйвер светодиодов TLC5940 с шестнадцатью подключёнными светодиодами.
Теперь установите второй драйвер рядом с первым. Лучше оставить промежуток между микросхемами. иначе вы намучаетесь потом, снимая их с макетной платы. Все выводы второго драйвера подключаются параллельно выводам первого (просто соедините их проводами или перемычками), кроме 26 вывода. 26 (SIN) вывод второго драйвера должен соединяться с 17 выводом (SOUT) первого. Теперь в папке с библиотекой откройте файл Tlc5940/tlc_config.h, найдите 55 строку и замените
на
Драйвер светодиодов TLC5940 с тридцатью двумя подключёнными светодиодами. » data-medium-file=»https://i1.wp.com/uscr.ru/wp-content/uploads/2014/03/32leds.gif?fit=300%2C169&ssl=1″ data-large-file=»https://i1.wp.com/uscr.ru/wp-content/uploads/2014/03/32leds.gif?fit=320%2C180&ssl=1″ class=»size-full wp-image-620″ src=»https://i1.wp.com/uscr.ru/wp-content/uploads/2014/03/32leds.gif?resize=320%2C180″ alt=»Драйвер светодиодов TLC5940 с тридцатью двумя подключёнными светодиодами.» data-recalc-dims=»1″ />
Драйвер светодиодов TLC5940 с тридцатью двумя подключёнными светодиодами. Светодиоды второго драйвера не удалось выстроить в ряд, и линия светодиодов «завалена».
Вариант подключения по умолчанию, рассмотренный выше — использует интерфейс SPI. Особенности библиотеки Tlc5940 не позволяют подключать к arduino одновременно с драйвером другие модули, использующие интерфейс SPI. Например, беспроводной модуль подключить уже не получится. Авторы библиотеки предлагают в качестве решения проблемы использовать другой интерфейс драйвера «bitbang». Он сравнительно медленнее SPI, но это проявляется только на действительно огромном количестве микросхем, соединённых в цепочку. Для использования интерфейса bitbang нужно в папке с библиотекой открыть файл Tlc5940/tlc_config.h и в строке 45 заменить
на
и переключить выводы драйвера:
Теперь библиотека драйвера не занимает SPI интерфейс, а сам драйвер полностью сохранил свою функциональность.
Напоминаю, микросхему у проверенного лично мной продавца можно здесь или сразу десяток со скидкой здесь. Ну а полный список товаров, которые я заказал и убедился в их качестве по ссылке: Где всё это купить?
—>—>Главная—> » 2011 » Июль » 25 » Чудо зверь «драйвер светодиодный» TLC5940NT
10:34 Чудо зверь «драйвер светодиодный» TLC5940NT |
Первая большая запись, которую здесь публикую, будет про интересную микросхему от TI TLC5940NT. Так что же это у нас такое?! Это микросхема управляющая светодиодами с возможностью регулировки яркости каждого из каналов, а всего в одной микросхеме их 16. Тоесть легко и просто подключить сразу 16 светодиодов или, например 5 полноцветных RGB добавить минимум деталей обвязки микросхемы и вуаля у нас всё красиво. Часто применяют для увеличения PWM каналов arduino Микросхема особенной популярностью пользуется зарубежом, ввиду ёё доступности в тех краях. У нас она не заслужила должного внимания из-за дефицита и цен на них. Но в данной статье постараюсь максимально и с примерами показать на пальцах крутость данной микросхемки. Что мы имеем, почитав основные данные из даташита на TLC5940NT: Число каналов: 16; Изменение яркости от 0 до 4096 (12битный ШИМ) (PWM) Нагрузка на канал до 120мА при питании свыше 3.6В; Питание 3-5В Последовательный интерфейс обмена информации; Возможность каскадного включения; И прочие вкусности, подробнее в даташите, его можно скачать с нашего сайта: <<скачать>> Спросите для чего нужна такая дорогая микросхема, если у меня много сдвиговых регистров улн2003 или транзисторов?! Ответ один — зачем придумывать велосипед, городить большую схему, тратить время на изготовление большой платы с большим количеством отверстий, городить большой мутный код в ардуино. Если всё делается значительно проще и всего на одной микросхеме, которая именно и предназначена для управления светодиодами, а то время, которое, потратили бы на «мудрый» код, схему, плату и море нервов потратьте на свою девушку, на себя любимого и т.д. Вопрос который особенно актуален в нашей стране (впрочем и везде) что стоит денег? 5$ она стоит в нашем магазине — скажете да это же целых 40грн, да я всё сделаю сам за 20 вместе со схемой и прочим. Народ не будьте мелочными это раз, а во вторых уже хлеб стоит дороже полбакса, а в третьих посчитайте своё время на полную реализацию вашей идеи на 1й микросхеме, или 4х (2 595 и 2 ULN2003) для того чтобы сделать управление с ШИМ 16 каналов по 80мА (5 светодиодов по 16мА на каждом канале). В конечном итоге пользователь, который строит на драйвере свою схему запускает её за час на простой макетке(минимум соединений и проводов позволяет быстро и просто сделать) со всеми светодиодами и кодом, а второй пользователь, который который пытается сэкономить ваяет огород со сдвиговых регистров, цепляет к выходам транзисторы (или сборки дарлингтона) , целая сеть проводов и соединений, а там небольшая ошибка пьет море крови и нервов — что может и не дойти до финала. А первый радуется своей идее и с чувством повышения своей самооценки снимает видео на ютуб_) Все диспуты на тему выбора прошу перенести в наш свежо испеченный форум. Что ж начнем наш опус. Что нам надо для запуска: 1. собственно ардуино (подойдёт любая модель); 2. «гвоздь» этой статьи TLC5940NT; 3. обвязка «гвоздя» целых 2 резистора; 5. светодиоды; 4. терпение и всё;) <o> По поводу резисторов. 1й нужен для подтяжки нуля (pull-down) — при сбросе ардуины светодиоды будут выключены. 2й нужен для установки тока светодиодов. Подробнее рассмотрим это. Расчёт идёт следующим образом: I=39,06/R R=39,06/I Если у вас хорошие светодиоды, то ток у них 20мА. Итак, на одном канале один светодиод то формула будет такой: R=39,06/0,02=1953 Ом округляем в большую сторону это 2000 Ом или 2кОм <o> Ниже схема подключения: Взято здесь: http://www.arduino.cc/playground/Learning/TLC5940 Что мы видим, так сразу подключили 32 светодиода, использовав всего 2 микросхемы и 3 резистора, не правда ли круто?! Приступаем теперь к кодингу. Для старта нам необходимо скачать библиотеку для ардуино здесь там же есть и примеры господа. На днях сами проведем эксперименты с этой микросхемой. Все новости буду в нашем блоге. Из разряда крутых реализаций: 8×8 большая матрица 8×8 RGB plasma effect from Ståle Kristoffersen on Vimeo. |
—>Просмотров—>:24345 | | |
—>Добавлять комментарии могут только зарегистрированные пользователи.—>[ —>Регистрация—> | —>Вход—> ] —>Используемые источники:
- https://mysku.ru/blog/aliexpress/39571.html
- https://uscr.ru/kak-podklyuchit-drajver-svetodiodov-tlc5940-k-arduino/
- http://www.odduino.com/blog/primery_s_tlc5940nt/2011-07-25-2