Блок управления насосами теплого пола, радиаторов и актуатором 3-х ходового клапана

Наверняка какую-то гадость подразумевает… под Брюсселе знаю Ватерлоо

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

Можно отправить товарища к знаменитой китайской горе :sweat_smile:

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

//--------------------------------------------------------------
void work_Relay() {	// актуатор

	if (stoppage) {
		if ((millis() - closeAct) >= 20000) {
			if (TempRoom < TroomSet - DIFF && ActuaStop) {	// момент начала закрытия байпаса

				count++;
				Serial.print("counter		:");
				Serial.println(count);
				Serial.println("актуатор закрывает байпас для прогреса батарей");
				decoder.write1(opRelay, LOW);	//выключаем реле
				decoder.write1(clRelay, HIGH);
				oled.drawBitmap(94, 0, icon16x16[2], 16, 16);	// клапан прикрывается
			}

			if (TempRoom < TroomSet - DIFF && count == 6) {	// момент полного закрытия байпаса

				ActuaStop = 0;
				strAct = 0;
				count = 0;
				Serial.println("актуатор ЗАКРЫЛ байпас ПОЛНОСТЬЮ ");
				decoder.write1(opRelay, LOW);	//выключаем реле
				decoder.write1(clRelay, LOW);
				oled.drawBitmap(94, 0, icon16x16[0], 16, 16);	// клапан закрыт
			}

			if (TempRoom >= TroomSet - DIFF) {	// после выполнения этого условия начинаеи работать вторая основноная часть

				Serial.println("актуатор передал управление на регулеровку");
				ActuaStop = 1;
				strAct = 1;
			}

			Serial.print("strAct - ");
			Serial.println(strAct);
			closeAct = millis();
		}

		if (strAct) {
			if ((millis() - tmr) >= (opening ? (SetSec * 1000) : 60000) && (TempRoom < TroomSet)) {	//условие каждые 2 секунд включать реле	на 60 секунд отключать.

				opening = !opening;
				Serial.println("включаем реле на приоткрытие XXXXX сек Вкл 1 мин Вык");
				decoder.write1(opRelay, LOW);	//выключаем реле
				decoder.write1(clRelay, opening);
				oled.drawBitmap(94, 0, icon16x16[2], 16, 16);	// клапан приоткрывается
				tmr = millis();

			} else if (millis() - tmrWait >= 4000 && (TempRoom >= TroomSet)) {

				Serial.println("Актуатор приостановился в каком-то положениии");
				decoder.write1(opRelay, LOW);	//выключаем реле
				decoder.write1(clRelay, LOW);
				oled.drawBitmap(94, 0, icon16x16[0], 16, 16);	// клапан закрыт
				tmrWait = millis();

			} else if ((millis() - timer) >= (closing ? (SetSec * 1000) : 60000) && (TempRoom > TroomSet)) {	//условие каждые 2 секунд включать реле	на 60 секунд отключать.

				closing = !closing;
				Serial.println("включаем реле на закрытие XXXX сек Вкл 1 мин Вык");
				decoder.write1(opRelay, closing);	//выключаем реле
				decoder.write1(clRelay, LOW);
				oled.drawBitmap(94, 0, icon16x16[1], 16, 16);	// клапан прикрывается
				timer = millis();
			}
		}
	}

Напиши пожалуйста словами принцип действия управления актуатором. Я за часик в своей ос это сделаю.

надо обдумать ! и технически описать


Время работы актуатора перерод заслонки из одного крайнего положения в другое крайнее положение 120 сек
два реле– одно на открытие, а второе на закрытие
TempRoom (temperature of room) – температура в комнате по термометру
TroomSet (temperature of Setting)- уставка (установка) заданной температуры
DIFF (different) – дельта либо гистерезис 1

первая часть
TempRoom < TroomSet-DIFF
Температура в комнате ниже уставки минул дельта
Клапан перемещается в крайнее положение ( позиция 1), не важно в каком изначальном положении он был. Главное чтоб он закрывался на протяжении 120 сек. После этого реле отключаются и система ждет условия TempRoom >= TroomSet-DIFF
когда температура в комнате будет больше либо равно температуре уставки минус дельта

Вторая часть, часть работы по температуре в помещении

TempRoom < TroomSet
Температура в комнате ниже температуры уставки, в данный момент клапан должен быть либо в положении 1 либо прикрываться к нему.Принцип пошаговой регулировка ДОПУСТИМ 3 сек работы и 1.5-2 мин ожидания (не работает) смотрим на изменение температуры в помещении. ДА ТУТ СИСТЕМА ИНЕРТНА И МОЖЕТ ПОТРЕБУЕТСЯ ДРУГИЕ ВРЕМЕННЫЕ УСТАВКИ.

TempRoom >= TroomSet
Температура в помещении выше уставки реле выключаются оба заслонка замирает в каком-то положении , положение 3

TempRoom > TroomSet
Температура в помещении сильно выше уставки заслонка прикрывается в положение 2 либо в её сторону. Принцип пошаговой регулировка ДОПУСТИМ 3 сек работы и 1.5-2 мин ожидания (не работает) смотрим на изменение температуры в помещении. ДА ТУТ СИСТЕМА ИНЕРТНА И МОЖЕТ ПОТРЕБУЕТСЯ ДРУГИЕ ВРЕМЕННЫЕ УСТАВКИ.
Вторая часть повторяется постоянно регулируя температуру в комнате.

Если TempRoom >= TroomSet-DIFF
температура упала ниже данного условия, включается первая часть

Вроде как то так

я правильно понял, что у клапна два значения либо открыт либо закрыт?
нет варианта окрыт на половину, для подмешивания горячей воды в кольцо радиаторов?

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

Кто мешает поставить такой привод:

https://aliexpress.ru/item/1005007197576369.html

И обратная связь есть, и управление пропорциональное.

2 лайка


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

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

Тогда тебе проще насос периодически включать и выключать, чем крутить актуатор.
Я на рециркуляцию ГВС поставил таймеры и время работы по несколько минут в назначенное время и каждый час по 1 минуте.
Получилось очень хорошо, и не холодная и не перегревается.

1 лайк

На самом деле вариантов много можно придумать, а вот так руки опускать, не ,не хочу не моё это. Все равно доведу то того состояния как это вижу я. :laughing:

1 лайк

можно еще ввести параметр скорость температуры

как быстро она меняется VT=dT/dt

например за время прокачки/прогона всего контура

а от нее размах/отклонение задвижки

цель сделать VT=0

1 лайк

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

Неправильно понимаете.

Любой учебник по дифференциальным уравнениям.

Андриано! Ты помнишь старую, черно-белую короткометражку “Математик и черт” с Кайдановским? Там было замечательное “3 в квадрате плюс 4 в квадрате, равно 5 в квадрате”! :wink:

1 лайк

Всё давно придумано до нас = ПИД регулятор. Тут придется смотреть методику настройки для инерционных процессов. Статей много и какая-нибудь да озарит нас сдвигом понимания :slight_smile:пример

Мне также интересен выше предложенный способ, как резервный режим управления при полностью открытой/полузакрытой/неисправной задвижке: где мы меняем период работы самого насоса “сколько-то десятков” минут в час. От частых пусков могут быть предположительно осложнения.

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