7-сегментный индикатор + драйвер MAX7219 = минимальный дисплей для Arduino

  • Цена: $1,88/2шт + $2.57/5шт

Что-то давно не было обзоров про Arduino-мелочевку.
Сегодня дошли руки до этих деталек и решил их «обозреть»

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

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



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

Если подключать такой индикатор напрямую к микроконтроллеру — тратится очень много дискретных выходов. Для подключения семисегментных и матричных индикаторов по 3-м проводам компания MAXIM разработала контроллеры MAX7219/MAX7221. Вот об этой связке будет мой обзор.

Сразу скажу, что для тех кто не любит паять, продаются готовые индикаторы за смешные деньги


Я такой тоже использовал в одном из своих проектов, но мне не понравились большие габариты дисплея (особенно по высоте).

Для создания универсального контроллера для своего «Умного дома» приобрел индикаторы и микросхемы россыпью.

Итак были приобретены
7-сегментный четырех-разрядные LED индикаторы с общим катодом и высотой цифр 0.4"

Контроллер 8-сегментного индикатора MAX7219 в корпусе DIP24

Индикаторы приехали в Пермь за 33 дня. Были упакованы в простой мягкий пакет. Ножки воткнуты в кусок пенопласта. Почта России их пощадила:


Размеры 40x16. Размер цифры около 10мм




Количество ножек — 12: 7 сегментов/анодов + точка-анод + 4 общих катода по числу разрядов
Шаг между ножками 2.54мм

Даташит нашел только на аналогичный индикатор

Распиновка ножек индикатора


Драйвера MAX7219 приехали за 35 дней тоже в мелком пакете, наколотые на паролонину.


Даташит на MAX7219/7221
Данные микросхемы работают с индикаторами, имеющими общий катод. К одной микросхеме можно подцепить 8 разрядов. Сами микросхемы 7219 можно цеплять друг к другу каскадом. Еще драйвера MAX7219 можно использовать для работы с матричными светодиодными индикаторами 8x8 С микроконтроллером соединяются по 3-х проводному SPI интерфейсу.

Пора теперь собрать вместе индикатор и его драйвер


Так как я делал только прототип микроконтроллера — то собрал все навесным монтажом на макетной плате.

На той же макетке установлен микроконтроллер ATMEGA 328P-PU из этого обзора и NRF24L01 mini из другого моего обзора.

Миниатюрный блок питания и корпус тоже были приобретены ранее на ТАОБАО

Для монтажа мне очень понравился китайский тефлоновый провод сечением 0.1мм. Разделывается он лучше, чем советский МГТФ и изоляция практически не плавится от паяльника.

Монтаж, конечно, не очень аккуратный, но для отладки прототипа сойдет


Плату подключил через переходник USB/RS232, который ранее использовал при программировании Arduino Pro Mini


Готовый прототип контроллера






Следующий шаг — изготовление контроллера на печатной плате.

Выводы:
Связка индикаторы + драйверы вполне рабочая.

Паять или покупать готовое — выбор за вами.
Кот вот тоже сильно удивлен, как можно было потрать столько времени не на сон


Прочитать про мой «Умный дом» можно в моем блоге
Планирую купить +47 Добавить в избранное +37 +97
+
avatar
0
В радиотехнике мало что понимаю, но кота плюсанул!
+
avatar
  • gogabig
  • 28 сентября 2014, 20:41
+5
Хороший кошак обычно собирает плюсов больше чем автор обзора (к sav13 это не относится :), пора учреждать приз на Муське — КОТ МЕСЯЦА. Вношу предложение админам, кто ЗА?
+
avatar
  • sav13
  • 28 сентября 2014, 20:55
+9
Мы за
+
avatar
  • gogabig
  • 28 сентября 2014, 22:02
0
А вот хвостато-усатых как раз никто не спрашивает! Ясно что вы то за. :)))
+
avatar
  • kozakovs
  • 28 сентября 2014, 23:41
0
Обзор зачетный! Все расписано добротно.
Кот вообще симпатяга! Респект.
+
avatar
  • kirich
  • 28 сентября 2014, 20:03
