Автоматическая регулировка температуры в доме с помощью терморезистора и Arduino


Наверняка многие из вас задумывались об автоматической регулировке температуры в доме – то есть чтобы нагрев дома включался автоматически (без вашего участия) при понижении температуры ниже некоторого минимального порога. В этой статье мы рассмотрим подобный проект автоматического управления температурой в доме на основе использования платы Arduino и терморезистора. Ранее на нашем сайте мы уже рассматривали подключение терморезистора к плате Arduino.

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

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. NTC thermistor 10 кОм (терморезистор с отрицательным температурным коэффициентом) (купить на AliExpress).
  3. ЖК дисплей 16х2 (купить на AliExpress).
  4. Электрическая лампочка.
  5. Реле (5v).
  6. Соединительные провода.
  7. Резистор 10 кОм (купить на AliExpress).
  8. Резистор 1 кОм (купить на AliExpress).
  9. Потенциометр 10 кОм (купить на AliExpress).

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема проекта для автоматической регулировки температуры в доме с помощью терморезистора и Arduino

Схема содержит такие элементы как плата Arduino, ЖК дисплей, реле (Relay) и терморезистор (термистор). При повышении температуры реле будет включаться, а при понижении температуры ниже заданного порога – выключаться. Реле управляет цепью электрической лампочки – оно выполняет роль домашнего устройства, управляемого в зависимости от температуры. Весь процесс измерения температуры и включения/выключения лампочки выполняется платой Arduino. Также плата Arduino выводит информацию о температуре и статусе системы на экран ЖК дисплея.

Реле (Relay)

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

Мы в нашем проекте будем использовать реле типа SPDT (Single Pole Double Throw - однополюсное на два направления), которое имеет 5 контактов как показано на следующем рисунке.

Тип реле, которое мы использовали в нашем проекте

Когда к катушке реле не приложено никакого напряжения общий провод реле COM соединен с контактом NC (normally closed contact – нормально замкнутым контактом). Когда же к катушке реле будет приложено управляющее напряжение, то оно переключит рычаг (якорь) реле и тогда контакт COM будет уже соединен с контактом NO (normally open contact – нормально разомкнутым контактом), что позволит сравнительно большому току протекать через эти контакты. Реле изготавливаются на различные номиналы напряжения, мы в нашем проекте использовали реле на 5 В, которое позволяет коммутировать переменный ток 7A-250VAC.

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

Внешний вид реле

Внутренняя схема соединений реле показана на рисунке ниже и она содержит в своем составе транзистор, диод и резистор.

Внутренняя схема соединений реле

Расчет температуры с помощью терморезистора

Схема используемого нами делителя напряжения представлена на следующем рисунке.

Схема используемого нами делителя напряжения

Напряжение на терморезисторе в этой схеме можно определить из известного напряжения:

Vout=(Vin*Rt)/(R+Rt).

Из этой формулы можно выразить значение сопротивления терморезистора Rt (R – известное сопротивление 10 кОм):

Rt=R(Vin/Vout)-1.

Значение Vout мы затем будем определять в коде программы с помощью считывания значения на выходе АЦП на контакте A0 платы Arduino.

Математически, сопротивление терморезистора можно вычислить с помощью известного уравнения Стейнхарта-Харта (Stein-Hart equation).

T = 1/(A + B*ln(Rt) + C*ln(Rt)3).

В этой формуле A, B и C — константы, Rt – сопротивление терморезистора, ln — натуральный логарифм.

Мы для проекта использовали терморезистор со следующими константами: A = 1.009249522×10−3, B = 2.378405444×10−4, C = 2.019202697×10−7. Эти константы можно определить с помощью данного калькулятора, введя в нем значения сопротивления терморезистора при трех значениях температуры или вы их можете непосредственно узнать из даташита на ваш терморезистор.

Таким образом, для определения значения температуры нам будет нужно только значение сопротивления терморезистора – после его определения мы просто подставляем его значение в уравнение Стейнхарта-Харта и с его помощью рассчитываем значением температуры в кельвинах.

Объяснение программы для Arduino

Полный текст программы приведен в конце статьи, здесь же рассмотрим его наиболее важные фрагменты.

Для выполнения математических операций мы в программе должны подключить библиотеку “#include <math.h>”, а для работы с ЖК дисплеем – библиотеку “#include <LiquidCrystal.h>". Также мы должны инициализировать контакт, к которому подключено реле - “#define RELAY 8”. Также плате Arduino необходимо сообщить контакты, к которым подключен ЖК дисплей.

Также в функции Void setup() мы должны инициализировать ЖК дисплей и задать режим работы на вывод данных для контакта, к которому подключено реле.

Для расчета температуры с помощью уравнения Стейнхарта-Харта мы должны в программе выполнить ряд математических расчетов, описанных ранее в статье.

В следующем участке кода мы считываем падение напряжения на терморезисторе и печатаем его на экране ЖК дисплея.

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

Также мы должны запрограммировать условия для включения и выключения лампы в соответствии со значениями температуры. Если температура увеличивается более 28 градусов мы будем включать лампу подавая на контакт 8 (к нему подключено реле) напряжение высокого уровня, а когда температура падает ниже 28 градусов, мы будем выключать лампу.

Работа проекта

Запитать плату Arduino можно по USB кабелю или через адаптер 12 В. На экране ЖК дисплея будет показываться температура в кельвинах, градусах Цельсия и по шкале Фаренгейта. С аналогового контакта A0 будет непрерывно считываться значение падения напряжения на терморезисторе и на его основе будет затем рассчитываться значение температуры.

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

Работа нашего проекта

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

Также на нашем сайте можно посмотреть и другие проекты автоматизации домашних устройств:

Исходный код программы

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

Видео, демонстрирующее работу схемы

(Проголосуй первым!)
Загрузка...
6 239 просмотров

Комментарии

Автоматическая регулировка температуры в доме с помощью терморезистора и Arduino — 2 комментария

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

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