Самодельный суточный таймер на микроконтроллере. Таймер на 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 для числа множителя.

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

Предлагаю к повторению несложную схему бытового (кухонного) таймера на 99 минут собственной разработки. Идея заключалась в простоте управления, чтоб буквально любая (тупая) домохозяйка без проблем могла им пользоваться. Достаточно просто набрать 2 цифры минут и нажать кнопку "Старт". При необходимости можно установить и секунды. Также имеется скрытое "сервисное меню", где "спрятано" несколько фич - отображение прямого/обратного отсчета времени при работе таймера и несколько различных вариантов световых и звуковых эффектов по окончании отсчёта времени. Еще одной особенностью таймера (правда только на уровне программирования контроллера) является возможность выбора варианта управления ногой RC5 - появление на ней "1" либо во время счета времени, либо после окончания счета. Эту ногу можно использовать, например, для управления нагрузкой или как нибудь по своему усмотрению. Я в своем варианте сделал включение дополнительного усилителя звука по окончании счета.

В начале я разработал "дизайн" табло. В таймере применен индикатор на 2 цифры с двоеточием слева, а вокруг него расположены 6 светодиодов. При отсчете времени они показывают десятки секунд, а при окончании счета изображают бегущий огонь. Двоеточие тоже выполняет функцию визуального конроля режима. При установке времени в режиме минут оно погашено, а в режиме секунд - горит. Когда таймер запущен, начинается отсчет времени. Если время меньше одной минуты, на индикаторе отображаются секунды и двоеточие горит постоянно. Когда "натикало" больше минуты - на индикаторе высвечиваются минуты, а двоеточие начинает мигать. Десятки секунд, как писал выше, показывают светодиоды. Сейчас при чтении этого текста кажется что слишком все намудрено, но в реале все очень просто и логично.

Поскольку я предполагал встроить этот таймер прямо в стену, питание ему сделал от сети с настоящим выключателем. Никаких спящих и дежурных режимов! Не люблю я их. Только полное выключение! Блок питания - простейший импульсный, по типу китайской зарядки. За особой точностью хода я не гнался, так как для приготовления всяческих кулинарных изделий точность даже плюс/минус пару минут не так уж и критична. Да и образцового секундомера у меня тоже не было. На глаз при установке максимального интервала в 99 минут по сравнению с "эталонными" часами разницы практически не было. Ну может там каких пол секунды и было, но на глаз это отследить трудно. Так что если Вас все устраивает, можете приступить к повторению девайса. Вот его схема:

На время прошивки МК перемычки JP1 и JP2 снимаются. Для экономии места на схеме ключи VT5, VT6, VT9 и VT10 не показаны. Индикатор взял из старого компьютерного корпуса. В нем в качестве двоеточия используется левая 1. Только при окончательной сборке эти сегменты надо немного закрасить чтоб получилось 2 точки (я просто заклеил ненужные участки черной изолентой). Еще особенностью этого индикатора является то, что сегменты этой левой единицы соединены последовательно внутри индикатора и выведены как сегмент H (запятая) от второй цифры. Поэтому обратите внимание, что номинал R22 меньше, чем у резисторов для других сегментов. Вообще же можно просто использовать обычный индикатор на 2 цифры и 2 последовательно соединенных светодиода для двоеточия. Я взял такой индикатор просто потому, что он у меня уже был. На всякий случай дам его распиновку.

Установка времени происходит следующим образом. По умолчанию (при включении) таймер находится в режиме ввода минут, при этом двоеточие погашено. Цифровыми кнопками набираем сколько надо минут и нажимаем кнопку "Старт" (S12 по схеме). Вводимые цифры по ходу нажатия сдвигаются влево, какие цифры на индикаторе горят - столько минут в данный момент и установлено. Например, если на индикаторе горит 23 (установлено 23 минуты), а надо поставить 6 минут, то просто нажимаем "0" и "6". Если надо установить и секунды - нажимаем кнопку "Сек" (S10 по схеме), при этом зажигается двоеточие. Ставим сколько надо секунд точно также, как и минуты. Если набранное число получилось больше 59 секунд, старшая цифра начинает мигать, символизируя ошибку, и сбрасывается в 0. Запустить таймер можно как из режима минут, так и из режима секунд. После запуска таймера, остановить его досрочно можно повторно нажав кнопку "Старт".

