Кухонный таймер на ATMega8. Трехканальный термостат, терморегулятор, таймер на ATmega8 Описание режимов работы таймера

Таймер обратного отсчёта поможет вам точно отмерять интервал времени в диапазоне от 1 секунды до 24 часов.

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

Вот из этих соображений я и сделал программу таймера, который отвечает следующим параметрам:
– компактная конструкция и простая схемотехника;
– оперативное кнопочное управление;
– при управлении кнопками, дублирование действий на ЖКИ;
– задание времени с точностью до секунды;
– диапазон отсчета от 1 секунды до 24 часов;
– функция старт, пауза;
– функция сброса отсчета и выставленных значений времени;
– при достижении значения 00.00.00, включается исполнительное устройство;

Все поставленные задачи были реализованы в этом проекте.

В предыдущей статье — я написал, что это последняя разработка такого устройства с использование семисегментных светодиодных индикаторов, но оказалось, что я поспешил. Дело в том, что в этой конструкции используется лишь 40% памяти микроконтроллера, да и еще остался один незадействованный вывод порта микроконтроллера (кроме вывода RESET). Поэтому было принято решение исправить эту несправедливость по отношению к МК и добавить еще один канал управления нагрузками. После проведенной работы память МК используется на 99% и задействованы все выводы МК. Полное название измененной конструкции:
«Двухканальный термометр, двухканальный термостат (терморегулятор) с возможностью работы по времени, одноканальный таймер реального времени на микроконтроллере ATmega8 и датчиках температуры DS18B20»

Описание и характеристики двухканального термометра, термостата (терморегулятора), одноканального таймера реального времени
на ATmega8 и DS18B20

Так-как данная конструкция «вышла» из предыдущей — , и подробно описана (все характеристики термометров и термостатов, режимы работы, реакция на ошибки — остались без изменений), я остановлюсь только на нововведении — таймере реального времени.

Таймер реального времени

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

Дискретность отсчета временных интервалов 10 минут принята по двум причинам:
— удобство вывода информации на трехразрядном индикаторе, к примеру 22 часа 40 минут — 22,4
— управление нагрузкой с точностью до 10 минут вполне достаточна для большинства задач (реально точность составляет 5 минут — если вам надо включить нагрузку в 7 часов 35 минут, то можно установить или 7,4 или 7,3)

Введение таймера немного изменило алгоритм работы с устройством (об алгоритме работы я расскажу ниже). Теперь нажатием кнопки «Выбор» можно попасть в два меню:
— меню установки пределов температур работы термостатов и временных интервалов работы термостатов, временных интервалов управления нагрузкой по таймеру
— меню коррекции хода часов и установки текущего времени.
Так как МК работает от внутреннего RC-генератора (8 МГц), который не отличается стабильностью и зависит как от температуры МК, так и питающего напряжения, функция коррекции хода часов позволяет подстроить точность хода для конкретных условий. А функция установки текущего времени позволяет установить текущее реальное время при первоначальной настройке или уточнять его при сильном отличии от реального времени.
Показания таймера при работе устройства не высвечиваются, узнать «который час» можно только при входе в режим установки текущего времени.

Управление нагрузками по таймеру не осуществляется (выключено), если время включения и выключения установлены в ноль. В принципе, управление нагрузками по таймеру не осуществляется при равенстве времени включения и выключения.

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

Схема трехканального термометра, термостата, таймера на ATmega8

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


Так-как в схеме применены «выводные» детали, то для удобства размещения конструкции в подходящем корпусе схема разделена на две части:
— Блок индикации — индикаторы и кнопки
— Блок управления — все остальное
Надо было бы вывести в блок индикации и светодиоды, которые сигнализируют о включенных каналах, но это можно сделать и самостоятельно при разводке платы (добавить три пары контактных площадок для светодиодов и соединить их с блоком управления проводами).

Конструкция устройства

Основа устройства — микроконтроллер ATmega8 с тактовой частотой 8 МГц от встроенного генератора с внутренней RC-цепочкой.
Для подстройки частоты внутреннего генератора необходимо при программирование МК записать в EEPROM-память по нулевому адресу значение калибровочной ячейки для тактовой частоты 8 МГц. В выложенном ниже НЕХ-файле EEPROM-памяти по умолчанию записано число $В1 (В1) — среднее значение калибровочных ячеек 5 проверенных микроконтроллеров.
Кроме того, для правильной работы таймера реального времени, а работает он по прерываниям от таймера/счетчика Т1 при равенстве счетного регистра и регистра сравнения OCR1A, при программировании EEPROM-памяти следом за значением калибровочной ячейки записывается число 33050 (1А81) которое программным путем заносится в регистр сравнения OCR1A. При коррекции хода таймера меняется и значение этого числа.

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

