Bonjour, j'utilise depuis maintenant 5 ans des sondes DS18B20 notamment dans la régulation d'une climatisation d'une cave à vins (5 dans différents endroits) sans problème et depuis 6 mois sur un mat de station Météo(2).
Le problème rencontré est qu'avec les 2 du mat de la station météo, la valeur affichée après la virgule est soit.00 soit .50 (c'est à dire au 1/2 degré alors qu'avec toutes les autres sondes j'ai 2 digits après la virgule. J'utilise le même IDE pour toutes ces sondes.
Les 2 sondes en question sont des waterproof avec câble de 2M. Je penses que mon problème vient de la configuration des ces 2 sondes qui est différentes de celles de tous mes autres sondes.
Lorsque sur mon installation je remplace les sondes par d'autres ( voir les constbyte appelée ou effacée) les ''bonne sondes'' fonctionnent parfaitement.
voici le résultat:
17:19:16.647 -> DS18B20 N°1: T= 32.44 °C
17:19:16.695 -> DS18B20 N°2: T= 32.44 °C
17:19:16.695 ->
17:19:18.381 -> DS18B20 N°1: T= 32.44 °C
17:19:18.429 -> DS18B20 N°2: T= 32.44 °C
17:19:18.429 ->
17:19:20.157 -> DS18B20 N°1: T= 32.44 °C
17:19:20.157 -> DS18B20 N°2: T= 32.44 °C
17:19:20.157 ->
17:19:21.855 -> DS18B20 N°1: T= 32.44 °C
17:19:21.899 -> DS18B20 N°2: T= 32.44 °C
17:19:21.899 ->
17:19:23.633 -> DS18B20 N°1: T= 32.44 °C
17:19:23.633 -> DS18B20 N°2: T= 32.44 °C
17:19:23.633 ->
Si quelqu'un a la solution.. MERCI
ci joint mon IDE:`( je ne trouves pas la commandes pour le mettre entre <??>..
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal.h>
#define ONE_WIRE_BUS A1// a passer en A0 dans le mat..
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
const byte Capteur1[] = { 0x28, 0x62, 0x05, 0x7C, 0x07, 0x00, 0x00, 0xA1}; // Sonde TO92 N°7 pour T° 7
const byte Capteur2[] = { 0x28, 0x47, 0xD9, 0x7B, 0x07, 0x00, 0x00, 0x05 }; // Sonde TO92 N°8 pour T° 8
//const byte Capteur1[] = {0x28, 0x79, 0x93, 0xD2, 0x5C, 0x21, 0x01, 0x74};// sonde d'2M N°19 dans abri mini chinois pour T° 7
//const byte Capteur2[] = {0x28, 0x88, 0x4E, 0xD2, 0x5C, 0x21, 0x01, 0x83};// sonde d'2M N°20 dans abridouble sonde pour T° 8
//const byte Capteur3[] = {0x28, 0xF8, 0xA2, 0x49, 0xF6, 0xF4, 0x3C, 0xED }; // sonde d'2M N°23 pour T° 9
const int RS = 8; //declaration constante de broche
const int ES = 9; //declaration constante de broche
const int D4 = 4; //declaration constante de broche
const int D5 = 5; //declaration constante de broche
const int D6 = 6; //declaration constante de broche
const int D7 = 7; //declaration constante de broche
LiquidCrystal lcd(RS, ES, D4, D5, D6, D7);
int flag = 0;
float TempR;
float TempR2;
float Result;
float correctionT7 = +0.00;//DS18B20 N°1
float correctionT8 = +0.00;//DS18B20 N°2
void setup() {
Serial.begin(9600);
lcd.begin(16, 2); // Initialise le LCD avec 16 colonnes x 2 lignes
lcd.clear();
delay(250); // pause pour laisser temps initialisation
sensors.begin();
Wire.begin();
}
void loop() {
sensors.setWaitForConversion(false);
sensors.requestTemperatures();
sensors.setWaitForConversion(true);
delay(200);
TempR = sensors.getTempC(&Capteur1[0]);
Serial.print("DS18B20 N°1: T= ");
Serial.print(TempR+correctionT7);
Serial.println(" °C");
TempR2 = sensors.getTempC(&Capteur2[0]);
Serial.print("DS18B20 N°2: T= ");
Serial.print(TempR2+correctionT8);
Serial.println(" °C");
Serial.println();
AfficherSurLcd();
delay(1500);
}// fin du loop
void AfficherSurLcd(){
lcd.setCursor(0,0) ;lcd.print("DS18-1");
lcd.setCursor(8,0);lcd.print(TempR+correctionT7);
lcd.setCursor(0,1) ;lcd.print("DS18-2");
lcd.setCursor(8,1);lcd.print(TempR2+correctionT8);
lcd.setCursor(14,0);lcd.print((char)223);//sigle degré "°"
lcd.setCursor(15,0);lcd.print("C");
lcd.setCursor(14,1);lcd.print((char)223);//sigle degré "°"
lcd.setCursor(15,1);lcd.print("C");
}