Часы на микроконтроллере: Делаем сами простые часы за выходные / Хабр

Содержание

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

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

Микроконтроллер PIC18F25K22
берёт на себя всю обработку данных и отсчёт времени, а на долю ULN2803A
остаётся согласование его выходов со светодиодным индикатором. Небольшая микросхема DS1302
работает как таймер точных секундных сигналов, частота её стабилизирована стандартным кварцевым резонатором 32768 Гц. Это несколько усложняет конструкцию, зато вам не придётся постоянно подстраивать и корректировать время, которое будет неизбежно запаздывать или спешить, если обойтись случайным ненастроенным кварцевым резонатором на несколько МГц. Подобные часы скорее простая игрушка, чем качественный точный хронометр.

При необходимости, датчики температуры могут быть расположены далеко от основного блока — они соединяются с ним трёхпроводным кабелем. В нашем случае один температурный датчик установлен в блок, а другой расположен снаружи, на кабеле длинной около 50 см. Когда пробовали кабель 5 м, то тоже прекрасно функционировало.

Дисплей часов изготовлен из четырех больших светодиодных цифровых индикаторов. Первоначально они были с общим катодом, но изменены на общий анод в финальной версии. Вы можете ставить любые другие, потом просто подберёте токоограничительные резисторы R1-R7 исходя из требуемой яркости. Можно было разместить его на общей, с электронной частью часов, плате, но так гораздо универсальнее — вдруг вы захотите поставить очень большой LED индикатор, чтоб их было видно на дальнем расстоянии. Пример такой конструкции уличных часов есть тут.

Сама электроника запускается от 5 В, но для яркого свечения светодиодов необходимо использовать 12 В. Из сети, питание поступает через понижающий трансформатор адаптер на стабилизатор 7805
, который образует напряжение строго 5 В

Обратите внимание на небольшую зелёную цилиндрическую батарейку — она служит источником резервного питания, на случай пропадания сети 220 В. Её не обязательно брать на 5 В — достаточно литий-ионного или Ni-MH аккумулятора на 3,6 вольта

Для корпуса можно задействовать различные материалы — дерево, пластик, металл, либо встроить всю конструкция самодельных часов в готовый промышленный, например от мультиметра, тюнера, радиоприёмника и так далее. Мы сделали из оргстекла, потому что оно легко обрабатывается, позволяет увидеть внутренности, чтоб все видели — эти часы собраны своими руками. И, главное, оно было в наличии:)

Здесь вы сможете найти все необходимые детали предлагаемой конструкции самодельных цифровых часов, в том числе схему, топологию печатной платы, прошивки PIC и

Управление часами

Часы управляются с помощью TL1-минута, час-TL2 и TL3-режим. Кнопки часы и минуты используются в режиме часов для назначения часов и минут. В других режимах они имеют различные функции. Кнопка режима переключает между различными режимами, которых в общей сложности 8:

Режим 1-й — Часы

В этом режиме на дисплее отображается текущее время в формате «ЧЧ.ММ.СС». Кнопка часов используется для установки часов. Кнопка минут для установки минут. При ее нажатии происходит сброс секунд.

Режим 2-й — Включение перехода на летнее время и установки года

Здесь Вы можете включать и выключать автоматический переход между летним и зимним временем и установить год. Данные следующего формата «AC ‘RR» (АС – автоматическое время, пробел, последние две цифры года).

 Режим 3-й — Таймер обратного отсчета


Это режим позволяет организовать обратный отсчет от заданного значения до нуля. По истечении этого времени раздастся звуковой сигнал и светится светодиод LED1. Звуковой сигнал может быть остановлен нажатием кнопки Режим. Данные следующего формата «ЧЧ.ММ.СС». Максимально возможное значение составляет 99.59.59 (почти 100 часов).

Режим 4-й – Комбинированный вывод информации

В этом режиме, попеременно показывается:

  1. текущее время в формате «ЧЧ.ММ.СС»
  2. дата в формате «AA.DD.MM.»

Каждый формат отображается в течение 1 секунды. В этом режиме используются кнопки Часов и Минут, для регулировки яркости дисплея (Часы-, Минуты+). Яркость изменяется логарифмически в 6 этапов: 1/1, 1/2, 1/4, 1/8, 1/16 и 1/32-й. По умолчанию установлено 1/2

Режим 5-й — Установка дня недели и режим работы будильника

В этом режиме можно установить день недели — с понедельника по воскресенье (отображается как пн, вт, ср, чт, пт, сб, вс), включать будильник и выбирать его режим работы. Данные следующего формата «AA AL._» (день недели, пробел, AL., Настройка будильника).

Кнопка часов устанавливает день недели. Кнопка минут используется для включения/выключения звукового сигнала будильника и выбора режима его работы: «AL._» = будильник не активный, «AL.1″ = будильник сигналит 1 раз (затем автоматически переходит в положение»AL._»), «AL.5» = сигнал будильника только в будние дни (пн-пт, кроме сб-вс), «AL.7» = будильник звонит каждый день

Режим 7-й — Секундомер

Секундомер позволяет измерять время с точностью 0,1 сек. Максимальное время измерения составляет 9.59.59.9 (почти 10 часов). Данные следующего формата «H.MM.SS.X». Кнопка минут используется для запуска и остановки секундомера. Кнопка часов используется для сброса.

Режим 8-й — Будильник

Этот режим используется для отображения и установить время будильника (ALARM). Данные следующего формата «HH.MM.AL». Кнопка Минуты устанавливает минуту будильника, кнопку Часы устанавливает час будильника.

Ниже приведена схема аналогичных часов, имеющие индикатор с общим катодом

Скачать прошивку с общим анодом (37,7 KiB, скачано: 1 340)

Скачать прошивку с общим катодом (29,9 KiB, скачано: 739)

http://danyk.cz

Тестер транзисторов / ESR-метр / генератор
Многофункциональный прибор для проверки транзисторов, диодов, тиристоров…

Подробнее

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

Микроконтроллер является единственной микросхемой, используемой в данном устройстве. Для задания тактовой частоты используется кварцевый резонатор на 4 МГц. Для отображения времени использованы индикаторы красного цвета с общим анодом, каждый индикатор состоит из двух цифр с десятичными точками. Можно применить любые индикаторы с общим анодом, лишь бы каждая цифра имела собственный анод. Чтоб электронные часы были хорошо видны в темноте и с большой дистанции — старайтесь выбрать АЛС-ки чем покрупнее.

Индикация в часах осуществляется динамически. В данный конкретный момент времени отображается лишь одна цифра, что позволяет значительно снизить потребление тока. Аноды каждой цифры управляются микроконтроллером PIC16F628. Сегменты всех четырех цифр соединены вместе и через токоограничивающие резисторы R1 … R8 подключены к выводам порта МК. Поскольку засвечивание индикатора происходит очень быстро, мерцание цифр становится незаметным.

Для настройки минут, часов и будильника — используются кнопки без фиксации. В качестве выхода для сигнала будильника используется вывод 10, а в качестве усилителя — каскад на транзисторах VT1,2. Звукоизлучателем является пьезоэлемент типа ЗП. Для улучшения громкости вместо него можно поставить небольшой динамик. Питаются часы от стабилизированного источника напряжением 5 вольт. В часах реализовано 9 режимов индикации. Переход по режимам осуществляется кнопками «+» и «-«. Перед выводом на индикацию самих показаний, на индикаторы выводится короткая подсказка названия режима. Длительность вывода подсказки примерно секунда.

Кнопкой «Коррекция
» часы переводятся в режим настроек. При этом кратковременная подсказка выводится на пол секунды, после чего корректируемое значение начинает мигать. Коррекция показаний осуществляется кнопками «+» и «-«. При длительном нажатии на кнопку, включается режим автоповтора, с заданной частотой. Все значения, кроме часов, минут и секунд, записываются в память и восстанавливаются после выключения питания. Если в течение нескольких секунд ни одна из кнопок не нажата, то электронные часы переходят в режим отображения времени. Нажатием на кнопку «Вкл/Выкл
» включается или выключается будильник, это действие подтверждается коротким звуком. При включенном будильнике светится точка в младшем разряде индикатора. Вот прошивка и рисунок платы часов.

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

Узел тактового генератора

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

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

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

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

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

Простая программа микроконтроллера

Итак, пройдём путь от создания проекта до написания программы.

Запускаем среду разработки AVRStudio 4 и видим окно:


Нажимаем кнопку NEW PROJECT. Откроется окно:


ВНИМАНИЕ!
В пути к файлу не должно быть русских букв. То есть если вы сохраните проект в папку , то программа не скомпилируется, так как AVR Studio 4 может не понять путь с русскими буквами

Мы будем писать программу на ассемблере. Проект назовём .

Теперь можно нажать кнопку ДАЛЕЕ (NEXT).

В следующем окне надо выбрать отладочную платформу и тип микроконтроллера:


Выберем . Ну и поскольку у нас микроконтроллер ATtiny13A, то выберем . Затем нажимаем FINISH.

Ну вот. Проект создан. Редактор исходного кода открыт. Теперь можно приступить к написанию программы. Она может быть примерно такой:

; Сообщить ассемблеру модель микроконтроллера
.device ATtiny13A
.nolist
; Подключить файл с объявлениями для ATtiny13A
.include "tn13def.inc"  
.list

; Инициализация
Init:
  ; PB0 - вход, остальные - выходы
  LDI R16,  0b11111110
  OUT DDRB, R16
  ; Включить подтяжку для PB0
  LDI R16,  0b00000001
  OUT PortB, R16

; Начало программы
Start:
  SBIS PinB,  0   ; Проверить датчик
  SBI  PortB, 1   ; Если обрыв, то включить светодиод
  SBIC PinB,  0   ; Проверить датчик
  CBI  PortB, 1   ; Если замкнут, то погасить светодиод
  RJMP Start      ; Возвращаемся к началу программы

При инициализации мы определяем, какие выводы будут входами, а какие — выходами. Если в бит регистра
записать 0, то соответствующий вывод порта будет входом, если 1 — выходом.

У нас к выводу РВ0 подключен датчик, следовательно, РВ0 будет входом. К выводу РВ1 подключен светодиод, значит, РВ1 будет выходом. Неиспользуемые выводы лучше всегда делать выходами (хотя здесь у каждого свои предпочтения).

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

Далее мы включаем подтягивающий резистор для вывода РВ0. Для этого в регистр надо в соответствующий бит записать 1.

Ну а далее начинается программа.

Сначала выполняем команду . Эта команда проверяет указанный вход. И если на этом входе 1, то следующая команда НЕ БУДЕТ выполнена. То есть в этом коде:

SBIS PinB,  0 
SBI  PortB, 1 
SBIC ...

мы проверяем РВ0. Если там единица, то мы переходим к команде .
Если же ноль (датчик разомкнут — сигнализация сработала), то выполняем команду , которая устанавливает указанный выход (то есть в нашем случае зажигает светодиод, подавая напряжение на вывод РВ1).

Затем выполняем команду . Эта команда также проверяет указанный вход. Но если на этом входе 0,
то следующая команда не будет выполнена. Если же 1 (контакты датчика замкнуты), то будет выполнена команда , которая обнуляет указанный вывод. То есть на РВ1 будет подан 0, и светодиод погаснет.

Таким образам исполняется наш простой алгоритм: если датчик “не сработал” (контакт замкнут), то светодиод не горит. Если контакты разомкнулись, то светодиод светится.

На этом пока всё. Если что-то осталось непонятно — посмотрите видео в начале статьи.

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

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

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

Следующим шагом я припаял резисторы

Перепутать их невозможно, они оба на 10кОм:
После этого установил на плату соблюдая полярность электролитический конденсатор, резисторную сборку (также обращая внимание на первый вывод) и элементы тактового генератора — 2 конденсатора и кварцевый резонатор. Следующим шагом припаиваю кнопки и конденсатор фильтра питания:

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

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

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

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

Печатная плата

Двухсторонняя печатная плата имеет размеры 109 × 23 мм. В бесплатной версии среды проектирования печатных плат Eagle в библиотеке компонентов отсутствуют семисегментные светодиодные индикаторы, поэтому они были нарисованы автором вручную. Как видно на фотографиях (Рисунки 5, 6, 7) авторского варианта печатной платы, дополнительно необходимо выполнить несколько соединений монтажным проводом. Одно соединение на лицевой стороне платы – питание на вывод Vcc микроконтроллера (через отверстие в плате). Еще два соединения на нижней стороне платы, которые используются для подключения выводов сегмента десятичной точки индикаторов в 4 и 7 разряде через резисторы 330 Ом на «землю». Для внутрисхемного программирования микроконтроллера автор использовал 6-выводный разъем (на схеме это разъем изображен в виде составного JP3 и JP4), расположенный в верхней части печатной платы. Этот разъем не обязательно припаивать к плате, микроконтроллер можно запрограммировать любым доступным способом.

Рисунок 5. Расположение светодиодных индикаторов и транзисторных ключей на плате. Видна перемычка монтажным проводом для подачи питания на микроконтроллер
Рисунок 6. Микроконтроллер Attiny2313, разъем внутрисхемного программирования и перемычки для подключения выводов сегмента десятичной точки индикатора
Рисунок 7. Вид нижней стороны печатной платы

Описание работы простых часов на 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)

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

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

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

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

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

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

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

Самая простая схема на микроконтроллере

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

Итак, наше устройство — это простейшая сигнализация. Если вход микроконтроллера замкнут, то на выходе ноль. Если вход разомкнуть, то на выходе, к которому подключен светодиод, появится сигнал. Светодиод включится, и это будет означать, что сигнализация сработала.

Конечно, это всё достаточно примитивно. Однако в давние времена, когда я занимался (в том числе) и обслуживанием систем сигнализации, мы использовали такие самодельные “датчики”. Например, обматывали решётку на окне тонким проводом и подключали его в шлейф прибора сигнализации. Если злодей выдернет решётку — провод порвётся и сигнализация сработает.

Ну а теперь к схеме.

Микроконтроллер ATtiny13A по умолчанию использует внутренний генератор на 9,6 МГц (это следует из документации,
и я писал об этом ).
И если нас такое решение устраивает (а нас оно устраивает), то это означает, что никаких внешних цепей для задания тактовой частоты нам не потребуется.

Микроконтроллер ATtiny13A выпускается в нескольких корпусах. Будем считать, что у нас корпус 8PDIP/SOIC
(подробнее об этом здесь). Тогда схема будет такой:

Наверно вы знаете, что у этих МК есть встроенные подтягивающие резисторы. Но эти резисторы очень маломощные и могут перегореть, если их использовать с нагрузкой. Поэтому последовательно со светодиодом лучше ставить внешний резистор.

На схеме SA1 может быть либо охранным датчиком, либо просто тонким проводом, обмотанным, например, вокруг какого-то охраняемого предмета. При обрыве провода (или размыкании контакта) сигнализация “срабатывает” и светодиод загорается.

Принципиальная схема

Схема управления показана на рис. 1. Здесь в качестве сенсора F1 используется стандартный интегральный фотоприемник типа SFH-506-38, применявшийся в самых разных телевизорах.

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

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

Поэтому, в отличие от остальной части схемы, фотоприемник питается напряжением 5V. И вот каскад на транзисторе VТ1 устраняет эти два противоречия. Он инвертирует импульсы с выхода фотоприемника и согласовывает логические уровни.

Рис. 1. Принципиальная схема дистанционного выключателя устройств управляемого пультом на ИК лучах.

На триггере D1.1 сделана входная схема логического управления Её задача в том, чтобы при каждом приеме сигнала пульта схема переключалась только один раз. То есть, независимо от того, сколько импульсов будет в командном сигнале. Это своеобразное реле времени на 1-2 секунды.

При первом же импульсе триггер D1 1 переключается в состояние логической единице на инверсном выходе. Это состояние устойчиво и не изменяется от последующих импульсов, из которых состоит вся команда. Но чтобы вернуться в исходное положение есть цепь R3-C2. Когда на инверсном выходе триггера единица, С2 медленно заряжается через R3.

Примерно через 1-2 секунды напряжение на нем достигает порога логической единицы, и триггер возвращается в исходное состояние.

В момент включения питания триггер D1.2 устанавливается в единичное состояние зарядным током конденсатора С4. На его инверсном выходе ноль.

Ключевая схема на полевых транзисторах VТ2 и VT3 закрыта и нагрузка отключена. В момент появления логической единицы на выходе D1.1 цепь C3-VD1-R4 формирует импульс, который поступает на вход «С» триггера D1 2 и переключает его в противоположное состояние.

Триггер D1.2 включен делителем на два, поэтому каждый импульс, поступающий на его вход «С» переключает триггер в противоположное положение тому, в котором он был ранее.

То есть, подав один импульс можно нагрузку включить, а подав второй — выключить. Это и используется для управления нагрузкой, — каждое нажатие кнопки пульта изменяет состояние нагрузки на противоположное.

Логическая часть схемы питается от параметрического источника VD5-R6-C5-VD2-VD6. Отличительная особенность -это использование двух последовательно включенных стабилитронов.

Это нужно для того чтобы получить не только напряжение 10V, необходимое для питания микросхемы и достаточное для управления выходным ключом. но для получения напряжения 5V для питания интегрального фотоприемника F1.

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

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

В этой схеме напряжение управления на затворы поступает через резистор R7, который ограничивает ток заряда емкости затворов и исключает перегрузку выхода КМОП-элемента.

Схема принципиальная электрическая

В одном устройстве объединено две функции: собственно измерение температуры и времени (часы). Индикация производится попеременно, сменяясь через десять секунд. Для настройки часов используется две кнопки, аналогично простым китайским электронным часам: одна отвечает за выбор параметра, вторая за его изменение. Питается устройство от сети с помощью постоянного стабилизированного источника тока напряжением пять вольт (плата от зарядного устройства телефона).

Датчиком температуры является микросхема DS18B20. Так как в устройстве «Часы-термометр» нет своей батареи, при пропадании питания естественно показания будут сбиваться. И что бы это не явилось причиной какого-нибудь опоздания человека на жизненно важные дела, имеется интересная «фишка» — при подаче питания вместо времени на дисплее будут отображаться прочерки, пока не нажмёшь одну из двух кнопок настройки.

Корпусом самодельного измерителя температуры послужила подходящая коробочка от запонок. В неё была помещена сама плата часов-термометра и плата вытащенная из телефонного зарядника. Датчик DS18B20 сделан выносным и подсоединяется через разъём.

Управление часами

Часы управляются с помощью TL1-минута, час-TL2 и TL3-режим. Кнопки часы и минуты используются в режиме часов для назначения часов и минут. В других режимах они имеют различные функции. Кнопка режима переключает между различными режимами, которых в общей сложности 8:

Режим 1-й — Часы

В этом режиме на дисплее отображается текущее время в формате «ЧЧ.ММ.СС». Кнопка часов используется для установки часов. Кнопка минут для установки минут. При ее нажатии происходит сброс секунд.

Режим 2-й — Включение перехода на летнее время и установки года

Здесь Вы можете включать и выключать автоматический переход между летним и зимним временем и установить год. Данные следующего формата «AC ‘RR» (АС – автоматическое время, пробел, последние две цифры года).

Режим 3-й — Таймер обратного отсчета

Это режим позволяет организовать обратный отсчет от заданного значения до нуля. По истечении этого времени раздастся звуковой сигнал и светится светодиод LED1. Звуковой сигнал может быть остановлен нажатием кнопки Режим. Данные следующего формата «ЧЧ.ММ.СС». Максимально возможное значение составляет 99.59.59 (почти 100 часов).

Режим 4-й – Комбинированный вывод информации

В этом режиме, попеременно показывается:

  1. текущее время в формате «ЧЧ.ММ.СС»
  2. дата в формате «AA.DD.MM.»

Каждый формат отображается в течение 1 секунды. В этом режиме используются кнопки Часов и Минут, для регулировки яркости дисплея (Часы-, Минуты+). Яркость изменяется логарифмически в 6 этапов: 1/1, 1/2, 1/4, 1/8, 1/16 и 1/32-й. По умолчанию установлено 1/2

Режим 5-й — Установка дня недели и режим работы будильника

В этом режиме можно установить день недели — с понедельника по воскресенье (отображается как пн, вт, ср, чт, пт, сб, вс), включать будильник и выбирать его режим работы. Данные следующего формата «AA AL._» (день недели, пробел, AL., Настройка будильника).

Кнопка часов устанавливает день недели. Кнопка минут используется для включения/выключения звукового сигнала будильника и выбора режима его работы: «AL._» = будильник не активный, «AL.1″ = будильник сигналит 1 раз (затем автоматически переходит в положение»AL._»), «AL.5» = сигнал будильника только в будние дни (пн-пт, кроме сб-вс), «AL.7» = будильник звонит каждый день

Режим 7-й — Секундомер

Секундомер позволяет измерять время с точностью 0,1 сек. Максимальное время измерения составляет 9.59.59.9 (почти 10 часов). Данные следующего формата «H.MM.SS.X». Кнопка минут используется для запуска и остановки секундомера. Кнопка часов используется для сброса.

Режим 8-й — Будильник

Этот режим используется для отображения и установить время будильника (ALARM). Данные следующего формата «HH.MM.AL». Кнопка Минуты устанавливает минуту будильника, кнопку Часы устанавливает час будильника.

Ниже приведена схема аналогичных часов, имеющие индикатор с общим катодом

(скачено: 765)

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

В качестве управляющего микроконтроллера был выбран 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 вольт.

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

39

Но обо всём по порядку!

СВЕТОДИОДНЫЕ ЧАСЫ НА МИКРОКОНТРОЛЛЕРЕ

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


Описание прибора

1. Функции.
1.1 Часы. Формат отображения времени 24-х часовый. Цифровая коррекция точности хода.

1.2 Термометр. Измерение температуры с двух датчиков в диапазоне -55,0 оС — 125,0 оС.

1.3 Поочередный вывод информации на индикатор.
1.4 Контроль основного источника питания.
1.5 Использование энергонезависимой памяти микроконтроллера для сохранения настроек и установок при отключении питания.
1.6 Три кнопки для установки и настройки: PLUS, MINUS, SET.

Работа устройства

При первом включении на дисплее рекламная заставка в течении 1 сек. Потом отображение времени.
Нажатие на SET_TIME переводит индикатор по кругу из основного режима часов (отображение текущего времени):
– режим отображения минут и секунд. Если в этом режиме одновременно нажать на кнопку PLUS и MINUS, то произойдет обнуление секунд.
– установка минут текущего времени.
– установка часов текущего времени.
– величина ежесуточной коррекции точности хода часов. Символ c и значение коррекции. Пределы установки -25?25 сек. Выбранная величина будет ежесуточно в 0 часов 0 минут и 30 секунд прибавлена/вычтена из текущего времени.
– символ t. Настройка продолжительности отображения часов.
– символ i. Время отображения символов индикации внутренней температуры (int).
– символ d. установка времени индикации температуры с внутреннего датчика.
– символ o. Время отображения символов индикации внешней температуры (out).
– символ u. установка времени индикации температуры с внешнего датчика.
– символ P. установка времени индикации рекламной заставки.
Пределы установки для времени отображения 0-60 сек. Если установлен 0, данный параметр на индикатор не выводится. Если все параметры установить в 0 – на индикаторе будут часы.

Настройка часов

3.1 Во всех режимах удержанием кнопок PLUS/MINUS производится ускоренная установка.
3.2 Если производились изменения настроек, через 10 секунд от последнего изменения новые значения запишутся в энергонезависимую память (EEPROM) и будут считаны оттуда при повторном включении питания. Индикатор перейдет в основной режим времени.
3.3 Новые настройки вступают в силу по ходу установки.

Контроль питания

Микроконтроллер отслеживает наличие основного питания. При его отключении питание прибора осуществляется от внутреннего источника. Для уменьшения тока потребления отключаются индикатор, датчики и кнопки. Часы продолжают отсчитывать время. При появлении питания от основного источника все функции восстанавливаются.

   На данный момент разрабатываются печатные платы, проводится корекция схемы, можно и коллективно. Если будут идеи и пожелания по усовершенствованию часов — пишите на форуме. Авторы конструкции: Александрович & SOIR (Soir&C.E.A)

Originally posted 2019-02-04 09:33:40. Republished by Blog Post Promoter

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

Данные часы с будильником основаны на микросхеме часов реального времени, что позволяет им работать от резервного источника питания при отсутствии основного. Заданное время будильника и режим работы хранится в энергонезависимой памяти микроконтроллера. Режим отображения — 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. Возврат — та-же комбинация.
Фото и видео часов
Часы собраны в корпусе из под нерабочей «электроники».


Этот вариант часов сделан таким образом, чтобы максимально упростить схему, снизить энергопотребление, и в итоге получить прибор, который легко помещается в кармане. Выбрав миниатюрные аккумуляторы для питания схемы, SMD — монтаж и миниатюрный динамик (например от нерабочего мобильного телефона), Вы можете получить конструкцию, размером чуть больше спичечного коробка.
Применение сверхъяркого индикатора позволяет снизить ток, потребляемый схемой. Снижение тока потребления также достигается в режиме «LoFF» — индикатор погашен, при этом включена только мигающая точка младшего разряда часов.

Индикация
Регулируемая яркость индикаторов позволяет выбрать наиболее комфортное отображение показаний (и опять же снизить энергопотребление).
В часах реализовано 9 режимов индикации. Переход по режимам осуществляется с помощью кнопок «плюс» и «минус». Перед выводом на индикацию самих показаний, на индикаторы выводится короткая подсказка названия режима. Длительность вывода подсказки — одна секунда. Применение кратковременных подсказок позволило достичь хорошей эргономичности часов. При переходах по режимам отображения (которых получилось достаточно много, для такого простого прибора, как обычные часы) не возникает путаницы, и всегда понятно, какие именно показания выведены на индикатор.

Коррекция показаний, выведенных на индикатор включается при нажатии на кнопку «Коррекция». При этом кратковременная подсказка выводится на 1/4 секунды, после чего корректируемое значение начинает мигать с частотой 2 Гц. Корректируются показания кнопками «плюс» и «минус». При длительном нажатии на кнопку, включается режим автоповтора, с заданной частотой. Частоты автоповтора нажатия кнопки составляют: для часов, месяцев и дня недели — 4 Гц; для минут, года и яркости индикатора — 10 Гц; для корректирующего значения — 100 Гц.
Все откорректированные значения, кроме часов, минут и секунд, записываются в EEPROM и восстанавливаются после выключения — включении питания. Секунды при коррекции обнуляются. Из всех режимов, кроме часы-минуты, минуты-секунды и LoFF организован автоматический возврат. Если в течение 10 секунд ни одна из кнопок не нажата, то часы переходят в режим отображения часов — минут.
Нажатием на кнопку «Вкл/Выкл буд.» включается/выключается будильник. Включение будильника подтверждается коротким двухтональным звуком. При включенном будильнике светится точка в младшем разряде индикатора.
В режиме «Corr» на индикатор выведена корректирующая константа, начальное значение которой 5000 микросекунд в секунду. При отставании часов константу увеличиваем на величину отставания, вычисленное в микросекундах за одну секунду. Если часы спешат, то константу уменьшаем по тому же принципу.

Схема

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

Дисплей построен на шести 7-сегментных светодиодных индикаторов с регулировкой яркости. Часы также оснащены резервным питанием от батарей.

Описание конструкции микроконтроллерных часов

Как уже было сказано выше, часы имеют шестизначный дисплей, состоящий из двух трехзначных дисплеев T-5631BUY-11, работающий в мультиплексном режиме. Аноды индикаторов сгруппированы по разрядам и переключаются с помощью транзисторов Т1…Т6.

Катоды сгруппированы в сегменты и питаются непосредственно от микроконтроллера IO1 Attmega8. Частота мультиплексирования составляет 100Гц.

Часы контролируется низкочастотным кварцевым резонатором X1 с частотой 32768 Гц. В результате активации бита CKOPT, разрешающего использование внутренних конденсаторов 36пф для кварца, отпадает необходимость в использовании внешних конденсаторов.

В случае возникновении проблем с запуском генератора, можно попробовать подключить 2 конденсатора по 22пф. Для еще большей точности часов можно вообще отключить внутренние конденсаторы (сбросить бит СKOPT) и оставить только внешние.

Пъезоизлучатель REP1 издает звуковой сигнал будильника и сигнализирует о завершении работы таймера. Во время звукового сигнала на выводе 16 (порт PB2) появляется лог.1. Этот сигнал можно использовать для управления какой-либо нагрузкой.

Управление часами производится тремя кнопками — минуты, часы и режим. Кнопки подключены через резисторы, которые защищают порты микроконтроллер Attmega8. Схема питается от источника 5 вольт (7805). Потребление тока в основном зависит от числа активных индикаторов, а так же от степени настройки яркости.

При максимальной яркости ток потребления доходит до 60 мА. Часы снабжены резервной батареей питания. Во время работы от батареи, часы переходят в экономичный режим, при котором дисплей выключен. Так же в этом режиме не активны и кнопки за исключением случая, когда необходимо отключить звуковой сигнал.

Напряжение резервного питания от 3 до 4,5 В. Это может быть одна батарея на 3В, три NiMH или NiCd по 1,2 В или один аккумулятор Li-Pol или Li-Ion (от 3,6 до 3,7 В). Ток потребления от 3В батареи составляет всего лишь 5…12мA. Время автономной работы часов в экономичном режиме от батареи 3В типа CR2032 со стандартной емкостью 200mAh теоретически должно хватить примерно на 2,5 — 3 лет.

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

Управление часами

Часы управляются с помощью TL1-минута, час-TL2 и TL3-режим. Кнопки часы и минуты используются в режиме часов для назначения часов и минут. В других режимах они имеют различные функции. Кнопка режима переключает между различными режимами, которых в общей сложности 8:

Режим 1-й — Часы

В этом режиме на дисплее отображается текущее время в формате «ЧЧ.ММ.СС». Кнопка часов используется для установки часов. Кнопка минут для установки минут. При ее нажатии происходит сброс секунд.

Режим 2-й — Включение перехода на летнее время и установки года

Здесь Вы можете включать и выключать автоматический переход между летним и зимним временем и установить год. Данные следующего формата «AC ‘RR» (АС – автоматическое время, пробел, последние две цифры года).

Режим 3-й — Таймер обратного отсчета

Это режим позволяет организовать обратный отсчет от заданного значения до нуля. По истечении этого времени раздастся звуковой сигнал и светится светодиод LED1. Звуковой сигнал может быть остановлен нажатием кнопки Режим. Данные следующего формата «ЧЧ.ММ.СС». Максимально возможное значение составляет 99.59.59 (почти 100 часов).

Режим 4-й – Комбинированный вывод информации

В этом режиме, попеременно показывается:

  1. текущее время в формате «ЧЧ.ММ.СС»
  2. дата в формате «AA.DD.MM.»

Каждый формат отображается в течение 1 секунды. В этом режиме используются кнопки Часов и Минут, для регулировки яркости дисплея (Часы-, Минуты+). Яркость изменяется логарифмически в 6 этапов: 1/1, 1/2, 1/4, 1/8, 1/16 и 1/32-й. По умолчанию установлено 1/2

Режим 5-й — Установка дня недели и режим работы будильника

В этом режиме можно установить день недели — с понедельника по воскресенье (отображается как пн, вт, ср, чт, пт, сб, вс), включать будильник и выбирать его режим работы. Данные следующего формата «AA AL._» (день недели, пробел, AL., Настройка будильника).

Кнопка часов устанавливает день недели. Кнопка минут используется для включения/выключения звукового сигнала будильника и выбора режима его работы: «AL._» = будильник не активный, «AL.1″ = будильник сигналит 1 раз (затем автоматически переходит в положение»AL._»), «AL.5» = сигнал будильника только в будние дни (пн-пт, кроме сб-вс), «AL.7» = будильник звонит каждый день

Режим 6-й – Установка дня недели и даты

Кнопка часов позволяет установить день месяца. Кнопка минут позволяет установить месяц.

Режим 7-й — Секундомер

Секундомер позволяет измерять время с точностью 0,1 сек. Максимальное время измерения составляет 9.59.59.9 (почти 10 часов). Данные следующего формата «H.MM.SS.X». Кнопка минут используется для запуска и остановки секундомера. Кнопка часов используется для сброса.

Режим 8-й — Будильник

Этот режим используется для отображения и установить время будильника (ALARM). Данные следующего формата «HH.MM.AL». Кнопка Минуты устанавливает минуту будильника, кнопку Часы устанавливает час будильника.

Ниже приведена схема аналогичных часов, имеющие индикатор с общим катодом

(скачено: 765)

Как видно из названия, главное предназначение данного устройства — узнавать текущее время и дату. Но оно имеет ещё множество других полезных функций. Идея его создания появилась после того, как мне на глаза попались полусломанные часы с относительно большим (для наручных) металлическим корпусом. Я подумал, что туда можно вставить самодельные часы, возможности которых ограничиваются только собственной фантазией и умением. В результате появилось устройство со следующими функциями:

1. Часы — календарь:

    Отсчёт и вывод на индикатор часов, минут, секунд, дня недели, числа, месяца, года.

    Наличие автоматической корректировки текущего времени, которая производится каждый час (максимальные значения +/-9999 ед., 1 ед. = 3,90625 мс.)

    Вычисление дня недели по дате (для текущего столетия)

    Автоматический переход на летнее и зимнее время (отключаемый)

  • Учитываются високосные годы

2. Два независимых будильника (при срабатывании звучит мелодия)
3. Таймер с дискретностью 1 сек. (Максимальное время отсчета 99ч 59м 59с)
4. Двухканальный секундомер с дискретностью счета 0,01 сек. (максимальное время счета 99ч 59м 59с)
5. Секундомер с дискретностью счета 1 сек. (максимальное время счета 99 суток)
6. Термометр в диапазоне от -5°С. до 55°С (ограничен температурным диапазоном нормальной работы устройства) с шагом 0,1°С.
7. Считыватель и эмулятор электронных ключей — таблеток типа DS1990 по протоколу Dallas 1-Wire (память на 50 штук, в которой уже имеется несколько универсальных ”ключей-вездеходов”) с возможностью побайтного просмотра кода ключа.
8. Дистанционный пульт управления на ИК лучах (реализована только команда «Сделать снимок») для цифровых фотокамер «Pentax», «Nikon», «Canon»
9. Светодиодный фонарик
10. 7 мелодий
11. Звуковой сигнал в начале каждого часа (отключаемый)
12. Звуковое подтверждение нажатия кнопок (отключаемое)
13. Контроль напряжения батареи питания с функцией калибровки
14. Цифровая регулировка яркости индикатора

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

Принципиальная схема часов

Устройство построено на микроконтроллере АТmega168PA-AU. Часы тикают по таймеру Т2, работающему в асинхронном режиме от часового кварца на 32768 Гц. Микроконтроллер почти всё время находится в спящем режиме (индикатор при этом выключен), просыпаясь раз в секунду, чтобы добавить эту самую секунду к текущему времени и снова засыпает. В активном режиме МК тактируется от внутреннего RC осциллятора на 8 МГц, но внутренний прескалер делит её на 2, в итоге ядро тактируется от 4 МГц. Для индикации используется четыре одноразрядных светодиодных цифровых семисегментных индикатора c общим анодом и децимальной точкой. Так же имеется 7 статусных светодиодов, назначение которых следующее:
D1- Признак отрицательного значения (минус)
D2- Признак работающего секундомера (мигает)
D3- Признак включенного первого будильника
D4- Признак включенного второго будильника
D5- Признак подачи звукового сигнала в начале каждого часа
D6- Признак работающего таймера (мигает)
D7- Признак низкого напряжения батареи питания

R1-R8 — токоограничительные резисторы сегментов цифровых индикаторов HG1-HG4 и светодиодов D1-D7. R12,R13 – делитель для контроля напряжения батареи. Поскольку напряжение питания часов 3V, а белому светодиоду D9 требуется около 3,4-3,8V при номинальном токе потребления, то он светится не в полную силу (но её хватает, чтобы не споткнуться в темноте) и поэтому подключен без токоограничительного резистора. Элементы R14, Q1, R10 предназначены для управления инфракрасным светодиодом D8 (реализация дистанционного управления для цифровых фотокамер). R19, R20, R21 служат для сопряжения при общении с устройствами, имеющими интерфейс 1-Wire. Управление осуществляется тремя кнопками, которые я условно назвал: MODE (режим), UP (вверх), DOWN (вниз). Первая из них также предназначена для пробуждения МК по внешнему прерыванию (при этом индикация включается), поэтому она подключена отдельно на вход PD3. Нажатия остальных кнопок определяется при помощи АЦП и резисторов R16,R18. Если кнопки не нажимаются в течении 16 сек, то МК засыпает и индикатор гаснет. При нахождении в режиме “Пульт ДУ для фотокамер” этот интервал составляет 32 сек., а при включенном фонарике — 1 минуту. Также МК можно усыпить вручную, используя кнопки управления. При запущенном секундомере с дискретностью счета 0,01 сек. устройство не переходит в спящий режим.

Печатная плата

Устройство собрано на двухсторонней печатной плате круглой формы по размеру внутреннего диаметра корпуса наручных часов. Но при изготовлении я использовал две односторонние платы толщиной 0,35 мм. Такую толщину опять же получил отслоив её от двухстороннего стеклотекстолита толщиной 1,5 мм. Платы затем склеил. Все это делалось потому что, у меня не было тонкого двухстороннего стеклотекстолита, а каждый сэкономленный миллиметр толщины в ограниченном внутреннем пространстве корпуса часов очень ценен, да и отпала надобность совмещения при изготовлении печатных проводников методом ЛУТ. Рисунок печатной платы и расположение деталей находятся в прилагаемых файлах. На одной стороне размещены индикаторы и токоограничительные резисторы R1-R8. На обратной — все остальные детали. Имеются два сквозных отверстия для белого и инфракрасного светодиодов.

Контакты кнопок и держатель батареи выполнены из гибкой пружинящей листовой стали толщиной 0,2…0,3мм. и залужены. Ниже приведены фото платы с двух сторон:

Конструкция, детали и их возможная замена

Микроконтроллер ATmega168PA-AU можно заменить на ATmega168P-AU, ATmega168V-10AU ATmega168-20AU. Цифровые индикаторы — 4 штуки KPSA02-105 суперяркие красного цвета свечения с высотой цифры 5,08мм. Mожно поставить из этой же серии KPSA02-xxx или KCSA02-xxx. (только не зеленые – они будут слабо светиться) Другие аналоги подобных размеров с достойной яркостью мне неизвестны. У HG1, HG3 соединение катодов сегментов отличается от HG2, HG4, потому что мне так было удобнее для разводки печатной платы. В связи с этим для них в программе применена различная таблица знакогенератора. Используемые резисторы и конденсаторы SMD для поверхностного монтажа типоразмеров 0805 и 1206, светодиоды D1-D7 типоразмера 0805. Белый и инфракрасный светодиоды диаметром 3мм. На плате имеется 13 сквозных отверстий, в которые необходимо установить перемычки. В качестве температурного датчика применён DS18B20 c интерфейсом 1-Wire. LS1 – обычная пьезоэлектрическая пищалка, вставляется в крышку. Одним контактом она соединяется с платой при помощи пружинки, установленной на ней, другим соединяется с корпусом часов самой крышкой. Кварцевый резонатор от наручных часов.

Программирование, прошивка, фьюзы

Для внутрисхемного программирования на плате имеются только 6 круглых контактных пятачка (J1), так как полноценный разъем не уместился по высоте. К программатору их подключал, используя контактное устройство, сделанное из штыревой вилки PLD2x3 и напаянных на них пружинками, прижимая их одной рукой к пятачкам. Ниже прилагается фото приспособления.

