Глюки с матрицами 8X8 MAX7219

RainMan
Offline
Зарегистрирован: 21.06.2011

Привет. Столкнулся с непонятной проблемой. Сделал 3 бегущие строки на модулях 8х8 МАХ7219 размером 1х12 символов и 2х16 символов. Везде одна и та-же проблема, при подаче питания всегда работают как правило первые 4 модуля, которые конструктивно идут на одной плате. Начиная с 5 модуля ничего не работает. После нажатия на Reset гарантировано начинают работать все модули. Библиотека Adafrut+Max72xxPanel. Кто сталкивался?

bwn
Offline
Зарегистрирован: 25.08.2014

Ройте разводку питания. ИМХО.

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

инициализацию сделайте с паузами и после инициализации паузу, должно помочь. хотябы 10мс

RainMan
Offline
Зарегистрирован: 21.06.2011

 питание не при чем. задержки ставил не помогает. Делал программный сброс переходом на адресс 0, програмно-аппаратный сброс  - тоже не помогает, всесьма странно. Кнопкой помогает, дерганием из программы ноги Reset - не помогает. Может кнопка как-то подругому сбрасывает?

RainMan
Offline
Зарегистрирован: 21.06.2011

Подымаю тему. Может кому пригодится. Дело действительно в питании, но проявляется вот так интерестно как описано в топе, или так "при включении ардуино, некоторые матрицы не запускаются, причем всегода разные, может 4 последние не включаться, может 5 и 8 не включиться". 

Первое на что обратить внимание- какое напряжени на каждой из матриц. Должно быт близко к 5В, как на первой матрице, так и на последней. Если подать питание на первую матрицу, при 24 матрицах подключенных последовательно, на первой будет 5В а на последней 3,2в.

Связано это с тем, что дорожки на платах, на которых набраны матрицы тонкие. А матрицы потребляют достаточно большой ток. Как итог при подключени последовательно более 8 матриц можем наблюдать не включение определенных матриц из за просатки напряжения.

Я решил проблему так - кидал питание от первой матрицы отдельными проводами к 12матрице, и к 24 матрице. И то иногда не всегда зажигались все сегменты. Связано это скорее всего с тем, что при включении все 24матрицы зажигаются всеми пикселями, а после инициализации гаснут. В момент зажигания идет большая просадка по питанию и некоторым матрицам не хватает питания для инициализации. Поэтому совет:

 - используйте блок питания  5В с запасом, проверяйте его под нагрузкой, чтобы он не давал просадку по питанию, исходя из количества подключенных матриц,  включенных на полную яркость всеми пикселями;

-не пытайтесь запитывать матрицы от питания Ардуины, которое пришло по USB (например для ардуино Мега, Нано и т.д) если у вас более 12 матриц. Особенно это касается того случая, если вы запитываетесь от порта USB компьютера;

-не пытайтесь запитывать матрицы от встроенного стабилизатора Ардуины, если у вас более 12 матриц. Стабилизатор будет сильного греться, и может со временем выйти из строя;

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

-подключайте матрицы напрямую к проводам от блока питания, и параллельно подключайте Ардуину, а не сначала Ардуину, а к ней матрицы;

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

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

Надеюсь кому-то это поможет.

FoxJone
Offline
Зарегистрирован: 19.04.2019

Вы где такие матрицы брали?

То есть я знаю, что их продают во всех радиомагазинах, но блин дорого! А я бы с удовольствием приобрел пару их много, но дешево...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Я тебе больше скажу, вот тут

RainMan пишет:

-не пытайтесь запитывать матрицы от питания Ардуины, которое пришло по USB (например для ардуино Мега, Нано и т.д) если у вас более 12 матриц. Особенно это касается того случая, если вы запитываетесь от порта USB компьютера;

-не пытайтесь запитывать матрицы от встроенного стабилизатора Ардуины, если у вас более 12 матриц. Стабилизатор будет сильного греться, и может со временем выйти из строя;

надо 12 заменить на 1. 

RainMan
Offline
Зарегистрирован: 21.06.2011

DetSimen пишет:

Я тебе больше скажу, вот тут

RainMan пишет:

-не пытайтесь запитывать матрицы от питания Ардуины, которое пришло по USB (например для ардуино Мега, Нано и т.д) если у вас более 12 матриц. Особенно это касается того случая, если вы запитываетесь от порта USB компьютера;

-не пытайтесь запитывать матрицы от встроенного стабилизатора Ардуины, если у вас более 12 матриц. Стабилизатор будет сильного греться, и может со временем выйти из строя;

надо 12 заменить на 1. 

ну 1 это совсем грубо. Например у ардуино Мега стабилизатор по даташиту выдерживает до 800мА. Если нагрузить его током 12х0,03А =360мА, то страшного ничего не произойдет. Будет греться, но для отладки пойдет. Для конечного проекта конечно надо все расчитывать.

RainMan
Offline
Зарегистрирован: 21.06.2011

Единственное для меня остается не выясненным то, что после нажатия кнопки Reset все проблемы с незагоревшимися матрицами уходят. Все отлично работает, даже с дикой просадкой напряжения. 

Почему не помогает дергание Reset программно-аппаратным способом или просто програмный сброс?

RainMan
Offline
Зарегистрирован: 21.06.2011

заказывал на TaoBao. Вышло что-то около 3$ с доставкой за плату, на которой собрано 4 модуля.

b707
Offline
Зарегистрирован: 26.05.2017

RainMan пишет:

у ардуино Мега стабилизатор по даташиту выдерживает до 800мА. Если нагрузить его током 12х0,03А =360мА,

Забавный расчет... потребление светодиодной матрицы 8х8 светодиодов явно больше 0.03А во включенно состоянии

0.03 А - это скорее всего номинальный ток одного светодиода, а в матрице их 64.....

 

SLKH
Offline
Зарегистрирован: 17.08.2015

b707 пишет:

RainMan пишет:

у ардуино Мега стабилизатор по даташиту выдерживает до 800мА. Если нагрузить его током 12х0,03А =360мА,

Забавный расчет... потребление светодиодной матрицы 8х8 светодиодов явно больше 0.03А во включенно состоянии

0.03 А - это скорее всего номинальный ток одного светодиода, а в матрице их 64.....

 

одновременно горят 8 (или меньше)

допустимый ток до 40 ма на диод,общее потребление 1 сборки - до 330 ма.

 

TFM, страница 10:

Supply Bypassing and Wiring
To minimize power-supply ripple due to the peak digit
driver currents, connect a 10μF electrolytic and a 0.1μF
ceramic capacitor between V+ and GND as close to
the device as possible.
 
SLKH
Offline
Зарегистрирован: 17.08.2015

RainMan пишет:

Подымаю тему. Может кому пригодится. Дело действительно в питании, но проявляется вот так интерестно как описано в топе, или так "при включении ардуино, некоторые матрицы не запускаются, причем всегода разные, может 4 последние не включаться, может 5 и 8 не включиться". 

Ты забыл написать про конденсаторы between V+ and GND as close to the device as possible (см. #11).

 

FoxJone
Offline
Зарегистрирован: 19.04.2019

Одновременно 8 горят, это если у вас там цифра "1". А если "8" или что то на букву "Ж" решите написать?

При 40 мА на диод, вся матрица (8*8=64 диода) при полной засветке сожрет 2,56 ампера. Ну и ардуинку до кучи.

bwn
Offline
Зарегистрирован: 25.08.2014

FoxJone пишет:

Одновременно 8 горят, это если у вас там цифра "1". А если "8" или что то на букву "Ж" решите написать?

При 40 мА на диод, вся матрица (8*8=64 диода) при полной засветке сожрет 2,56 ампера. Ну и ардуинку до кучи.

Одновременно горит один столбец из 8-ми, там динамическая индикация.

RainMan
Offline
Зарегистрирован: 21.06.2011

Да согласен, даташит не посмотрел на матрицу, а взял инфу где-то на этом-же форуме. Могу дать инфу по факту: 24 матрицы подключены последовательно и собраны в 2 ряда по 12шт. Это дисплей для весов. Используется шрифт двойной величины. При полном заполнении цифрами всего табло, ток потребления около 1,5А. 

Так-же по факту могу сказать что сейчас собрана бегущая строка на 8 матрицах, подключена к Меге. Все работает на максимальной яркости, только запускается после Reset, как я описывал. 

И да,  в даташитах указывается ток потребления одним модулем 330мА. Значит расчет блока питания и проводов надо брать исходя из этого значения.

b707
Offline
Зарегистрирован: 26.05.2017

а что вы не взяли матрицы 32х16

 

FoxJone
Offline
Зарегистрирован: 19.04.2019

b707 пишет:

а что вы не взяли матрицы 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% уверен, что продавец скажет: в наличии нет, изготовим под заказ большой партией и совсем не дешево. Два года назад я пытался купить в Китае партию таких матриц. Не смог уже тогда, а за моей спиной была не слабая такая организация.

RainMan
Offline
Зарегистрирован: 21.06.2011

Для b707:

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

 

astwo
Offline
Зарегистрирован: 10.07.2019

Конечно библиотек не будет, потому что все ленивые жопы.

b707
Offline
Зарегистрирован: 26.05.2017

RainMan пишет:

Для b707:

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

 

Если вы про матрицы DMD р10 как у меня на картинке - то готовые библиотеки есть -  две основные, DMD и DMD2, работающие на Ардуино и ЕСП8266. Поддерживают набор матриц и в длину и в высоту. бегущие строки и прочее и прочее...

Есть еще несколько специальных библиотек, например для плат СТМ32... к одной из них я имею непосредственное касательство :) обращайтесь

RainMan
Offline
Зарегистрирован: 21.06.2011

FoxJone пишет:

b707 пишет:

а что вы не взяли матрицы 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 в ардуине, ничего не получилось.

FoxJone
Offline
Зарегистрирован: 19.04.2019

RainMan  я бы ни вашем месте начинал бы сразу с СТМ работать. Атмега не тянет больше 12 модулей, у ЕСП тоже есть свои проблемы. Насколько я знаю, СТМ сейчас самая удачная платформа на эту тему.

b707 давно хотел спросить, ка в вашей библиотеке с длиной экрана, есть ограничения по пикселям в длину?

b707
Offline
Зарегистрирован: 26.05.2017

FoxJone пишет:

b707 давно хотел спросить, ка в вашей библиотеке с длиной экрана, есть ограничения по пикселям в длину?

координаты описаны в типе uint16_t - то есть теоретически до 65К пикселей :)

Реальные размеры можно у lean74 спрашивать - он вроде 47 модулей матриц в длину подключал :)

SLKH
Offline
Зарегистрирован: 17.08.2015

FoxJone пишет:

Одновременно 8 горят, это если у вас там цифра "1". А если "8" или что то на букву "Ж" решите написать?

При 40 мА на диод, вся матрица (8*8=64 диода) при полной засветке сожрет 2,56 ампера. Ну и ардуинку до кучи.

при индикации "8.8.8.8.8.8.8.8."  одновременно горят 8 светодиодов. При 40 ма на диод вся матрица сожрет 330 ма.

RTFM.

Dimych70
Offline
Зарегистрирован: 03.02.2022

Так и не понял, как сделать, чтобы матрицы загорались при включении питания. У меня БП 5В 3А. Дорожки питания на плате разведены толстые (2мм), кондеры на каждой микросхеме стоят прямо у самой микросхемы. Просадки по питанию нет, но все равно только после ресета (через WEB-интерфейс или с пульта ИК) включаются все индикаторы. (Индикаторов у меня 16, 8х2).