+1
Спасибо за обзор. Полезно.
Драйвер конечно удобен, но не обязателен. С ним просто меньше портов занято будет.
+
avatar
  • sav13
  • 28 сентября 2014, 20:06
+2
Еще он яркость индикатора выравнивает.
+
avatar
  • kirich
  • 28 сентября 2014, 20:09
+1
Если индикатор нормальный, то выравнивать ничего не надо (да я пока и не понял, как драйвер это делает, в смысле как настраивается).
Как минимум, мне за много лет не пришлось ни разу. Правда я использовал в основном Кингбрайт.
+
avatar
  • sav13
  • 28 сентября 2014, 20:11
0
Я как-то сэкономил на рtзисторах и посадил их на общие катоды. Получил сильнjе различие в яркости в разных цифирках :)
+
avatar
  • kirich
  • 28 сентября 2014, 20:18
+1
В смысле сэкономил?
8 сегментов, 8 резисторов. разряды через соотв кол-во полевичков (им даже резисторы можно не ставить).
Как вариант, поставить просто сдвиговый регистр, либо недорогой процессор, на который возложить работу с валкодером, например.

Кстати, контроллер 8 сегментов, а не 7. :)
+
avatar
  • sav13
  • 28 сентября 2014, 20:30
0
Сэкономил, значит сэкономил. Аноды включил напрямую к дискретным выводам, катоды через резисторы к другим. Ни каких полевиков!


Сдвиговые регистры это хорошо, только много их придется ставить
MAX7219 в этом смысле очень удобная микросхема.

Про 7/8 сегментов поправил
+
avatar
  • kirich
  • 28 сентября 2014, 20:48
+1
Я как то видел оригинальное решение, примененное в одном из изделий мастеркита, там был 1 индикатор с одним резистором на общем контакте индикатора. Индикация была динамическая, т.е. 7 сегментов динамически переключались по одному.
+
avatar
  • AndyBig
  • 29 сентября 2014, 01:00
0
Нафиг-нафиг, я бы лучше десяток резисторов на рубль добавил, чем делал бы в прошивке динамику :)
+
avatar
  • kirich
  • 29 сентября 2014, 01:09
0
У них была проблема с местом.
Это был контроллер ТМ встроенный в электромеханический замок, с накоплением заряда на кондере и индикатором.
Вот и извратились как смогли.
+
avatar
  • AndyBig
  • 29 сентября 2014, 01:33
0
А, ну тогда понятно :) Хотя я так подозреваю, что места им не хватило под семь МЛТ-0.25, а не под семь SMD0603 :) :))
+
avatar
  • kirich
  • 29 сентября 2014, 02:07
0
Это было еще во времена 90S1200, не помню уже подробностей.
+
avatar
  • ksiman
  • 28 сентября 2014, 20:55
0
Аноды включил напрямую к дискретным выводам, катоды через резисторы к другим.
По этой схеме яркость сегментов зависит от числа горящих.
+
avatar
  • kirich
  • 28 сентября 2014, 21:04
+1
По этой схеме яркость сегментов зависит от числа горящих.
Если не применен принцип, описанный мною выше :)
+
avatar
  • ksiman
  • 28 сентября 2014, 21:34
0
Так это получается уже двойная динамическая индикация с потерей яркости свечения сегментов…
+
avatar
  • kirich
  • 28 сентября 2014, 21:50
+2
Естественно, я скорее о технической реализации такого варианта.
Т.е. это возможно, но само решение по своему кривое.
+
avatar
  • AndyBig
  • 29 сентября 2014, 00:59
0
Нельзя так экономить резисторы :)
А по регистрам — один регистр и полевички по количеству разрядов плюс динамическая индикация :)
+
avatar
  • sav13
  • 29 сентября 2014, 05:11
0
Мне кажется, что 7219 тут как раз рулит.
Никаких полевиков и резисторов,
Не нужно МК динамически ничего делать.
Только вот никак красивую одностороннюю разводку платы не могу придумать. :((
Никто не вcтречал?
+
avatar
  • AndyBig
  • 29 сентября 2014, 11:02
0
Да я не спорю, просто ответил на «много регистров» :)
+
avatar
  • ploop
  • 29 сентября 2014, 09:35
+1
А по регистрам — один регистр и полевички по количеству разрядов плюс динамическая индикация :)
Тут зависит от места на плате. Точно могу сказать, что под 30-мм семисегментником помещается 595й регистр, 7 полевиков и 7 резисторов на каждый сегмент. При том кусок платы с разводкой масштабируется простым копипастом — число сегментов получится неограниченно.

Из плюсов — простота программной части, по цене тоже не дорого, яркость всегда максимальна (или легко регулируется). Из минусов — паяльником тыкать на порядок больше.
+
avatar
  • AndyBig
  • 29 сентября 2014, 11:03
0
Еще из плюсов — проще развести по одной стороне :)
А больше тыкать паяльником — это не самый важный фактор в одиночных поделках :)
+
avatar
  • ploop
  • 29 сентября 2014, 11:22
0
Еще из плюсов — проще развести по одной стороне :)
Да, на одной и разводится. То есть под индикаторами. А тыкать паяльником обычно в кайф в этих делах :)
+
avatar
  • AndyBig
  • 29 сентября 2014, 00:56
0
я пока и не понял, как драйвер это делает, в смысле как настраивается
Драйвер стабилизирует ток на каждый сегмент. В описываемой микросхеме ток задается внешним резистором между питанием и 18-й ногой :)
+
avatar
  • kirich
  • 29 сентября 2014, 01:13
+1
А чем отличается стабилизация тока драйвером и просто резистор, ну даже если будет 5% разброса из-за разброса диодов в самом индикаторе (если применяется многоразрядный семисегментник, то почти нереально), то это сильно не отразится на яркости.

Я знаю чем у этой микрухи задается ток, так как уже использовал такие микрухи. :)
Эта микруха удобна, когда в сегментах применяются последовательные цепочки светодиодов и в цепочках может быть разное их кол-во.
Ну это помимо последовательного интерфейса ессно.
только не помню, что бы у этой микрухи регулировался ток сегмента, есть ее аналоги, для RGB, там да, можно подстраивать каждый сегмент программно.
+
avatar
  • AndyBig
  • 29 сентября 2014, 01:40
0
А чем отличается стабилизация тока драйвером и просто резистор
Ну, например, ровным свечением сегментов при прыгающем напряжении питания :)
только не помню, что бы у этой микрухи регулировался ток сегмента, есть ее аналоги, для RGB, там да, можно подстраивать каждый сегмент программно.
Нет, тут задается единое значение тока для всех сегментов, не для каждого в отдельности. Предполагается, что будут подключены однотипные разряды :)
+
avatar
  • kirich
  • 29 сентября 2014, 02:15
0
Ну, например, ровным свечением сегментов при прыгающем напряжении питания :)
А с чего яркости прыгать даже с резисторами? Если применен дисплей как у автора в обзоре. :)

С резисторами яркость обычно прыгает, если к одному драйверу подключены цепочки с разным количеством диодов. Тогда стабилизация нужна без вариантов.
В данном драйвере и его применении она лишь приятный бонус, в плане отсутствия необходимости ставить токоограничиваюшие резисторы.
+
avatar
  • AndyBig
  • 29 сентября 2014, 02:17
0
Меняется напряжение — меняется ток — меняется яркость :) Какая разница какой дисплей, все равно внутри него светодиоды, очень чутко реагирующие на ток :)
+
avatar
  • kirich
  • 29 сентября 2014, 02:19
0
но в пределах одного дисплея они обычно одинаковы.
Для того, что бы яркости изменилась при таких условиях, надо напряжение менять ОЧЕНЬ сильно.
+
avatar
  • AndyBig
  • 29 сентября 2014, 11:01
0
Ну, например для красных светодиодов при изменении напряжения с 4.5 до 5.2 вольт ток вырастет более чем на 20%. Это уже будет заметное изменение яркости :)
+
avatar
  • kirich
  • 29 сентября 2014, 11:14
0
Мы просто говорим о разных вещах.
Я о разнице яркости отдельных сегментов, в том плане, что разницы не будет.
Вы о индикаторе в целом, здесь конечно яркость меняться будет, суммарная. :)
Но как правило, такие вещи запитывают после стабилизаторов.
Так что актуальность имеет в системах с аккумуляторным прямым питанием.
+
avatar
  • AndyBig
  • 29 сентября 2014, 11:31
