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

Добрый день, уважаемые коллеги. Предлагаю универсальный контроллер.

Вариант с пассивным охлаждением с радиатором площадью 600см2 (сейчас это основной вариант исполнения контроллера)


Основной блок идет в таком составе - блок и три датчика температуры на шлейфе. Длина провода шлейфа датчиков температуры от 2.5 до 3 метров. Длина провода подключения к розетке - около 2 метров.

Стоимость основного блока в стандартной комплектации составляет 10500 рублей.

Внимание, новинка!

Андроидная версия автоматики. Управление производится посредством графического интерфейса на планшете или смартфоне. Плотность экрана должно быть не менее 400dpi на 600 dpi. Версия андроида от 4.0 и выше. Как правило, все смартфоны и планшеты, купленные не позднее 5 лет назад удовлетворяют этим требованиям.

Вот так выглядят экраны для смартфона и планшета при работе в режиме пивоварения.

Стоимость базового блока Андроидной версии составляет 19900 рублей. В комплект входит сам блок, шлейф с тремя датчиками температуры, один датчик уровня жидкости и Wi-Fi модуль с модифицированной прошивкой.

За отдельную плату желающим можно в комплекте поставить андроид-планшет. Выберите любой, какой Вам нужен, главное, чтобы я смог его купить в своем городе. Есть недорогие планшеты в Ашане за 2500-3400 рублей и в Технопоинте от 2500 рублей. Гарантию на планшет будет производить тот магазин, в котором я его куплю, поэтому смотрите, чтобы наличие сервисных служб в своем регионе.

Управление Андроидным контроллером будет возможно как через прямое подключение к нему, так и через удаленный сервер.

Для тех, кто желает произвести апгрейд автоматики на новую версию будет высылаться прошитая плата Ардуино и Wi-Fi модуль. Старую плату надо будет вытащить из блока, новую вставить. Стоимость комплекта будет составлять 7400 для тех пользователей, кто ранее приобретал у меня Wi-Fi модуль и 9400 для тех, кто такой модуль не приобретал.

Видео-обзор новой версии автоматики HelloDistiller

В стандартную комплектацию также включен один датчик уровня:

Стоимость контроллера в такой комплектации (основной блок, шлейф из 3 датчиков температуры, один датчик уровня), без комплектации клапанами отбора составляет 10500.00 рублей.

Изделие рассчитано на ТЭНы максимальной мощностью 3.5Квт. При необходимости можно увеличить максимальную мощность до 4.5 квт, доплата за повышенную мощность составит 1500 руб.

Также возможно расширение мощности однофазной автоматики до 6 Квт. Стоимость такой автоматики возрастает на 5000 руб, по сравнению со стандартной, то есть базовый блок будет стоить 15500.00 руб.
Вот, фото такой 6-киловатной автоматики

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

Стоимость такой доработки 2000.00 руб

Клапан поставляется в следующей комплектации:


Стоимость такого клапана 1000.00 рублей

Для подключения клапанов с розеткой или автономной системы охлаждения есть такой переходник.

Стоимость такого переходника 100.00 рублей

Примечание 1: Диаметр датчиков температуры 6 мм, учитывайте это при планировании оборудования.

Примечание 2: Доставка за счет покупателя. Доставка до "Почта РФ" осуществляется силами Продавца, Доставка до иных транспортных компаний - за счет Покупателя (через услугу "Забор груза"), оплата согласно тарифам ТК. Стоимость доставки "Почтой РФ" оплачивается предоплатой Продавцу.

Гарантийный срок составляет 6+6 месяцев. Гарантия первые 6 месяцев. Если в течение этого периода что-то сломается, то ремонт бесплатный.
Расширенная гарантия еще 6 месяцев. Если в течение этого периода что-то выйдет из строя по вине Продавца, то, что можно заменить самостоятельно (например датчик температуры), то эту деталь я заказываю на адрес покупателя из Китая или отправляю почтой РФ, если таковая деталь имеется в наличии и даю инструкции по замене.
К гарантийным случаям не относятся поломки, произошедшие в результате неправильных действий Покупателя, например короткое замыкание, механические повреждение, попадание жидкости внутрь изделия, самостоятельная доработка изделия.
Гарантийный срок на клапана 1 месяц.

