Последовательное соединение большого кол-ва tlc5940

aesculap
Offline
Зарегистрирован: 26.10.2013

Дети сподвигли сделать новый LCD куб...
Теперь это  RGB 12х12х12

начал проектировать схему. Остановился на варианте с 27 tlc5940.

Собрал прототип на трех чипах. Поднял его с ардуино UNO и известной библиотекой TLC5940.

Первые эксперименты показались убедительными.

Но оказалось, что библиотека не работает при увеличении числа чипов более 16.

Возможно это ограничения UNO, а на более скоростных моделях будет работать?...

Проверить у меня пока нет возможности.
Однако появилась мысль разделить весь банк чипов (27шт) на 3 по 9...
по 9 на RED, GREEN и BLUE и программировать их по очереди.

Но тут другая проблема. Библиотека работате с четко прописанными пинами и не предполагает их изменения, тем более на лету.  

Как сделать возможным работу с тремя банками по 9 чипов

с одним ардуино и библиотекой TLC5940?

Поделитесь идеями, у кого они есть...   

ales2k
Offline
Зарегистрирован: 25.02.2013

Сталкивался при проектировании часов - нужно второй раз вызвать конструктор для новых 16 и использовать дополнительный пин для чип селекта.

aesculap
Offline
Зарегистрирован: 26.10.2013

А там в библиотеке я не нашел никаких конструкторов...
Она просто тупо работает с казанными пинами

 

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

MAX7219 - обслуживают матрицу светодиодную 8х8 = 64 диода и линкуются без проблем. Работал с ними когда делал дисплей было слинковано 6 штук. информация на них отправляется последовательно.

64 больше чем 16 - значит нужно будет меньше микросхем.

aesculap
Offline
Зарегистрирован: 26.10.2013

12х12 = 144 * 3(rgb) = 432 диода 

7шт MAX7219 понадобится. Это хорошо, но...

Но мне бы с ШИМ нужно...
Я уже остановился на 
TLC5940.

Задача: запустить!
 

axill
Offline
Зарегистрирован: 05.09.2011

Max7219 с шим, можно задавать яркость от 0 до 15, на все 64 светодиода выставляется одна яркость

ales2k
Offline
Зарегистрирован: 25.02.2013

C Max7219 можно использовать внешний ШИМ вместо задающего резистора. Отлично работает.

 

Конструктор - имел ввиду конструкцию языка С++ создающую новый объект описанный в библиотеке

axill
Offline
Зарегистрирован: 05.09.2011

Зачем внешний шим делать поверх встроенного?

ales2k
Offline
Зарегистрирован: 25.02.2013

Если хочется более плавной регулировки яркости. Днем самая яркая слишком тускло или ночью самая тусклая слишком ярко.

sds
Offline
Зарегистрирован: 29.10.2012

По даташиту возможно последовательное подключение до 40 устройств

Figure 22 shows a cascading connection of n TLC5940 devices connected to a controller, building a basic module of an LED display system. The maximum number of cascading TLC5940 devices depends on the application system and is in the range of 40 devices. Equation 10 calculates the minimum frequency needed:

(GSCLK) =  4096 * f(update)
(SCLK) =  193 * f(update) * n
where:
  f (GSCLK) : minimum frequency needed for GSCLK
  f (SCLK) : minimum frequency needed for SCLK and SIN
  f (update) : update rate of whole cascading system
  n: number cascaded of TLC5940 device
 
Т.е. при работе на кварце 16МГц и 16 TLC итоговая частота ШИМа будет примерно 5к, что не так и много (16000000/193/16). Скорей всего связано с этим. 5к - это в теории, реально - меньше
 
Каждая пачка данных занимает 192 бита (12 бит на канал * 16 каналов). Возможно, в стандартной либе где-то есть счетчик, "обрубающий" "лишние" TLC. Или их максимальное количество зависит в либе от F_CPU
 
Попробуйте порыться в этом направлении
aesculap
Offline
Зарегистрирован: 26.10.2013

Спасибо, SDS! Я мечтал в этом направлении, но по моему все уперлось дествительно в недостаточную частоту (16 мгц).

Сейчас посчитаем....

куб 12х12х12 rgb 

Слой: 144 диода, но RGB значит х3 = 432

нужно 432/16 = 27 чипов tlc5940. Это не 40, что уже радует.

Далее....

 Частота мультиплексирование слоев должна быть не менее 1500 гц а лучше 1750-2000 гц

Посчитаем с 2000 гц

Частота обновления кадра 2000/12 = 166 гц время на построение кадра должно быть не более 

6 мс. Вот!

То есть за эти 6 мс контроллер должен залить данные в 27 чипов аж 12 раз.

(GSCLK) =  4096 * 2000 = 8192000 гц
(SCLK) =  193 * 2000 * 27 = 10422000 гц
where:
  f (GSCLK) : minimum frequency needed for GSCLK
  f (SCLK) : minimum frequency needed for SCLK and SIN
  f (update) : update rate of whole cascading system
  n: number cascaded of TLC5940 device

Цифры вроде подъемные... или я чего не так посчитал?

Но тут другое.

В библиотеке про ограничения ни слова нет. В тексте (бегло) я явных ограничений не увидел.

Но в эксперименте (я собрал последовательность из 3 чипов) стал менять библиотечное число чипов.

