RG матрица на TLC5940
- Войдите на сайт для отправки комментариев
Доброго времени суток! Прежде чем писать сюда, я долго искал информацию в инете, но все-же нужна помощь. Я только начал изучать 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 На схеме я вместо светодиодов по ошибке нарисовал фотодиоды.
можно ли 5V тупо взять с ардуино?
Можно, если у Вас есть ещё одна, т.к. эта умрёт быстро и безболезненно.
каждая точка должна индивидульно менять яркость? если да просто с трудом представляю зачем
Можно, если у Вас есть ещё одна, т.к. эта умрёт быстро и безболезненно.
Буду использовать mini360 для питания.
каждая точка должна индивидульно менять яркость? если да просто с трудом представляю зачем
Нет, по-сути, необходимо просто выводить символы с градацией цвета от зеленого до красного. Поэтому можно чтоб все точки меняли яркость вместе. Проще говоря горят определенные "пиксели" и плавно начинают разгораться красные, а зеленые, в свою очередь, гаснут.
Я открыл такую тему на амперке (я, надеюсь, правила форума не нарушаю этой ссылкой). Там мне частично подсказали, но не знаю на сколько правильно.
PS Извиняюсь за, вохможно, совершенно тупые вещи - я только учусь)
почитай про max7219
Ребят, я короче готов заплатить, но только чтоб мне кто нибудь помог разобраться. Мне уже должны скоро доставить TLC5940 (в ее пользу меня настраивает еще и то, что есть статья с решением проблемы ее одновоременной работы с Эзеренет шилдом).
почитай про max7219
Я так понял, у max7219, есть 16 уровней яркостей, впринципе - то что надо. Но у меня еще есть Ethernet shield, для библиотек TLC5940 есть решение проблемы. А вот с этой штукой, пока я читаю, не нашел.
16 уровней общей яркости. яркость короче регулируется для всех светодиодов сразу насколько помню
мне кажется самая проблема не код написать, а спаять все это дело
Так и есть)
Одна проблема с шилдом решается подачей "1" на CS драйвера во время работы с шилдом
почитай про max7219
Я так понял, у max7219, есть 16 уровней яркостей, впринципе - то что надо. Но у меня еще есть Ethernet shield, для библиотек TLC5940 есть решение проблемы. А вот с этой штукой, пока я читаю, не нашел.
ерундой страдаете, Ethernet shield - получит или передаст данные. max7219 - будет светить согласно алгоритму. вы путаете готовый проект с вашими потребностями.
max7219 - будет изменять яркость всех диодов одновременно, но и на TLC5940 - тоже по другому не сделаешь (почти так).
из контекста ваших постов видно, что вы вообще не понимаете, как будет у вас работать вся система.
поэтому, начинайте описывать задумку и алгоритм ее работы - может вам вообще требуется совсем другое.
почитай про max7219
Я так понял, у max7219, есть 16 уровней яркостей, впринципе - то что надо. Но у меня еще есть Ethernet shield, для библиотек TLC5940 есть решение проблемы. А вот с этой штукой, пока я читаю, не нашел.
ерундой страдаете, Ethernet shield - получит или передаст данные. max7219 - будет светить согласно алгоритму. вы путаете готовый проект с вашими потребностями.
max7219 - будет изменять яркость всех диодов одновременно, но и на TLC5940 - тоже по другому не сделаешь (почти так).
из контекста ваших постов видно, что вы вообще не понимаете, как будет у вас работать вся система.
поэтому, начинайте описывать задумку и алгоритм ее работы - может вам вообще требуется совсем другое.
Она у меня уже работает, колхозно, но работает. Принимает данные с эзернета и отображает, пока что, на 7 сегментом индикаторе через 74HC595. Если я возьму 2x max7219, я же могу регулировать яркость отдельно красных, отдельно зеленых диодов? И, получается, диоды нужны с общим катодом?
можно ли 5V тупо взять с ардуино?
Можно, если у Вас есть ещё одна, т.к. эта умрёт быстро и безболезненно.
Та ладно пугать, там тока диод Шотке выгорает, а он там не сильно и нужен, закоротить или перепаять, комнату проветрить и порядок.
Как я думаю это сделать:
DC-DC преобразователь Mini360, дает на выходе 5В 1.8А, развожу параллельно на VIN и GND Ардуино; также "плюс" на каждый из 5ти сорсов транзистеров и "минус" к 20 выводу TLC через резистор.
Основной вопрос заключается в том, могу ли я гейты транзистеров подключить к выводам TLC? Или все таки лучше воткнуть их в свободные пины Ардуино?
Я делаю все на примере этого: http://www.thebox.myzen.co.uk/Hardware/Mini_Monome.html
Основной вопрос заключается в том, могу ли я гейты транзистеров подключить к выводам TLC?
Да, конечно. Более того, знающие люди говорят, что это можно делать даже без резисторов, т.к. TLC сама регулирует ток. Я лично перестраховываюсь и всё равно ставлю какой-нибудь небольшой резистор, хотя и понимаю, что здесь я неправ - этот резистор образует RC цепочку с затвором и увеличивает время переключения.
Смысл резисторов в цепи затвора противоположен смыслу резистора в цепи базы биполярного транзистора. У биполярных он нужен, чтобы ограничить ток через базу (транзистор защитить), а у полевых наоборот - транзистор в начальный момент открывания новорит хапнуть оргомный ток (начало зарядки ёмкости - ток теоретически бесконечно большой), так что резистор нужен наоборот, чтобы всё остальное защитить от аппетитов транзистора :)
Да, конечно. Более того, знающие люди говорят, что это можно делать даже без резисторов, т.к. TLC сама регулирует ток. Я лично перестраховываюсь и всё равно ставлю какой-нибудь небольшой резистор, хотя и понимаю, что здесь я неправ - этот резистор образует RC цепочку с затвором и увеличивает время переключения.
Смысл резисторов в цепи затвора противоположен смыслу резистора в цепи базы биполярного транзистора. У биполярных он нужен, чтобы ограничить ток через базу (транзистор защитить), а у полевых наоборот - транзистор в начальный момент открывания новорит хапнуть оргомный ток (начало зарядки ёмкости - ток теоретически бесконечно большой), так что резистор нужен наоборот, чтобы всё остальное защитить от аппетитов транзистора :)
Спасибо большое! А могли бы еще один момент объянсить: резистор на 20 пине, который уходит в землю, ограничевает ток на всех выводах. Допустим вместо 2кОм резистора ставлю 400Ом -> ток на выводах будет ограничен не 20мА, а ~100мА. Я это делаю потому, что у меня не один диод на выводе весит, а 5. Но если будет ситуация, что на этой линии будет гореть только один диод, то он походу сгорит. Соответственно чтобы этого не случилось, надо в программе задавать Dot correction для корректировки тока на каждом из выводах? Или я что-то не так понял?
Спасибо большое! А могли бы еще один момент объянсить: резистор на 20 пине, который уходит в землю, ограничевает ток на всех выводах. Допустим вместо 2кОм резистора ставлю 400Ом -> ток на выводах будет ограничен не 20мА, а ~100мА. Я это делаю потому, что у меня не один диод на выводе весит, а 5. Но если будет ситуация, что на этой линии будет гореть только один диод, то он походу сгорит. Соответственно чтобы этого не случилось, надо в программе задавать Dot correction для корректировки тока на каждом из выводах? Или я что-то не так понял?
если предполагается динамическа индикация т.е. в произвольный момент времени может гореть только один ряд диодов, то вы не правы т.к. каждой ноге достанется только один диод в каждый момент времени.
max7219 именно так работает, зажигает ряды поочереди
Вы, знаете, можно, конечно и dot-correction, но если бы у меня было 5 светодиодов на одном питании, я бы ставил персональный резистор на каждый из них и ограничивал бы ток через диод персонально для каждого диода. В этом случае TLC-шка ограничивала бы общий ток (что в принципе бесполезно), и работала бы как ШИМ-котроллер, что и было бы её основной функцией.
Сейчас объясню почему бы я так сделал.
Двух одинаковых диодов не бывает в природе. Поэтому, если Вы дадите 100мА на 5 диодов, один сожрёт 25мА, а другой 15мА, ну, или типа того. В итоге они у Вас будут светиться с разной интенсивностью. Возможно (если диоды более или менее одинаковые) на глаз этого не будет заметно, а может и будет - как повезёт.
Кроме того, насколько я понял Вашу схему, Вы используете трёхногие RG-диоды, а не двухногие (двухногие жёлтыми не бывают - их можно только между зелёным и красным переключать - без смешивания цветов) .
В этом случае без доп. резисторов Вам никак не обойтись, т.к. R-линия и G-линия требуют РАЗНЫХ резисторов (токов). Если поставить одинаковые - цвет будет очень сильно заваливаться в сторону красного (т.к. красному светодиоду нужен больший резистор, чем зелёному).
Например, совсем недавно я делал индикацию на трёхногом RG светодиоде и мне нужно было, чтобы при одинаковых сингалах на R и G ногах цвет был жёлтым. Ток меня особо не волновал - 10мА или 6мА - лишь бы светился на глаз хорошо. Так вот красивого жёлтого цвета удалось добиться при сопротивлениях 220ом на зелёном и 1,8кОм на красном - более чем в шесть раз разница!!! Я час сидел, с разными резисторами эспериментировал. При этом если сигнал дать на одну ногу, то они светятся зелёным или красным с примерно равной интесивностью, а при одинаковых резисторах - красный заметно ярче. Светодиоды использовались вот такие.
Григорий, вот как примерно должна работать матрица, плавно выводить символ держать их на экране и потом, при команде, программы менять его на следующий чуть другого оттенка. Т.е. постоянной анимации нет. Да, можно было не заморачиваться с ШИМ, плавными сменами символов и оттенками цветов, и тупо зажигать зеленый диод для зеленых символов, оба диода для желтого, и красный.
Евгений, про это читал, в статье как собрать на 74HC595 RGB матрицу, что красные диоды потребляют меньше, и что вместо 220Ом, на них ставили 330Ом, но чтоб аж в 6 раз! Не могу проверить пока что (жду когда пришлют чипы), резисторы поставлю. Я про dot-correction написал, т.к. думал что будет проседать яркость диодов, когда все они будут гореть на линии.
но чтоб аж в 6 раз!
Я тоже удивился, но это результат часовых экспериментов в поисках хорошего жёлтого цвета при смешивании зелёного и красного поровну. Сейчас эти резисторы и стоят в устройстве, которое уже эксплуатируется. Может светодиод дурной попался (мне там один всего нужен был), не знаю, с другими не пробовал.
Не могу проверить пока что (жду когда пришлют чипы),
Так это без чипов проверяется. Возьмите светодиод, пару резисторов, подайте через резисторы на зелёную и красную ногу по 5В одинаково и посмотртие какой получился цвет. Подберите резисторы, чтобы жёлтый был красивым. Чипы для этого не нужны.
Кстати, напишите при каких резисторах у Вас хороший цвет получился, мне интересно.
Диоды тоже пока не пришли, я первоначально хотел использовать RGB, но потом закал RG. Я имел ввиду проверить как себя будут вести 5 включенных диодов на одной линии. Но напишу обязательно при каких резисторах какой будет цвет.
сам не пробовал, но очень хотел испытать такую ленту, это не единственный контроллер RGB установленный на ленте. вот видео есть и это прикольное - тока ценник шальной
UPD ну в общем на таких контроллерах - WS2811 WS2812 WS2812B WS2801 WS2803 LPD8806 LED STRIP
Да, прикольно. Я рассматривал похожий вариант на LPD6803
А подскажите по поводу питания,все-таки, как правильнее всего подключить:
Есть: Адаптер 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 подключать?
Выводы 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 общий для всех!
Т.е. получается.
1) если 5В стабилизированные, 5В на всё (параллельно) и общий GND. При этом в ардуино используете пин +5V
2) ечли нет, то 9В на ардуино (пин Vin) и 5 В на матрицу и TLC'шку параллельно. Опять же GND общий для всех!
Так? Мне просто говорили на амперке, что в Vin только 5В, типа что он с разъемом питния не связан.
И меня смущает, что в описании Ардуино написано
На Vin подаётся от 6 до 20 вольт (лучше от 7 до 12). Они поступают на преобразователь, расположенный на плате Ардуино. На саму микросхему идут уже 5В. Если у Вас есть хорошие, стабилизированные 5В, лучше подать их прямо на ногу +5В (мимо регулятора, что на плате). А если есть сомнения, то лучше подайте 9В на Vin - пусть сам преобразовывает.
В том, что Вы процитировали имеется в виду не Ваш регулятор, а тот что на плате Ардуино. Вы на Vin подаёте 9, а через "наплатный регулятор" на саму микросхему уже 5 приходит.
Тогда я делаю по 2 варианту, как на рисунке. Спасибо
Синий провод - GND? Ну, да.
Если, скажем, на одном диоде педение напряжения 2 В, а на другом 4.5 В, то напряжение, которое должен погасить резистор при питании от 5 В, как раз будет отличаться в 6 раз. А если еще и ток для приемлегого баланса цвета будет различаться...