Форум РадиоКот https://radiokot.ru/forum/ |
|
Часы на светодиодных матрицах с драйверами MAX7219 https://radiokot.ru/forum/viewtopic.php?f=25&t=112934 |
Страница 1 из 92 |
Автор: | WiseLord [ Ср фев 04, 2015 13:37:50 ] |
Заголовок сообщения: | Часы на светодиодных матрицах с драйверами MAX7219 |
Статья 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 работой часов: Вложение: 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. Принципы формирования шрифтов: СпойлерКод: -xxx- 5 байт(снизу вверх, слева направо): x---x x---x 1: 0b00111110 => 0x3E x---x 2: 0b01000001 => 0x41 x---x 3: 0b01000001 => 0x41 x---x 4: 0b01000001 => 0x41 -xxx- 5: 0b00111110 => 0x3E ----- В eeprom hex-редактором по смещению 0x1C0 вписываем 3E 41 41 41 3E. Аналогично продолжаем для цифр 1-9 - Возможность отключения лидирующего нуля при отображении времени Делается это одновременным длительным нажатием кнопок 1 и 2. Можно переключить режим (вроде 08:15 <=> 8:15). Различная полезная информация: Расположение матриц при разводке платы под MAX7219: Шпаргалка по кнопкам: СпойлерКороткие нажатия кнопок:В режиме часов: 1 - остановка бегущей строки 2 - показать дату бегущей строкой 3 - показать данные с датчиков бегущей строкой. В режимах настройки: 1 - следующий редактируемый параметр; 2 - увеличить текущий параметр; 3 - уменьшить текущий параметр. Длинные нажатия кнопок: 1 - вход в режим настройки времени; 2 - вход в режим настройки будильника; 3 - вход в режим настройки максимальной яркости (используется при отсутствии фоторезистора). Повторное длительное нажатие кнопки возвращает из соответствующего режима настройки в режим часов. 1 и 2 одновременно - переключение режима отображения лидирующего нуля в часах (07:43 или 7:43); 2 и 3 одновременно - выбор шрифта для режима часов; 1, 2 и 3 одновременно - разворот картинки на 180 градусов. Для запрета вывода некоторых данных от датчиков BMP180 и DHT22 в eeprom по адресу 0x0F находится соответствующий байт конфигурации, куда hex-редактором записываем соответствующую маску. Спойлер0x10 - вывод температуры от BMP1800x20 - вывод температуры от DHT22 0x40 - вывод давления от BMP180 0x80 - вывод влажности от DHT22 Любая комбинация вывода производится сложением масок. Например, 0x40 + 0x80 = 0xC0 - будет выводиться только давление и влажность, без температур. Или, 0x20 + 0x40 + 0x80 = 0xE0 - выводим всё, кроме температуры от BMP180. По умолчанию значение в EEPROM равно 0xF0, что при наличии всех датчиков будет выводить все возможные данные от них. Интервал между выводом бегущих строк можно настроить в EEPROM. Для этого есть ячейка в EEPROM по адресу 0x0D, в которую записывается необходимое значение в диапазоне от 0 до 255 секунд. Прошивку от 16.07.2015 можно скачать из вложения в этом сообщении. |
Автор: | SergSV [ Чт фев 05, 2015 16:34:41 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
а схема не Proteus есть ? А то не всегда удобно смотреть в Proteus. PS: тоже похожие делаю в данный момент, но на RGB матрицах+ радио FM+ датчик температуры+ датчик влажности. Регистры использую STP16CP05 в TSSOP24 |
Автор: | oleg110592 [ Чт фев 05, 2015 17:38:00 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
Цитата: Только придётся, наверное, перейти на более "жирный" МК, т.к. в ATmega8 проект уже еле влезает Осмелюсь предложить перейти на мк из серии STM32F0, DS1307 можно выкинуть. На Mega16 с Радиокота у меня часы на матрицах уже есть, на STM32 нету . |
Автор: | WiseLord [ Чт фев 05, 2015 19:09:45 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
SergSV писал(а): не всегда удобно смотреть в Proteus Схемы нет, да и та что в Proteus, не совсем полная (не нарисовано питание и нет подтягивающих резисторов на I²C шине).Печатки как таковой тоже нет, да и использовал я двухцветные матрицы (зелёный не используется, не распаян), так что разводка под них и мало кому подойдёт. SergSV писал(а): похожие делаю в данный момент, но на RGB матрицах Что за матрицы, где покупали?Вообще у меня лежат 2 десятка матриц (красные 32x32 мм²) и драйверов MAX7219. Планирую из них сделать большую "бегущую строку" 16x64 точек. Т.е. на плате с матрицами только 2 входа питания и 3..4 линии управления. А уже управляющая всем этим схема будет отдельной и реализовываться на чём угодно. Правда, этот будущий проект уже не совсем в эту тему. oleg110592 писал(а): DS1307 можно выкинуть Что вместо неё? Или у STM32F0x есть свой блок RTC?
|
Автор: | SergSV [ Чт фев 05, 2015 19:40:59 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
WiseLord писал(а): Что за матрицы, где покупали? тут заказывал http://www.aliexpress.com/item/5pcs-Lot ... 64099.html. маркировка на них 2388RGB-5. Единственное там ошибка в даташите, расстояние между рядами выводов 46,4мм, а не 45,72 как указано. Фото как выглядят 4 шт |
Автор: | oleg110592 [ Чт фев 05, 2015 21:26:00 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
Цитата: STM32F0x есть свой блок RTC? Да, и есть отдельная ножка для батарейки. http://mcucpu.ru/index.php/platformy-32 ... -stm32f2xx |
Автор: | Cheal [ Сб фев 14, 2015 12:00:10 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
Добрый день. Желательно бы статью, в форуме я случайно наткнулся. Давно хочу собрать подобное. Успехов. |
Автор: | Kuzma511 [ Вс фев 15, 2015 15:59:39 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
Здравствуйте! Хотелось бы так же увидеть статью. У меня есть мартрицы с драйверами max7219 собранные на отдельных платах хотелось бы их использовать. Работа с поиском не принесла успеха. Спасибо |
Автор: | WiseLord [ Вс фев 15, 2015 20:36:29 ] | ||
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 | ||
Возможно, статью бы я и написал. Только вот сложность в том, что у меня нет разводки печатных плат. Точнее, есть разводка. Одна плата - под три max7219 + три матрицы, вторая - под микроконтроллер с часами. Ну и третья - собственно, кнопки. Но эти платы настолько завязаны под конкретный корпус и под не совсем стандартные матрицы (двуцхветные, использован только красный цвет), что я не уверен, что кому-то они пригодятся. А без печатных плат статья как-то не сильно имеет смысл. Потому что очень легко перепутать выводы матриц и получить мешанину. Хотя я могу и ошибаться. В любом случае, выкладываю свои печатки. По схеме - ориентироваться на проект Proteus, добавив только подтягивающие резисторы 10кОм на SCL/SDA и, по желанию, на кнопки. Кварц ставить не нужно (на плате место под него есть), фьюзы от 8МГц внутреннего генератора.
|
Автор: | Kuzma511 [ Пн фев 16, 2015 09:26:32 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
[quote="WiseLord"]Возможно, статью бы я и написал. Только вот сложность в том, что у меня нет разводки печатных плат. Точнее, есть разводка. Одна плата - под три max7219 + три матрицы, вторая - под микроконтроллер с часами. Ну и третья - собственно, кнопки. Wiselord спасибо за печатки. Это то что нужно мне. У меня готовые наборы в наличии. Единственная просьба - дать схему картинкой а то у меня с протеусом никак не получается |
Автор: | WiseLord [ Пн фев 16, 2015 10:48:13 ] | ||
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 | ||
ОК, держите Во вложении последний вариант прошивки и полная схема - работающая в протеусе и отдельно картинкой же. P.S. Набросал-таки статью. Будем ждать одобрения и появления на главной странице сайта.
|
Автор: | Kuzma511 [ Пн фев 16, 2015 10:55:04 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
Спасибо!!! Сбылась мечта!!! |
Автор: | Cheal [ Пн фев 16, 2015 12:23:59 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
Спасибо WiseLord!!! Начну собирать детали. |
Автор: | WiseLord [ Пн фев 16, 2015 12:43:46 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
Если говорить объективно, то те же простые часы, или, тем более, Super Clock, гораздо более функциональны. Мой вариант - это просто своего рода более-менее удачная попытка потестировать самописную библиотеку для MAX7219. Ну и по сложности схема получилась с меньшим, чем в других схемах, количеством деталей и занятых линий МК. Плюс на основе этой схемы легко сделать длинную бегущую строку, практически не усложняя конструкцию, а просто добавляя в цепочку новые драйверы+матрицы, без увеличения числа требуемых от МК линий управления. |
Автор: | Cheal [ Пн фев 16, 2015 14:34:33 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
WiseLord, я не специалист по МК, но наверное возможно следующее: Если применить dip корпус можно применить линейку МК Atmega48-328. Функционал измениться от минимального до максимально возможного. Мне интересно барометрическое давление. Уличный термометр хорошо бы сделать радиоканалом, Сверлить пластиковые окна - жена не поймёт. Ну это всё мысли вслух. Успехов. |
Автор: | pcb432 [ Вт фев 17, 2015 08:34:09 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
Цитата: Если применить dip корпус можно применить линейку МК Atmega48-328. Функционал измениться от минимального до максимально возможного. Причем тут дип корпус и функционал? |
Автор: | WiseLord [ Вт фев 17, 2015 08:41:23 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
Видимо, имелось в виду, что эта линейка в DIP-корпусе имеет ту же цоколёвку, что и использованная в проекте ATmega8. Поэтому в случае DIP-корпуса можно легко сделать апгрейд платы, просто поставив в колодку МК пожирнее, и залив соответствующую прошивку. Хотя и для QFP-корпуса особой проблемы нет - сдуть феном ATmega8 и поставить вместо неё ту же ATmega328. Цоколёвка тоже совпадает. |
Автор: | dt_andrew [ Пт мар 06, 2015 09:35:56 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
как располагать матрицы на печатной плате, на выводах 13,3,4,10,6,11,15,16 которой аноды первый вывод - с права вверху справа снизу слева снизу слева сверху как бы вращаем матрицу на 90 град |
Автор: | WiseLord [ Пт мар 06, 2015 11:25:05 ] | ||
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 | ||
Вот разводка для схемы со стороны матриц (15888) Очень надеюсь, что я нигде не ошибся. В железе не проверял. В скобках - номера выводов MAX7219.
|
Автор: | dt_andrew [ Пт мар 06, 2015 11:34:00 ] |
Заголовок сообщения: | Re: Часы на светодиодных матрицах с драйверами MAX7219 |
Спасибо, все стало понятно |
Страница 1 из 92 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |