Трехканальный термостат, терморегулятор, таймер на ATmega8

Admin 09.03.2016

Доброго дня уважаемые друзья!
Приветствую Вас на сайте «Мир микроконтроллеров»


Трехканальный термостат, терморегулятор, таймер на ATmega8 и DS18B20

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

Трехканальный термостат, терморегулятор, таймер на 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

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

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

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

HEX-файл в EEPROM

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

Датчики 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

Меню установки параметров каналов


Печатная плата конструкции (автор Роман):

pechatnaya-plata-termostata-teymera


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

Трехканальный термостат, таймер

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


  Файл программы в НЕХ коде (22,2 KiB, 91 hits)

  НЕХ-код для записи в ЕЕPROM (169 bytes, 883 hits)

  Схема конструкции в "Cadsoft Eagle" (886,7 KiB, 812 hits)

  Печатная плата термостата-таймера в SpintLayout (367,4 KiB, 1 258 hits)

  Программа в Algorithm Builder (61,9 KiB, 183 536 hits)

  Второй вариант печатной платы в формате lay6 (186,9 KiB, 90 hits)

Скачать программу с ЯндексДиска


Установка FUSE-битовfyuzyi-dlya-pony-prog


Все необходимы радиодетали для сборки этой конструкции, а также запрограммированный микроконтроллер ATmega8-16PU, вы можете заказать в интернет-магазине сайта «МирМК-SHOP»

Набор трехканальный термостат, таймер на ATmega8


Другие конструкции на микроконтроллерах:
1. Простые электронные часы на микроконтроллере ATyni26, с использование микросхемы часов реального времени DS1307
2. Простой термометр на микроконтроллере ATmega8 и датчика температуры DS18B20
3. Двухканальный термометр на микроконтроллере ATmega8 и датчиках температуры DS18B20
4. Двухканальный термостат, терморегулятор на ATmega8 и датчиках DS18B20
5. Двухканальный термометр, термостат, терморегулятор с возможностью работы по времени, одноканальный таймер реального времени на ATmega8 и датчиках DS18B20
6. Двухканальный термометр, часы на ATmega8, датчиках температуры DS18B20, RTC DS1307, LCD 1602

(62 голосов, оценка: 5,00 из 5)
Загрузка...
Двухканальный термометр, термостат и терморегулятор с управлением по времени, одноканальный таймер реального времени
Published by: Мир микроконтроллеров
Date Published: 03/20/2016

Комментарии

