Управление котлом при помощи ардуино и gsm и приложением

Обновлено: 18.05.2024

Управление котлом при помощи ардуино и gsm и приложением

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

Для проекта понадобятся:

Плата Arduino UNO,

GSM модуль SIM800L, Провода,

Твердотельное реле G3MB-202P,

Модуль зарядки LI-ION батарей от MICROUSB,

LI-ION батарея на 3.7 вольта с емкостью от 1000 миллиампер,

Зарядка от телефона, или блок питания на 5 вольт, и от 500 до 1000 миллиампер,

Датчик температуры и влажности DHT11,

Датчик температуры LM35,

4 сопротивления на 250-500 ом, 2k, 2.4k и 10k

Для индикации любой маломощный светодиод,

Еще понадобится: активная сим карта с положительным балансом на счету.

Вилка, розетка, и коробка в корой все поместится.

Коробку для корпуса лучше использовать из негорючего пластика!

В 16 строке скетча, необходимо вписать номера телефонов, с которых будет разрешено принимать SMS команды.

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

Я прописал в этот скетч 8 SMS команд.

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

Более подробно я рассказываю на видео, которое закреплено в конце этой статьи

//Начало скетча

//Конец скетча

Указав свои номера в скетче, загружаю его на плату.

Затем надо подготовить GSM модуль SIM800L. Припаять антенну, делитель напряжения, и еще 3 провода, как показано на схеме ниже.

Делитель напряжения нужен, для того чтобы не спалить GSM модуль. Сигнал входящего высокого уровня, для модуля SIM800L должен быть в пределах от 2.1 до 2.8 вольта!

Затем собираю все как показано на этой схеме.

Я в схеме применил твердотельное реле G3MB-202P, которое рассчитано на нагрузку до 2 Ампер. Этого вполне достаточно для обычного циркуляционного насоса!

Если вы планируете, управлять мощным обогревателем или теплым полом, то используйте более мощное твердотельное реле, на пример SSR-40DA, которое выдерживает до 40 Ампер, или SSR-80DA до 80 Ампер. И провода соответствующего сечения!

Не используйте слишком тонкие провода для питания GSM модуля, так как при запуске модуля, нагрузка может достигать 2 Ампер. При использовании очень тонких проводов, возникает просадка по напряжению, и модуль не сможет найти сеть GSM.

Подробная видео инструкция о том как пользоваться GSM контроллером.

Творческая мастерская Мастер Колотушкин 2021

Проекты на базе Arduino для начинающих, электронные самоделки своими руками.

Отопление загородного дома на arduino с передачей данных в internet

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

image


История

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

image

Что отапливаем

У меня бабушка живёт в деревенском доме под Москвой, там нет ни нормального водоснабжения, ни газа, ни отопления, а решение всех этих задач требует больших капиталовложений либо приложения рук. Вот тут и виделось место, где можно полноценно использовать arduino, есть где развернуться. Самый большой плюс деревенского дома в том, что он традиционно не большой и очень простой. Так и мой — типичный дом крестьянской семьи середины 20-го века, представляет из себя бревенчатый сруб с одной большой комнатой и кухней. Других отапливаемых помещений нет, что для нас плюс, достаточно поддерживать и контролировать температуру в единственной комнате.

Отопление

Оборудование для отопления. Традиционно в доме было печное отопление. Одна “немецкая” печь в комнате (греет за счёт длинной извилистой трубы), вторая “русская” на кухне (греет за счёт больших размеров самой топки). Если кто-то витает в киношных представлениях, что печь это классно и к тому же натурально и романтично, то беру на себя смелость предположить, что эти люди никогда не жили в доме с печным отоплением. На самом деле, это не очень комфортно, неудобно и пожароопасно. Поэтому лет 5 назад был заказан и осуществлён проект по разводке простейшего двухтрубного отопления с газовым котлом. Питать котёл предполагалось из газовых баллонов.

Впоследствии решено было систему модернизировать, добавить насос для принудительной рециркуляции теплоносителя и небольшой 2-киловаттный электрокотёл, чтобы не мучиться с разжиганием газа, когда ещё не очень холодно. Вся автоматизация сводилась к наличию большого рубильника на стене, когда становилось холодновато, его включали, а когда жарковато — выключали. Двух киловатт хватало где-то до температуры 0°C, дальше приходилось зажигать газ или печь, что было крайне неудобно.

image

Экономическая целесообразность

