Plusieurs DS18B20

Bonjour,

J'essaye sans succes de lire la valeur de 4 DS18B20 branché sur le Pin 7 d'un Arduino UNO
j'ai installé une resistance de 4.7Kohms entre le 5V et le Signal
Voici le code :

#include <OneWire.h> //Librairie du bus OneWire
#include <DallasTemperature.h> //Librairie du capteur

OneWire oneWire(7); 
DallasTemperature sensors(&oneWire); 
DeviceAddress sonde0 = {0x28, 0xDF, 0xBD, 0x45, 0x92, 0x19, 0x02, 0xB9}; 
DeviceAddress sonde1 = {0x28, 0x2C, 0x2F, 0x45, 0x92, 0x16, 0x02, 0xBE};
DeviceAddress sonde2 = {0x28, 0xE9, 0xA6, 0x77, 0x91, 0x19, 0x02, 0x41};
DeviceAddress sonde3 = {0x28, 0x20, 0xF5, 0x45, 0x92, 0x16, 0x02, 0x20};


void setup(){
 Serial.begin(9600); 
 sensors.begin(); 

 sensors.setResolution(sonde0, 12); 
 sensors.setResolution(sonde1, 12); 
 sensors.setResolution(sonde2, 12); 
 sensors.setResolution(sonde3, 12); 

}

void loop(){
 sensors.requestTemperatures(); 
 Serial.print("0: ");
 Serial.print(sensors.getTempC(sonde0)); 
 Serial.print("   1: ");
 Serial.print(sensors.getTempC(sonde1)); 
 Serial.print("   2: ");
 Serial.print(sensors.getTempC(sonde2)); 
 Serial.print("   3: ");
 Serial.println(sensors.getTempC(sonde3)); 
 delay(1000);
}

la lecture donne -127.00 pour les 4

Une idée/piste de mon erreur ?

Merci

Bonjour,

Comment as-tu déterminé l'adresse de tes ds18b20?

Bonjour

avec ce code :

#include <OneWire.h>
 
const int broche_OneWire = 2;
byte stockage[8];
int compt = 0;
OneWire  capteur(broche_OneWire);
 
void setup()   {
 
  Serial.begin(115200);
 
  Serial.println ("Bienvenue sur les tutoriels d'IHM 3D");
  Serial.println ("Retrouver l'adressage d'une sonde DS18B20");
  Serial.println ("==========================================");
  delay (1000);
 
  Serial.println ("L'adresse de la sonde connectée sur la PIN 2 est:");
 
  while (capteur.search(stockage) == true);
  {
    for (int i = 0; i < 8; i++) { // l'adresse renvoyée par la fonction search est stockée sur 8 octets
 
      if (stockage[i] < 16)
      Serial.print('0');
      Serial.print ("");
      Serial.print(stockage[i], HEX);
      Serial.print(" ");
    }
  }
}
void loop() {
}

Elle ma retourner :
//28 DF BD 45 92 19 02 B9
//28 2C 2F 45 92 16 02 BE
//28 E9 A6 77 91 19 02 41
//28 20 F5 45 92 16 02 20

Vala

Bonsoir,

j'ai jeté un œil (rapide) sur ton sketch, je n'ai rien vu d'anormal. As-tu essayé avec un seul capteur ? Si oui c'est le même problème ? -127 semble être un problème hard (si je me souviens bien). Je suppose que tu es en mode alimentation (non parasite mode). Enfin, essaye toujours avec un seul capteur d'utiliser la commande ci-dessous

"sensors.getTempCByIndex(0)" qui cherche lui-même l'adresse.

Pour retrouver tes adresses, tu peux essayer onwire_finder.ino.

Cordialement

hello
je viens de faire le test avec une seule sonde sur l'entrée 7
1/ ton scan scrute l'entrée 2
je l'ai donc repassé après modif du 2 en 7

j'ai bien obtenu l'adresse de ma sonde.

j'ai reporté l'adresse de ma sonde dans ton programme et viré tout ce qui concernait les 3 autres sondes.
j'obtiens bien la température ambiante 20.69°

donc tout est ok

mais -127 est typique d'un mauvais contact ou branchement.
j'ai donc testé en mettant la sonde sur l'entrée 2 et bien sur le prog me dit -127 puisqu'il lit l'entrée d7

es tu sur d'avoir branché physiquement tes sondes sur l'entrée 7 ?

Je viens de tester

Dans n'importe quel ordre si j'en branche 3 c'est bon
une 4eme et ça merde

du coup la valeur de la resistance peut etre ?

Merci a vous

Du coup j'ai réduit a 3.3Kohms et ca work

Aucun risque ?

Merci