Часы с включением нагрузки схема на pic16f84: Простые цифровые часы на PIC16F84A

Часы, термометр, таймер управления освещением цветов

Контроллер собран на микропроцессоре PIC16F84A. Измеряет температуру и выводит ее на индикатор. Включает и выключает нагрузку (лампу дневного света) по таймеру. Таймер имеет резервный источник питания — литиевую батарейку на 3 вольта типа CR2032. Часы, время включения и время выключения нагрузки устанавливается с пульта ДУ. Показания часов выводятся на индикатор при нажатии кнопки на пульте ДУ. Точность измерения температуры 0.5 градуса.

Испытательный полет. Температура за бортом — 20 градусов.

Импульсный источник питания на 5 вольт. Работает годами без нареканий

Плата практически пустая.

На свободном месте расположится источник питания.

Хорошая коробка — 90 процентов успеха!

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

Использованные компоненты

  • DD1 — микропроцессор PIC16F84A
  • DD2 — ЖК индикатор MT-10S
  • DD3 — интегральный таймер PCF8583 с управлением по I2C
  • DD4 — I2C порт-расширитель PCF8574
  • DD5 — ИК-приемник TSOP1738
  • DD6 — датчик температуры DS18S20
  • T1 — полевой транзистор IRFD110
  • DA1 — оптосимистор MOC3061
  • VS1 — симистор MAC15N
  • ZQ1 — часовой резонатор на 32768Hz
  • ZQ2 — резонатор на 4MHz

Прошивка

Версия 3 от 19. 11.2004: (доступно зарегистрированным пользователям)

С такого пульта производится установка таймера и часов.

При первом нажатии любой кнопки на пульте включается подсветка индикатора. Он гаснет через 30 секунд после последней команды с пульта.

 

Основной режим

Нагрузка выключена:
Нагрузка включена:
 

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

Разовое — в том смысле, что на следующие сутки контроллер снова будет отрабатывать включение и выключение нагрузки по таймеру. Буковка «Р» как-бы говорит нам, что в данный момент состояние нагрузки переопределено вручную. Для ручного изменения состояния нагрузки нажимать на пульте кнопку ?1.
Нагрузка выключена вручную:
Нагрузка включена вручную:
 

Установки

Вход в этот режим и выход осуществляется кнопкой ?2 Переключение между пунктами в режиме установки — кнопка ?4 Изменение значений минут и секунд — кнопка ?3
Часы — установка часов:
Часы — установка минут:
Время включения нагрузки — установка часов:
Время включения нагрузки — установка минут:
Время выключения нагрузки — установка часов:
Время выключения нагрузки — установка минут:

Russian HamRadio — Многофункциональный таймер на микроконтроллере PIC16F84A.

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

Будильники имеют следующие режимы звонков:

• “непрерывный режим” — непрерывное звучание будильника (т. е. работа устройства) от одного запрограммированного времени до следующего, затем пауза до следующего установленного времени и т. д.;

• режим “1 минута” — звучание будильника 1 мин;

• режим “5 секунд” — звучание будильника 5 с;

• режим “1 секунда” — звучание будильника 1 с.

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

• работа будильников все дни;

• работа все дни, кроме 6 и 7-го дня;

• работа все дни, кроме 7-го дня;

• отключение всех будильников.

Кроме этого, в таймере имеются следующие режимы работы:

• обнуление всех установок будильников;

• коррекция хода часов за неделю в пределах ± 4 с;

• ручная коррекция хода часов по сигналам точного времени;

• ежедневная автоматическая коррекция хода часов по сигналам точного времени в диапазоне ± 10 с от полуночи;

• установка и индикация дней недели;

• работа индикации в попеременном режиме: индикация текущего времени — 10 с, затем индикация значения запрограммированного времени будильника, следующего за сработавшим — 2 с.

Рис.1.

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

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

Рассмотрим укрупненный алгоритм работы программы, который представлен на рис. 1.

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

По переполнению таймера TMRO, имеющего коэффициент деления 256, происходит прерывание и инкрементируется регистр делителя на 250.

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

Таким образом, с учетом машинного цикла общий коэффициент деления составляет 4x16x256x250 = 4096000, и регистр секунд инкрементируется с частотой 1 Гц.

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

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

После отработки прерывания вся процедура повторяется со следующим разрядом. После последнего, пятого, разряда программа возвращается к индикации нулевого разряда. Таким образом, индикация каждого разряда длится 4 мс. За это время можно выполнить 4096 команд.

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