Перед тем как что-либо менять, естественно, было решено посчитать, имеет ли вообще вся эта задумка смысл. Просчитав по опыту расход газа из баллонов, прикинув ожидаемый расход дизтоплива, я пришёл к выводу, что в таких типах отопления нет никакого смысла при наличии достаточного количества электроэнергии. По цене баллоны выходили где то 6-7 тыс в месяц, дизтопливо, если покупать что-то палёное или летнее зимой, можно наэкономить до расхода 5 тысяч в месяц, при этом на чистой электроэнергии получалось 7 тыс. Прибавим сюда стоимость котла, постоянные таскания баллонов и запах от саляры, и станет ясно, что электричество куда проще и вовсе не дороже. Ещё, конечно, есть модные в последнее время пеллетные горелки, но они мне не подходили, так как они не умеют зажигаться сами и потому имеют минимальную мощность, при том совсем не малую (порядка 5кВт), которую 90% времени просто некуда девать, и требуют хотя бы 2 раза в неделю засыпать топливо, что иногда делать некому. Да и стоимость самих котлов на порядок больше предыдущих вариантов, поэтому они подходят для больших домов, где нужна большая мощность и большие затраты, а не в моём случае.

Heavy hardware

Попытался прикинуть требуемую мощность исходя из расхода газа и других прикидок, получилось, что надо 4-5 кВт, с запасом 6. Обзор рынка показал, что существует модель электрокотла, аналогичная уже установленному, но с 3-мя нагревательными элементами по 2 кВт каждый. При том продавалась она без управления, что мне было даже удобнее и дешевле. Вообще, сам котёл это крайне простая конструкция, металлический цилиндр с входной и выходной трубами, сверху притянутая болтами крышка, в которой закреплены ТЭНы. Дополнительно в корпус врезаны 2 датчика, резистивный датчик температуры и датчик, замыкающийся при перегреве, оба от системы охлаждения авто. Теперь встал вопрос о электроэнергии. Моя ситуация упрощалась тем, что рядом с домом находится мастерская, к которой подведены 3 фазы (в народе — 380). Естественно, возник соблазн питать каждый ТЭН от своей фазы, поэтому был куплен и проложен в котельную специализированный 4-жильный кабель в металлической оплётке для подземной укладки. Кабель введён в щиток с последовательно включенными УЗО и блоком из 3-х автоматов по 10А. Далее кабель шёл уже непосредственно в щиток с arduino и уже оттуда к элетрокотлу.

image

Light hardware


Понятно, что управлять ТЭНами будем с arduino, вопрос — как? Придерживаясь принципа — чем проще, тем надежнее, будем их просто включать или выключать с помощью реле безо всяких переходных вариантов. Облазив алиэкспресс, нашёл блок реле для ардуино, который может управлять сразу 5-ю силовыми линиями. Одна беда, максимальный ток, который эти реле могут выдерживать — 10А, а у меня получается 2кВт / 220В

9А. То есть практически максимум, а желательно иметь запас хотя бы 25%. Однако решил рискнуть. Реле честно продержались почти неделю, затем просто начали плавиться. Надо было что-то решать и быстро, ибо была зима и останавливать отопление было нельзя. Потому были прикуплены 30А реле, правда, с обмотками на 12В. Поэтому быстренько припаял к каждому реле по транзистору, чтобы включать их от 5В ардуино.

Схема неплохо работала почти месяц, а потом я заметил, что дома как-то слишком жарко. Проверка показала, что одно реле “запало” в включенном положении. Постучал по нему — заработало опять, но хватило на несколько дней. Поменял его в надежде, что это брак, но уже через неделю то же самое случилось со 2-м реле. Поставив последнее запасное, отправился опять на али. Там были обнаружены специализированные реле для ардуино на 40А! Этих-то должно хватить наверняка, подумал я. Пара-тройка недель ожидания, и вот опять выкидываю транзисторы и ставлю новые реле с уже готовой обвязкой и индикацией. Радость была недолгой, недели через 2-3 опять залипшее реле. Начал изучать вопрос, оказывается, чтобы уменьшить нагрузку на реле и убрать искрение контактов, реле надо включать не как попало, а в момент, когда синусоида напряжения проходит через 0. Ну, в теории это можно сделать с помощью нашего же ардуино, только на подключить через делить все три фазы и смотреть напряжение. Проблема ещё и в том, что реле имеет некоторое время реагирования и, собственно, нам ещё надо его установить опытным путём. В общем, задачка не такая простая.

image

И тут я наталкиваюсь на так называемые Solid State Relay, проще говоря — электросхемка, собранная на мощном тиристоре, в корпусе, похожем на обычное реле. Из его плюсов — нет механики, ничего не залипнет. Не создаёт мощных ЭМ-помех, что важно для ethernet’a, о котором ниже. Они уже содержат схему, которая включает и отключает реле при проходе нуля. На реле есть индикатор включения. Ну и ещё они беззвучные, хотя для нашего случае это не так и актуально. После изучения инструкций и характеристик были заказаны SSR-40DA, что по-русски означает — твёрдотельное реле с постоянным управляющим током 3-5В и током нагрузки до 40А. Заодно решил немного отойти от принципа «проще-лучше» и сделать ещё контроль тока в ТЭНах. Это позволило бы узнать о перегоревшем ТЭНе/реле или отключении питания на одной из фаз. Добавил в заказ модуль контроля тока на 20А, хотя выглядели они хлипковато для такого тока (2.5 квадрата кабель даже не лез в их зажим). Когда реле и модули измерения тока пришли, оказалось, что реле достаточно громоздкие, поэтому было решено перенести всё, что связано с высоковольтной частью в новый ящик, а ардуино оставить в старом.

