Многофункциональные наручные LED часы. Простые часы на микроконтроллере Attiny2313

Данные часы с будильником основаны на микросхеме часов реального времени, что позволяет им работать от резервного источника питания при отсутствии основного. Заданное время будильника и режим работы хранится в энергонезависимой памяти микроконтроллера. Режим отображения - 24 часовой. Содержат имитацию «тикания» Индикация времени и режимов работы осуществляется посредством светодиодных индикаторов.

Принцип работы

Основой данных часов является микросхема DS1307 - часы реального времени, обменивающаяся информацией с управляющим контроллером посредством I2C интерфейса. Индикация времени осуществляется через 4 7-и сегментных индикатора, работающих в динамическом режиме. Ввод и корректировка времени осуществляется 5-ю кнопками: "+ минуты", "+ часы", «установка», «будильник» и «сброс». Звуковой сигнал будильника выводится через стандартный пьезоизлучатель и представляет из себя сигнал частотой 1кгц с секундными паузами.

В качестве управляющего микроконтроллера был выбран Atmega48 по причине его доступности и наличии необходимой периферии на борту(даже с избытком). Часы реального времени DS1307 подключены к аппаратным выходам I2C управляющего микроконтроллера. Для работы DS1307 в автономном режиме(в случае отключения питания главного контроллера) используется литиевая батарейка резервного питания на 3V, ресурса которой хватит на несколько лет из-за низкого энергопотребления микросхемы.

Рассмотрим подробнее управляющую программу:

Программа работает по принципу флагово-таймерного автомата: все состояния и события представлены в виде соответствующих флагов, выполняющихся в прерываниях соответствующего таймера 1с, 1мс и 263.17мс. Программа использует 2 аппаратных таймера.

Опрос часовой микросхемы и нажатие кнопок осуществляется с интервалом 263.17мс. Интервал 1мс служит для формирования звукового сигнала звонка, а 1с - для его модуляции. Секундный интервал также управляет миганием точки во 2-ом разряде индикатора, разделяющий часы и минуты и также служащим формированием «тиканья».
Рассмотрим принципиальную схему часов.

Обозначения и номиналы:
S4 - Увеличение часов
S3 - Увеличение минут
S2 - Установка
S1 - Включение будильника
S5 - Сброс

R6-R10 - 10k
R1-R5 - 510ом

Напряжение питания - 5 вольт.

Настройка и использование

Правильно собранные часы в дополнительной настройке не нуждаются. Необходимо лишь установить текущее время и будильник.
Установка текущего времени осуществляется следующим образом:
1) Кнопками S1 и S2 установить текущее время (точка между разрядами при этом не мигает)
2) Запустить часы кнопкой S3
Установка будильника:
1) Нажать S3 и убедиться в том, что загорелась точка в 1-ом разряде
2) Установить время звонка кнопками S1 и S2
3) Включить звонок кнопкой S4
Дополнительные возможности:
Включить тиканье - удерживая S4 нажать S2 до появления характерных звуков. Отключается так-же.
Отображение минут и секунд - удерживая S4 нажать S1. Если после этого нажать S3 произойдёт сброс секунд в 00. Возврат - та-же комбинация.

Фото и видео часов

Часы собраны в корпусе из под нерабочей «электроники».


И надо представить какой-либо готовый проект. По законам жанра это должен быть термометр , или часы . Поскольку у себя у закромах не нашлось датчика температуры - было решено написать код часов. Хочу сразу предупредить – это не атомные часы. Их точность зависит от стабильности тактового генератора на кварце. Можно конечно ввести коррекцию хода. Но думаю не надо. Для дома вполне хватит. Плату не разводил. Задача была написать прошивку, а не изготовить устройство. На написание кода ушло три вечера. Устройство пока сыровато. Можно его еще доработать. Если кого заинтересует, то пишите на форум. Будем доделывать. А кто хочет тот может и сам. Исходники выкладываю тут. Только не надо говорить, что говнокод. Хотел бы я посмотреть, что у вас получалось, когда только учились:)

Схема электрическая часов на МК и LCD

Часы отображают время, секунды, и дни недели. Есть также один будильник. Его можно и отключить. Кнопками можно установить все величины, кроме секунд.

Сам программатор

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


Настройку произведем только раз, и больше трогать кнопки не будем. Будильник будет работать ровно одну минуту с прерыванием писка в одну секунду каждый день.


Корпус кварцевого резонатора лучше припаять к минусу. В этом случае увеличится его стабильность. Бузер желательно подключить через транзистор для уменьшения нагрузки на контроллер. Если питать контроллер от 3,3V, то резисторные делители возле дисплея можно убрать - схема станет намного проще.


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

Конструктор покупался на ebay.com за 1.38 фунтов (0.99+0.39 доставка), что эквивалентно 2.16$. На момент покупки это самая низкая цена из всех предложенных.

Доставка заняла около 3х недель, набор пришел в обычном полиэтиленовом пакетике, который в свою очередь был упакован в небольшой «пупырчатый» пакет. На выводах индикатора был небольшой кусочек пенопласта, остальные детали были без какой либо защиты.

Из документации только небольшой листочек формата А5 со списком радиодеталей с одной стороны и принципиальной электрической схемой с другой.

1. Принципиальная электрическая схема, используемые детали и принцип работы



Основой или «сердцем» часов является 8-ми разрядный КМОП микроконтроллер AT89C2051-24PU оснащенный Flash программируемым и стираемым ПЗУ объемом 2кб.
Узел тактового генератора собран по схеме (рис.1) и состоит из кварцевого резонатора Y1 двух конденсаторов C2 и С3, которые образуют вместе параллельный колебательный контур.


Изменением емкости конденсаторов можно в небольших пределах изменять частоту тактового генератора и соответственно точность хода часов. На рисунке 2 показан вариант схемы тактового генератора с возможностью регулировки погрешности часов.

Узел начального сброса служит для установки внутренних регистров микроконтроллера в начальное состояние. Он служит для подачи после подключения питания на 1 вывод МК единичного импульса длительностью не менее 1 мкс (12 периодов тактовой частоты).
Состоит из RC цепочки, образуемой резистором R1 и конденсатором C1.

Схема ввода состоит из кнопок S1 и S2. Программно сделано так, что при одиночном нажатии любой из кнопок в динамике раздается одиночный сигнал, а при удержании двойной.

Модуль индикации собран на четырехразрядном семисегментном индикаторе с общим катодом DS1 и резистивной сборке PR1.
Резистивная сборка представляет собой набор резисторов в одном корпусе:


Звуковая часть схемы представляет собой схему собранную на резисторе R2 10кОм, pnp транзисторе Q1 SS8550(выполняющего роль усилителя) и пьезоэлемента LS1.

Питание подается через разъем J1 с подключенным параллельно сглаживающим конденсатором C4. Диапазон питающих напряжений от 3 до 6В.

2. Сборка конструктора

Сборка трудностей не вызвала, на плате подписано, куда какие детали паять.

Много картинок - сборка конструктора спрятана под спойлером

Я начал с панельки, так как она единственная не является радиодеталью:

Следующим шагом я припаял резисторы. Перепутать их невозможно, они оба на 10кОм:


После этого установил на плату соблюдая полярность электролитический конденсатор, резисторную сборку (также обращая внимание на первый вывод) и элементы тактового генератора - 2 конденсатора и кварцевый резонатор

Следующим шагом припаиваю кнопки и конденсатор фильтра питания:

После этого очередь за звуковым пьезоэлементом и транзистором. В транзисторе главное установить правильной стороной и не перепутать выводы:

В последнюю очередь припаиваю индикатор и разъем питания:

Подключаю к источнику напряжением 5В. Все работает!!!


3. Установка текущего времени, будильников и ежечасового сигнала.

После включения питания дисплей находится в режиме («ЧАСЫ: МИНУТЫ») и отображает время по умолчанию 12:59. Ежечасный звуковой сигнал включен. Оба будильника включены. Первый установлен на время срабатывания 13:01, а второй – 13:02.


При каждом кратковременном нажатии на кнопку S2 дисплей будет переключаться между режимами («ЧАСЫ: МИНУТЫ») и («МИНУТЫ: СЕКУНДЫ»).
При длительном нажатии кнопки S1 происходит вход в меню настроек, состоящее из 9 подменю, обозначенных буквами A, B, C, D, E, F, G, H, I. Подменю переключаются кнопкой S1, значения изменяются кнопкой S2. После подменю I следует выход из меню настроек.

А: Установка показаний часов текущего времени
При нажатии кнопки S2 значение часов изменяется от 0 до 23. После установки часов необходимо нажать S1 для перехода в подменю B.

B: Установка показаний минут текущего времени


C: Включение ежечасного звукового сигнала
По умолчанию включено (ON) – каждый час с 8:00 до 20:00 подается звуковой сигнал. При нажатии кнопки S2 значение изменяется между ON (Вкл.) и OFF (Выкл.). После установки значения необходимо нажать S1 для перехода в подменю D.