• при индикации нулевого разряда происходит сравнение установленных значений будильников с текущим временем;

• при индикации первого разряда проверяется запрет будильников по дням;

• при индикации второго разряда проверяется значение часов для коррекции по сигналам точного времени в полночь;

• при индикации третьего разряда проверяется состояние кнопок, и выполняются установки по нажатым кнопкам;

• в четвертом разряде происходит смена индикации при изменении режима работы.

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

Сравнение записанных значений времени с текущими производится в том же формате, что значительно экономит ресурсы при проверке всей Flash-памяти. Чтобы не возникало путаницы при считывании и записи, значения минут записываются в память с номером от 0 до 31, а адрес часов увеличен на 32. Сначала проверяется совпадение минут, затем, если произошло совпадение, проверяется адрес, увеличенный на 32, на совпадение часов.

Рис.2.

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

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

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

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

Выходы RAO—RA2 микроконтроллера управляют дешифратором DD3 индицируемого номера разряда, а выходы RBI—RB4 — преобразователем DD1 двоичного кода в семисегментный. Выход RB5 запрограммирован для управления запятой. Выход RB6 управляет исполнительным устройством.

Выходы RB7, RA3, RA4 используются как входы включения записи, разряда и установки соответственно. Вывод установки ALA используется для включения будильника. Выход RBO, который в часах использовался для гашения, имеет постоянный уровень лог.0 для разрешения работы микросхемы мультиплексора DD3. Гашение в программе не используется, но выход оставлен для преемственности. В

связи с увеличением числа команд в схему введен высокочастотный кварцевый резонатор на частоту 4,096 МГц, при этом скорректированы значения конденсаторов С1 иС2.

Для подключения сильноточной нагрузки через промежуточное реле установлен транзистор VT7, работающий в ключевом режиме. Для контроля включения нагрузки или в качестве будильника установлен звуковой излучатель НСМ1206х с частотой излучения около 2 кГц. Резервное питание осуществляется от батареи G1 из двух элементов А10—А12 или ААА.

Работа с таймером

Кнопка “Разряд” перемещает запятую для выбора разряда установки.

Кнопка “Установка” прибавляет единицу в выбранный разряд.

Кнопка “Запись” фиксирует установленный режим работы, производит запись в память значений будильников и производит автоматическую коррекцию часов в полночь.

Режимы работы таймера устанавливаются следующими числами в двух младших разрядах:

40 — режим часов;

41 — попеременный режим;

42 — установка часов;

43 — установка дней;

45 — звонок звучит непрерывно;

46 — звонок звучит 1 мин;

47 — звонок звучит 5 с;

48 — звонок звучит 1 с;

49 — звонок отключен;

50 — звонок звучит все дни, кроме 6 и 7-го;

51 — звонок звучит все дни, кроме 7-го;

52 — звонок звучит все дни;

53 — установка коррекции;

54 — обнуление всех будильников;

55 — обнуление минут и секунд часов.

Все режимы установки начинают работать после фиксации их нажатием кнопки “Запись”. Индикация произведенной записи выполняется сменой положения запятой. Если запятая находилась в любом разряде, кроме шестого и первого, то при выполнении фиксации режима запятая переместится в первый разряд. Это относится к режимам 45—52. При установке режимов работы 41, 42 и 55 запятая перемещается в шестой разряд, и индикатор высвечивает значение часов. Индикация установки режима 54 производится нулями во всех разрядах.

Кнопку “Запись” не нужно нажимать при установках дней, коррекции и часов. Нельзя установить два взаимоисключающих режима таких, как 45 и 49, 50 и 52, будет работать только последний установленный режим. После установки значений часов необходима обязательная установка режима 40 или 41. После выполнения всех необходимых установок запятая выводится в шестой фиктивный разряд (выводится за пределы индикатора) и таймер переходит в режим индикации значений часов с секундами.

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

Установка будильников производится установкой чисел в младших разрядах от 0 до 31. При установке значения от 32 до 39 индикатор сбрасывается в ноль. Это может произойти при установке режимов, если сначала установлено значение в нулевом разряде, а затем производится установка в первом разряде с переходом через тройку, поэтому сначала лучше устанавливать значение первого разряда. Значения будильников могут устанавливаться с дискретностью в 1 мин. Если вы предусматриваете работу таймера в попеременном режиме индикации, то желательно программировать значения будильников по возрастающей

.

Рис.3.

