Jump to content

    

Умный LED-драйвер

Приветствую!

 

Хочу сделать многоканальный контроллер подсветки клавиатуры.

Клавиатура достаточно больших размеров, порядка 1x1 метра. Кнопок порядка полусотни.

Кнопки подсвечиваются светодиодами, сгруппированными по 4-8 штук. Как соединять (параллельно/последовательно) особой роли не играет.

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

Для каждого индикатора (вернее, их 2 цвета под одной кнопкой) нужно управлять яркостью и логическим режимом - включена/выключена. Тянуть с управляющей платы сотню ШИМ-сигналов как-то совсем не хочется.

Подумал, что можно рядом с каждой кнопкой поставить мелкий LED-драйвер, который и яркостью будет рулить, и к общей шине подключаться для управления. Стал искать микросхемы готовых LED-драйверов, но... все не то и все не так:dash2:

 

В общем, хочу подобрать LED-драйвер со следующими основными (для меня) характеристиками:

1. Корпус не BGA.

2. Минимальное количество внешних компонентов.

3. Питание самих светодиодов (желательно) не более 12В.

4. Свой внутренний, регулируемый программно, задатчик яркости.

5. 2 канала (под каждый цвет свой канал).

6. Не высокая цена (до 100р/шт.).

7. Управление по какой-нибудь одно- или двухпроводной шине (задание яркости, включение/выключение).

 

Может есть какой-нибудь "народный" контроллер...

Share this post


Link to post
Share on other sites

Нашел что-то подходящее.

TLC59731 от Texas Instruments.

Может, кому-то тоже будет интересно.

Share this post


Link to post
Share on other sites
1 час назад, Arlleex сказал:

порядка 1x1 метра

40 минут назад, Arlleex сказал:

кому-то тоже будет интересно

 

Если имеете ввиду 1 м2 стеклотекстолита, то вряд ли кому-то такое будет интересно, это не стройматериал.

Share this post


Link to post
Share on other sites
6 минут назад, Plain сказал:

Если имеете ввиду 1 м2 стеклотекстолита...

А причем тут стеклотекстолит? Я про микросхему написал же.

А нравится тем, что каскадное соединение поддерживает и дешевая очень.

Share this post


Link to post
Share on other sites
2 часа назад, HardEgor сказал:

Тоже интересные варианты.

Как я понимаю, в них можно прошить стартовые адреса, по которым контроллер на шине по количеству перепадов на линии данных определит, что данные адресованы ему. Прикольно. Но надежно ли? Ловим в середине посылки лишний клок и здрасьте приехали.

Еще не понял, как задаются эти самые адреса. В первых гуглорядах продаются готовые программаторы адресов, которые я, естественно, покупать не хочу; если и надо установить адреса, то с управляющего МК один раз (в процессе настройки). Вопрос только - как. Сходу найти протокол раздачи адресов не удалось. Но если он есть в открытом доступе, то это очень круто, потому что этот самый WS2821 продается в любом продуктовом. К тому же DMX-512 - вроде как а-ля стандартизированный протокол, что есть хорошо.

 

1 час назад, Сергей Борщ сказал:

STP16CPS05

К сожалению, и дороже, и в размерах больше моего варианта. Но и у моего есть минусы - что-то он малодоставаем, даже в местном Чип и Дипе не купить.

Share this post


Link to post
Share on other sites
2 минуты назад, Arlleex сказал:

Как я понимаю, в них можно прошить стартовые адреса,

Нет. Адресов как таковых нет. Просто каждый "светодиод", пропуская через себя поток данных, "откусывает" себе от его начала 3 или 4 байта.

Share this post


Link to post
Share on other sites
4 минуты назад, Сергей Борщ сказал:

Просто каждый "светодиод", пропуская через себя поток данных, "откусывает" себе от его начала 3 или 4 байта.

Это называется соединение "daisy chain".  :smile:

8 минут назад, Arlleex сказал:

Но надежно ли? Ловим в середине посылки лишний клок и здрасьте приехали.

Если такое допускать, то тогда любой обмен по SPI ненадёжен. Так как в любом такое может быть.  :unknw:

Share this post


Link to post
Share on other sites
1 час назад, Сергей Борщ сказал:

Нет. Адресов как таковых нет. Просто каждый "светодиод", пропуская через себя поток данных, "откусывает" себе от его начала 3 или 4 байта.

Ну да, я и говорю. Но вот прочитал пару статей - пишут, что надо устанавливать стартовые адреса. Иначе как понять, какому светодиоду с какого бита в потоке данных начинать выдирать информацию.

Полагаю, работает это так. Допустим, для простоты, одному светодиоду нужен 1 байт данных. Идет поток в 64 бита. Линии данных светодиодов соединены параллельно, на них заводится этот сигнал данных.

Каждый светодиод, в зависимости от его адреса A, начинает отсчитывать количество бит A*8, после чего внутри разрешает прием во внутренний сдвиговый регистр, и откусывает себе байт. И так до STOP-бита (не знаю, как он там в DMX-512 правильно зовется).

 

1 час назад, jcxz сказал:

Тогда любой обмен по SPI ненадёжен. Так как в любом такое может быть.  :unknw:

Меня порадовало тут то, что сигнал данных заводится параллельно, а не как в сдвиговых регистрах микросхемы, предложенной мной - отвалится одна из них, и все что за ней тоже не будет работать. А в WS2821 - будет. Это, конечно, существенный плюс.

Я, полагаясь на возможную неидеальность при передаче данных, предусматриваю периодическое обновление цепочки светодиодов; например, раз в 2 секунды заслать на всю эту цепочку то же самое логическое состояние, которое выставлено в управляющем МК. Так хотя бы вероятность получить неверно зажженный светодиод, который так и останется гореть, будет меньше.

 

P.S. Хотя, я тут подумал, в варианте с TLC59731 можно завести SDO последней микросхемы на вход МК и мониторить то, что было отправлено (хотя бы косвенно по "болтанке" лог. уровня). И либо этот тест встроить в штатное ПО, работающее в цикле вместе с обновлением состояния индикаторов, либо проверять один раз при старте ПО (а-ля целостность аппаратуры).

Share this post


Link to post
Share on other sites
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 приёмника. Надо будет буфер.

Share this post


Link to post
Share on other sites
33 минуты назад, Arlleex сказал:

Как я понимаю, в них можно прошить стартовые адреса, по которым контроллер на шине по количеству перепадов на линии данных определит, что данные адресованы ему. Прикольно. Но надежно ли? Ловим в середине посылки лишний клок и здрасьте приехали.

Тогда делайте подключение драйвера каждого светодиода дифференциальной линией (как в DMX и даже готовые чипы есть для RS-485).

Да, дороговато и несколько сложнее, зато надежнее :)

Share this post


Link to post
Share on other sites
28 минут назад, Arlleex сказал:

Ну да, я и говорю. Но вот прочитал пару статей - пишут, что надо устанавливать стартовые адреса. Иначе как понять, какому светодиоду с какого бита в потоке данных начинать выдирать информацию.

Или Вы про какой чип/интерфейс говорили? Я про SPI. Типа WS2801  :smile:  Там кстати и линия задержки для SCLK предусмотрена, так что с частотой SCLK не должно быть проблем.

Share this post


Link to post
Share on other sites
1 час назад, jcxz сказал:

По той ссылке, что Вы отквотили, описываются 2 протокола SPI и DMX. Так вот для случая SPI там описано подключение "daisy chain". Т.е. - адреса не нужны, а адресация осуществляется позицией в битовом потоке, как сказал Сергей.

Это то да. Daisy chain - это, по сути, длинный сдвиговый регистр.

 

1 час назад, jcxz сказал:

Не нужно ничего этого. По фронту сигнала CS (завершению передаваемого фрейма) данные из сдвигового регистра внутри каждого узла защёлкиваются в регистр данных. Какое было в этот момент значение в сдвиговом регистре - это и есть данные адресованные данному узлу. Так что адреса не нужны.

Ну как это не нужно? И где в DMX-512 сигнал CS. Может, я поспешно выдвигаю идеи и свое видение, как это все работает, так что заранее извиняюсь, если несу фигню:biggrin:

Просто даже в статье по той ссылке

Цитата

Для того, чтобы производить перезапись 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).

Да, дороговато и несколько сложнее, зато надежнее :)

Слишком жирно для такой задачи - я тоже сначала эту идею рассматривал невольно:biggrin:

 

P.S.

50 минут назад, jcxz сказал:

Или Вы про какой чип/интерфейс говорили? Я про SPI. Типа WS2801  :smile:  Там кстати и линия задержки для SCLK предусмотрена, так что с частотой SCLK не должно быть проблем.

да, теперь понял о чем шла речь:smile:

Share this post


Link to post
Share on other sites
3 минуты назад, Arlleex сказал:

Ну как это не нужно? И где в DMX-512 сигнал CS.

Внимательнее мой пост прочитайте:

20 минут назад, jcxz сказал:

Так вот для случая SPI там описано подключение "daisy chain". Т.е. - адреса не нужны, а адресация осуществляется позицией в битовом потоке

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this