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

Admin 19.01.2016

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


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

Данное устройство — двухканальный термометр, термостат, терморегулятор собран на микроконтроллере ATmega8 и цифровых датчиках температуры DS18B20. Вся информация выводится на два трехразрядных семисегментных светодиодных индикатора. Эта статья завершает цикл статей с использованием микроконтроллера ATmega8 совместно с датчиками температуры DS18B20 (простой термометр, двухканальный термометр) с выводом информации на семисегментные индикаторы. В дальнейшем, мы конечно будем еще использовать датчики DS18B20 и микроконтроллер ATmega8, но уже с другими индикаторами.

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


Некоторые пояснения к некоторым понятиям.
1. Под словом «термостат» подразумевается способность устройства поддерживать определенную температуру
2. Под словом «терморегулятор» подразумевается способность устройства поддерживать температуру в определенных границах
3. Это условное разделение


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

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

Каналы идентичны, каждый канал может работать в следующих режимах:
1. Поддержание определенной температуры (для положительной — только режим «нагрев», для отрицательной — только режим «охлаждение»)
2. Поддержание температуры в определенных границах (положительной, отрицательной, смешанной для режимов «нагрев» и «охлаждение»)
3. Однократный нагрев до определенной температуры, однократное охлаждение до определенной температуры (запуск режима осуществляется вручную)

Шаг установки температуры — 1 градус, чего вполне достаточно. Делать шаг в 0,1 градуса, при точности датчика +-0,5ºС, мне кажется особого смысла нет. А если еще изменение температуры происходит с достаточно большой скоростью, то датчик просто не будет успевать отслеживать текущую температуру с точностью до 0,1.

Диапазон установки температур включения и выключения нагрузки:
— положительная — до +99ºС
— отрицательная — до -50ºС
Включение нагрузки происходит высоким уровнем с вывода порта микроконтроллера, выключение — низким уровнем.
Двухканальный термометр с диапазоном измерения текущей температуры от -55ºС до +125ºС с разрешающей способностью:
— положительные температуры до 99ºС — 0,1 градуса, свыше 99 градусов — до одного градуса
— отрицательные температуры до -9,9ºС — 0,1 градуса, ниже -9,9 градуса — до одного градуса
Период измерений температуры — около 1 сек.
Устройство управляется тремя кнопками
Отключение канала производится путем записи нулевых установок включения и выключения канала
Питание устройства осуществляется от стабилизированного источника напряжением 5 вольт

При возникновении ошибки в работе с датчиком соответствующий номер ошибки выводится на индикатор, а нагрузка отключается:
Еr.1 — нет высокого уровня на линии DQ
Er.2 — нет импульса присутствия от датчика
Er.3 — не восстановлен высокий уровень на линии DQ после импульса присутствия
К сожалению, из-за необходимости организации динамической индикации шести разрядов индикаторов, пока не удалось решить проблему с проверкой кода CRC. Пока эта проблема решена наполовину — проверку СRC возможно проводить, и даже, если не приглядываться, мерцание индикаторов незаметно, но полностью пока она не решена. В данной программе проверки кода CRC нет. Если удастся ввести проверку CRC, то обязательно будет выложена новая программа.
В случае зависания программы сработает сторожевой таймер и микроконтроллер будет перезагружен. Перезагрузка не повлияет на работу устройства, за исключением — будут отключены нагрузки при использовании режима однократного нагрева/охлаждения

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

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

В чем плюсы (на мой взгляд) такого алгоритма:
1. Если нам надо, к примеру, поддерживать температуру в пределах 22-25ºС, то именно эти значения мы и выставляем, не надо искать «центр» и высчитывать величину гистерезиса
2. Режим работы — «нагрев» или «охлаждение» устройством выбирается автоматически, исходя из логики установленных значений включения и выключения нагрузки, к примеру:
— если температура включения +20ºС, а выключения +25ºС, то, естественно выбирается режим «нагрев»
— если температура включения +5ºС, а выключения -10ºС, то, естественно, выбирается режим «охлаждение»

Схема двухканального термостата, терморегулятора на ATmega8:

Схема двухканального термостата, терморегулятора на ATmega8 и Ds18B20
Схема аналогична схеме двухканального термометра. Добавлены три кнопки для управления устройством, выводы микроконтроллера РС3 и РС4 подключаются к блокам управления нагрузками (первому и второму соответственно). На схеме блоки управления не раскрыты, о них мы поговорим в конце статьи.


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

Микроконтроллер ATmega8 (с любыми буквенными обозначениями) с внутренней тактовой частотой 8 МГц.
Алгоритм программы реализован на прерываниях от таймеров-счетчиков Т0 (рабочий режим) и Т2 (режим установки порогов включения/выключения нагрузки).
При включении устройства происходит настройка необходимых данных, загрузка данных из EEPROM, предделители таймеров устанавливаются в СК/64, прерывания от таймеров — по переполнению (период 2 мс).
Разрешается прерывание от таймера Т0, разрешается глобальное прерывание.
Далее, по прерыванию от таймера Т0:
— происходит считывание данных с датчиков DS18B20 и вывод текущей температуры на индикаторы
— сравнение текущей температуры от датчиков со значениями установленных порогов включения/выключения
— управление нагрузками (включение/выключение)
— опрос кнопок
При нажатии на кнопку «Выбор»:
— запрещается прерывание от таймера Т0
— разрешается прерывание от таймера Т2
Далее, по прерыванию от таймера Т2:
— опрос кнопок
— установка порогов включения/выключения для двух каналов
— запись данных установок в EEPROM
— после установки порогов включения/выключения — аппаратный сброс
Далее — по кругу.


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

Управление устройством осуществляется тремя кнопками:
1. «Выбор»
— переход в режим установки порогов включения/выключения каналов
— выбор очередного пункта меню установки порогов включения/выключения каналов
— аппаратный сброс (автоматически, после установки порогов)
2. «+» — увеличение показаний (принудительное включение первого канала в режиме однократного нагрева\охлаждения)
3. «-» — уменьшение показаний (принудительное включение второго канала в режиме однократного нагрева\охлаждения)
При однократном нажатии кнопок №2 и №3 происходит изменение показаний на 1 градус, при длительном нажатии — автоматическое увеличение/уменьшение показаний на 1 градус с приемлемой периодичностью
При первоначальном включении устройства в установках порогов включения/отключения нагрузки записаны нули. При повторном включении устройства, в режиме установки порогов будут высвечиваться ранее записанные установки.


1. Режим термостатирования

В этом режиме необходимо установить одинаковые параметры включения и отключения нагрузки.
При этом надо учитывать, что поддержание температуры в положительном диапазоне температур осуществляется в режиме «Нагрев».
К примеру, нам надо, на нагрузке №1 поддерживать постоянную температуру +45ºС. Выставляем температуру включения и температуру выключения 45ºС.
Если температура ниже установленного значения, устройство включит нагрузку. При достижении температуры +45ºС, устройство отключит нагрузку. При «попытке» температуры опуститься ниже +45ºС (на 0,1 градуса) устройство включит нагрузку. При достижении температуры +45ºС устройство выключит нагрузку.
Поддержание температуры в отрицательном диапазоне осуществляется в режиме «Охлаждение».
К примеру, нам надо, на нагрузке №2 поддерживать постоянную температуру -7ºС. Выставляем температуру включения и выключения нагрузки -7ºС.
Если температура выше -7ºС (к примеру +1 градус) устройство включит нагрузку. При достижении температуры -7ºС, устройство отключит нагрузку. При увеличении температуры на 0,1 градус (-6,9ºС) нагрузка будет включена.

Алгоритм установки режима термостатирования


2. Режим терморегулирования