Датчики DS18B20 подсоединяются к устройству через 3-х контактные штыревые линейки DS1 и DS2, нумерация выводов которых соответствует нумерации выводов датчиков.

Управление разрядами осуществляется маломощными биполярными транзисторами NPN-типа.

Вход в меню, установка значений , запуск режимов однократного нагрева (охлаждения) осуществляется тремя тактовыми кнопками типа DTS:
— S1 — «Выбор»
— S2 — » + »
— S3 — » — »


— для каналов термостатирования — через оптосимисторы МОС3063 и симисторы ВТ139-800Е по стандартной схеме включения, что позволяет управлять нагрузками мощностью до 3,5 кВт (если мощность нагрузки более 300-400 Вт — симисторы необходимо ставить на радиаторы)
— для канала от таймера — через миниатюрное механическое реле с напряжением питания катушки 5 Вольт, что позволяет, в зависимости от примененного реле, управлять нагрузкой до 2 — 2,5 кВт

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

Питание устройства осуществляется от любого источника постоянного тока напряжением 7-25 Вольт. Схему можно запитать и от ненужного зарядного устройства от сотового телефона с выходным напряжением 5 +-0,5 Вольт. В этом случае можно из схемы исключить стабилизатор 7805 и конденсаторы С4, С5. Средний ток потребления устройством 40 миллиампер.

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

Детали, примененные в конструкции:

Управление трехканальным термометром, термостатом, терморегулятором, таймером

1. Вход в меню

В устройстве имеется два меню.
При «коротком» нажатии на кнопку «Выбор» на индикаторах высвечивается надпись «ON—-OFF», входим в меню:
— установки пределов температур работы термостатов и временных интервалов работы термостатов, временных интервалов управления нагрузкой по таймеру
При «длинном» нажатии кнопки «Выбор» надпись «ON—-OFF» сменяется надписью «Cor—-USt», при этом надо отпустить кнопку, входим в меню:
— коррекции хода часов и установки текущего времени

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

2. Меню «Коррекции хода и установки текущего времени» (длинное нажатие кнопки «Выбор»)

После входа в меню сразу попадаем в режим коррекции хода часов:
«Cor—-00»
Повторным нажатием кнопки «Выбор» переходим в режим установки текущего времени:
«USt—-00.0»
В режиме установки текущего времени смотрим на свои самые точные часы и кнопками «+» и «-» устанавливаем ближайшее время с точностью до 10 минут.
К примеру — текущее время 20 часов 37 минут, устанавливаем на индикаторе «20,4» (20 часов 40 минут) и ровно в 20.40, нажатием кнопки «Выбор» выходим из меню. Все, реальное время выставлено, часы запущены.
Корректировать ход часов можно от +50 единиц до -50 единиц. Первоначальное значение «00» («00» появляется всегда при входе в этот режим)
При изменении установки на единицу ход часов увеличивается (+1) или уменьшается (-1) примерно на 4 секунды за 24 часа.
Точность хода часов можно проверить на канале управления нагрузкой по таймеру без подключенной нагрузки по зажиганию светодиода.
К примеру, в 21.00 мы установили текущее время, задали включение нагрузки — 8.50, выключение — 9.00. Утром замерили время выключения нагрузки. Допустим нагрузка отключилась в 8 часов 59 минут 20 секунд. Значит таймер отстал на 40 секунд за 12 часов. За 24 часа отставание составит уже 80 секунд. 80 секунд делим на 4 = 20. В режиме коррекции устанавливаем показание 20, затем переходим в режим установки текущего времени, устанавливаем ближайшее текущее время, например 9.1, и в 9 часов 10 минут, нажатием кнопки «Выбор» выходим в рабочий режим.

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

3. Меню установки температурных и временных интервалов для термостатов

