Теплый пол на ардуино

Обновлено: 13.05.2024

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

Andrew Reiterovich

В этом деле схемотехники и эл. компонентов я новичок, хочу сделать теплый пол для будки своего кота, а то он очень мерзнет (сфинкс).
Посмотрел много гайдов в интернетах, но понял, что все делают такой пол через интервальное включение через реле.

А я бы хотел плавное изменение напряжения, как делают транзисторы, но вот беда 1кв.м. теплого пола требует 140W. Как мне подобрать нужный транзистор или возможно ли спаять связку?

Имеется на руках Arduino UNO, термометр и все необходимое для отслеживания температуры в реальном времени.

Эдуард Анисимов

b707_2

А я бы хотел плавное изменение напряжения, как делают транзисторы, но вот беда 1кв.м. теплого пола требует 140W. Как мне подобрать нужный транзистор или возможно ли спаять связку?

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

Andrew Reiterovich

Andrew Reiterovich

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

А как мне через реле менять напряжение? Допустим мой алгоритм на основании полученных входных данных решит уменьшить мощность до 15%, как это будет работать на реле, только если заранее установить несколько реле. Каждое из них могло бы быть с определенной пропускной способностью и тогда я бы как будто менял каналы. (Похоже немного на принцип работы АКПП)

b707_2

не надо менять напряжение, мощность нагрева регулируется не так. Если вам нужна мощность 100% - просто включаем нагреватель, а если надо 15% от максимума - включаете нагревать на 15% времени, а в остальные 85% он выключен. Чтобы это работало равномерно - это надо делать достаточно быстро. Это называется ШИМ - почитайте. Именно так регулируется яркость светодиодов с помощью ардуино. Для нагревателя используем тот же базовый принцип, только с поправкой на большие токи и переменное напряжение - так работает диммер, например для управления яркостью лампочек
Чтобы лампы не мерцали. их надо включать и выключать сотни раз в секунду. Нагреватель теплого пола - значительно более инерционный, тут можно делать периоды значительно реже

Старик Похабыч

Если реле будет включено постоянно, то температура поднимется до какого то предела, далее теплообмен с внешней средой и баланс. А вот что будет если секунду греть, секунду не греть ? или греть 5 секунд и 3 отдыхать ? температура баланса будет ниже, на сколько не могу сказать. Но регулировать так можно. В простом случае эта температура будет зависеть от температуры окружающей среды. Если же использовать термодатчик, то уже можно включать и выключать при снижении ниже порога и при достижении нужной температуры.
Другой вопрос: стоит ли греть место, если там не будет животного ? Это доп расходы. А если место не греть , то будет ли туда залезать кошка ? На теплое место точно будет, а на холодное и ждать нагрева научиться не сразу.

Andrew Reiterovich

не надо менять напряжение, мощность нагрева регулируется не так. Если вам нужна мощность 100% - просто включаем нагреватель, а если надо 15% от максимума - включаете нагревать на 15% времени, а в остальные 85% он выключен. Чтобы это работало равномерно - это надо делать достаточно быстро. Это называется ШИМ - почитайте. Именно так регулируется яркость светодиодов с помощью ардуино. Для нагревателя используем тот же базовый принцип, только с поправкой на большие токи и переменное напряжение - так работает диммер, например для управления яркостью лампочек
Чтобы лампы не мерцали. их надо включать и выключать сотни раз в секунду. Нагреватель теплого пола - значительно более инерционный, тут можно делать периоды значительно реже

Wan-Derer


@Andrew Reiterovich,
Я, конечно, не разбираюсь в сфинксах, но мне кажется что 140 Вт это для того чтобы сварить кота. Или будка на улице?

Andrew Reiterovich


@Andrew Reiterovich,
Я, конечно, не разбираюсь в сфинксах, но мне кажется что 140 Вт это для того чтобы сварить кота. Или будка на улице?

CHE77

не надо менять напряжение, мощность нагрева регулируется не так. Если вам нужна мощность 100% - просто включаем нагреватель, а если надо 15% от максимума - включаете нагревать на 15% времени, а в остальные 85% он выключен. Чтобы это работало равномерно - это надо делать достаточно быстро. Это называется ШИМ - почитайте. Именно так регулируется яркость светодиодов с помощью ардуино. Для нагревателя используем тот же базовый принцип, только с поправкой на большие токи и переменное напряжение - так работает диммер, например для управления яркостью лампочек
Чтобы лампы не мерцали. их надо включать и выключать сотни раз в секунду. Нагреватель теплого пола - значительно более инерционный, тут можно делать периоды значительно реже

