RG матрица на TLC5940

Denis_B
Offline
Зарегистрирован: 26.01.2016

Доброго времени суток! Прежде чем писать сюда, я долго искал информацию в инете, но все-же нужна помощь. Я только начал изучать Arduino, поэтому прошу сильно не ругать за корявые схемы и глупые вопросы.

Самый главный вопрос как мне сделать матрицу 5x5

И так задача:

Мне необходимо через Ethernet Shield принимать по сети данные и выводить их на 5х5 красно-зеленую матрицу (RG), проще говоря, на матрице должны рисоваться символы от зеленого цвета, до красного. Поэтому я хочу взять  TLC5940 т.к. он имеет аппаратный ШИМ.

Насколько я узнал, Ethernet Shield и TLC5940 используют интерфейс SPI, частичное решение есть здесь, и полное решение есть здесь.

Матрица:

Я попробовал нарисовать схему матрицы (собрать пока не могу, жду компоненты из Китая). Здесь 25 RB диодов с общим анодом, в каждой "строке" аноды соединены вместе и через p-канальные MOSFET транзистры (IRF4905) подключаются к 10-14 выводам TLC5940. Соответсвенно катоды соединены по "столбцам" и подключаются к 28, 1-9  выводам. Правильная-ли схема? И еще у меня вопрос по питанию, можно ли 5V тупо взять с ардуино?

PS На схеме я вместо светодиодов по ошибке нарисовал фотодиоды.

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Denis_B пишет:

можно ли 5V тупо взять с ардуино?

Можно, если у Вас есть ещё одна, т.к. эта умрёт быстро и безболезненно.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

каждая точка должна индивидульно менять яркость? если да просто с трудом представляю зачем 

Denis_B
Offline
Зарегистрирован: 26.01.2016

ЕвгенийП пишет:

Можно, если у Вас есть ещё одна, т.к. эта умрёт быстро и безболезненно.

Буду использовать mini360 для питания.

jeka_tm пишет:

каждая точка должна индивидульно менять яркость? если да просто с трудом представляю зачем 

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

Я открыл такую тему на амперке (я, надеюсь, правила форума не нарушаю этой ссылкой). Там мне частично подсказали, но не знаю на сколько правильно.

PS Извиняюсь за, вохможно, совершенно тупые вещи - я только учусь)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

почитай про max7219

Denis_B
Offline
Зарегистрирован: 26.01.2016

Ребят, я короче готов заплатить, но только чтоб мне кто нибудь помог разобраться. Мне уже должны скоро доставить TLC5940 (в ее пользу меня настраивает еще и то, что есть статья с решением проблемы ее одновоременной работы с Эзеренет шилдом).

Denis_B
Offline
Зарегистрирован: 26.01.2016

jeka_tm пишет:

почитай про max7219

Я так понял, у max7219, есть 16 уровней яркостей, впринципе - то что надо. Но у меня еще есть Ethernet shield, для библиотек TLC5940 есть решение проблемы. А вот с этой штукой, пока я читаю, не нашел. 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

16 уровней общей яркости. яркость короче регулируется для всех светодиодов сразу насколько помню

мне кажется самая проблема не код написать, а спаять все это дело

 

 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Так и есть)
Одна проблема с шилдом решается подачей "1" на CS драйвера во время работы с шилдом

Гриша
Offline
Зарегистрирован: 27.04.2014

Denis_B пишет:

jeka_tm пишет:

почитай про max7219

Я так понял, у max7219, есть 16 уровней яркостей, впринципе - то что надо. Но у меня еще есть Ethernet shield, для библиотек TLC5940 есть решение проблемы. А вот с этой штукой, пока я читаю, не нашел. 

ерундой страдаете, Ethernet shield - получит или передаст данные. max7219 - будет светить согласно алгоритму. вы путаете готовый проект с вашими потребностями.

max7219 - будет изменять яркость всех диодов одновременно, но и на TLC5940 - тоже по другому не сделаешь (почти так).

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

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

Denis_B
Offline
Зарегистрирован: 26.01.2016

Гриша пишет:

Denis_B пишет:

jeka_tm пишет:

почитай про max7219

Я так понял, у max7219, есть 16 уровней яркостей, впринципе - то что надо. Но у меня еще есть Ethernet shield, для библиотек TLC5940 есть решение проблемы. А вот с этой штукой, пока я читаю, не нашел. 

ерундой страдаете, Ethernet shield - получит или передаст данные. max7219 - будет светить согласно алгоритму. вы путаете готовый проект с вашими потребностями.

