Когда-то давно в детстве, когда я ещё только начинал заниматься электроникой, у меня была мечта изготовить огромные часы на семисегментных индикаторах. Точнее, изготовить большой индикатор и подключить его к электронной плате уже имеющихся маленьких электронных часов. Для изготовления самих семисегментных индикаторов в качестве сегментов я рассматривал люминесцентные лампы дневного света. Других идей на тот момент мне не приходило. А на таких лампах делать часы – не очень хорошая задумка.
По прошествии многих лет в обиход вошли другие более практичные источники света, в частности, светодиодные ленты. Именно они и послужили стимулом воплотить свою старую задумку в реальность. Имея возможность и опыт программирования микроконтроллеров, я решил, конечно же, самостоятельно изготовить электронную плату для часов со своими функциональными возможностями. Кроме отображения часов и минут я задумал сделать отображение даты и температуры. В данной статье я не буду подробно описывать принципиальную схему и прошивку МК. Напишу лишь краткий обзор и историю разработки своей конструкции.
Конструированием больших часов из светодиодной ленты я начал заниматься ещё 7 лет назад. Было приобретено 3 рулона дешёвой светодиодной ленты по 5 метров в каждом (4.8 Вт/м, синий цвет). Исходя из имеющегося количества ленты (3*5=15 м) я определился с длиной одного сегмента: 50 см. Всего сегментов 28 (4 по 7) плюс две точки по центру (одна внизу и одна вверху), разделяющие часы и минуты. Итого – 30 сегментов. То есть, планировалась израсходоваться вся имеющаяся светодиодная лента. Точки представляют собой 5 отрезков по 10 см каждый, что по длине и по мощности эквивалентно одному сегменту. Они сложены в квадрат 10 на 10 см.
Все отрезки светодиодной ленты уложены в специальный алюминиевый профиль. Данный профиль, предназначенный для светодиодной ленты, также можно свободно найти в продаже. Вовнутрь профиля приклеивается светодиодная лента, а сверху закрывается пластиковым матовым материалом для рассеивания света. Все профили скручены в единый каркас, размером 320 на 105 см. Края смежных профилей я соединил через металлические кружочки. Для усиления жёсткости всей конструкции в некоторых местах я прикрутил дополнительные алюминиевые уголки.
Электронная плата сделана на базе микроконтроллера Atmega8. Часовая микросхема DS3231 в виде модуля (с обвесом и батарейкой CR2032) втыкается в разъём на плате. Датчик температуры DS1621 подключен к плате коротким кабелем и выведен наружу снизу коробки. Также на плате предусмотрены три кнопки для настройки и конфигурации часов. С практической точки зрения они не очень удобны, так как находятся внутри коробки. Поэтому со временем я дополнил плату модулем Bluetooth HC-06, подключенным к UART интерфейсу МК.
Через Bluetooth можно подключаться с ноутбука или смартфона, используя в качестве программы любой терминал. В свою очередь внутри программы МК предусмотрен набор текстовых команд для управления с таких терминалов. Имеется возможность не только настраивать дату и время, но и менять режимы и продолжительность отображения времени, даты и температуры по очереди. Вывод информации на сегменты реализован через сдвиговые регистры 74HC595 и транзисторные ключи структуры NPN. В качестве последних сначала применялись четыре 8-канальных ключа ULN2803. Было 4 одинаковых дочерних плат, которые втыкались в основную плату с МК. На каждой из них размещались регистр, 8-канальный ключ и выходные клеммы для подключения проводов к сегментам. Кстати, именно они и послужили в дальнейшем непрямому соответствию нумерации бит и сегментов из-за удобства монтажа.

Данные ключи от нагрузки перегревались и со временем вышли из строя (немножко не рассчитал). Поэтому я решил изготовить плату с транзисторами помощнее. На ней я разместил 32 транзистора BD139 (2 – в резерве) и 4 регистра. Эту плату с платой МК я соединил проводами.

В качестве общего провода всех сегментов (общий плюс) применяется сам каркас. Провода к каждому сегменту идут от электроники (коробка 3) через промежуточные коробки, в которых спрятаны разъёмные соединения (коробки 1 и 2). В коробке 3 кроме электроники также находится блок питания на 12В. Такая конструкция надёжно проработала несколько лет. Часы висели в большом помещении.





Со временем возникло желание повесить часы на улицу. Для этого в первую очередь нужно было обеспечить защиту конструкции от влаги и осадков. Для этой цели я решил полностью обновить светодиодную ленту на влагозащищённую. Заодно хотелось, чтобы часы светили гораздо ярче и были видны даже в светлое время суток. Я нашёл в продаже крутую влагозащищённую яркую светодиодную ленту белого свечения мощностью 24 Вт/м. На ней светодиоды расположены более плотно, чем на предыдущей ленте, и они более яркие. В конструкцию каркаса я также внёс небольшие дополнения – добавил 2 дополнительных сегмента. В первой «восьмёрке» – диагональный сегмент в нижней части, а в последней – наклонный сегмент в нижнем правом углу. Подключены они к оставшимся двум резервным каналам выходных ключей (всего у меня 4 регистра по 8 бит, или же 32 канала). Эти дополнительные сегменты нужны для возможности отображения на часах своего ника на хабре радиолюбительского позывного R3EQ: на первой «восьмёрке» – буква «R», а на последней – «Q».
После обновления светодиодной ленты некоторые места я промазал герметиком, особенно места пайки проводов, чтобы ещё больше исключить попадание влаги. От общей шины питания в виде самой конструкции я отказался и решил подводить к каждому сегменту отдельную пару проводов. Это полностью исключает возможные проблемы с просадкой напряжения.
В электронику я также ввёл существенные изменения. Из-за умощнения нагрузки пришлось обновить блок питания. Точнее, я поставил их два: один на первую половину циферблата, другой – на вторую и на питание электронной платы. Плату с регистрами и транзисторными ключами я также обновил, расположив транзисторы в один ряд с целью их монтажа на теплоотвод. В качестве теплоотвода применён кусок алюминиевого уголка соответствующей длины. Ведь при такой новой нагрузке (1А на сегмент) транзисторы стали греться довольно неплохо.