0
Я о разнице яркости отдельных сегментов
Нет, ну между сегментами разницы быть не должно, тут я согласен с Вами :)
актуальность имеет в системах с аккумуляторным прямым питанием
Или в системах, где периодически подключается большая нагрузка :)
+
avatar
  • kirich
  • 29 сентября 2014, 11:44
0
Или в системах, где периодически подключается большая нагрузка :)
Ну это так же возможно.
Но не есть хорошо, если питание плавает от нагрузки.

тут я согласен с Вами :)
Вот и достигли консенсуса :)))
+
avatar
  • AndyBig
  • 29 сентября 2014, 00:55
0
И рассыпухи меньше :)
+
avatar
  • granit
  • 28 сентября 2014, 20:31
0
Что на дисплей выводится?
+
avatar
  • sav13
  • 28 сентября 2014, 20:35
0
Пока загрузил тестовый скетч — просто цифры перебирает
В перспективе, контролер регулировки температуры — температуру/режим работы
Контроллер управление вытяжным вентилятором — температуру/влажность
Погодный сенсор температуру/давления
Ну и еще что по сети прилетает
+
avatar
  • gogabig
  • 28 сентября 2014, 20:48
0
Слежу за вашими титаническими проектами, не боитесь что однажды «Умный Дом» станет умнее своего хозяина? :))) Ясень пень что не сразу, а так с годами, когда хозяин начнёт тупеть, а Дом всё умнеть и умнеть, типа как Дом2! :)))
+
avatar
  • sav13
  • 28 сентября 2014, 20:51
+3
Анекдот в тему:
«Решил купить телефон попроще, чтобы не умнее меня был. Вышел из магазина в шоке — ОНИ ВСЕ УМНЕЕ МЕНЯ!»
+
avatar
  • kirich
  • 28 сентября 2014, 20:52
0
:)))
+
avatar
  • gogabig
  • 28 сентября 2014, 20:55
0
Да, с телефонами совсем беда, мало того что они уже давно умнее меня (поэтому хожу со старой Нокией 5800), так они скоро станут и БОЛЬШЕ меня, хотя я совсем не мелкий (рост 190см), совсем бедааааааааа!!!
+
avatar
  • kirich
  • 28 сентября 2014, 21:06
+2
поэтому хожу со старой Нокией 5800
На фоне моих сименсов М75 и С55 у Вас совсем новый телефон :))))
+
avatar
  • gogabig
  • 28 сентября 2014, 21:17
+1
Дык мой «Семёнсемёныч» в добром здравии, как новенький, на заслуженном отдыхе несёт службу по подстраховке «молодёжи». :)))
+
avatar
  • kirich
  • 28 сентября 2014, 21:19
+1
Я вышеназванными телефонами пользуюсь постоянно. :)
Один крепкий, второй мелкий. Оба с родными аккумуляторами.
+
avatar
  • gogabig
  • 28 сентября 2014, 21:40
+1
На моём «Семёне» родной акк помер через 5-6 лет, поставил хрен_знает_какой немного потолще, Ышо столько же служил, но щас уже не держит совсем, надо протез поставить из другого акка, а то на Али нашёл родные, но только по 10шт продают и цена кусючая. Я им щас не пользуюсь, пытался маманьку приучить к нему, но у неё уже пальцы совсем скрючились, купил ей сотовый-настольный, там быстрые клавиши крупнющие, самое то для неё, 85 годков — не шутка.
+
avatar
  • kirich
  • 28 сентября 2014, 21:52
+2
У меня М75 уже 8 лет, самому телефону почти 9, акк держит двое суток при довольно активном использовании.
С55 пользуюсь реже, но акк держит несколько дней.
+
avatar
  • Dru4
  • 28 сентября 2014, 20:35
0
От нокии лучше ставьте. Стоит чуточку дороже, а информации гораздо больше можно вывести.
+
avatar
  • sav13
  • 28 сентября 2014, 20:40
+1
Там на первой картинке такой лежит.
LED индикаторы удобно ставить, если нужно издалека увидеть цифирки, например, когда контроллер под потолком висит.
Дисплей 5110 больше подходит для ручных приборов. Цена практически одинаковая
+
avatar
  • ks222
  • 28 сентября 2014, 20:38
+4
извините, что не по теме обзора.
просто здесь скорее прочтут те, кому может пригодится.
китайцы по ошибке прислали моему другу дисплеи (монохромные) для старых мобильников.
взамен ничего не надо. дисплеев 8 штук, размером все одинаковые, маркировка на некоторых разная, все не смотрел.
маркировка на дисплеях — LPH7366-3 и LPH7366-1
картинка здесь — ffclub.ru/topic/306858/go_post/15921379/
забирать в столице (на Электрозаводской ул. там ещё магазин Кварц рядом))
+
avatar
  • Vipeg
  • 28 сентября 2014, 21:01
0
Очень интересная тема. Сам заказал такие же драйверы, однако пока ещё не пришли. Скажите, есть ли у Вас возможность разместить в теле обзора скетч? Пусть тестовый, но всё же. Насколько я знаю, имеется специальная библиотека для подобных драйверов?
P.S. Обзор плюсанул. Спасибо, очень познавательно.
+
avatar
  • Mikakiev
  • 29 сентября 2014, 23:13
0
Сорри, это я минусанул. Хотел плюсануть, но на смарте все мелкое, вот я и промазал. А undo здесь нет(

Тоже хотел скетч увидеть
+
avatar
  • tornadox
  • 28 сентября 2014, 21:30
0
А вы случайно не видели универсального драйвера для VFD дисплеев? Наковырял несколько штук от старых ДВД и тепер думаю стоить из оставить или выбросить.
+
avatar
  • sav13
  • 28 сентября 2014, 21:47
0
Мне кажется, там для каждого дисплея свой драйвер делался.
Ног там не меряно :(
+
avatar
  • kirich
  • 28 сентября 2014, 21:53
+1
Не, были универсальные, для обычных сегментных индикаторов, а не специализированных.
Не могу название вспомнить.
+
avatar
  • tornadox
  • 28 сентября 2014, 22:46
0
да в любом случае спец сегменты можно не подключать, даже часть дисплея и уже хорошо.
+
avatar
  • kirich
  • 28 сентября 2014, 23:12
+1
Не, я имел ввиду, что там заложены какие нибудь индикаторы уровня и т.п.
Искать надо именно драйверы семи (восьми) сегментных индикаторов.
Даже наши были, 176 серия по моему.
+
avatar
  • tornadox
  • 28 сентября 2014, 23:57
0
www.ebay.com/sch/i.html?_from=R40&_sacat=0&LH_BIN=1&_sop=15&_nkw=vfd+driver&rt=nc драйверы то есть, но это как мне кажется не универсальные.
+
avatar
  • kirich
  • 29 сентября 2014, 00:05
+1
Ну почему же, по своему PT6315 вроде вполне подходит.
правда смотря что Вы подразумеваете под универсальностью.
Питание у многих вакуумных дисплеев одинаковое, -27 Вольт, принцип управления так же одинаков.

Из простых вспомнил нашу К176ИД3, есть еще какие то, но уже тяжелее вспомнить.
+
avatar
  • sav13
  • 29 сентября 2014, 05:13
0
На VFD что написано?
+
avatar
  • garrysun
  • 29 сентября 2014, 08:04
0
Объясните мне, зачем эти индикаторы когда есть китайский клон hitachi hd44780 который намного более информативный. С адаптером i2c работает от двух ног. Индикатор 2.5 амер. рубля, адаптер 1.5.
+
avatar
  • sav13
  • 29 сентября 2014, 08:51
0
LCD дисплей 1602 вы разглядите с 3-х метров?
А с 5-ти?
+
avatar
  • ploop
  • 29 сентября 2014, 09:54
0
Да, тут лучше не сравнивать. Семисегментники можно найти с лапоть размером. А если сделать автоматическую регулировку яркости смотрится вообще шикарно, цифры стоят как нарисованные независимо от освещения.
+
avatar
  • AndyBig
  • 29 сентября 2014, 11:04
0
А если сделать автоматическую регулировку яркости
И нормальный светофильтр перед светодиодами :)
+
avatar
  • ploop
  • 29 сентября 2014, 11:21
0
Да не. При прямых солнечных лучах и в полной темноте картина совсем разная. Если в первой ситуации их просто видно, то в темноте получается натуральный фонарь.
Я так делал часы (с автоподстройкой яркости) — радуют четвёртый год. При том, что было для меня откровением, линейная зависимость не прокатывает, только логарифмическая.
(в смысле зависимость яркости от освещённости. Глаз — штука интересная...)
+
avatar
  • AndyBig
  • 29 сентября 2014, 11:45
0
Нет, про изменение яркости с освещенностью я не спорю, конечно нужно делать, что бы днем было видно и ночью не слепило :)
Но светофильтр, так же значительно повышает читаемость.
А нелинейная зависимость — да, человеческое зрение устроено сложно :) Да еще и реагирует по-разному на разные цвета :)
+
avatar
  • sav13
  • 29 сентября 2014, 11:51