16 еще работает, а далее 17 глюки, 18 глюки, а далее вообще тишина. Светодиоды не светятся.

Возможно там программирование таймеров выполняется исходя из числа чипов. Пойду почитаю либу еще.

Интересно, а существует параллельное соединение TLC5940? НУ по типу параллельного соединения SPI устройств.
Там правда есть нога "выбора раба" SS, а у TLC5940 такой ноги нет. 

 

sds
Offline
Зарегистрирован: 29.10.2012

Со "стандартной" либой у меня отношения не сложились :)

Погуглите доку "Demystifying-the-TLC5940.pdf". Там вся работа с ней разобрана до мелочей. Сам пользуюсь одним из примеров из этой pdf, адаптированным под собственные нужды. Но с таким количеством чипов дел не имел.

Кстати, там же, в приложениях, есть схема по подключению RGB LED к TLC с задействованием 1 выхода TLC. Но, насколько вижу, за счет потери ШИМа между цветами одного LED. Т.е. нельзя установить отдельно яркость конкретного цвета конкретного led - все цвета одного led регулируются одновременно

 

>> Слой: 144 диода, но RGB значит х3 = 432

Так у Вас ведь еще и 12 слоев! Итого 432*12=5184 led

Или как-то надо переключать эти 27 TLC между слоями LED. Пока не понимаю как это сделать, но на частоту обновления картинки с целом это явно не будет влиять лучшим образом

>> Интересно, а существует параллельное соединение TLC5940?

Похоже, что нет. Да и принципом работы этой и им подобных IC это исключается.

А так - еще 5 проводков с МК и вот параллельная схема. Но сам не проверял :)

Только SPI уже заюзать не получится. Возвращаю Вас все к той же "Demystifying-the-TLC5940.pdf"

sds
Offline
Зарегистрирован: 29.10.2012

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

Да и сам я "только учусь" :)

 

У меня в коде и в стандартной либе SPI настраивается как "SPI, Master, set clock rate fck/2". Т.е. частота уже меньше в 2 раза

В либе, кстати, есть настройки "точности" ШИМа. Если не гнаться за 12-ти кратной плавной настройкой, то ширину пакета данных (16 каналов * разрядность ШИМ) можно уменьшить, тем самым пропихнув больше данных при тех же 16МГц. Наверное, можно

Ну и где-то в таймере может быть дело. Возможно, до 17-го чипа просто дело не доходит и все обрубается (выходит на новый цикл) ранее

Еще нужно посмотреть на разрядность типов данных для переменных. 16 - слишком круглое число :) Вполне, где-нибудь есть переменная, в которую данные просто не влезают и тогда получаются крутые глюки по программе с прегрешениями на все вокруг, кроме самой программы

aesculap
Offline
Зарегистрирован: 26.10.2013

Demystifying the TLC5940...читаю.

Автор крут! Классно все излагает. Понятие приходит налету.

Надо попробовать запустить его либу и попробовать под ней.

Это мне в ардуине нужно сначала перепрошить fuse CLKO.

Сейчас займусь!!! 

aesculap
Offline
Зарегистрирован: 26.10.2013
Вон оно чо, Михалыч...
Читать нужно внимательно...:)
/** If more than 16 TLCs are daisy-chained, the channel type has to be uint16_t.
    Default is uint8_t, which supports up to 16 TLCs. */
#define TLC_CHANNEL_TYPE    uint8_t
 
ales2k
Offline
Зарегистрирован: 25.02.2013

Офтоп:

Еще одно доказательство что в ардуино многие траблы из-за жуткой экономии на памяти и ее постоянной нехватке, неужели производителю настолько дороже было встроить в проц, например Atmega328 хотяб 128 кил?

aesculap
Offline
Зарегистрирован: 26.10.2013

РАботает все...

1 вариант есть....

теперь займусь Demystifying the TLC5940

aesculap
Offline
Зарегистрирован: 26.10.2013

Спасибо за совет!
Библиотека впечатлила своей простотой, внятностью и мощью...
Запустил я всю эту байду на ардуине...Написал несколько скетчей тестовых...
указал 27 чипов...все летает. Правда я не включил пока все 27 чипов, но не думаю, что и с ними все будет почти так же. ибо у них быстродействие до 30 мгц, т.е. они не должны вызвать физической задержки.

Хотя может быть я и не прав.

В любом случае тема банков отпала. все 27 включу в серию.

А либа кайфовая. Респект Мэтью Пандине.

А книгу надо бы на русский перевести и как пособие наглядное торжества разума над микросхемами выложить...

FastCat
Offline
Зарегистрирован: 30.01.2014

aesculap пишет:

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

Как поживает ваш RGB Led Cube, доделали ?

С Вами можно приватно связаться ?

Есть несколько вопросов...

Мой E-Mail: fastcat@land.ru

 

aesculap
Offline
Зарегистрирован: 26.10.2013

Пишу в личку...

aesculap
Offline
Зарегистрирован: 26.10.2013

Пишу в личку...

aesculap
Offline
Зарегистрирован: 26.10.2013

Пишу в личку...

aesculap
Offline
Зарегистрирован: 26.10.2013

Финал....Апофеоз!!!
https://www.youtube.com/watch?v=XVlsx6g5pds