Вариант для работы с НБК, включает в себя насос и датчик давления (можно без датчика давления, но тогда не будет возможности авто-регулировки подачи браги ).
Вот шестеренчатый насос.

Стоимость насоса 3500 руб.
Внимание! Для насоса нужен еще блок питания на 9-12В током от 2А и выше. Подходящие блоки питания обычно продаются там, где торгуют светодиодной продукцией. Насос не имеет встроенной схемы управления, управление внешнее от контроллера. На насосе имеется кнопка для тестирования либо для кратковременного включения в режиме полной подачи.
Кроме того система умеет управлять любыми насосами для НБК сторонних производителей, управляемым в режиме ШИМ и имеющими вход для управления TTL уровня.

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

Шлейф управления насосом НБК, управление которых производится с помошью ШИМ. Период ШИМ 1 секунда. В секунду может подваться до 125 импульсов. То есть скорость управления насосом 0 - это 0 процентов, насос остановлен, 125 - Это 100 процентов. С помощью этого шлейфа можно управлять, например, насосами, которые производит Игорь223.

Стоимость шлейфа управления насосом 300 руб.

Датчик давления на основе MPX5010DP. Датчик давления позволяет смотреть текущее давление на экране с точностью до 0.1 мм рт.ст, а также отключать систему по превышению заданного давления и регулировать подачу браги в НБК .

Стоимость датчика давления 2500руб.

Дополнительный датчик уровня голов, разлития воды
В комплекте с контроллером идет только один датчик уровня. Если нужен дополнительный, например датчик уровня голов, датчик разлития воды, то можно его изготовить самостоятельно, либо купить.
Стоимость дополнительного датчика 200 руб/шт .
Фото датчика:

GSM/GPRS модуль для контроллера, стоимость модуля 3000.00 рублей:

Модуль позволяет:
1) Полностью управлять контроллером через GPRS при наличии интернета и доступности сервера через приложение на Android , Windows или Web-интерфейс Зарегистрируйтесь или авторизуйтесь для просмотра ссылок! )
2) Управлять (останавливать и запускать процесс) и получать состояния контроллера посредством SMS в случае ошибок доступа к серверу либо к интернету.

Фото модуля:

Wi-Fi модуль для контроллера, стоимость модуля 2000.00 рублей:

Модуль позволяет:
1) Полностью управлять контроллером при наличии интернета и доступности сервера и Wi-Fi роутера через приложение на Android , Windows или Web-интерфейс (приложения доступны в облаке Ссылки могут видеть только зарегистрированные пользователи. Зарегистрируйтесь или авторизуйтесь для просмотра ссылок! ).

Фото модуля:

Также имеется возможность изготовить трехфазный контроллер.

Длина проводов датчиков температуры со шлейфом около 4 метров.
Длина провода подключения входа (провод ПВС 5х1.5) трехфазной вилки (вилка 5-контактная на 16 или 32А IEK) 3 метра.
Длина провода подключения выхода (провод ПВС 5х1.5) розетки (розетка 5-контактная на 16 или 32А IEK) 1.5 метра.
Стоимость такого изделия, максимальной мощностью 3.5 квт на фазу составляет 31500.00 руб
При необходимости можно увеличить максимальную мощность до 4.5 квт на фазу, доплата за повышенную мощность составит 2500 руб.
Трехфазные изделия изготавливаются вне очереди.
Также разрабатывается аналогичное изделие, но с поддержкой управления НПГ.

В 2014 году я наткнулся на видео где мужик делает пиво из концентрата пивного сусла. Я загорелся идеей пивоварения и тут понеслось…
Варка пива из консервов мне стала не интересной после 2-го раза и я решил перейти на all-grain. Раз сварил пиво на газу и понял, что это не мой метод. Решил сделать автоматику. Вечера стали интересней. Я так втянулся в программирование, что кодил аж до 2-3 часов ночи. Нужны были испытания в реальных условиях. В закромах откопал кипятильник и граненый стакан.

