Электронные часы с "кукушкой".
Перед повторением обязательно прочитать здесь.

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

Что б не было путаницы с понятием "часы", в статье используется следующая терминология:
  • "Счётчик хода" – непосредственно регистры микроконтроллера отсчитывающие ход времени, от полусекунд до дней недели. Если речь идёт об отдельных регистрах счётчика хода, это оговаривается отдельно.
  • "Часы" – всё что имеет отношение именно к разрядам часов (а не минут, или секунд).
  • "Устройство" – само изделие "часы".

Непосредственно схема устройства изображена ниже.

Watch Base
Посмотреть (скачать)
1298x961


Отличие программного обеспечения в следующем:
у версий 1.x.x, на выходе Sound, при срабатывании звуковой индикации, генерируются импульсы положительной полярности длительностью 0,5 сек.,
а у версий 2.x.x - специальные посылки UART.
Поэтому, "Руководство пользователя" для Doc 3.0, в общем, подходит и для других вариантов.

В зависимости от версии ПО и "обвески" возможны различные оконечные исполнения.





Doc 1.1 (23.08.2007)
(Авторский вариант)*

В обычном режиме устройство индицирует текущее время в 24-часовом формате, с гашением незначащего нуля в разряде десятков часов. "Точка" единиц часов мигает синхронно с секундными тактирующими импульсами, а "точки" единиц и десятков минут индицируют включение-выключение будильника, и его режим. Включение-выключение будильника производится нажатием на кнопку SA4. В устройстве может быть включён режим "кукушка", а также задан интервал времени суток, когда он будет автоматически отключаться. Счётчик хода дней недели на индикацию не выводится. Его можно просмотреть, только используя режим "основных настроек".

Вход в режим "основных настроек" и поочерёдная смена редактируемых параметров осуществляется нажатием кнопки SA1. Последовательный переход по редактируемым разрядам параметра – кнопкой SA2, а непосредственное изменение (только инкрементирование "по кругу") значения – кнопкой SA3. Выход из режима настроек осуществляется нажатием на кнопку SA4, или автоматически, по истечении примерно 20 секунд после последнего нажатия на любую кнопку.
  • При входе в режим "основных настроек", первым появляется установка времени срабатывания будильника.
    При введении нереального значения часов, оно автоматически, при смене редактируемого параметра, или при выходе из режима "основных настроек", уменьшается до 23.
  • Второе нажатие кнопки SA1 вызывает установку режима работы будильника - "P" (по умолчанию – 2).
    1. – Будильник срабатывает каждый день (индикация, при включённом состоянии будильника – мигает "точка" в разряде единиц минут).
    2. – Будильник срабатывает только с понедельника по пятницу включительно (индикация, при включённом состоянии будильника – "точка" в разряде единиц минут горит постоянно).
    3. – Будильник срабатывает только в один день недели (индикация, при включённом состоянии будильника – постоянно горит "точка" в разряде десятков минут).
    4. – Будильник срабатывает только с понедельника по субботу включительно (индикация, при включённом состоянии будильника – "точки" в разрядах единиц и десятков минут горят постоянно) (с версий 1.7.1 и выше, 2.3.1 и выше).
  • Третье нажатие – день недели, когда будет срабатывать (при режиме №3) будильник - "A" (по умолчанию – 1).
  • Четвёртое нажатие – включение-выключение режима "кукушка" - "F" (по умолчанию – 1).
    • 0. – "Кукушка" выключена.
    • 1. – "Кукушка" включена.
  • Пятое нажатие – время (в часах) автоматического выключения режима "кукушка" (по умолчанию – 21).
  • Шестое нажатие – время (в часах) автоматического включения режима "кукушка" (по умолчанию – 10).
    При введении нереального значения, оно автоматически, при смене редактируемого параметра, или при выходе из режима "основных настроек", уменьшается до 23.
    Время выключения имеет приоритет над временем включения. То есть, если выставить одинаковые значения, то "кукушка" работать не будет.
  • Седьмое нажатие – редактирование текущего состояния счётчика хода (минут и часов). При введении нереального значения часов, оно автоматически, при смене редактируемого параметра, или при выходе из режима "основных настроек", уменьшается до 23.
    Счётчик хода секунд (и полусекунд) обнуляется только в данном режиме, и только при изменении значения любого разряда. Во всех других режимах редактирования счётчик хода продолжает работать без изменения, но звуковая индикация (будильник, "кукушка") отключается.
  • Восьмое нажатие – редактирование текущего значения счётчика хода дня недели - "H".
  • Дальнейшие нажатия кнопки SA1 приводят к переходу на следующий "круг" режимов редактирования.