Напомню режимы работы каналов термостатирования (терморегулирования):
— режим термостатирования — поддержание определенной температуры
— режим терморегулирования — поддержание температуры в определенных границах
— режим однократного нагрева (охлаждения)
Все эти режимы подробно описаны в статье , там же приведены подробные инструкции и возможности каждого режима.
С введением в конструкцию таймера реального времени появилась возможность для каждого канала задавать в течении суток один временной интервал работы канала. Для этого в меню введены дополнительные строчки времени включения и выключения каналов.
К примеру, нам надо чтобы 1-й канала термостатирования работал только в ночное время с 23.00 до 6.30. Для этого в 1-м меню (короткое нажатие кнопки «Выбор»):
— после установки верхнего и нижнего температурного предела появятся еще две строчки: «t.On——00,0» и «t.OF——00,0» (тоже самое будет и для второго канала)
— кнопками «+» и «-» устанавливаем: «t.On——23,0» и «t.OF——06,3»
Теперь, в 23.00 1-й канал начнет работать в заданном режиме, а 6.30 канал будет отключен, и так каждые сутки.
По режиму однократного нагрева/охлаждения. Если временной интервал не выбран (время включения/выключения установлены в «0»), то запуск этих режимов осуществляется в ручном режиме, нажатием соответствующей кнопки. Этот режим может работать и по времени.
Допустим нам надо на 2-м канале термостатирования с утра, к 7.00, нагреть воду в баке до 45 градусов, учитывая, что вода в баке до этой температуры нагревается за 25 минут:
— устанавливаем «2.On——00» и «2.OF——45»
— устанавливаем «t.On——06,3» а «t.OF» оставляем по умолчанию «t.OF——00,0»
Теперь, 2-канал автоматически запуститься в 6.30 минут, и по достижению температуры воды 45 градусов отключится.
При использовании режима однократного нагрева/охлаждения совместно с таймером сохраняется возможность и ручного запуска режима, но при этом следует учитывать, что в промежуток времени «t.OF—-t.On» (для предыдущего примера — с 24.00 до 6.30) ручной режим невозможен. Поэтому, для того, чтобы в любой момент времени запустить режим вручную, необходимо «t.OF» устанавливать на 10 минут меньше чем «t.On».

4. Меню установки временных интервалов для таймера

Таймер реального времени позволяет задать два временных интервала в течении суток для управления нагрузкой по таймеру.
Для этого в меню введены дополнительно четыре строчки:
— t1.1 — время включения для первого временного интервала
— t1.0 — время выключения для первого временного интервала
— t2.1 — время включения для второго временного интервала
— t2.0 — время выключения для второго временного интервала
Временные интервалы не должны пересекаться.
Допустим, нам необходимо включать освещение во дворе два раза в сутки: с 21.00 до 0.30 и с 5.30 до 7.00
Устанавливаем:
— t1.1 — 21,0
— t1.0 — 00,3
— t2.1 — 05,3
— t2.0 — 07,0
Теперь нагрузка по таймеру будет включена в 21.00 и в 5.30, и выключена в 0.30 и в 7.00

Второй вариант печатной платы:

Вариант установки FUSE битов:

(22,2 KiB, 2 016 hits)

Рассказать в:

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

Вот из этих соображений я и сделал программу таймера, который отвечает следующим параметрам:
– компактная конструкция и простая схемотехника;
– оперативное кнопочное управление;
– при управлении кнопками, дублирование действий на ЖКИ;
– задание времени с точностью до секунды;
– диапазон отсчета от 1 секунды до 24 часов;
– функция старт, пауза;
– функция сброса отсчета и выставленных значений времени;
– при достижении значения 00.00.00, включается исполнительное устройство;

Все поставленные задачи были реализованы в этом проекте.Схема.

Описание режимов работы таймера

После включения таймера, можно выставлять время, которое нам требуется. Назначение кнопок видно на схеме. После установки, нажимаете кнопку СТАРТ-пауза отсчет начинается. Максимальное выставляемое время 23.59.59.

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

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

Если при его работе таймера нажать кнопку старт-ПАУЗА, таймер остановит отсчет, двойное нажатие кнопки СТАРТ-пауза приводит к возобновлению остановленного отсчета.

Чтобы выключить нагрузку после включения, нужно нажать СБРОС, данные таймера установятся 00.00.01 - нагрузка выключиться. Или выставить новый период отсчета и двойное нажатие кнопки СТАРТ-пауза.

Отображение на ЖКИ символов < ! > означает, что нагрузка отключена (PD3) и при однократном нажатии кнопки СТАРТ начнется обратный отсчет установленного времени.

Кварц внешний 8 MHz, для точности счета.

Для программатора в PonyProg и CodeVisionAVR нужно убрать все галочки с настройки тактового генератора.

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

Внимание! Что касается FUSE-битов. Это основной источник ошибок, приводящих к залочиванию контроллера.
- CKSEL3...0 должны быть НЕзапрограммированы.

В PonyProg и CodeVisionAVR стоят так:

ЖК должен быть на базе контроллера HD44780

16х1, для него в архиве имеется прошивка V-1

или 8х2, в архиве прошивка V-2.
Прошивка V-3, для индикатора 8х2. Добавлено; задействован еще один порт (вывод МК №27 (РС4)) на котором, будет лог. единица пока идет счет, исполнительное устройство включается после нажатия кнопки "старт-пауза" и выключается по окончании отсчета заданного времени.

Работу схемы можно протестировать в proteusе.

Если при симуляции проекта в proteusе некорректно отображаются символы кириллицы на ЖКИ, то для правильного отображения кириллицы на ЖК индикаторе распаковать библиотеку LCDrus.zip (приложена в архиве проекта) в папку models proteusа.
АРХИВ:Скачать с сервера Раздел.

