Двухпозиционный (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 контроллер замерит текущую температуру объекта. При снижении температуры ниже заданной минимальной контроллер подаст питание на реле включения подогревателя, а при превышении заданной максимальной выключит реле. В случае, если текущая температура уйдет за пределы аварийной минимальной или максимальной уставки, будет подано питание на реле сигнализации. При неисправности термодатчика вы можете переключиться в ручной режим и сами включать и выключать подогреватель.

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

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

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

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

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

  • 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 градусов для обеспечения надежного приема сигнала при вертикальном расположении системы управления.

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

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

ИНДИКАЦИЯ LCD

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

ПОДКЛЮЧЕНИЕ

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

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

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

Плата Arduino и Sensor-shield

  • питание Arduino : от адаптера 7-12 В постоянного тока (2A)
  • питание шилда (перемычка убрана) : 5 В постоянного тока. Можно от того же адаптера 7-12 В через понижающий 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 );). Нажимая кнопки на ПДУ, вы увидите соответствующие им коды в окне порта.