- Arduino.ru
- Погодозависимое управление водяным тёплым полом
- Ардуино контроллер теплого пола
- Отправляем состояния теплых полов из Arduino UNO ESP8266 WiFi на сервер ThingSpeak
- Постановка задачи мониторинга теплого пола.
- Описание системы дистанционного мониторинга теплого пола в облачном сервисе.
- Скетч Arduino мониторинга теплого пола.
- Оборудование для мониторинга теплого пола.
- Результаты мониторинга водяного теплого пола.
- Достоверность отправки данных из Arduino на облачный сервер.
- Решение проблем получения busy s.
- Встраиваемые Chart IFrame для отображения данных ThingSpeak на сайте.
- Сравнение уровня сигнала для ESP1 и ESP12.
Arduino.ru
Погодозависимое управление водяным тёплым полом
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
200кг и свободен).
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Наблюдал четыре дня. На улице постоянно скачет температура (фиолетовый график, было от -15°С до +4°С). День был очень сильный ветер — дом конкретно выстужало.
А по графику дома (черный) более менее стабильно, отклонение от -0.4° до +0.7°.
Попробую увеличить Ki до 0.5 (с ограничением -10 > istate Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Наблюдал трое суток. Неплохо.
Но решил еще добавить дифф.составляющую. Kd=50
После этого 16 суток ничего не менял и не трогал. Разное было — отключение электричества, яркое солнце+оттепель (даже отопление отключал на пару суток), сильные ветры, куча народу в доме.
На улице перепады с -13°С до +10°С
Дома с +25.5° до 26.3° (заслуга солнца в южные окна). Ничего не регулирую в котельной уже месяц. Скоро уже отопление отключать.
Мой вердикт — задумка удалась! Возможно, добавил бы еще выключение циркуляционных насосов при перегреве весенним солнцем. Но это уже после проверки новым отопительным сезоном. А пока — надо придумывать для самоделки корпус, подбирать БП и красивый настенный шкаф.
Ардуино контроллер теплого пола
Дельта принтеры крайне требовательны к точности изготовления комплектующих (геометрия рамы, длины диагоналей, люфтам соединения диагоналей, эффектора и кареток) и всей геометрии принтера. Так же, если концевые выключатели (EndStop) расположены на разной высоте (или разный момент срабатывания в случае контактных концевиков), то высота по каждой из осей оказывается разная и мы получаем наклонную плоскость не совпадающая с плоскостью рабочего столика(стекла). Данные неточности могут быть исправлены либо механически (путем регулировки концевых выключателей по высоте), либо программно. Мы используем программный способ калибровки.
Далее будут рассмотрены основные настройки дельта принтера.
Для управления и настройки принтера мы используем программу Pronterface.
Калибровка принтера делится на три этапа:
1 Этап. Корректируем плоскость по трем точкам
Выставление в одну плоскость трех точек — A, B, C (расположенных рядом с тремя направляющими). По сути необходимо уточнить высоту от плоскости до концевых выключателей для каждой из осей.
Большинство (если не все) платы для управления трехмерным принтером (В нашем случае RAMPS 1.4) работают в декартовой системе координат, другими словами есть привод на оси: X, Y, Z.
В дельта принтере необходимо перейти от декартовых координат к полярным. Поэтому условимся, что подключенные к двигателям X, Y, Z соответствует осям A, B, C.(Против часовой стрелки начиная с любого двигателя, в нашем случае смотря на логотип слева — X-A, справа Y-B, дальний Z-C) Далее при слайсинге, печати и управлении принтером в ручном режиме, мы будем оперировать классической декартовой системой координат, электроника принтера сама будет пересчитывать данные в нужную ей систему. Это условность нам необходима для понятия принципа работы и непосредственной калибровки принтера.
Точки, по которым мы будем производить калибровку назовем аналогично (A, B, C) и позиция этих точек равна A= X-52 Y-30; B= X+52 Y-30; C= X0 Y60.
Алгоритм настройки:
- Подключаемся к принтеру. (В случае “крагозяб” в командной строке, необходимо сменить скорость COM порта. В нашем случае с 115200 на 250000 и переподключится)
После чего мы увидим все настройки принтера. - Обнуляем высоты осей X, Y, Z командой M666 x0 y0 z0.
И сохраняем изменения командой M500. После каждого изменения настроек необходимо нажать home (или команда g28), для того что бы принтер знал откуда брать отсчет. - Калибровка принтера производится “на горячую”, то есть должен быть включен подогрев стола (если имеется) и нагрев печатающей головки (HotEnd’а) (Стол 60град., сопло 185 град.) Так же нам понадобится щуп, желательно металлический, известных размеров. Для этих задач вполне подойдет шестигранный ключ (самый большой, в нашем случае 8мм, он предоставляется в комплекте с принтерами Prizm Pro и Prizm Mini)
- Опускаем печатающую головку на высоту (условно) 9мм (от стола, так, что бы сопло еле касалось нашего щупа, т.к. высота пока что не точно выставлена.) Команда: G1 Z9.
- Теперь приступаем непосредственно к настройке наших трех точек.
Для удобства можно вместо g- команд создать в Pronterface четыре кнопки, для перемещения печатающей головки в точки A, B, C, 0-ноль.
Далее командой меняем параметры высоты оси Y: M666 Y <посчитанная величина>
M666 Y0.75
M500
G28
2 Этап. Исправляем линзу
После того как мы выставили три точки в одну плоскость необходимо произвести коррекцию высоты центральной точки. Из за особенности механики дельты при перемещении печатающей головки между крайними точками в центре она может пройти либо ниже либо выше нашей плоскости, тем самым мы получаем не плоскость а линзу, либо вогнутую либо выпуклую.
Корректируется этот параметр т.н. дельта радиусом, который подбирается экспериментально.
Калибровка:
- Отправляем головку на высоту щупа в любую из трех точек стола. Например G1 Z9 X-52 Y-30
- Сравниваем высоту центральной точки и высоту точек A,B,C. (Если высота точек A, B, C разная, необходимо вернутся к предыдущей калибровки.)
- Если высота центральной точки больше остальных, то линза выпуклая и необходимо увеличить значение дельта радиуса. Увеличивать или уменьшать желательно с шагом +-0,2мм, при необходимости уменьшить или увеличить шаг в зависимости от характера и величины искривления (подбирается экспериментально)
- Команды:
G666 R67,7
M500
G28 - Подгоняем дельта радиус пока наша плоскость не выровняется
3 Этап. Находим истинную высоту от сопла до столика
Третьим этапом мы подгоняем высоту печати (от сопла до нижней плоскости — столика) Так как мы считали, что общая высота заведомо не правильная, необходимо ее откорректировать, после всех настроек высот осей. Можно пойти двумя путями решения данной проблемы:
1 Способ:
Подогнав вручную наше сопло под щуп, так что бы оно свободно под ним проходило, но при этом не было ощутимого люфта,
- Командой M114 выводим на экран значение фактической высоты нашего HotEnd’а
- Командой M666 L получаем полное значение высоты (Параметр H)
- После чего вычитаем из полной высоты фактическую высоту.
- Получившееся значение вычитаем из высоты щупа.
Таким образом мы получаем величину недохода сопла до нижней плоскости, которое необходимо прибавить к полному значению высоты и и записать в память принтера командами:
G666 H 235.2
M500
G28
2 Способ:
Второй способ прост как валенок. С “потолка”, “на глаз” прибавляем значение высоты (после каждого изменение не забываем “уходить” в home), добиваясь необходимого значения высоты, но есть шанс переборщить со значениями и ваше сопло с хрустом шмякнется об стекло.
Как сделать авто калибровку для вашего принтера и что при этом авто калибрует принтер вы узнаете из следующих статей.
Отправляем состояния теплых полов из Arduino UNO ESP8266 WiFi на сервер ThingSpeak
Используем совмещенные на одной плате Arduino UNO и ESP8266 WiFi для мониторинга работы центрального контроллера водяных теплых полов.
Ранее научился отправлять показания датчиков при помощи связки Arduino UNO и ESP8266 WiFi в облачные сервисы RemoteXY и Cayenne.
Сервис ThingSpeak показался более интересным именно для сбора и обработки данных.
Постановка задачи мониторинга теплого пола.
Достигнутая цель выглядит так:
Использую вот такую плату Arduino UNO с модулем ESP-1 ESP8266 WiFi:
В предыдущей статье описывал то, как добился отправки этой платой POST запроса на сервер регистрации данных.
Научим эту плату отправлять данные на сервис ThingSpeak.
Возможно имело бы смысл воспользоваться собственной библиотекой сервиса для работы с ESP8266 thingspeak-arduino — так поступил в случае с RemoteXY и Cayenne, использовав библиотеки для работы ESP8266 каждого из этих сервисов.
Но будем использовать AT-команды и попытаемся разобраться с AT-командами самостоятельно.
Тем более что есть более-менее понятные примеры:
Будет решаться конкретная практическая задача мониторинга состояния системы зонального отопления водяными теплыми полами, постановку задачи которого осуществил в статье Сервер теплого пола на MaxSite CMS.
До написания плагина в рамках MaxSite CMS руки еще не дошли, но, похоже, сервис ThingSpeak дает возможности не только собирать информацию, но и получать собранные данные в годном для автоматизированной обработки виде, а также обрабатывать собранные данные собственными средствами MATLAB.
Описание системы дистанционного мониторинга теплого пола в облачном сервисе.
Плата, совмещающая в себе два устройства: Arduino UNO и ESP8266 WiFi, накладывает ограничения на вывод диагностической информации в SerialPort, поскольку SerialPort обеих в работе должны быть объединены переключателями на плате.
Поэтому для вывода будем использовать Lcd 2004A — поле символов 20*4 позволит вывести всю диагностическую информацию.
Будем принимать сигналы о наличии 220В на открытие направления теплого пола от четырех направлений на центральном хабе-контроллере теплых полов.
Сигнал управления на головки коллектора теплого пола в виде 220В выдают комнатные терморегуляторы.
Наличие напряжения управления головками 220В будем определять при помощи вот этой платы:
Работа с платой описывалась в статье о контроле 220В при помощи Arduino, в том числе и описывались проблемы с использованием входов A4, A5.
Говоря коротко, не получилось использовать A4, A5, но это не значит что их нельзя использовать.
Наверное можно использовать и часть цифровых входов.
Но у меня 4 направления и мне хватит A0-A3.
Отправку показаний входов будем осуществлять только при изменении значений одного из входов.
Если входы не меняются в течении заданного времени — будем делать тестовую передачу не измененных значений входов и текущего RSS WiFi.
Текущие значения входов будем отображать на дисплее.
Также будем отображать состояние пяти шагов отправки данных на сервер.
Кроме того, будем контролировать уровень связи с точкой доступа.
Способ получения RSSI WiFi точки доступа, к которой подключен ESP8266 в качестве клиента, описывается в статье Получаем уровень связи WiFi модуля ESP8266.
RSSI WiFi будем отображать на дисплее и посылать на сервер вместе с измененными значениями входов.
Если начинается череда ошибок будем перезагружать ESP8266.
Скетч Arduino мониторинга теплого пола.
Оборудование для мониторинга теплого пола.
Подключим теперь платы снятия показаний и передачи на сервер к центру управления коллектором теплого пола Beok CCT-10.
Beok CCT-10 порадовал вместимостью, позволяющей принять и скоммутировать все провода.
Добавим трехцветный светодиод отображения состояния связи/передачи/ошибок.
Добавим кнопку включения/выключения подсветки дисплея и кнопку принудительной (тестовой) отправки данных.
Переключатель слева внизу будет осуществлять выбор режима работы котла: ручной/автоматический.
Если будет отсутствовать 220В, то котел будет работать от источника бесперебойного питания.
Но без 220В контакты управления котлом будут разомкнуты внутри Beok CCT-10 и их необходимо принудительно замкнуть переключателем.
Результаты мониторинга водяного теплого пола.
Скетч с кнопками и светодиодом будет такой.
Достоверность отправки данных из Arduino на облачный сервер.
Как видно из скетча, мы после отправки каждой AT команды проверяем, что пришел требуемый ответ:
После того как получили символ ожидания данных «>» отправляем данные
Но после отправки самих данных мы автоматически считаем, что данные отправлены, хотя нужно было бы и тут дождаться получения «OK» в ответе в Serial:
Решение проблем получения busy s.
Оказывается все дело в неправильно определяемой длине строки, ведь println() добавляет еще символы конца строки.
Поэтому функцию отправки надо переписать с применением print() вместо println(), а в AT команды, передаваемые функции отправки, добавить «\r\n».
Итоговый скетч с правками и с проверкой всех шагов и без busy s. будет такой:
Достоверность отправки тут уже 100%.
Кроме того,в последнем скетче поправлены задержки на такие, с которыми стабильно работает.
Вот только существует вероятность, что после символов «OK» в ответе будет содержаться еще и такое:
Это возможно, если, строка данных не будет понята сервером.
Вот результаты ручной отправки команд серверу для тестирования работы, в которых видна опечатка в одной из строк данных для отправки, в результате которой возвращается ошибка 400:
(Для удобства строки команд для ручной отправки храню в теле скетча — нужно только убедиться что они копируются без пробелов в конце).
Так вот, не мешало бы содержимое ответа сервера в Serial проверить на отсутствие символов «400».
Можно поступить проще и проверить чтобы размер ответа в Serial был не больше чем «SEND OK» и «0,CLOSED».
Но это не реализовано.
Страница канала с данными работы теплого пола: thingspeak.com/channels/958186
Встраиваемые Chart IFrame для отображения данных ThingSpeak на сайте.
Сравнение уровня сигнала для ESP1 и ESP12.
Показалось что уровень связи в месте установки оборудования слишком низкий и заменил совместную плату с ESP1 и UNO на отдельную плату с модулем ESP12E, которую применял в предыдущих экспериментах совместно с платой Arduino UNO.
Уровень связи оказался еще меньше и пришлось заменить обратно.
На графике хорошо видна обратная замена на совмещенную плату.