На принципиальной схеме слева виден коннектор X3 с надписью "Out". Это тот самый выход управления чем-нибудь, про который я писал в начале. В исходном состоянии там "0". На этапе программирования МК можно задать, когда там будет появляться уровень "1" - во время отсчета времени или по окончании отсчета и до возвращения таймера в исходное положение. Задается это в памяти данных EEPROM, в ячейке по адресу 0x2105 (на рисунке квадратик 1). Записав туда значение 0x01, на выходе будет логическая "1" во время работы таймера. Записав 0x00 - после окончания отсчета времени. Вот скриншот программы при программировании МК.

По адресу 0x2107 (квадратик 2) находится значение числа коррекции при отсчёте времени (отстают-уменьшить, спешат-увеличить). Изменять число желательно в небольших пределах и без особой надобности лучше не трогать. Не ставить числа, равные 0 и 0FFh. По адресу 0x2109 (квадратик 3) находится число, определяющее сколько минут будет работать звуковой сигнал при окончании отсчета, если таймер не сбросили в исходное состояние нажатием кнопки.

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

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

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

Т.е. выход "Out" включал питание "усилка", а сам сигнал звука брался с выхода ПИКа для мелкого динамика. Получилось, что когда нажимаешь кнопки при установке времени - пищит только маленький динамик, а когда срабатывает таймер - пищат сразу оба динамика. Этот дополнительный усилочек собран на отдельной платке.

Сам таймер собран на двухсторонней печатной плате, нарисованной в . Архив приложен в конце статьи. Плата разведена под PIC в корпусе TSSOP с шагом 0,65мм.

Фото платы в процессе сборки/отладки.

Для питания таймера использовал простейший импульсный блок питания, собранный по этой схеме (саму схему взял готовую где-то в интернете). Подробно писать про него здесь нет никакого смысла, ибо это тема для отдельной статьи про импульсные блоки питания. Приведу лишь данные по намотке трансформатора. Сам каркас подходящего размера берется из энергосберегающей лампы или из сгоревшего китайского БП. Также его можно выдрать из цепи дежурки компьютерного БП или из монитора, но по размерам они будут немного больше. Для беспроблемной разборки каркаса и сердечника трансформаторов, я их окунаю в кипящую воду на 3-4 минуты и потом аккуратно, без больших усилий, разбираю. Дальше снимаем все старые обмотки и мотаем новые. Обмотки: 1-2 - 600 витков диаметром 0,08 - 0,1мм; 3-4 - 23 витка диаметром 0,3 - 0,55мм; 5-6 - 10 витков диаметром 0,08 - 0,1мм. Обмотка 1-2 намотана внавал, остальные виток к витку. Все обмотки необходимо хорошо заизолировать друг от друга. При намотке соблюдать направление и начало обмотки по точкам. Две половинки Ш-образных сердечников стыкуются через изоляционную прокладку (воздушный зазор ~ 0,1 мм).

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

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

Ну и готовое устройство в сборе.

И напоследок про "сервисное меню", о котором упомянуто в начале текста. Если из режима установки секунд набрать "1", "1", "1", "1", "1" и "Старт", то кнопками "1" и "2" можно выбрать прямой или обратный отсчет времени. На индикаторе будет высвечиваться "Cu " (Count Up) или "Cd " (Count down). Выход из меню с сохранением настроек в EEPROM кнопкой "Старт".

Если набрать последовательность "2", "2", "2", "2", "2" (также из режима установки секунд) и "Старт" - кнопками "1" - "4" можно выбрать один из четырех вариантов звукового сигнала при срабатывании таймера. На индикаторе будет высвечиваться "A1 " -"A4 " (Alarm). Выход с сохранением настроек в EEPROM так же кнопкой "Старт".

