Двухпозиционный (ON/OFF) контроллер с датчиком TMP35

Это простейшая система управления подогревом (включить/выключить), которая использует в качестве измерителя температуры датчик TMP35.

Двухпозиционный (ON/OFF) контроллер

Двухпозиционный (ON/OFF) контроллер

Что может данная система управления. Она включает и выключает подогреватель при заданных температурах. Выдает сигнализацию по высокой и низкой температуре. Все события выводятся на LCD-дисплей. Система позволяет настраивать все необходимые параметры и записывать их в память Arduino. В системе есть полностью ручной режим (включение/выключение).

СОСТАВ СИСТЕМЫ

PLC Arduino UNO с шилдом Sensor Shield v 5.0 (питание 7-12 В постоянного тока), LCD-дисплей с шиной I2C, DC-DC конвертер для питания реле и дисплея, реле включения и выключения подогревателя и реле сигнализации, кнопочный пост с тремя кнопками и температурный датчик TMP35.

Немного о самом датчике TMP35. Главный его плюс - это удобная зависимость выходного напряжения от температуры : изменение в 1ºC дает 10 мВ. Причем 0ºC - это 0 мВ, 25ºC - 250 мВ, 100ºC - 1000 мВ и т.д. То есть этот датчик может работать "из коробки", его не нужно калибровать и настраивать. Достаточно в скетче прописать переводной коэффициент из напряжения в градусы Цельсия в зависимости от опорного напряжения. В этом проекте я выбрал опорное 1,1 В, снизив диапазон замера до 110ºC, но зато подняв точность.

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

И еще одна неприятная вещь, возникшая при создании этой системы управления. Изначально в качестве датчика температуры была использована микросхема LM35 в корпусе TO-92. Но все купленные мной датчики этого типа оказались подделками - под их видом продавались транзисторы с перебитой маркировкой. Пришлось вместо LM35 взять его прямой аналог TMP35. Учитывая это, прежде, чем подсоединять LM35 или TMP35 к Arduino, обязательно проверьте их мультиметром. Датчик должен показывать 10 мВ на 1ºC, то есть при комнатной температуре 24ºC на тестере будет 240 мВ.

КАК РАБОТАЕТ

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

Модуль датчика TMP35

Модуль датчика TMP35

КНОПКИ УПРАВЛЕНИЯ

Управлять системой можно с помощью трех кнопок : НАСТРОЙКИ, ВВЕРХ и ВНИЗ. Рассмотрим их функции подробно :

Кнопка НАСТРОЙКИ

При нажатии этой кнопки вы попадете в меню настроек и будете циклично переходить по пунктам меню. После последнего пункта меню вы снова вернетесь на основной экран (показания температуры). Изменение параметров осуществляется кнопками ВВЕРХ и ВНИЗ. Все цифровые параметры имеют верхнюю и нижнюю границы, за которые вы выйти не сможете. Изменение цифровых параметров сразу принимается системой, подтверждение не нужно. Обратите внимание, верхнюю и нижнюю границы, а также значение по умолчанию вы можете сами изменять в скетче.

Пройдемся по пунктам меню Настройки.

1 MinTemp XXºC
(minimum temperature) : температура включения подогревателя в ºC. Значение по умолчанию - 29ºC. Нижняя граница - 0ºC, верхняя - 980ºC.
2 MaxTemp XXºC
(maximum temperature) : температура выключения подогревателя в ºC. Значение по умолчанию - 33ºC. Нижняя граница - 0ºC, верхняя - 999ºC.
3 AlarMin XXºC
(alarm minimum temperature) : температура активации сигнализации по низкой температуре в ºC. Значение по умолчанию - 28ºC. Нижняя граница - 0ºC, верхняя - 990ºC.
4 AlarMax XXºC
(alarm maximum temperature) : температура активации сигнализации по высокой температуре в ºC. Значение по умолчанию - 40ºC. Нижняя граница - 0ºC, верхняя - 999ºC.
5 AlarmDiff
(alarm temperature differential) : дифференциал сигнализации в ºC. Значение по умолчанию - 0ºC. Нижняя граница 0ºC, верхняя 990ºC.
6 TempCor
(temperature correction) : поправка температуры в ºC. Значение по умолчанию - 0ºC. Нижняя граница -100ºC, верхняя +100ºC. Эта поправка добавляется к замеренной температуре. Если поправка отличается от нуля, в нижней строчке появится восклицательный знак.
7 Alarm ON/OFF
включение или выключение сигнализации по температуре. Значение по умолчанию - ON (сигнализация включена). При включенной сигнализации и выходе температуры за пределы уставок подается питание на реле сигнализации, а на LCD выводится "TLow" - низкая температура или "THigh" - высокая температура. При отключенной сигнализации реле срабатывать не будет, но текст на экране все равно появится.
8 Auto/Man
переключение между автоматическим и ручным режимом. Значение по умолчанию - Auto (автоматический режим). При переходе в ручной режим реле подогревателя отключается.
9 Heater ON/OFF
включение или выключение подогревателя. Значение по умолчанию - OFF (выключен). Этот пункт меню работает только в ручном режиме.
10 ReadSet. (UP)
чтение настроек из энергонезависимой памяти Arduino. При нажатии кнопки ВВЕРХ настройки из памяти PLC перейдут в оперативную. Обратите внимание, в настройки записываются только цифровые параметры (пункты 1 - 6).
11 SaveSet. (UP)
запись настроек в энергонезависимую память Arduino. При нажатии кнопки ВВЕРХ текущие параметры запишутся в постоянную память PLC. Обратите внимание, в настройки записываются только цифровые параметры. При перезагрузке контроллера (выключение - включение) именно эти настройки загрузятся в программу.
12 Default (UP)
загрузка значений по умолчанию (пункты 1 - 6). При нажатии кнопки ВВЕРХ параметры, определенные в начале скетча, загрузятся в оперативную память PLC (в текущие настройки). Эта функция может быть полезна, когда вы запутались в регулировках и хотите все вернуть в исходное положение. Но есть и еще одна причина ее использования. Если вы на одну и ту же плату Arduino постоянно записываете скетчи разных проектов, возможна ситуация, когда параметры одного проекта запишутся в настройки другого. Конечно, это можно исправить, но представьте, что в параметре, где должно быть, например, число 10, стоит 32000. Вручную кнопками ВВЕРХ или ВНИЗ корректировать это очень долго, проще сбросить настройки к заводским, а уже затем их подправить.

Кнопки ВВЕРХ-ВНИЗ

Этими кнопками меняются значения параметров.

ИНДИКАЦИЯ LCD

Верхняя строчка :

Нижняя строчка :

ПОДКЛЮЧЕНИЕ

Здесь приведено соединение всех элементов системы управления, Arduino (через шилд) и самого подогревателя. В виде схемы подключение представлено ниже.

Двухпозиционный (ON/OFF) контроллер

Двухпозиционный (ON/OFF) контроллер

Плата Arduino и Sensor-shield

Подогреватель

Настоятельно рекомендуется подключать подогреватель через контактор, катушку которого питать от реле системы. Реле включения/выключения подогревателя : COM - источник питания с напряжением аналогичным катушке контактора подогревателя, NO - клемма катушки контактора подогревателя (например А1). Минусовой или нулевой провод контактора можно оставить штатный.

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

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

ПЛАТА ДЛЯ ДАТЧИКА

Для удобства использования датчика TMP35 вы можете собрать небольшую плату. Схема монтажа представлена ниже.

Схема пайки датчика температуры на макетной плате

Схема пайки датчика температуры на макетной плате

Примечания :

  1. Все подводы и отводы выполнены в трех вариантах : клеммница, штыревой соединитель "папа" и "мама" для проводов Dupont.
  2. Емкость керамического конденсатора 100 нФ.

ЧТО НУЖНО ДЛЯ ПРОЕКТА

ВОЗМОЖНЫЕ ПРОБЛЕМЫ

Главная проблема, возникшая при полевых испытаниях, большая чувствительность Arduino к электромагнитным полям (плата зависает). Это явление возникает при коммутации через реле токов переменного напряжения 220 В и более. В этом случае вынесите реле К1 на расстояние не менее полуметра от платы.

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