Секундный таймер обратного отсчета на pic. Таймер - меньше просто не бывает

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

Одна кнопка (по схеме S1) - "SET" для установки всех режимов, (всё будем делать одной кнопкой зачем нам куча разных ручек,переключателей?), а вторая кнопка (по схеме S2) - "RESET", которая позволит остановить таймер в любой момент приведя его в начальное состояние и отключить реле.

Алгоритм работы

Интервал времени таймера формируется от перемножения двух чисел: первое число (множимое) - это набранный интервал в минутах от 1 до 255, а второе число (множитель), которое при перемножении на, набранное вами, первое число сформирует заданное время таймера.

ПРИМЕР

Допустим надо набрать 1 час = 60 мин., учитывая, что минимальный дискретный временной интервал таймера =1 минуте, мы можем сформировать этот интервал несколькими вариантами, например первое число = 10 минутным интервалом, набираем первое число удерживая кнопку нажатой чтобы (10 раз мигнул светодиод, или «пиликнул» зуммер пьезоизлучателя). Набрав нужное количество, отпускаем кнопку, после этого таймер повторит «озвучит» набранное вами число(мигнув светодиодом и «пиликнув» пьезоизлучателем) набранное количество раз, когда D2 погаснет, после этого начинает прерывисто мигать второй светодиод D1. Это означает, что набор первого числа принят, но установка ещё не завершена, надо продолжать установку, (в этот момент, когда мигает D1 можно замкнуть контакты джампера S3 и оставить их в замкнутом положении, этим действием мы запишем наши настройки в энергонезависимую память микроконтроллера EEPROM, которые там будут храниться до момента записи другого временного интервала вместо прежнего. Это удобно, если вам нужен один временной интервал, которым Вы пользуетесь постоянно. Пока перемычка (джампер S3) замкнута, таймер будет выдавать только этот временной интервал, записанный вами (чтобы не набирать каждый раз снова) и сохранится в памяти при полном обесточивании устройства.

Второе число которое надо выбрать, это - множитель (набирается следом после первого). Для формирования часа тогда должен быть равен 6-ти (10мин. х 6 = 60 =1 час).

Процедура набора, такая же, как и при установке первого числа, посредством удерживания в нажатом состоянии кнопки и считая в такт с мигающим светодиодом D2 шесть миганий. После чего кнопку отпустить, сразу же следом в подтверждение, что число принято индикация D2 мигнёт и "пиликнет" повторно 6 раз, далее светодиод D1 снова начнёт прерывисто мигать. Это означает, что второе число принято и таймер готов к запуску.

СТАРТ

Чтобы запустить таймер надо нажать кнопку "SET" очередной 3-й раз удерживая нажатой около секунды, D2 тут же мигнёт (озвучит) последний раз для напоминания количество набранных вами интервалов и следом включается реле а режим индикации D1 переходит из мигающего в постоянно зажжённое состояние до окончания цикла, D2 по прошествии очередного набранного интервала будет мигать и «пиликать» зуммером.

Столько раз сколько ещё осталось до конца набранного вами суммарного интервала времени? После каждых (набранных в примере) 10 прошедших минут светодиод мигнёт столько раз сколько осталось интервалов 10 минутных из 6-ти по убывающей (5 раз потом 4 потом 3..2..1 и финиш). По окончании всего часового цикла, реле выключит нагрузку. светодиод D1 погаснет, а D2 и зуммер около 8 секунд будут ещё индицировать, оповещая, что цикл закончен.

Для установки в таймере часового интервала вариантов может быть масса. Например, набрать, первое число минута =1, а второе = 60. Тогда через каждую минуту светодиод будет мигать столько раз сколько минут осталось до конца, а можно и первое число сделать = 6-ти минутам, а второе = 10-ти, остальное по аналогии с вышеприведёнными примерами.

Такой универсальный вариант на разные вкусы, поэтому и назвал «УНИВЕРСАЛЬНЫЙ». По сути Вы сами программируете таймер на своё усмотрение, с желаемым вариантом и частотой индикации.

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

Установить (замкнуть перемычку джампера S3) надо ТОЛЬКО в период после набора первого или второго числа, когда мигает D1 (ни раньше ни позже) , и оставив её после этого замкнутой постоянно, при дальнейшей эксплуатации, после этого, при каждом очередном запуске таймера, нажимая кнопку «SET» сразу будет включится реле, а зуммер и D2 напомнит вам индикацией, сколько периодов временных вам осталось до конца, когда реле отключится.

Детали

Старался максимум простоты, минимум деталей и органов настроек, получилось: пара светодиодов, зуммер-пьезоизлучатель, транзистор управляющий реле, реле на 12 вольт, которое будет включать нагрузку, микросхема-стабилизатор 7805, процессор ATtiny 13 (с любыми буквами этой серии), да и всё, пожалуй.

Питаться схема будет от источника 12 В. На макетке гоняю, всё работает пока идеально. Если требуется сделать более громким звук зуммера, следует добавить усилительный каскад на транзисторе, наподобие того, как в схеме в предыдущей статье «кухонный таймер ».

Программирование микроконтроллера

ВНИМАНИЕ!!!
Очень важный момент, я использовал в микроконтроллере самую маленькую тактовую частоту внутреннего генератора это 128 кГц / 8 = 16 кГц, Это выставляется фьюзами при программировании (фото я прилагаю, где надо поставить какие галочки).

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

Так вот при использовании программатора с режимом ISP (типа STK 200 и пр.), которые наиболее часто используются для программирования AVR микроконтроллеров.

Ваш микроконтроллер, запрограммируется моей прошивкой ОДИН РАЗ!!! Повторно перепрограммировать его можно будет только применив параллельное высоковольтное программирование или вернув, перезаписав, заводские настройки (предупреждаю заранее!).

Вернуть заводские настройки можно при помощи программатора с возможностью режима H/V. (высоковольтного программирования). Я пользуюсь как раз программатором с таким режимом в STK 500. Но если вы уверены, что будете делать этот таймер, то первый раз прошивка «зальётся» с любого программатора, и проблем никаких не будет.

В дальнейшем планирую выложить статью со схемой устройства «реаниматор» АТtiny13, как раз для таких случаев. Которое позволит решить данную проблему, перезаписав в «заблокированный» микроконтроллер, снова исходные заводские настройки без привлечения программаторов с режимом параллельного высоковольтного программирования.

ПРОШИВКИ

Выкладываю 2 прошивки. Обе рабочие, но для разных целей. Одна для заливки в Протеусе, (TIMER_PROTEUS.hex). Другая (TIMER_UNIVERSAL.hex) для программирования реального микроконтроллера программатором. Разница между ними небольшая, просто будет погрешность в точности таймера, если залить не ту прошивку.

Выкладываю модель в Протеусе,и прошивку для заливки в проект. Где в реальном режиме времени устройство эмитирует работу таймера так же,как и это будет выглядеть в реальном устройстве. В протеусе можно наглядно увидеть,как будет запрограммирована в EEPROM первая ячейка с адресом 0х00 для первого числа и с адресом 0х01 для числа множителя.

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

Картинка от Novelty Kitchen Timers


В радиолюбительской практике частенько необходим таймер: засветка фоторезиста, выдержка после накатки, после засветки, варка пельменей, яиц (у меня частенько вся вода выкипает). Варианты из Google мне не подошли. Мне захотелось сделать таймер, в котором было бы 12 кнопок и 4-разрядный LED индикатор - я использовал красный, чтобы не засвечивать фоторезист. Для данной конструкции я применил давно лежащий в закромах микроконтроллер ATMEL AT89C2051. Питание от одного аккумулятора.

И вот конструкция готова. Встречайте: брутальный таймер радиолюбителя с временем выдержки от 1 секунды до 100 минут и шагом в 1 секунду или от 1 минуты до 100 часов с шагом 1 минута.

Около 10 лет назад я разработал таймер на ЖКИ и дешевом микроконтроллере PIC12C508 (журнал Радио № 5, 2004 г.). Всем он хорош, с тех пор даже батарейки не разу не менял. Разве что подсветки нет и кнопки в той конструкции были тактовые, заедают. И решил я не апгрейдить старую разработку, а сделать новую.

В программе используется прерывание от TIMER0, который включён в режим «2», т.е. в режим 8-битного таймера с автозагрузкой. В прерывании таймера, выключаются катоды индикатора и засылаются данные в последовательный порт, для вывода очередного разряда индикатора.
После того как передача будет окончена, вызывается прерывание последовательного порта, в котором включается соответствующий катод индикатора и происходит опрос клавиатуры.

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

Если при включении таймера держать нажатой кнопку "1", то таймер моргнёт двумя крайними точками и включится в режим отсчёта времени в часах и минутах. Т.е. установка времени 01.00 уже будет означать 1час. Надо только учитывать что при питании от одного аккумулятора, его заряда хватит максимум на 10 часов, из этого следует что для длительных выдержек надо питать таймер или от более мощных аккумуляторов или от сети.

Так как моя конструкция была собрана на кнопках с датчиками Холла, то схему подключения механических кнопок и индикатора с общим анодом я не проверял. Если возникнут проблемы при реализации, пишите, помогу.

Фото собранного таймера.


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

Видео

Небольшое видео, на нём индикатор всячески перемигивает - это биение развертки фотоаппарата и динамической индикации, глазами это не видно, время обновления индикатора 20 ms.
Видео с таким разрешением, потому что дом загородом и Интернет 3G.

Файлы

Исходный текст в среде KEIL и файл прошивки для индикаторов с общим катодом и общим анодом.
🕗 05/04/14 ⚖️ 7,15 Kb ⇣ 27 Здравствуй, читатель! Меня зовут Игорь, мне 45, я сибиряк и заядлый электронщик-любитель. Я придумал, создал и содержу этот замечательный сайт с 2006 года.
Уже более 10 лет наш журнал существует только на мои средства.

Хорош! Халява кончилась. Хочешь файлы и полезные статьи - помоги мне!

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

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


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

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

Что нам понадобится:

Схема таймера

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

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



Вариант из программы Sprint Layout.

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

Микроконтроллер прошивается программатором или с помощью простых 5 проводов.

Автор прошивки (скачать — multitimer) постарался и не стал изменять фьюзы, что очень сильно облегчает, без заморочки, прошивку для начинающего радиолюбителя. Если МК еще не использовался, новый из магазина, то просто заливаете прошивку и все, но если уже есть изменения в фьюзах, то надо выставить их так CKSEL=0001. Все остальное просто и не нуждается в пояснении.

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

В прорезанную ножом крышку, при помощи термоклея из пистолета, закрепляем LCD экран., прорезаем отверстия под кнопки управления и кнопку питания.

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

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

Управление осуществляется четырьмя кнопками. Меню состоит из трех пунктов, СLОСК -установка часов, RЕSЕТ -сброс всех установленных таймеров, ТIМЕR — установка таймеров.

Сначала заходим (*) в меню часов и выставляем (>)(<)(#) точное время.


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

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

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

Вариант 1

В состав данного устройства входит три таймера. Таймер 1.1 и таймер 1.2 каждый из них позволяет задавать время включения и выключения нагрузки, которая подключается к реле KV1. Таймер 2.1 и таймер 2.2 также позволяет задавать время включения и выключения нагрузки, которая подключается к общему реле KV2. Таймер 3 представляет собой обратный таймер, который управляет нагрузкой через KV3.

В данном устройстве применен микроконтроллер PIC16F628A. Элементы С1, С2, ZQ1 являются внешними частотозадающими элементами внутреннего тактового генератора. Для отображения информации используется индикатор HG1 с контроллером KS0066. Индикатор может отображать две строки по шестнадцать символов. Подстроечным резистором R4 можно регулировать контрастность изображения. Помощью SB1-SB5 происходит управление режимами работы и индикации, а так же настройка таймера. Через выводы 1,17,18 микроконтроллера происходит управление транзисторами VT1-VT3 и далее реле KV1-KV3, которые включают либо отключают нагрузку. При использовании реле с током катушки более 100 мА, то транзисторы КТ315В следует заменить на транзисторы максимально допустимый ток коллектора, которых больше тока катушки реле.

Режим отображения текущего времени.




Режим отображения таймера 1.1.

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

Назначение клавиш и управление ими такое же, как и в режиме текущего времени.

Таймеры 1.2, 2.1 и 2.2 по индикации и управлению аналогичны таймеру 1.1.

Режим отображения таймера 3

Таймер 3 - это обратный таймер.

Для входа в режим настройки таймера 3 необходимо нажать и удерживать, до появления мигающего курсора, кнопку SB5. В режиме настройки перемещение курсора осуществляется кнопками SB3 и SB4, а изменение значений кнопками SB1 и SB2. При отсчете времени остановить таймер 3 можно нажав SB5. После повторного нажатия SB5 таймер продолжит отсчет времени и когда его значение будет равно нулю, нагрузка отключится.

Переключение между режимами отображения осуществляется кнопками SB1 и SB2.

Биты конфигурации микроконтроллера.

Вариант 2

Режим отображения текущего времени

Назначение клавиш управления в этом режиме:
SB5 - вход/выход в режим настройки текущего времени.
SB3, SB4 – перемещение курсора влево либо вправо при настройке.
SB1, SB2 – уменьшение либо увеличение значений времени при настройке.

Режим отображения таймера


Список радиоэлементов

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

PIC16F628A

1 В блокнот
HG1 LCD 16x2 BC1602B2 1 В блокнот
ZQ1 Кварцевый резонатор 4 МГц 1 В блокнот
VD1-VD3 Диод

КД105Б

3 В блокнот
VT1-VT3 Биполярный транзистор

КТ315В

3 В блокнот
C1, C2 Конденсатор 15...30 пФ 2 В блокнот
R1, R3, R5 Резистор

1 кОм

3 В блокнот
R2, R6 Резистор

Таймер на ATmega8 простой, небольшая схема, на часовом кварце

Описание управления.

Если в работе осталось меньше десяти часов, ведущий нуль убирается, если осталось меньше часа, на индикатор выводятся ММ:СС, при настройке таймера формат времени ЧЧ:ММ.
Когда осталось меньше 20 секунд, на сигнальный вывод (РС4) подаются импульсы с периодом 0,5с.
при нажатии кнопки SW4 во время работы таймера останавливает полностью счет, последующие нажатия по очереди восстановляют предыдущую настройку или обнуляют таймер

Если джампер Jmp1 замкнут, то при появлении питания, таймер продолжает отсчет. Если разомкнут, то отсчет пока питания нет, не идет (пауза). При резервном питании, индикация отсутствует. Точка около единиц часов мигает.
При нажатии на кнопку СБРОС таймер отключает нагрузку, останавливается и обнуляется, при еще одном нажатии восстанавливается предыдущая настройка. Точка мигает только когда идет счет.

точки индикатора:

Не мигают: таймер остановлен
- мигает средняя - таймер запущен

Индикаторы ОА .

Автор проекта VasylYE найти его можно здесь http://elektron.ucoz.ru/forum/