Набрав "3", "3", "3", "3", "3" и "Старт" кнопками "1" - "4" можно выбрать один из четырех вариантов "бегущего огня" круговых светодиодов при срабатывании таймера. На индикаторе будет высвечиваться "E1 " -"E4 ".

Набрав "4", "4", "4", "4", "4" и "Старт" кнопками "1" - "4" можно выбрать один из четырех вариантов мигания семисегментных индикаторов при срабатывании таймера. На индикаторе будет высвечиваться "L1 " -"L4 ".

В архиве приложены платы таймера и блока питания (если кому надо) и прошивка контроллера. Фьюзы уже указаны в прошивке, ничего менять не надо. На плате таймера присутствует несколько керамических конденсаторов 0,1мкФ по питанию, не показанных на принципиальной схеме. Также есть пару деталей, обозначенных FB (ferrite bead) - это просто так называемые ферритовые бусинки, используемые в качестве перемычек.

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

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

PIC16F636

1 В блокнот
IC2 Кодер, декодер

SN74LS155A

1 В блокнот
IC3 Регистр сдвига К561ИР2 1 В блокнот
IC4 Линейный регулятор

L78L05

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

КТ3107БМ

4 В блокнот
VT4-VT12 Биполярный транзистор

КТ3102БМ

29 В блокнот
D1-D4 Выпрямительный диод

1N4148

4 В блокнот
Q1 Кварцевый резонатор 20 МГц 1 В блокнот
C1, C2, C4 220 мкФ 3 В блокнот
C3, C5, C8 Электролитический конденсатор 100 мкФ 3 В блокнот
C6, C7 Конденсатор 22 пФ 2 В блокнот
C9 Конденсатор 0.1 мкФ 1 В блокнот
R1-R3 Резистор

1 кОм

3 В блокнот
R4-R6 Резистор

680 Ом

3

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

Назначение.

Таймер предназначен для управления бытовыми нагрузками по одному из 3 алгоритмов:

  • Цикл : непрерывное включение нагрузки на заданный интервал времени с последующим отключением на другой заданный интервал;
  • Выдержка и однократное включение - включение нагрузки по истечению заданного интервала времени;
  • Выдержка и однократное отключение - отключение нагрузки по истечению заданного интервала времени.
Основные технические характеристики и функции.
Минимальный отсчитываемый интервал времени 1 сек
Максимальный отсчитываемый интервал времени 999 мин. 59 сек.
Шаг перестройки интервалов времени в интервале 1 сек.
Управление Кнопками
Количество кнопок управления 2
Тип индикатора 7-сегментный
светодиодный
3(4)-разрядный
Сохранение заданных интервалов для каждого режима при отключении питания Предусмотрено
Продолжение отсчета времени при восстановлении основного питания Предусмотрено
Резервный источник питания Литиевая
батарейка 3В
Выходной сигнал Логический,
0 - 5В, 20 мА
Предупреждительный сигнал за 10 секунд до окончания интервала Предусмотрен
Тип индикатора (общий анод/катод) Не имеет значения

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

На рисунке приведена принципиальная схема таймера. группа из трех светодиодов может быть заменена четвертым разрядом индикатора (далее описание ведется именно в расчете на этот вариант, т.е. дополнительные светодиоды упоминаются, как соответствующие сегменты 4-го разряда). Для достижения настоящей миниатюрности все компоненты, кроме индикатора, следует выбирать в SMD-исполнении. Звукоизлучатель - это не простой динамик, а зуммер со встроенным генератором, т.е. такой, что при подаче 5В начинает пищать.

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


Режимы работы таймера

Предусматривается два режима работы таймера - конфигурирование и основной.

Конфигурирование

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

В режиме конфигурации кнопка Р служит для выбора параметра, а кнопка СС изменяет выбранный параметр. Выбранный параметр мигает. Параметров всего два: тип индикатора и поведение таймера при работе от резервного источника питания. Первый параметр отображается в первом разряде индикатора, второй - в третьем разряде.

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