Таймер обратного отсчёта поможет вам точно отмерять интервал времени в диапазоне от 1 секунды до 24 часов.

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

Вот из этих соображений я и сделал программу таймера, который отвечает следующим параметрам:
– компактная конструкция и простая схемотехника;
– оперативное кнопочное управление;
– при управлении кнопками, дублирование действий на ЖКИ;
– задание времени с точностью до секунды;
– диапазон отсчета от 1 секунды до 24 часов;
– функция старт, пауза;
– функция сброса отсчета и выставленных значений времени;
– при достижении значения 00.00.00, включается исполнительное устройство;

Все поставленные задачи были реализованы в этом проекте.

Описание режимов работы таймера

После включения таймера, можно выставлять время, которое нам требуется. Назначение кнопок видно на схеме. После установки, нажимаете кнопку СТАРТ-пауза отсчет начинается. Максимальное выставляемое время 23.59.59.

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

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

Если при его работе таймера нажать кнопку старт-ПАУЗА, таймер остановит отсчет, двойное нажатие кнопки СТАРТ-пауза приводит к возобновлению остановленного отсчета.

Чтобы выключить нагрузку после включения, нужно нажать СБРОС, данные таймера установятся 00.00.01 - нагрузка выключиться. Или выставить новый период отсчета и двойное нажатие кнопки СТАРТ-пауза.

Отображение на ЖКИ символов < ! > означает, что нагрузка отключена (PD3) и при однократном нажатии кнопки СТАРТ начнется обратный отсчет установленного времени.

Кварц внешний 8 MHz, для точности счета.

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

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

ATmega8

1 В блокнот
Линейный регулятор

LM7805

1 В блокнот
Выпрямительный диод

1N4148

1 В блокнот
Конденсатор 22 пФ 2 В блокнот
Конденсатор 0.1 мкФ 1 В блокнот
100 мкФ 1 В блокнот
Электролитический конденсатор 470 мкФ 1 В блокнот
Резистор

470 Ом

1 В блокнот
Подстроечный резистор 5 кОм 1 В блокнот
Резистор

10 кОм

1 В блокнот
Кварцевый резонатор 8 МГц 1


Таймер обратного отсчёта поможет вам точно отмерять интервал времени в диапазоне от 1 секунды до 24 часов.

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

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

– компактная конструкция и простая схемотехника;

– оперативное кнопочное управление;

– при управлении кнопками, дублирование действий на ЖКИ;

– задание времени с точностью до секунды;

– диапазон отсчета от 1 секунды до 24 часов;

– функция старт, пауза;

– функция сброса отсчета и выставленных значений времени;

– при достижении значения 00.00.00, включается исполнительное устройство;

Все поставленные задачи были реализованы в этом проекте.

Описание режимов работы таймера

После включения таймера, можно выставлять время, которое нам требуется. Назначение кнопок видно на схеме. После установки, нажимаете кнопку СТАРТ-пауза отсчет начинается. Максимальное выставляемое время 23.59.59.

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

Как только время достигает 00.00.00, – включается светодиод (в данный момент это имитация включения исполнительного устройства или просто можно пищалку с генератором).

Если при его работе таймера нажать кнопку старт-ПАУЗА, таймер остановит отсчет, двойное нажатие кнопки СТАРТ-пауза приводит к возобновлению остановленного отсчета.

Чтобы выключить нагрузку после включения, нужно нажать СБРОС, данные таймера установятся 00.00.01 – нагрузка выключиться. Или выставить новый период отсчета и двойное нажатие кнопки СТАРТ-пауза.

Отображение на ЖКИ символов < ! > означает, что нагрузка отключена (PD3) и при однократном нажатии кнопки СТАРТ начнется обратный отсчет установленного времени.

Кварц внешний 8 MHz, для точности счета.

Для программатора в PonyProg и CodeVisionAVR нужно убрать все галочки с настройки тактового генератора.

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

Внимание! Что касается FUSE-битов. Это основной источник ошибок, приводящих к залочиванию контроллера.

– CKSEL3…0 должны быть НЕзапрограммированы.

В PonyProg и CodeVisionAVR стоят так:

ЖК должен быть на базе контроллера HD4480

16х1, для него в архиве имеется прошивка V-1

или 8х2, в архиве прошивка V-2.

Работу схемы можно протестировать в proteus’е.

Если при симуляции проекта в proteus’е некорректно отображаются символы кириллицы на ЖКИ, то для правильного отображения кириллицы на ЖК индикаторе распаковать библиотеку LCDrus .zip (приложена в архиве проекта) в папку models proteus’а.