Я использовал его, так как в процессе отладки приходилось много раз перепрошивать МК. При разовой прошивке проще подпаять к пятачкам тонкие провода, подключенные к программатору, а после снова отпаять. МК удобнее прошивать без батареи, но чтобы питание поступало либо от внешнего источника +3V, либо от программатора c таким же напряжением питания. Программа написана на ассемблере в среде VMLAB 3.15. Исходные коды, прошивки для FLASH и EEPROM в приложении.

FUSE-биты микроконтроллера DD1 должны быть запрограммированы следующим образом:
CKSEL3…0 = 0010 — тактирование от внутреннего RC осциллятора 8 МГц;
SUT1…0 =10 — Start-up time: 6 CK + 64 ms;
CKDIV8 = 1 — делитель частоты на 8 отключён;
CKOUT = 1 — Output Clock on CKOUT запрещен;
BODLEVEL2…0 = 111 — контроль напряжения питания отключён;
EESAVE = 0 — стирание EEPROM при программировании кристалла запрещено;
WDTON = 1 — Нет постоянного включения Watchdog Timer;
Остальные FUSE – биты лучше не трогать. FUSE–бит запрограммирован, если установлен в “0”.

Прошивка EEPROM прилагаемым в архиве дампом обязательна.

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

Адрес ячейки

Назначение

Параметр

Примечание

Величина напряжения батареи, при которой происходит сигнал о её низком уровне

260($104) (2,6V)

коэффициент для коррекции значения измеренного напряжения батареи

интервал времени на переход в режим сна

1 ед. = 1 сек

интервал времени на переход в режим сна при включенном фонарике

1 ед. = 1 сек

интервал времени на переход в режим сна при нахождении в режиме ДУ для фотокамер

1 ед. = 1 сек

Здесь хранятся номера IButton ключей

Небольшие пояснения по пунктам:

1 пункт. Здесь указывается величина напряжения на батарее, при которой загорится светодиод, сигнализирующий о её низком значении. Я поставил 2,6V (параметр — 260). Если нужно другое, например 2,4V, то надо записать 240($00F0). В ячейку по адресу $0000 заносится младший байт, соответственно в $0001 – старший.

2 пункт. Поскольку я не установил на плату переменный резистор для подстройки точности измерения напряжения батареи питания ввиду отсутствия места, то я ввел программную калибровку. Порядок калибровки для точного измерения следующий: изначально в данной ячейке EEPROM записан коэффициент 1024($400), необходимо перевести устройство в активный режим и посмотреть на индикаторе напряжение, и тут же замерить вольтметром реальное напряжение на батарее. Коэффициент коррекции (К), который необходимо выставить, вычисляется по формуле: K=Uр/Uи*1024 где Uр – реальное напряжение, измеренное вольтметром, Uи – напряжение которое, измерило само устройство. После подсчёта коэффициента ”K” его заносят в устройство (как это делается сказано в инструкции по эксплуатации). После калибровки у меня погрешность не превысила 3%.

3 пункт. Здесь задается параметр времени, через которое устройство перейдет в спящий режим, если кнопки не нажимаются. У меня стоит 16 сек. Если допустим надо, чтобы засыпало через 30 сек, то надо записать 30($26).

В 4 и 5 пунктах аналогично.

6 пункт. По адресу $0030 хранится код семейства нулевого ключа (dallas 1-Wire), затем его 48 битный номер и CRC. И так 50 ключей последовательно.

Настройка, особенности работы

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

Устройство питается от литиевой батареи CR2032 (3V) и потребляет в режиме сна примерно 4 мкА, а в активном режиме 5…20 мА в зависимости от яркости индикатора. При ежедневном пятиминутном использовании активного режима батареи должно хватить примерно на 2….8 месяцев в зависимости от яркости. Корпус часов соединен с минусом батареи.

Считывание ключей проверялось на DS1990. Эмуляция проверена на домофонах ”МЕТАКОМ”. Под порядковыми номерами от 46 до 49(последние 4) прошиты (все ключи хранятся в EEPROM, их можно изменять перед прошивкой) универсальные ключи для домофонов. Ключ, прописанный под номером 49 открывал все домофоны ”МЕТАКОМ”, которые мне попадались, остальные универсальные ключи тестировать не довелось, их коды я взял из сети.

Дистанционное управление для фотокамер проверялось на моделях Pentax optio L20, Nikon D3000. Canon не удалось заполучить для проверки.

Инструкция пользователя занимает 13 страниц, поэтому я не стал её включать в статью, а вынес в приложение в формате PDF.

Архив содержит:
Схема в и GIF;
Рисунок печатной платы и расположение элементов в формате ;
Прошивка и исходники на ассемблере;

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

ATmega168PA

1 PA-AU В блокнот
U2 Датчик температуры

DS18B20

1 В блокнот
Q1 MOSFET-транзистор

2N7002

1 В блокнот
С1, С2 Конденсатор 30 пФ 2 В блокнот
С3, С4 Конденсатор 0.1 мкФ 2 В блокнот
С5 Электролитический конденсатор 47 мкФ 1 В блокнот
R1-R8, R17 Резистор

100 Ом

9 В блокнот
R9 Резистор

10 кОм

1 В блокнот
R10 Резистор

8.2 Ом

1 В блокнот
R11 Резистор

300 Ом

1 В блокнот
R12 Резистор

2 МОм

1 В блокнот
R13 Резистор

220 кОм

1 В блокнот
R14 Резистор

30 кОм

1 В блокнот
R15, R19 Резистор

4.7 кОм

2 В блокнот
R16 Резистор

20 кОм

1

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

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

Микроконтроллер PIC18F25K22 берёт на себя всю обработку данных и отсчёт времени, а на долю ULN2803A остаётся согласование его выходов со светодиодным индикатором. Небольшая микросхема DS1302 работает как таймер точных секундных сигналов, частота её стабилизирована стандартным кварцевым резонатором 32768 Гц. Это несколько усложняет конструкцию, зато вам не придётся постоянно подстраивать и корректировать время, которое будет неизбежно запаздывать или спешить, если обойтись случайным ненастроенным кварцевым резонатором на несколько МГц. Подобные часы скорее простая игрушка, чем качественный точный хронометр.

При необходимости, датчики температуры могут быть расположены далеко от основного блока — они соединяются с ним трёхпроводным кабелем. В нашем случае один температурный датчик установлен в блок, а другой расположен снаружи, на кабеле длинной около 50 см. Когда пробовали кабель 5 м, то тоже прекрасно функционировало.

Дисплей часов изготовлен из четырех больших светодиодных цифровых индикаторов. Первоначально они были с общим катодом, но изменены на общий анод в финальной версии. Вы можете ставить любые другие, потом просто подберёте токоограничительные резисторы R1-R7 исходя из требуемой яркости. Можно было разместить его на общей, с электронной частью часов, плате, но так гораздо универсальнее — вдруг вы захотите поставить очень большой LED индикатор, чтоб их было видно на дальнем расстоянии. Пример такой конструкции уличных часов есть тут.

Сама электроника запускается от 5 В, но для яркого свечения светодиодов необходимо использовать 12 В. Из сети, питание поступает через понижающий трансформатор адаптер на стабилизатор 7805 , который образует напряжение строго 5 В. Обратите внимание на небольшую зелёную цилиндрическую батарейку — она служит источником резервного питания, на случай пропадания сети 220 В. Её не обязательно брать на 5 В — достаточно литий-ионного или Ni-MH аккумулятора на 3,6 вольта.

Для корпуса можно задействовать различные материалы — дерево, пластик, металл, либо встроить всю конструкция самодельных часов в готовый промышленный, например от мультиметра, тюнера, радиоприёмника и так далее. Мы сделали из оргстекла, потому что оно легко обрабатывается, позволяет увидеть внутренности, чтоб все видели — эти часы собраны своими руками. И, главное, оно было в наличии:)

Здесь вы сможете найти все необходимые детали предлагаемой конструкции самодельных цифровых часов, в том числе схему, топологию печатной платы, прошивки PIC и

Facebook

Twitter

Вконтакте

Одноклассники

Google+

Набор конструктор часы на микроконтроллере — Секрет Мастера

Автор Master На чтение 5 мин. Опубликовано

Для тренировки навыков пайки своими руками Секрет Мастера рекомендует набор конструктор сборки цифровых часов с будильником. Сердце часов микроконтроллер AT89C2051, индикатор светодиодный из четырех цифр, питание схемы  3 — 6 Вольт, размер платы 52×42 мм. Схема к набору прилагается, на плате также присутствуют все необходимые подсказки и обозначения. Часы имеют режим звуковой индикации нового часа, а также два будильника. Конструктор не комплектуется корпусом и источником питания. Мастер нашел подходящий корпус и обеспечил питание часов от сети 220 Вольт, придав результатам сборки практическую ценность. Смотрите пошаговую инструкцию сборки и настройки электронных часов своими руками.

Как собрать электронные часы своими руками

Электронные часы на микроконтроллере в корпусе и с блоком питания своими руками / Sekretmastera


Watch this video on YouTubeЧасы на микроконтроллере

Деталей в конструкторе немного, но при сборке надо четко следовать схеме и обозначениям на плате. Автор собрал часы в следующей последовательности (смотрите видео):

  1. Установка и припайка светодиодного индикатора. Если у вас есть подходящий корпус, то возможно ножки индикатора и не стоит укорачивать.
  2. Установка и припайка сборки сопротивлений, чтобы избежать неожиданностей, лучше уточнить правильность расположения электрода общего провода на маркировке сборки при помощи тестера.
  3. Припайка панельки микросхемы. Правильно установите ключ панельки. Панельку припаивать рекомендую — не экономьте. Первый экземпляр часов проработал неделю и вышел из строя из-за некачественного контроллера (не повезло). Ремонт заключался в установке нового контроллера часов, что с панелькой было сделать очень просто.
  4. Пайка на плату сопротивления R1 и R2.
  5. Пайка на плату электролитического конденсатора С1.
  6. Пайка конденсаторов С2-С4.
  7. Пайка клемм питания часов.
  8. Пайка звукового индикатора. Соблюдайте полярность!
  9. Пайка транзистора V1. Ключ установки на плпте
  10. Пайка кварцевого резонатора.
  11. Пайка кнопок управления S1 и S2. Контролируйте правильность установки тестером.
  12. На последнем этапе устанавливаем микроконтроллер в панельку.
Схема часовПлата собрана

Зубочисткой механически удаляются остатки флюса. Плата моется ватным тампоном смоченным спиртом или одеколоном. На плату подается напряжение +5 Вольт и проверяется работа схемы.

Настройка часов

Настройка часов осуществляются кнопками S1 и S2. Длительное нажатие на кнопку S1 переводит часы в режим настроек, в котором 9 пунктов. Кнопка S2 также может в обычном режиме работы часов переключать набор цифр показа индикатора: час/минута или минута/секунды. Пункты режима настроек обозначены буквами латинского алфавита от А до I. Настройка значений устанавливаемых в пункте осуществляется кнопкой S2.

Пункт А — установка времени — час;
Пункт B — установка времени — минуты;
Пункт С — включение «ON» или отключение «OFF» почасового сигнала (по умолчанию он включен), время подачи сигнала с 08-00 до 20-00;
Пункт D — включение «ON» или отключение «OFF»первого будильника;
Пункт E — установка часов первого будильника;
Пункт F — установка минут первого будильника;
Пункт G — включение «ON» или отключение «OFF»первого будильника;
Пункт H — установка часов второго будильника;
Пункт I — установка минут второго будильника.

Пункт A настройка часовПункт В настройка минутПункт С настройка индикации часаПункт D включения будильника №1Пункт E настройка часов будильника №1Пункт F настройка минут будильника №1Пункт G включения будильника №2Пункт H настройка часов будильника №2Пункт I настройка минут будильника №2

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

Часы заработали и естественно неплохо, чтобы они приносили пользу. Автор встроил часы в корпус от блока питания, а питание подал от USB зарядки телефона. Последовательность работ смотрите на фото и видео. В качестве корпуса применен корпус блока питания настольной лампы.

Для встраивания платы часов в корпус с платы были удалены клеммы питания и перепаяны на тыльную сторону платы звуковой индикатор и конденсатор С1.  Плата USB зарядки извлечена из корпуса и подключена к контактам вилки и закреплена в нижней крышке нового корпуса термоклеем. Будьте осторожны при работе! В верхней крышке делается прямоугольное отверстие для индикатора и два отверстия для нажатия кнопок S1 и S2. Плата закреплена термоклеем.

Доработка платы часовДоработка платы часовКорпус блока питания — верхняя крышкаКорпус блока питания — нижняя крышкаСетевая вилкаСетевая вилка отделена от трансформатораСетевая вилка отделена от трансформатораВилка зафиксирована термоклеемПлата БП 5 Вольт закреплена в корпусеРазметка отверстиями для вырезания окнаПлата часов закреплена в корпусеЧасы на микроконтроллереЧасы на микроконтроллере

Попытки сделать надежное резервное питание часов удовлетворительных результатов длительного сохранения хода часов не дали. Автор не публикует варианты опробованных схем резервного питания. Рабочий ток схемы порядка 35 мА.

Стоимость конструктора смешная. Покупаем набор по следующей ссылке.

Для продвинутых пользователей и любителей попаять SMD детали рекомендую следующий набор http://shp.pub/5t9sm6.

Спасибо за внимание и успехов в сборке!

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

