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

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

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

Некоторые пояснения к некоторым понятиям. 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:

Схема аналогична схеме двухканального термометра. Добавлены три кнопки для управления устройством, выводы микроконтроллера РС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 вольт. Для этого обычно используют оптосимисторы (оптотриаки, драйверы управления симиситорами)

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

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

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

📎📎📎📎📎📎📎📎📎📎