Погодозависимая регулировка температуры

bwana

✩✩✩✩✩✩✩
3 Окт 2024
2
0
На платной основе требуется разработка и создание платы управления реле с двумя датчиками температуры и графиком зависимости. Первый датчик температуры выключает реле при достижении порога, второй датчик температуры корректирует порог.
Гистерезис 1 градус. Диапазон первого 28-70. График с шагом в 5 градусов по второму датчику. Пример, на улице -5, реле выключается при +30 по первому датчику. На улице -15, реле выключается при +45. На улице -35, реле выключается при +65

Предложения в личку или 575203{@}mail.ru

График:
Улица порог
5 +28
0 +32
-5 +35
-10 +40
-15 +45
-20 +50
-25 +55
-30 +60
-35 +65
-40 +70
 
Изменено:

Michail174

✩✩✩✩✩✩✩
12 Дек 2019
3
1
Оформи код соответствующим тэгом, см. Правила
#include <Arduino.h>

// пины для датчиков и реле
const int ntc1Pin = A0; // Пин первого NTC датчика
const int ntc2Pin = A1; // Пин второго NTC датчика
const int relayPin = 2; // Пин реле

// Функция для чтения температуры с NTC датчика
float readNTCTemperature(int pin) {
int adcValue = analogRead(pin); // Читаем аналоговое значение
// Преобразовать ADC значение (0-1023) в напряжение (0-5V)
float voltage = adcValue * (5.0 / 1023.0);
float resistance = (5.0 - voltage) * 10000.0 / voltage; // Расчет сопротивления для 10к термистора
float temperature = 1.0 / (log(resistance / 10000.0) / 3950 + 1 / 298.15) - 273.15; // Конвертация в Цельсия

return temperature;
}

void setup() {
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // Изначально реле выключено
Serial.begin(9600);
}

void loop() {
// Чтение температуры с NTC
float temp1 = readNTCTemperature(ntc1Pin);
float temp2 = readNTCTemperature(ntc2Pin);

// Выводим температуры в сериал мониторе для отладки
Serial.print("Температура 1: ");
Serial.println(temp1);
Serial.print("Температура 2: ");
Serial.println(temp2);

// Определяем порог срабатывания реле для второго датчика на основе первого датчика
int relayThreshold;
if (temp1 >= 5.0) {
relayThreshold = 25; // Порог срабатывания: +25
} else if (temp1 >= 0) {
relayThreshold = 30; // Порог срабатывания: +30
} else if (temp1 >= -5) {
relayThreshold = 35; // Порог срабатывания: +35 и т. д
} else {
relayThreshold = 0; // Деактивация реле, если первый датчик ниже -5
}

// Управляем реле на основании температуры второго датчика
if (temp2 >= relayThreshold) {
digitalWrite(relayPin, HIGH); // Включаем реле
} else {
digitalWrite(relayPin, LOW); // Выключаем реле
}

delay(1000); // Задержка для стабилизации
}
Типо того, можно с помощью библы GyverNTC, будет ещё проще
 
  • Лойс +1
Реакции: bwana

Геннадий П

★★★★★★✩
14 Апр 2021
1,971
632
45
Автор темы не говорил что у него NTC датчик, а может у него какой нть DS18B20, или на I2C шине, или на RS485 Modbus, или на токовой петле?
И да, доверять ЧатГыПыТы такое себе, у вас гистерезиса нет в программе.
 

bwana

✩✩✩✩✩✩✩
3 Окт 2024
2
0
Всем спасибо! Исполнитель найден, работаем!