Схема принципиальная электрическая

В одном устройстве объединено две функции: собственно измерение температуры и времени (часы). Индикация производится попеременно, сменяясь через десять секунд. Для настройки часов используется две кнопки, аналогично простым китайским электронным часам: одна отвечает за выбор параметра, вторая за его изменение. Питается устройство от сети с помощью постоянного стабилизированного источника тока напряжением пять вольт (плата от зарядного устройства телефона).

Датчиком температуры является микросхема DS18B20. Так как в устройстве «Часы-термометр» нет своей батареи, при пропадании питания естественно показания будут сбиваться. И что бы это не явилось причиной какого-нибудь опоздания человека на жизненно важные дела, имеется интересная «фишка» — при подаче питания вместо времени на дисплее будут отображаться прочерки, пока не нажмёшь одну из двух кнопок настройки.

Корпусом самодельного измерителя температуры послужила подходящая коробочка от запонок. В неё была помещена сама плата часов-термометра и плата вытащенная из телефонного зарядника. Датчик DS18B20 сделан выносным и подсоединяется через разъём.

Список необходимых деталей

  • Микроконтроллер Atmega8 — 1шт.
  • Кварц 32768 Гц — 1 шт.
  • Датчик температуры DS18B20 — 1шт.
  • Семи сегментный индикатор(4 — разряда) — 1 шт.
  • Резисторы SMD типоразмера 0805:
  • 620 Ом — 8шт.
  • 0 Ом (перемычка) — 1шт.
  • 4,7 кОм — 1шт.
  • Тактовые кнопки — 2 шт.

Видео работы устройства на Ютуб-канале

Этот вариант часов сделан таким образом, чтобы максимально упростить схему, снизить энергопотребление, и в итоге получить прибор, который легко помещается в кармане. Выбрав миниатюрные аккумуляторы для питания схемы, SMD — монтаж и миниатюрный динамик (например от нерабочего мобильного телефона), Вы можете получить конструкцию, размером чуть больше спичечного коробка.
Применение сверхъяркого индикатора позволяет снизить ток, потребляемый схемой. Снижение тока потребления также достигается в режиме «LoFF» — индикатор погашен, при этом включена только мигающая точка младшего разряда часов.

Индикация
Регулируемая яркость индикаторов позволяет выбрать наиболее комфортное отображение показаний (и опять же снизить энергопотребление).
В часах реализовано 9 режимов индикации. Переход по режимам осуществляется с помощью кнопок «плюс» и «минус». Перед выводом на индикацию самих показаний, на индикаторы выводится короткая подсказка названия режима. Длительность вывода подсказки — одна секунда. Применение кратковременных подсказок позволило достичь хорошей эргономичности часов. При переходах по режимам отображения (которых получилось достаточно много, для такого простого прибора, как обычные часы) не возникает путаницы, и всегда понятно, какие именно показания выведены на индикатор.

Коррекция показаний, выведенных на индикатор включается при нажатии на кнопку «Коррекция». При этом кратковременная подсказка выводится на 1/4 секунды, после чего корректируемое значение начинает мигать с частотой 2 Гц. Корректируются показания кнопками «плюс» и «минус». При длительном нажатии на кнопку, включается режим автоповтора, с заданной частотой. Частоты автоповтора нажатия кнопки составляют: для часов, месяцев и дня недели — 4 Гц; для минут, года и яркости индикатора — 10 Гц; для корректирующего значения — 100 Гц.
Все откорректированные значения, кроме часов, минут и секунд, записываются в EEPROM и восстанавливаются после выключения — включении питания. Секунды при коррекции обнуляются. Из всех режимов, кроме часы-минуты, минуты-секунды и LoFF организован автоматический возврат. Если в течение 10 секунд ни одна из кнопок не нажата, то часы переходят в режим отображения часов — минут.
Нажатием на кнопку «Вкл/Выкл буд.» включается/выключается будильник. Включение будильника подтверждается коротким двухтональным звуком. При включенном будильнике светится точка в младшем разряде индикатора.
В режиме «Corr» на индикатор выведена корректирующая константа, начальное значение которой 5000 микросекунд в секунду. При отставании часов константу увеличиваем на величину отставания, вычисленное в микросекундах за одну секунду. Если часы спешат, то константу уменьшаем по тому же принципу.

Схема

Данные часы с будильником основаны на микросхеме часов реального времени, что позволяет им работать от резервного источника питания при отсутствии основного. Заданное время будильника и режим работы хранится в энергонезависимой памяти микроконтроллера. Режим отображения — 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, то резисторные делители возле дисплея можно убрать — схема станет намного проще.


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

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

Микроконтроллер PIC18F25K22 берёт на себя всю обработку данных и отсчёт времени, а на долю ULN2803A остаётся согласование его выходов со светодиодным индикатором. Небольшая микросхема DS1302 работает как таймер точных секундных сигналов, частота её стабилизирована стандартным кварцевым резонатором 32768 Гц. Это несколько усложняет конструкцию, зато вам не придётся постоянно подстраивать и корректировать время, которое будет неизбежно запаздывать или спешить, если обойтись случайным ненастроенным кварцевым резонатором на несколько МГц. Подобные часы скорее простая игрушка, чем качественный точный хронометр.

При необходимости, датчики температуры могут быть расположены далеко от основного блока — они соединяются с ним трёхпроводным кабелем. В нашем случае один температурный датчик установлен в блок, а другой расположен снаружи, на кабеле длинной около 50 см. Когда пробовали кабель 5 м, то тоже прекрасно функционировало.

Дисплей часов изготовлен из четырех больших светодиодных цифровых индикаторов. Первоначально они были с общим катодом, но изменены на общий анод в финальной версии. Вы можете ставить любые другие, потом просто подберёте токоограничительные резисторы R1-R7 исходя из требуемой яркости. Можно было разместить его на общей, с электронной частью часов, плате, но так гораздо универсальнее — вдруг вы захотите поставить очень большой LED индикатор, чтоб их было видно на дальнем расстоянии. Пример такой конструкции уличных часов есть тут.

Сама электроника запускается от 5 В, но для яркого свечения светодиодов необходимо использовать 12 В. Из сети, питание поступает через понижающий трансформатор адаптер на стабилизатор 7805 , который образует напряжение строго 5 В. Обратите внимание на небольшую зелёную цилиндрическую батарейку — она служит источником резервного питания, на случай пропадания сети 220 В. Её не обязательно брать на 5 В — достаточно литий-ионного или Ni-MH аккумулятора на 3,6 вольта.

Для корпуса можно задействовать различные материалы — дерево, пластик, металл, либо встроить всю конструкция самодельных часов в готовый промышленный, например от мультиметра, тюнера, радиоприёмника и так далее. Мы сделали из оргстекла, потому что оно легко обрабатывается, позволяет увидеть внутренности, чтоб все видели — эти часы собраны своими руками. И, главное, оно было в наличии:)

Здесь вы сможете найти все необходимые детали предлагаемой конструкции самодельных цифровых часов, в том числе схему, топологию печатной платы, прошивки PIC и

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

Проэкт представляет собой часы с таймером, который может быть запрограммирован на включение и на выключение. Я начал его делать так как мне было лень включать и выключать каждый день аквариум. Не стал использовать уже готовые вещи по нескольким причинам — в том числе и потому что планирую добавить автоматическую систему для кормежки рыб.
Схема часов довольно проста, если не сказать очень проста. Главная часть, безусловно — программа на ассемблере. Для программирования я использовал Microchip´s MPASMP, а для рисования схемы — Eagle.

Часы имеют 4 кнопки для:

  • увеличения часов (1)
  • увеличения минут (2)
  • режима программирования включения (3)
  • режима программирования выключения (4)

Часы имеют 4 режима:

  • часы
  • программирование часов
  • программирование включения
  • программирование отключения

Новый режим устанавливается при нажатии на соответствующую кнопку. После того, как кнопка нажата или отпущена новый режим индицируется примерно в течение секунды символами ClOC, Prog, Pron, ProF соответственно. При нажатии кнопки (1) или (2) устанавливается режим программирования часов и часы (кнопка 1) или минуты (кнопка 2) будут увеличиватся каждую секунду. При нажатии кнопки (3) или (4) часы показывают время включения или отключения. Чтобы установить новое время включения/выключения — не отпуская кнопки (3) или (4) следует нажать кнопку (1) или (2). Если нажать вместе кнопки (3) и (4) секунды обнуляются и часы не идут до отпускания этих кнопок — это для установки точного времени. Защита от дребезга контактов — программная задержка на 16 миллисекунд (4 цикла) при нажатии и отпускании. 4 вывода PIC16F628 использованы для динамической индикации 7-сегментных индикаторов и сканирования клавиатуры. Программа работает по прерываниям. До вызова прерывания программа ничего не делает и может быть использована для других целей. Прерывания происходят каждые 4 миллисекунды. Каждый цикл новый 7-сегментный индикатор подключается. Каждый раз, когда проходит секунда вызывается подпрограмма проверки времени включения/выключения реле.

Организовать индикацию прямо с микроконтроллера не хватает выводов, поэтому я использовал дополнительную микросхему — сдвиговый регистр CD4015. Реле и многие детали как транзисторы или диоды могут использованы практически любые того же классa. Я оставил свободными выводы RB0, RB1, RB2 для дальнейшего развития — подключения RS232 и так далее. Система автоматической кормежки большей частью механическая и может забрать много времени и будет добавлена позже.

Замечание: мне заметили что CD4015 имеет всего 1 ма выходной ток, так что для более яркой индикации можно использовать что-либо помощнее. я использовал то, что было под рукой в данный момент.

Скачать прошивку исходник и схему (59 Кб). Загрузок: 377

Автор статьи: Дмитрий Фитисов
Просмотров: 3805

Насколько важен источник тактовой частоты вашего микроконтроллера | Блог

Марк Харрис

|&nbsp Создано: 26 октября 2021 г.

Микроконтроллеры зависят от источника тактового сигнала.Процессор, шина и периферийные устройства используют часы для синхронизации своих операций. Часы определяют, насколько быстро процессор выполняет свои инструкции, поэтому они имеют основополагающее значение для производительности. Но насколько важен источник синхронизации? Имеет ли значение, насколько он точен? Короткий ответ: это зависит… это зависит от того, что делает микроконтроллер и его интерфейсы.

Необходимо принять во внимание два фактора: скорость часов, которая определяет, насколько быстро происходят события, и точность часов, которая определяет постоянство периода между каждым тактом часов и то, как скорость часов может меняться с течением времени.

Процессор микроконтроллера

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

Выборка данных

Тактовый сигнал микроконтроллера будет управлять скоростью преобразования любых аналогово-цифровых операций. Тактовая частота будет определять максимальную частоту дискретизации аналогового сигнала; точность часов будет определять точность частоты дискретизации. Предположим, вы записываете семпл два раза в секунду с отметкой времени. В этом случае не потребуется много времени, чтобы однопроцентная ошибка в частоте часов (не редкость для внутренних генераторов) удалила любую корреляцию между отметкой времени вашего образца и временем, отображаемым на ваших настенных часах.При постоянном смещении источника тактового сигнала на 1% отметка времени вашего образца будет отсутствовать более чем на 14 минут каждый день.

Генерация сигналов

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

Асинхронная последовательная связь

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

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

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

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

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

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

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

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

Внутренние генераторы

Микроконтроллеры

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

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

Внешние генераторы

Источники тактового сигнала для микроконтроллеров бывают двух основных типов: механические резонансные устройства, включающие кристаллы и керамические резонаторы, и пассивные RC-генераторы.

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

Кварцевые генераторы

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

Альтернативным вариантом является кремниевый генератор, основанный на схеме резонатора IC, который прост в реализации с около 0.05% точность. Немного лучше, чем внешняя RC-цепочка, но далеко не так хорошо, как кварцевый генератор. Однако кремниевые генераторы более прочны и надежны, чем кварцевые генераторы, и идеально подходят для условий эксплуатации, в которых устройство может подвергаться сильным механическим вибрациям.

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

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

Заключение

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

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

Тактовая частота микроконтроллера против внутреннего генератора

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

Что нужно знать: 20 МГц звучит как максимальная внешняя xtal частота.Внутренняя — 8МГц (конечно, она индивидуальна для каждого MCU, но это довольно общие значения для многих разных простых MCU). Таким образом, вы можете использовать внутренний осциллятор без каких-либо внешних (что освобождает 2 вывода в качестве бонуса). Минусы: внутренний осциллятор обычно менее точен. Все должно по-прежнему работать нормально. См. техническое описание вашего MCU для более подробной информации.

Еще одним важным моментом является прескалер. Так же поставил предохранители. Прежде чем ваш тактовый сигнал (внешний ИЛИ внутренний) фактически подается в ядро ​​ЦП, прескалер может разделить его.Например, с коэффициентом 4. или 2. или 1 (без деления). Таким образом, внешняя тактовая частота 20 МГц с предделителем, установленным на 2, будет означать, что ваш MCU будет работать на частоте 10 МГц. Если вы не обрабатываете числа и не отправляете данные с высокой (относительно тактовой) скоростью, вы можете работать на более низкой тактовой частоте и потреблять меньше энергии даже при более высокой частоте xtal. ДОБАВИТЬ: предварительный делитель можно применить и к внутренним часам.

Следующий номер точки: напряжение MCU должно совпадать с частотой ядра. Если вы хотите работать на максимальной или близкой к максимальной частоте, вам, вероятно, придется использовать максимальное напряжение.Все эти данные есть в даташите. Микроконтроллеры AVR (такие как atmega328p Arduino) заботятся о часах ПОСЛЕ предварительного делителя. Таким образом, atmega328p @ 16 МГц XTAL @ Prescaler = 1 будет работать на частоте 16 МГц и требует 5 В, а не на 3,3 В. Но atmega328p @ 16MHz XTAL @ Prescaler=4 будет работать на частоте 4MHz и может успешно работать при 3,3V (и, конечно, при 5V — выше работает, ниже нет). Предделитель часто не упоминается в обсуждениях, так как обычно это эффективная тактовая частота после того, как все говорят о предделителе по умолчанию, поскольку все зависит от предварительно масштабированных часов, а не от исходной xtal частоты.Поэтому, когда кто-то говорит «у меня MCU на частоте 8 МГц», это уже означает «тактовая частота ядра после прескалера составляет 8 МГц».

У других производителей микроконтроллеров все может быть (а может и не быть), для этого и предназначен даташит 🙂

тактовый генератор — МикроЭлектроника

3.10 Тактовый генератор

Как видно из рисунка ниже, тактовый сигнал может генерироваться одним из двух встроенных генераторов.

Внешний генератор установлен внутри микроконтроллера и подключен к контактам OSC1 и OSC2.Он называется «внешним», потому что он использует внешнюю схему для тактового сигнала и стабилизации частоты, такую ​​как автономный генератор, кварцевый кристалл, керамический резонатор или цепь резистор-конденсатор. Режим генератора выбирается битами байтов, называемых Config Word, отправляемых во время программирования. Внутренний генератор состоит из двух отдельных внутренних генераторов: HFINTOSC — это высокочастотный внутренний генератор, работающий на частоте 8 МГц. Микроконтроллер может использовать источник тактового сигнала, сгенерированный на этой частоте или после деления в прескалер.LFINTOSC — это низкочастотный внутренний генератор, работающий на частоте 31 кГц. Его источники тактового сигнала используются для сторожевого таймера и включения питания , но его также можно использовать в качестве источника тактового сигнала для работы всего микроконтроллера. Системные часы могут быть выбраны между внешним или внутренним источником часов с помощью бита выбора системных часов (SCS) регистра OSCCON.

ОСККОН Регистр

Регистр OSCCON управляет системными часами и опциями выбора частоты.Он содержит следующие биты: биты выбора частоты (IRCF2, IRCF1, IRCF0), биты состояния частоты (HTS, LTS), биты управления системными часами (OSTA, SCS). IRCF2-0 — биты выбора частоты внутреннего генератора. Скорость делителя зависит от комбинации этих трех битов. Так же определяется тактовая частота внутреннего генератора.
IRCF2 IRCF1 IRCF0 ЧАСТОТА ОСК.
1 1 1 8 МГц HFINTOSC
1 1 0 4 МГц HFINTOSC
1 0 1 2 МГц HFINTOSC
1 0 0 1 МГц HFINTOSC
0 1 1 500 кГц HFINTOSC
0 1 0 250 кГц HFINTOSC
0 0 1 125 кГц HFINTOSC
0 0 0 31 кГц LFINTOSC
OSTS — Тайм-аут запуска генератора Бит состояния указывает, какой источник синхронизации используется в данный момент.Он доступен только для чтения.
  • 1 — Используется внешний тактовый генератор.
  • 0 — Используется один из внутренних тактовых генераторов (HFINTOSC или LFINTOSC).
HTS — HFINTOSC Бит состояния (8 МГц — 125 кГц) показывает, стабильно ли работает высокочастотный внутренний генератор.
  • 1 — HFINTOSC работает стабильно.
  • 0 — HFINTOSC нестабилен.
LTS — LFINTOSC Стабильный бит (31 кГц) указывает, стабильно ли работает низкочастотный внутренний генератор.
  • 1 — LFINTOSC работает стабильно.
  • 0 — LFINTOSC нестабилен.
SCS — бит выбора системных тактовых импульсов определяет, какой генератор должен использоваться в качестве источника тактовых импульсов.
  • 1 — Внутренний генератор используется для системных часов.
  • 0 — Внешний генератор используется для системных часов. Режим генератора устанавливается битами в Config Word , записываемыми в память микроконтроллера в процессе программирования.

РЕЖИМЫ ВНЕШНИХ ЧАСОВ

Внешний генератор может быть настроен на работу в одном из нескольких режимов, что позволяет ему работать на разных скоростях и использовать разные компоненты для стабилизации частоты.Режим работы выбирается в процессе записи программы в микроконтроллер. Прежде всего, необходимо активировать программу на ПК, чтобы использовать ее для программирования. В данном случае это программа PICflash . Нажмите на поле осциллятора и выберите один осциллятор из выпадающего списка. Соответствующие биты будут установлены автоматически, став частью нескольких байтов, которые вместе образуют Config Word . В процессе программирования микроконтроллера эти байты слова конфигурации записываются в ПЗУ микроконтроллера и сохраняются в специальных регистрах, недоступных пользователю.На основе этих битов микроконтроллер «знает», что делать, хотя это явно не указано в программе. Режим работы выбирается после процесса написания и компиляции программы
ВНЕШНИЙ ГЕНЕРАТОР В РЕЖИМЕ ЕС
Режим внешней синхронизации (EC) использует внешний генератор в качестве источника синхронизации. Максимальная частота этих часов ограничена 20 МГц. Преимущества внешнего генератора при настройке на работу в режиме ЕС:
  • Независимый внешний источник синхронизации подключен к входу OSC1, а OSC2 доступен как ввод-вывод общего назначения;
  • Возможна синхронизация работы микроконтроллера с остальной бортовой электроникой;
  • В этом режиме микроконтроллер начинает работу сразу после включения питания.Для стабилизации частоты не требуется временная задержка; и
  • Временное отключение внешнего источника синхронизации приводит к остановке работы устройства, при этом все данные остаются нетронутыми. После перезапуска внешних часов устройство продолжает работать как ни в чем не бывало.
ВНЕШНИЙ ГЕНЕРАТОР В РЕЖИМЕ LP, XT ИЛИ HS
В режимах LP, XT и HS в качестве источника тактового сигнала используется внешний генератор, частота которого определяется кварцевыми или керамическими резонаторами, подключенными к выводам OSC1 и OSC2.В зависимости от особенностей используемого компонента выберите один из следующих режимов:
  • Режим LP — (Низкая мощность) используется только для низкочастотного кварцевого кристалла. Этот режим предназначен для управления только кварцевыми кристаллами с частотой 32,768 кГц, которые обычно встраиваются в кварцевые часы. Их легко узнать по небольшим размерам и характерной цилиндрической форме. Потребляемый ток — наименьший из трех режимов.
  • Режим XT используется для кварцевых резонаторов промежуточной частоты до 8 МГц.Потребляемый ток является средним из трех режимов.
  • Режим HS — (High Speed) используется для высокочастотных кварцевых кристаллов свыше 8 МГц. Потребляемый ток самый высокий из трех режимов.
КЕРАМИЧЕСКИЕ РЕЗОНАТОРЫ В РЕЖИМЕ XT ИЛИ HS
Керамические резонаторы по своим свойствам аналогичны кристаллам кварца и поэтому подключаются таким же образом. В отличие от кристаллов кварца, они дешевле, а генераторы на их основе имеют несколько худшие характеристики.Они используются для тактовых частот в диапазоне от 100 кГц до 20 МГц.
ВНЕШНИЙ ГЕНЕРАТОР В РЕЖИМАХ RC И RCIO
Преимуществ в использовании элементов для стабилизации частоты, безусловно, много, но иногда они действительно не нужны. В большинстве случаев генератор может работать на частотах, которые точно не определены, поэтому встраивание таких элементов является пустой тратой денег. Самым простым и дешевым решением в таких ситуациях является использование одного резистора и одного конденсатора для работы генератора.Есть два режима:

Режим дистанционного управления. Если внешний генератор сконфигурирован для работы в RC-режиме, вывод OSC1 должен быть подключен к RC-цепи, как показано на рисунке справа. Вывод OSC2 выводит частоту RC-генератора, деленную на 4. Этот сигнал может использоваться для калибровки, синхронизации или других приложений.

Режим RCIO. Аналогично, RC-цепь подключается к контакту OSC1. На этот раз доступный вывод OSC2 используется в качестве дополнительного вывода ввода-вывода общего назначения.

В обоих случаях рекомендуется использовать компоненты, как показано на рисунке. Частота такого осциллятора рассчитывается по формуле f = 1/T, в которой:
  • f = частота [Гц];
  • T = R * C = постоянная времени [с];
  • R = сопротивление резистора [Ом]; и
  • C = емкость конденсатора [Ф].

РЕЖИМЫ ВНУТРЕННИХ ЧАСОВ

Схема внутреннего генератора состоит из двух отдельных генераторов, которые можно выбрать в качестве источника системного тактового сигнала: Генератор HFINTOSC откалиброван на заводе и работает на частоте 8 МГц.Его частота может быть установлена ​​пользователем через программное обеспечение с помощью битов регистра OSCTUNE. Генератор LFINTOSC не откалиброван на заводе и работает на частоте 31 кГц. Как и внешний генератор, внутренний тоже может работать в нескольких режимах. Режим работы выбирается так же, как и с внешним генератором — битами регистра Config Word . Другими словами, все выполняется в программном обеспечении ПК до записи программы в микроконтроллер.

ВНУТРЕННИЙ ГЕНЕРАТОР В РЕЖИМЕ INTOSC В этом режиме вывод OSC1 доступен как ввод-вывод общего назначения, а вывод OSC2 выводит выбранную частоту внутреннего генератора, деленную на 4.

ВНУТРЕННИЙ ГЕНЕРАТОР В РЕЖИМЕ INTOSCIO В этом режиме оба контакта доступны как ввод-вывод общего назначения.

НАСТРОЙКИ ВНУТРЕННЕГО ГЕНЕРАТОРА

Внутренний генератор состоит из двух отдельных цепей. 1. Высокочастотный внутренний генератор HFINTOSC подключен к постделителю (делителю частоты).Он откалиброван на заводе и работает на частоте 8 МГц. Используя постделитель, этот осциллятор может выводить источники синхронизации на одной из семи частот. Выбор частоты осуществляется программно с помощью контактов IRCF2, IRCF1 и IRCF0 регистра OSCCON. HFINTOSC активируется путем выбора одной из семи частот (от 8 МГц до 125 кГц) и установки бита источника системных тактовых импульсов (SCS) в регистре OSCCON. Как видно на рисунке ниже, все выполняется с использованием битов регистра OSCCON.2. Генератор низких частот LFINTOSC не калиброван и работает на частоте 31 кГц. Он включается выбором этой частоты (биты регистра OSCCON) и установкой бита SCS того же регистра.

РЕЖИМ ЗАПУСКА ДВУХСКОРОСТНЫХ ЧАСОВ

Двухскоростной режим запуска используется для обеспечения дополнительной экономии энергии, когда микроконтроллер работает в спящем режиме. О чем это все? При настройке на работу в режимах LP, XT или HS внешний генератор будет отключаться при переходе в спящий режим для снижения общего энергопотребления устройства.Когда условия для пробуждения соблюдены, микроконтроллер не сразу начнет работать, потому что ему нужно дождаться стабилизации частоты тактового сигнала. Такая задержка длится ровно 1024 импульса, после чего микроконтроллер переходит к выполнению программы. Обычно бывает так, что выполняется всего несколько инструкций, прежде чем микроконтроллер возвращается в спящий режим . Это означает, что большая часть времени, а также большая часть энергии, полученной от батарей, тратится впустую. Проблема решается использованием внутреннего генератора для выполнения программы, в то время как идет счет этих 1024 импульсов.Как только частота внешнего генератора станет стабильной, он автоматически возьмет на себя «ведущую роль». Весь процесс активируется установкой одного бита слова конфигурации. Для программирования микроконтроллера необходимо выбрать в программном обеспечении опцию Int-Ext Switchover .

АВАРИЙНЫЙ МОНИТОР ЧАСОВ

Как следует из названия, Fail-Safe Clock Monitor (FSCM) отслеживает работу внешнего генератора и позволяет микроконтроллеру продолжать выполнение программы, даже если внешний генератор по какой-либо причине выходит из строя.В этом случае его роль берет на себя внутренний осциллятор. Отказоустойчивый монитор часов обнаруживает сбой, сравнивая внутренние и внешние источники часов. Если для поступления тактового сигнала внешнего генератора требуется более 2 мс, источник тактового сигнала будет автоматически переключен. Таким образом, внутренний генератор продолжит работу, управляемую битами регистра OSCCON. Когда бит OSFIE в регистре PIE2 установлен, будет сгенерировано прерывание. Системные часы будут продолжать получать внутренние часы до тех пор, пока устройство не перезапустит внешний генератор и не вернется к внешнему режиму работы.Точно так же этот модуль включается изменением конфигурационного слова непосредственно перед началом процесса программирования чипа. На этот раз это делается путем выбора опции Fail-Safe Clock Monitor.

OSCTUNE Регистр