Нажав кнопку СС можно переключиться на второй настраиваемый параметр - начнет мигать третий разряд индикатора. В этом разряде отображается либо минус , либо буква G . Минус означает, что при отсутствии основного питания таймер будет остановлен, и продолжит работу только после восстановления питания. Буква G обозначает режим сохранения "хода" таймера и при отсутствии основного питания. Вы должны выбрать наиболее удобный режим для себя.

Завершить режим конфигурации можно нажатием и удержанием кнопки Р более нескольких секунд. После завершения настроек изображение на индикаторе станет характерным для основного режима работы.

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

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

Особенности индикации

На индикаторе интервала отображается время. Формат отображения можно назвать «минуты с плавающими секундами». Десятичная точка на индикаторе отделяет единицы минут от десятков секунд. Положение точки не фиксировано и зависит от того, какое количество минут следует отображать. Если количество минут более 99, то весь индикатор целиком занят под показания минут, секунды при этом не отображаются. Если минут менее 100, но более 9, то на индикаторе можно видеть десятки секунд. Если же минут менее10, то секунды отображаются полностью - и десятки, и единицы. Таким образом, с достаточной точностью можно видеть оставшееся время до истечения заданного интерва-ла (см. рисунки).

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

Дополнительный индикатор состоит из 3-х светодиодов (в случае применения 4-го разряда индикатора используются сегменты А, G, D), назначение которых показано в таблице.

Индикатор Сегмент Назначение
ВКЛ A

ВКЛЮЧЕНА

ОТКЛ G Показывает, что на дисплее интервал, в течение которого нагрузка ВЫКЛЮЧЕНА
1РАЗ D

Показывает, что включен однократный режим отсчета интервала

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

В режиме цикла индикатор 1РАЗ не светится.

Состояния

Различается три основных состояния в основном режиме работы:

  • Ожидание - таймер остановлен, можно изменить настройки интервалов и выбрать алгоритм работы. Далее это состояние обозначается О .
  • Счет - таймер отсчитывает выбранный интервал и управляет нагрузкой по выбранному алгоритму. Возможна приостановка или полная остановка от-счета времени, т.е. переход в состояние О . Далее это состояние обозначается С .
  • Кроме основных, имеется еще дополнительное состояние изменения интервалов , далее обозначаемое, как состояние И .
Управление состояниями таймера

Управление состояниями осуществляется уже известными кнопками СС и Р .

Когда таймер в состоянии О , кнопка Р переключает алгоритм работы, что соответственно отображается на индикаторе. Можно выделить 4 варианта алгоритма работы:

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

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

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

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

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

Кнопка Р в режиме С выполняет функцию "Стоп " - отсчет времени останавливается и таймер переходит в режим О , при этом интервал восстанавливает значение, заданное пользователем, т.е. таймер готов к очередному запуску.

Изменение длительности интервалов

В состоянии О возможно изменить длительность текущего интервала, т.е. того, который отображен на индикаторе. Для этого надо нажать и удерживать кнопку Р до тех пор, пока не включится состояние изменения интервала. От состояния О это состояние отличается тем, что один из разрядов индикатора мигает - именно его значение будет изменяться при нажатии кнопки СС . Изменение происходит по кругу, т.е. 1-2-3-4-5-6-7-8-9-0-1-2-..., но при этом учитывается тот факт, что не может быть задан интервал 0 секунд и 0 минут, а так же число десятков секунд не может превышать 5.

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

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

Такой поразрядный способ изменения интервала позволяет наиболее быстро ввести любое значение от 0.0 до 999.59 при помощи всего пары кнопок. Дополнительно облегчает ввод автоповтор нажатой кнопки, т.е. если нажать и удерживать кнопку более 1,5 секунд, показания начнут изменяться автоматически в ускоренном темпе.

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

Возможные применения устройства.

Полив растений, кормление животных (алгоритм «цикл»).

Экспонирование в фотографических и других процессах (алгоритм «выдержка и отключение»).

