Probleme capteur DS18B20

Bonjour,
je viens de faire une installation comportant un capteur de température.
Tout fonctionnait il y a deux jours mais depuis la température reste bloquée sur -127°c. J'ai lu sur plusieurs sites que c'est un problème de connexion mais je n'arrive pas à déterminer d'où ça vient.
Pouvez vous m'aider ?
Merci

Temperature.ino (1,5 Ko)

-127 comes usually when there is a connection problem.

Put the legs of the DS18B20 sensor directly on the breadboard. Put a 4.7k or close resistor across data line and Vcc line. Use three short jumpers to bridge the sensor with UNO. And then upload your sketch.

And please, post in English.

Bonjour, sur la photo le fil jaune du DS18B20 n'est pas sur la même "ligne commune" que le fil jaune qui vient de l'arduino.

image

French seems appropriate...

@axou Il ne semble pas que le capteur soit réellement connecté ... essayez de déplacer le fil jaune du capteur vers ici ...

What is the official language of Arduino Forum -- is it not English?

Not in the French section of the forum.

1 Like

I don't know whether I have to post in french or in english but I found the solution.
I didn't understand the way the breadboard worked. I thought it was the same potential on the line but no it's cut in the middle.
So thank you everybody for all your advice.
And sorry for my english :blush:

Yes... That's why I said to connect here... :slight_smile:

Oui... C'est pourquoi j'ai dit de se connecter ici... :slight_smile:

1 Like

I have another problem. When i connect more than one captor the "127°C" appears again.


Envoi en cours : 3_capteurs.ino…

Dans la partie principale du forum on échange en anglais, dans la partie internationale du forum on échange dans la langue des pays concernés.
Ici, on est sur la partie International/Français du forum donc on écrit en français.
Je pense que c'est clair. Et cela évitera les échange en charabia franglais.

@axou ce serait bien de lire les bonnes pratiques du forum francophone et de les appliquer.

Ta photo c'est bien, mais il faudrait aussi le code que tu utilises pour que l'on puisse t'aider.

Merci de poster votre code.

Essayez ce code pour plusieurs capteurs.

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

// Data wire is plugged into digital pin 7 on the Arduino
#define ONE_WIRE_BUS 7

// Setup a oneWire instance to communicate with any OneWire device
OneWire oneWire(ONE_WIRE_BUS);	

// Pass oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);

int deviceCount = 0;
float tempC;

void setup(void)
{
  sensors.begin();	// Start up the library
  Serial.begin(9600);
  
  // locate devices on the bus
  Serial.print("Locating devices...");
  Serial.print("Found ");
  deviceCount = sensors.getDeviceCount();
  Serial.print(deviceCount, DEC);
  Serial.println(" devices.");
  Serial.println("");
}

void loop(void)
{ 
  // Send command to all the sensors for temperature conversion
  sensors.requestTemperatures(); 
  
  // Display temperature from each sensor
  for (int i = 0;  i < deviceCount;  i++)
  {
    Serial.print("Sensor ");
    Serial.print(i+1);
    Serial.print(" : ");
    tempC = sensors.getTempCByIndex(i);
    Serial.print(tempC);
    Serial.print((char)176);//shows degrees character
    Serial.print("C  |  ");
    Serial.print(DallasTemperature::toFahrenheit(tempC));
    Serial.print((char)176);//shows degrees character
    Serial.println("F");
  }
  
  Serial.println("");
  delay(1000);
}

Merci pour vos conseils. Il faudrait donc l'expliquer parce qu'on m a demandé d'écrire en anglais

3_capteurs.ino (2,3 Ko)
Voici le code il ne s'était pas envoyé dsl

ton code

/**
   Mesures de températures avec deux capteurs DS18B20 sur un même bus 1-Wire.
*/

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

/* Broche du bus 1-Wire */

#define ONE_WIRE_BUS 7  // Broche numérique 7, à modifier si nécessaire

/* Création de l'objet OneWire et sensors */

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

/* Adresses des capteurs de température */

DeviceAddress thermometre_1 = {0x28, 0x44, 0x62, 0x79, 0x97, 0x05, 0x03, 0x51}; // courbe bleue
DeviceAddress thermometre_2 = {0x28, 0xE1, 0x37, 0x79, 0x97, 0x08, 0x03, 0x28}; // courbe rouge
DeviceAddress thermometre_3 = {0x28, 0x3E, 0xAE, 0x42, 0x0B, 0x00, 0x00, 0x57}; // courbe verte
/* résolution */

int resolution = 12;  // nombre de bits
/*
  9 bits   0.5 °C     93.75 ms
  10 bits  0.25 °C    187.5 ms
  11 bits  0.125 °C   375 ms
  12 bits  0.0625 °C  750 ms */

/* Pour faire des mesures à intervalle régulier */

unsigned long tempsPrecedent = 0;
float intervalle = 1000;   // durée entre deux mesures en ms (à modifier si nécessaire)

void setup() {

  Serial.begin(115200);  // choix de la vitesse

  sensors.begin();
  sensors.setResolution(thermometre_1, resolution);
  sensors.setResolution(thermometre_2, resolution);
  sensors.setResolution(thermometre_3, resolution);

}

void loop() {
  unsigned long tempsCourant = millis();  // cette variable contient le nombre de millisecondes depuis que le programme courant a démarré.

  if (tempsCourant - tempsPrecedent >= intervalle) {
    tempsPrecedent = tempsCourant;

    /* Demande la température aux capteurs */

    sensors.requestTemperatures();
    float temperature_1 = sensors.getTempC(thermometre_1);  // obtenir la température 1 en degré
    float temperature_2 = sensors.getTempC(thermometre_2);  // obtenir la température 2 en degré
    float temperature_3 = sensors.getTempC(thermometre_3);  // obtenir la température 3 en degré

    /* envoie les températures sur la liaison série  */

    Serial.print(temperature_1, 1);
    Serial.print(",");   // les données sont séparées par des virgules.
    Serial.print(temperature_2, 1);
    Serial.print(","); // les données sont séparées par des virgules.
    Serial.print(temperature_3, 1);
    Serial.println();

  }
}

merci mais cela ne fonctionne pas

hello, nous ne nous sommes pas compris, c'est ton code que j'ai téléchargé et reposté sur le forum.
pour qu'il soit conforme dans sa présentation.

les adresses sont bien celles de tes capteurs?
de quelle valeur est ta résistance
as tu essayé avec une résistance plus élevée ou plus faible?

Je vous avoue que je débute et je ne sais donc pas comment on trouve l'adresse d'un capteur.
j'utilise une résistance de 5kohms.
et j'ai essayé avec d'autres et cela ne change rien

Bonjour,
Un article sur le sujet, un peu ancien, mais tout à fait fonctionnel, d'un ancien du forum (skywodd)
https://www.carnetdumaker.net/articles/faire-un-scanneur-de-bus-1-wire-avec-une-carte-arduino/

Comment as-tu déterminé les adresses des capteurs qui apparaissent dans ton code?