Нагрузка у теплого пола приличная, а релюшки китайские. Ими желательно клацать как можно меньше. К тому же клацание в жилом помещении будет действовать на нервы.
Отчасти может помочь твердотельное реле. Но, насколько я понял, что если оно перегорает то, оно замыкает контакты, - что не безопасно.
Слышал есть вариант "умного контролера реле" который замыкает и главное размыкает контакты в нулевой фазе переменного тока.
Сам сейчас делаю "умный пол" на Blynk. Гуглю - пока не могу найти проект такого реле.

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

Мой обычный вечер — это посиделки за компьютером. Холодными вечерами частенько появлялось желание сделать моё место отдыха комфортнее. Точнее, периодически было просто холодно ногам. Идеи были различные, вплоть до покупки USB тапочек с подогревом. Однако, все они казались мне нелепыми и отметались. И вот однажды, просматривая YouTube канал одного из любителей Arduino, я наткнулся на видео, где рассказывалось про инфракрасную плёнку. Увидев эту плёнку, я сразу понял: «Вот то, что мне надо!»




Disclaimer

Я занимаюсь проектами подобного рода уже несколько лет, делаю для себя. Делаю, чтобы делать: сам процесс для меня гораздо интереснее, чем конечное решение. Именно поэтому описание процесса и экспериментов приведены ниже со столь детальными подробностями. Использование элементов иногда не совсем оправдано с финансовой точки зрения — это я понимаю. Периодически я что-то меняю (в подходе, в элементах), но точно не собираюсь переходить на готовые решения, так как это будет просто неинтересно.

Почему «почти умный»? Я бы не назвал измерение температуры и управление реле с таймером «умным». Как задел на будущее — есть идея усовершенствовать алгоритм управления, добавив функции обучения. Вот тогда этот проект можно будет назвать как-то иначе.

  • интересно получить конструктивную критику/идеи
  • познакомить сообщество с инфракрасной плёнкой

Покупка

Решив, что перед действиями следует подготовиться, я отправился в поисковики с целью найти больше информации и отзывов. Комментарии рознились. Кто-то называл плёнку идеальным отопительным элементом и говорил, что успешно обогревает целые дома, кто-то жаловался на полную бесполезность и уверял, что это всё «развод». Я решил экспериментировать, так как люблю новые штуки.

  • Ширина плёнки (50, 80, 100см)
  • Длина (от 2-ух метров) (где-то была информация, что при ширине 50см максимально допустимо использовать до 6 метров плёнки в одном отрезке на одно подключение (источника данных нет))
  • Наличие в комплекте термостата
  • Наличие в комплекте поставки креплений (типа крокодил) для подключения питания к плёнке (судя по комментариям — важный момент, поскольку некоторые типы китайских креплений со временем ослабевают и контакт ухудшается вплоть до полного исчезновения)

Для эксперимента мне требовался лишь небольшой кусок «волшебной» плёнки, поэтому главным критерием для покупки была цена и минимальность комплектации (без термостата и креплений).


Проверив цены, я остановился на одном предложении на AliExpress. Продавец предлагал 2 метра плёнки шириной 50 сантиметров за 8€, без термостата и креплений, однако за доставку просил ещё столько же. Это получался самый приемлемый вариант. Я сделал заказ и стал ждать посылки. Примерно через 3 недели кусок плёнки уже лежал у меня дома.

Первый тест


После того как плёнка оказалась у меня, я поставил себе первую задачу: проверить работает ли это вообще. Для сборки первого прототипа я использовал три доски ламината, оставшиеся после недавнего ремонта.

Процесс сборки элементарен:


  1. Отрезал плёнку нужной длины (мне хватило примерно 100см. теоретически можно резать почти в любом месте)
  2. Подключил клеммы (Здесь интересный момент, что плёнка ламинирована полностью с обоих сторон. Даже если контактная полоса выглядит как большой медный контакт с одной стороны плёнки (смотри фото после получения посылки) – прямого доступа к контакту всё равно нет. Если использовать свои клеммы, то сначала нужно проковырять ламинированный слой)


