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
-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.
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
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.
#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);
}
/**
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();
}
}
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