PROBLEME d'acquisition température stable avec un DS18B20

le montage est en one wire comme préconisé pour le DS18B20.

merci pour la réponse.

Les câbles font 1m ou 2.0m je donne l'intégralité du code tel qu'il tourne..
Merci

/**************************************************************
* -----------  Gestion de la cave du POP ---------------------*
* Prise de températures dans 3 points différents pour couper  * 
* la climatisation en cas de surchauffe de l'évaporateur.     *
*       GESTION DE LA CAVE JeenodePoP du haut                 *
* Mai 2016     V9.2   Juin 2017 V 1.0                         *
**************************************************************/

#include <Wire.h>
#include <math.h>
#include <DallasTemperature.h>
#include <OneWire.h>

uint16_t startAddr = 0x0000;       // Adresse de démarrage Start dans  NV-RAM
uint16_t lastAddr;                 // Nelle addresse des stockage NV-RAM
uint16_t TimeIsSet = 0xaa55;       // Prévient qu'il n'y a pas de remise à l'heure

int  Topmesure = 0;
int  Topmesure1 = 0;
int  Topmesure2 = 0;
int  Topmesure3 = 0;
int  Topmesure4 = 0;
int  Mesure1 = 0;
int  Mesure2 = 0;
int  Mesure3 = 0;
int  Mesure4 = 0;

int compteur = 0;
int valdigit;
int valdigit1;//était valdigitS4
int valdigit2;//était valdigitS2
int valdigit3;//était valdigitS6
int valdigit4;//était valdigitS7
int tempC;
int Reponse;
int Clignotant;
int Defaut = 0;
int Etatrelaisclimatisation;
int sortitesimpulsion; 
float coefficient = (1024/55);//1024/55°C
float TempS;
float TempS1;//était TempS4
float TempS2;//était TempS5
float TempS3;//était TempS6
float TempS4;//était TempS7

/*********************
 * ADRESSAGE DES PIN *
 *********************/

//Data wire connecté sur pin 2 de l'Arduino
#define ONE_WIRE_BUS   3 //Doit passer en 3 pour JnodePoPHaut
// Relais connectés sur pin 6 et 7.
#define Relaisclimatisation  4// Doit passer en 4 pour JnodePoPHaut
#define sortitesimpulsion 5

/*********************************************************************
 * Déclaration des adresses des sondes DS18B20 pour la 1-Wire temp   *
 *********************************************************************/

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
 
DeviceAddress sonde1 = { 0x28, 0xFF, 0xBF, 0x72, 0xA4, 0x15, 0x03, 0x5E };// cave
DeviceAddress sonde2 = { 0x28, 0xFF, 0x1E, 0x1B, 0x69, 0x14, 0x04, 0xA7}; // Condenseur sonde de 2 M sur condenseur ou dans gaine d'entrée d'air extérieur.
DeviceAddress sonde3 = { 0x28, 0xFF, 0xB0, 0x14, 0xA5, 0x15, 0x01, 0xBF };// Grenier sonde d'1M.
//DeviceAddress sonde3B = { 0x28, 0xFF, 0x8D, 0x16, 0x64, 0x14, 0x03, 0x50}; //Grenier sonde de 2M.
DeviceAddress sonde4 = { 0x28, 0x31, 0xC9, 0x7B, 0x07, 0x00, 0x00, 0x53 };// Caisson
//DeviceAddress sonde5 = { 0x28, 0xC1, 0xB8, 0x7B, 0x07, 0x00, 0x00, 0x81 };// 
//deviceAddress sonde6 = { 0x28, 0x9D, 0x3B, 0x7C, 0x07, 0x00, 0x00, 0xD1 };// 
//DeviceAddress sonde7 = { 0x28, 0x62, 0x05, 0x7C, 0x07, 0x00, 0x00, 0xA1 };//  

void setup () {
  
 /**************************
 * Déclaration des sorties*
 **************************/
  pinMode(Relaisclimatisation, OUTPUT);
  digitalWrite(Relaisclimatisation, LOW);//On force le relais de la climatisation au repos. (actif à UN) sur la platine JeeNodePoPHaut.
   pinMode(sortitesimpulsion, OUTPUT);
  digitalWrite(sortitesimpulsion, LOW);
/********************************
/* OUVERTURE DU PORT SERIE COM3 *
/********************************/
 // start serial port
  Serial.begin(115200);

}
  