Кухонный таймер (алгоритм «выдержка и включение» для сигнализации конца интервала или «отложенное выключение» для электроприборов).

Освещение на лестничных клетках (алгоритм «выдержка и выключение», индикатор не требуется).

Так как работа над таймером шла долго и активно обсуждалась на форуме, у некоторых посетителей сайта возникал вопрос: для чего используется звуковое напоминание о скором завершении интервала и возможность продлить текущий интервал? Это предусмотрено на случай использования таймера в качестве "незабудки". Например, вы сели паять, а таймер у вас управляет питанием паяльника. Вы настроили таймер на работу в режиме "включено 1 раз " на 15 минут. Предположим, спустя 10 минут вам позвонили по телефону и вы отложили паяльник. Если вы заболтались - таймер начнет попискивать, напоминая о себе. Если вы не слышите этих сигналов - таймер отключит паяльник, уберегая вас от пожара. Если же вы не спите, не заняты - вы нажимаете кнопку СС и продолжаете работать еще 15 минут до очередного напоминания.

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

P.S. Для тех, кто захочет что-то поменять в коде таймера.
В настоящее время прошивка собирается компилятором WinAVR 20100110 и занимает 2016 байта из имеющихся 2048 . Но такой объем получен не просто так, а только при определенных усилиях со стороны программиста и компилятора. Makefile для сборки проекта прилагается к исходникам - не стоит изменять его в плане опций компилятора или компоновщика!


(8) | Просмотров: 121609

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

Здесь 5 вольтовое реле управляется транзистором PN2222, который, в свою очередь, управляется RB3 PIC16F628A. Цифровые входы из 4 кнопок читаются с помощью порта ввода/вывода RA2, RA3, RA4, и RB0. Стандартный 16?2 символьный ЖК-дисплей используется для отображения состояния устройства, программы, меню и времени. ЖК работает в 4-битном режиме, поэтому только 6 выводов I/O PIC16F628A необходимы для работы. Пьезоэлектрический зуммер дает звуковой сигнал, когда таймер запускается и останавливается. Он также подает звуковой сигнал, когда устройство включено или выключено. Напряжение питания схемы поступает от стабилизатора LM7805. На вход её подается 9 В от сетевого адаптера. Подсветка LED повышает читаемость дисплея LCD в условиях низкой освещенности состоянии.

Работа таймера и функции кнопок

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

Время : позволяет задать время включения и выключения. Когда таймер изначально включен, устройство находится в выключенном состоянии, и время 0. Нажав эту кнопку, можно переключаться между on и off на дисплее.

Выбор : позволяет выбрать между on и off параметрами, а также часовой и минутной цифрой. Выбранная цифра увеличивается нажатием кнопки ON/OFF.

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

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

Это схема таймера на микроконтроллере PIC16F628A позаимствована с хорошего португальского сайта по радиоэлектронике. Микроконтроллер тактируется от внутреннего генератора, который можно считать достаточно точным для данного момента, так как выводы 15 и 16 остаются свободными, то можно использовать внешний кварцевый резонатор для еще большей точности в работе.


В таймере для управления девайсом присутствуют три кнопки: «START/STOP», «MIN» и «SEC»

«START/STOP» - для запуска и приостановки таймера.
«MIN» - для задания временного интервала в минутах. Можно установить от 0 до 99.
«SEC» - тож, но для установки секунд. Секунду также устанавливаются от 0 до 59.
Одновременное нажатие кнопок «MIN» и «SEC» сбросит схему таймера во время работы.

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

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


Перемычка J1 используется для калибровки таймера. При ее замыкании он входит в режим программирования. С помощью кнопок «MIN» и «SEC» можноизменять значение внутреннего параметра, который замедляет или ускорять работу таймера. Это значение сохраняется в EEPROM микроконтроллера. Если находясь в режиме программирования нажать кнопку «START/STOP», то этот параметр сбросится к настройкам по умолчанию.

Простой таймер на pic16f630

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

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

error: Content is protected !!