Многофункциональные часы на матричных индикаторах

На просторах Интернета нет недостатка в разного рода электронных часах. Солидно смотрятся часы на матричных индикаторах, например, известная схема с радиокота, но хотелось, чтобы были с индикацией не лишь часов и минут, но и секунд. Решил создать такие часы, добавив ещё и некоторые другие функции.

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

Основные характеристики:

  • Напряжение питания (В) ………… .…………………… 5
  • Ток потребления (мА) …………………………………. 100 — 200
  • Общий размер матрицы (пикселей) ……………………  8 х 40
  • Пределы измеряемой температуры (градусов) …….…. -40 — +99.5
  • Точность измерения температуры (градусов) ……….. 0.5
  • Пределы суточной коррекции хода (секунд) …………. -9.9 — +9.9
  • Число градаций изменения яркости …………………… 31 + режим «авто»
  • Количество будильников ………………………………. 4
  • Объем текста каждого будильника (символов) ………..  11
  • Количество индикаторов событий …………………….. 14
  • Объем текста для каждого события (символов) ….……. 15
  • Управление режимами …………………………………. Кнопками/любым пультом

Принципиальная схема часов условно разделена на индикаторную и «контроллерную» части, представленные на рисунках ниже. Нумерация элементов единая и далее, при описании, будем рассматривать схему как одно целое.

Схема индикации

Схема управления

Индикация осуществляется на пяти матричных индикаторах HL1-HL5 типа  1088BS размерами 32х32 мм, с управлением при помощи сдвиговых регистров. Для управления по столбцам используются регистры DD1-DD5 типа 74HC595D с возможностью записи информации для параллельного вывода, у которых тактовые входы и входы записи данных соответственно объединены, а информационные входы и выходы соединены последовательно. Для управления по строкам (соответствующие выводы индикаторов объединены) применена микросхема TPIC6B595 с аналогичным принципом работы, но имеющий на параллельных выходах мощные ключи на полевых транзисторах. Она допускает на этих выходах импульсные втекающие токи до 400мА. Токоограничительные резисторы R1-R40 выбраны так, что с учетом сопротивления выходов 74HC595, ток каждого светодиода в импульсе составляет около 10 мА, а общий максимальный ток – те же 400мА. На все регистры DD1-DD6 информация загружается последовательно и единовременно записывается в выходные защелки, что обеспечивает отсутствие всякого рода паразитных свечений элементов индикатора.

Собственно управление регистрами осуществляется посредством 3-х портов микроконтроллера (МК) DD7, в прерываниях от таймера TMR0 интервалом 2 мс, что обеспечивает общую частоту смены информации 63 Гц. Так же с МК на 9 вывод DD6 (включение-выключение выходов) поступает сигнал ШИМ для изменения яркости индикаторов. МК DD7 выбран типа PIC16F88, который отличается от популярного PIC16F628A наличием АЦП и вдвое емкой памятью программ. МК работает от внутреннего генератора на частоте 8 МГц (еще одно отличие от 628A).

В устройстве применена микросхема часов реального времени DS1307, которая обеспечивает счет и хранение секунд, минут, часов, дня недели, даты (включая год от 0 до 99). При начальной инициализации DS1307 настраивается в режим, при котором на выводе 7 присутствует меандр с частотой 1 Гц, который подается на вход RB0 МК. По этому входу включено прерывание, где один раз в секунду устанавливается специальный флаг. В основной программе посредством этого флага один раз в секунду выполняются основные действия: считывание данных с DS1307, индикация времени, проверка на совпадение будильников и индикаторов событий, установка яркости в автоматическом режиме. Дополнительная батарея BAT1 позволяет сохранять данные в отсутствии напряжения питания устройства практически неограниченное время. МК управляет DS1307 по шине I2C портами RB1, RB2. Так же по I2C управляется и датчик температуры – микросхема DS1621.

Устройство управляется с помощью кнопок S1 и S2, подключенных соответственно к портам МК RA4, RA2. Функции кнопки S1 могут выполняться с помощью любого пульта от БРА с помощью схемы на приемнике DA1 типа TSOP48 и одновибратора на  D-триггере DD8.1 и элементах C8, R47 и D1. Длительность сигнала одновибратора выбрана 0.2 с, что обеспечивает преобразование пачек коротких импульсов с выхода DA1 в импульсы этой длительности при коротком нажатии и в непрерывный сигнал при удержании нажатой любой кнопки пульта. Сигнал с инверсного выхода  триггера через диод D2 дублирует кнопку S1. С помощью элементов R48, HL6 организована индикация этого факта..

На втором триггере микросхемы DD8.2 и пьезокерамическом излучателе LS1 собрана схема звуковой сигнализации при срабатывании будильника либо индикатора события. На счетный вход триггера поступает сигнал ШИМ с выхода МК частотой 8 кГц. При сигнале логического 1 на объединенных  входах R и S триггера на обоих выходах присутствует лог.1 и звук отсутствует. При наступлении события индикации МК с частотой 1 Гц меняет уровень на этих входах и на выходах триггера с этой периодичностью возникают противофазные импульсы с частотой 4000 Гц. Так как эта частота – резонансная для данного излучателя, возникает громкий прерывистый сигнал. Программно приняты меры для сохранения импульсом ШИМ и при крайних значениях яркости.

На элементах FR1, R45 и C6 собран датчик освещенности. МК с помощью встроенного АЦП считывает зависящее от освещения напряжение с этого делителя и выставляет соответствующий коэффициент заполнения ШИМ сигнала.

Питается устройство напряжением +5В, поступающим на разъем J1 и далее через фильтрующие цепи R41C3C4, R42C5, C7R46 на элементы схемы. Цепь R49 D3 защищает устройство от случайного подключения чрезмерного либо обратного напряжения. Удобно применить в качестве ИП зарядное устройство для смартфонов на 5 Вольт.

Устройство собрано на печатной плате из стеклотекстолита с односторонней металлизацией размерами 60 мм на 170 мм

DD1-DD5 применены в корпусе SO16, DD6 – в корпусе SOIC20. DD8 использована  в корпусе DIP. Ее можно заменить отечественной К561ТМ2. DD9, DD10 – в корпусах SO8. Почти все SMD резисторы и конденсаторы – типоразмера 0805, C1,C7,C3,C5 – типоразмера 1206. Кварцевый резонатор лучше выпаять со старой материнской платы – они, как правило, стабильнее. Фоторезистор FR1, при замене на другой, должен быть с темновым сопротивлением примерно 1 – 2 МОм.  Батарея BAT1 типа CR2032 установлена на стандартном держателе. Ее можно заменить любой, подходящей по размеру, напряжением 3В. При замене пьезоизлучателя на другой очень желательно, чтобы резонансная частота была близка к 4000 Гц. Фотоприемник можно выпаять со старого телевизора. Светодиод – любой яркий, красного свечения. Диоды можно заменить на КД521, КД522. Стабилитрон – напряжением 5.6В и желательно мощностью не менее 1 Вт. Так как примененные матричные индикаторы оказались с общим анодом, пришлось при разработке платы установить их с поворотом на 90 градусов и использовать строки как колонки и наоборот. При замене на индикаторы с общим катодом, например 1088AS, придется полностью изменить схему подключения. Кнопки – любые тактовые, угловые. При закрытии индикаторов спереди цветным оргстеклом наблюдались ошибочные срабатывания DA1 отраженным яркостным сигналом от индикаторов. Этот эффект легко устраняется вклеиванием экрана из черной бумаги между индикатором и фотоприемником.

В налаживании правильно собранное устройство обычно не нуждается. Но, если не устраивает имеющаяся зависимость освещенности и соответствующей яркости индикатора в авторежиме, следует подобрать номинал резистора R45. При этом, меньшее сопротивление соответствует меньшей яркости при данной освещенности.

Внешний вид собранной платы показан на фотографиях.

Причина не очень красиво припаянных токоограничительных резисторов в том, что после изготовления платы выяснилось, что типономинал оных не 0805, а 1206. Пришлось как-то припаять…

Программа управления контроллером написана на языке Си и оттранслирована в среде MikroC for PIC. Слово конфигурации содержится в прошивке и заносится автоматически. Авторская ориентация часов – матрицы сверху, что минимизирует возможное воздействие от деталей схемы на температуру микросхем DD9, DD10. Но,    если кому-то понравится расположение часов матрицами вниз, следует перед трансляцией программы изменить в файле “watch.c”  значение параметра в самой первой строке с 1 на 0 согласно комментарию. Прошивка прилагается для обоих случаев. Так же возможно изменить шрифт цифр на тонкий (по умолчанию – жирный), аналогичный буквам (это, кстати, несколько снизит потребляемый ток в исходном режиме). Для этого в первой строке в файле “font.c” надо изменить значение параметра “font_2”  с 1 на 0.

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

Сразу при включении, часы переходят в основной режим – индикации времени. При этом, цифра часов и минут высотой 8 пикселей, а секунд – 7 (в целом каждая цифра или буква изображается в поле 5х8 пикселей, цифры секунд – 5х7). При нажатии на кнопку S1 или любой кнопки пульта (эти действия эквивалентны и далее будем иметь в виду, что когда речь идет о нажатии кнопки S1, то же происходит и по сигналу с пульта) с помощью бегущей строки отображается текущая полная дата и день недели. Если больше не предпринимать никаких действий, спустя 16 сек. устройство возвращается в исходное состояние – индикации времени. Если же нажать кнопку S1 ещё раз во время индикации даты, то начинается индикация температуры тоже посредством бегущей строки в течении 16 сек. (повторное нажатие кнопки – возврат в исходное состояние сразу).

При непрерывном нажатии на кнопку S1 в течении 9 секунд, часы переходят в режим «МЕНЮ», о чем говорит соответствующая надпись. Столь длительное нажатие для этого выбрано в целях уменьшения вероятности случайного попадания в меню при обычном пользовании пультом (собственно для управления бытовой техникой).

Далее следует небольшое отступление — поясним работу с кнопками в целом. Управление часами сделано так, что все действия с ними можно произвести с помощью одной лишь кнопки S1 (или пультом). Ведь часы могут висеть высоко на стене, и доступ будет лишь к кнопке S1 (через пульт). Итак, перебор пунктов меню, так же как перебор  из списка будильников либо событий производится короткими (до 3 сек.) нажатиями S1, а переход в выбранный пункт – длинное (более 3 сек.) нажатие. Без воздействия в течении 15 – 30 сек. (в зависимости от конкретного режима) – возврат в исходное состояние.  Там же, где происходит изменение значения какого-то параметра, короткое нажатие увеличивает значение не 1, а удерживание более 2 сек. — значение увеличивается автоматически примерно 3 раза в секунду. Здесь отсутствие воздействия в течении некоторого настраиваемого (от 5 до 8 сек.) времени приводит к переходу к следующему параметру с сохранением текущего параметра. Вот здесь и можно использовать кнопку S2 –  для сохранения параметра с переходом к следующему без ожидания, сразу. Так, держа часы в руках можно значительно ускорить подобные манипуляции.

Вернемся к пункту «МЕНЮ». Здесь пять пунктов: УСТАНОВКА, КОРРЕКЦИЯ, БУДИЛЬНИК, СОБЫТИЯ, НАСТРОЙКИ. Расскажем о каждом по порядку.

УСТАНОВКА. Здесь производится установка текущих даты и времени. Изменяемый параметр вначале выделяется инверсией, которая исчезает с началом изменений. Значения меняются лишь в большую сторону, с переходом с максимального значения (при ее достижении) к минимальному и далее по кругу. В самом конце, когда дата и часы с минутами выставлены, в месте секунд будут инверсные нули. Здесь надо в момент обнуления эталонных секунд нажать S1 и часы перейдут в исходное состояние с измененными датой и временем.

КОРРЕКЦИЯ. С течением времени, неминуемо возникает ошибка в ходе часов. Для ее коррекции и служит данный пункт. Предварительно надо замерить «уход» часов в течении 10 суток. Предположим, часы спешат на 58 секунд. Входим далее в этот режим, о чем говорит строка «уход за 10 суток». При нажатии S1 строка сменяется статичной надписью «ХХ сек», где ХХ – текущее значение коррекции, предположим 31. Так как часы спешат, отнимаем от данного значения наши 58 сек. (если отстают – прибавляем). Набираем полученные (-27) сек. После выхода это значение сохранится в EEPROM.  Интервал вводимых значений – от -99 до 99, знак меняется при переходе через 0. Коррекция происходит каждый день в 00:00:19, для чего целая от одной десятой значения  коррекции (в нашем случае (-2)) добавляется к текущему времени, а остаток (у нас (-7)) сохраняется в EEPROM и в следующий раз прибавляется к коэффициенту до обработки. То есть через день от времени отнимется 3 секунды и сохранится (-4) (-27-7 = -34).  

БУДИЛЬНИК. При входе в этот пункт на экране бежит стока, состоящая из: номер (1-4), признак включенности (“+” или “-“), время срабатывания, название будильника (текст из 11 знаков). По умолчанию, например, во втором будильнике, будут данные: «2. – 12:00 БУДИЛЬНИК-2». Короткими нажатиями можно переходить из одного будильника в другой, долгим нажатием переходим в текущий будильник, где можно изменять данные, включать – отключать выбирать активность для каждого дня недели, установить время срабатывания, изменять текст название путем перебора знаков каждой позиции. Вся информация о 4-х будильниках хранится в свободной памяти микросхемы DS1307 (56 байт) . При совпадении текущего времени с каким-нибудь включенным и активным в этот день недели будильником выводится строка с данными об этом будильнике, с прерывистым звуковым сигналом, в течении одной минуты. Сигнал будильника можно «досрочно» прервать нажатием кнопки S1.

СОБЫТИЯ. При входе в этот пункт, на индикаторе при коротких нажатиях кнопки, попеременно пробегают активные события плюс пункт «ДОБАВИТЬ НОВОЕ». По умолчанию активных событий нет, поэтому, будет лишь приглашение о добавлении нового события. Формат активного события: «<дата> <текст из 16 знаков>». Когда все 14 событий активны, пункт «ДОБАВИТЬ НОВОЕ» не выводится и новое событие можно добавить лишь вместо какого либо из существующих. Длительным нажатием переходим в режим редактирования события. Здесь можно включить-отключить, изменить дату, а так же написать свой текст, соответствующий данному событию. Все изменения сохраняются в энергонезависимой памяти МК (EEPROM).

На совпадение с датами событий текущая дата проверяется каждый день в 8:00, и при совпадении выводится строка из текущей даты и текста события с прерывистым звуковым сигналом в течении одной минуты. Такой сигнал будет подаваться каждый час до 19:00, при условии, что он не был прерван кнопкой. Прерванный кнопкой сигнал уже не повторяется.

НАСТРОЙКИ.  При входе в этот режим, на экран выводится сообщение типа «ЯРК.ХХ», где «ХХ» — текущая яркость. Нажатиями кнопки S1 это значение можно изменять в районе от 1 до 31 либо выставить значение «АВ», что означает «автоматически». При изменении значения яркости, сразу наглядно меняется реальная яркость индикатора. При сохранении автоматического режима, яркость индикации часов впоследствии изменяется без вмешательства, в зависимости от уровня освещенности в помещении. В этом случае, попадаем в пункт установки минимальной яркости для авто-режима (выводится «МИН.ХХ»). Это значение лучше выставлять в условиях минимально ожидаемой освещенности. Если в предыдущем пункте было выставлено конкретное числовое значение яркости, данный пункт пропускается.

Следующий пункт настроек – регулировка времени ожидания до сохранения значений разного рода изменяемых параметров в районе от 5 до 8 секунд. При минимальном  значении этого параметра — есть опасность сохранить ошибочные значения, при максимальном  – увеличивается общее время  ввода  данных с пульта. Пользователь выбирает комфортное для него значение.

Все настройки сохраняются в EEPROM памяти МК и не теряются при пропадании питания.

В приложении, кроме исходного кода и прошивок имеются Proteus-модель и плата в формате Lay6.


Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

DD7
МК PIC 8-битPIC16F881
DD1-DD5
Сдвиговый регистр74HC5955
SOP-16DD8
Сдвоенный D-триггерCD40131
K561TM2DD9
Часы реального времени (RTC)DS13071
DD10
Датчик температурыDS18211
DA1
ФотоприемникTSOP481
DD6
Мощный сдвиговый регистрTPIC6B5951
LS1
ПьезоизлучательXCFT-14A1
HL1-HL5
Светодиодная матрица1088BS5
HL6
СветодиодARL-35141
redX1
Кварцевый резонатор32768 Гц1
BAT1
Литиевая батареяCR20321
3 VD1-D2
Диод1N47482
D3
Стабилитрон1N4734A1
S1, S2
Кнопка тактоваяугловая2
FR1
ФоторезисторNCL-49521
R1-R40
Резистор220 Ом40
0805C1, C3, C6, C9
Конденсатор0.1 мкф4
0805C2, C4, C10
Конденсатор470 мкФ 10В3
C5, C7
Конденсатор1 мкФ2
0805C8
Конденсатор0.47 мкФ1
R41
Резистор471
R42
Резистор1001
R43, R44
Резистор33 кОм2
R45
Резистор2201
R46
Резистор22 кОм1
R47
Резистор470 кОм1
R48
Резистор3.3 кОм1
R49
Резистор11
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.