Терморегулятор на pic

простой, универсальный, с гистерезисом

Термометр позволяет измерять температуру, а также осуществлять функции термостата с любым гистерезисом. Кроме того, я постарался сделать его максимально универсальным, поэтому здесь размещено две схемы, одна под индикатор с общим анодом (ОА), другая под индикатор с общим катодом (ОК). Также есть возможность применять датчики DS18B20 и DS18S20.

Характеристики
1 Диапазон измеряемых температур -55°…+125°C
2 Точность измерения 1°C
3 Гистерезис -40°…+125°C
4 Индикация Динамическая
5 Разрядов индикатора 3

ОПИСАНИЕ ПРОЕКТА

Управление осуществляется 2-мя кнопками. Нажатием кнопки +1 активируется режим настройки температуры ВКЛЮЧЕНИЯ реле. Кратковременно выскакивает надпись On и далее мигают цифры установленной температуры включени. Кнопками +1 и -1 можно изменять это значение от -55°C до +125°C. После установки температуры нужно подождать несколько секунд, на дисплее кратковременно мигнут три тире (—), новые данные будут записаны в EEPROM и прибор перейдет в основной режим отображения температуры. Аналогично, нажав кнопку -1 на дисплее появится надпись OFF и начнет мигать значение температуры ОТКЛЮЧЕНИЯ реле. Точно так же после паузы в несколько секунд появятся три тире и произойдет сохранение в EEPROM температуры отключения реле.

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

Для включения режима калибровки нужно удерживая кнопку +1 подать питание. Так же этот режим автоматически включается при первом включении устройства, после прошивки микроконтроллера. В этом режиме сначала поочередно на несколько секунд будут отображаться цифры 123 то под общий АНОД, то под общий КАТОД. В момент когда цифры отображаются правильно нужно нажать любую кнопку, режим индикации будет запомнен. Далее на дислее будет мигать надпись или (-S-) или (-b-). Кнопками можно выбрать тип датчика, 18 S 20 или 18 B 20 — -S- и -b- соответственно. А не нажимая кнопки несколько секунд выбранный датчик будет запомнен и все настройки сохранятся в EEPROM. Термостат перейдет в основной режим работы.

В случае получения ошибочных данных с датчика на дисплее появляется надпись (Err) — ошибка. Ошибка появляется только в том случае, если ошибочные данные получены с датчика 3 раза подряд (защита от случайных сбоев). При ошибке функции термостата будут выключены, реле отключено.

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

Характеристики:
– Номинальное напряжение, частота сети, В/Гц __220 / 50;
– Потребляемая мощность, кВт ____ 1 / 2 кВт;
– Отдача тепла, м3/час _____200;

Управление
Тепловентилятор есть, теперь необходимо сделать умную систему управления и контроля. Поискав в интернете нашлась схема из журнала Р-К №11/2008г., – «Цифровой термостат». Конструкция оказалась простой, как по мне, с двухстрочным цифровым экранчиком. Ниже приведена схема, нарисованная в программе SPlan 7.0.

По характеристикам термостат способен задавать температуру от -25 до +75°С, при шаге 0,25°С. Так же можно задать в предустановках меню спад и нарастание температуры шагом по 0,1°С.

Работа с термостатом осуществляется с помощью кнопок. Кнопками «+» и «-» (S1 и S2) определяется значения температуры или спада (нарастания), кнопка «MODE» (S3) – режим установки.

Для того чтобы задать температуру поддержания, нажимаем кнопку S3 и удерживаем её пока на экране не засветится «SET TEMPERATURE».

Управление схемой происходит микроконтроллером PIC16F628. Тактовая частота организована кварцом ZQ1 с частотой резонанса – 4МГц.

Читайте также:  Ротвейлер рост в холке

Управление тепловентилятором происходит с симистором VS1 – BT136. Управление симистором осуществляется при помощи оптопары MOC3043. Силовую схему управления тепловентилятора я дополнил промежуточным реле. Катушка реле стала играть роль нагрузки симистора, а её контакты запараллелил и скомутировал в цепь питания тепловентилятора.