И вот, что в итоге у меня получилось

А теперь расскажу как сделать такую автоматику.
Для начала нам понадобятся следующие детали. Я их купил в Китае.
ssd1289 или ili9341.
Твердотельное реле для управления ТЭНом (или схема на )
Твердотельное реле для управления насосом (для насоса на переменном токе) или (на постоянном токе)
Термодатчик или или
Блок питания 7.5-9В 1А. Например
Разьемы для подключения термодатчика и насоса и
(еще )
(buzzer)
Резистор на 4.7кОм

Схема низкого напряжения

Силовая схема. Будьте осторожны. Не уверены — доверьте профессионалам.

Сечение проводов берем в зависимости от суммарной мощности насоса и ТЭНа. Для твердотелки ТЭНа нужен радиатор т.к. греется он не слабо. Запихиваем все это в коробок. Заливаем прошивку,настраиваем и варим пиво.

(инструкция внутри)

Но базовых функций мне было мало. И я решил прикрутить wifi. Прикупил на aliexpress модуль ESP8266 . Заодно заказал модуль т.к. ребята с форума ну очень просили внедрить его в проект (можно и без него) . И подключил по следующей схеме

Для питания wifi модуля нам нужен источник питания 5В. Использовать arduino нельзя. Можно использовать отдельный источник питания либо преобразовать 9В в 5В. Для этого можно собрать простенькую схему со стабилизатором напряжения или купить готовый у китайцев. Например (есть еще куча других вариантов).

Следующим шагом будет прошивка нашего модуля прошивкой NodeMCU. Скачиваем . Запускаем. Нажимаем Start и ждем окончания заливки прошивки. Прошили? Вот и отлично. Теперь загружаем скрипт. Для этого нам понадобится . Есть конечно другие программы типа . Но у меня не получилось их заставить работать с моим модулем. В ESPlorer-е создаем новый файл init.lua с следующим содержанием:

Меняем имя wifi сети и пароль на свои. Ставим скорость 9600. Жмем кнопку «Open»(если не конектится может помочь нажатие кнопки reset на модуле). И жмем «Save to ESP». После загрузки скрипта, модуль должен подключится к вашему роутеру. Это можно проверить зайдя в роутер и посмотреть клиентов DHCP. Если вашего модуля там не видно, то что-то пошло не так.

В web-интерфейсе присутствуют следующие функции.
1. Мониторинг процессов. Можно следить за температурой, состоянием насоса, показателями затирания и варки. Веб интерфейс снабжен звуковым сигнализатором.
2. Загружать рецепты в память контроллера и на флешку.
3. Построение глобального графика всей варки.






Вход в web-интерфейс

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

История

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

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

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

Отопление

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

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

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

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

Heavy hardware

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

Light hardware

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

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

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

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

Теперь о ПО

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 датчика, один в котельной, один в доме, в комнате, и один на чердаке под потолком, чердак никак не отапливается и там я получаю температуру на улице.

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

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

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

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

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

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

Data upload error!

";} else {echo "";} mysql_close($connect); ?>
После этого мы имеем данные о температурах и мощности работы котла, чтобы каждый раз не лазить в базу, а посмотреть последние данные, написал “временный” скриптик на php, но, как известно, нет ничего более постоянного, чем временные вещи, так им и пользуюсь.
gettemp.php

\n"; while ($line = mysql_fetch_array($result, MYSQL_NUM)) { echo "$line"; echo "TempIN = $line TempOUT = $line\n"; echo "TempKotel = $line\n"; echo "Power = $line\n"; } echo "\n"; mysql_free_result($result); mysql_close($connect); ?>

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

