Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить

Часы на светодиодных матрицах с драйверами MAX7219

Ср фев 04, 2015 13:37:50

Статья http://radiokot.ru/circuit/digital/home/206/

Тут на форуме есть уже как минимум три различные конструкции часов на светодиодных матрицах. Я предлагаю ещё одну, на MAX7219

Часы (бегущая строка) получаются достаточно простыми. На каждую матрицу нужна лишь одна микросхема драйвера + 1 резистор для задания тока через светодиоды. Управляется такая матрица по трёхпроводному интерфейсу, несколько драйверов можно последовательно каскадировать, при этом количество необходимых от МК линий не изменяется - всего три.

В схеме использованы МК ATmega8, часы DS1307, датчики DS18B20, в общем, за исключением MAX7219, всё знакомое и привычное.

Вот несколько фотографий того, что у меня получилось:



Возможности:
1. Собственно отображение и настройка времени.
2. Один будильник с возможностью задания дней недели для срабатывания.
3. Настройка яркости свечения часов для каждого часа времени суток (ночью можно послабее сделать, днём поярче).
4. Отображение температуры (в комнате и на улице) раз в минуту бегущей строкой.
5. Отображение текущей даты раз минуту бегущей строкой.

Кнопки:
1. Отключение звонка будильника, остановка бегущей строки, выбор настраиваемого параметра в меню настроек.
2. Показать дату бегущей строкой, увеличить значение настраиваемого параметра.
3. Показать температуру бегущей строкой, уменьшить значение настраиваемого параметра.
При длинном нажатии кнопки соответственно входят в режимы настройки времени/будильника/яркости.

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

В качестве динамика для будильника используется активный buzzer, тоже купленный в Китае.

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

MAX7219 можно купить в Китае на Aliexpress, там даже готовые наборы уже сразу с матрицами есть.

Исходники прошивки под avr-gcc доступны на https://github.com/WiseLord/matrixclockGitHub, так что при желании бегущую строку можно сделать намного больше, чем 3 матрицы.

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

Если кого-то заинтересует - могу попозже оформить статью и продолжить развитие устройства. Только придётся, наверное, перейти на более "жирный" МК, т.к. в ATmega8 проект уже еле влезает (из-за шрифтов, в основном). Да и написан он был давно, и многие вещи можно оптимизировать.

Видео c работой часов:


matrixclock.7z
(25.16 KiB) Скачиваний: 6337



PS

Новые (на 16 июля 2015 года) возможности по сравнению со статьёй:

Собрать прошивку под свой набор железа можно командой
Код:
make LED_DRIVER=[драйвер] MCU=[микроконтроллер]
Возможные варианты драйверов и микроконтроллеров описаны ниже

- Поддержка сборки для Atmega8/168/328.

В качестве [микроконтроллер] указываем, соответственно, atmega8, atmega168 или atmega328.

- Поддержка варианта для четырёх матриц.

Этот вариант теперь основной. В качестве [драйвер] указываем MAX7219. Для варианта из трёх матриц - MAX7219_X3

- Поддержка повёрнутых на 90 градусов матриц.

Так уж вышло, что у готовых китайских плат в размер матрицы разводка такая, для удобства разводки их надо развернуть на 90 градусов относительно "правильного" положения, для которого делался проект. Поэтому, для [драйвер] появились аналогичные основным варианты MAX7219MOD и MAX7219MOD_X3

- Поддержка драйвера HT1632.

Соответственно, в качестве [драйвер] указываем HT1632. Разводка для этого варианта отличается от вариантов на MAX7219 и соответствует разводки продаваемой китайцами плате J-MCU 3208CLOCK PRO.

- Поддержка датчика температуры и атмосферного давления BMP180.

Датчик работает по шине I²C и подключается к ней параллельно часам реального времени DS1307.

- Поддержка датчика температуры и влажности DHT22.

Датчик подключается к порту PD3, плюс на этом же порту необходим подтягивающий к питанию резистор 4,7кОм.

- Поддержка фоторезистора в качестве датчика освещённости

Я использовал MJ3516, но должен подходить любой с сопротивлением в освещённом состоянии 5..10 кОм. Фоторезистор (и, желательно, 500кОм..1МОм резистор параллельно) подключается между ножкой ADC0 (вариант на MAX7219) (или ADC7 (вариант на HT1632)) и питанием, также между этой ножкой и землёй подключается резистор 10кОм. Таким образом, образуется резистивный делитель, с которого АЦП получает уровень освещённости. На вывод AREF, если он не подключен к питанию, нужно подключить конденсатор 0.1мкф на землю.

Резистор 10кОм на землю обязателен и в случае отсутствия фоторезистора. Он вытягивает вход АЦП в ноль, благодаря чему система определяет, что датчик отсутствует.

При отсутствии фоторезистора дневное распределение яркости при установленном в настройках значении 15 будет выглядеть так:

Изображение

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

- Все текстовые строки перенесены в файл EEPROM