max7219 - будет изменять яркость всех диодов одновременно, но и на TLC5940 - тоже по другому не сделаешь (почти так).

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

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

Она у меня уже работает, колхозно, но работает. Принимает данные с эзернета и отображает, пока что, на 7 сегментом индикаторе через 74HC595. Если я возьму 2x max7219, я же могу регулировать яркость отдельно красных, отдельно зеленых диодов? И, получается, диоды нужны с общим катодом?

Logik
Offline
Зарегистрирован: 05.08.2014

ЕвгенийП пишет:

Denis_B пишет:

можно ли 5V тупо взять с ардуино?

Можно, если у Вас есть ещё одна, т.к. эта умрёт быстро и безболезненно.

Та ладно пугать, там тока диод Шотке выгорает, а он там не сильно и нужен, закоротить или перепаять, комнату проветрить и порядок.

Denis_B
Offline
Зарегистрирован: 26.01.2016

Как я думаю это сделать:

DC-DC преобразователь Mini360, дает на выходе 5В 1.8А, развожу параллельно на VIN и GND Ардуино; также "плюс" на каждый из 5ти сорсов транзистеров и "минус" к 20 выводу TLC через резистор.

Основной вопрос заключается в том, могу ли я гейты транзистеров подключить к выводам TLC? Или все таки лучше воткнуть их в свободные пины Ардуино?

Я делаю все на примере этого:  http://www.thebox.myzen.co.uk/Hardware/Mini_Monome.html

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Denis_B пишет:

Основной вопрос заключается в том, могу ли я гейты транзистеров подключить к выводам TLC?

Да, конечно. Более того, знающие люди говорят, что это можно делать даже без резисторов, т.к. TLC сама регулирует ток. Я лично перестраховываюсь и всё равно ставлю какой-нибудь небольшой резистор, хотя и понимаю, что здесь я неправ - этот резистор образует RC цепочку с затвором и увеличивает время переключения. 

Смысл резисторов в цепи затвора противоположен смыслу резистора в цепи базы биполярного транзистора. У биполярных он нужен, чтобы ограничить ток через базу (транзистор защитить), а у полевых наоборот - транзистор в начальный момент открывания новорит хапнуть оргомный ток (начало зарядки ёмкости - ток теоретически бесконечно большой), так что резистор нужен наоборот, чтобы всё остальное защитить от аппетитов транзистора :)

Denis_B
Offline
Зарегистрирован: 26.01.2016

ЕвгенийП пишет:

Да, конечно. Более того, знающие люди говорят, что это можно делать даже без резисторов, т.к. TLC сама регулирует ток. Я лично перестраховываюсь и всё равно ставлю какой-нибудь небольшой резистор, хотя и понимаю, что здесь я неправ - этот резистор образует RC цепочку с затвором и увеличивает время переключения. 

Смысл резисторов в цепи затвора противоположен смыслу резистора в цепи базы биполярного транзистора. У биполярных он нужен, чтобы ограничить ток через базу (транзистор защитить), а у полевых наоборот - транзистор в начальный момент открывания новорит хапнуть оргомный ток (начало зарядки ёмкости - ток теоретически бесконечно большой), так что резистор нужен наоборот, чтобы всё остальное защитить от аппетитов транзистора :)

Спасибо большое! А могли бы еще один момент объянсить: резистор на 20 пине, который уходит в землю, ограничевает ток на всех выводах. Допустим вместо 2кОм резистора ставлю 400Ом -> ток на выводах будет ограничен не 20мА, а ~100мА. Я это делаю потому, что у меня не один диод на выводе весит, а 5. Но если будет ситуация, что на этой линии будет гореть только один диод, то он походу сгорит. Соответственно чтобы этого не случилось, надо в программе задавать Dot correction для корректировки тока на каждом из выводах? Или я что-то не так понял?  

Гриша
Offline
Зарегистрирован: 27.04.2014

Denis_B пишет:

Спасибо большое! А могли бы еще один момент объянсить: резистор на 20 пине, который уходит в землю, ограничевает ток на всех выводах. Допустим вместо 2кОм резистора ставлю 400Ом -> ток на выводах будет ограничен не 20мА, а ~100мА. Я это делаю потому, что у меня не один диод на выводе весит, а 5. Но если будет ситуация, что на этой линии будет гореть только один диод, то он походу сгорит. Соответственно чтобы этого не случилось, надо в программе задавать Dot correction для корректировки тока на каждом из выводах? Или я что-то не так понял?  