Конечно, это, в принципе, минимум, который однако позволяет сделать полноценное и достаточно удобное управление отоплением в небольшом доме. Хотя с некоторыми переделками его можно использовать и в многокомнатных и вообще строениях любой сложности, arduino может тут очень многое, если не всё. Именно в этом проекте хотелось бы добавить в будущем:
  • регулятор температуры. Хотя практика показала, что 22.5 это вполне оптимальное значение и в принципе не требует корректировки. Опять же, регулятор хотелось бы сделать удалённо от основного arduino, но для этого надо либо сложную схему, либо ещё один arduino. В общем, есть о чём подумать.
  • Хотелось бы возможность не только читать температуру, но и менять параметры PID на лету. Возможно, сделать отдельно режим “первоначального прогрева”, а то параметр I долго нормализуется после каждого перезапуска программы.
  • Хочется простенькое приложение под android, чтобы на телефоне не тыкать в мелкий браузер. Это самое простое и уже в процессе.
  • Всё же подключить датчик температуры теплоносителя и передавать его данные, как и другие данные температуры.
  • Сигнализация аварийных случаев. То есть автоматически определять потерю напряжения на линиях, отказ реле или ТЭНов.
  • Сделать “карусель”, менять местами назначения ТЭНов. Иначе получается, что один ТЭН работает всегда больше других, и он в теории должен отказать первым. Надо просто время от времени менять PIN’ы в программке. Вроде просто, но никак не дойдут руки добавить.
Текст программы для Arduino:

#include #include #include #include #include #include // OneWire DS18S20, DS18B20, DS1822 Temperature Example // // http://www.pjrc.com/teensy/td_libs_OneWire.html // // The DallasTemperature library can do all this work for you! // http://milesburton.com/Dallas_Temperature_Control_Library OneWire ds(6); // on pin 10 (a 4.7K resistor is necessary) DallasTemperature sensors(&ds); boolean waithTemp = false; int TEMPERATURE_PRECISION = 10; int lamp1 = 7; int lamp2 = 8; int lamp3 = 9; DeviceAddress IntThermometer = { 0x28, 0x8E, 0xF4, 0x28, 0x05, 0x00, 0x00, 0x07 }; DeviceAddress OutThermometer = { 0x28, 0x65, 0x15, 0x32, 0x05, 0x00, 0x00, 0xE2 }; DeviceAddress KatThermometer = { 0x28, 0x61, 0x43, 0x28, 0x05, 0x00, 0x00, 0x14 }; byte addr; unsigned long StartTime = 0; unsigned long WorkWindow = 60000; // 10min unsigned long WorkTime, TenTime; float maxData = 100; float celsius, temp; double Setpoint, Input, Output; int ThermometerCount; DeviceAddress Thermometer; PID myPID(&Input, &Output, &Setpoint, 10, 0.1, 5, DIRECT); //0.000006 0.03 40 double targetTemp = 22.5; byte mac = { 0xE0, 0x69, 0x95, 0x72, 0x65, 0xE8 }; byte ip = { 192, 168, 1, 100 }; byte server = { ?, ?, ?, ? }; EthernetClient client; byte webskipcount = 10; byte webcount = 0; void setup(void) { Serial.begin(9600); //Ethernet.begin(mac, ip); Ethernet.begin(mac); sensors.begin(); pinMode(lamp1, OUTPUT); pinMode(lamp2, OUTPUT); pinMode(lamp3, OUTPUT); Setpoint = targetTemp; myPID.SetOutputLimits(0, maxData); myPID.SetMode(AUTOMATIC); celsius = targetTemp; StartTime = millis(); } long filter(long x, long Nb, long k) { static long y = 0, z = 0; z += (x - y); return y = (Nb * z) >> k; }; void loop(void) { byte i; byte type_s; byte data; long Out; if (millis() < StartTime) { StartTime = millis(); } WorkTime = millis() - StartTime; if (WorkTime > WorkWindow) { WorkTime = WorkTime - WorkWindow; StartTime = millis() + WorkTime; } //Serial.println("cycle"); sensors.requestTemperatures(); celsius = sensors.getTempC(IntThermometer); Input = celsius; if (webcount >= webskipcount) { char buffer; String temperatureS1 = dtostrf(celsius, 2, 2, buffer); String temperatureS2 = dtostrf(sensors.getTempC(OutThermometer), 2, 2, buffer); String temperatureS3 = dtostrf(sensors.getTempC(KatThermometer), 2, 2, buffer); String OutputPowerS = dtostrf(Output, 2, 2, buffer); String msg = "GET /temp.php?t1="+ temperatureS1 + "&t2=" + temperatureS2 + "&t3=" + temperatureS3 + "&p="+OutputPowerS; Serial.println(msg); client.connect(server, 80); client.println(msg); client.stop(); webcount = 0; } else { webcount += 1; } myPID.Compute(); //Serial.print(Input);Serial.print(" ");Serial.print(Output);Serial.print(" ");Serial.println(Setpoint); if (Output > maxData/3*2) { digitalWrite(lamp1, HIGH); digitalWrite(lamp2, HIGH); Out = Output - maxData/3*2; } else if (Output > maxData/3) { digitalWrite(lamp1, HIGH); digitalWrite(lamp2, LOW); Out = Output - maxData/3; } else { digitalWrite(lamp1, LOW); digitalWrite(lamp2, LOW); Out = Output; } TenTime = map(Out, 0, maxData/3, 0, WorkWindow); Serial.print(celsius); Serial.print(" "); Serial.print(sensors.getTempC(OutThermometer)); Serial.print(" "); Serial.print(sensors.getTempC(KatThermometer)); Serial.print(" "); Serial.print(Output); Serial.print(" "); Serial.print(TenTime); Serial.print(" "); Serial.println(WorkTime); if (WorkTime < TenTime) { digitalWrite(lamp3, HIGH); } if (WorkTime > TenTime) { digitalWrite(lamp3, LOW); } }

