Глюки с матрицами 8X8 MAX7219
- Войдите на сайт для отправки комментариев
Пнд, 29/07/2019 - 00:28
Привет. Столкнулся с непонятной проблемой. Сделал 3 бегущие строки на модулях 8х8 МАХ7219 размером 1х12 символов и 2х16 символов. Везде одна и та-же проблема, при подаче питания всегда работают как правило первые 4 модуля, которые конструктивно идут на одной плате. Начиная с 5 модуля ничего не работает. После нажатия на Reset гарантировано начинают работать все модули. Библиотека Adafrut+Max72xxPanel. Кто сталкивался?
Ройте разводку питания. ИМХО.
инициализацию сделайте с паузами и после инициализации паузу, должно помочь. хотябы 10мс
питание не при чем. задержки ставил не помогает. Делал программный сброс переходом на адресс 0, програмно-аппаратный сброс - тоже не помогает, всесьма странно. Кнопкой помогает, дерганием из программы ноги Reset - не помогает. Может кнопка как-то подругому сбрасывает?
Подымаю тему. Может кому пригодится. Дело действительно в питании, но проявляется вот так интерестно как описано в топе, или так "при включении ардуино, некоторые матрицы не запускаются, причем всегода разные, может 4 последние не включаться, может 5 и 8 не включиться".
Первое на что обратить внимание- какое напряжени на каждой из матриц. Должно быт близко к 5В, как на первой матрице, так и на последней. Если подать питание на первую матрицу, при 24 матрицах подключенных последовательно, на первой будет 5В а на последней 3,2в.
Связано это с тем, что дорожки на платах, на которых набраны матрицы тонкие. А матрицы потребляют достаточно большой ток. Как итог при подключени последовательно более 8 матриц можем наблюдать не включение определенных матриц из за просатки напряжения.
Я решил проблему так - кидал питание от первой матрицы отдельными проводами к 12матрице, и к 24 матрице. И то иногда не всегда зажигались все сегменты. Связано это скорее всего с тем, что при включении все 24матрицы зажигаются всеми пикселями, а после инициализации гаснут. В момент зажигания идет большая просадка по питанию и некоторым матрицам не хватает питания для инициализации. Поэтому совет:
- используйте блок питания 5В с запасом, проверяйте его под нагрузкой, чтобы он не давал просадку по питанию, исходя из количества подключенных матриц, включенных на полную яркость всеми пикселями;
-не пытайтесь запитывать матрицы от питания Ардуины, которое пришло по USB (например для ардуино Мега, Нано и т.д) если у вас более 12 матриц. Особенно это касается того случая, если вы запитываетесь от порта USB компьютера;
-не пытайтесь запитывать матрицы от встроенного стабилизатора Ардуины, если у вас более 12 матриц. Стабилизатор будет сильного греться, и может со временем выйти из строя;
- соединяйте блок питания и матрицы проводами достаточного сечения, чтобы исключить просадку напряжения. При выборе сечения проводов учитывайте их длину;
-подключайте матрицы напрямую к проводам от блока питания, и параллельно подключайте Ардуину, а не сначала Ардуину, а к ней матрицы;
- разбейте матрицы на условные группы, например по 8шт, и подавайте питание дополнительными проводниками в начало каждой группы.
-после того как все собрали, включите все матрицы на полную яркость, зажгите все пикселы. Проконтроллируйте, чтобы на каждую матрицу поступало напряжение 5В.
Надеюсь кому-то это поможет.
Вы где такие матрицы брали?
То есть я знаю, что их продают во всех радиомагазинах, но блин дорого! А я бы с удовольствием приобрел пару их много, но дешево...
Я тебе больше скажу, вот тут
-не пытайтесь запитывать матрицы от питания Ардуины, которое пришло по USB (например для ардуино Мега, Нано и т.д) если у вас более 12 матриц. Особенно это касается того случая, если вы запитываетесь от порта USB компьютера;
-не пытайтесь запитывать матрицы от встроенного стабилизатора Ардуины, если у вас более 12 матриц. Стабилизатор будет сильного греться, и может со временем выйти из строя;
надо 12 заменить на 1.
Я тебе больше скажу, вот тут
-не пытайтесь запитывать матрицы от питания Ардуины, которое пришло по USB (например для ардуино Мега, Нано и т.д) если у вас более 12 матриц. Особенно это касается того случая, если вы запитываетесь от порта USB компьютера;
-не пытайтесь запитывать матрицы от встроенного стабилизатора Ардуины, если у вас более 12 матриц. Стабилизатор будет сильного греться, и может со временем выйти из строя;
надо 12 заменить на 1.
ну 1 это совсем грубо. Например у ардуино Мега стабилизатор по даташиту выдерживает до 800мА. Если нагрузить его током 12х0,03А =360мА, то страшного ничего не произойдет. Будет греться, но для отладки пойдет. Для конечного проекта конечно надо все расчитывать.
Единственное для меня остается не выясненным то, что после нажатия кнопки Reset все проблемы с незагоревшимися матрицами уходят. Все отлично работает, даже с дикой просадкой напряжения.
Почему не помогает дергание Reset программно-аппаратным способом или просто програмный сброс?
заказывал на TaoBao. Вышло что-то около 3$ с доставкой за плату, на которой собрано 4 модуля.
у ардуино Мега стабилизатор по даташиту выдерживает до 800мА. Если нагрузить его током 12х0,03А =360мА,
Забавный расчет... потребление светодиодной матрицы 8х8 светодиодов явно больше 0.03А во включенно состоянии
0.03 А - это скорее всего номинальный ток одного светодиода, а в матрице их 64.....
у ардуино Мега стабилизатор по даташиту выдерживает до 800мА. Если нагрузить его током 12х0,03А =360мА,
Забавный расчет... потребление светодиодной матрицы 8х8 светодиодов явно больше 0.03А во включенно состоянии
0.03 А - это скорее всего номинальный ток одного светодиода, а в матрице их 64.....
допустимый ток до 40 ма на диод,общее потребление 1 сборки - до 330 ма.
TFM, страница 10:
Подымаю тему. Может кому пригодится. Дело действительно в питании, но проявляется вот так интерестно как описано в топе, или так "при включении ардуино, некоторые матрицы не запускаются, причем всегода разные, может 4 последние не включаться, может 5 и 8 не включиться".
Одновременно 8 горят, это если у вас там цифра "1". А если "8" или что то на букву "Ж" решите написать?
При 40 мА на диод, вся матрица (8*8=64 диода) при полной засветке сожрет 2,56 ампера. Ну и ардуинку до кучи.
Одновременно 8 горят, это если у вас там цифра "1". А если "8" или что то на букву "Ж" решите написать?
При 40 мА на диод, вся матрица (8*8=64 диода) при полной засветке сожрет 2,56 ампера. Ну и ардуинку до кучи.
Одновременно горит один столбец из 8-ми, там динамическая индикация.
Да согласен, даташит не посмотрел на матрицу, а взял инфу где-то на этом-же форуме. Могу дать инфу по факту: 24 матрицы подключены последовательно и собраны в 2 ряда по 12шт. Это дисплей для весов. Используется шрифт двойной величины. При полном заполнении цифрами всего табло, ток потребления около 1,5А.
Так-же по факту могу сказать что сейчас собрана бегущая строка на 8 матрицах, подключена к Меге. Все работает на максимальной яркости, только запускается после Reset, как я описывал.
И да, в даташитах указывается ток потребления одним модулем 330мА. Значит расчет блока питания и проводов надо брать исходя из этого значения.
а что вы не взяли матрицы 32х16
а что вы не взяли матрицы 32х16
Я могу ответить: они слишком высокие. Для некоторых проектов размер матриц 8*8 самое то. К сожалению, их практически сняли с производства и сейчас на алишках и таобаах распродают ардуинщикам остатки со складов. Остатков много, надо сказать... Может где то даже еще и производят мелкими партиями.
Но для меня в свое время большим ударом стало, что полностью исчезли панели из этих матриц под HUB12. Эти панели идеально подходили под информационные табло в помещениях - с шагом 3,75 или 4,75 мм они дают шикарное разрешение для текста. ДМД их потянул бы, кстати....
https://www.alibaba.com/product-detail/P3-75-dot-matrix-LED-display_62019432738.html?spm=a2700.7724838.2017115.13.3f8e1c32j39Mrm
Вот она, но я на 90% уверен, что продавец скажет: в наличии нет, изготовим под заказ большой партией и совсем не дешево. Два года назад я пытался купить в Китае партию таких матриц. Не смог уже тогда, а за моей спиной была не слабая такая организация.
Для b707:
сколько ни мучался, не смог найти готовых библиотек, позволяющих под ардуиной набирать матрицы в длину, для бегущей строки под подобные модули. А писать самому библитеку нет ни времени , ни желания.
Конечно библиотек не будет, потому что все ленивые жопы.
Для b707:
сколько ни мучался, не смог найти готовых библиотек, позволяющих под ардуиной набирать матрицы в длину, для бегущей строки под подобные модули. А писать самому библитеку нет ни времени , ни желания.
Если вы про матрицы DMD р10 как у меня на картинке - то готовые библиотеки есть - две основные, DMD и DMD2, работающие на Ардуино и ЕСП8266. Поддерживают набор матриц и в длину и в высоту. бегущие строки и прочее и прочее...
Есть еще несколько специальных библиотек, например для плат СТМ32... к одной из них я имею непосредственное касательство :) обращайтесь
а что вы не взяли матрицы 32х16
Я могу ответить: они слишком высокие. Для некоторых проектов размер матриц 8*8 самое то. К сожалению, их практически сняли с производства и сейчас на алишках и таобаах распродают ардуинщикам остатки со складов. Остатков много, надо сказать... Может где то даже еще и производят мелкими партиями.
Но для меня в свое время большим ударом стало, что полностью исчезли панели из этих матриц под HUB12. Эти панели идеально подходили под информационные табло в помещениях - с шагом 3,75 или 4,75 мм они дают шикарное разрешение для текста. ДМД их потянул бы, кстати....
https://www.alibaba.com/product-detail/P3-75-dot-matrix-LED-display_62019432738.html?spm=a2700.7724838.2017115.13.3f8e1c32j39Mrm
Вот она, но я на 90% уверен, что продавец скажет: в наличии нет, изготовим под заказ большой партией и совсем не дешево. Два года назад я пытался купить в Китае партию таких матриц. Не смог уже тогда, а за моей спиной была не слабая такая организация.
Те модули что я использую, и скорее всего и ваши, можно использовать только для статического изображения. При организации бегущей строки более чем на 16 последовательно подключенных модулях уже будет дергаться изображение. При меньшем количестве модулей более-менее плавно скроллит, но как-то размазано, нет четкости.
Пытался увеличить частоту SPI в ардуине, ничего не получилось.
RainMan я бы ни вашем месте начинал бы сразу с СТМ работать. Атмега не тянет больше 12 модулей, у ЕСП тоже есть свои проблемы. Насколько я знаю, СТМ сейчас самая удачная платформа на эту тему.
b707 давно хотел спросить, ка в вашей библиотеке с длиной экрана, есть ограничения по пикселям в длину?
b707 давно хотел спросить, ка в вашей библиотеке с длиной экрана, есть ограничения по пикселям в длину?
координаты описаны в типе uint16_t - то есть теоретически до 65К пикселей :)
Реальные размеры можно у lean74 спрашивать - он вроде 47 модулей матриц в длину подключал :)
Одновременно 8 горят, это если у вас там цифра "1". А если "8" или что то на букву "Ж" решите написать?
При 40 мА на диод, вся матрица (8*8=64 диода) при полной засветке сожрет 2,56 ампера. Ну и ардуинку до кучи.
RTFM.
Так и не понял, как сделать, чтобы матрицы загорались при включении питания. У меня БП 5В 3А. Дорожки питания на плате разведены толстые (2мм), кондеры на каждой микросхеме стоят прямо у самой микросхемы. Просадки по питанию нет, но все равно только после ресета (через WEB-интерфейс или с пульта ИК) включаются все индикаторы. (Индикаторов у меня 16, 8х2).
Dimych70, копайте в сторону того, чем у вас отличается первое включение и ресет
Dimych70, копайте в сторону того, чем у вас отличается первое включение и ресет
Я честно говоря думал, что все шаги, что у меня в скетче прописаны делаются одинаково как при включении питания, так и при ресете. Ну во всяком случае я впервые сталкиваюсь с подобноя ситуацией. У меня есть подобное устройство, я с него почти весь код взял. разница что там матрицы адресные RGB 16х16. Так там все включается сразу без проблем.
так может дело не в коде, а во взаимодействии элементов схемы?
Когда вы включаете питание первый раз - у вас MAX7219 еще не работает. Если, допустим, она запускается позже МК ардуины - то первые команды, которые ардуина шлет в МАКС - улетают в никуда.
Попробуйте, например, добавить в начало setup() обычную задержку в 3-5 сек и посмотрите, не пропадет ли проблема.
так может дело не в коде, а во взаимодействии элементов схемы?
Когда вы включаете питание первый раз - у вас MAX7219 еще не работает. Если, допустим, она запускается позже МК ардуины - то первые команды, которые ардуина шлет в МАКС - улетают в никуда.
Попробуйте, например, добавить в начало setup() обычную задержку в 3-5 сек и посмотрите, не пропадет ли проблема.
Пробовал добавлять delay(5000). Не помогает. Больше не добавлял.
Самое интересное, что все работает. Все датчики, ИК приемник, сайт, запись на SD-карту. Да и вывод информации на дисплей формируется, т.к. когда я делаю сброс с пульта ИК при выключеном дисплее, сначала включается дисплей и я вижу, что на нем вся информация была осмысленная, а потом идет перезагрузка.
Пробовал добавлять delay(5000).
добавлять надо первой же строчкой в сетап...
Хорошо, а если сделать на матрицы отдельное питание и первым подавать питание туда. а спустя несколько секунд включать остальную схему?
Пока проделать это вручную, исключительно для теста. Если заработает - можно будет думать
А как это осуществить? Поставить выключатель отдельный, которым подавать питание на все остальное кроме матриц? Типа включил общее питание, подалось только на матрицы, а потом секунд через несколько второй выключатель щелкнуть?
Я на одном форуме нашел, что типа в даташите описан процесс инициализации MAX7219. Но даташит я вмеру сил и знания английского изучал, тем более у меня матрицы другой полярности и я переделывал стандартное подключение.
Я на одном форуме нашел,
Delphin911, ты? (esp8266.ru)
Да, я. Там меня послали в платный сегмент, так сказать. Я нашел тему на этом форуме. Ситуация такая же, но решения я тоже не увидел и решил попробовать сдесь спросить. Хотя в принципе уже смирился. В принципе надо всего лишь при первом включении сброс через пульт нажать. Не готов я за это деньги платить.
Человеку писал скетч с 24 матрицами 8х8. Никаких специальных мер. Питание матриц от отдельного БП, разводка питания 1,5 (или даже 2,5) квадрата, я так советовал. Питание на Ардуино подаётся одновременно.
Попробую как окажусь дома, убрать из секции setup все выводы на дисплей (инициацию Wi-Fi, вывод полученного IP, инициацию датчика движения) и инициацию матриц в самый конец модуля setup.