если предполагается динамическа индикация т.е. в произвольный момент времени может гореть только один ряд диодов, то вы не правы т.к. каждой ноге достанется только один диод в каждый момент времени.

max7219 именно так работает, зажигает ряды поочереди

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы, знаете, можно, конечно и dot-correction, но если бы у меня было 5 светодиодов на одном питании, я бы ставил персональный резистор на каждый из них и ограничивал бы ток через диод персонально для каждого диода. В этом случае TLC-шка ограничивала бы общий ток (что в принципе бесполезно), и работала бы как ШИМ-котроллер, что и было бы её основной функцией.

Сейчас объясню почему бы я так сделал.

Двух одинаковых диодов не бывает в природе. Поэтому, если Вы дадите 100мА на 5 диодов, один сожрёт 25мА, а другой 15мА, ну, или типа того. В итоге они у Вас будут светиться с разной интенсивностью. Возможно (если диоды более или менее одинаковые) на глаз этого не будет заметно, а может и будет - как повезёт.

Кроме того, насколько я понял Вашу схему, Вы используете трёхногие RG-диоды, а не двухногие (двухногие жёлтыми не бывают - их можно только между зелёным и красным переключать - без смешивания цветов) .

В этом случае без доп. резисторов Вам никак не обойтись, т.к. R-линия и G-линия требуют РАЗНЫХ резисторов (токов). Если поставить одинаковые - цвет будет очень сильно заваливаться в сторону красного (т.к. красному светодиоду нужен больший резистор, чем зелёному).

Например, совсем недавно я делал индикацию на трёхногом RG светодиоде и мне нужно было, чтобы при одинаковых сингалах на R и G ногах цвет был жёлтым. Ток меня особо не волновал - 10мА или 6мА - лишь бы светился на глаз хорошо. Так вот красивого жёлтого цвета удалось добиться при сопротивлениях 220ом на зелёном и 1,8кОм на красном - более чем в шесть раз разница!!! Я час сидел, с разными резисторами эспериментировал. При этом если сигнал дать на одну ногу, то они светятся зелёным или красным с примерно равной интесивностью, а при одинаковых резисторах - красный заметно ярче. Светодиоды использовались вот такие.

Denis_B
Offline
Зарегистрирован: 26.01.2016

Григорий, вот как примерно должна работать матрица, плавно выводить символ держать их на экране и потом, при команде, программы менять его на следующий чуть другого оттенка. Т.е. постоянной анимации нет. Да, можно было не заморачиваться с ШИМ, плавными сменами символов и оттенками цветов, и тупо зажигать зеленый диод для зеленых символов, оба диода для желтого, и красный. 

Евгений, про это читал, в статье как собрать на 74HC595 RGB матрицу, что красные диоды потребляют меньше, и что вместо 220Ом, на них ставили 330Ом, но чтоб аж в 6 раз! Не могу проверить пока что (жду когда пришлют чипы), резисторы поставлю. Я про dot-correction написал, т.к. думал что будет проседать яркость диодов, когда все они будут гореть на линии.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Denis_B пишет:

 но чтоб аж в 6 раз!

Я тоже удивился, но это результат часовых экспериментов в поисках хорошего жёлтого цвета при смешивании зелёного и красного поровну. Сейчас эти резисторы и стоят в устройстве, которое уже эксплуатируется. Может светодиод дурной попался (мне там один всего нужен был), не знаю, с другими не пробовал.

Denis_B пишет:

Не могу проверить пока что (жду когда пришлют чипы), 

Так это без чипов проверяется. Возьмите светодиод, пару резисторов, подайте через резисторы на зелёную и красную ногу по 5В одинаково и посмотртие какой получился цвет. Подберите резисторы, чтобы жёлтый был красивым. Чипы для этого не нужны.

Кстати, напишите при каких резисторах у Вас хороший цвет получился, мне интересно.

Denis_B
Offline
Зарегистрирован: 26.01.2016

Диоды тоже пока не пришли, я первоначально хотел использовать RGB, но потом закал RG. Я имел ввиду проверить как себя будут вести 5 включенных диодов на одной линии. Но напишу обязательно при каких резисторах какой будет цвет.

Гриша
Offline
Зарегистрирован: 27.04.2014

сам не пробовал, но очень хотел испытать такую ленту, это не единственный контроллер RGB установленный на ленте. вот видео есть и это прикольное - тока ценник шальной