Изменения в регистре OSCTUNE влияют на частоту HFINTOSC, но не на частоту LFINTOSC. Во время работы нет признаков того, что произошел сдвиг частоты. TUN4 — TUN0 Биты настройки частоты. Комбинируя эти пять бит, частота генератора 8 МГц сдвигается.Таким образом, сдвигаются и частоты, полученные его делением в постскейлере.
ТУН4 ТУН3 ТУН2 ТУН1 ТУН0 ЧАСТОТА
0 1 1 1 1 Максимальный
0 1 1 1 0
0 1 1 0 1
0 0 0 0 1
0 0 0 0 0 Калиброванный
1 1 1 1 1
1 0 0 1 0
1 0 0 0 1
1 0 0 0 0 Минимальный
Eeprom — это отдельный сегмент памяти, не являющийся частью памяти программ (ПЗУ) или памяти данных (ОЗУ).Несмотря на то, что к этим ячейкам памяти не так легко и быстро получить доступ, как к другим регистрам, их назначение незаменимо, поскольку данные EEPROM постоянно сохраняются даже после отключения питания и могут быть изменены в любой момент. Эти исключительные свойства делают каждый байт EEPROM ценным.

Цифровые часы, но без микроконтроллера [Hardcore]

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

Это действительно сложный проект, не из-за того, как работает логика часов, а из-за того, как мы собираемся собрать схему со всеми этими компонентами вместе на компактной перфорированной плате.

Этот проект был вдохновлен этой инструкцией (автор: hp07) еще в 2018 году, которую было бы безумно сложно построить на перфорированной плате из-за количества соединений и используемых компонентов.Итак, я немного покопался в Интернете, чтобы уменьшить сложность, но все же сделать его довольно простым и трудным для создания перфоборда.

Другие ссылки: scopionz, danyk

Расходные материалы:

Это список продуктов, которые помогут вам с легкостью выполнить этот проект

(партнерская ссылка)

Шаг 1: Концепция времени [но для NOOBS]

Во-первых, нам нужно понять ответы на несколько вопросов, прежде чем мы сможем приступить к созданию этих цифровых часов! как мы будем следить за временем и как мы можем определить само время?

Решение этой проблемы довольно простое (Если представить себя мятежным подростком и просто притвориться, что за век физики ни разу не почесали об этом затылка).Способ, которым мы собираемся подойти к этому решению, может быть нелогичным, поскольку сначала мы увидим, как мы можем отслеживать время, а затем определить время.

Рассматривайте часы как счетчик, который может считать числа до 0-60 и 0-24 (давайте пока будем беспокоиться только о 24-часовом формате), всякий раз, когда это значение превышает его, просто переносите на следующее более высокое обозначение [Секунды -> Минуты ->Часы ->Дни->Месяцы->Годы ].

Но здесь мы упускаем важный момент. Когда мы должны увеличить значение этого счетчика? Давайте взглянем на простое физическое определение

. «Второе определяется путем принятия фиксированного числового значения частоты цезия ∆ν, невозмущенной частоты сверхтонкого перехода в основном состоянии атома цезия 133, равной 9 192 631 770, когда выражается в единицах Гц, что равно с-1.»

Если вы поняли определение, вам, вероятно, следует заняться теоретической физикой и бросить электронику!

Во всяком случае, для простоты мы просто предположим, что это время, необходимое для того, чтобы атом цезия колебался 9 миллиардов раз. Теперь, когда вы увеличиваете счетчик каждую секунду или время, затраченное на то, чтобы атом цезия вибрировал 9 миллиардов раз, у вас есть что-то вроде часов! минуты переходят в часы, когда они достигают 60 (и часы сбрасываются на 24).Это даст нам полностью функциональные часы, которые мы ожидаем.

Теперь давайте посмотрим, как мы можем воплотить теорию в жизнь с помощью магии чистой электроники!

Шаг 2. Семисегментный дисплей

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

Существует 2 разновидности этих 7-сегментных дисплеев.

ОБЩИЙ КАТОД: Все отрицательные клеммы светодиода подключаются к общей точке, а затем эта общая точка подключается к земле (GND). Теперь, чтобы включить любую часть сегмента, на соответствующий контакт +ve этого сегмента подается напряжение +ve.

КАТОД АНОД: Все плюсовые клеммы светодиода подключаются к общей точке, а затем эта общая точка подключается к VCC. Теперь, чтобы включить любую часть сегмента, к соответствующему контакту этого сегмента подается отрицательное напряжение.

Для нашего приложения мы будем использовать версию с общим катодом 7-сегментного дисплея, потому что цифровая ИС, которую мы будем использовать, будет выводить ВЫСОКИЙ сигнал (+ve сигнал).

Каждый сегмент этого дисплея назван от A до G по часовой стрелке, а точка (или точка) на дисплее помечена как «p», запомните сегменты с соответствующими им буквами, которые будут удобны при подключении к цифровые ИС.

Шаг 3. Размещение семисегментного дисплея

Этот шаг будет немного сложным, потому что определить точный размер перфорированной платы довольно сложно, и вы можете ее не найти.Если это так, вы можете объединить 2 перфокарты, чтобы сделать одну большую.

Разместить 7-сегментный дисплей очень просто, просто разместите дисплей равномерно с правильным интервалом, чтобы можно было различать секунды, минуты и часы (расположение светодиода см. на рисунке).

Если вы уже заметили, что я использую несколько резисторов по 100 Ом для каждого контакта дисплея, это исключительно для эстетики, и нет необходимости использовать столько резисторов. Если вы можете поместить резистор 470 Ом между общим контактом 7-сегментного дисплея и землей, этого должно быть достаточно.(Эти резисторы используются для ограничения тока, проходящего через светодиод)

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

При сборке этой схемы я обнаружил классный трюк с 7-сегментным дисплеем: в любой момент по ошибке, если вы перевернули 7-сегментный дисплей вверх дном, вам не нужно полностью выпаивать дисплей и перепаивать заново.Каждый контакт останется прежним, за исключением контакта G и контакта P, просто добавив простую перемычку, вы можете решить проблему. (Посмотрите на последние 2 изображения, где я использовал зеленую перемычку, чтобы продемонстрировать эту проблему).

Шаг 4. Счетчик

В шаге 1 мы говорили о том, как мы можем отслеживать время с помощью счетчиков, и именно это мы собираемся реализовать на этом шаге с помощью электроники.

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

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

IC 4026. Счетчик с 7-сегментным дисплеем. Он подсчитывает количество тактовых импульсов или количество циклов включения и выключения на контакте 1 и отображает десятичное значение от 0 до 9 на 7-сегментном дисплее.

Схема для этого счетчика очень проста, достаточно подключить контакты A, B, C, D, E, F, G 7-сегментного дисплея к контактам 10, 12, 13, 9, 11, 6, 7, 8 микросхемы IC 4026, и для проверки этой схемы вы можете использовать переключатель между контактом 1 и +5 В, как показано на принципиальной схеме. С помощью этого переключателя мы можем вручную увеличивать счетчик от 0 до 9.

Шаг 5. Размещение IC 4026 [счетчик]

Если вы можете успешно построить один счетчик, который может считать от 0 до 9, то остальная часть схемы просто копирует те же самые 4026 схем еще 5 раз. Но при этом будет немного изменений в часах, сбросе и выводе выполнения (CO) микросхемы.

Чтобы упростить задачу, сконцентрируйтесь на построении соединения между семисегментным дисплеем и семисегментным счетчиком, постарайтесь использовать как можно меньше проводов, чтобы избежать путаницы в соединениях и затруднений при отладке в дальнейшем.Итак, используйте одножильный медный провод для создания дорожек/соединений между микросхемой и дисплеем. Наконец, подключите VCC и землю к шине питания, которая проходит между резисторами и ниже IC (вы можете видеть, что принципиальная схема не очень совпадает с часами, которые я сделал, потому что резисторы, которые включены последовательно, совершенно не нужны). и это просто для красоты, просто замените один резистор 470 Ом на катодной стороне 7-сегментного дисплея).

[Попробуйте использовать цветовой код, чтобы потом все было проще]

Шаг 6: Сигнал часов

Когда дело доходит до цифровых цепей, есть только 2 состояния ВЫСОКИЙ или НИЗКИЙ (Двоичный: 0 или 1).Это мы можем связать с переключателем, когда переключатель ВКЛ. , мы можем сказать, что это ВЫСОКИЙ логический уровень, а когда переключатель повернут ВЫКЛ. , мы можем сказать, что это логический НИЗКИЙ уровень . Если вы можете включать и выключать переключатель с постоянной синхронизацией между включением и выключением, вы можете генерировать прямоугольный сигнал.

Теперь время, необходимое для одновременного создания сигналов высокого и низкого уровня, называется Период времени . Если вы можете включить переключатель на 0,5 секунды и выключить переключатель на 0.5сек, то период времени этого сигнала будет 1секунда. Точно так же количество раз, когда переключатель включается и выключается за секунд , называется Частота .

[Пример: 4 Гц -> 4 раза включить и 4 раза выключить]

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

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

Шаг 7. Выбор схемы синхронизации

Существует множество способов построить генератор тактовых импульсов. Но вот несколько причин, по которым я использовал микросхему таймера 555, и несколько причин, по которым вам не следует этого делать.

Преимущество

  • Схема очень проста (удобна для начинающих)
  • Занимает очень мало места
  • Легко регулируется тактовая частота
  • Может работать в широком диапазоне напряжения (Не требуется для нашей схемы цифровых часов)

