Цитата:
Допис від Denisios
заменить на это:
// Управление нагревом и охлаждением ----------------------------------------------
if(cur_temp < ((float)aquaT+0.5))
digitalWrite(EXT_HEATER_PIN, HIGH); // включает нагреватель
if (cur_temp > (float)aquaT)
digitalWrite(EXT_HEATER_PIN, LOW); // выключает нагреватель
|
Груба помилка, бо якщо, наприклад, виставлена температура 25, то
якщо температура нижче 25,5 нагрівач включаємо
якщо вище 25, то виключаємо.
В результаті нагріваємо до тих же 25 градусів без гістерезису.
Потрібно додати пів градуса не в першу умову, а в другу !
Ну а якщо робити справді коректно, то так
// Управление нагревом и охлаждением ----------------------------------------------
if(cur_temp < ((float)aquaT-0.25))
digitalWrite(EXT_HEATER_PIN, HIGH); // включает нагреватель
if (cur_temp > ((float)aquaT+0.25))
digitalWrite(EXT_HEATER_PIN, LOW); // выключает нагреватель
Тоді температура буде підтримуватися з точністю +-0,25 градуса