В этом режиме выбор режима «Нагрев» или «Охлаждение» осуществляется автоматически
Пример:
1. Допустим, нам необходимо поддерживать температуру в помещении путем его нагрева в пределах от +18ºС, до +21ºС:
— устанавливаем температуру включения +18ºС
— устанавливаем температуру выключения +21ºС
Устройство автоматически определяет, что выбран режим «Нагрев», при этом:
— если температура выше +21ºС, нагрузка будет выключена, при опускании температуры до +18ºС — устройство включит нагрузку, а при достижении температуры +21ºС — выключит нагрузку, далее по кругу
— если температура ниже +18ºС — устройство включит нагрузку, при повышении температуры до +21ºС — устройство выключит нагрузку, при опускании температуры до +18ºС — устройство включит нагрузку, далее — по кругу
2. Допустим, нам необходимо поддерживать температуру в холодильной установке путем охлаждения в пределах от -4ºС, до -6ºС
— устанавливаем температуру включения -4ºС
— устанавливаем температуру выключения -6ºС
Устройство автоматически определяет, что выбран режим «Охлаждение», при этом:
— если температура ниже -6ºС ( к примеру -8ºС), нагрузка будет выключена, при повышении температуры до -4ºС — устройство включит нагрузку, при достижении температуры -6ºС — устройство выключит нагрузку
— если температура выше -4ºС, устройство включит нагрузку, при понижении температуры до -6ºС — устройство отключит нагрузку, при достижении температуры -4ºС — нагрузка будет включена, далее — по кругу

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

Алгоритм установки режима терморегулирования


3. Режим однократного нагрева/охлаждения до определенной температуры

Не всегда необходимо поддерживать постоянную температуру. К примеру, необходимо утром и вечером нагревать воду в самодельном титане (или в титане с неисправным блоком управления) до определенной температуры, или что-то периодически охлаждать. Данный режим как раз пригодится в таких случаях.
1. Допустим, на нагрузке №1, нам необходимо периодически подогревать воду до +90ºС:
— для температуру включения устанавливаем нулевые значения
— температуру выключения устанавливаем +90ºС
— когда потребуется включить этот режим — нажимаем кнопку №2, при этом, если температура выше +90ºС — нагрузка останется в выключенном состоянии, если температура ниже +90ºС — устройство включит нагрузку, при достижении температуры +90ºС — устройство отключит нагрузку. Следующее включение возможно только по нажатию кнопки №2.
2. Допустим, на нагрузке №2, иногда необходимо что-то охлаждать до температуры -15ºС:
— для температуру включения устанавливаем нулевые значения
— температуру выключения устанавливаем -15ºС
— когда потребуется включить этот режим — нажимаем кнопку №3, при этом, если температура ниже -15ºС — нагрузка останется в выключенном состоянии, если температура выше -15ºС — устройство включит нагрузку, при достижении температуры -15ºС — устройство отключит нагрузку. Следующее включение возможно только по нажатию кнопки №3.

Алгоритм установки однократного нагрева, охлаждения


4. Отключение каналов управления нагрузками

Если какой-либо канал, или оба канала, не используются — в этом случае эти каналы необходимо отключить.
Отключение канала (каналов) производится путем записи нулевых значений во все установки. По этой причине, термостатирование при установке порогов включения/выключения в 0ºС — не возможна.

Отключение блоков управления


Подключение нагрузки к термостату (терморегулятору) на ATmega8

Нагрузка может быть активной (лампочки накаливания, ТЭНы, электронагревательные приборы …)
Нагрузка может быть реактивной — емкостной и индуктивной. В практике чаще всего мы сталкиваемся с индуктивной нагрузкой (электродвигатели, приборы в которых имеются трансформаторы, электронная техника, катушки индуктивности …)
Кроме того, иногда приходится управлять нагрузками с постоянным током.

Самый универсальный способ управления любой нагрузкой — механическое реле. С помощью реле мы можем управлять любыми видами нагрузки.
В тоже время, если необходимо управлять только активными нагрузками, наверное предпочтительнее будет использовать в схеме симисторное управление.
Симисторы (триаки) очень удобны в управление активными нагрузками в сетях переменного тока.
Реле имеет ограниченный ресурс работы (хотя и очень большой) — обычно около 100 000 переключений и может коммутировать нагрузку в несколько киловатт. Надо учитывать, что при эксплуатации реле с нагрузкой, потребляющей мощность близко к предельным паспортным значениям реле, ресурс работы реле может снизиться на порядок. Симисторы имеют неограниченный ресурс работы при правильной эксплуатации (подключать нагрузку с мощностью не превышающей паспортной мощности симистора, а лучше выбирать симистор с запасом прочности). При управлении нагрузками мощностью 300-400 ватт симисторы могут работать без радиатора, при большей нагрузке необходимо ставить симистор на радиатор. В сети можно найти порядок расчета площади радиатора для триака.
При использовании в конструкции симисторов, очень желательно делать гальваническую развязку микроконтроллера от сети 220 вольт. Для этого обычно используют оптосимисторы (оптотриаки, драйверы управления симиситорами)


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