Недостаток

  • Синхронизация часов неточна
  • На тактовый сигнал может серьезно повлиять температура/влажность Кварцевый генератор, частота деления

    Шаг 8: Размещение схемы часов

    Разместите схему часов точно под секундной частью цифровых часов, это упростит соединение между IC 4026 и IC 555.

    На тот момент было совершенно бесполезно фотографировать после каждой цепи, так как схемы очень сложные, с кучей проводов, идущих в разные стороны. Итак, просто создайте схему часов отдельно, не беспокоясь об остальной части схемы, и как только это будет сделано, просто подключите выход (вывод 3) микросхемы таймера 555 к выводу часов микросхемы 4026.

    Шаг 9: Переключение/инкрементирование Логика

    На предыдущем шаге мы на 3/4 закончили со схемой, теперь осталось выяснить, как сбросить счетчик, когда он достигает 60 и 24.

    Решение простое, чтобы понять, достигли ли часы 60, рассмотрите 2-й семисегментный дисплей и обратите внимание на сегменты E, F, G. Эти 3 сегмента загорятся только тогда, когда они достигнут 6 или больше 6. Таким образом , с этим мы можем выяснить, когда наши секунд достигнут 60. Точно так же мы можем взять часовую часть схемы, Здесь загораются сегменты D, E одного 7-сегментного дисплея и сегмент F другого дисплея только когда это 24 или больше 24 (с этой похожей логикой вы можете вычислить 12 часов).

    [Быстрое обновление -> логический элемент И выдает ВЫСОКИЙ сигнал, когда все входные данные имеют ВЫСОКИЙ уровень или выходной сигнал будет НИЗКИМ.]

    Чтобы использовать это как условие, мы будем использовать логический элемент И с 3 входами. Таким образом, всякий раз, когда мы обнаруживаем, что 3 сегмента дисплея загораются, логический элемент И будет выдавать ВЫСОКИЙ сигнал, далее мы можем использовать этот высокий сигнал для сброса одного счетчика и увеличения следующего счетчика. Так совпало, что всего с одной микросхемой[7411] мы можем добавить эту логику для часов, минут и секунд.

    Шаг 10. Размещение логического элемента IC 7411

    Может быть очень сложно понять, какой провод куда подключается, но это намного проще, если вы знаете логику и просто следуете электрической схеме.Диод в схеме используется для разделения IC серии 40xx (CMOS) и IC серии 74xx (TTL), а резистор 10k действует как понижающий резистор для сброса (PIN 15) и часов (PIN 1).

    Поместите микросхему точно между платой, где она как схема часов с одной стороны, а другая оставлена ​​для кнопок для регулировки времени.

    Шаг 11. Цепь устранения дребезга

    Отскок нескольких сигналов является наиболее распространенной проблемой, с которой мы сталкиваемся при использовании кнопок. Когда вы нажмете кнопку один раз, будет сгенерировано несколько импульсов из-за действия механической пружины внутри кнопки.Это вызовет много проблем, когда вы попытаетесь настроить время! Когда вы пытаетесь установить значение 5, из-за нескольких триггеров счетчик может выйти за пределы 6-7.

    Это довольно легко решить, и схема, используемая для устранения этого эффекта дребезга, называется схемой устранения дребезга, но в моей схеме я определенно усложнил ситуацию, используя микросхему триггера Шмитта [7414] и множество других компонентов. . Поэтому я обновил схему, которая может легко устранить этот эффект подпрыгивания, просто используя RC-цепь.

    Существует несколько способов удаления эффекта устранения дребезга, вы можете выбрать тот, который вам удобен.

    Различные способы устранения дребезга цепи.

    Шаг 12. Размещение цепи устранения дребезга

    Кнопки подключены к выводу часов и минут, а диод добавлен между выводом сброса предыдущей ИС и выводом часов текущей ИС, чтобы избежать сброса минут или секунд при нажатии кнопки.

    Чтобы устранить усилие отскока, намного проще использовать RC-цепь, состоящую из резистора 10 кОм и конденсатора 1 мкФ, как показано на схеме.Это отфильтрует несколько триггеров, вызванных кнопкой, о которых мы говорили на предыдущем шаге.

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

    Шаг 13: Заключительные мысли!

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

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

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

    I/SN — микросхема, 8-битный микроконтроллер, часы/счетчик реального времени

    PIC16LF627A-I/P — 8-битный микроконтроллер с 18 контактами CMOS

    18-контактный микроконтроллер на основе флэш-памяти, 8-битный CMOS-микроконтроллер с нановаттной технологией, 124-байтная EEPROM, от 2,0 В до 5,5 В,

    Количество Цена за единицу
    1 €3.95
    10 €3.75
    50 €3.56

    18-контактный микроконтроллер на основе флэш-памяти, 8-битный CMOS-микроконтроллер с нановаттной технологией, 124-байтная EEPROM, от 2,0 В до 5,5 В,

    В наличии 50 предметов

    доставка ок.5 — 7 дней

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

    с использованием DS1307

    Цифровые настенные, настольные и настольные часы со стрелкой или ЖК-дисплеем легко доступны на рынке. Здесь мы представляем часы на основе микроконтроллера с использованием AT89C2051. Дополнительной особенностью часов является то, что отображение времени видно даже в темноте.

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

    На рис. 1 показана схема часов на базе микроконтроллера.Он состоит из микроконтроллера AT89C2051 (IC1), инвертирующего буфера ULN2003 (IC2), часов реального времени (RTC) DS1307 (IC3), регулятора 7805 (IC4), неинвертирующего драйвера источника UDN2982 (IC5) и нескольких дискретных компонентов.

    Прототип часов на базе микроконтроллера

    Сердцем часов является микроконтроллер AT89C2051. Это 8-разрядный микроконтроллер с 2 КБ программируемой и стираемой флэш-памяти (PERROM), 128 байт ОЗУ, 15 линий ввода/вывода (I/O), два 16-разрядных таймера/счетчика, пятивекторная двойка. Архитектура прерываний, полнодуплексный последовательный порт, прецизионный аналоговый компаратор, встроенный генератор и схема синхронизации.

    Контакты порта P1.7 вниз через P1.1 микроконтроллера подтянуты резисторной сетью RNW1 10 кОм и подключены к входным контактам с 1 по 7 инвертирующего буфера IC2, соответственно, для предоставления данных сегмента для семисегментного дисплея. На дисплее отображается время в формате «час.минута». Мигающая десятичная точка (dp) на DIS3 указывает секунды. Десятичные точки для DIS1 и DIS2 здесь не используются.

    Выбор четырех семисегментных индикаторов осуществляется контактами порта P3.7, P3.4, P3.5 и P1.0 микроконтроллера. Эти контакты управляют четырьмя неинвертирующими буферами драйвера IC5, чтобы обеспечить сигнал включения дисплея на вывод с общим анодом (вывод 3 или вывод 8) DIS1-DIS4 соответственно. Если на UDN2982 напрямую подается нерегулируемое питание 9 В, он может поддерживать семисегментные дисплеи даже большего размера (см. рис. 1). Микроконтроллер обеспечивает данные сегмента и сигнал разрешения отображения одновременно в режиме мультиплексирования с временным разделением для отображения определенного числа на семисегментном дисплее.Данные сегмента и сигнал разрешения отображения для отображения обновляются каждые четыре миллисекунды, поэтому отображение кажется непрерывным.

    Переключатель S1 используется для ручного сброса микроконтроллера, а сигнал сброса микроконтроллера при включении питания получается комбинацией конденсатора C3 и резистора R2. Кристалл 11,0592 МГц используется для генерации тактовой частоты для микроконтроллера. Когда наступает время будильника, контакт порта P3.3 подает сигнал звуковой индикации на базу транзистора T1.Транзистор Т1 открыт, и в течение одной минуты звучит пьезозуммер.

    Временные входы генерируются RTC DS1307. Это маломощные десятичные часы/календарь реального времени с полным двоичным кодированием, имеющие 56 байтов энергонезависимой статической памяти с произвольным доступом (ОЗУ). Адрес и данные передаются последовательно по двухпроводной двунаправленной шине. Часы/календарь предоставляют информацию о секундах, минутах, часах, дне, дате, месяце и году. Подключение батареи к контакту 3 обеспечивает резервное питание от батареи. Батарейка (CR2032) работает два-три года.

    Дисплей и сигнализация управляются микроконтроллером AT89C2051. Передача данных между микроконтроллером AT89C2051 и RTC осуществляется по двум проводам (которые образуют шину I2C), один из которых служит линией синхронизации (SCL), а другой — линией данных (SDA). Четыре подпрограммы, необходимые для передачи данных, — это условие запуска отправки, условие остановки отправки, чтение байта и запись байта. Используя эти подпрограммы, время суток может быть записано во внутренние регистры RTC по адресам от 00H до 06H (см. техническое описание).Адрес управляющего регистра 07H. Если он записан с контрольным словом 10, прямоугольная волна 1 Гц доступна с контакта 7 RTC. Импульсный выход на контакте 7 управляет контактом 5 (dp) DIS3, который мигает каждую секунду.

    Рис. 1: Схема часов на микроконтроллере с использованием DS1307Рис. 2: Конфигурация контактов 7805 и BC547

    . RTC управляется внешним кристаллом 32,768 кГц. Батарея 3 В подключена к выводу 3 вместе с конденсатором 1 мкФ для резервного питания. Контакты 5 и 6 подтягиваются до 5В резисторами R5 и R4 и подключаются к контактам P3.1 и 3.0 микроконтроллера, соответственно, для последовательной связи между RTC и микроконтроллером.

    Чтобы получить питание для схемы, сеть переменного тока 230 В, 50 Гц понижается трансформатором X1, чтобы обеспечить вторичный выход 9 В, 500 мА. Выход трансформатора выпрямляется двухполупериодным мостовым выпрямителем, состоящим из диодов D1-D4, фильтруется конденсатором C1 и регулируется микросхемой IC 7805 (IC4). Конденсатор C2 обходит пульсации, присутствующие на регулируемом выходе. LED1 действует как индикатор питания.Резистор R1 действует как ограничитель тока для LED1.

    Односторонняя печатная плата реального размера для микроконтроллерных часов с использованием DS1307 показана на рис. 3, а расположение ее компонентов — на рис. 4.

    Установка текущего времени и времени будильника

    Чтобы установить время будильника, нажмите переключатель S2, подключенный к контакту P3.2 микроконтроллера, и удерживайте его, пока дисплей не изменится и не достигнет нужного времени будильника, скажем, 7:30. Теперь на мгновение подключите полюс переключателя SPDT S3 к Vcc (что делает контакт P3.3 микроконтроллера высокий) и вернуть его в исходное положение. Сразу же звучит будильник на минуту. Таким образом, время будильника установлено на 7:30.

    Чтобы установить текущее время, удерживайте переключатель S2 нажатым до тех пор, пока на дисплее времени не появится текущее время. Отпустите ее, когда будет установлено текущее время.

    После того, как время установлено и часы работают, нет необходимости снова устанавливать время даже после отключения цепи. Это связано с тем, что RTC работает от 3-вольтовой батареи, подключенной к контакту 3.

    Рис. 3: Односторонняя печатная плата для часов на базе микроконтроллера с использованием DS1307Рис. 4: Компоновка компонентов для печатной платы

    Загрузить PDF-файлы с компоновкой печатных плат и компонентов: нажмите здесь

    Программное обеспечение

    Исходный код написан на языке ассемблера и собран с использованием кросс-ассемблера (ASM51). Он хорошо прокомментирован и прост для понимания.

    Программа использует внутренний Timer0 микроконтроллера для периодического вывода данных на светодиодные индикаторы. Timer0 запрограммирован как 16-битный таймер.Таймер начинается с F0FFH и переполняется в FFFFH. При каждом переполнении активируется его функция прерывания. Процедура обслуживания прерывания обновляет дисплей. Для этого данные минут и часов считываются с RTC и отображаются на семисегментном дисплее.

    Для установки времени, когда переключатель S2 нажат, время увеличивается и сохраняется в RTC. Установите время будильника с помощью переключателя S2 в сочетании с переключателем S3. Установленное время хранится в RTC в двух ячейках ОЗУ. Каждый раз, когда время на часах изменяется, оно сравнивается с сохраненным значением времени будильника, и если оба совпадают, контакт 7 микроконтроллера становится высоким.Транзистор T1 проводит, а пьезозуммер PZ1 звучит в течение одной минуты.

    Скачать исходный код: нажмите здесь

    Вам также могут понравиться другие схемы


    Первоначально проект был опубликован в сентябре 2012 года и недавно был обновлен.

    Схема часов 8051 | 8051 Микроконтроллер

    Схема часов 8051.

    Микросхема 8051 имеет встроенные выводы генератора XTAL1 и XTAL2. предназначены для подключения резонансной сети к кварцевому генератору диапазон частот от 1 МГц до 24 МГц.

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

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

    Тактовая частота & устанавливает наименьшую интервал времени внутри микроконтроллера, называемый импульсом, p, time. минимальный интервал времени для выполнения любой простой инструкции или части сложная инструкция, однако, представляет собой машинный цикл. Машинный цикл составляется из шести штатов. Состояние – это основной интервал времени для дискретных операций микроконтроллер, такой как выборка при кодировании, декодирование байтов, кодирование, выполнение кодирование или запись байта данных. Импульсы генератора определяют каждое состояние.

    Для обучения программе может потребоваться один, два или четыре выполняемый машинный цикл в зависимости от типа инструкции.Инструкции извлекаются и выполняются микроконтроллером автоматически, начиная с инструкции, расположенной в ПЗУ по адресу ooooh в момент времени сначала сбрасывается микроконтроллер.

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



    T (инструкция)   =     c * 12d                  .

    Кристалл частота


    12 МГц кристалл дает удобное время 1 микросекунда за цикл. Ан Кристаллическая частота 11,0592 МГц 921,6 килогерц, которую можно разделить поровну на стандартные скорости передачи данных 19200, 9600, 4800, 2400, 1200 и 300 бод ХЗ.

    8051 тактовая частота, 8051 тактовая схема, 8051 тактовый цикл на инструкцию, источник тактового сигнала 8051, код c тактового сигнала 8051, тактовый сигнал 8051 c, тактовый сигнал 8051 скорость, сборка часов 8051, калькулятор часов 8051, генерация часов 8051, часы 8051, цифровые часы 8051 в сборе, цифровые часы 8051 в сборе, 8051 будильник часы, цифровые часы с использованием 8051 и 7-сегментного дисплея, цифровые часы с использованием 8051 и ds1307, цифровые часы с использованием 8051 и ЖК-дисплея, цифровые часы с использованием 8051 и rtc, цифровые часы с кодом сборки 8051, цифровые часы с кодом сборки 8051, цифровые часы на основе 8051, часы на основе 8051, код часов 8051, тактовый цикл 8051, цифровые тактовая схема 8051, пропеллерные часы com 8051, последовательный делитель тактовых импульсов 8051, 8051 цифровые часы, 8051 цифровые часы с будильником, электронные часы 8051 7 сегментов, 8051 цифровые часы с ЖК-дисплеем, проекты цифровых часов 8051, цифровые часы 8051 с будильником с использованием ds1307, языка ассемблера цифровых часов 8051, внешних часов 8051, цифровых часы с использованием 8051 efy, тактовая частота микроконтроллера 8051, тактовая схема для 8051, тактовый генератор 8051, часы GPS 8051, часы в 8051, тактовая частота в Микроконтроллер 8051, тактовый цикл в 8051, тактовая схема в 8051, цифровые часы ic 8051, системные часы в 8051, часы реального времени, взаимодействующие с 8051, в реальном времени часы в 8051, осциллятор и часы в 8051, тактовый цикл инструкции 8051, цифровой ЖК-часы 8051, светодиодные часы 8051, цифровые часы 8051, микроконтроллер, пропеллер часы 8051 микроконтроллер, часы реального времени 8051 микроконтроллер, тактовая частота микроконтроллера 8051, цифровые часы на микроконтроллере 8051 pdf, пропеллер часы на микроконтроллере 8051 pdf, будильник на микроконтроллере 8051, цифровые часы с микроконтроллером 8051 (at89c51) и ds12c887, цифровые часы с использованием Микроконтроллер 8051 ppt, тактовая частота 8051, тактовая частота 8051 микроконтроллер, схема часов 8051, часы проекта 8051, 8051 часов в инструкция, будильник 8051 программа, электронные часы проект 8051, пропеллер часы 8051, цифровые часы с использованием 8051 pdf, программа часов реального времени 8051, 8051 проект пропеллерных часов, программирование пропеллерных часов 8051, часы 8051 rtc, цифровые часы с использованием отчета 8051, тактовая частота 8051, тактовый сигнал 8051, цифровые часы Исходный код 8051, тактовая частота Intel 8051, системные часы 8051, цифровые часы 8051 учебник, таймер часов 8051, учебник пропеллерных часов 8051, часы с использованием 8051, часы с использованием микроконтроллера 8051, пропеллерные часы с использованием 8051, пропеллерные часы с использованием микроконтроллер 8051, пропеллерные часы с использованием 8051 pdf, будильник с использованием 8051, пропеллер часы с кодом 8051, цифровые часы с кодом 8051, часы с кодом 8051, пропеллер часы с 8051, программирование часов с 8051, часы реального времени с 8051, настоящие часы с микроконтроллером 8051, цифровые часы с использованием 8051 с rtc, цифровые часы с использованием 8051 с ЖК-дисплеем, 7-сегментные часы с использованием 8051,

    .

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

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