Watch Doc 1.1
Посмотреть (скачать)
1528x1163


Основой устройства служит микроконтроллер PIC16F628A фирмы "Microchip Technology Incorporated". Порты RA0-RA4; RA6; RA7; RB4 настроены на вывод кода семисегментного символа и точки разряда. Порты RB0-RB3 используются для стробирования динамической индикации и опроса клавиатуры. Для звуковой индикации срабатывания "кукушки", на порт RB5 (вывод 11 микроконтроллера) выводится импульс высокого уровня длительностью 0,5 секунды. Для звуковой индикации срабатывания будильника, такие импульсы следуют с периодом 1 секунда, в течение 1 минуты. При подключении аккумуляторной батареи GB1, счётчик хода работает даже при пропадании основного питания. Для выключения индикации, и перехода микроконтроллера в режим SLEEP (что позволяет экономить энергию батареи), порт RA5 (вывод 4) выполняет функцию не только опроса клавиатуры, но и датчика наличия напряжения. Если используется батарея питания не допускающая подзарядку, резистор R1 необходимо исключить.

Практически вся программа микроконтроллера работает по двум прерываниям. Прерывание от таймера TMR1 – для последовательного инкрементирования счётчика хода, и прерывание от таймера TMR0 – для динамической индикации, опроса клавиатуры и реакции на нажатие клавиш. При обнаружении пропадания основного питания, программа отключает индикацию, опрос клавиатуры и переводит микроконтроллер в режим SLEEP, оставляя включённым таймер TMR1, который генерирует запрос на прерывание через каждые полсекунды. По этому запросу микроконтроллер "просыпается", инкрементирует счётчик хода, проверяет наличие основного напряжения питания, и, при его отсутствии, опять переходит в режим SLEEP.

