Двухпозиционный (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

Верхняя строчка :
"Auto ON" - автоматический режим, подогрев включен
"Auto OFF" - автоматический режим, подогрев выключен
"Manual ON" - ручной режим, подогрев включен
"Manual OFF" - ручной режим, подогрев выключен
"TLow" - сигнализация по низкой температуре
"THigh" - сигнализация по высокой температуре
Нижняя строчка :
"Temp=XX.XXºC" - текущая температура в ºC
"!" - введена поправка температуры (отличается от 0)
в режиме настроек : пункты меню настроек

ПОДКЛЮЧЕНИЕ

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

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

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

Плата Arduino и Sensor-shield

  • питание Arduino : от адаптера 7-12VDC (2A)
  • питание шилда (перемычка убрана) : от адаптера 7-12VDC (2A) через понижающий DC-DC преобразователь типа LM2596 (не менее 2А)
  • LCD-дисплей 1602 + модуль I2C : питание от шилда (подсоединяем GND и VCC к любым свободным пинам G и V цифровых входов), SDA (I2C) - A4 (шилд), SCL (I2C) - A5 (шилд)
  • реле включения/выключения подогревателя : сигнал от Arduino - цифровой пин 9, питание от шилда (подсоединяем GND и VCC реле к пинам G и V пина 9)
  • реле сигнализации : сигнал от Arduino - цифровой пин 8, питание от шилда (подсоединяем GND и VCC реле к пинам G и V пина 8). Контакты реле вы можете подключить к общесудовой сигнализации или сделать местную
  • сигнал от кнопки НАСТРОЙКИ : вход в Arduino - цифровой пин 7. Пины + и - кнопочного поста, общие для всех кнопок НАСТРОЙКИ, ВВЕРХ, ВНИЗ, подсоединяем к любым свободным пинам V и G цифровых входов. Линию сигнала и земли шунтируем резистором 10кОм
  • сигнал от кнопки ВВЕРХ : вход в Arduino - цифровой пин 6. Линию сигнала и земли шунтируем резистором 10кОм
  • сигнал от кнопки ВНИЗ : вход в Arduino - цифровой пин 5. Линию сигнала и земли шунтируем резистором 10кОм
  • сигнал от термодатчика TMP35 - аналоговый пин А0. Питание к любым свободным пинам G и V аналоговых входов. Для фильтрации питания между землей и питанием можно поставить конденсатор (керамика, 100 нФ)

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

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

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

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

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

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

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

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

Примечания :

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

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

  • PLC Arduino UNO - 1 шт
  • Sensor Shield v 5.0 - 1 шт
  • понижающий DC-DC преобразователь типа LM2596 (не менее 2А) - 1 шт
  • LCD-дисплей 1602 + модуль I2C - 1 шт
  • термодатчик TMP35 (datasheet) - 1 шт
  • реле одноканальное (катушка 5VDC) - 2 шт
  • кнопка тактовая с колпачком - 3 шт
  • резистор 10 кОм (0,25 Вт) - 3 шт
  • макетная плата под пайку 30х55 - 1 шт (для монтажа кнопок)
  • макетная плата под пайку 30х30 - 1 шт (для монтажа термодатчика и клеммниц)
  • клеммница тройная - 1 шт
  • стойка мама-мама М3х15 - 8 шт (для монтажа LCD-дисплея и самодельного термопреобразователя)
  • гайка М3 - 50 шт и более в зависимости от способа крепления вышеуказанных элементов
  • болт М3х15, М3х10 - 20 шт и более
  • провод Dupont мама-мама или папа-мама (20 см) - 30 шт и более в зависимости от типа пинов соединяемых элементов
  • провод типа AWG - 50 см (соединение штекер - DC-DC преобразователь - Sensor Shield)
  • штыревой соединитель 40pin - 1 шт
  • разъем PBS 40 pin - 1 шт
  • штекер питания DC 2.1 мм с клеммной колодкой папа и мама - 1 пара (для подключения шилда)
  • кусок оргстекла или т.п. - 20х30 см (для монтажа всех элементов)
  • болт М6х15 и гайка - 4 шт (ножки оргстекла)

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

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

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