Все вышеперечисленные потроха я разместил в новый корпус – герметичный металлический электрошкаф. Он получился довольно тяжёлый, и поэтому я не стал его крепить к каркасу часов и повесил рядом. Соединения между электрошкафом и индикацией выполнены множествами пар проводов, уложенных в гофре, через два круглых 32-пиновых герметичных разъёма на дне шкафа.

Из промежуточных распределительных коробок провода разводятся на сегменты через кабель-каналы позади конструкции. Вместо модуля Bluetooth я решил поставить самодельный преобразователь UART-TCP/IP (Telnet сервер) для управления часами с терминала на любом расстоянии через локальную сеть или Интернет. Данный преобразователь описан в моей самой первой публикации на Habr.


Ещё в прошивку добавил новую полезную функцию – регулировку яркости. Технически это реализовано на таймере МК с режимом ШИМ. Соответственно, с помощью ШИМ за счёт изменения скважности импульсов регулируется напряжение, подаваемое на все сегменты. Сигнал ШИМ с соответствующего вывода МК идёт на выводы «OE» регистров. Кстати, эту реализацию я придумал уже после того, как изготовил печатные платы. Поэтому пришлось городить костыли (можно увидеть на рис. 15). Предусмотрено 10 градаций яркости, включая нулевую яркость, когда часы не горят. Команды терминала – «y0», …, «y9». Как известно, зависимость видимого свечения светодиодов от приложенного к ним напряжения не линейна, а имеет «выпуклую» характеристику в пользу потребителя. То есть, к примеру, 50% приложенного напряжения соответствует 75% яркости. Тем самым, в частности, можно снизить напряжение на светодиоды примерно на 10-20%, при этом почти ничего не потеряв в яркости. Именно на предпоследней градации яркости («y8») я и эксплуатирую часы. Стоит понимать, что ШИМ сама по себе создаёт мерцание светодиодов на определённой частоте, типа не видимой для глаз. Частоту ШИМ я выбрал действительно высокой (1.35 кГц), которая глазам практически не мешает. Но я предусмотрел переключение частоты ШИМ специальными командами «f1», …, «f5» с экспериментальной целью. При этом в прошивке переключаются предусмотренные в МК делители таймера. Получились частоты 10.5 Гц (мерцание однозначно видно всем), 42.2 Гц, 168.75 Гц, 1.35 кГц, 10.8 кГц. На самой высокой частоте ШИМ 10.8 кГц при одной и той же средней яркости часы светятся чуть-чуть бледнее. Видимо, на этой частоте светодиоды уже перестают успевать набирать полную яркость. Самая оптимальная частота – 1.35 кГц. Недостаток ШИМ на этой частоте – тихий свист из электрошкафа с той же частотой. Но он слышен в комнате при идеальной тишине (при подключенной нагрузке, само собой).
Спустя год мне снова захотелось модернизировать конструкцию. А именно, было желание, чтобы часы отображали атмосферное давление. Самый распространённый, дешёвый и довольно точный в показаниях датчик – BMP280. Совместно с датчиком в моей конструкции применён модуль схемы согласования уровней I2C 3.3В-5В, так как датчик работает от 3.3В, а моя схема – от 5В. Эти модули применяют в своих конструкциях ардуинщики.

Избегая Ардуино, на данный датчик имеется подробная документация (даташит). Для получения информации о давлении необходимо внести в прошивку МК кучу вычислений. Данные вычисления не поместились в память МК Atmega8. Поэтому я нарисовал и изготовил новую плату для МК Atmega32, и перенёс всю прошивку на неё. На данной плате я предусмотрел схему подключения распространённого аналогового температурного датчика NTC (термистора) на 10 кОм для возможности измерения и отображения температуры на более длинном расстоянии от часов. Попутно с этим я решил отказаться от самодельного переходника UART-TCP/IP, приобретя на Алиэкспрессе по дешёвке аналогичное устройство в отдельной небольшой коробочке. Но у него UART интерфейс выполнен на разъёме DB9 с электрическими уровнями компьютерного COM-порта (RS-232). Поэтому на новой плате я предусмотрел микросхему преобразователя уровней MAX232, через которую и подключается новый переходник. Кнопки на новой плате я ставить не стал, и их функционал исключил из прошивки.



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

Калькулятор для расчёта HEX-кода комбинации сегментов я сделал в Excel.

Продолжительности страниц автопрокрутки также по-прежнему гибко настраиваются через терминал. Имеется возможность переключаться между датчиками температуры для отображения (DS1621 или NTC). По команде «info» в терминал выводится вся информация с датчиков.
Часами можно управлять командами с терминала по TCP не только вручную, но и в автоматическом режиме. Существуют терминальные программы, поддерживающие программирование сценариев и скрипты. Но я поступил проще – создал простейший Telnet клиент в среде разработки «Visual Studio 2022» с применением библиотек <WinSock2.h> и <WS2tcpip.h>. Цель данной затеи – дополнить свои часы ещё несколькими функциями, не меняя прошивку МК. В частности мне хотелось, чтобы ночью в определённое время уменьшалась яркость свечения часов, а утром – увеличивалась. Это как раз я и реализовал с помощью своего простейшего приложения. Данная программа выполняется в командной строке. При вызове программы указываются аргументы – текстовые строки, которые по очереди будут отправлены на указанный TCP сервер, в роли которого являются часы (точнее, переходник TCP/IP – RS-232, установленный в часах). Вызов программы с нужными аргументами, т.е. параметрами яркости, осуществляется в планировщике заданий Windows по заранее заданному сценарию.

Учитывая то, что на часах предусмотрен режим отображения произвольной информации (произвольной комбинации сегментов), которая посылается к ним по TCP специальной командой, имеется возможность использовать часы в качестве индикатора. В частности, реализовать программу отображения на часах времени и даты полностью на компьютере. К сожалению, скорость обновления информации не сильно высокая. Чаще, чем 3 раза в секунду, у меня не получилось обновить информацию на циферблате. Это связано с неоптимальной реализацией алгоритма приёма информации по UART в прошивке МК. Тем не менее, для некоторых приложений такой скорости вполне хватает. В одной из следующих статей речь пойдёт как раз об одном из таких приложений.
Напоследок – ещё несколько фотографий часов.




За полтора года эксплуатации часов не было ни единого сбоя в их работе. Хотя нет, один сбой всё-таки был 31 мая этого года. Об этом я как раз и хотел написать. С утра я заметил, что часы периодически то потухнут, то погаснут. То есть, примерно 10 минут горят и 5 минут не горят. Не помогала даже перезагрузка. Но при параметре полной яркости они горят постоянно, и всё нормально. Я весь день выяснял, в чём причина. Оказалось, что сбился параметр делителя таймера, отвечающего за ШИМ (регулировку яркости), хранящийся в EEPROM МК. То есть, параметр частоты ШИМ, управляющийся командами «f1», …, «f5». Он каким-то образом ушёл за свои пределы, переключившись на непредусмотренный «f0». А согласно регистру конфигурации таймера в МК AVR нулевой делитель соответствует переключению таймера T1 на внешний источник тактирования по пину T1. А данный пин в моей схеме совпал с пином строба второго регистра. Получается, что мой таймер, отвечающий за ШИМ, стал тактироваться сигналом строба на регистр, который формируется не чаще, чем раз в секунду. Тем самым частота пульсации ШИМ значительно упала, и задание яркости превратилось в периодическое включение и отключение часов.
Комментарии (83)
 - VirtualVoid18.09.2024 21:08- Классная работа. За самодельные платы лайк) 
 С "адресными" наверное было бы больше преимуществ, хоть и подороже.
 Без регистров, без силовых ключей, без шим с контроллера, и наконец, гибкость и цвета. - R3EQ Автор18.09.2024 21:08+1- Я про них тогда и не знал. Да и таких ярких адресных мне не встречались пока.  - xSVPx18.09.2024 21:08- Совершенно точно бывают 144шт на метр, т.е. диоды на них вплотную почти сидят. - Но требуют нормального охлаждения, у меня наклеены хоть и на нержавейку, но она большой площади очень, и вокруг ленты нагревается слегка.  - R3EQ Автор18.09.2024 21:08- у меня 117шт на сегмент. 39 по 3 (кратность отреза). Это чуть меньше 50 см. А на синей ленте было 30, тоже по 3 кратность отреза, но там было ровно 50 см.  - xSVPx18.09.2024 21:08- Я о типоразмере 5050. 144*0.5 это 72% ленты занято непосредственно корпусами диодов... В полметра можно вместить 100шт только если их вплотную ставить один к другому, с нулевым зазором. 
 
 
 
 
 - Solgo18.09.2024 21:08+6- А почему бы не использовать MOSFET транзисторы вместо биполярных? Не понадобился бы радиатор. Да и блок питания можно было бы использовать менее мощный. 1А на сегмент, 1В грубо - напряжение насыщение биполярного транзистора. Получается 1Вт на сегмент, 32 сегмента = 32Вт лишнего потребления. - Как профи, не привык читать описание схемы текстом, графической изображение более привычно. Поэтому удивило отсутствие принципиально схемы в статье.  - R3EQ Автор18.09.2024 21:08+1- Биполярные у меня были. А мосфеты я никогда не юзал. Хотя, пора бы уже на них переходить. Я смотрю. все в основном на них ключи делают. А в мою конструкцию можно было даже и реле поставить  - redfox018.09.2024 21:08+1- Если мосфеты не нравятся, то можно взять готовую микросхему драйвера. Например, l298n - постоянный ток на канал до 2 А (выходы можно запараллелить и получить до 4 А), напряжение до 46 В, 4 канала. Один минус: нужно дополнительное питание самой микросхемы в 5 В.  - R3EQ Автор18.09.2024 21:08- Неплохая идея. Я когда-то работал с такой микросхемой. Шаговые двигатели подключал... 
  - Yuri012818.09.2024 21:08- Так и хочется спросить: а нахе.. а зачем? Один транзистор менять на не самую маленькую микросхему? Смысл? 
 
 
 
 - Klochko18.09.2024 21:08+4- Классные часы. В 2005 году я только пришел в кружок радиоэлектроники и там девушка собирал тоже большие настенные часы. - Но собирала она на микрухах логики, вот не вспомню 176 или 155 были. Но что-то из них. - Сегменты индикатора были сделан из множества жестяных кусков по моему от банок кофе, нарезанных и спаянных между собой. Передняя стенка то ли из оргстекла, то ли что-то подобное. В каждом сегменте было не то 4 не то 5 лампочек накаливания на 3В. - Сколько ж там было плат, проводов, шлейфов всяких, транзисторов и прочего — словами не передать. И все все на логике. Микроконтроллера точно там не было. - В общем тоже монументальная огромная конструкция, целиком и полностью самодельная. Если ничего не путаю, у девушки дипломная работа такая была не то в техникуме не то в универе. - Деталей не помню уже, было мне лет 10 тогда наверно. Но можно сказать, что я до сих пор под впечатлением от того, что она сделала.  - redfox018.09.2024 21:08- Меня даже заинтересовало как можно сделать часы на транзисторной рассыпухе. - По факту часы - это большой счётчик. С генератором проще: какой-нибудь мультивибратор 1-2 Гц на двух транзисторах. Дальше нам нужны регистры, чтобы хранить текущее состояние времени. Интуитивно кажется, что проще взять 4 разряда, то есть каждую десятичную цифру хранить отдельно. - Даже интереснее, если реализовать хранение в двоичной системе исчисления, схема станет сложнее или проще? При десятичной системе нам потребуется хранить 10 "бит" данных - один из "битов" всегда включён, остальные выключены. При двоичной нам потребуется log2(10) = 3.3 = 4 бита (даже с запасом, значения от 0 до 15 включительно). - Кстати, в то время уже были 4-х битные микросхемы логики, так что для счётчика останется накидать элементов 2И-НЕ, чтобы правильно реализовать бит переноса: 
 00:09 + 1 = 00:10 - то есть принудительно обнулить младший разряд.
 00:59 + 1 = 01:00- Дополнительно существуют готовые микросхемы, на вход которых подаётся 4-х битное число, на выходе - сигналы для семисегментных индикаторов. - Итого, в 20-30 логических микросхем можно уложиться для создания часов.  - R3EQ Автор18.09.2024 21:08+3- Да, можно. Кстати, в микросхемах RTC DS3231, 1307 и в PCF8583 значения времени и даты как раз кодируются поциферно 4 битами. Двоично-десятичный формат. 
  - R3EQ Автор18.09.2024 21:08+1- А ещё, когда в детстве я только начинал заниматься электроникой, моим началом были лампочки, выключатели и реле. Про транзисторы и микросхемы я даже и не знал, для чего они и зачем. Понимал только очень приблизительно. Так вот, у меня были идеи сделать часы полностью на реле, но из нужно было очень-очень много. Я бы заново изобрёл счётчики и дешифраторы, не зная даже таких понятий. Но не смог придумать, как реализовать "генератор секунд".  - Moog_Prodigy18.09.2024 21:08- Запитываем реле через нормально замкнутый контакт, и параллельно контакту конденсатор 10-1000 мкф. Вот и генератор.  - R3EQ Автор18.09.2024 21:08- Меня так и научили тогда кстати. Только параллельно не контакту, а катушке. До этого я из любопытства, не зная что такое конденсатор, собрал такую схему без него. А потом, когда включил, понял, что по такому принципу работает звонок в школе.  - Moog_Prodigy18.09.2024 21:08+1- Нет, обычный школьный звонок, если мы говорим о модели МЗМ-1, не имеет никаких контактов, но имеет в составе последовательно катушке диод, и просчитанную кинематику. При приходе условно положительного полупериода боек резко ударяет в одну из чаш звонка, полупериод спадает, и пружина отклоняет боек обратно, где он по инерции бьет по другой чаше. Процесс повторяется. На старых звонках можно увидеть неравномерный износ чаш и молоточка. А вот без диода он работать не сможет. В старых телефонных аппаратах похожий принцип. Тоже переменка 110 вольт на входе и диод. Никаких контактов. Хотя я встречал звонки именно с контактами - обычно у них только одна чаша. - Схема с запитыванием катушки через нормально замкнутый контакт использовалась в катушках Румкорфа. Любители на этом принципе и сейчас делают генераторы высокого. - А вообще на реле можно построить и часы, и любую логику,и необязательно для этого собирать тысячи реле для создания мелко-ЭВМ. Посмотрите книгу "Юный кибернетик", и принципы, заложенные в автомат, играющий в крестики-нолики. 
 
 
 
  - Antares199118.09.2024 21:08+1- С мультивибратором точность будет никакая, малейшее изменеие температыры, и даже идельно настроенный мульт поплывёт. 
 Короче, 1шт К176ИЕ12, 2шт К176ИЕ3, 4шт К174ИЕ4 + один корпус логики (или резистор и 3 диода), чтобы превратить 24 часа в 00 - всего 8 (7) корпусов (без секунд - 6 (5)) + россыпь транзисторов для управления лампочками. Всё.
 Если изловчиться с силовыми ключами, то можно и на полуспециализированном наборе из 3 корпусов (ИЕ18(ИЕ12), ИЕ13, ИД3(ИД2)) собрать с динамической индикацией.
 
  - Kononvaler18.09.2024 21:08+1- Делал в 80е на 155 логике, совсем просто там, несколько микрух всего лишь.сдвиговые регистры и дешифраторы двоичного в десятичный (или семисегментный) готовые микросхемы. - Вот задающий не делал, а использовал сеть, и что поразило, уход был в несколько секунд наверно в неделю. Насколько точно выдерживали 50гц сети...  - theghost6918.09.2024 21:08- Afair 50 герц выдерживались строго, потому что необходима была синхронизация электросетей по всей энергосистеме СССР, на это был ГОСТ, за который в случае нарушения били больно... Батя работал в городской энергетике, запомнилось с его рассказов. У них в конторе на щите контрольном были частотомеры с резонансным язычком. Я заинтересовался приборами, он рассказал, что и как :) 50 лет как минуло с тех пор :) 
 
 
 - Yuri012818.09.2024 21:08+2- Я сиьно извиняюсь, но вы указали что юзали: - На ней я разместил 32 транзистора BC139 - Но BC139 - это 0.5A p-n-p транзисоры (и они вроде-как в совсем другом корпусе), - как вы их напрямую подключили к 595-м регистрам. И если вы ими заменяли сборки n-p-n ключей Дарлинтгтона - как у вас это все получилось? Или вы ошиблись и применили 1,5А-е BD139? - И еще, если все-же там BD139, то у них на токе в 1 А коэф. усиления примерно 40, а 595 выдает примерно до 8 мА на вывод (70 мА на микросхему), то есть у вас транзисторы не находятся в режиме насыщения а работают в акивном режиме (ну и греются). В режиме насыщения на транзюке падало бы 0,5В (или 32*0,5 = 16 Вт), что в целом терпимо. На полевиках было-бы сильно меньше (радиатор точно не нужен был-бы, делал что-то похожее - транзисторы на 4+ ампера в sot23 вполне себе жили да и живут), но уже как есть.  - R3EQ Автор18.09.2024 21:08- Спасибо. Да, BD139. Исправлю. Согласен, что полевые транзисторы были б лучше. Но у меня всегда была ассоциация, что полевые менее надёжны. На транзисторе у меня падает 1В. Летом радиатор греется до 92 градусов. Зато зимой не замерзают.  - Yuri012818.09.2024 21:08+3- Ну таки в активном режиме. Просто возьмите и замените их на полевики. Просто. Для надежности - резистор между затвором и истоком. Транзистор с малым Rdson. И пускай себе мерзнут. 
 
 
 - alexhott18.09.2024 21:08+2- Большие часы всегда взгляд притягивали. В 2005 починял часы электроника с зелеными такими люминесцентными индикаторами (в советское время почти во всех учреждениях висели). Вот они как в одном из комментариев собраны были на советских микросхемах логики. Но одна микросхема была специализированная - специально для часов, ну и выходные транзисторы высоковольтные. Поменял все микросхемы - не работает, из приборов только мультиметр. Случайно задел кварц - часы поменяли отображение, сдернул со старой материнки часовой кварц, впаял в часы - ожили и до сих пор там наверно трудятся. 
 - kasiopei18.09.2024 21:08+1- А какая точность получилась? На сколько секунд в сутки спешат/отстают? Погрешность постоянная?  - R3EQ Автор18.09.2024 21:08+1- Спешат на 1 секунду в неделю. То есть, за полгода убегут вперёд примерно на 24 сек. Такая хорошая, как я считаю, погрешность достигается применением RTC микросхемы DS3231. Там встроенная коррекция. Погрешность своих часов я узнал следующим образом. На моём компьютере время идёт всегда точно, так как обновляется через интернет. На нём же планировщик два раза в сутки переключает яркость. Но перед посылом команды изменения яркости посылается команда «info» (можно видеть на рис. 28), по которой часы отправляют текущие показания времени и датчиков. Это информация логируется в текстовый файл. Отсюда можно узнать погрешность. Также я предусмотрел в этой программе специальный аргумент, при указании которого программа отправляет в часы команду настройки даты и времени, значения которых берутся из системы. Если выполнять эту команду также по планировщику хотя бы раз в сутки, часы будут всегда показывать правильное время.  - Antares199118.09.2024 21:08+4- На улице будет сильнее плыть. Вам бы DSку в помещение куда-нибудь запихнуть, или синхронизироваться с чем-нибудь периодически. Кстати, в Вашем случае хорошо с этим может GPS приёмник справится - он, кроме координат, ещё и точное UTC время принимает. Обзор небосвода в Вашей конструкции хороший, тем более, что для таких целей Вам даже 1 спутника достаточно будет. А транзисторы можете как есть поменять попробовать корпус на корпус, без изменений в схеме/плате. Тогда вообще радиатор не понадобится. Что-нибудь logic-level, типа IRLZ34 
 UPD: сорян, невнимательно прочитал Ваш комментарий. Но идею с GPS можно зять на вооружение. У самого стоят самодельные Nixie часы на подоконнике, очень удобно, что поправлять время никогда не нужно. - R3EQ Автор18.09.2024 21:08- Меня устраивает такая погрешность и наличие возможности подстройки времени вышеописанным способом. А так с GPS тоже были раньше идеи. У меня даже есть модуль. А можно ещё можно по радио синхронизировать. И по интернет, если бы на борту стоял модуль W5500. Об этом я уже писал в самой первой статье. 
 
 
 
 - redfox018.09.2024 21:08+2- Теперь нужно собрать такие же часы на люминесцентных лампах. И зажигать их высоким напряжением, а не штатными спиралями.  - Javian18.09.2024 21:08- семисегментных индикаторов в качестве сегментов я рассматривал люминесцентные лампы дневного света - Много лет назад в городе были часы на лампах накаливания, горевших накалом ниже номинального. Меня в впечатляло количество ламп и тогда меня посетила мысль, что люминесцентными лампами было бы проще. Школьник вырос и с годами узнал, что у люминесцентных ламп есть куча побочек. - А теперь мне цвет ламп накаливания больше нравится.   - Antares199118.09.2024 21:08+1- Проще, пока морозы не ударят. На морозе очень плохо люминисцентки работают, пока сами себя не разогреют, для часов - вообще не вариант. 
  - xSVPx18.09.2024 21:08- А эээ какие побочки у люминесцентных ламп ? Это до сих пор отличный источник света. - Единственное при низких температурах не уверен, что будут хорошо стартовать. Но там по-моему тоже уже что-то придумали типа дежурного предпрогрева итп. 
 
  - Moog_Prodigy18.09.2024 21:08+2- Часы на люминесцентных лампах я тоже когда-то хотел сделать. И с поджигом высоким, т.к. ламп на заводе со сгоревшими спиралями было ну почти безлимитное количество. - И вот об поджиг я и споткнулся. Нет проблем набрать обычных дросселей. А поджиг должен быть индивидуальным. Если даже на потоке намотать кучу повышающих катушек - где взять столько высоковольтных проводов? Времена были бедные у завода. Пробовал повышающие схемы - еще более геморройней с коммутацией этого хозяйства. Пробовал собрать механический коммутатор высокого на базе шагового искателя с переделанными ламелями - быстродействия нет. Этак он будет не отображать время, а постоянно будет все мигать (зажженные лампы же надо как то гасить? Привет хорошим реле к каждой лампе) и получается какая то ерунда. По-хорошему туда надо целый шкаф автоматики делать было, но на этом мой энтузиазм иссяк. Не, ну можно конечно. Сейчас даже еще проще с этим. 
 
 - Affdey18.09.2024 21:08+2- Настоящий DIY ! Вот прямо от самого примитивного до полноценного завершённого проекта. Автору респект! В 2018г адресные светодиоды были редкость и дороже, а обычные в лентах самое то. Единственное, мосфеты надо бы ставить. Управление через Интернет очень понравилось, возьму на заметку. Приятно видеть, что от механики до программирования всё смог один осилить, пусть и через кривоватые решения поначалу.  - R3EQ Автор18.09.2024 21:08- Спасибо, но проект не завершён. Продолжение может быть всегда. Ещё впереди - загрузчик. Тоже не помешал бы. Адресные светодиоды я не рассматриваю и сегодня. Сомневаюсь, что они будут работать корректно в условиях рядом стоящих радиолюбительских антенн, которые в режиме передачи будут давать наводку. И ещё вероятно, адресные светодиоды выдут из строя при первой грозе/молнии. 
 
 - Sun-ami18.09.2024 21:08+2- А сколько эти часы потребляют электроэнергии? Если грубо прикинуть - получается около 800кВч*ч в год даже со снижением яркости ночью. Думаю, это слишком много, и тут напрашивается автоматическая плавная регулировка яркости по освещённости, которая позволит учесть не только время суток, но и погоду, и, к тому же, избавит от необходимости иметь сервер для управления яркостью. Про замену биполярных транзисторов на полевые, в том числе для экономии электроэнергии тут уже написали. К этому можно добавить, что высвечивать 0 в десятках часов, как это видно на фото - это ничем не оправданный расход электроэнергии.  - R3EQ Автор18.09.2024 21:08- На рис. 19 действительно незначащий ноль в начале горит, чего нет на рис. 29, где высвечивается дата. Я его тогда включал специально, для фотографии. А так у меня он всегда выключен. У меня в терминале предусмотрена команда «zero» для включения или отключения этого нуля. - Насчёт плавной регулировки яркости я тоже думал. По датчику освещённости. Постоянно эта мысль меня посещает. - Я не понимаю ваше «800кВч*ч» и всё больше поражаюсь, как люди, не разбираясь в теме, по-разному коверкают величины мощности и электроэнергии, не различая из между собой и порой придумывая новые и несуществующие. Самое распространённое – измерение энергии в киловаттах или в «киловаттах в час». Скажу только то, что часы потребляют около 150 Ватт на яркости 90% при всех горящих сегментах. А в работе – не так просто посчитать. Среднее количество сегментов по всем 10 цифрам составляет 4.9, то есть 70% от всех семи сегментов. Если грубо прикинуть, что на циферблате случайные числа (но это не так), то потребление составит около 100 Вт. Или 0.1 кВт*ч в час.  - Moog_Prodigy18.09.2024 21:08+1- Вот вы критикуете товарища, а сами на те же грабли наступаете :) - 0.1 кВт*ч в час.  - R3EQ Автор18.09.2024 21:08- здесь всё правильно написано. мощность 0.1 кВт. энергия за час - 0.1 кВт*ч. Даже если бы я написал 0.1 кВт*ч/ч то логически это тоже верно. 
 
  - Sun-ami18.09.2024 21:08+1- Я в теме разбираюсь. "Около 800кВч*ч в год" я получил следующим образом: - Вы написали, что в ваших часах используется 15 метров светодиодной ленты с потреблением 24 Вт/м. Значит общее потребление всех сегментов индикатора часов, включенных на полную яркость составляет 15*24=360 Вт. Вместе с потерями 30 Вт на биполярных транзисторах, включающих сегменты, будет 390 Вт. Если источник питания имеет КПД 95%, то с вместе с ним потребление будет 410 Вт. Я грубо оценил среднее количество включенных сегментов 50%. С учётом этого среднее потребление будет 205 Вт. За сутки это будет 205 Вт * 24 ч = 4902 Вт*ч, а за год будет 4902 * 365,25 = 1797030 Вт*ч, или 1797 кВт*ч. Далее, я грубо оценил время работы на полную яркость в 50% всего времени, аналогично среднему за год времени нахождения Солнца над горизонтом, и пренебрёг потреблением ночью, при работе с минимальной яркостью. Получилось 1797 * 0,50 = 899 кВт*ч. Это даже ближе к "около 900кВч*ч в год", но я подумал, что 800кВч*ч в год - это вероятнее, ведь напряжение наверняка немного падает на проводах, из-за чего лента работает не совсем при номинальном напряжении. - Каким образом у вас получилось потребление 150 Вт вместо 410*0,90= 369 Вт при яркости 90% при всех горящих сегментах - мне непонятно. Со средним потреблением 100 Вт выйдет 877 кВт*ч в год на полной яркости, или 487 кВт*ч в год при ночной яркости 1/9 от полной в течении в среднем 12 часов в сутки. Это, в общем то, тоже немало.  - R3EQ Автор18.09.2024 21:08+1- Я теперь понял, что в "800кВч" просто опечатка (или я чего-то не знаю...), а "в год" я просто не заметил. Прошу прощения. Я тоже изначально считал мощность по такому же принципу, как вы. Но на практике всё иначе. Завтра померю поточнее. 
  - R3EQ Автор18.09.2024 21:08- Ещё один момент. Неправильно рассуждать, что 90% яркости это *0,90. Я имел ввиду именно яркость А напряжение при такой яркости приложено меньше из-за нелинейной зависимости, о чём я написал в статье. Тем более, у мощности квадратичная зависимость от напряжения.  - Sun-ami18.09.2024 21:08- Зависимость яркости от напряжения будет нелинейной, если фильтровать ШИМ, например LC-фильтром. А если ШИМ не фильтровать, то зависимость будет линейной, потому что в каждый конкретный момент времени на светодиод либо подано полное напряжение, либо нулевое, переходы между этими состояниями слишком короткие, чтобы влиять на среднюю яркость. У вас про LC-фильтры на каждый сегмент ничего не сказано, я так понял, что их нет. Есть, конечно, паразитный LC-фильтр из индуктивности проводов и ёмкости светодиодов, но частоты 1.35 кГц недостаточно, чтобы он оказывал заметное влияние. А эффект визуального малого отличия яркости при 90% и 100% объясняется нелинейностью зрительного восприятия яркости человеком.  - R3EQ Автор18.09.2024 21:08- Вы правильно написали в конце. Это я и имел ввиду в своём тексте. Именно зрительное восприятие. Оно вообще может быть индивидуальным. Может быть я не очень корректно выразился. Честно говоря, я про это даже не знал, пока на практике с этим не столкнулся. Изначально я задавал значение ШИМ (10 бит) в программе по линейной формуле и получался равномерный ряд чисел типа 0, 127, 255, 383, 511, 639, 767, 895, 1023. А когда увидел нелинейность, я ознакомился с материалом на эту тему, рассчитал значения ШИМ по приведённой нелинейной формуле и сформировал для них массив. А затем немного подкалибровал значения под своё восприятие. Получился ряд 0, 6, 34, 91, 185, 321, 504, 736, 1023. Обращаю внимание, что нулевое значении ШИМ в моём случае не приводит к отсутствию сигнала. Это самое минимальное значение, и уже при нём светодиоды светятся. Для полного отключения свечения нужно отключать ШИМ и принудительно выставлять порт. Так вот, часы у меня всегда работают на 736 (y8). А ночью на 6 (y2).  - Sun-ami18.09.2024 21:08+2- Понятно, у вас днём ШИМ 72%, плюс напряжение на ленте 90% от номинального. От напряжения на ленте ток как раз зависит очень нелинейно, потому что вольт-амперная характеристика светодиодов похожа на ВАХ стабилитронов, так что ток в ленте при таком напряжении - не больше 80% от номинального. Соответственно, с ШИМ 72% потребляемая лентой мощность будет не больше 58% от номинальной, то есть 209Вт весь индикатор. А ночью, с ШИМ 0,68% - не больше 0,55%, или 2 Вт на весь индикатор. 
  - Sun-ami18.09.2024 21:08+2- Собственно, именно нелинейность восприятия яркости человеком позволяет очень существенно сэкономить на электричестве за счёт автоматической регулировки яркости по освещённости. Ведь в пасмурный день освещённость составляет лишь 1000 — 2000 люкс против 111 000 - 120 000 люкс в солнечную погоду. Соответственно, яркость индикатора можно уменьшить в 55..120 раз с сохранением того же уровня его видимости. А если ещё вместо управления яркостью ШИМом на ключах сегментов применить управляемый источник питания, и заменить ключи на полевые транзисторы, то годовой расход электроэнергии можно уменьшить раза в 3, и ещё существенно увеличить ресурс светодиодной ленты. Ещё сильнее можно сэкономить электричество, если применить ленту с управляемым цветом. Потому что днём красный цвет намного заметнее белого на фоне голубого неба при той же яркости, а на закате и ночью заметнее и приятнее голубой. 
 
 
 
 
 
 
 - ragesteel18.09.2024 21:08- Спасибо за интересный рассказ. А почему вы с atmega8 перешли именно на atmega32, а не какую-нибудь esp?  - R3EQ Автор18.09.2024 21:08- Во-первых, у меня уже были Atmega32 в запасе, так как я занимаюсь AVR. Во-вторых, с программированием ESP, STM32 и прочих подобных контроллеров я никогда не сталкивался, так как пока что не стояло такой задачи. Слишком жирно для такой простой конструкции применять 32-битные контроллеры.  - fiego18.09.2024 21:08+2- лишком жирно для такой простой конструкции применять 32-битные контроллеры. - Что-то мне сомнительно, что в проекте стояла задача энергоэффективности или вообще не хватало питания. Или что стоимость ESP32 была неподъёмна для проекта. Меня гораздо чаще удивляло как "Ethernet-Shield" для восьмибитной ардуино делался на 8266/ESP32...  - R3EQ Автор18.09.2024 21:08+1- Тут не столько постановка задачи, сколько сам факт моих навыков. Если бы я занимался программированием ESP, то даже самый простейший проект (к примеру, переключатель новогодних гирлянд) я бы делал на нём. И мне бы писали в комментарии, мол, зачем мне ESP для такого простого проекта. А есть люди, которые на Ардуино всё делают, используют готовые библиотеки и не лезут в даташиты и не имеют понятия, что там да как. Кому что больше нравится...  - fiego18.09.2024 21:08- Тут я комментировал выражение "слишком жирно". Я после Ардуино переключился на ESP32 иммено из-за коммуникативных возможностей в первую очередь, а во вторую уже за его "жирность", когда мне хватает RAM под виртуальные экраны для показа анимаций. И если сегодня мне не надо управления через интернет, то ведь завтра захотеть могу...  - xSVPx18.09.2024 21:08- Тоже купил десяток и теперь всюду сую, даже туда куда вроде бы и не нужно. А потом бац и оказывается было нужно... 
 
 
 
 
 
 - fiego18.09.2024 21:08+2- Как автор нескольких, правда маленьких, часов, выражаю восхищение масштабом! :) 
 На счёт светодиодных лент, чтобы уменьшить потери в проводах, можно ещё больше напряжение взять, я по дому активно пользуюсь 24в лентами. Адресные тут не к месту, конечно, хотя они и бывают на 12в, насколько я помню. По поводу яркости через ШИМ - лента горит на 100% мощности, просто не всё время, от того яркость должна линейно регулироваться ШИМ-ом. Полезнее было бы, конечно, регулировать яркость напряжением. Ещё, насколько я помню, светодиоды не имеют практически инерции, то есть зажигаются мгновенно, так что проблема "набора яркости", скорее всего где-то ещё, возможно, в транзисторах.- Когда приходится пользоваться блютус и интернет, то сразу думаю про ESP32, так что вполне понятно, почему его советовали. К тому же, когда есть интернет, то синхронизировать часы можно просто по NTP. - На счёт влагозащищённой ленты. Та, что мне попадалась, целиком в силиконовой оболочке, с очень плохим контактом для теплоотвода, от чего легко перегревается внутри оболочки и деградирует со временем. Не знаю так ли это тут, может быть и не проблема, просто делюсь мыслями. 
 П. С. Ответ начал писать на телефоне, но потом раздался звонок, после которого возврат на сайт - и весь написанный текст пропал. Пришлось писать заново уже с компьютера через пару часов... - R3EQ Автор18.09.2024 21:08- Знаю, что можно подать чуть больше напряжения на светодиоды, чтобы компенсировать просадку напряжения на проводах. Так у меня было на самом первом блоке питания и самой первой ленте. С новой лентой я этого делать не стал. На неё подаётся в итоге 10.8 В. И пускай так будет. На мой взгляд у неё будет больший ресурс. Проблема набора яркости действительно кроется в паразитных индуктивностях и ёмкостях на пути следования тока, но это не точно. По поводу NTP я уже писал в одном из комментариях. И в самой первой своей статье. Если бы W5500 стоял непосредственно в часах, а не отдельным блоком со своим МК (как в первом варианте моих часов), то я бы постарался реализовать NTP клиент. И не только клиент, но и сервер. Насчёт влагозащиты - лента не полностью в оболочке, а только сверху. Зато она качественная и полностью прозрачная. С виду как будто её нет. К тому же она закрыта в профиль, на котором я сделал дополнительную защиту: на вертикальных сегментах сверху вода не заходит, а снизу оставил выход для неё.  - fiego18.09.2024 21:08+2- можно подать чуть больше напряжения на светодиоды, чтобы компенсировать просадку напряжения на проводах - Это другой аспект. Типичный светодиод в ленте потребляет около 3В, их ставят там блоками по 3 для 12В и по 6-7 для 24В. Для компенсации излишка напряжения ставят резистор, который тупо рассеивает мощность. Почему блоками по 3, а не по 4 -- потому, что при 12В при просадке напряжения в самой ленте будет сильно заметна просадка яркости. Когда 24В и блоки по 7 светодиодов, то можно меньше компенсировать падение напряжения, меньше рассеивание тепла, выше яркость и вообще эффективность. Недавно попалась лента с блоками по 8 светодиодов, но я пока поленился разобрваться как она устроена, просто вклеил в алюминиевый профиль для рабочего света на кухне, может и правда ещё меньше стало напряжение на одном светодиоде что можно уже и по 8 с резистором в блок пихать, лента очень яркая. - Плюс, на той же мощности 24В передаются на вдвое меньшем токе, что дополнительно увеличивает эффективность. У Вас сегменты по 50см, падение яркости в самом сегменте при этом не существенно, но проводов то на несколько метров. Я делал на 24В ленту по периметру потолка, дополнительно прокладывал провод ко второму концу ленты 9м, без этого падение яркости было заметно на глаз. На 12В ситуация была бы ещё хуже.  - R3EQ Автор18.09.2024 21:08+1- никогда не приходило в голову запитывать ленту с двух сторон. хорошая идея чтобы яркость не терялась вдоль длины при длинных лентах.  - fiego18.09.2024 21:08- Я вот тут проект описал, протестировал подходит ли для таких публикаций гитхаб :) https://github.com/jef-sure/bedroom-led-strips 
  - xSVPx18.09.2024 21:08- Это совершенно ныне типичная рекомендация. Для больших длин запитывают еще и каждые Х метров. - В варианте с часами, можно, наверное перемычек наставить, надо только понять где лучше. 
 
 
 
 
 - jenya9218.09.2024 21:08- А я думал это я псих, когда решил с нуля из адресной светодиодной ленты спаять табло, написать для ардуинки драйвер и софт, чтоб она на этом табло выводила и дату, и температуру, и любую другую информацию. А нет, бывает ещё интереснее)) 
 - Mike-M18.09.2024 21:08- некоторые места я промазал герметиком, особенно места пайки проводов - Если герметик кислотный, пайка через некоторое время может превратится в «холодную». 
 
           
 





positroid
Очень низкоуровневая работа, нравится.
Не рассматривали вариант с адресными светодиодами? Кажется, что реализация в этом случае была бы менее железной и более функциональной
Yuri0128
Они, в большинстве своем, 5-ти вольтовые. Задолбешся питание разводить на довольно простую конструкцию для обеспечения равномерной светимости. Да и комппорт на них уйдет для упрощения.
xSVPx
Ну т.е. подвести к каждому сегменту два питания, вытравить для него плату, транзисторы итп - это проще, чем запитать адресную ? В которой и яркость из коробки и куча других эффектов возможна.
У меня выставочное освещение на адресных с дополнительным белым каналом. "Шкаф" с пятью метровыми полками,. Да, если запитать с одной стороны все 5м - проблемы. Если с двух - нормально вполне.
Ну и в любом случае "время синим, температура зеленым" лучше чем всё одинаковым...
Есть, кстати и 12 вольтовые варианты, но их лично не пробовал.
Yuri0128
У вас выставочное а для часов нужно обеспечить одинаковость свечения, - то есть к каждому отрезку - свое питание. Плюс еще свое добавит длина кабелей от коробочки и между отрезками и необходимость их как-то от влаги изолировать (там почти мегагерц идет), если одним портом обходиться.
12 вольтовые норм работают, но они дороже и менее распространены. По 12-вольтовым там длина меньше влияет, но сигнальная шина требует того-же самого.
xSVPx
Как бы это сказать. От того насколько хорошее у меня освещение зависит будет ли мне что пожрать завтра. Я уверен на 100%, что у часов требования гораздо-гораздо скромнее.
Лента светится одинаково. Вероятно она в состоянии работать в большом диапазоне напряжений, может оказаться, что от 3 с копейками вольт и до 5. Логика подсказывает, что в каждом диоде свой драйвер дающий на кристаллы не более 3 вольт.
Нормальный монтаж всего этого дела в любом случае необходим.
Кстати можно, наверное вообще не морочить себе голову, а если вдруг окажется, что яркость немного разная, то просто программно это поправить.
Но лучше, нормально запитать, совершенно не понимаю в чем может быть проблема...
vvzvlad
Чушь пишите. И на 12, и на 24в есть.
Antares1991
У них, в большинстве своём, асинхронный интерфейс, стабильность которого не вызывает оптимизма для использования в услових очень широкого диапазона температур.