Так как встроенный генератор таймера TMR1 микроконтроллера не является прецизионным устройством, в программу встроена автоматическая ежечасная коррекция счётчика хода. Поправка осуществляется при переходе от 58 к 59 минуте. Это следует учитывать, при установке значения счётчика хода. То есть, корректировать показания следует с 59 по 1 минуту. При других значениях, погрешность будет возрастать, и достигнет максимума на 58 минуте. Такой алгоритм выбран, исходя из того, что производить в/у коррекцию, удобнее всего, по сигналам "точного времени".
Поскольку напряжение резервного питания, как правило, меньше, чем основного, частота в/у генератора отличается, при работе от разных источников. По этой причине, в программе предусмотрена раздельная коррекция счётчика хода.
Кроме того, программа автоматически, по расписанию, аналогичному расписанию "кукушки", может снижать яркость дисплея.
Все эти параметры можно редактировать в режиме "дополнительных настроек". Для входа в этот режим, необходимо выключить основное питание, нажать кнопку SA1, и включить питание. Управление и выход из режима осуществляются так же, как и для режима "основных настроек".
  • При входе в режим "дополнительных настроек", первой появляется величина константы уменьшения яркости дисплея (от 0 до 7) – "L". Яркость дисплея, при этом, определяется по формуле: M/(L+1), где M – максимальная яркость, L – величина константы (по умолчанию – 1).
  • Второе нажатие кнопки SA1 вызывает установку времени (в часах) автоматического включения режима "пониженной яркости" дисплея (по умолчанию – 22).
  • Третье нажатие – время (в часах) автоматического отключения режима "пониженной яркости" дисплея (по умолчанию – 07). Так же, как и при установке расписания "кукушки", проверяется правильность введённого параметра. При введении нереального значения часов, оно автоматически, при смене редактируемого параметра, или при выходе из режима "дополнительных настроек", уменьшается до 23.
    Так же, как и в расписании "кукушки", время выключения имеет приоритет над временем включения. То есть, если выставить одинаковые значения, то яркость дисплея будет пониженной всё время.
  • Четвёртое нажатие – продолжительность (в минутах, от 1 до 9) звучания будильника – "b" (по умолчанию – 1).
    Тут уместно упомянуть, что момент срабатывания будильника имеет приоритет над моментом отключения. То есть, если Вы, в настройках, выставили время срабатывания будильника, совпадающее с текущим (на момент выхода из режима настроек), то будильник сработает, и будет звучать в течение всего времени, заданного настройкой "продолжительность звучания будильника". Если же, на момент входа в режим настроек, будильник уже сработал, то, при выходе из этого режима, он продолжит своё звучание в течение всего времени, заданного настройкой "продолжительность звучания будильника", даже если в настройках было изменено время срабатывания, на отличающееся от текущего. Таким образом, звучание будильника можно отключить только кнопкой SA4.
  • Пятое нажатие – изменение значения константы коррекции счётчика хода, при работе от основного источника питания, численно равное количеству 1/256 секунды, в час, на которые будет осуществляться коррекция (по умолчанию – 0). В отличие от всех других режимов редактирования параметров, это значение может быть изменено от +127 до –128, нажатием на кнопки SA3 (плюс 1) и SA2 (минус 1) соответственно.
    Пример: В неделю счётчик хода спешит на 14 секунд. За 1 час будет – 14:7:24 = 1/12 секунды. Находим величину коррекции. 1/12 : 1/256 = 21,33333 ~ 21. Следовательно, для коррекции необходимо выставить –21 (минус двадцать один). Для тех, кому лень производить данные вычисления, прилагается файл в формате MS Excel, в который необходимо ввести только (помечено синим цветом): величину отклонения счётчика хода, в секундах (при отставании, необходимо ставить знак минус), и интервал времени измерения, в днях (можно вводить как целые, так и дробные числа).
  • Шестое нажатие – изменение значения константы коррекции счётчика хода, при работе от резервного источника питания (по умолчанию – минус 7). Всё вышесказанное, относительно режима изменения константы коррекции счётчика хода, при работе от основного питания, относится и к данному режиму. Более того, из-за ограниченности возможностей дисплея, эти два режима, визуально, абсолютно идентичны.
  • Дальнейшие нажатия кнопки SA1 приводят к переходу на следующий "круг" режимов редактирования.
При выходе из режимов редактирования констант коррекции счётчика хода (при смене редактируемого параметра, или при выходе из режима "дополнительных настроек", кроме случая выхода по причине отключения основного питания), эти константы записываются в энергонезависимую память микроконтроллера (EEPROM). При этом проверяется правильность записи. При несоответствии, производится следующая попытка записи. Если десять таких попыток закончились неудачей, в регистры счётчика хода (минут и часов) записываются символы "Eror", и выключается таймер TMR1. На индикаторе, при этом появляется надпись "Eror". В данной ситуации возможна работа устройства с константами коррекции счётчика хода "по умолчанию". Для этого, необходимо включить (редактируемые символы, которые должны мигать, при этом, могут быть не видны, или гореть постоянно) и выключить (либо кнопкой, либо автоматически) режим "основных настроек". При этом включится таймер TMR1, о чём будет свидетельствовать мигающая точка, а надпись "Eror" сменится на "E3or". Теперь можно, нормально зайти в режим "основных настроек", и выставить значение часов и минут. Если этого не сделать, в течение минуты, счётчик хода сбросится на 0:00.
Кроме того, выдача сообщения об ошибке возможна при возникновении "случайного" прерывания, не связанного ни с TMR0, ни с TMR1.
На реальных и программных макетах все в/у ситуации ни разу не возникали, а были только заложены в программу, и искусственно смоделированы, в компьютерном симуляторе.