b707
Offline
Зарегистрирован: 26.05.2017

Dimych70, копайте в сторону того, чем у вас отличается первое включение и ресет

Dimych70
Offline
Зарегистрирован: 03.02.2022

b707 пишет:

Dimych70, копайте в сторону того, чем у вас отличается первое включение и ресет

Я честно говоря думал, что все шаги, что у меня в скетче прописаны делаются одинаково как при включении питания, так и при ресете. Ну во всяком случае я впервые сталкиваюсь с подобноя ситуацией. У меня есть подобное устройство, я с него почти весь код взял. разница что там матрицы адресные RGB 16х16. Так там все включается сразу без проблем.

b707
Offline
Зарегистрирован: 26.05.2017

так может дело не в коде, а во взаимодействии элементов схемы?

Когда вы включаете питание первый раз - у вас MAX7219 еще не работает. Если, допустим, она запускается позже МК ардуины - то первые команды, которые ардуина шлет в МАКС - улетают в никуда.

Попробуйте, например, добавить в начало setup() обычную задержку в 3-5 сек и посмотрите, не пропадет ли проблема.

Dimych70
Offline
Зарегистрирован: 03.02.2022

b707 пишет:

так может дело не в коде, а во взаимодействии элементов схемы?

Когда вы включаете питание первый раз - у вас MAX7219 еще не работает. Если, допустим, она запускается позже МК ардуины - то первые команды, которые ардуина шлет в МАКС - улетают в никуда.

Попробуйте, например, добавить в начало setup() обычную задержку в 3-5 сек и посмотрите, не пропадет ли проблема.

Пробовал добавлять delay(5000). Не помогает. Больше не добавлял.

Самое интересное, что все работает. Все датчики, ИК приемник, сайт, запись на SD-карту. Да и вывод информации на дисплей формируется, т.к. когда я делаю сброс с пульта ИК при выключеном дисплее, сначала включается дисплей и я вижу, что на нем вся информация была осмысленная, а потом идет перезагрузка.

b707
Offline
Зарегистрирован: 26.05.2017

Dimych70 пишет:

Пробовал добавлять delay(5000).

добавлять надо первой же строчкой в сетап...

Хорошо, а если сделать на матрицы отдельное питание и первым подавать питание туда. а спустя несколько секунд включать остальную схему?

Пока проделать это вручную, исключительно для теста. Если заработает - можно будет думать

Dimych70
Offline
Зарегистрирован: 03.02.2022

А как это осуществить? Поставить выключатель отдельный, которым подавать питание на все остальное кроме матриц? Типа включил общее питание, подалось только на матрицы, а потом секунд через несколько второй выключатель щелкнуть?

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

mifar
Offline
Зарегистрирован: 07.04.2021

Dimych70 пишет:

Я на одном форуме нашел,

Delphin911, ты? (esp8266.ru)

Dimych70
Offline
Зарегистрирован: 03.02.2022

Да, я. Там меня послали в платный сегмент, так сказать. Я нашел тему на этом форуме. Ситуация такая же, но решения я тоже не увидел и решил попробовать сдесь спросить. Хотя в принципе уже смирился. В принципе надо всего лишь при первом включении сброс через пульт нажать. Не готов я за это деньги платить.

Green
Offline
Зарегистрирован: 01.10.2015

Человеку писал скетч с 24 матрицами 8х8. Никаких специальных мер. Питание матриц от отдельного БП, разводка питания 1,5 (или даже 2,5) квадрата, я так советовал. Питание на Ардуино подаётся одновременно.

Dimych70
Offline
Зарегистрирован: 03.02.2022

Попробую как окажусь дома, убрать из секции setup все выводы на дисплей (инициацию Wi-Fi, вывод полученного IP, инициацию датчика движения) и инициацию матриц в самый конец модуля setup.