Bonjour
J'utilise sur mon uno un ds18b20 composant avec un code que j'ai a travers ce forum merci les expert le code fonctionne a merveille.
Maintenant j'ai utilise un ds18b20 complet ( sonde ) et trois fils mais a la la sortie avec le même code j'ai -0.06. Pourquoi et comment le faire fonctionner.
turw:
Bonjour
J'utilise sur mon uno un ds18b20 composant avec un code que j'ai a travers ce forum merci les expert le code fonctionne a merveille.
Maintenant j'ai utilise un ds18b20 complet ( sonde ) et trois fils mais a la la sortie avec le même code j'ai -0.06. Pourquoi et comment le faire fonctionner.
Merci.
Ci-Joint la photo de la sonde
bonjour
attention avec les DS18B20 tubés inox , déjà vu sur le forum : certains lots sont cablés n'importe comment, la couleur des fils ne correspondant à rien !
quelles couleur les fils ?
exemple de cablage (re)trouvé sur un lot
Rouge=VCC
Jaune=GND
Vert= DATA
Voici le code que j'utilise et qui ne marche avec la sonde ds18b20 waterproof
#include <OneWire.h>
// http://www.pjrc.com/teensy/td_libs_OneWire.html
OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary)
byte present = 0;
byte data[12];
// byte addr[8] = {0x28, 0x09, 0x53, 0x66, 0x00, 0x00, 0x00, 0xCA}; // DS18B20 test artouste OK
byte addr[8] = {0x28, 0xFF, 0x53, 0x5B, 0x3C, 0x04, 0x00, 0x81}; // DS18B20 scan TURW
float celsius;
unsigned int delact=1000; // delai de reactualisation temp ne doit pas etre < à 750 pour 12bits
unsigned long lastconv;
// unsigned long inconv; // pour test durée lecture temp
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
temp(); // là la loop ne fait qu'appeller la fonction temp()
}
void temp(void) { // fonction temp non bloquante de reactualisation de temperature
if (millis()>lastconv+delact) { //si le delai de reactu n'est pas atteint , on zappe
// inconv=millis(); // entrée lecture temp
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Lecture Scratchpad
for ( byte i = 0; i < 9; i++) {
data[i] = ds.read();
}
int16_t raw = (data[1] << 8) | data[0];
celsius = (float)raw / 16.0;
//Serial.println(millis()-inconv); // debug
Serial.println(celsius);
// demande de conversion
ds.reset();
ds.select(addr);
ds.write(0x44, 1);
lastconv=millis();
}
}
ça y est, c'est un jeu de devinette.
Bon, en fait tu as deux capteurs dont un 'waterproof'.
Le premier capteur a pour adresse: 0x28, 0x09, 0x53, 0x66, 0x00, 0x00, 0x00, 0xCA.
Le code présenté fonctionne avec celui-là.
Le deuxième capteur (waterproof) a pour adresse: 0x28, 0xFF, 0x53, 0x5B, 0x3C, 0x04, 0x00, 0x81 , comment la connais-tu ? ,programme de scan?, si oui, il n'y a aucune raison que le code ne fonctionne pas.
Tu dis: "Code couleur Rouge Noir blanc j'ai eu un problème de chauffe en utilisant un code couleur correct", tu parles de quel capteur?, le waterproof?
Si il à chauffé à cause d'une erreur de câblage il est peut-être HS. Si tu as repéré le bon câblage, un coup de scan.
Ne mélangeons pas tout.
Le code c'est le programme que tu à mis en ligne.
L'adresse du DS18B20 (composant) c'est laquelle ?
0x28, 0x09, 0x53, 0x66, 0x00, 0x00, 0x00, 0xCA
ou
0x28, 0xFF, 0x53, 0x5B, 0x3C, 0x04, 0x00, 0x81
et où l'as-tu prise.
Faire un 'scan' c'est charger dans la UNO un programme qui va scruter le bus 'oneWire' pour récupérer et afficher les adresses des composants 'onewire' qui y sont connectés.
Dans la lib. 'OneWire' il y a un exemple (DS18x20_Temperature.pde) qui permet cela et d'afficher la température si un capteur est présent.