Для чего же мне понадобилась автоматика?

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

Делать я свою автоматику решил из готового проект . Работает она на arduino, к нему подключается датчик температуры, два реле, дисплей и кнопки. Первое реле управляет ТЭНом, второе реле насосом. Насос для затирания очень удобен, т.к. отпадает необходимость за весь процесс затирания перемешивать затор (подробнее как варить пиво, рекомендую прочитать в моих ранних )

Первую автоматику я собрал с помощью модулей:

- Arduino mini
- Блок из двух реле на 15А
- Дисплей 2004
- Температурный датчик
- 4 кнопки
- БП на 5 вольт
Удобство модульной сборки, только состоит в том, что достать все детали не составит труда и паять практически ничего не нужно. Но самый большой минус - это огромное количество проводов, а дешевое китайское реле создавало помехи на дисплее, по этому механическое реле пришлось заменить твердотельным.

Со временем я пришел к выводу, что надо собрать свою автоматику на чипе с 64кб памяти (у arduino mini всего 32 кб) на одной плате. Готового решения я не нашел, по этому сам стал создавать схему и в последующем плату для своей поделки.

Схема:

Схему разработал и рисовал так сказать на коленке и для себя, по этому возможны кое-какие недочеты, но схема полностью рабочая:

Плата:

Схему нарисовал, далее осталось нарисовать плату, сначала рисовал с помощью программы Sprint-Layout 6 , очень удобная, но маловато в ней функционал, по этому решил от нее уйти в сторону программы DipTrace и вот что у меня получилось:

Скачать исходники можно .
Как видно свою пивоварню я назвал QRBeer и это уже версия 0.5…

Плата готова, осталось ее как-то изготовить. Для этого я решил использовать . Почему именно им, а не ЛУТ? Просто решил испробовать для себя такую новую технологию, ЛУТ я уже испробовал, так сказать пощупал, не скажу, что мне она понравилась…

Фоторезист:

Для изготовления печатных плат с помощью фоторезиста понадобится:
- Пленка для принтера
-
- УФ лампа
- Сода кальцинированная

УФ лампа

Для начала поделюсь информацией как я делал свою УФ лампу . Сначала хотел использовать готовую лампу, а потом решил собрать ее на шести 3Вт светодиодах:
и куплены так же на тао:


Светодиоды приклеил на радиатор , хотя можно было их собрать на текстолите, сомневаюсь, что они перегрелись бы.
Вот что у меня получилось:


Изготовление платы

1. Итак, шаблон я подготовил, осталось его только распечатать на пленке. Как я писал выше нужна пленка для принтера, я испробовал пленку как для лазерного принтера, так и для струйного, лучший вариант получается только на пленке для струйной печати. Печатать нужно в негативе и в зеркальном отражении:

Шаблон я сразу заламинировал, что бы отпечатки пальцев и мусор легко можно был смыть.
2. Далее нужно зашкурить нашу будущую плату (фальгированный стеклотекстолит). Для этого подойдет слегка смоченная обычная губка или меламиновая губка:


3. После этой процедуры, медь ещё нужно обезжирить ацетоном:


Как видно на моем фото обезжиривал я обычной салфеткой, а ацетон я перелил в бутылочку от перекиси, так удобнее брать…
4. Следующим шагом нужно обрезать фоторезист под свою будущую плату слегка с запасом и аккуратно снять верхнюю защитную пленку, что бы не повредить его. Если фоторезист отечественный, отклеивать нужно матовую сторону, если китайский, то тут разницы нет…
5. Далее наклеиваем фоторезист на текстолит, что бы под фоторезистом не появились воздушные пузыри, иначе в таких местах дорожки не проявятся, обрезаем лишнее…
Процесс наклеивания фоторезиста напоминает наклеивание защитной пленки на телефон.


6. Когда фоторезист наклеен, текстолит с ним нужно пропусить через ламинатор 2-3 раза или воспользоваться теплым утюгом и проглаживать через лист бумаги сложенным в два раза:


Главное фоторезист не перегреть, а то получится вот так:


Если при наклеивании фоторезиста получился «косяк», то лучше его убрать (смыть или соскоблить) и заново наклеить, а то после травления платы будет печально… Я же убирать этот фоторезист не буду, покажу конечный результат.
7. Накладываем на текстолит с фоторезистом шаблон и прижимаем стеклом (я взял его от старой фоторамки), а на стекло устанавливаем груз:


8. Засвечиваем фоторезист с помощью УФ лампы. Моей лампы хватает примерно 2 минуты:


Как видно фоторезист который засветился поменял цвет со светло-синего до темно-синего, причем засвеченный фоторезист очень хрупкий.
9. Убираем стекло и шаблон. Лишний фоторезист можно (не обязательно) обрезать и аккуратно отделить пинцетом:


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


11. Берем кисточку и трем по фоторезисту в щелочи, постепенно непроявленный фоторезист смывается:


Щелочь можно не выливать, а оставить на следующую плату или для смывания фоторезиста после травления, но об этом чуть позже…
12. Травление платы:
Тут два способа доступнее всего: травление хлорным железом или перекисью+лимонная кислота и соль. Про хлорное железо писать не буду, а вот с помощью перекиси пожалуй опишу:
- 100 мл. перекиси водорода 3% - продается она в аптеке за 7-12 рублей
- 30 гр. лимонной кислоты (есть в любом продуктовом магазине)
- 1 ст. ложка соли (подойдет как мелкая так и каменная)


Все это смешивается в емкости и погружается туда плата с готовым фоторезистом, через некоторое время на плате появляются пузыри:


А через некоторое время «голая медь» полностью протравится:


Кстати, если травить в более высокой температуре, например у лампы накаливания или в водяной ванне, то тремя травления уменьшится, главное не переусердствовать, иначе лишнее протравится…
13. Убирать фоторезист удобнее всего в этой же щелочи, в которой смывали непротравленный фоторезист, минут через 20 он сам отпадет и ничего тереть не надо…

А вот и мои «косяки»:


Хоть и не значительные, но все же, а во всем виновата невнимательность, не заметил пузырьки воздуха под фоторезистом или перегрел…

