Jump to content

    

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

Recommended Posts

Arlleex

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

 

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

Клавиатура достаточно больших размеров, порядка 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

Plain
1 час назад, Arlleex сказал:

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

Arlleex
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

jcxz
4 минуты назад, Сергей Борщ сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites

Arlleex
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

jcxz
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

HardEgor
33 минуты назад, Arlleex сказал:

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Arlleex
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

jcxz
3 минуты назад, Arlleex сказал:

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

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

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

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.