UPD ну в общем на таких контроллерах - WS2811 WS2812 WS2812B WS2801 WS2803 LPD8806 LED STRIP

Denis_B
Offline
Зарегистрирован: 26.01.2016

Да, прикольно. Я рассматривал похожий вариант на LPD6803

Denis_B
Offline
Зарегистрирован: 26.01.2016

А подскажите по поводу питания,все-таки, как правильнее всего подключить:

Есть: Адаптер 9V 1A (или около того), Преобразователь понижающий DC-DC на выход я настрою 5В (Дает 3А кратковременно, 1.8А постоянного тока) и сама ардуино.

1 Вариант 9V с адаптера в ардуино, также с этого адаптера в преобразователь для питания матрицы и регистра

2 Вариант 9V в преобразователь, из него в разъем питания Ардуино и параллельно этому питание матрицы и регистра

3 Вариант 9V в преобразователь, из него в VIN и GND Ардуино и параллельно этому питание матрицы и регистра

И общий вопрос: Т.к. все советуют использовать внешнее питание для TLC5940 то выходит, что:

Выводы SIN, SCLK, SOUT, XLAT, BLANK, GSCLK, VPRG, DCPRG -> Arduino

Выводы VCC, GND и IREF -> Внешний источник питния (преобразователь DC-DC) Или к внешнему источнику надо только IREF подключать?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Denis_B пишет:

Выводы SIN, SCLK, SOUT, XLAT, BLANK, GSCLK, VPRG, DCPRG -> Arduino

Выводы VCC, GND и IREF -> Внешний источник питния (преобразователь DC-DC) Или к внешнему источнику надо только IREF подключать?

Первое правило: что бы и как бы Вы не делали. GND у всех общий! Если у Вас хоть пять источников питания и десять потребителей - Все GND соединяем в одну кучу - GND общий для всех!

Дальше так. Если 5В стабилизированные, я бы питал Ардуину от них, через её разъём 5В. Если нет, то от 9В через разъём Vin.

Матрицу лучше питать от 5В, зачем лишнее напряжение резисторами гасить - атмосферу нагревать?

Ну, а TLC'шку только от 5В!  У неё же по даташиту абсолютный максимум Vcc - 6В!

Т.е. получается.

1) если 5В стабилизированные, 5В на всё (параллельно) и общий GND. При этом в ардуино используете пин +5V

2) ечли нет, то 9В на ардуино (пин Vin) и 5 В на матрицу и TLC'шку параллельно. Опять же GND общий для всех!

Denis_B
Offline
Зарегистрирован: 26.01.2016

ЕвгенийП пишет:

Т.е. получается.

1) если 5В стабилизированные, 5В на всё (параллельно) и общий GND. При этом в ардуино используете пин +5V

2) ечли нет, то 9В на ардуино (пин Vin) и 5 В на матрицу и TLC'шку параллельно. Опять же GND общий для всех!

Так? Мне просто говорили на амперке, что в Vin только 5В, типа что он с разъемом питния не связан.

И меня смущает, что в описании Ардуино написано 

  • 5V. Регулируемый источник напряжения, используемый для питания микроконтроллера и компонентов на плате. Питание может подаваться от вывода VIN через регулятор напряжения, или от разъема USB, или другого регулируемого источника напряжения 5 В. 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

На Vin подаётся от 6 до 20 вольт (лучше от 7 до 12). Они поступают на преобразователь, расположенный на плате Ардуино. На саму микросхему идут уже 5В. Если у Вас есть хорошие, стабилизированные 5В, лучше подать их прямо на ногу +5В (мимо регулятора, что на плате). А если есть сомнения, то лучше подайте 9В на Vin - пусть сам преобразовывает.

В том, что Вы процитировали имеется в виду не Ваш регулятор, а тот что на плате Ардуино. Вы на Vin подаёте 9,  а через "наплатный регулятор" на саму микросхему уже 5 приходит.

Denis_B
Offline
Зарегистрирован: 26.01.2016

Тогда я делаю по 2 варианту, как на рисунке. Спасибо

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Синий провод - GND? Ну, да.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Denis_B пишет:
...что красные диоды потребляют меньше, и что вместо 220Ом, на них ставили 330Ом, но чтоб аж в 6 раз! Не могу проверить...

Разы здесь довольно относительные.

Если, скажем, на одном диоде педение напряжения 2 В, а на другом 4.5 В, то напряжение, которое должен погасить резистор при питании от 5 В, как раз будет отличаться в 6 раз. А если еще и ток для приемлегого баланса цвета будет различаться...