После первых экспериментов оказалось, что я совершенно забыл, что эти реле, так как собраны на тиристорах, довольно сильно греются. Через сутки работы реле нагревались так, что я не мог терпеть, держа на них палец, то есть градусов 60C, а это уже близко к критическим 80C. Опять полез на али, прикидывая, какие радиаторы приспособить, и тут узнал, что для этих SSR есть штатные радиаторы! На момент установки радиаторов также обнаружил, что один модуль контроля тока сам ток больше не пропускает, а со стороны платы видна подгорелая дорожка. Ещё один модуль также не вызывал уверенности, решил снять их все. В таком виде они всё же слабоваты и опасны, а толку от них не так и много. Проблему отключения фаз или ТЭНов пока отложил как не очень актуальную, за 3 года ни первого, ни второго не случалось не разу.

Теперь о ПО

image

image

Arduino

Сразу же в примерах был найден кусок, который позволял управлять средней мощностью, имея двоичное управление — вкл и выкл. Смысл простой, берём некое окно времени, скажем, 1 минута, и в цикле включаем либо выключаем нагрузку в зависимости от пройденного времени. То есть, если нам надо 50% мощности, то включаем нагрузку в первые 30 сек и выключаем в последние 30, затем цикл повторяется. Быстренько переделал это под 3 независимых реле, если мощность больше 33%, то включаю второе реле, если больше 66% — то третье, а первое включаю и выключаю по основному алгоритму. Теперь встаёт главный вопрос, а по какому алгоритму подбирать мощность? Будучи программистом по профессии сначала решил, что задачка довольно простая, холодно — добавляй, тепло — отбавляй, и попытался прикинуть всё это в уме.

Оказалось, не так и просто. Полез смотреть, как это делают в продаваемых системах, оказалось, там всё либо максимально просто, как в утюге — +1C = выкл, -1 = вкл. Но тогда мы получаем почти 4C колебаний из-за инертности системы! Это слишком грубо, ибо мы можем получать данные с точностью до десятой доли градуса. Также посмотрел алгоритмы работы с использованием температуры уличного воздуха, они оказались достаточно простые и работали на готовых таблицах, которые были заранее зашиты и просто менялись в зависимости от теплопотерь дома. Копая глубже и глубже, я докопался до промышленных установок, в них повсеместно использовали алгоритмы PID-регуляторов. И, о слава популярности, оказывается, у Arduino есть бесплатная PID-библиотека!

Пару слов о том, что такое PID применительно к нашему случаю. Смысл алгоритма в том, что мы сообщаем ему требуемое значение некоторого параметра (температура внутри дома) и в цикле передаём текущее значение, а он выдаёт нам необходимое воздействие (мощность, которую надо подать на котёл). Не вдаваясь в подробности математической модели, как же он работает с точки зрения программиста. Итак, мы имеем температуру в комнате, пусть 20C, желательную температуру 22С, и даём их нашему PID-алгоритму.

Сам алгоритм имеет 3 независимые части, по имени P, I и D. Первая часть работает крайне просто, смотрит на разницу между желательной температурой и текущей температурами. То есть чем холоднее, тем большую мощность нам даст алгоритм. Вроде бы, этого и достаточно, но ведь у нас есть постоянные теплопотери дома, то есть, чтобы держать нужную температуру, нам надо постоянно давать какую-то мощность. То есть даже если температура в комнате равна заданной, нельзя отключать котёл, а надо как-то искать какую-то мощность, равную теплопотерям. А теплопотери меняются в зависимости от температуры на улице. Вот этим и занимается вторая часть под именем I. Алгоритм пытается подобрать мощность, при которой наша температура будет постоянной. И вроде тут-то уже точно всё, но нет.

Дело в том, что сам котёл, теплоноситель, а тем более дом имеют очень большую инертность. И если вы врубили котёл на 100%, то снижать мощность нужно куда раньше, чем температура достигнет желательной, иначе даже при полном отключении мы всё равно успеем перегреть комнату градуса на 2. То же самое при понижении температуры, добавлять мощность надо ещё до того, как температура дошла до нужной. Вот этим и занимается третья часть алгоритма D. Ну теперь, конечно, всё, осталось только понять, какой части давать какой вес, а вот этим занимаются множители каждой части, которые и надо подбирать. Кстати, подбор этих множителей — отдельная и довольно сложная математическая задача, я подбирал их “на глаз”, вспоминая сказанное выше. Сначала ставил все нули, кроме P, и подбирал его так, чтобы не началось само возбуждение. Потом добавлял I, а в конце и D.

Меряем температуру

Для измерения температуры всё на том же волшебном сайте были заказаны цифровые датчики температуры на базе DS18B20. Датчик сам по себе просто замечательный, его не надо ни калибровать, ни как-то настраивать, при этом он может мерить температуру с заданной точностью, а общается с Arduino по протоколу OneWier. То есть на 3 провода длиной до 50 метров можно вешать практически неограниченное число датчиков. При желании их можно даже не питать, а работать только по 2-м проводам (на самом деле, они питаются, но от провода с сигналом), но работают медленнее. В моём случае датчики я заказал в герметичном корпусе, а соединял обычной витой парой. Я поставил 3 датчика, один в котельной, один в доме, в комнате, и один на чердаке под потолком, чердак никак не отапливается и там я получаю температуру на улице.

image

Список закупленного железа

— Плата arduino. Я использовал UNO r3. Цена около 350 р.
— Ethernet Shield, около 500 р.
— Витая пара (смотря сколько надо), бухта в 305м обойдётся около 4 тыс.
— Датчики температуры, около 200 р.
— Блок питания на 110-240 — 12В 2А, 420 р.
— Стабилизатор LM7805, где-то 20 р.
— Реле SSR-40DA 3 шт. по 330 р.
— Радиаторы для реле по 200 р.

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

image

Складываем данные в базу и показываем.

Но всё это, конечно, хорошо, но не стоять же постоянно с компьютером рядом с котлом, всё же хотелось бы знать о том, что происходит дома, удалённо через инет. У меня давно уже был самый простенький VPS сервер от majordomo для чего попало. На нём создал базу данных на MySQL для хранения данных о температуре.

image

Теперь нам надо как-то положить данные из arduino в эту базу. Для этого, естественно, понадобится как минимум связать arduino с интернетом, это не просто, а очень просто. Для этого нам и понадобится Ethernet Shield и его библиотека. В доме давно уже установлен простенький роутер со “свистком” сначала от megafon, а потом от yota. Тянем стандартную витую пару к роутеру и добавляем в программу передачу данных. Передача идёт через вызов странички на PHP с параметрами — данными. Создаём страничку с именем temp.php на нашем инет-сервере


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


image

Что хочется добавить в будущем

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

Отопление загородного дома на arduino с передачей данных в internet

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

image


История

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

image

Что отапливаем

У меня бабушка живёт в деревенском доме под Москвой, там нет ни нормального водоснабжения, ни газа, ни отопления, а решение всех этих задач требует больших капиталовложений либо приложения рук. Вот тут и виделось место, где можно полноценно использовать arduino, есть где развернуться. Самый большой плюс деревенского дома в том, что он традиционно не большой и очень простой. Так и мой — типичный дом крестьянской семьи середины 20-го века, представляет из себя бревенчатый сруб с одной большой комнатой и кухней. Других отапливаемых помещений нет, что для нас плюс, достаточно поддерживать и контролировать температуру в единственной комнате.

Отопление

Оборудование для отопления. Традиционно в доме было печное отопление. Одна “немецкая” печь в комнате (греет за счёт длинной извилистой трубы), вторая “русская” на кухне (греет за счёт больших размеров самой топки). Если кто-то витает в киношных представлениях, что печь это классно и к тому же натурально и романтично, то беру на себя смелость предположить, что эти люди никогда не жили в доме с печным отоплением. На самом деле, это не очень комфортно, неудобно и пожароопасно. Поэтому лет 5 назад был заказан и осуществлён проект по разводке простейшего двухтрубного отопления с газовым котлом. Питать котёл предполагалось из газовых баллонов.

Впоследствии решено было систему модернизировать, добавить насос для принудительной рециркуляции теплоносителя и небольшой 2-киловаттный электрокотёл, чтобы не мучиться с разжиганием газа, когда ещё не очень холодно. Вся автоматизация сводилась к наличию большого рубильника на стене, когда становилось холодновато, его включали, а когда жарковато — выключали. Двух киловатт хватало где-то до температуры 0°C, дальше приходилось зажигать газ или печь, что было крайне неудобно.

image

Экономическая целесообразность

Перед тем как что-либо менять, естественно, было решено посчитать, имеет ли вообще вся эта задумка смысл. Просчитав по опыту расход газа из баллонов, прикинув ожидаемый расход дизтоплива, я пришёл к выводу, что в таких типах отопления нет никакого смысла при наличии достаточного количества электроэнергии. По цене баллоны выходили где то 6-7 тыс в месяц, дизтопливо, если покупать что-то палёное или летнее зимой, можно наэкономить до расхода 5 тысяч в месяц, при этом на чистой электроэнергии получалось 7 тыс. Прибавим сюда стоимость котла, постоянные таскания баллонов и запах от саляры, и станет ясно, что электричество куда проще и вовсе не дороже. Ещё, конечно, есть модные в последнее время пеллетные горелки, но они мне не подходили, так как они не умеют зажигаться сами и потому имеют минимальную мощность, при том совсем не малую (порядка 5кВт), которую 90% времени просто некуда девать, и требуют хотя бы 2 раза в неделю засыпать топливо, что иногда делать некому. Да и стоимость самих котлов на порядок больше предыдущих вариантов, поэтому они подходят для больших домов, где нужна большая мощность и большие затраты, а не в моём случае.

Heavy hardware

Попытался прикинуть требуемую мощность исходя из расхода газа и других прикидок, получилось, что надо 4-5 кВт, с запасом 6. Обзор рынка показал, что существует модель электрокотла, аналогичная уже установленному, но с 3-мя нагревательными элементами по 2 кВт каждый. При том продавалась она без управления, что мне было даже удобнее и дешевле. Вообще, сам котёл это крайне простая конструкция, металлический цилиндр с входной и выходной трубами, сверху притянутая болтами крышка, в которой закреплены ТЭНы. Дополнительно в корпус врезаны 2 датчика, резистивный датчик температуры и датчик, замыкающийся при перегреве, оба от системы охлаждения авто. Теперь встал вопрос о электроэнергии. Моя ситуация упрощалась тем, что рядом с домом находится мастерская, к которой подведены 3 фазы (в народе — 380). Естественно, возник соблазн питать каждый ТЭН от своей фазы, поэтому был куплен и проложен в котельную специализированный 4-жильный кабель в металлической оплётке для подземной укладки. Кабель введён в щиток с последовательно включенными УЗО и блоком из 3-х автоматов по 10А. Далее кабель шёл уже непосредственно в щиток с arduino и уже оттуда к элетрокотлу.

image

Light hardware


Понятно, что управлять ТЭНами будем с arduino, вопрос — как? Придерживаясь принципа — чем проще, тем надежнее, будем их просто включать или выключать с помощью реле безо всяких переходных вариантов. Облазив алиэкспресс, нашёл блок реле для ардуино, который может управлять сразу 5-ю силовыми линиями. Одна беда, максимальный ток, который эти реле могут выдерживать — 10А, а у меня получается 2кВт / 220В

9А. То есть практически максимум, а желательно иметь запас хотя бы 25%. Однако решил рискнуть. Реле честно продержались почти неделю, затем просто начали плавиться. Надо было что-то решать и быстро, ибо была зима и останавливать отопление было нельзя. Потому были прикуплены 30А реле, правда, с обмотками на 12В. Поэтому быстренько припаял к каждому реле по транзистору, чтобы включать их от 5В ардуино.

Схема неплохо работала почти месяц, а потом я заметил, что дома как-то слишком жарко. Проверка показала, что одно реле “запало” в включенном положении. Постучал по нему — заработало опять, но хватило на несколько дней. Поменял его в надежде, что это брак, но уже через неделю то же самое случилось со 2-м реле. Поставив последнее запасное, отправился опять на али. Там были обнаружены специализированные реле для ардуино на 40А! Этих-то должно хватить наверняка, подумал я. Пара-тройка недель ожидания, и вот опять выкидываю транзисторы и ставлю новые реле с уже готовой обвязкой и индикацией. Радость была недолгой, недели через 2-3 опять залипшее реле. Начал изучать вопрос, оказывается, чтобы уменьшить нагрузку на реле и убрать искрение контактов, реле надо включать не как попало, а в момент, когда синусоида напряжения проходит через 0. Ну, в теории это можно сделать с помощью нашего же ардуино, только на подключить через делить все три фазы и смотреть напряжение. Проблема ещё и в том, что реле имеет некоторое время реагирования и, собственно, нам ещё надо его установить опытным путём. В общем, задачка не такая простая.

image

И тут я наталкиваюсь на так называемые Solid State Relay, проще говоря — электросхемка, собранная на мощном тиристоре, в корпусе, похожем на обычное реле. Из его плюсов — нет механики, ничего не залипнет. Не создаёт мощных ЭМ-помех, что важно для ethernet’a, о котором ниже. Они уже содержат схему, которая включает и отключает реле при проходе нуля. На реле есть индикатор включения. Ну и ещё они беззвучные, хотя для нашего случае это не так и актуально. После изучения инструкций и характеристик были заказаны SSR-40DA, что по-русски означает — твёрдотельное реле с постоянным управляющим током 3-5В и током нагрузки до 40А. Заодно решил немного отойти от принципа «проще-лучше» и сделать ещё контроль тока в ТЭНах. Это позволило бы узнать о перегоревшем ТЭНе/реле или отключении питания на одной из фаз. Добавил в заказ модуль контроля тока на 20А, хотя выглядели они хлипковато для такого тока (2.5 квадрата кабель даже не лез в их зажим). Когда реле и модули измерения тока пришли, оказалось, что реле достаточно громоздкие, поэтому было решено перенести всё, что связано с высоковольтной частью в новый ящик, а ардуино оставить в старом.

После первых экспериментов оказалось, что я совершенно забыл, что эти реле, так как собраны на тиристорах, довольно сильно греются. Через сутки работы реле нагревались так, что я не мог терпеть, держа на них палец, то есть градусов 60C, а это уже близко к критическим 80C. Опять полез на али, прикидывая, какие радиаторы приспособить, и тут узнал, что для этих SSR есть штатные радиаторы! На момент установки радиаторов также обнаружил, что один модуль контроля тока сам ток больше не пропускает, а со стороны платы видна подгорелая дорожка. Ещё один модуль также не вызывал уверенности, решил снять их все. В таком виде они всё же слабоваты и опасны, а толку от них не так и много. Проблему отключения фаз или ТЭНов пока отложил как не очень актуальную, за 3 года ни первого, ни второго не случалось не разу.

Теперь о ПО

image

image

Arduino

Сразу же в примерах был найден кусок, который позволял управлять средней мощностью, имея двоичное управление — вкл и выкл. Смысл простой, берём некое окно времени, скажем, 1 минута, и в цикле включаем либо выключаем нагрузку в зависимости от пройденного времени. То есть, если нам надо 50% мощности, то включаем нагрузку в первые 30 сек и выключаем в последние 30, затем цикл повторяется. Быстренько переделал это под 3 независимых реле, если мощность больше 33%, то включаю второе реле, если больше 66% — то третье, а первое включаю и выключаю по основному алгоритму. Теперь встаёт главный вопрос, а по какому алгоритму подбирать мощность? Будучи программистом по профессии сначала решил, что задачка довольно простая, холодно — добавляй, тепло — отбавляй, и попытался прикинуть всё это в уме.

Оказалось, не так и просто. Полез смотреть, как это делают в продаваемых системах, оказалось, там всё либо максимально просто, как в утюге — +1C = выкл, -1 = вкл. Но тогда мы получаем почти 4C колебаний из-за инертности системы! Это слишком грубо, ибо мы можем получать данные с точностью до десятой доли градуса. Также посмотрел алгоритмы работы с использованием температуры уличного воздуха, они оказались достаточно простые и работали на готовых таблицах, которые были заранее зашиты и просто менялись в зависимости от теплопотерь дома. Копая глубже и глубже, я докопался до промышленных установок, в них повсеместно использовали алгоритмы PID-регуляторов. И, о слава популярности, оказывается, у Arduino есть бесплатная PID-библиотека!

Пару слов о том, что такое PID применительно к нашему случаю. Смысл алгоритма в том, что мы сообщаем ему требуемое значение некоторого параметра (температура внутри дома) и в цикле передаём текущее значение, а он выдаёт нам необходимое воздействие (мощность, которую надо подать на котёл). Не вдаваясь в подробности математической модели, как же он работает с точки зрения программиста. Итак, мы имеем температуру в комнате, пусть 20C, желательную температуру 22С, и даём их нашему PID-алгоритму.

Сам алгоритм имеет 3 независимые части, по имени P, I и D. Первая часть работает крайне просто, смотрит на разницу между желательной температурой и текущей температурами. То есть чем холоднее, тем большую мощность нам даст алгоритм. Вроде бы, этого и достаточно, но ведь у нас есть постоянные теплопотери дома, то есть, чтобы держать нужную температуру, нам надо постоянно давать какую-то мощность. То есть даже если температура в комнате равна заданной, нельзя отключать котёл, а надо как-то искать какую-то мощность, равную теплопотерям. А теплопотери меняются в зависимости от температуры на улице. Вот этим и занимается вторая часть под именем I. Алгоритм пытается подобрать мощность, при которой наша температура будет постоянной. И вроде тут-то уже точно всё, но нет.

Дело в том, что сам котёл, теплоноситель, а тем более дом имеют очень большую инертность. И если вы врубили котёл на 100%, то снижать мощность нужно куда раньше, чем температура достигнет желательной, иначе даже при полном отключении мы всё равно успеем перегреть комнату градуса на 2. То же самое при понижении температуры, добавлять мощность надо ещё до того, как температура дошла до нужной. Вот этим и занимается третья часть алгоритма D. Ну теперь, конечно, всё, осталось только понять, какой части давать какой вес, а вот этим занимаются множители каждой части, которые и надо подбирать. Кстати, подбор этих множителей — отдельная и довольно сложная математическая задача, я подбирал их “на глаз”, вспоминая сказанное выше. Сначала ставил все нули, кроме P, и подбирал его так, чтобы не началось само возбуждение. Потом добавлял I, а в конце и D.

Меряем температуру

Для измерения температуры всё на том же волшебном сайте были заказаны цифровые датчики температуры на базе DS18B20. Датчик сам по себе просто замечательный, его не надо ни калибровать, ни как-то настраивать, при этом он может мерить температуру с заданной точностью, а общается с Arduino по протоколу OneWier. То есть на 3 провода длиной до 50 метров можно вешать практически неограниченное число датчиков. При желании их можно даже не питать, а работать только по 2-м проводам (на самом деле, они питаются, но от провода с сигналом), но работают медленнее. В моём случае датчики я заказал в герметичном корпусе, а соединял обычной витой парой. Я поставил 3 датчика, один в котельной, один в доме, в комнате, и один на чердаке под потолком, чердак никак не отапливается и там я получаю температуру на улице.

image

Список закупленного железа

