Arlleex 1 Posted November 22, 2019 · Report post Приветствую! Хочу сделать многоканальный контроллер подсветки клавиатуры. Клавиатура достаточно больших размеров, порядка 1x1 метра. Кнопок порядка полусотни. Кнопки подсвечиваются светодиодами, сгруппированными по 4-8 штук. Как соединять (параллельно/последовательно) особой роли не играет. Сначала хотел сделать все на одной мелкой плате и выводить "силовую" лапшу на светодиоды непосредственно с нее. Но в силу возможной расширяемости устройства, хочу эту мелкую плату оставить лишь в роли управляющей. Для каждого индикатора (вернее, их 2 цвета под одной кнопкой) нужно управлять яркостью и логическим режимом - включена/выключена. Тянуть с управляющей платы сотню ШИМ-сигналов как-то совсем не хочется. Подумал, что можно рядом с каждой кнопкой поставить мелкий LED-драйвер, который и яркостью будет рулить, и к общей шине подключаться для управления. Стал искать микросхемы готовых LED-драйверов, но... все не то и все не так В общем, хочу подобрать LED-драйвер со следующими основными (для меня) характеристиками: 1. Корпус не BGA. 2. Минимальное количество внешних компонентов. 3. Питание самих светодиодов (желательно) не более 12В. 4. Свой внутренний, регулируемый программно, задатчик яркости. 5. 2 канала (под каждый цвет свой канал). 6. Не высокая цена (до 100р/шт.). 7. Управление по какой-нибудь одно- или двухпроводной шине (задание яркости, включение/выключение). Может есть какой-нибудь "народный" контроллер... Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Arlleex 1 Posted November 22, 2019 · Report post Нашел что-то подходящее. TLC59731 от Texas Instruments. Может, кому-то тоже будет интересно. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Plain 0 Posted November 22, 2019 · Report post 1 час назад, Arlleex сказал: порядка 1x1 метра 40 минут назад, Arlleex сказал: кому-то тоже будет интересно Если имеете ввиду 1 м2 стеклотекстолита, то вряд ли кому-то такое будет интересно, это не стройматериал. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Arlleex 1 Posted November 22, 2019 · Report post 6 минут назад, Plain сказал: Если имеете ввиду 1 м2 стеклотекстолита... А причем тут стеклотекстолит? Я про микросхему написал же. А нравится тем, что каскадное соединение поддерживает и дешевая очень. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
HardEgor 0 Posted November 22, 2019 · Report post ws2811, 2812 В общем смотрите сами Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 1 Posted November 22, 2019 · Report post STP16CPS05 Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Arlleex 1 Posted November 22, 2019 · Report post 2 часа назад, HardEgor сказал: В общем смотрите сами Тоже интересные варианты. Как я понимаю, в них можно прошить стартовые адреса, по которым контроллер на шине по количеству перепадов на линии данных определит, что данные адресованы ему. Прикольно. Но надежно ли? Ловим в середине посылки лишний клок и здрасьте приехали. Еще не понял, как задаются эти самые адреса. В первых гуглорядах продаются готовые программаторы адресов, которые я, естественно, покупать не хочу; если и надо установить адреса, то с управляющего МК один раз (в процессе настройки). Вопрос только - как. Сходу найти протокол раздачи адресов не удалось. Но если он есть в открытом доступе, то это очень круто, потому что этот самый WS2821 продается в любом продуктовом. К тому же DMX-512 - вроде как а-ля стандартизированный протокол, что есть хорошо. 1 час назад, Сергей Борщ сказал: STP16CPS05 К сожалению, и дороже, и в размерах больше моего варианта. Но и у моего есть минусы - что-то он малодоставаем, даже в местном Чип и Дипе не купить. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 1 Posted November 22, 2019 · Report post 2 минуты назад, Arlleex сказал: Как я понимаю, в них можно прошить стартовые адреса, Нет. Адресов как таковых нет. Просто каждый "светодиод", пропуская через себя поток данных, "откусывает" себе от его начала 3 или 4 байта. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
jcxz 4 Posted November 22, 2019 · Report post 4 минуты назад, Сергей Борщ сказал: Просто каждый "светодиод", пропуская через себя поток данных, "откусывает" себе от его начала 3 или 4 байта. Это называется соединение "daisy chain". 8 минут назад, Arlleex сказал: Но надежно ли? Ловим в середине посылки лишний клок и здрасьте приехали. Если такое допускать, то тогда любой обмен по SPI ненадёжен. Так как в любом такое может быть. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Arlleex 1 Posted November 22, 2019 · Report post 1 час назад, Сергей Борщ сказал: Нет. Адресов как таковых нет. Просто каждый "светодиод", пропуская через себя поток данных, "откусывает" себе от его начала 3 или 4 байта. Ну да, я и говорю. Но вот прочитал пару статей - пишут, что надо устанавливать стартовые адреса. Иначе как понять, какому светодиоду с какого бита в потоке данных начинать выдирать информацию. Полагаю, работает это так. Допустим, для простоты, одному светодиоду нужен 1 байт данных. Идет поток в 64 бита. Линии данных светодиодов соединены параллельно, на них заводится этот сигнал данных. Каждый светодиод, в зависимости от его адреса A, начинает отсчитывать количество бит A*8, после чего внутри разрешает прием во внутренний сдвиговый регистр, и откусывает себе байт. И так до STOP-бита (не знаю, как он там в DMX-512 правильно зовется). 1 час назад, jcxz сказал: Тогда любой обмен по SPI ненадёжен. Так как в любом такое может быть. Меня порадовало тут то, что сигнал данных заводится параллельно, а не как в сдвиговых регистрах микросхемы, предложенной мной - отвалится одна из них, и все что за ней тоже не будет работать. А в WS2821 - будет. Это, конечно, существенный плюс. Я, полагаясь на возможную неидеальность при передаче данных, предусматриваю периодическое обновление цепочки светодиодов; например, раз в 2 секунды заслать на всю эту цепочку то же самое логическое состояние, которое выставлено в управляющем МК. Так хотя бы вероятность получить неверно зажженный светодиод, который так и останется гореть, будет меньше. P.S. Хотя, я тут подумал, в варианте с TLC59731 можно завести SDO последней микросхемы на вход МК и мониторить то, что было отправлено (хотя бы косвенно по "болтанке" лог. уровня). И либо этот тест встроить в штатное ПО, работающее в цикле вместе с обновлением состояния индикаторов, либо проверять один раз при старте ПО (а-ля целостность аппаратуры). Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
jcxz 4 Posted November 22, 2019 · Report post 18 минут назад, Arlleex сказал: Ну да, я и говорю. Но вот прочитал пару статей - пишут, что надо устанавливать стартовые адреса. Иначе как понять, какому светодиоду с какого бита в потоке данных начинать выдирать информацию. По той ссылке, что Вы отквотили, описываются 2 протокола SPI и DMX. Так вот для случая SPI там описано подключение "daisy chain". Т.е. - адреса не нужны, а адресация осуществляется позицией в битовом потоке, как сказал Сергей. Среди минусов такого подключения, кроме указанных там, есть ещё такой: задержка распространения, накапливающаяся с ростом числа узлов в цепи. Что сильно ограничивает частоту SCLK. Если только в каждом узле преднамеренно не вносить задержку и в SCLK. Цитата Каждый светодиод, в зависимости от его адреса A, начинает отсчитывать количество бит A*8, после чего внутри разрешает прием во внутренний сдвиговый регистр, и откусывает себе байт. И так до STOP-бита (не знаю, как он там в DMX-512 правильно зовется). Не нужно ничего этого. По фронту сигнала CS (завершению передаваемого фрейма) данные из сдвигового регистра внутри каждого узла защёлкиваются в регистр данных. Какое было в этот момент значение в сдвиговом регистре - это и есть данные адресованные данному узлу. Далее - содержимое регистра данных используется до следующего фронта на CS. Так что адреса не нужны. 18 минут назад, Arlleex сказал: Меня порадовало тут то, что сигнал данных заводится параллельно, а не как в сдвиговых регистрах микросхемы, предложенной мной - отвалится одна из них, все что за ней тоже не будет работать. А в WS2821 - будет. Это, конечно, существенный плюс. Чтобы заводить параллельно, нужно прошивать адреса в каждый. А это уже - существенный минус на производстве. Да и дорожек больше и нагрузка на передатчик больше (в том числе емкостная) при большом числе узлов. Если будете подсвечивать например стандартную клавиатуру на каждую кнопку по 3 LED (RGB), то обычный выход МК имхо не потянет 102 приёмника. Надо будет буфер. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
HardEgor 0 Posted November 22, 2019 · Report post 33 минуты назад, Arlleex сказал: Как я понимаю, в них можно прошить стартовые адреса, по которым контроллер на шине по количеству перепадов на линии данных определит, что данные адресованы ему. Прикольно. Но надежно ли? Ловим в середине посылки лишний клок и здрасьте приехали. Тогда делайте подключение драйвера каждого светодиода дифференциальной линией (как в DMX и даже готовые чипы есть для RS-485). Да, дороговато и несколько сложнее, зато надежнее :) Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
jcxz 4 Posted November 22, 2019 · Report post 28 минут назад, Arlleex сказал: Ну да, я и говорю. Но вот прочитал пару статей - пишут, что надо устанавливать стартовые адреса. Иначе как понять, какому светодиоду с какого бита в потоке данных начинать выдирать информацию. Или Вы про какой чип/интерфейс говорили? Я про SPI. Типа WS2801 Там кстати и линия задержки для SCLK предусмотрена, так что с частотой SCLK не должно быть проблем. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Arlleex 1 Posted November 22, 2019 · Report post 1 час назад, jcxz сказал: По той ссылке, что Вы отквотили, описываются 2 протокола SPI и DMX. Так вот для случая SPI там описано подключение "daisy chain". Т.е. - адреса не нужны, а адресация осуществляется позицией в битовом потоке, как сказал Сергей. Это то да. Daisy chain - это, по сути, длинный сдвиговый регистр. 1 час назад, jcxz сказал: Не нужно ничего этого. По фронту сигнала CS (завершению передаваемого фрейма) данные из сдвигового регистра внутри каждого узла защёлкиваются в регистр данных. Какое было в этот момент значение в сдвиговом регистре - это и есть данные адресованные данному узлу. Так что адреса не нужны. Ну как это не нужно? И где в DMX-512 сигнал CS. Может, я поспешно выдвигаю идеи и свое видение, как это все работает, так что заранее извиняюсь, если несу фигню Просто даже в статье по той ссылке Цитата Для того, чтобы производить перезапись DMX адресов необходимы специальные редакторы, например RA-DMX-ID-WS2821. Некоторые модели пиксельных контроллеров имеют встроенные редакторы адресов, например, DMX K-1000D или DMX K-8000D. В процессе записи адресов используется провод с маркировкой ADR (ADI, ADIN), который впоследствии, для воспроизведения программ уже не применяется. Если в выбранном контроллере нет встроенного редактора или выхода для подключения провода ADI, то он должен быть соединен с общим проводом GND, что предотвратит влияние на него внешних помех и наводок. Цитата В итоге хотелось бы вкратце осветить положительные стороны обоих протоколов SPI и DMX. Преимущества оборудования использующего интерфейс SPI: 1. Не нужно записывать адреса, а значит, и покупать редактор адресов. (что намекает на то, что в DMX нужно) 2. Можно спокойно менять местами пиксели (отрезки ленты или модули), это не повлечет за собой изменения в рисунке эффекта. ... 58 минут назад, HardEgor сказал: Тогда делайте подключение драйвера каждого светодиода дифференциальной линией (как в DMX и даже готовые чипы есть для RS-485). Да, дороговато и несколько сложнее, зато надежнее :) Слишком жирно для такой задачи - я тоже сначала эту идею рассматривал невольно P.S. 50 минут назад, jcxz сказал: Или Вы про какой чип/интерфейс говорили? Я про SPI. Типа WS2801 Там кстати и линия задержки для SCLK предусмотрена, так что с частотой SCLK не должно быть проблем. да, теперь понял о чем шла речь Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
jcxz 4 Posted November 22, 2019 · Report post 3 минуты назад, Arlleex сказал: Ну как это не нужно? И где в DMX-512 сигнал CS. Внимательнее мой пост прочитайте: 20 минут назад, jcxz сказал: Так вот для случая SPI там описано подключение "daisy chain". Т.е. - адреса не нужны, а адресация осуществляется позицией в битовом потоке Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...