D: Включение\выключение первого будильника
По умолчанию будильник включен (ON). При нажатии кнопки S2 значение изменяется между ON (Вкл.) и OFF (Выкл.). После установки значения необходимо нажать S1 для перехода в следующее подменю. Если будильник выключен, то подменю E и F пропускаются.

E: Установка показаний часов первого будильника
При нажатии кнопки S2 значение часов изменяется от 0 до 23. После установки часов необходимо нажать S1 для перехода в подменю F.

F: Установка показаний минут первого будильника
При нажатии кнопки S2 значение минут изменяется от 0 до 59. После установки минут необходимо нажать S1 для перехода в подменю С.

G: Включение\выключение второго будильника
По умолчанию будильник включен (ON). При нажатии кнопки S2 значение изменяется между ON (Вкл.) и OFF (Выкл.). После установки значения необходимо нажать S1 для перехода в следующее подменю. Если будильник выключен, то подменю H и I пропускаются и происходит выход из меню настроек.

H: Установка показаний часов второго будильника
При нажатии кнопки S2 значение часов изменяется от 0 до 23. После установки часов необходимо нажать S1 для перехода в подменю I.

I: Установка показаний минут второго будильника
При нажатии кнопки S2 значение минут изменяется от 0 до 59. После установки минут необходимо нажать S1 для выхода из меню настроек.

Коррекция секунд
В режиме («МИНУТЫ: СЕКУНДЫ») необходимо удержать кнопку S2 для обнуления секунд. Далее коротким нажатием на кнопку S2 запустить отсчет секунд.

4. Общие впечатления от часов.

Плюсы:
+ Низкая цена
+ Легкая сборка, минимум деталей
+ Удовольствие от самостоятельной сборки
+ Достаточно низкая погрешность (у меня за сутки отстали на несколько секунд)

Минусы:
- После отключения питания не держит время
- Отсутствие какой либо документации, кроме схемы (данная статья частично решила этот минус)
- Прошивка в микроконтроллере защищена от считывания

5. Дополнительно:

1) На безграничных просторах интернета нашел инструкцию к этим часам на английском языке и перевел ее на русский. Скачать ее можно

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

Для создания данных часов нам понадобятся:

  • Кварцевый резонатор на 16 МГц – 1 шт;
  • Микроконтроллер Attiny2313 -1 шт;
  • Конденсатор от 22 пф до 27 пф — 2 шт;
  • Конденсатор 220 н — 1 шт;
  • Стабилизатор 7805 – 1 шт;
  • Транзистор – 4 шт;
  • Индикатор SA15-11GWA — 4 шт (можно любой другой с общим анодом);
  • Кнопка – 2 шт;
  • Резистор 100 Ом – 8 шт;
  • Резистор 200 Ом – 4шт;
  • Резистор 10 кОм – 1 шт.
  • Питание осуществляется от простого .

Описание работы простых часов на Attiny2313

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

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

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

Быстро переключая порт B микроконтроллера, к которому подключены катоды и быстро переключая аноды, можем организовать видимость, что отображаются все 4 цифры, несмотря на то, что единовременно работает всего лишь одна. Другими словами, если текущее время 10:43, то выводим цифру 1 на первый индикатор часов, через небольшой интервал времени (порядка 1 мс) выводим цифру 0 на второй индикатор, через 1 мс отображаем 4 на 3 индикатор, спустя 1 мс отображаем 3 на 4 индикатор и снова по кругу.

Кнопки управления часов опрашиваются после каждого очередного цикла отображения (приблизительно 40 раз в секунду), процесс нажатия кнопок снабжен антидребезгом и защелкой в виде флага, что позволяет считать собственно само нажатие, не отвлекаясь на удержание.

(1,2 Mb, скачано: 6 504)

Привет всем! Хочу предложить Вашему вниманию простые часы-пропеллер, которые я собрал на контроллере Atmega8. Они изготовлены из доступных деталей и их легко повторить и изготовить. Единственное что - необходим программатор для прошивки контроллера часов и пульта управления.

Для основания часов был использован обычный вентилятор 120 мм (кулер). Вентиляторы для этих часов можно использовать любые, как с вращением по часовой стрелке, так и против, потому что пока собирал эти часы, программу немного переделал и сделал переключение отображения символов с пульта программно.
Схема самих часов довольно простая и собрана на микроконтроллере Atmega8, для синхронизации работы которого использован часовой кварц с частотой 32768 Гц.
Часы питаются от приёмной катушки, энергия на которую передаётся с генератора с передающей катушкой. Обе эти катушки составляют воздушный трансформатор.

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

Генератор собран на распространённой микросхеме TL494 и позволяет менять ширину и частоту выходных импульсов в широких пределах.
Даже с зазором в сантиметр между катушками - напряжения вполне хватает для пуска часов. Только следует учесть, что чем больше зазор между катушками, тем больше нужно делать ширину импульса и соответственно от этого растёт и потребление тока от источника.

При включении генератора в первый раз, ширину импульсов (скважность) ставим на минимум (ручка регулятора в верхнем по схеме положении, то есть 4 нога через резистор R7 притянута к 14, 15, 2 ноге TL-494). Частоту генератора крутим, пока не исчезнет писк, это примерно 18-20 Кгц (настройка на слух), а если есть чем измерить частоту, то настраиваем её соответственно в этих пределах.
На плате генератора ещё дополнительно собран регулятор напряжения на LM317, предназначенный для регулировки скорости вращения вентилятора.
На схеме его нет, не дорисовал
. Посмотрите демонстрационное видео работы часов.

Видео.

Плата самих часов крепится к основанию вентилятора. Я закрепил её двухсторонним скотчем.

Потом переделал немного схему часов с фоторезистора на инфракрасный фотодиод (рисунок ниже).
В передатчике вместо простого светодиода, у меня теперь стоит инфракрасный.
Резистор вместо 2к поставил 100к.


Ответственными моментами при изготовлении часов являются - изготовление воздушного трансформатора и центровка (вернее балансировка) платы часов на основании вентилятора.

К этим моментам отнеситесь серьёзнее.

Воздушный трансформатор.

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

Далее на оправку из кабельного канала, наматываем 100 витков эмалированного провода, диаметром 0.25.
Ток потребления собранного трансформатора, у меня получился 200 мА (это с довольно заметным зазором между катушками).
В целом вместе с двигателем вентилятора, ток потребления получается в районе 0.4-0.5А.
Первичную (передающую) катушку делаем также, но стараемся сделать минимальный зазор между катушками. Передающая катушка тоже содержит 100 витков провода 0.3 (можно тем-же 0.25).
На схеме у меня немного другие моточные данные этих катушек.

Плата часов.

Планка со светодиодами сделана на стеклотекстолите. В ней сверлится отверстие, в это отверстие вставляется кусок трубки от телескопической антенны и припаивается к плате (трубочку антенны нужно зачистить от блестящего покрытия). Можно использовать любую подходящую трубочку, или прикрепить плату другим способом, например с помощью винта с гайками.
Плату со светодиодами соединил с платой часов обычным эмалированным (намоточным) проводом, он более жёсткий по сравнении с монтажным и не трепится при вращении.

Для балансировки всей платы, с другой её стороны приклеиваем термоклеем винт, диаметром 3-4 мм, накручивая с другой стороны на винт различные гайки - добиваемся минимальной вибрации.
Для проверки работоспособности платы часов - коротим фоторезистор отверткой, пинцетом, светодиоды при этом должны моргнуть.
Часы начинают работать при появлении 5В (логическая единица) на 5 ноге атмеги. То есть при освещении фоторезистора - на 5 ноге должно быть 5В,
Когда фоторезистор не освещён, на 5-й ноге атмеги должен быть логический 0 (около 0В), для этого подбираем резистор на землю с 5 ноги. На схеме стоит 2 кОм, у меня получилось 2.5 Ком.
Внизу на основании вентилятора приклеиваем светодиод так, чтобы при каждом обороте двигателя вентилятора - фоторезистор проходил как можно ближе к источнику света (светодиоду).

Пульт управления.

Пульт управления предназначен для управления работой часов, переключения режимов отображения индикацией (смена направления вращения вентилятора), установки времени часов.

Схема пульта собрана на микроконтроллере ATTINY2313. На плате установлен сам МК с обвязкой и шесть кнопок, предназначенных для управления часами.

Корпус для пульта собирать не стал, поэтому только фото самой платы.

Информация по назначению кнопок пульта;
H+ и Н- настройка часов
М+ и М- настройка минут
R/L смена направления (для винтов крутящихся по часовой и против часовой)
font смена шрифта (тонкий, жирный и надпись сайт)
при надписи сайт кнопками H+ и H - регулируется ширина надписи.

В прикреплённом архиве содержатся все необходимые файлы для сборки часов;

Архив для статьи

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