Régulation de température

Bonjour,
J’ai pour projet de faire une régulation de la température du sol dans une serre (1m²). Mon système se compose de la façon suivante:
-1 capteur de température DS18B20 mesure la température de l’eau dans une réserve, si elle n’est pas assez chaude, un relais s’active pour ensuite mettre en chauffe l’eau grâce à un module Peltier.
-1 autre capteur DS18B20 mesure la température du sol, si elle est insuffisante, un relais s’active pour mettre en marche une pompe qui envoie de l’eau dans un circuit dans le sol afin de le chauffer.

Or j’ai un problème, j’aimerais par exemple que l’eau commence à chauffer (donc que le relais soit en marche) dès que sa température est inférieure à 25°C mais que le chauffage (donc le relais) ne s’arrête que quand la température est supérieure à 28°C, afin d’éviter une détérioration du relais qui ne ferait que s’allumer puis s’éteindre à 25°C.

J’espère avoir assez bien résumé la situation et n’avoir rien oublié. Je vous met le programme en question!

//////////////////////////Programme pour réguler la température du sol et de l'eau pour la serre//////////////////////////

/* Ce code lit les températures de plusieurs capteurs DS18B20 sur un même bus 1-Wire via leur adresse. */
 
/* Dépendance pour le bus 1-Wire */
#include <OneWire.h>

const int relaismodule = 2;
const int relaispompe = 4; 
 
/* Broche du bus 1-Wire */
const byte BROCHE_ONEWIRE = 10;

//////////////////////////Adresse des deux capteurs DS18B20//////////////////////////
const byte SENSOR_ADDRESS_1[] = { 0x28, 0xFF, 0x42, 0xAF, 0xC1, 0x17, 0x04, 0x0A }; //Capteur température pour l'eau
const byte SENSOR_ADDRESS_2[] = { 0x28, 0x1D, 0x9B, 0x1F, 0x00, 0x00, 0x80, 0xE6 }; //Capteur temperature pour le sol


/* Création de l'objet OneWire pour manipuler le bus 1-Wire */
OneWire ds(BROCHE_ONEWIRE);

 
/* Fonction de lecture de la température via un capteur DS18B20.*/
float getTemperature(const byte addr[]) {
  byte data[9];
  // data[] : Données lues depuis le scratchpad
  // addr[] : Adresse du module 1-Wire détecté
  
  /* Reset le bus 1-Wire et sélectionne le capteur */
  ds.reset();
  ds.select(addr);
  
  /* Lance une prise de mesure de température et attend la fin de la mesure */
  ds.write(0x44, 1);
  delay(800);
  
  /* Reset le bus 1-Wire, sélectionne le capteur et envoie une demande de lecture du scratchpad */
  ds.reset();
  ds.select(addr);
  ds.write(0xBE);
 
 /* Lecture du scratchpad */
  for (byte i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
   
  /* Calcul de la température en degré Celsius */
  return (int16_t) ((data[1] << 8) | data[0]) * 0.0625; 
}
 
 
/** Fonction setup() **/
void setup() {

  /* Initialisation du port série */
  Serial.begin(115200);
  pinMode(relaismodule, OUTPUT);
  pinMode(relaispompe, OUTPUT);
}
 
 
/** Fonction loop() **/
void loop() {
  float temperature[2];
   
 
//////////////////////////Lire les températures des capteurs//////////////////////////
  temperature[0] = getTemperature(SENSOR_ADDRESS_1);
  temperature[1] = getTemperature(SENSOR_ADDRESS_2);
  
  
//////////////////////////Afficher les températures//////////////////////////
  Serial.print(F("Temperature de l'eau : "));
  Serial.print(temperature[0], 2);
  Serial.println(F("°C. "));
  Serial.print(F("Temperature du sol : "));
  Serial.print(temperature[1], 2);
  Serial.println(F("°C. "));

//////////////////////////Régulation température de l'eau//////////////////////////
  if(temperature[0]<25.00) {
    digitalWrite(relaismodule,HIGH);
  }
  else {
    digitalWrite(relaismodule,LOW);
  }

//////////////////////////Régulation température du sol//////////////////////////
  if(temperature[1]<25.00) {
    digitalWrite(relaispompe,HIGH);
  }
  else {
    digitalWrite(relaispompe,LOW);
  }
}

Tu as écris ta solution en français …il n’y a plus qu’à la retranscrire en langage C …

Si T < 25 … chauffer.
Si T > 28 … stop chauffage

Et voilà !

En effet, j'ai essayé et ça marche très bien, visiblement, j'ai cherché trop compliqué!

Merci!