Термостат на ардуино и термопаре

Термостат на ардуино и термопаре

Термопара отличается от других датчиков температуры низкой стоимостью, скоростью измерения и большим диапазоном "горячих" температур, обычно от 0 до 400 ºC. Но напрямую к Ардуино ее не подключить, прийдется использовать преобразователь на базе чипа MAX6675.

Схема подключения

Для подачи питания и земли будем использовать 5й и 6й контакты на плате Arduino.

Скетч

Для работы понадобится библиотека MAX6675

Результат работы MAX6675

на глаз +-1°C. Проверял нагрев паяльника до 201 градуса минуты 3, больше ждать не стал, понятно, что работает отлично!

На некоторых китайских поделках есть косяк — "-" термопары должен быть заземлён (соединён с gnd согласно дтш https://pdf1.alldatasheet.com/datasheet-pdf/view/73692/MAXIM/MAX6675.html ). А братья китайцы забыли это сделать. В итоге — показания бред. Заземлите "-" и будет счастье.

ПыСы не забываем что нумерация выводов плат может отличаться.

Термопара отличается от других датчиков температуры низкой стоимостью, скоростью измерения и большим диапазоном "горячих" температур, обычно от 0 до 400 ºC. Но напрямую к Ардуино ее не подключить, прийдется использовать преобразователь на базе чипа MAX6675.

Схема подключения

Для подачи питания и земли будем использовать 5й и 6й контакты на плате Arduino.

Скетч

Для работы понадобится библиотека MAX6675

Результат работы MAX6675

на глаз +-1°C. Проверял нагрев паяльника до 201 градуса минуты 3, больше ждать не стал, понятно, что работает отлично!

На некоторых китайских поделках есть косяк — "-" термопары должен быть заземлён (соединён с gnd согласно дтш https://pdf1.alldatasheet.com/datasheet-pdf/view/73692/MAXIM/MAX6675.html ). А братья китайцы забыли это сделать. В итоге — показания бред. Заземлите "-" и будет счастье.

ПыСы не забываем что нумерация выводов плат может отличаться.

Читая первую часть заголовка многие из вас, наверняка, подумали – еще один термостат на многострадальной Arduino. И… Это правда – да, это очередной термостат для очередного котла, очередного дома, но правда это только отчасти – в статье я не хочу концентрироваться на самом устройстве – их (статей) действительно предостаточно. Несомненно, я опишу термостат, но больше хотел бы рассказать о том, как я связывал сам микроконтроллер с котлом. Итак, кому интересно – прошу…

Как все начиналось

Прежде всего хочу сказать, что я нисколько не программист и с настоящим микроконтроллером дела до этого не имел. Мое первое знакомство с МК AVR (да и вообще с МК) было еще в старшей школе, когда мне захотелось узнать, как же все-таки работает эта загадочная штука. Я прочел несколько статей и с тех пор в памяти у меня остались лишь отрывки, которые можно было описать всего двумя словами – DDR и PORT – на этом мои познания и обрывались. Потом был универ, 5-й курс – «Программирование микроконтроллеров» где мы все познакомились с MSC51 в виртуальной среде. Тут уже были и прерывания, и таймеры, и все остальное. Ну, вот с таким багажом знаний я и пришел к проблеме. Закончим на этой автобиографической ноте и перейдем к более интересной части.

Читайте также:  Как достать провод из колодки

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

Решалась эта проблема очень просто – датчиком OTC (Outside Temperature Compensation), который подключается к котлу и позволяет ему автоматически подстраивать температуру теплоносителя в зависимости от уличной температуры. Проблема, казалось бы, решена, но чтение сервис-мануала на котел (Ferolli Domiproject C24D) быстро растоптало мою надежду – подключение датчика внешней температуры в данной модели не предусмотрено. Все? Все. И вот, наверное, можно было бы закончить, но летом в котле в грозу до сих пор непонятным мне способом сгорает плата управления, и разговаривая с сервис-мэном (плату в последствии отремонтировали) я спросил, возможно ли подключение OTC на мой котел? Он ответил, что подключают, используя внешние термостаты. Это отложилось у меня в памяти, но я не особо на этом концентрировался до наступления холодов, а дальше всё таже проблема.

Листая все ту же сервисную инструкцию, но уже с целью посмотреть, как же подключается термостат, я заметил, что на те же клеммы подключается «OpenTherm регулятор». Тут-же я понял – вот ОНО! Поиск в Google «OpenTherm Arduino» же меня опять огорчил – ничего особо толкового. Был монитор сообщений, но это не то – мне и слушать, то нечего – нужен именно термостат.

Читайте также:  Как делать gif на айфоне

Тут я наткнулся на статью habrahabr.ru/post/214257, окончание которой меня огорчило – автору без осциллографа так и не удалось связать котел с микроконтроллером. И тут уж если у человека знакомого с МК не вышло, то, что пробовать мне?! В интернете было найдено полное описание протокола Opentherm v2.2, что еще больше охлаждало мой пыл – физический уровень протокола был несколько замудренный – токовая петля в которой данные от котла передаются уровнем тока (5-7мА – низкий уровень, 17-23мА — высокий), а от термостата котлу уровнем напряжения ( Скетч

Формулу вычисления требуемой температуры теплоносителя долго крутил-выводил, пока она, в результате, не оказалась ПИ регулятором. В настройки добавил изменение коэффициентов и индикацию интегральной составляющей. До самого ПИ регулятора, для вычисления требуемой температуры я взял формулу из первой статьи, но без интегральной составляющей температура либо не соответствовала требуемой, либо, при большом пропорциональном коэффициенте не соответствовала требуемой и прыгала туда-сюда. Но чтение Хабра быстро дало мне ссылку с описанием ПИД-регулятора, который и был реализован.

Вообще я сделал два режима работы:

1) Прямое управление CH Setpoint – в результате получилось ни что иное как выносная передняя панель котла(ну плюс еще показывает температуры снаружи/внутри и влажность).
2) Собственно термостат с OTC.

Возможно, еще добавлю отключение датчика ОТС и настройку наклона кривой (коэффициент при (settings.indoor_target_temp-ext_temp)), но пока не вижу в этом смысла.

Пару слов добавлю о размещении датчика OTC. Сверлить дыры в окнах и стенах не хотелось, и, обдумывая эту проблему, взгляд случайно упал на старый шлейф MIDI разъема. Недолго думая я припаял провод датчика и загерметизировал место соединения термоклеем (т.к. оно будет находиться на улице). Сам датчик я разместил в тени за внешним блоком кондиционера, чтоб его не нагревали прямые солнечные лучи.



Энергосбережение

Те, кто пролистали код чуть внимательнее, наверное, заметили неизвестную библиотеку Power. Собственно на нее я возлагал надежды по снижению энергопотребления всего устройства. Смысл в том, чтобы вместо delay(1000) в главном цикле, отправлять МК в сон на 1с. Проблема в том, что режим сна нужен специфический, с работающим Timer2 для отправки/приема OpenTherm сообщений, как вы помните, они происходят асинхронно. Но увы, Proteus не очень хорошо работает со Sleep, и отладить эту часть я не смог. Сон работает, показания millis() корректируются (для этого я реализовал замер точности watchdog-таймера), но ОТ перестает работать. Именно с этой целью я и хотел приобрести Pro Mini (с последующим удалением стабилизатора и светодиодов) – меньше плата+ возможна работа на 3.3В, что дает надежду на питания прямиком от ОТ интерфейса. Привожу код библиотеки Power, для тех, кому интересно:

Читайте также:  Печать этикеток 1с розница

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

Стало значительно лучше – энкодер перестал проскакивать такты и добавлять лишние значения. Да и новая панель управления стала поудобнее, и должна ровно встать в корпус:

Дело осталось за самым малым – сделать корпус и повесить на место, но в этом и кроется самая большая проблема. Оказывается стоимость корпусов, отпечатанных на 3D-принтере, вплотную приближается к стоимости всего термостата, что совсем не радует мою ручную жабу, стоимость готовых радиолюбительских корпусов тоже не сильно адекватная для куска пластмассы. Наверное придется поступить, как подсказал друг:

— А ты знаешь, какие корпуса испокон веков лучше всего подходили для радиолюбительских поделок?
— Никакие?
— Тоже, конечно, вариант, но вообще – мыльницы.

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



Ссылки

P.S. Ну и, естественно, прошу строго не судить – я не писатель — ошибки проверил, как мог. А результатом просто решил поделиться с публикой, т.к. больше рабочих библиотек, реализующих протокол OpenTherm, я в интернете не нашел.
P.P.S. В личку поступило много вопросов по поводу распиновки платы сопряжения, действительно не заметил своей оплошности. Итак, сверху вниз — +5В, TX (от контроллера к котлу), RX (от котла к контроллеру) — резистор 1,5к, GND.
Касательно проверки платы сопряжения:

Плату сопряжения проверить не сложно — подключаете к котлу, подаете питание. Вывод RX не используете(если есть лог. анализатор то будет проще потом) вывод TX (после R3) на +5В. На контактах к котлу должно быть около 20В. после этого вывод R3 на землю — должно быть меньше 7В (около 5ти). Это значит, что плата на передачу работает нормально. На прием можно проверить только после прошивки МК.

Ссылка на основную публикацию
Телефонный шлюз что это
VoIP-шлюз — это межсетевой шлюз, предназначенный для перевода трафика между сетями различных типов. VoIP-шлюзы можно разделить на многоканальные и одноканальные:...
Сравнить технические характеристики rx330 и rx350
Линейка популярных люксовых SUV Lexus RX пополнилась новой модификацией – RX 350. Теперь покупателем RX быть еще приятнее – ведь...
Сравнить процессоры кирин и снапдрагон
Snapdragon 636 vs. Kirin 960: кто лучше? Результаты тестов и сравнительных таблиц, описанных в этой статье, помогут определить, какой из...
Телефонная клавиатура на компьютере
Виртуальная клавиатура выручит Вас, когда выйдет из строя основное физическое устройство ввода, полностью или частично ( поломается несколько клавиш )....
Adblock detector