Подключение нагрузки к термостату

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

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

Схеме подключения электрического реле

И еще несколько схем подключения нагрузки к микроконтроллеру

Схемы подключения симисторов и оптосимисторов


Некоторые справочные данные:

Симистор BT138:

Тринистор BT138

Транзистор 2N7000:

Полевой транзистор 2N7000

Диод 1N5819:

Выводы диода Шоттки 1N5819

Характеристики некоторых симисторов:

Характеристики симисторов


Программа двухканального термометра, термостата, терморегулятора на ATmega8 и DS18B20:

  Программа двухканального термостата в HEX коде (13,5 KiB, 5 207 hits)

  Программа в Algorithm Builder (42,4 KiB, 93 587 hits)

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

Настройка FUSE-битов:

Установка FUSE-битов

 


В магазине сайта «МирМК-SHOP» вы можете заказать необходимые детали для сборки термостата/терморегулятора.


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


(42 голосов, оценка: 4,95 из 5)
Загрузка...
Двухканальный термостат, терморегулятор, термометр на микроконтроллере ATmega8 и датчиках DS18B20
Published by: Мир микроконтроллеров
Date Published: 01/25/2016


Комментарии

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

  1. Здравствуйте!
    Скажите, не так давно искал решение по термостатированию на логическом алгоритме сравнения. Нашел интересный пост — http://forum.amperka.ru/threads/Сколько-будет-стоить-заказ.7676/
    ,где на несложной, вроде, задаче поломали копья «именитые мэтры»
    На Вашей площадке что-то подобное выполнялось?

  2. Здравствуйте, Конструкция простая и рабочая, как топор. А как добавить SMS оповещение с помощью DIY KIT GSM GPRS M590 с AliExpress?

    • Здравствуйте Максим!
      Добавить SMS оповещение можно, но придется очень серьезно дорабатывать как программу, так и конструкцию.
      Сейчас в разработке находится конструкция с дистанционным управлением нагрузками, а Ваш вопрос навел на мысль добавить в конструкцию SMS оповещение и управление устройством с телефона. Спасибо.
      С уважением, Admin.

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

    • Здравствуйте Геннадий!
      Необходим программатор.
      Также Вы можете купить запрограмированный микроконтроллер в интернет-магазине сайта (бесплатно).
      С уважением, Admin

    • Здравствуйте Вячеслав!
      То, что не работает в Протеусе, ничего страшного.
      Такое бывает.
      Конструкция полностью работоспособна.
      С уважением, Admin.

      • С глубоким уважением! Перед тем как моделировать в Proteuse7 собрал на макетке. Может быть есть ссылки на данное устройство в действии (видео, исходники или т.д).

        • Здравствуйте Вячеслав!
          К сожалению, вещественных доказательств предоставить не могу.
          Программу скачало более 4000 человек, никто не высказывал своих замечаний.
          Есть исходник в Algorithm Builder, могу выслать.
          Ниже есть комментарии Андрея, собравшего устройство.
          С уважением, Admin.

          • Здравствуйте!
            Вышлите,пожалуйста,исходник в Algorithm Builder для двухканального
            термостата и если есть,для трёхканального.
            Спасибо.
            Валерий bwall55@i.ua

          • Здравствуйте Валерий!
            Исходники в Algorithm Builder выложил в соответствующих статьях.
            С уважением, Admin.

  4. Здравстуйте такой вопрос. Если нужен один канал для управления, то второй можна выкинуть из схемы?

  5. Добрый день.
    Подскажите, какой программой программируется МК?
    У меня Avr-OspII
    Затрудняюсь, как правильно в этой программе установить Fuse и Lock биты.

    • Здравствуйте Геннадий!
      В программе Avr-OspII необходимо в разделе «Fuse Bits» выбрать строчку:
      — Int RC Osc 8 Mhz Start-Up Time: 6 CK + 64 ms
      С уважением, Admin.

  6. Подскажите, пожалуйста, с помощью какой программы программируем МК?
    У меня Avr-Osp-II и программатор AVR910 PROTTOSS.
    Как правильно выставить Fuse и Lock биты.

    Заранее благодарю за помощь.

  7. Здравствуйте,как можно найти прошивку? ваша ссылка не работает! Спасибо!!!

    • Здравствуйте Андрей!
      Проверил ссылку — скачивается нормально.
      Ниже ссылки есть фраза: «Скачать программу с ЯндексДиска». Можете скачать файл по ней (там два файла одинаковых — один заархивирован, второй — нет).
      Если не получится — пишите, что-нибудь придумаем.
      С уважением, Admin.

      • Добрый день.
        Ссылка может не работать из за браузера. В Mozilla Firefox действительно не открывается, использую Internet Explorer.

        Автору огромнейшее спасибо за статью и прошивку. Собрал пару термостатов для родственников — довольны, всё работает как часы.

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

        • Здравствуйте Андрей!
          Спасибо за «Спасибо»!
          Версию прошивки для индикаторов с ОА обязательно сделаю и выложу, но позже, после 10 сентября.
          С уважением, Admin.

  8. Добрый день. Спасибо большое за устройство и статью. Собрал термостат для включения насоса отопления по температуре носителя (измеряею температуру подачи и обратки) у себя дома. После сборки все сразу заработало, пока не начал проверять работу по нужным температурам +40-+70 градусов Цельсия. И вот неприятность при нагреве датчика температуры выше 45 градусов, индикаторы начинают подмаргивать и появляется «Err.2» — нет импульса от датчика. Менял датчики, источник питания, контроллер ничего не помогло. Ниже 45 град все отлично работает. Подскажите, пожалуйста, как избежать данной ошибки?

    • Здравствуйте Андрей!
      Индикаторы начинают мерцать в случае появления ошибки от датчика (нарушается алгоритм индикации).
      Устройство тестировалось в течении нескольких недель, сбоев не наблюдалось.
      Обычно, ошибки от датчика могут «вылезать» при длинном соединительном проводе.
      Поэкперементируйте с номиналом подтягивающего резистора 4,7 кОм (1-5 кОм)
      Кроме того, попробуйте залить программу от трехканального термостата (там добавлен таймер, который можно не использовать). В этой программе внутренняя частота микроконтроллера более стабильна за счет учета значения калибровочной ячейки для внутренней частоты 8 мГц.
      С уважением, Admin.

      • Добрый день. Спасибо, Admin, за бысрый ответ. Все испробывал по вашим рекомендациям, ничего не помогло. Решил еще раз подумать — баг от прошивки не зависит, подтяжка по питанию датчика не влияет, а замена источника и питания и датчиков не принесла результата в прошлый раз. Остается только контроллер, но я менял их, аж 5 штук, с разными прошивками. И тут я вспомнил, все эти 5 контроллеров atmega8 я заказывал на ebay одной партией. Взял другой контроллер с электронных часов, прошил, и вуаля, все заработало!!!! Итог: у китайцев партия контроллеров оказалась с багом, к сожелению знаний не хватает, в чем именно этот баг может быть.
        Спасибо, еще раз, за данное устройстово, рад что все теперь работает.

  9. Здраствуйте,я новичек в мире микроконтроллеров,поэтому прошу не судить строго и помочь в освоении мк.Яхотел бы повторить конструкцию термостата,но на atmega8-8pu других контроллеров под рукой пока нет,возможно ли использовать эти контроллеры в данной конструкции и что необходимо будет изменить.Спасибо.

    • Здравствуйте Иван!
      Микроконтроллер подойдет, в конструкции ничего менять не надо.
      С уважением, Admin.

    • Здравствуйте Dmitry!
      Прошивка — нажимаете на надпись «Двухканальный термостат/терморегулятор в НЕХ коде»
      Схема — щелкаете левой кнопкой по схеме — она выделится на отдельной странице — щелкаете по схеме правой кнопкой и выбираете «Сохранить как»
      С уважением, Admin.

    • Доброго дня!
      Печатная плата для этого устройства не разрабатывалась.
      С уважением, Admin.

  10. Здравствуйте,Admin!В архиве есть файл прошивки HEX, но нет FUSE битов!Как быть?

    • Здравствуйте Алексей!
      Перед программированием МК, FUSE- битами необходимо установить тактовую частоту МК 8 МГц от внутреннего RC- генератора.
      Картинку прикрепил за файлом прошивки.
      С уважением, Admin.

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

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