Это позволяет сделать перевод интерфейса на разные языки. В данный момент имеются белорусский, английский, украинский и русский варианты. Также это позволяет легко подправить текстовые метки под свои потребности.

- Конфигурация ножек МК вынесена в отдельный файл pins.h

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

- Ежечасный сигнал
При этом период действия "кукушка" завязан на настройку будильника (неважно, включен ли он сам по себе). Скажем, если он выставлен в 8:20, то первая "кукушка" прозвучит в 9:00 и будет срабатывать вплоть до 23:00, отключаясь на ночь.

- Три различного размера шрифта для отображения времени

При этом два "широких" шрифта можно настроить в EEPROM. Шрифт шириной 5 точек находится в eeprom по смещению 0x180, шириной 6 точек - по смещению 0x1C0. Принципы формирования шрифтов:
Сменить шрифт можно одновременным длительным нажатием кнопок 2 и 3.

- Возможность отключения лидирующего нуля при отображении времени

Делается это одновременным длительным нажатием кнопок 1 и 2. Можно переключить режим (вроде 08:15 <=> 8:15).

Различная полезная информация:

Расположение матриц при разводке платы под MAX7219:
Изображение

Шпаргалка по кнопкам:

Для запрета вывода некоторых данных от датчиков BMP180 и DHT22 в eeprom по адресу 0x0F находится соответствующий байт конфигурации, куда hex-редактором записываем соответствующую маску.

Интервал между выводом бегущих строк можно настроить в EEPROM. Для этого есть ячейка в EEPROM по адресу 0x0D, в которую записывается необходимое значение в диапазоне от 0 до 255 секунд.

Прошивку от 16.07.2015 можно скачать из вложения в этом сообщении.

Re: Часы на светодиодных матрицах с драйверами MAX7219

Чт фев 05, 2015 16:34:41

а схема не Proteus есть ? А то не всегда удобно смотреть в Proteus.

PS: тоже похожие делаю в данный момент, но на RGB матрицах+ радио FM+ датчик температуры+ датчик влажности. Регистры использую STP16CP05 в TSSOP24

Re: Часы на светодиодных матрицах с драйверами MAX7219

Чт фев 05, 2015 17:38:00

Только придётся, наверное, перейти на более "жирный" МК, т.к. в ATmega8 проект уже еле влезает