На данный момент, устройство реализовано, в варианте, для встраивания в трёхпрограммный приёмник "Электроника-203", с использованием в качестве звукового индикатора микросхемы УМС8.
Работа и схемы включения данной микросхемы подробно описаны в [1] и [2]. Схема и печатная плата устройства предусматривают возможность использования различных вариантов подключения УМС8: с использованием встроенного генератора и дополнительного кварцевого резонатора (пунктирные линии), и с использованием тактового генератора микроконтроллера (цветные сплошные линии).

Watch Doc 1.1
Посмотреть (скачать)
1600x1200


Печатная плата разработана также и с учётом размещения в данном конкретном корпусе приёмника. Используя особенность конструкции индикатора, часть деталей расположена прямо под ним. Диод VD9, в авторском варианте, состоит из трёх последовательно включённых, для понижения амплитуды передаваемых импульсов. Клеммы XT3-XT5 объединены в один разъём, и подключены к двум кнопкам закреплённым на задней стороне корпуса приёмника. С их помощью устанавливается необходимая мелодия из УМС8. При отключении питания она сбрасывается на первую по порядку. Такой вариант выбран исходя из двух причин. Первое – экономия энергии батареи. Второе – пользователь всегда будет знать, что пропадало основное питание, даже кратковременно. Иногда это необходимо. Если же принципиально сохранять выбранную мелодию, необходимо подключить параметрический стабилизатор питания УМС8 (верхний, по схеме, вывод резистора R19) к выводу 14 микроконтроллера. В качестве звукового излучателя, использована динамическая головка 0,5 Ватт, сопротивлением – 8 Ом, от компьютерного блока. Защитный диод VD14 припаивается непосредственно к клеммам XT6-XT7, также объединённым в один разъём. Конденсатор C1 и батарея резервного питания GB1 установлены своеобразным способом.

Watch Doc 1.1
Посмотреть (скачать)
1600x1200


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

Watch Doc 1.1 7805
Посмотреть (скачать)
1600x1200



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

Watch PCB

Версия для печати (1535x543)
Оригинал (в формате Abacom, Sprint-LayOut 4.0)


Следует отметить, что "рисунок" печатной платы довольно плотный, и требует определённых навыков, при изготовлении.

Watch Doc 1.1 PCB
Посмотреть (скачать)
1600x1200



Источники:

1. С.Маслов "Мелодия звучит до конца", журнал "Радио" 1995-12-41
2. А.Шитов "Музыкальные звонки с автоматическим перебором мелодий", журнал "Радио" 2000-06-35


* - Статья опубликована в журнале "Радио" 2008-08-33
Нумерация элементов отличается






Doc 3.0

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

Watch Doc 3.0
Посмотреть (скачать)
1600x1200


Демо-видео (DivX 5.11)
"Кукушка" (420Kb)
Будильник (722Kb)

Реализована версия, где, для звуковой индикации на порт RB5 (вывод 11 микроконтроллера) вместо импульсов высокого уровня, выводятся посылки UART. При этом для "кукушки" и будильника, посылки – разные. Данная версия предназначена для совместного использования с "трёхголосным тон-генератором". Использован корпус от часов "Электроника 11-03".

Watch Doc 3.0
Посмотреть (скачать)
1736x1232


Кружками обозначены точки подключения, для внутрисхемного программирования (поскольку использованы чипы в корпусах SOIC):
  • Одинарными - точки выведены на специальный разъём;
  • Двойными - выполненные в виде перемычек, которые необходимо "снимать", при программировании.

Основная плата:

Watch PCB

Версия для печати (1594x886)
Оригиналы (в формате Abacom, Sprint-LayOut 4.0)



Дополнительная плата управления:

Watch PCB Plus

Версия для печати (591x378)



Front
Посмотреть (скачать)
1600x1200
Rear
Посмотреть (скачать)
1600x1200

Из-за особенностей корпуса, плата управления выполнена отдельно, и припаивается к основной жёсткими перемычками:

Watch Doc 3.0
Посмотреть (скачать)
1600x1200


Блокировочные конденсаторы припаиваются непосредственно к выводам:
Power
Посмотреть (скачать)
1600x1200
Synt
Посмотреть (скачать)
1600x1200

Руководство пользователя





Doc 2.0

По иронии судьбы, данный вариант должен был быть первым, но пока, увы, только схема.

Watch Doc 2.0
Посмотреть (скачать)
1447x874






Прошивки
Ver (History) Source Flash
1.6.1 - *.hex
1.7.1 - *.hex
2.2.2 - *.hex
2.3.1 - *.hex








Фото-галерея.


Прислал Валерий Фрик:
Валерий Фрик Валерий Фрик Валерий Фрик








Обсудить на форуме








НаписАть отзыв E-mail            Other electronics  Другая электроника

Home
На главную



счётчик посещений

часы на базе микроконтроллера пик часы на базе микроконтроллера pic часы на базе микроконтроллера pic16f628a электронные часы будильник на базе микроконтроллера пик электронные часы будильник на базе микроконтроллера pic электронные часы будильник на базе микроконтроллера pic16f628a динамическая индикация в электронных часах на базе микроконтроллера пик динамическая индикация в электронных часах на базе микроконтроллера pic динамическая индикация в электронных часах на базе микроконтроллера pic16f628a кукушка в электронных часах на базе микроконтроллера пик кукушка в электронных часах на базе микроконтроллера pic кукушка в электронных часах на базе микроконтроллера pic16f628a электронные часы на одной микросхеме режим будильника в электронных часах на микроконтроллере пик режим будильника в электронных часах на микроконтроллере pic режим будильника в электронных часах на микроконтроллере pic16f628a режим кукушки в электронных часах на микроконтроллере пик режим кукушки в электронных часах на микроконтроллере pic режим кукушки в электронных часах на микроконтроллере pic16f628a очень простые часы на микроконтроллере пик очень простые часы на микроконтроллере pic очень простые часы на микроконтроллере pic16f628a использование микросхем умс в электронных часах с кукушкой на микроконтроллере пик использование микросхем умс в электронных часах с кукушкой на микроконтроллере pic использование микросхем умс в электронных часах с кукушкой на микроконтроллере pic16f628a использование умс в часах электронные часы с будильником с кукушкой на микроконтроллере pic16f628a электронные часы-будильник с кукушкой на микроконтроллере pic16f628a часы с будильником на микроконтроллере pic16f628a электронные часы-будильник на микроконтроллере pic16f628a простые часы будильник с кукушкой на мк pic16f628a простые часы будильник на мк pic16f628a простые часы с кукушкой на мк pic16f628a простые часы на мк pic16f628a простые часы будильник с кукушкой на микроконтроллере pic16f628a простые часы будильник на микроконтроллере pic16f628a простые часы с кукушкой на микроконтроллере pic16f628a простые часы на микроконтроллере pic16f628a электронные часы будильник с кукушкой на пик контроллере pic16f628a электронные часы будильник на пик контроллере pic16f628a электронные часы с кукушкой на пик контроллере pic16f628a электронные часы на пик контроллере pic16f628a электронные часы будильник с кукушкой на pic16f628 электронные часы будильник на pic16f628 электронные часы с кукушкой на pic16f628 электронные часы на pic16f628


Copyright © 2007-2021 by Dmitry Dubrovenko.