Еще раз вернусь к теме про автоматическое управление газовым котлом. Понимая, что моя аппроксимация температурных кривых далека от идеала, добавил в скетч возможность явно задавать кривую.
Как это работает. Мы явным образом задаем значения температурной кривой через массив. Например, мы знаем, что при температуре на улице в -10°C котел в контуре отопления должен выдавать 61°C. Составляем табличку от -30 до +30 с шагом в градус:
30 | ... | 10 | 9 | ... | -10 | -11 | ... | -30 |
1 | ... | 38 | 40 | ... | 61 | 62 | ... | 70 |
А затем, нижнюю строку этой таблицы представляем в виде массива:
int iv_curve[] = {1, 3, 5, 7, 10, 12, 14, 16, 18, 20, 21, 23, 25, 27, 29, 30,
32, 34, 35, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50, 52, 53, 54, 55,
56, 57, 58, 59, 60, 60, 61, 62, 63, 63, 64, 65, 65, 66, 66, 67, 67, 68,
68, 69, 69, 69, 69, 69, 70, 70, 70};
В функцию calc_temp() после строки temp_n = (a * x * x) + (b * x) + c;
вставляем следующий код:
// явно заданная кривая отопления
if (iv_k > 1.50) {
// Кривая задается с шагом 1 градус от +30 до -30
int i = round(30 - temp_1);
if (i < 0) i = 0;
if (i > 60) i = 60;
// Матрица с кривой: iv_curve[0] - температура контура отопления при +30, iv_curve[60] - при -30
int iv_curve[] = {1, 3, 5, 7, 10, 12, 14, 16, 18, 20, 21, 23, 25, 27, 29, 30,
32, 34, 35, 37, 38, 40, 41, 43, 44, 45, 47, 48, 49, 50, 52, 53, 54, 55,
56, 57, 58, 59, 60, 60, 61, 62, 63, 63, 64, 65, 65, 66, 66, 67, 67, 68,
68, 69, 69, 69, 69, 69, 70, 70, 70};
temp_n = iv_curve[i];
}
Теперь, если мы в настройках зададим кривую отопления больше 1.5, например 1.6, то котел будет управляется через явно заданную кривую. Как нарисовали, так и будет работать.
Краткие итоги после зимы. Все отработало на отлично, к котлу теперь подхожу только проверить давление в системе. Глюков не было, температуру держит железно.
В Леруа Мерлен приобрел пластиковый инструментальный ящик, в который все оборудование прекрасно влезло (на фото). Дополнил систему модулем nRF24L01, теперь через вторую Ардуину прибор мне шлет СМС о состоянии системы отопления, температуре в доме и на улице. Но это уже другая история, возможно, напишу потом.