Следующая плата у меня получилась «чистая»:


14. Далее сверлим отверстия и лудим плату:


15. Припаиваем все детали и отмываем от лишнего флюса:


Припаивал SMD компоненты китайской инфракрасной паяльной станцией, очень удобно:

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

Программирование atmega644

1. Для начала программирования нужно загрузить в него bootloader. Делается это не сложно с помощью Arduino UNO, но для начала нужно скачать и установить программу .
2. Следующим шагом в установленную программу добавить или взять сразу готовую сборку:
3. Заливаем на UNO скетч ArduinoISP:

4. И подключаем к UNO нашу плату:


В соответствии инструкции скетча:
// pin name // slave reset: 10: // MOSI: 11: // MISO: 12: // SCK: 13:
Получается по моей схеме так:

5. Далее устанавливаем в настройках нашу плату и загружаем bootloader:




Если все удачно прошло, то увидим сообщение: «Запись загрузчика завершена»
На этом загрузка bootloader"a завершена, можно подключать дисплей, кнопки, датчик температуры и заливать
Автоматика для пивоварни на arduino
Всем доброго дня, сегодня тема будет просвещенна любителям настоящего ПИВА, а именно я хочу Вам рассказать как можно самому сделать неплохую автоматику для пивоварни, как сделать саму пивоварню, смотрите ссылочку под видео, как просто сделал я.

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

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

Необходимые компоненты для сборки
Сейчас поговорим о том какие компоненты для сборки автоматики нам понадобятся:

  • Корпус, я использовал пластиковый «КОРПУС Z3» светло-серый с размером: длина 110 мм, ширина 150 мм, высота 70 мм, заказывал с отверстиями для вентиляции. Зарегистрируйтесь или авторизуйтесь для просмотра ссылок!
  • Для оформления передней и задней панели, нам понадобится: скотч, малярный двух сторонний скотч, фото бумага. Бесплатная программа Ссылки могут видеть только зарегистрированные пользователи. Зарегистрируйтесь или авторизуйтесь для просмотра ссылок! (программа предназначена для рисования лицевых панелей корпусов), Ссылки могут видеть только зарегистрированные пользователи. Зарегистрируйтесь или авторизуйтесь для просмотра ссылок!

    magtop.biz​

  • Разъемы GX12-4 две штуки и GX20-4 также два. Один GX12-4 для подключения температурного датчика, второй для подключения насоса. Разъем GX12-4 один для подключения сети 220в, второй для подключения ТЭНА. Ссылки могут видеть только зарегистрированные пользователи. Зарегистрируйтесь или авторизуйтесь для просмотра ссылок!
  • Выключатель, можно взять любой, но можно по меньше.
  • Два светодиода, для индикации включения насоса и тэна. ​

  • Вентилятор с решеткой для обдува и охлаждения твердотельного реле, я использовал 50х50х10мм Yoc 50 мм x 50 мм x 10 мм DC 12 В 0.1A 2Pin, и четыре болтика с гайкой на 3мм.
  • Сердцем нашей автоматики является Arduino MEGA 2560 R3 с 3.2 TFT – дисплеем touch, а также шилд, переходная плата между Arduino и дисплеем. Лучше купить сразу нужный комплект в сборе, который заточен под мою прошивку, в ином случае просто запустить автоматику может не получится, это касается самого монитора. КУПИТЬ МОЖНО ТУТ
  • Блок питания, я использовал на 9в 0,5А, более мощный блок питания нет смысла использовать, та и цена будет дороже. КУПИТЬ МОЖНО ТУТ ​

  • Твердотельное реле с радиатором, SSR 40A 3-32 В DC/90-480, будьте внимательны при покупке, цепь на управление нужно чтобы была от 3-32В, а то есть варианты с более высоким напряжением для цепей управления. КУПИТЬ МОЖНО ТУТ
  • Модуль реле 5в на управление и 250в для силовой коммутации.КУПИТЬ МОЖНО ТУТ РЕЛЕ 5V ​

    Часы реального времени, советую использовать DS3231 AT24C32 IIC КУПИТЬ МОЖНО ТУТ ​

    Пассивный зуммер модуль.КУПИТЬ МОЖНО ТУТ ​

    Датчик ds18b20, лучше использовать с кабелем и колбой из нержавейки.КУПИТЬ МОЖНО ТУТ ​

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

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

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

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