Включил, замерил потребление. Мощность, потребляемая моим куском плёнки, составила 105 Ватт. Если кто-то решит использовать подобную плёнку, может рассчитывать потребление как 200-210 Ватт на квадратный метр. Никаких «пусковых токов» я не наблюдал, потребление стабильно, пока есть питание и со временем не уменьшается. Конечно, не забываем, что использование термостата введёт свой коэффициент в конечные расчёты потребления.

Я встал на пол и стал ждать эффекта. Во время теста периодически переходил на обычный пол, чтобы не упустить изменения, если температура будет подниматься плавно. По прошествии нескольких минут я ощутил приятную теплоту, идущую от пола. Минут через 15 пол уже жарил так, что находиться на нём было некомфортно. Эксперимент можно было считать удачным, так как было ясно видно, что плёнка может дать необходимый уровень теплоотдачи, чтобы обеспечить мои потребности.

Реализация «умной» части

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

  1. Мы включаем свет, если уровень освещения ниже заданного
  2. Мы включаем реле на определённый промежуток времени
  3. Мы включаем реле, только если есть информация от датчика движения
  1. Мы включаем подогрев, если уровень температуры ниже заданного
  2. Мы включаем реле на определённый промежуток времени
  3. Мы включаем реле, только если есть информация от датчика движения


Своего рода блок-схема всего решения. Прошу не судить схему строго – нарисовал её специально для публикации, чтобы был понятен способ подключения и не заморачивался с подбором правильных иконок.

Реле питания пола

Для управления питанием используется связка из двух плат.

  • Места крепления в мою стойку автоматики (4 креста по бокам)
  • Содержит JK-триггер для запоминания последней команды
  • Мост питания L298D, чтобы передавать повышенный ток на катушку реле
  • Реле 5В или 12В в зависимости от версии
  • Несколько светодиодов для отображения состояния
  • Почему две платы? Реализация скопирована из уже существующего управления светом, где мне так удобнее. Если бы делал с нуля – скорее всего плата была бы одна.
  • Зачем триггер? Действительно, для данного решения мне кажется он излишен. Просто в одной из предыдущих версий системы управляющий контроллер не был подключен к мосту L298D постоянно, а подключался мультиплексором. Поэтому существовала необходимость помнить установленное состояние.
  • Почему L298D, если можно использовать оптическую развязку? Опять же наследие и пачка давно купленных по 3€ L298D.
Датчики температуры и движения


Делать отдельную плату для датчиков движения и температуры я не стал. Датчик движения поставлялся с удобными контактами и крепить его на дополнительную плату было бы нелогично. Подключение датчика температуры задача тоже не сложная — требуется только одно дополнительное сопротивление. В итоге, можно сказать «на скрутке», я собрал часть с датчиками.

Датчик температуры засунут внутрь оплётки CAT5 кабеля, так как имел очень тонкие контакты и на ощупь казался очень хрупким.

Корпус

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

Корпус в сборе

Сбоку прорезаны отверстия для датчиков

Конечный вариант.

Вот так всё выглядит после установки. Примерная зона срабатывания датчика движения обведена. Рисовал по ощущениям – когда срабатывает, а когда нет.

Снимок экрана с окном управляющей программы на компьютере
(Как упоминалось, управляющая логика была скопирована с системы управления светом, поэтому на форме можно заметить надписи «Light» вместо «Temperature»)

Заключение

Как во время тестирования, так и во время работы данного решения в собранном виде обнаружились некоторые проблемы и нюансы. Большинство из них связано с электрическими и физическими характеристиками применённой схемы и их описание выходит за рамки данной публикации. Возможно позднее я опишу нюансы более детально в отдельном посте. Инфракрасная плёнка показала себя как интересный материал, и я вполне могу рекомендовать её для применения. Возможно ли применить её как единственный источник отопления в помещении и какое будет при этом потребление электроэнергии – я не знаю.

В общем, с момента «запуска» проекта прошло уже несколько месяцев. Мой «почти умный» тёплый пол работает отлично и выполняет своё предназначение на 100%, хотя иногда и приходится подстраивать желаемую температуру.

Хочу поделиться своим опытом разработки умного устройства. В этой публикации я опишу аппаратное (кратко) и программное (более подробно) обеспечение.

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

Аппаратное обеспечение

В качестве контроллера был выбран ESP8266 (WeMos D1 mini), как т.к. имеет WiFi на борту. Вместо ESP8266 может быть использован любой другой контроллер или микрокомпьютер – общие идеи останутся неизменными, главное чтобы на выбранной системе можно было бы развернуть WEB-сервер с поддержкой WEB-сокетов. В проекте так же были использованы:

Операционная система

Операционная система – все то ПО, которое обеспечивает работоспособность прикладной программы. Операционная система так же является прослойкой между железом и прикладной программой, предоставляя высокоуровневый интерфейс доступа к аппаратным ресурсам. В случае ESP компонентами операционной системы можно считать:

Файловая система

В проекте используется SPIFFS, тут вроде все понятно, это самый простой путь. Для простого доступа к файлам на устройстве извне, я использую библиотеку nailbuster/esp8266FTPServer.

Система распределения процессорного времени

Это одна из основных функций операционной системы и ESP не станет исключением. За параллельное выполнение различных потоков алгоритма отвечает глобальный объект (синглтон) Timers. Класс достаточно простой и предоставляет следующий функционал:

    Периодическое выполнение функции, с заданным интервалом. Пример инициализации таймера:


На практике функция loop содержит еще несколько строк, о них будет рассказано ниже.
Листинг класса Timers приложен.

Учет процессорного времени

Сервисная функция, не имеющая практического применения. Тем не менее она есть. Реализуется сингтоном CPULoadInfo. При инициализации объекта, выполняется замер количества итераций пустого цикла за небольшой промежуток времени:


Затем, считаем количество вызовов процедуры loop в секунду, считаем загрузку процессора в процентах и сохраняем данные в буфер:


Использование этого подхода позволяет получить так же использование процессора каждым отдельным потоком (если соединить эту подсистему с классом Timers), но как я уже сказал – практического применения этому я не вижу.

Система ввода-вывода

Для общения с пользователем используется UART-USB и WEB интерфейс. Про UART думаю подробно рассказывать не требуется. Единственно на что стоит обратить внимание – для удобства и совместимости с не ESP реализована функция serialEvent():


С WEB интерфейсом все гораздо интереснее. Посвятим ему отдельный раздел.

WEB интерфейс

В случае с умными устройствами, по моему мнению, WEB интерфейс самое удобное для пользователя решение.

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

Использование специфических программ для управления устройством – накладывает ограничения на пользователя, добавляет необходимость разработки и поддержки этих программ, а также требует от разработчика заботиться о доставке этих программ на терминальные устройства пользователя. По-хорошему, приложение должно быть опубликовано в магазинах приложений Google, Apple, Windows, а также доступно в репозиториях Linux в виде deb и rpm пакетов – в противном случае, для какой-то части аудитории может быть затруднен доступ к интерфейсу устройства.

Доступ к WEB интерфейсу устройства доступен с любой операционной системы – Linux, Windows, Android, MacOS, на десктопе, ноутбуке, планшете, смартфоне – лишь бы был браузер. Конечно разработчику WEB интерфейса необходимо учитывать особенности различных устройств, но это в основном касается размера и разрешения. Доступ к WEB интерфейсу умного устройства в доме/квартире/на даче легко обеспечивается извне через интернет – сейчас сложно представить дом/квартиру, в которых есть умные устройства и нет роутера и интернета, а в роутере такой доступ настраивается в несколько кликов (тем, кто совсем не в теме, помогут ключевые слова – «проброска портов» и «динамический DNS»). В случае дачи доступ можно обеспечить с помощью 3G роутера.

Для реализации WEB интерфейса необходим WEB сервер. Я использую библиотеку me-no-dev/ESPAsyncWebServer. Эта библиотека обеспечивает следующий функционал:

  • Отдачу статического контента, в т.ч. с поддержкой сжатия gzip. Поддерживаются виртуальные каталоги, с возможностью указания главного файла (который обычно index.htm) для каждого каталога.
  • Назначение callback функций на различные URL с учетом типа запроса (GET, POST, …)
  • Поддержка WEB сокетов на том же порту (это имеет значение при проброске портов).
  • BASIC авторизацию. Причем авторизация устанавливается индивидуально для каждого URL. Это важно, т.к. например Google Chrome при создании ярлыка страницы на главном экране, запрашивает иконку и файла манифеста и не передает данные авторизации. Поэтому часть файлов помещены в виртуальный каталог и для этого каталога авторизация отключена.

Реализацию любого списка команд я считаю правильным начать с реализации команды HELP. Ниже блок инициализации WEB сервера:


Зачем нужна справочная система, рассказывать думаю не стоит. Некоторые разработчик откладывают реализацию справочной системы на потом, но этот «потом» как правило не наступает. Гораздо проще ее реализовать в начале проекта и при развитии проекта дополнять.
В моем проекте список возможных сервисов выводится так же и при ошибке 404 – страница не найдена. На данный момент реализованы следующие сервисы:



В последствии этот сервис используется в более симпатичном интерфейсе:


Прикладное ПО

Наконец подошли к тому, ради чего система создавалась. А именно – к реализации прикладной задачи.

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

Исходными данными для контроллера теплого пола являются:

  • Данные датчиков – система не привязана к конкретным датчикам. Для каждого датчика формируется уникальный идентификатор. Для радио-датчиков их идентификатор дополняется до 16 бит нулями, для датчиков 1Wire на основании их внутреннего идентификатора вычисляется CRC16 и используется в качестве идентификатора датчика. Таким образом, все датчики имеют идентификаторы длиной 2 байта.
  • Данные о зонах отопления – число зон не фиксировано, максимальное количество ограничено используемым модулем реле. С учетом этого ограничения так же разрабатывался WEB интерфейс.
  • Целевая температура и расписание – я постарался сделать максимально гибкие настройки, можно создать несколько схем отопления и можно даже на каждую зону назначить свою схему настроек.


Особенностью реализации командного интерпретатора является то, что информация о результате выполнения команды выдается так же в виде команды или набора команд:


На стороне WEB клиента так же реализован командный интерпретатор, который принимает эти команды и преобразует их в графический вид. Например:


WEB интерфейс передал запрос контроллеру о зоне номер 3, и получил в ответ название зоны, идентификатор датчика, привязанного к зоне, идентификатор схемы, назначенной зоне и коррекцию температуры для зоны. Командный интерпретатор не понимает дробных чисел, поэтому температура передается в десятых долях градуса, т.е. 12.3 градуса это 123 десятых долей.

Ключевой особенностью является то, что на любую команду, вне зависимости от способа ввода команды, контроллер отвечает сразу всем клиентам. Это позволяет отображать изменение состояния сразу во всех сеансах WEB интерфейса. Т.к. основной транспорт обмена между контроллером и WEB интерфейсом это WEB сокеты, то контроллер может передавать данные без запроса, например когда приходят новые данные от датчиков:


Или о том например, что данные зоны необходимо актуализировать:


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

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

Заключение

Использование подобного подхода, а именно:


Как видно, в этом проекте только первые три страницы интерфейса непосредственно связаны с прикладной задачей, а остальные практически универсальны.

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

Кому интересна данная тема – пишите, может я в чем-то не прав, а может быть какие-то детали имеет смысл описать более подробно.