Схема оперативного питания выполнена на малогабаритном герметичном трансформаторе, у него сдвоенная вторичная обмотка, 9V-0-9V, на номинальный ток 100mA. Выпрямитель исполнен на на двух диодах VD1и VD2. Если трансформатор с одной понижающей обмоткой необходимо применить схему моста. Контроллер и дисплей запитан от +5V через стабилизатор напряжения А2 (7805).

Для отключения подсветки пин 16 экрана можно отключить, или как я поставил выключатель.
Печатная плата термостата, чисто моя разработка.

В файле термостат.lay есть несколько страниц.

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

В программе выставлены два порога температуры — нижний порог(Tn) и верхний порог(Tv).
При выключенном вентиляторе
Пока температура ниже верхнего порога Tv регулятора, на выходе микроконтроллера GP1 поддерживается уровень логического нуля, то есть выход обнулён, транзистор VT1 закрыт, так как отсутствует базовый ток. При достижении температуры верхнего порога на выходе GP1 микроконтроллера выставляется логическая единица. Транзистор открывается, реле соответственно включается и включает вентилятор охлаждения.

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

Объект охлаждён, и всё повторяется до тех пор, пока присутствует напряжение питания.

Более наглядно процесс можно увидеть на графике:

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

При программираммировании микроконтроллера с помощью простых программаторов типа IcProg PonyProg присутствует вероятность стереть ячеку памяти с записанной константой. Затереть эту ячейку случайно можно и фирменным PicKit2 и такие случаи бывали при случайной остановке процесса прошивки.
Если эта константа окажется стёрта, то программы, расчитанные на работу с встроенным генератором PIC12F629 просто отказываются работать. Выход прост.

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

Схема подключения программатора PicKit2 к микроконтроллеру PIC12F629 показана на рисунке:

Применение прcотой схемы позволяет обойтись минимумом компонентов и максимально удешевить изделие, но есть и свои минусы. От нормального индикатора температуры пришлось отказаться — никаких цифр, некогда на них смотреть, не нужны, да и индикатор покупать не придётся, экономия опять-же. Но может возникнуть необходимость проконтролировать работу схемы терморегулятора. Максимум, что можно здесь придумать для индикации — это три светодиода, которые покажут три диапазона температуры:

— больше больше верхней уставки Tv
— норма между уставками Tn и Tv
— меньше меньше нижней уставки Tn

Индикация температурных диапазонов работает так:
Когда температура , измеренная датчиком превысит верхнюю уставку , включается светодиод "больше" красного цвета. Зелёный и синий светодиоды при этом погашены

Температура , измеренная датчиком находится в диапазоне от Tn до Tv . Включен зелёный светодиод, а красный и синий выключены

Температура меньше нижней уставки Tn . Включен синий светодиод, зелёный и красный выключены.

В этом варианте программы так-же реализована проверка подключения датчика и проверка корректности контрольной суммы считанной RAM датчика DS18B20.

Читайте также:  Британский мраморный рыжий кот

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

Для увеличения надёжности всей системы задействован сторожевой таймер WDT , это для самых маловероятных сбоев при каких-либо очень сильных помехах по цепям питания. При срабатывании WDT таймера, программа перезапускается и процесс продолжается.
Сбой алгоритма регулятора при этом по времени занимает около 18 миллисекунд и практически незаметен на фоне секундного интервала измерения температуры.

Скачать программу конвертера температуры в формат данных датчика DS18B20 можно по ссылке: Converter_DS18B20.rar

Уставки Tn и Tv задаются для данного варианта термостабилизатора в EEPROM и занимают четыре ячейки. Первые два байта EEPROM — младший и старший байты нижней уставки регулятора Tn. Затем два байта — младший и старший байты верхней уставки Tv. Для температуры уставок 25 и 27 градусов в EEPROM эти ячейки выглядят вот так :

Как можно видеть на рисунке, байты переставлены местами, то есть сначала стоит младший байт, потом старший байт уставки температуры. Первоначально в HEX виде значенние температуры 25 градусов равно 0x0190, а для 27 градусов 0x01B0. Изменить эти ячейки можно на любые необхдимые значения, во всём диапазоне температур, которые поддерживаются датчиком DS18B20. Поддерживаемый диапазон от -55 до +128 градусов цельсия.

Уставки температуры возможно изменить в любом программаторе, в котором поддержано редактирование EEPROM микроконтроллеров, и такая поддержка есть в большинстве программ программаторов.

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

Изменяется график регулирования температуры:

Уставки так-же двухбайтные при необходимости изменяются в 4-х первых ячейках EEPROM. Первые два байта младший и старший байты нижнего порога температуры Tn, следующие два байта младший и старший байты верхнего порога температуры Tv.

Дискретность уставок терморегулятора составляет 0,0625 градуса цельсия и при выставлении одинаковых уставок возможно получить терморегулятор, поддерживающий температуру с точностью до 0,1. 0,5 градусов цельсия. Точность подержания заданной температуры зависит уже от точности самого датчика DS18B20 и мощностей нагрева и охлаждения. Как заявлено в документации, абсолютная погрешность датчика составляет 0,5 градусов цельсия. При таком варианте использования, когда нужна точность до десятых долей градуса может понадобитсся дополнительная коррекция уставок терморегулятора для каждого DS18B20 по образцовому термометру, размещённому рядом с датчиком.

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

Используя ту-же самую схему, в терморегуляторе возможно применить микроконтроллер PIC12F683. В микроконтроллере PIC12F683 отсутствует корректирующая константа в последней ячейке памяти программ, что представляет собой явный плюс. Константы нет, значит и при прошивке нет никакого риска повредить константу. Этот микроконтроллер гораздо проще при прошивке. Программа незначительно изменена, что не коснулось алгоритма. Устройство будет работать точно также, как и терморегулятор на PIC12F629. Уставки в начальных 4-х ячейках EEPROM, в соответствии с ними будет поддерживаться необходимая температура. Здесь так-же два варианта программ, для охлаждения и для нагрева.

Кроме управления вентилятором охлаждения радиоаппаратуры, возможно ещё несколько вариантов применения схемы терморегулятора.

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

Читайте также:  Понос пчел зимой

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

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

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

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

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

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

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

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

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

ohl_p12f629_08.hex — управление охлаждением
Терморегулятор с зоной нечуствительности и двумя двухбайтными уставками в 0. 3-й ячейках EEPROM. Индикация меньше/норма/больше диапазонов температуры. Проверка наличия датчика DS18B20 и проверка CRC при считывании RAM датчика. Сигнализация ошибок. WDT таймер задействован.

nag_p12f629_00.hex — управление нагревом
Терморегулятор с зоной нечуствительности и двумя двухбайтными уставками в 0. 3-й ячейках EEPROM. Индикация меньше/норма/больше диапазонов температуры. Проверка наличия датчика DS18B20 и проверка CRC при считывании RAM датчика. Сигнализация ошибок. WDT таймер задействован.

ohl_p12f683_0.hex — управление охлаждением
Терморегулятор с зоной нечуствительности и двумя двухбайтными уставками в 0. 3-й ячейках EEPROM. Индикация меньше/норма/больше диапазонов температуры. Проверка наличия датчика DS18B20 и проверка CRC при считывании RAM датчика. Сигнализация ошибок. WDT таймер задействован.

nag_p12f683_0.hex — управление нагревом
Терморегулятор с зоной нечуствительности и двумя двухбайтными уставками в 0. 3-й ячейках EEPROM. Индикация меньше/норма/больше диапазонов температуры. Проверка наличия датчика DS18B20 и проверка CRC при считывании RAM датчика. Сигнализация ошибок. WDT таймер задействован.

Share

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

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