0
А из чего делать светофильтр?
В новом проекте делаю индикатор на одиночных светодиодах 5050. Там бы еще светорассеиватель какой-то
+
avatar
  • ploop
  • 29 сентября 2014, 11:56
0
А из чего делать светофильтр?
Кстати тоже интересно. Есть светофильтры, которые отлично пропускают сам свет индикаторов, но полностью закрывают внутренности.

А по поводу рассеивателя: попробуйте залить всё это термоклеем («китайскими соплями»). Они матовые, должно получиться.
+
avatar
  • AndyBig
  • 29 сентября 2014, 12:09
0
Из цветного оргстекла :)
Но его фиг найдешь в разумных количествах (хотя можно поискать в рекламных мастерских), поэтому можно, например, попробовать взять кусок матового оргстекла (будет рассеивателем) и наклеить на него прозрачную цветную пленку (искать у рекламщиков по словам «витражная пленка»). А может быть подойдет и обычный цветной оракал, только толщину поменьше взять. Цвет подбирать как можно более похожий на цвет свечения сегментов :)
Сам не пробовал, просто первые мысли, которые пришли в голову
+
avatar
  • kirich
  • 29 сентября 2014, 12:38
0
Так же ищу светофильтр, под светодиодные индикаторы красного цвета, правда высота символа сантиметров 15.
Наборные из дискретных светодиодов.
Корпус бы придумать, из чего сделать аккуратный.
+
avatar
  • SerjNSK
  • 09 октября 2014, 21:21
0
Можно попробовать закатать прозрачное оргстекло или акрил пленкой тонировочной автомобильной, светопропускание подобрать можно и цвет и зеркальность сделать.
+
avatar
  • JVS
  • 29 сентября 2014, 20:43
0
А есть ли способ тупо вывести на одноразрядный индикатор цифры от 1 до 4 путем замыкания одного из 4-х герконов? Без заморочек с драйверами, ардуинами и скетчами.
+
avatar
  • ploop
  • 29 сентября 2014, 22:03
0
Да, но нужны будут диоды. Обычные.
+
avatar
  • sav13
  • 30 сентября 2014, 04:31
0
Проще уж тогда газоразрядные индикаторы ИН. Там один контакт — одна цифра.
Правда, напряжение высокое подается. Но раньше это никого не останавливало.
+
avatar
  • kven
  • 29 мая 2015, 10:48
0
А бывает подобная штука для больших индикаторов, у которых несколько диодов на сегмент?
+
avatar
0
Доброго времени суток. Например есть двоичное число 11111110 (десятичное 254) чтобы его передать надо его преобразовать -число сотен 2 число десятков 5 число единиц 4 и по отдельности передать? Я правильно понимаю?
+
avatar
  • sav13
  • 19 мая 2017, 07:20
0
В машинном коде есть биты, байты и т.д.
Двоитчное, десятичное -это представление информации.

То есть как бы вы не записывали в коде или выводили бы на экран, хранится передается все равно байт или два или четыре, в зависимости от определенного типа данных
+
avatar
0
Благодарю