DS18B20 – высокоточный цифровой датчик температуры. Основные характеристики:

  • Диапазон: -55.. 125 °C
  • Точность: 0.5 °C
  • Разрешение: 9.. 12 бит (0.48.. 0.06 °C)
  • Питание: 3-5.5V
  • Период выдачи результата:
    • 750 мс при точности 12 бит
    • 94 мс при точности 9 бит


    В наборе идёт датчик в герметичном исполнении со стандартным гнездом (шаг 2.54 мм) для подключения

    Подключение

    Датчик имеет следующие назначения пинов:


    Датчик подключается к любому цифровому пину Arduino, но пин должен быть подтянут к питанию резистором 4.7 кОм. На один пин можно подключить несколько датчиков DS18B20.



    В рамках набора GyverKIT резистор на 4.7 кОм можно заменить двумя резисторами на 10 кОм (есть в комплекте), подключенными параллельно:


    Библиотеки

    Для этого датчика есть несколько библиотек:

    • “Официальная” библиотека DallasTemperature.h, для работы которой также понадобится библиотека OneWire.h.
    • Наша библиотека microDS18B20

    В примерах на этом сайте мы будем использовать microDS18B20, так как она в несколько раз легче и проще в использовании, чем официальная. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию microDS18B20. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

    Работа с microDS18B20

    Без адресации

    В этом режиме на один пин МК подключается один датчик, для работы с ним не требуется предварительного чтения адреса и записи его в программу. Можно подключить несколько датчиков, каждому указать свой пин, см. пример one_pin_one_sensor.

    С адресацией

    В этом режиме можно подключить сколько угодно датчиков на один пин МК, но для работы с ними понадобится занести в программу уникальные адреса датчиков. В момент чтения адреса к пину должен быть подключен только один датчик! Пример – address_read. Для дальнейшей работы адреса хранятся в массивах на стороне программы и передаются датчикам при инициализации, пин указывается один и тот же:

    Также адрес можно сменить во время работы программы, см. документацию.

    Чтение температуры

    Чтение температуры делится на два этапа – запрос и получение данных. Запрос делается функцией requestTemp() . После получения запроса датчик начинает измерение температуры, которое длится от 90 до 750 мс в зависимости от настроенной точности (по умолчанию точность максимальная, преобразование длится 750 мс). Если прочитать температуру до окончания преобразования – датчик вернёт результат предыдущего измерения, поэтому в примерах используется задержка или опрос по таймеру на 1 секунду. Получить температуру можно при помощи getTemp() [float] или getTempInt() [int]. Если принятые данные повреждены или датчик отсутствует на линии – функция вернёт предыдущее успешно прочитанное значение температуры.

    Примечание: при повторных вызовах getTemp() не запрашивает с датчика новую температуру (долгое выполнение функции), вместо этого она просто возвращает предыдущий результат до тех пор, пока не будет сделан новый запрос requestTemp().

    В версии библиотеки 3.5 появилась возможность отдельно запросить температуру и определить корректность полученных данных, чтобы только после этого их прочитать и применить в программе – функция readTemp() . Также это позволяет определить состояние подключения и всё ли в порядке с датчиком. Для чтения температуры рекомендуется использовать конструкцию вида:

    где readTemp() запрашивает данные с датчика и возвращает true , если они прочитаны корректно. После этого можно забрать текущую температуру из getTemp() , которая уже не запрашивает температуру с датчика, а отдаёт прочитанный в readTemp() результат.

    Примеры

    Библиотека позволяет работать по схеме “один датчик – один пин”, в которой адрес датчика получать не нужно. Достаточно подключить и использовать:

    Подробно описав подключение контроллера теплых полов Beok CCT-10 к системе зонального отопления забыл самое главное - схему электрических соединений.

    Исправим этот недочет.

    Подключаемые терморегуляторы.

    Так получилось что все терморегуляторы совершенно разнообразные, о чем писал в истории применения терморегуляторов в моем доме.

    ZEISSLER M6.13.
    Fluoeron.
    Computerm Q7.
    XH-W3002.
    Terneo SX.

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

    Несмотря на то что используется 5 терморегуляторов, по способу присоединения их всего две типа:

    1. Терморегулятор имеет не сухие контакты реле - фаза коммутируется на один их выходов внутри терморегулятора.
    2. Терморегулятор имеет сухие контакты реле - фазу надо подать на один контакт реле и снять с другого.

    Типы терморегуляторов по схеме подключения были рассмотрены в статье Какие бывают терморегуляторы.

    К первому типу относятся Terneo SX, ZEISSLER M6.13, Fluoeron, XH-W3002.

    Вот, например, внешний вид клеммных колодок Terneo SX и Fluoeron:

    Схема terneo SX

    У одного терморегулятора входные клеммы посредине, у другого - наоборот.

    С большой долей вероятности нулевые входные и выходные клеммы окажутся рядом.

    На схеме клеммных колодок Terneo SX видны внутренние соединения, из которых следует, что входной и выходной ноль соединены внутри терморегулятора - так у всех терморегуляторов этого типа.

    У некоторых моделей терморегуляторов не ясно - какая выходная клемма нулевая, а какая - фазовая.

    Нужно прозвонить клеммы, чтобы это выяснить - нулевые клеммы соединены внутри при выключенном терморегуляторе.

    Клеммные колодки Zeissler M06.13 аналогичные.


    Терморегулятор XH-W3002 имеет не клеммы, а провода.


    Тут тоже необходимо внимательно прозвонить провода, чтобы не сделать короткое замыкание на плате контроллера. В результате короткого замыкания перегорает предохранитель. Незадействованный нулевой провод заизолировать или соединить с задействованным (они все равно соединены внутри терморегулятора).

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

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

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

    Ко второму типу принадлежит терморегулятор Computerm Q7.

    Этот терморегулятор работает от батареек и имеет бистабильное реле - ему не требуется внешнее питание.


    Выходное реле термостата обладает тремя безпотенциальными сухими контактами подключения:

    Читайте также: