Часы на микроконтроллере своими руками

Предлагаю для самостоятельной сборки две очень простые схемы, а именно часы на микроконтроллере PIC и AVR. Основа одной схемы микроконтроллер AVR Attiny2313, а другой PIC16F628A

Эти схемы часов на микроконтроллере очень помогут начинающим радиолюбителям разобраться с вопросами работы и программирования микроконтроллеров.


Часы на микроконтроллере Attiny2313

Рассмотрим подробней эту простую схему: Питание можно подавать как от трех пальчиковых батареек, так и от стабилизированного блока питания

Микроконтроллер Attiny2313 тактируется кварцем на 16 МГц. В качестве счетчика времени, в внутренней схеме микроконтроллера используется 16 битный таймер с делителем на 256. Как только внутренний счетчик досчитает до 625, осуществится прерывание. Поэтому у нас будут происходить прерывания 100 раз в секунду.

Временной интервал учитывается в глобальных переменных, и при каждом прерывании требуется увеличить значение миллисекунд на единицу. Как только число миллисекунд дойдет до 100, то требуется увеличить на единицу величину секунд, а миллисекунды обнулить. И так далее в соответствии с тем же алгоритмом до десятков часов, которые сбрасываются только по достижении значения 24 и уже без увеличения следующего разряда.

В соответствии с этим принципом, создаем значение текущего времени записанное в глобальных переменных. Теперь нам необходимо визуально отобразить эти данные. Так как микроконтроллер имеет ограниченное число портов, то воспользуемся такой особенностью как инерционность цифрового сегментного индикатора sa15-11gwa. Катоды его индикаторов соединены параллельно, а аноды имеют раздельное управление, что позволяет в любой момент времени вывести цифру на любой из четырех индикаторов.

Быстро переключая порт микроконтроллера, к которому подсоединены все катоды и быстро коммутируя аноды, создается иллюзия отображения всех четырех цифр в сегментном индикаторе, хотя фактически работает только один из сегментов . Если текущее время 11:57, то сначала выводим цифру один на первый индикатор часов, через 1 мс выводим цифру 1 на второй индикатор еще через 1 мс отображаем 5 на 3 индикатор, спустя 1 мс отображаем 7 на 4 индикаторе и так далее циклически, обновляя каждый индикатор через 1 мс.

Состояние кнопок управления часами опрашиваются по завершению каждого цикла отображения около 40 раз в секунду.

Рисунок печатной платы выполненный в программе Sprint Layout и прошивку для микроконтроллера скачиваем по ссылке выше. О программаторе AVR микроконтроллеров и непосредственно о тонкостях прошивки, читаем здесь.

Часы на микроконтроллере PIC16F628A

Эта конструкция хоть и на другом типе микроконтроллера, но не менее сложная чем предыдущая схема.

Алгоритм работы прошивки также простой в архиве имеются очень подробные комментарии по коду программы. Два тумблера кн1 и кн2 предназначены для коррекции времени — часов и минут. Точность часов зависит от частоты используемого кварца.

Конструктивно часы выполнены на двух печатных платах, располагающихся рядом под углом 90 градусов. На первой плате расположен индикатор, а вся остальная электроника на второй. Резервное питание в роли которых используется три батарейки размещенные в держателе из старой китайской зажигалки со светодиодом. Для питания от сети переменного тока подойдет любой самодельный блок питания на 5В и током 150мА.

В архиве который вы можете скачать по зеленой ссылке находится разводка обоих печатных плат в программе Sprint Layout и прошивка на микроконтроллер PIC с исходным кодом программы под MP_LAB IDE, с подробными комментариями.

Схему программатора для PIC микроконтроллеров и саму программу, можно также найти и у нас

Большие часы на микроконтроллере Atmega

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

Схема часов на микроконтроллере Atmega

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

стандартная схема включения светодиодных индикаторов

При первом включении на дисплее возникает рекламная заставка в течении одной секунды. Потом осуществляется отображение времени. Нажатие на кнопку SET_TIME переключает индикатор по кругу из основного режима часов:

режим отображения минут и секунд. Если одномоментно нажать на кнопку PLUS и MINUS, то секунды обнуляться.
установка минут текущего времени.
установка часов.
величина ежесуточной коррекции точности хода (будет ежесуточно прибавляться или вычитаться из текущего времени.
символ t. Настройка продолжительности отображения времени на дисплеи.
символ o. - температуры.
символ P. времемя индикации рекламной заставки.
Пределы установки для времени отображения 0-60 сек.

Абсолютно, во всех ячейках удержанием кнопок PLUS/MINUS осуществляется ускоренная установка. Если настройки изменялись пользователем, то через 10 секунд новые значения сохраняться в энергонезависимой память микроконтроллера и будут считываться. Фьюзы при прошивки МК выставляем следующим образом:

Фьюзы для прошивки МК

Внешнее исполнение устройства, вы можете оценить по фотографиям ниже, прощивка и дополнительные файлы к конструкции можно скачать по сылке чуть выше.

конструкция часов на МК
Часы, календарь, умный будильник на МК

В прошивки будильника реализованы графики смен: 4/5 (четыре на пятый) – 4 дня по 1 сменам, 1 выходной, 4 дня по 2 сменам, 1 выходной, 4 дня по ночным, 1 выходной; – день, ночь, 2 выходных; По будням – Пн-Пт - рабочие дни, Сб-Вс - Выходной; (Праздничные дни не учитываются ); Ежедневно.

Пользователь сам выбирает тип граффика будильника и задает любое время срабатывания. В вариантах 4/5 и день, ночь, 2 выходных – необходимо дополнительно выбрать текущую смену.

Кроме того в прошивке МК реализованы следующие функции: Переход на летний-зимний период; Корректировка времени; Ускоряющийся сигнал будильника; Отображение нуля в разряде часов и в разряде даты

ПП в сборе универсального будильника на МК

Схема часов построена на базе часовой микросхемы DS1307 и микроконтроллера MEGA8. Схема (помещена в архив с прошивкой МК и чертежами печатных плат) рассчитана на применение семисегментных цифровых индикаторов с общим анодом на напряжение 5В. (ВНИМАНИЕ! На схеме для упрощения не нарисованы балластные резисторы. Их требуется устанавить на каждый сегмент индикаторов. Всего 112 шт. Номинал рассчитывается согласно документации. В я использовал сегментные индикаторы типа fys15011 и fyd-5622. Если примените более мощные, то скорей всего без дополнительных транзисторных ключей не обойтись.

Чертеж печатной платы разрабатывалась под уже имеющуюся коробку от старых сломанных часов. На разъём Alarm (будильник) можно подсоединить маломощную нагрузку, допустим музыкальную открытку, а джампером JP1 – отсоединяем внутренний биппер. Микроконтроллер можно прошиватьь сразу на плате, что существенно облегчает настройку в случае модификации конструкции.

Настройка часов
Для этого необходимо войти в режим задания параметров:
Параметр-Значение- Сохранять в памяти
P.01 - ЧАСЫ [-]
P.02 - МИНУТЫ [-]
P.03 - ДЕНЬ [-]
P.04 - МЕСЯЦ [-]
P.05 - ГОД [-]
Р.06 - Тип будильника [+] (1-4/5; 2-5/8; 3-ЖД график; 4-ежедневно)
P.07 - СМЕНА [+]
P.08 - Буд.1.ЧЧ [+]
P.09 - Буд.1.ММ [+]
P.10 - Буд.2.ЧЧ [+]
P.11 - Буд.2.ММ [+]
P.12 - Буд.3.ЧЧ [+]
P.13 - Буд.3.ММ [+]
P.14 - Корректировка (Д.Ч) [+]
P.15 - Летний/зимний период [+]
P.16 - Ускоряющийся бипер [+]
P.17 - Отображать незначащий ноль в разряде часов [+]
P.18 - Отображать незначащий ноль в разряде даты [+]

Настройка Будильника: Кнопкой Вкл/Вкл Буд. - осуществляется Вкл/Вкл, при этом:При типе будильника 1: Буд.1 - 1 смена; Буд.2 - смена; Буд.3 - 3 смена;
График смен:1,2,3,4 - первая смена; 5 - выходной; 6,7,8,9 - вторая смена; 10 - выходной; 11,12,13,14 - 3 смена; 15,16 - выходной; Затем дни повторяются.
При первом типе будильника 2: Буд.1 - задает время сигнала; Буд.2, Буд.3 - не срабатывает; График смен: По будням.
При третьем типе будильника: Буд.1 - устанавливается время день; Буд.2 - задает время ночь; Буд.3 - не срабатывает;
График смен: – день, ночь, 2 выходных;. При типе будильника 4 Буд.1, Буд.2, Буд.3- задается время; Если планируете использовать только один будильник - задайте время трех одинаковым.
При графике смен: Ежедневно. Если нажать кнопки Выкл.Буд. в режиме задания параметров - произойдет выход из настроек без сохранения.
Корректировка:При корректировки применяется следующий способ: +/- Ч.Д, где: Ч - количество секунд корректируемое в час (max 9). Д - секунды корректируемое в день. ВНИМАНИЕ! При выключенном питании корректировка не осуществляется. При включении - проверьте правильность времени.