void printTemperature(DeviceAddress deviceAddress)
{

// set the resolution to 11 bit (good enough?)
  sensors.setResolution(sonde1, 11);
  sensors.setResolution(sonde2, 11);
  sensors.setResolution(sonde3, 11);
  sensors.setResolution(sonde4, 11);
 // sensors.setResolution(sonde5, 11);
 // sensors.setResolution(sonde6, 11);
 // sensors.setResolution(sonde7, 11);

 float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00)
  {
    Serial.print("Error getting temperature");
  }
  else
  {
    valdigit = (tempC * coefficient);
    TempS = (tempC);
   Serial.print(tempC,1); // n'affiche qu'un chiffre derrière la virgule
   Serial.print(" C    ");
   
  }
  
}  
   
 void loop() 
  {
 
 /***********************
  * Gestion des Relais  *
 ************************/

 /*****************
 *  Climatisation *
 ******************/
 if   (valdigit1 < 414)
      {(Reponse = 1);}
       // rep:A -- 414-->23° interdit  la clim en dessous de 13.0°C. (225-->12.5°C)
             
      if   (valdigit1 > 414 && valdigit3 < 540)
      {(Reponse = 2);}
       // rep:A -- 414-->23° autorise  la clim au dessus de 13.0°C. (225-->12.5°C)
       // rep:C -- 540-->30° et si la toiture est en dessous de 37°C.(666-->37°C)
      
      if   (valdigit3 < 504)
          {(Defaut = 0);}
           //  rep:B -- 504-->28° retabli la clim en dessous de 34°C. (612-->34°C)
      
      if   (valdigit3 > 540)
      //  rep:C -- 540-->30° coupe la clim au dessus de 37°C.666-->37°C)
     {(Reponse = 3);
      (Defaut = 1);}
 
 
switch (Reponse)
  {
    case 1 :
      digitalWrite(Relaisclimatisation, LOW );// 
      Etatrelaisclimatisation = 0;
      break;
    
    case 2 :
      if (Defaut == 0){
     digitalWrite(Relaisclimatisation, HIGH );//
     Etatrelaisclimatisation = 1;
     }
     break;  
            
    case 3 :
   
     digitalWrite(Relaisclimatisation, LOW );// 
     Etatrelaisclimatisation = 0;
     break;
 
  }
  
/********************************************************
 *test impulsion de mesure sortie sur 5 borne 11        *
 ********************************************************/
  Clignotant = (millis() / 1000%2);
   if (Clignotant == 1)
   { digitalWrite(sortitesimpulsion, HIGH);
   }
   else
   { digitalWrite(sortitesimpulsion, LOW);
   }
    

/********************************************************
 * traitements et Affichage  des Températures sur COM3  *
 ********************************************************/
 

 Topmesure = (millis()/1000%60);
 Topmesure1=Topmesure;
 switch (Topmesure)
  {
  case 0:
      if (Mesure1 == 0) {
   sensors.requestTemperatures();
 delay(200); 
// TX = sensors.getTempC(TempX);
   printTemperature(sonde1);
 delay(50);
  valdigit1 = valdigit;
  TempS1 = TempS;
  Serial.print("temperature sonde N1 CAVE est: ");
  Serial.print("    ");
  Serial.print(TempS1);
  Serial.print("    ");
  Serial.print(" valdigit1 ");
  Serial.print(valdigit1);
  Serial.print("    ");
  Serial.print("\n\r");
       Mesure1 = 1;
       Mesure4 = 0;
    }
   break;
  
 case 15:
    if (Mesure2 == 0) {
   sensors.requestTemperatures();
 delay(200); 
   printTemperature(sonde2);
    delay(50);
  valdigit2 = valdigit;
  TempS2 = TempS;
  Serial.print("temperature sonde N2 TOITURE est: ");
  Serial.print("    ");
  Serial.print(TempS2);
  Serial.print("    ");
  //valdigit2 =(valdigit2*(-1)); //pour tester les T° négative
  Serial.print(" valdigit2 ");
  Serial.print(valdigit2);
  Serial.print("\n\r");
       Mesure2 = 1;
       Mesure1 = 0;
      }
  break; 
  
  case 30:
    if (Mesure3 == 0) {
   sensors.requestTemperatures();
 delay(200); 
   printTemperature(sonde4);
    delay(50);
  valdigit4 = valdigit;
  TempS4 = TempS;
  Serial.print("temperature sonde N4 caisson  est: ");
  Serial.print("    ");
  Serial.print(TempS4);
  Serial.print("    ");
  Serial.print(" valdigit4 ");
  Serial.print(valdigit4);
  Serial.print("\n\r");
      Mesure3 = 1;
      Mesure2 = 0;
    }
   break;
 
  case 45:
      if (Mesure4 == 0){
    sensors.requestTemperatures();
 delay(20); 
   printTemperature(sonde3);
    delay(50);
  valdigit3 = valdigit;
  TempS3 = TempS;
  Serial.print("temperature sonde N3 GRENIER  est: ");
  Serial.print("    ");
  Serial.print(TempS3);
  Serial.print("    ");
  //valdigit3 =(valdigit3*(-1)); //pour tester les T° négative
  Serial.print(" valdigit3 ");
  Serial.print(valdigit3);
  Serial.print("    ");
  Serial.print("Etat du relais de la climatisation:");
  Serial.print (Etatrelaisclimatisation);
  Serial.print("\n\r");
  Serial.print ("reponse  ");
  Serial.print (Reponse);
  Serial.print("\n\r");
       Mesure4 = 1;
       Mesure3 = 0;
      }
  break;
  }
     
    
 }