Осмелюсь предложить перейти на мк из серии STM32F0, DS1307 можно выкинуть. На Mega16 с Радиокота у меня часы на матрицах уже есть, на STM32 нету :( .

Re: Часы на светодиодных матрицах с драйверами MAX7219

Чт фев 05, 2015 19:09:45

SergSV писал(а):не всегда удобно смотреть в Proteus
Схемы нет, да и та что в Proteus, не совсем полная (не нарисовано питание и нет подтягивающих резисторов на I²C шине).

Печатки как таковой тоже нет, да и использовал я двухцветные матрицы (зелёный не используется, не распаян), так что разводка под них и мало кому подойдёт.
SergSV писал(а):похожие делаю в данный момент, но на RGB матрицах
Что за матрицы, где покупали?

Вообще у меня лежат 2 десятка матриц (красные 32x32 мм²) и драйверов MAX7219. Планирую из них сделать большую "бегущую строку" 16x64 точек. Т.е. на плате с матрицами только 2 входа питания и 3..4 линии управления. А уже управляющая всем этим схема будет отдельной и реализовываться на чём угодно. Правда, этот будущий проект уже не совсем в эту тему.

oleg110592 писал(а):DS1307 можно выкинуть
Что вместо неё? Или у STM32F0x есть свой блок RTC?

Re: Часы на светодиодных матрицах с драйверами MAX7219

Чт фев 05, 2015 19:40:59

WiseLord писал(а):Что за матрицы, где покупали?

тут заказывал http://www.aliexpress.com/item/5pcs-Lot ... 64099.html.
маркировка на них 2388RGB-5. Единственное там ошибка в даташите, расстояние между рядами выводов 46,4мм, а не 45,72 как указано. Фото как выглядят 4 шт
Изображение

Re: Часы на светодиодных матрицах с драйверами MAX7219

Чт фев 05, 2015 21:26:00

STM32F0x есть свой блок RTC?

Да, и есть отдельная ножка для батарейки. http://mcucpu.ru/index.php/platformy-32 ... -stm32f2xx

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сб фев 14, 2015 12:00:10

Добрый день.

Желательно бы статью, в форуме я случайно наткнулся.

Давно хочу собрать подобное.

Успехов.

Re: Часы на светодиодных матрицах с драйверами MAX7219

Вс фев 15, 2015 15:59:39

Здравствуйте! Хотелось бы так же увидеть статью. У меня есть мартрицы с драйверами max7219 собранные на отдельных платах хотелось бы их использовать. Работа с поиском не принесла успеха. Спасибо

Re: Часы на светодиодных матрицах с драйверами MAX7219

Вс фев 15, 2015 20:36:29

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

Точнее, есть разводка. Одна плата - под три max7219 + три матрицы, вторая - под микроконтроллер с часами. Ну и третья - собственно, кнопки.

Но эти платы настолько завязаны под конкретный корпус и под не совсем стандартные матрицы (двуцхветные, использован только красный цвет), что я не уверен, что кому-то они пригодятся.

А без печатных плат статья как-то не сильно имеет смысл. Потому что очень легко перепутать выводы матриц и получить мешанину. Хотя я могу и ошибаться.

В любом случае, выкладываю свои печатки. По схеме - ориентироваться на проект Proteus, добавив только подтягивающие резисторы 10кОм на SCL/SDA и, по желанию, на кнопки. Кварц ставить не нужно (на плате место под него есть), фьюзы от 8МГц внутреннего генератора.
Вложения
led-matrix layouts.7z
(37.97 KiB) Скачиваний: 2072

Re: Часы на светодиодных матрицах с драйверами MAX7219

Пн фев 16, 2015 09:26:32

[quote="WiseLord"]Возможно, статью бы я и написал. Только вот сложность в том, что у меня нет разводки печатных плат.

Точнее, есть разводка. Одна плата - под три max7219 + три матрицы, вторая - под микроконтроллер с часами. Ну и третья - собственно, кнопки.
Wiselord спасибо за печатки. Это то что нужно мне. У меня готовые наборы в наличии. Единственная просьба - дать схему картинкой а то у меня с протеусом никак не получается

Re: Часы на светодиодных матрицах с драйверами MAX7219

Пн фев 16, 2015 10:48:13

ОК, держите

Изображение

Во вложении последний вариант прошивки и полная схема - работающая в протеусе и отдельно картинкой же.

P.S. Набросал-таки статью. Будем ждать одобрения и появления на главной странице сайта.
Вложения
matrixclock.7z
(61.38 KiB) Скачиваний: 2644
Последний раз редактировалось WiseLord Пн фев 16, 2015 11:44:12, всего редактировалось 1 раз.

Re: Часы на светодиодных матрицах с драйверами MAX7219

Пн фев 16, 2015 10:55:04

Спасибо!!! Сбылась мечта!!!

Re: Часы на светодиодных матрицах с драйверами MAX7219

Пн фев 16, 2015 12:23:59

Спасибо WiseLord!!!

Начну собирать детали.

Re: Часы на светодиодных матрицах с драйверами MAX7219

Пн фев 16, 2015 12:43:46

Если говорить объективно, то те же простые часы, или, тем более, Super Clock, гораздо более функциональны.

Мой вариант - это просто своего рода более-менее удачная попытка потестировать самописную библиотеку для MAX7219.

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

Re: Часы на светодиодных матрицах с драйверами MAX7219

Пн фев 16, 2015 14:34:33

WiseLord, я не специалист по МК, но наверное возможно следующее:

Если применить dip корпус можно применить линейку МК Atmega48-328.

Функционал измениться от минимального до максимально возможного.

Мне интересно барометрическое давление.

Уличный термометр хорошо бы сделать радиоканалом,
Сверлить пластиковые окна - жена не поймёт.

Ну это всё мысли вслух.

Успехов.

Re: Часы на светодиодных матрицах с драйверами MAX7219

Вт фев 17, 2015 08:34:09

Если применить dip корпус можно применить линейку МК Atmega48-328.

Функционал измениться от минимального до максимально возможного.

Причем тут дип корпус и функционал?

Re: Часы на светодиодных матрицах с драйверами MAX7219

Вт фев 17, 2015 08:41:23

Видимо, имелось в виду, что эта линейка в DIP-корпусе имеет ту же цоколёвку, что и использованная в проекте ATmega8. Поэтому в случае DIP-корпуса можно легко сделать апгрейд платы, просто поставив в колодку МК пожирнее, и залив соответствующую прошивку.

Хотя и для QFP-корпуса особой проблемы нет - сдуть феном ATmega8 и поставить вместо неё ту же ATmega328. Цоколёвка тоже совпадает.

Re: Часы на светодиодных матрицах с драйверами MAX7219

Пт мар 06, 2015 09:35:56

как располагать матрицы на печатной плате, на выводах 13,3,4,10,6,11,15,16 которой аноды

первый вывод -
с права вверху
справа снизу
слева снизу
слева сверху
как бы вращаем матрицу на 90 град

Re: Часы на светодиодных матрицах с драйверами MAX7219

Пт мар 06, 2015 11:25:05

Вот разводка для схемы со стороны матриц (15888)

Изображение

Очень надеюсь, что я нигде не ошибся. В железе не проверял.

В скобках - номера выводов MAX7219.
Вложения
matrix.lay6.7z
(24.5 KiB) Скачиваний: 1762

Re: Часы на светодиодных матрицах с драйверами MAX7219

Пт мар 06, 2015 11:34:00

Спасибо, все стало понятно
Ответить