— Плата arduino. Я использовал UNO r3. Цена около 350 р.
— Ethernet Shield, около 500 р.
— Витая пара (смотря сколько надо), бухта в 305м обойдётся около 4 тыс.
— Датчики температуры, около 200 р.
— Блок питания на 110-240 — 12В 2А, 420 р.
— Стабилизатор LM7805, где-то 20 р.
— Реле SSR-40DA 3 шт. по 330 р.
— Радиаторы для реле по 200 р.

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

image

Складываем данные в базу и показываем.

Но всё это, конечно, хорошо, но не стоять же постоянно с компьютером рядом с котлом, всё же хотелось бы знать о том, что происходит дома, удалённо через инет. У меня давно уже был самый простенький VPS сервер от majordomo для чего попало. На нём создал базу данных на MySQL для хранения данных о температуре.

image

Теперь нам надо как-то положить данные из arduino в эту базу. Для этого, естественно, понадобится как минимум связать arduino с интернетом, это не просто, а очень просто. Для этого нам и понадобится Ethernet Shield и его библиотека. В доме давно уже установлен простенький роутер со “свистком” сначала от megafon, а потом от yota. Тянем стандартную витую пару к роутеру и добавляем в программу передачу данных. Передача идёт через вызов странички на PHP с параметрами — данными. Создаём страничку с именем temp.php на нашем инет-сервере


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


image

Что хочется добавить в будущем

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

Блок управления предпусковым подогревателем Webasto (Arduino + Webasto = Ardubasto)

1) При подаче питания на блок управления через нормально разомкнутые выходные контакты сигнализации (с дистанционным управлением по СМС) блок непрерывно посылает в шину W-bus команду на подогрев.

2) При подключении Arduino к компьютеру по USB и использовании программ диагностики Webasto можно диагностировать, управлять и стирать ошибки подогревателей. Для этого необходимо загрузить пустой скетч.

Это было первая полностью работоспособная реализация блока управления.

Дальнейшим развитием, пока до конца не реализованным является выполнение следующих функций и характеристик устройства:

1) Управлять включением по СМС от сигналки блоком Webasto – при кратковременном замыкании контакта сигналки Arduino должен встать на самоподхват по питанию на время работы Webasto.
2) Дополнить устройство монохромным дисплеем типа Nokia 5110.
3) Вывести на дисплей получаемые от Webasto по W-bus температуру охлаждающей жидкости и напряжение автомобильного аккумулятора.
4) Вывести на дисплей статус работы Webasto
5) Отключение Webasto должно происходить либо по достаточной температуре охлаждающей жидкости либо по низкому напряжению автомобильного аккумулятора.
6) Звуковая сигнализация (мелодия) включения/выключения Webasto, нажатии кнопки и т.д.
7) Включение/выключение Webasto от кнопки на устройстве.
8) Управление ходовыми огнями – при появлении напряжения питания потребителей 2 группы – включение и при включении габаритов или падения напряжения автомобильного аккумулятора ниже 13,5 вольта (вежливая подсветка)– отключение.

Все это в принципе реализовано и описано в алгоритме управления (формат программы yED).

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

GSM устройство управления котлами Webasto и не только

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 02/10/2017 - 01:44

Короче устройство закончено, работает у двух человек, но чето они не делятся как оно работает, есть ли косяки.


Смысл моего устройства такой. Модуль работает по одному из трёх алгоритмов управления котлами:

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

2. Запуск котла по цифровой шине W-BUS. (Данный вариант применим к управлению котлами Webasto EVO, напрямую без штатных устройств управления)

3. Запуск котла потенциалом 12В. Т.е. пока есть напряжение 12В - котел включен, иначе - выключен. (данный вариант применим для запуска аналоговых котлов Webasto Termo Top C , E)

Режим выбирается посредством посылкой SMS с соответствующей командой и хранится в еепром. Имеется обратная связь по успешности запуска котла даже для аналоговых webasto. Имеется выбор времени работы котла (также хранится в еепром).

Также к данному устройству выгодно подключать сигнализацию старлайн или другую. По сути расширяется функционал сигнализации до GSM. Функции для старлайн:

1. Включение и выключение котла с допканалов сигнализации (отдельный канал - вкл и отдельный - выкл)

2. Запуск/останов ДВС средствами старлайна, но по GSM команде от данного устройва.

3. Вывод состояния зажигания, работы ДВС, состояния охраны, тревоги в данное устройство для оповещения по GSM.

Себестоимость устройства около 1 тыс. рублей. Польза очевидна.

Помогите допилить три вещи.

1. Запись номера телефона пользователя по смс, ну или по звонку.

2. Наверняка GSM модуль будет зависать. Нужно сделать проверку его "зависания" и при необходимости рестарт

3. Научить всё это дело засыпать, чтоб поменьше кушало энергии. замерял вроде где-то 25. 30 мА. Многовато, если учесть ещё потребление сигнализации старлайн.

Еще одна GSM охранно-пожарная сигнализация с возможностью управления отоплением дома (дачи)


