Двухпозиционный (ON/OFF) контроллер с терморезистором Pt100 и управлением от ИК-пульта

На этой страничке представлена простейшая система управления подогревом по типу включить/выключить, которая использует в качестве измерителя температуры самодельный температурный преобразователь термосопротивления Pt100.

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

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

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

В чем же разница с контроллером, представленным на этой страничке сайта? В данную схему добавлена возможность управлять системой от ИК-пульта.

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

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

КАК РАБОТАЕТ

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

ИНДИКАЦИЯ LCD

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

УПРАВЛЕНИЕ СИСТЕМОЙ КНОПКАМИ

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

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

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

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

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

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

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

УПРАВЛЕНИЕ СИСТЕМОЙ С ИК-ПУЛЬТА

Второй способ управления системой - ПДУ через ИК-приемник VS1838B. Вам понадобится любой пульт, например, от телевизора. При нажатии на кнопки он будет передавать сигналы на ИК-приемник, который, в свою очередь, перенаправит их в Arduino. Процессор контроллера с помощью библиотеки IRremote.h расшифрует сигналы, переведя их в цифровой код (индивидуальный для каждой кнопки). Зная эти коды, мы можем запрограммировать реакцию на них, как на обычные тактовые кнопки.

Как узнать коды для каждой кнопки описывается ниже в разделе СКЕТЧ.

Плата для ИК-модуля VS1838B

Для удобства работы с модулем VS1838B вы можете собрать небольшую плату. На ней, кроме самого модуля и колодок под пины, имеется светодиод наличия напряжения и фильтр питания (конденсатор). Ниже представлена электросхема платы.

Электросхема платы

Электросхема платы

Ниже приведена схема пайки. За базу взята макетная плата 35х25 мм. Конечно вы можете расположить элементы по другому и более компактно. При этом закладывайте достаточное пространство с задней стороны ИК-приемника, чтобы его можно было загнуть на 90 градусов для обеспечения надежного приема сигнала при вертикальном расположении системы управления.

Схема пайки платы

Схема пайки платы

ПОДКЛЮЧЕНИЕ

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

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

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

Плата 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кОм
  • сигнал от контроллера Pt100 к Arduino - аналоговый пин A0. Питание к любым свободным пинам G и V цифровых входов.
  • входы от термодатчика Pt100 - к клеммам на самодельном термоконтроллере

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

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

ИК-приемник VS1838B

  • пин VCC модуля - к любому пину питания 5 вольт Arduino или шилда. Лучше питание брать с Arduino - оно более стабильно.
  • пин GND модуля - к любому пину земли Arduino или шилда.
  • пин Vout модуля - к цифровому пину D3 (или любому другому, по вашему желанию).

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

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

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

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

СКЕТЧ

Немного о программировании для VS1838B

Все программирование для ИК-приемников, подобных VS1838B, сводится к обработке сигналов, полученных с модуля. Подобно тому, как мы обрабатываем сигналы с кнопок, датчиков и т.п. Условно этот процесс можно разбить на несколько этапов. Рассмотрим их бегло с примерами.

Объявляем библиотеку для работы с ИК-приемником
Команда #include "IRremote.h" в начальной секции
Указываем вывод, к которому подключен приемник
Команда IRrecv irrecv(3); в начальной секции и здесь же прописываем команду decode_results results;
Выставляем скорость COM порта
Команда Serial.begin(9600); в секции void setup()
Запускаем прием
Команда irrecv.enableIRIn(); в секции void setup().
Выявляем момент, когда началась передача данных и обрабатываем полученный сигнал

Данный блок помещается в секцию void loop(). Код FFE21D соответствует нажатию какой-либо кнопки на пульте. Какая это кнопка вы можете узнать, открыв Монитор порта в Arduino IDE (за вывод данных отвечает команда Serial.println( results.value, HEX );). Нажимая кнопки на ПДУ, вы увидите соответствующие им коды в окне порта.