Трехканальный термостат, терморегулятор, таймер на ATmega8 — 31 комментарий

  1. Уважаемый Админ!
    Выложите пожалуйста правильный hex на 3х канальный термостат.
    Доступный htx после скачивания имеет объём 14кВ и работает как двухканальный.

    • Здравствуйте Вадим!
      Файл заменил, спасибо за замеченный косяк.
      Видимо, при обновлении программы сайта произошел сбой (очень редко, но бывает)
      С уважением, Admin.

  2. Доброго времени суток!
    Просмотрите почту!
    «Палата для Трехканальный термостат от Романа»

    • Здравствуйте Роман!
      Второй вариант печатной платы разместил на странице сайта.
      Спасибо!
      С уважением, Admin.

  3. Доброго времени суток!
    Просмотрите почту!
    Идея хорошая, второй вариант платы доработан.

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

    • Здравствуйте Андрей!
      Двухканальный термостат в HEX-файле имеет размер 14 килобайт, трехканальный с таймером имеет размер почти 23 килобайта.
      На всякий случай отправляю Вам на почтовый адрес оригинал программы в НЕХ коде.
      Если причина окажется в выложенном на странице файла, напишите пожалуйста, чтобы я смог заменить его на сайте.
      С уважением, Admin.

  5. Здравствуйте Вадим! Устройство собрал сам.Сегодня залил прошивку с этой страницы-работает как двухканальный термостат без выбора таймеров??? Контроллер ATMega8L-8PU,программирую пони-прог через лпт программатор.

  6. Здравствуйте Владимир!
    Конструкцию собрал,после нескольких вкл-выкл на индикаторах -0,1.Считал епром вместо калибровочной константны B1 стоит C1.Записываю B1 прибор опять работает.Прошивка еще первая,эту не пробывал.

    • Здравствуйте Павел!
      Извините, сразу ответить не мог.
      Каждый МК имеет свой индивидуальный калибровочный байт для частот 1,2,4,8 — конкретно для Атмеги. Для покупателей в магазине я записываю этот байт для конкретного МК.
      Вы купили прибор или сами собрали? Сообщите пожалуйста и мы решим проблему.
      С уважением, Турчак ВАдим.

  7. Здравствуйте!
    А есть в спринт лаут у вас печатная плата автора Романа?
    Не могли бы отправить ее на электронную почту:djsurround59@yandex.ru
    И можно ли залить прошивку от трехкананального термостата,на схему двухканального?
    Скажется ли это как то на работе?

  8. Здравствуйте, Вадим.
    Очень понравилась ваша разработка. У меня к Вам просьба-предложение доработать Вашу конструкцию до устройства ротации 2х кондиционеров. Программист с меня никакой, сколько не про бывал. Если Вас за интересует опишу логику работы ротатора. В любом случае благодарен, конструкция великолепна!

    • Здравствуйте Дмитрий!
      Пишите на почтовый ящик (данные на последней странице сайте «О сайте»)
      С уважением, Турчак Вадим.

  9. Добрый день!
    Спасибо за конструкцию, в тестовом режиме, т.е. пока без нагрузки проверено, работает, если надо, есть разводка плат в Sprint Layout, по ним собрано, вроде ошибок нет.

    • Здравствуйте Роман!
      И Вам спасибо за «спасибо»
      Если не жалко, поделитесь платой, вставлю в статью.
      Файл платы можно отправить на почтовый ящик:
      turchakvadim@gmail.com
      С уважением, Admin.

    • Здравствуйте Роман!
      Спасибо за печатную плату устройства, выложил в статье.
      С уважением, Admin

  10. Здравствуйте!
    Очень заинтересовался Вашим 3-х канальным термостатом,но прежде чем покупать детали,решил смоделировать устройство в Proteus v.8.4.
    При установке фьюзов SUT0=1,SUT1=1(как указано),Proteus выдает:»Wrong SUT fuse value:3.RealTime Simulation faled to start». При других значениях SUT:»New OSCCAL value has changed frequency on 12.79% what is more than recommended 2%.Simulation is not running real time due to axcessive CPU load» и на индикаторе беспорядочно мигают сегменты.
    К сожалению, к статье нет ни одного комментария, поэтому подскажите, пожалуйста, это глюки Proteus или возможны ошибки в схеме, в прошивке, в установке фьюзов? Кто-нибудь собирал устройство вживую?
    Заранее благодарен!

    • Здравствуйте Владимир!
      Установка фьюзов SUT должна быть — SUT0=0, SUT1=1 (можно 00 или 10 соответственно, картинку в статье поменял).
      Протеусом не пользуюсь, поэтому в чем причина сказать не могу.
      Схема устройства и прошивка без ошибок, конструкция тестировалась длительное время.
      С уважением, Admin.

      • Спасибо за оперативность,admin.
        Плюнул я на этот Протеус,буду собирать «вживую». И еще возник вопрос — можно ли в термостате использовать контроллер ATMega8L-8PU ?

        • Здравствуйте Владимир!
          Микроконтроллер ATmega8L в конструкции использовать можно.
          С уважением, Admin.

          • Уважаемый admin !
            Хочу выразить огромную благодарность за разработку трехканального термостата.
            Ваше устройство собираюсь использовать вместо сгоревшей платы управления двухкамерного однокомпрессорного холодильника LIEBHERR NO FROST.
            1 канал — управление компрессором,2 канал (при некоторых доработках) — управление ЭМ клапаном, 3 — таймер включения оттайки.
            На столе все работает прекрасно,теперь буду адаптировать к своему холодильнику.
            Еще раз большое спасибо автору!
            С уважением, Владимир.

          • Здравствуйте Владимир!
            Большое спасибо за добрые слова!
            С уважением, Admin.

    • Уважаемый admin!
      Я уже отзывался с благодарностью о Вашем устройстве. Но, термостат прекрасно работает только при положительных температурах. Адаптировать к морозильной камере холодильника у меня не получилось. Поясню (вставить спецсимволы нет возможности, поэтому пишу текстом):
      Выставляю на 1 или 2 канале,например:
      ON=-3; OF=-8:
      температура падает:
      t=+бесконечность — off
      t=+8 — on
      t =-8 — off
      температура растет:
      t=-бесконечность — off
      t=-3 — on
      t=+8 — off

      При ON=+t ; OF=-t , работает как положено.
      Пожалуйста, поправьте прошивку!
      С уважением, Владимир.

      • Здравствуйте Владимир!
        Ошибку работы программы обязательно исправлю.
        Владимир, у меня до 9 сентября нет возможности для работы с программой, но 10 сентября отправлю на Ваш почтовый ящик исправленную программу (ошибку я нашел, но не могу пока исправить саму программу)
        С уважением, Admin.

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

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