Остальные комплектующие покупались давно или остались от других «проектов».


Схема


Прошивку берем здесь
15.04.2017 — добавлена возможность постановки/снятия охраны с помощью брелка.
Например вот таких:


Запихал все это в корпус D6MG (корпус для установки на DIN рейку):

Моя дача отапливается с помощью таких электроконвекторов (не реклама) т.к. газа нет. Да и управлять газовым котлом с помощью электроники — ОПАСНО! Поэтому управление отоплением делалось именно под кварцевые обогреватели.

В память устройства можно прописать до 5-ти номеров телефонов и 12 датчиков. Датчики могут быть как проводные, так и беспроводные. Но всего 12.

Перед постановкой на охрану все датчики проверяются. Если где-то не закрыто (и т.п.), то охрана не включится и придет соответствующее СМС.

Датчик дыма опрашивается всегда (если разрешен его опрос). Отключается командой — dymmonitoroff

Контролируется наличие 5 вольт от источника питания (т.е. косвенно 220 вольт). При пропадании/появлении придет СМС. Отключается командой — voltmonitoroff

Номер первого позвонившего будет сохранен как основной. Только с этого номера можно выполнить команды настройки устройства (команды 1-12, 12.1).

Консольных команд нет. Кому они нужны в реальных условиях…

СМС-Команды (регистр значения не имеет):

1. resetconfig — сброс всех настроек на «заводские»

3. listphones — прислать в СМС список телефонов, записанных в памяти

4. delphone — удалить номер телефона
например: delphone:1
удалит 1-й номер в списке

5. resetphones — сброс всей «телефонной книги»

6. learnwirelesson — включить режим «прописывания» беспроводных датчиков (выключается сам через 30 секунд)

7. settime — установить время
например: settime: ГГ/ММ/ДД ЧЧ: ММ

8. addsensor — записать датчик
например: addsensor:6=datchik vhodnoi dveri+L запишет в память имя датчика «datchik vhodnoi dveri», подключенный к 6-й ноге Arduino, тревога при низком уровне
addsensor:7=datchik dvizheniya v korridore+H запишет в память датчик с именем «datchik dvizheniya v korridore», подключенный к 7-й ноге Arduino, тревога при высоком уровне.

9. listsensors — прислать в СМС список датчиков, прописанных в памяти устройства.

10. delsensor — удаляет датчик
например: delsensor:11 — удалит 11-й датчик в списке

11. resetsensors — сброс всего списка датчиков

12. namesensor — изменить название датчика в списке
например: namesensor:7=datchik dveri v tualet — изменит название 7-го датчика в списке на «datchik dveri v tualet»

15.04.2017 добавилась команда для прописывания брелков (всего можно прописать до 5-ти штук):
12.1 learnkey — включить режим записи кодов брелков (выключается сам через 30 секунд)

13. ringon — включить «дозвон» на тревожные номера.

14. ringoff — выключить «дозвон» на тревожные номера.

15. smson — включить оповещение по СМС

16. smsoff — выключить оповещение по СМС
17. dymmonitoron — включить «опрос» датчика дыма

18. dymmonitoroff — выключить «опрос» датчика дыма

19. voltmonitoron — включить «опрос» наличия напряжения сети

20. voltmonitoroff — выключить «опрос» наличия напряжения сети

21. guardon — включить охрану

22. guardoff — выключить охрану

23. money — запросить баланс

24. info — запросить состояние системы

25. clearsms — удалить все СМС

26. ledon — включить «моргающую» лампочку

27. ledoff — выключить «моргающую» лампочку

28. otoplenieon — включить отопление

29. otoplenieoff — выключить отопление

30. targettemp — установить желаемую температуру в помещении
например: targettemp=30 — желаемая температура 30 градусов

31. help — прислать в ответном СМС список поддерживаемых команд.

Фух! По-моему все.
Так-же можно поставить/снять с охраны по звонку.

GSM контроллер для Планар/Бинар на Arduino


Появилась у меня идея сделать управление автономными отопителями(двигателя и салона) через SMS.
Т.к. валялся без дела Arduino Nano, то на его основе начал разрабатывать плату и дополнительно заказал GSM/GPRS Shield.

Задача стояла следующая:
1. Запрашивать статус — приходят в sms данные с нескольких датчиков температуры, напряжение на аккумуляторе и состояние автономок(вкл./выкл).
2. При получении sms с текстом "planar" или "binar" — соответственно, включать то, что нужно и запоминать состояние. После отправлять ответное sms с подтверждением включения.
3. Мониторить падение напряжения в сети ниже заданного лимита(11В) и отправлять мне sms с оповещением.
4. Мониторить баланс на sim карте.
5. Зуммер для оповещения о зафиксированном перегреве на датчиках температуры.

Реализация:
Питание контроллера через стабилизатор 5В — 7805. На входе диодный мост для защиты от переполюсовки.
Управление нагрузкой два MOSFET транзистора — IRFZ44n.
Датчики температуры работают по 1-Wire — DS18B20.

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