Ds18b20

Bonjour, j’ai un petit problème avec mon capteur ds18b20 :
dans le moniteur série, il me marque : La température est: -127.00 C° avec un programme normalement bon .
Merci d’avance pour votre aide !
PS : Je débute en programmation !

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

OneWire oneWire(2); //Bus One Wire sur la pin 2 de l'arduino
DallasTemperature sensors(&oneWire); //Utilistion du bus Onewire pour les capteurs
DeviceAddress sensorDeviceAddress; //Vérifie la compatibilité des capteurs avec la librairie

void setup(void){
 Serial.begin(9600); //Permet la communication en serial
 sensors.begin(); //Activation des capteurs
 sensors.getAddress(sensorDeviceAddress, 0); //Demande l'adresse du capteur à l'index 0 du bus
 sensors.setResolution(sensorDeviceAddress, 12); //Résolutions possibles: 9,10,11,12
}

void loop(void){
 sensors.requestTemperatures(); //Demande la température aux capteurs
 Serial.print("La température est: ");
 Serial.print(sensors.getTempCByIndex(0)); //Récupération de la température en celsius du capteur n°0
 Serial.println(" C°");
}

Ca pourrait être pire, tu pourrais avoir des températures en dessous du zéro absolu !! :slight_smile:

Plus sérieusement, as-tu testé le programme de test "Single" ? S'il fonctionne, tu sauras que ton capteur est bien branché, bien alimenté et fonctionnel. Le problème viendra alors de ton logiciel : le plus simple sera lors d'adapter l'exemple à ton besoin.

Oui je vien juste de le tester c'est pareil :frowning: , dans le moniteur série il me marque : La température est: -127.00 C° aussi

walid_42:
Bonjour, j’ai un petit problème avec mon capteur ds18b20 :
dans le moniteur série, il me marque : La température est: -127.00 C° avec un programme normalement bon .
Merci d’avance pour votre aide !

Bonjour
reponse typique d'un DS18B20 "mal cablé"
la 1ere chose à faire et déjà de voir si le DS18B20 est reconnu

tu peux tester le prog ci-dessous

attention à plusieurs choses :

  • bien connecter DQ du DS18B20 sur le pin8 de ton arduino
  • verifier la methode d'alim du DS18B20 (alim vraie ou mode parasitic)
#include <OneWire.h>
// Onewire lib is here http://www.pjrc.com/teensy/td_libs_OneWire.html

OneWire  ds(8);  //  don't forget 4.7K resistor between +5V and DQ pin
void setup(void) {
  Serial.begin(9600);
  
}

void loop(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
    Serial.println("--------------");
    Serial.println(".");
    Serial.println(".");
    Serial.println("END OF SCAN.");


    Serial.println(".");
    Serial.println();

    ds.reset_search();
    delay(2500);
    return;
  }

  Serial.println("--------------");



  Serial.print(" ROM =");
  
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    
    if ( addr[i]<16) {
      Serial.print("0");
    }
    Serial.print(addr[i], HEX);
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
    Serial.println("CRC is not valid!");
    return;
  }
  Serial.println();


  Serial.print("CHIP FAMILY ");
  Serial.print(addr[0],HEX);
  // the first ROM byte indicates which chip
  Serial.print(" =  ");
  switch (addr[0]) {

  case 0x01:
    Serial.println(" DS1990 DS2401");  // 
    break;
  case 0x02:
    Serial.println(" DS1991");  // 
    break;
  case 0x04:
    Serial.println(" DS1994");  // 
    break;
  case 0x05:
    Serial.println(" DS2405");  // 
    break;
  case 0x06:
    Serial.println(" DS1992");  // 
    break;
  case 0x08:
    Serial.println(" DS1993");  // 
    break;
  case 0x0B:
    Serial.println(" DS1985");  
    break;
  case 0x10:
    Serial.println(" DS1820 DS18S20 DS1920");  
    break;
  case 0x12:
    Serial.println(" DS2406");  
    break;
  case 0x21:
    Serial.println(" DS1921");
    break;
  case 0x22:
    Serial.println(" DS1822");
    break;
    case 0x23:
    Serial.println(" DS2433");
    break;
  case 0x24:
    Serial.println(" DS1904");
    break;
  case 0x28:
    Serial.println(" DS18B20");
    break;
  case 0x29:
    Serial.println(" DS2408");  
    break;
    case 0x2C:
    Serial.println(" DS2890");  
    break;
  case 0x36:
    Serial.println(" DS2740");  
    break;
  case 0x3B:
    Serial.println(" DS1825");  
    break;
  case 0x41:
    Serial.println(" DS1923");  
    break;

case 0xB3:
    Serial.println(" CHIP cartouche laser");  
    break;
  default:
    Serial.println(" is not listed.");

    return;
  } 

}

Dans le moniteur série avec ton programme il me marque :


.
.
END OF SCAN.
.
et je pense que j'ai bien cabler mon ds18b20 ,:frowning:

walid_42:
Dans le moniteur série avec ton programme il me marque :


.
.
END OF SCAN.
.
et je pense que j'ai bien cabler mon ds18b20 ,:frowning:

Tu n'a pas repondu à ma question sur l'alim du DS18B20

Photos de ton cablage ?
DS18B20 d'origine (boitier TO92) ou DS18B20 "encapsulé/tubé" ?

Salut

Tu as bien mis en place une résistance de pull-up entre la broche signal et le 5V ?
Classiquement 4.7K.

@+

Je ne sais pas pour la méthode d’alimentation,j’ai un DS18B20 température sensor v2, oui j’ai bien mis la résistance.

walid_42:
Je ne sais pas pour la méthode d’alimentation,j’ai un DS18B20 température sensor v2, oui j’ai bien mis la résistance.

y a pas 36 possibilités , il n'y en a que 2 (alim directe ou parasitic)

"IL est câblé comment "ton DS18B20" ?

-127° provient souvent d'un problème de câblage.
Tester la tension sur chaque broche au multimètre.

Je me suis fait avoir il n'y a pas longtemps, et pourtant c'était loin d'être mon premier DS18B20.

@+

Merciiii tout le monde j'ai finalement reusis ,c'etait un mauvais cablage :):slight_smile:

J'en étais sûr.