Монтируем все разъемы на панель, выключатель, диоды, GX разъемы и вентилятор. Пол дела сделано.

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

Устанавливаем программу 1.0.6, находим папку Libreris, и меняем ее на ту что скачали с программой.

В программе 1.0.6 устанавливаем контроллер мега, и ком порт к которому она подключена, запускаем скачанную прошивку, и заливаем в контроллер.

После загрузки на экране появится кнопка ПУСК, жмем и наслаждаемся, наш контроллер готов к работе, осталось подключить оставшиеся модули, и в перед готовить пиво.

Подключение модулей
Первое с чего я начинал, это сборку передней панели, вставляем плату контроллера в сборе в переднюю панель, возле выключателя приклеиваю блок питания, один провод ‘’-» подпаиваю к ‘’-» ардуино, второй ‘’+» через выключатель к ‘’+» ардуино, сетевые провода блока питания подключаем к сетевому разъему или кабелю. На задней плате ардуино на термоклей приклеиваю часы реального времени, зуммер.

На двухсторонний скотч клею управляющее реле насоса, для изоляции силовой части. Впаиваем подтягивающий резистор на 4,7 кОм от +5в до 12 пина. Припаиваем провода вентилятора к блоку питания, через выключатель. Крепить твердотельное реле к корпусу, так чтобы обеспечить хороший обдув ребер радиатора реле.

И так наша автоматика готова к работе.

Настройка рецепта
(Важно перед включением проверьте, чтобы ТЭН, НАСОС, датчик температуры были подключены – на силовых разъемах имеется высокое напряжение)

Подключаем питание, включаем тумблер.

На экране отобразится надпись «ГОТОВИМ ПИВО» и «ПУСК», прозвучит звуковой сигнал.

Режим затирание
Жмем кнопку «ПУСК», переходим в меню «ЗАТИРАНИЕ», в первой графе выбираем необходимую пауз, выставляем согласно рецепта, температуру и время. Самая нижняя строка, «МЕШАУТ», по умолчанию стоит 78 градусов и время «0», при необходимости меняем значения, если оставить время «0» функция «МЕШАУТ» не задействуется.

Режим кипячение
Жмем «ДАЛЕЕ». Переходим в режим «КИПЯЧЕНИЕ» в первой строке кипячение, задаем нужный параметр согласно рецепта.

В второй строке «ВИРПУЛ» устанавливаем только температуру при охлаждении сусла (25-30 градусов)

Ниже строки внесения хмеля, задаем по рецепту. ГЛАВНОЕ при варке в установленное время внесения хмеля будет звучать сигнал, не пропустите.

Начало варки.
На экране видим действительную температуру воды, и кнопку «СТАРТ», жмем «СТАРТ», насос начнет прокачку с паузами, для удаления пузырьков воздуха из системы прокачки, после чего включится в работу, если температура воды для внесения солода мала, включится тэн.

После набора температуры, до заданной, для внесения солода, прозвучит звуковой сигнал, отключится насос и тэн. После чего производим засып солода, и жмем «СТАРТ».

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

Кипячение
На автоматике жмем «СТАРТ», пойдет набор температуры (по умолчанию установлено 96 градусов, при этой температуре сусло активно кипит), в случае если Вам нужно снизить активность кипения, делаем это с помощью стрелок PID регулятора вверх или в низ (уменьшаем или увеличиваем мощность тэна). Сигнал о внесении хмеля прозвучит согласно установленного рецепта.

Вирпул
После окончания варки, автоматика перейдет в режим «ВИРПУЛ», охлаждаем сусло, на экране видим реальную температуру сусла.

ПОДРОБНЕЕ В ВИДЕО



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: