На просторах Интернета нет недостатка в разного рода электронных часах. Солидно смотрятся часы на матричных индикаторах, например, известная схема с радиокота, но хотелось, чтобы были с индикацией не только часов и минут, но и секунд. Решил создать такие часы, добавив еще и некоторые другие функции.
Представленные здесь электронные часы, кроме того, позволяют измерять температуру в помещении. Есть четыре независимых будильника, а так же индикатор календарных событий, который сигнализирует о наступлении таких событий, как годовщина, день рождения и т.д.. Позволяют изменять яркость в ручном и автоматическом режиме, что резко улучшает комфортность восприятия в темное время суток, и наконец, управляются любым пультом от БРА либо локальными кнопками.
Основные характеристики:
- Напряжение питания (В) ………… .…………………... 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 информация загружается последовательно и единовременно записывается в выходные защелки, что обеспечивает отсутствие всякого рода паразитных свечений элементов индикатора.
Собственно управление регистрами осуществляется посредством трех портов микроконтроллера (МК) 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». Короткими нажатиями можно переходить из одного будильника в другой, долгим нажатием переходим в текущий будильник, где можно изменять данные, включать – отключать выбирать активность для каждого дня недели, установить время срабатывания, изменять текст название путем перебора знаков каждой позиции. Вся информация о четырех будильниках хранится в свободной памяти микросхемы DS1307 (56 байт) . При совпадении текущего времени с каким-нибудь включенным и активным в этот день недели будильником выводится строка с данными об этом будильнике, с прерывистым звуковым сигналом, в течении одной минуты. Сигнал будильника можно «досрочно» прервать нажатием кнопки S1.
СОБЫТИЯ. При входе в этот пункт, на индикаторе при коротких нажатиях кнопки, попеременно пробегают активные события плюс пункт «ДОБАВИТЬ НОВОЕ». По умолчанию активных событий нет, поэтому, будет только приглашение о добавлении нового события. Формат активного события: «<дата> <текст из 16 знаков>». Когда все 14 событий активны, пункт «ДОБАВИТЬ НОВОЕ» не выводится и новое событие можно добавить только вместо какого либо из существующих. Длительным нажатием переходим в режим редактирования события. Здесь можно включить-отключить, изменить дату, а так же написать свой текст, соответствующий данному событию. Все изменения сохраняются в энергонезависимой памяти МК (EEPROM).
На совпадение с датами событий текущая дата проверяется каждый день в 8:00, и при совпадении выводится строка из текущей даты и текста события с прерывистым звуковым сигналом в течении одной минуты. Такой сигнал будет подаваться каждый час до 19:00, при условии, что он не был прерван кнопкой. Прерванный кнопкой сигнал уже не повторяется.
НАСТРОЙКИ. При входе в этот режим, на экран выводится сообщение типа «ЯРК.ХХ», где «ХХ» - текущая яркость. Нажатиями кнопки S1 это значение можно изменять в пределах от 1 до 31 либо выставить значение «АВ», что означает «автоматически». При изменении значения яркости, сразу наглядно меняется реальная яркость индикатора. При сохранении автоматического режима, яркость индикации часов впоследствии изменяется без вмешательства, в зависимости от уровня освещенности в помещении. В этом случае, попадаем в пункт установки минимальной яркости для авто-режима (выводится «МИН.ХХ»). Это значение лучше выставлять в условиях минимально ожидаемой освещенности. Если в предыдущем пункте было выставлено конкретное числовое значение яркости, данный пункт пропускается.
Следующий пункт настроек – регулировка времени ожидания до сохранения значений разного рода изменяемых параметров в пределах от 5 до 8 секунд. При минимальном значении этого параметра - есть опасность сохранить ошибочные значения, при максимальном – увеличивается общее время ввода данных с пульта. Пользователь выбирает комфортное для него значение.
Все настройки сохраняются в EEPROM памяти МК и не теряются при пропадании питания.
В приложении, кроме исходного кода и прошивок имеются Proteus-модель и плата в формате Lay6.
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
DD7 | МК PIC 8-бит | PIC16F88 | 1 | Поиск в магазине Отрон | ||
DD1-DD5 | Сдвиговый регистр | 74HC595 | 5 | SOP-16 | Поиск в магазине Отрон | |
DD8 | Сдвоенный D-триггер | CD4013 | 1 | K561TM2 | Поиск в магазине Отрон | |
DD9 | Часы реального времени (RTC) | DS1307 | 1 | Поиск в магазине Отрон | ||
DD10 | Датчик температуры | DS1821 | 1 | Поиск в магазине Отрон | ||
DA1 | Фотоприемник | TSOP48 | 1 | Поиск в магазине Отрон | ||
DD6 | Мощный сдвиговый регистр | TPIC6B595 | 1 | Поиск в магазине Отрон | ||
LS1 | Пьезоизлучатель | XCFT-14A | 1 | Поиск в магазине Отрон | ||
HL1-HL5 | Светодиодная матрица | 1088BS | 5 | Поиск в магазине Отрон | ||
HL6 | Светодиод | ARL-3514 | 1 | red | Поиск в магазине Отрон | |
X1 | Кварцевый резонатор | 32768 Гц | 1 | Поиск в магазине Отрон | ||
BAT1 | Литиевая батарея | CR2032 | 1 | 3 V | Поиск в магазине Отрон | |
D1-D2 | Диод | 1N4748 | 2 | Поиск в магазине Отрон | ||
D3 | Стабилитрон | 1N4734A | 1 | Поиск в магазине Отрон | ||
S1, S2 | Кнопка тактовая | угловая | 2 | Поиск в магазине Отрон | ||
FR1 | Фоторезистор | NCL-4952 | 1 | Поиск в магазине Отрон | ||
R1-R40 | Резистор | 220 Ом | 40 | 0805 | Поиск в магазине Отрон | |
C1, C3, C6, C9 | Конденсатор | 0.1 мкф | 4 | 0805 | Поиск в магазине Отрон | |
C2, C4, C10 | Конденсатор | 470 мкФ 10В | 3 | Поиск в магазине Отрон | ||
C5, C7 | Конденсатор | 1 мкФ | 2 | 0805 | Поиск в магазине Отрон | |
C8 | Конденсатор | 0.47 мкФ | 1 | Поиск в магазине Отрон | ||
R41 | Резистор | 47 | 1 | Поиск в магазине Отрон | ||
R42 | Резистор | 100 | 1 | Поиск в магазине Отрон | ||
R43, R44 | Резистор | 33 кОм | 2 | Поиск в магазине Отрон | ||
R45 | Резистор | 220 | 1 | Поиск в магазине Отрон | ||
R46 | Резистор | 22 кОм | 1 | Поиск в магазине Отрон | ||
R47 | Резистор | 470 кОм | 1 | Поиск в магазине Отрон | ||
R48 | Резистор | 3.3 кОм | 1 | Поиск в магазине Отрон | ||
R49 | Резистор | 1 | 1 | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- watch.rar (118 Кб)
Комментарии (11) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
[Автор]
[Автор]
[Автор]
- у меня стоит фоторезистор с темновым сопротивлением 1МОм. Номинал резистора R45 довел до 750кОм, Часы в темноте полностью гаснут. Плавного изменения яркости не могу добиться. Что посоветуете?
- нет ли желания добавить бегущую строку время-дата- температура? Просится!
[Автор]