При работе в непрерывном режиме первое значение от текущего времени будет включать исполнительное устройство, а следующее — выключать его. Нулевые значения установок игнорируются программой, поэтому если необходимо срабатывание будильника в полночь, нужно выставить значение 23 ч 59 мин или 00 ч 01 мин. Если необходимо отключить выбранный будильник, достаточно установить фиктивное значение часов, например, 25. Если вы не предусматриваете работу в попеременном режиме, то будильники можно программировать в любой последовательности, поскольку сравнение на совпадение производится по всему массиву памяти.

После установки адреса и значения будильника запись в память производится нажатием кнопки “Запись”. Индикация выполнения записи производится перемещением запятой в нулевой разряд. Это сделано для упрощения установки адреса следующего будильника. Поскольку запись в память выполняется в третьем разряде индикации, то при удержании кнопки “Запись” яркость этого разряда увеличивается.

При выборе режима 43 (установка дней) номер дня недели индицируется в четвертом разряде. На табло высвечивается: с0-сс-43. Для установки дней недели необходимо запятую переместить в четвертый разряд. Номер дня не может быть установлен более семи. Установка дней недели необходима, если вы собираетесь ввести ограничение будильников по дням.

Рис.4.

При выборе режима 53 (установка коррекции) на табло индицируется: с0-с0-53 . Во втором разряде высвечивается устанавливаемое значение коррекции, а в четвертом разряде — значение знака коррекции. Величина коррекции не может быть более четырех. Знак коррекции положительный, если в четвертом разряде ноль, и отрицательный (часы спешат), если единица. Практика показала, что ежедневное введение коррекции нецелесообразно. При обычном резонаторе суточный ход часов лежит в пределах ± 0,5 с. Поэтому коррекцию лучше вводить один раз в неделю. Коррекция вводится автоматически в 00-00-05 часов при переходе из седьмого дня в первый.

Если вы будете пользоваться автоматической коррекцией по сигналам точного времени, то вводить значение этого режима нет необходимости. Этот режим включается автоматически в пределах ± 10 с. от полуночи. Импульс установки положительной полярности в уровнях ТТЛ должен быть подан на вывод RB7 (REC). Поскольку цикл индикации всех разрядов равен 4×6 = 24 мс, то длительность импульса установки не должна быть меньше этого значения. Естественно, при использовании автоматической коррекции устанавливаемое значение коррекции (режим 53) должно быть нулевым.

Режим 55 (обнуление минут и секунд) используется для ручной установки часов при нажатии кнопки “Запись”. При индикации часов кнопка “Запись” не реагирует на нажатие. Кнопка “Установка” соединена параллельно с кнопкой с фиксатором “Вкл. будильника”.

Рис.5

Непрерывный режим будильника предназначен для периодического включения и выключения сильноточной нагрузки при помощи промежуточного реле. Использовано реле РЭС49 (паспорт PC.569.426), хотя это может быть любое другое на соответствующее напряжение и ток. Промежуточный каскад может быть выполнен и на оптопарах, и на симисторе.

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

Топология печатных плат и расположение элементов даны на рис. 3—5. Тонкими линиями обозначены проводники со стороны установки элементов. В

табл. 1 представлен hex-файл программы таймера.

Скачать файл прошивки микроконтроллера PIC16F84A.

Н. Заец

Литература:

  1. Н. Заец. Часы на PIC-контроллере. — Схемотехника, 2002, № 8, с. 46, 47.
  2. С. Бирюков. Цифровые устройства на МОП-интегральных микросхемах. — М.: Радио и связь, 1990.
  3. М. Предко. Справочник по РIC-микроконтроллерам. — М.: ДМК Пресс, Додэка-ХХ1, 2002.

Материал подготовил Ю. Погребан (UA9XEX).

Переключение часов — Помощь разработчикам

Переключение часов

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

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

  • Системные часы, определяемые настройками Fosc в конфигурационном слове
  • INTOSC — внутренний осциллятор
  • Таймер 1 Внешний тактовый кристалл 32,768 кГц

Примечание: Переключение часов — это операция, управляемая программным приложением, а не автоматическая операция. Другие функции переключения часов, такие как Fail Safe Clock Monitor и Two Speed ​​Start-Up, представляют собой функции автоматического переключения часов, которые не влияют на настройки переключения часов.

Режим переключения часов управляется битами SCS в регистре OSCCON. Эти биты можно изменить с помощью программного обеспечения во время выполнения, чтобы изменить источник синхронизации.

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

Когда биты SCS = 01 , системные часы переключаются на вторичный генератор , который представляет собой внешний кристалл 32,768 кГц , управляющий периферийным устройством таймера 1 . Внешний тактовый кристалл является дополнительным источником тактового сигнала, который должен быть частью схемы разработки Timer1.

Когда биты SCS = 10 или 11 , системные часы переключаются на внутренний генератор независимо от настроек бита конфигурации Fosc. Биты IRCF регистра OSCCON выбирают частоту внутреннего генератора.

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

Бит OSTS указывает состояние генератора, выбранного настройками бита конфигурации Fosc. После сброса внутренний генератор INTOSC может управлять устройством, в то время как выбор Fosc завершает задержку запуска или даже задержку Power-Up Timer . Проверка бита OSTS покажет, какой осциллятор управляет устройством.


  Вернуться к началу

Сгиб

Содержание

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

Биты состояния генератора

Состояние Fosc

Программируемый цифровой таймер с использованием микроконтроллера PIC

Цифровые таймеры используются для управления работой электрических устройств по запрограммированному расписанию. В этом проекте описывается программируемый цифровой таймер на базе микроконтроллера PIC16F628A, который можно запрограммировать на включение и выключение электроприбора по расписанию. Прибор управляется с помощью релейного переключателя. Этот переключатель таймера позволяет установить время включения и выключения. Это означает, что вы можете запрограммировать, когда вы хотите включить устройство и как долго вы хотите, чтобы оно оставалось включенным. Максимальный временной интервал, который можно установить для включения и выключения, составляет 99 часов 59 минут. Проект предоставляет интерактивный пользовательский интерфейс с использованием ЖК-дисплея 16×2 символов и 4 кнопок.

Программируемый цифровой таймер

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

Схема

Принципиальная схема этого проекта показана ниже. Реле 5В управляется транзистором PN2222, который управляется выводом RB3 PIC16F628A. Цифровые входы от 4 кнопок считываются через контакты порта RA2, RA3, RA4 и RB0. Функции этих кнопок обсуждаются в разделе операций ниже. В проекте используется стандартный ЖК-дисплей 16×2 символов для отображения состояния устройства, меню программ и времени. ЖК-дисплей работает в 4-битном режиме, поэтому для его управления требуется всего 6 контактов ввода-вывода PIC16F628A. Пьезоэлектрический зуммер издает звуковой сигнал при запуске и остановке таймера. Он также издает звуковой сигнал при включении или выключении устройства. Источник питания + 5 В для схемы получен от микросхемы стабилизатора LM7805. Вход на регулятор подается с 9Настенный адаптер постоянного тока В.

На принципиальной схеме контакты 15 и 16 ЖК-дисплея показаны разомкнутыми. Эти контакты доступны только в тех ЖК-дисплеях, которые имеют светодиодную подсветку. Контакты 15 и 16 являются анодом и катодом светодиода. Если ваш ЖК-дисплей оснащен светодиодной подсветкой, вы можете последовательно подключить эти контакты к клеммам источника питания с резистором 39 Ом. Светодиодная подсветка улучшает читаемость ЖК-дисплея в условиях низкой освещенности.

Полная схема, припаянная к макетной плате общего назначения, показана ниже.

Работа таймера

Таймер получает сигналы от 4 кнопок. Их функции описаны следующим образом:

  • ВРЕМЯ ВКЛЮЧЕНИЯ/ВЫКЛЮЧЕНИЯ: Этот таймер позволяет установить время включения и выключения. Когда таймер первоначально включен, устройство находится в выключенном состоянии, а время включения и выключения равно 0. Нажимая эту кнопку, вы можете переключаться между временем включения и выключения на дисплее.
  • ВЫБОР: Это позволяет вам выбирать между настройками времени включения и выключения, а также часами и минутами. Выбранная цифра увеличивается при нажатии кнопки ON/OFF TIME.
  • ENTER : Когда выбраны соответствующие часы и минуты, нажатие ENTER завершает установку соответствующего времени включения или выключения.
  • ПУСК/СТОП запускает или останавливает таймер. Если таймер уже включен, вы можете остановить его в любой момент во время его работы, нажав эту кнопку.

Теперь посмотрим, как это работает. Допустим, устройство, подключенное к релейному выключателю, необходимо включить через 2 минуты. Кроме того, после включения он должен быть включен в течение следующих 20 минут. В этом случае время выключения — 00:02, а время включения — 00:20 в формате чч:мм. После запуска таймера устройство включится через 2 минуты и останется включенным в течение 20 минут.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *