24-07-2024, 10:16 PM
(24-07-2024, 09:07 PM)tupolev89 a écrit : Bonsoir j'ai bien sélectionné capteur interne, mais aucun changement, j'ai aussi essayé en multi sinus et même train de sinus, aucune amélioration pour ma part ??
Bonjour,
A tout hasard
la sonde n'est elle pas HS ?
Est il possible qu'il y ai une inversion de câblage dans la sonde ?
Peux tu la tester sur un autre EPS32 ?
J'ai trouvé ce programme qui permet de tester la sonde, il scanne le bus avec adresse et température jusqu’à 10 sondes
Code :
/* Test des Sondes DS18B20 sur la Pin 6
Modif JNM du 17/08/2017
*/
#include <OneWire.h>
#include <DallasTemperature.h>
byte OneWirePin = 6; // sondes DS18B20 sur pin 6
OneWire oneWire(OneWirePin); // bus pour com avec les sondes
DallasTemperature sensors(&oneWire);
byte addr[8]; // pour reconnaissance adresses des sondes
// Déclaration des variables des sondes de temperature
float temp[10];
byte nbrSondes = 0; // 0 sonde au démarrage
// Relever les adresses des Sondes et les mettre dans le tableau
DeviceAddress Sonde0 = { 0x28, 0xFF, 0x2A, 0x85, 0xA6, 0x16, 0x03, 0xD6 }; //adresse propre à chaque sonde
DeviceAddress Sonde1 = { 0x28, 0xFF, 0x46, 0xA3, 0xA5, 0x16, 0x05, 0xA6 }; //
DeviceAddress Sonde2 = { 0x28, 0xFF, 0x05, 0x25, 0xA6, 0x16, 0x04, 0x6B }; //
DeviceAddress Sonde3 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde4 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde5 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde6 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde7 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde8 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
DeviceAddress Sonde9 = { 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; //
// Initialisation
void setup()
{
Serial.begin(9600);
sensors.begin();
// Recherche le nombres de sondes disponible
nbrSondes = sensors.getDeviceCount();
Serial.println();
Serial.print("Nombre de capteurs trouves sur le BUS = ");
Serial.println(nbrSondes);
Serial.println(" aux adresses: ");
for (byte s = 0; s <= nbrSondes; s++)
{
if (!oneWire.search(addr))
{
Serial.println("Pas d'autres sondes trouvées.");
oneWire.reset_search();
delay(250);
return;
}
Serial.print("Sonde Numéro : ");
Serial.print(s);
Serial.print(" à l'adresse {");
for (byte i = 0; i < 8; i++)
{
Serial.print("0x");
Serial.print(addr[i], HEX);
if (i < 7)
{
Serial.print(", ");
}
}
Serial.println("}");
}
// Fixe la résolution des capteurs à 10 bits (choix entre 9 et 12)
sensors.setResolution(Sonde0, 10);
sensors.setResolution(Sonde1, 10);
sensors.setResolution(Sonde2, 10);
sensors.setResolution(Sonde3, 10);
sensors.setResolution(Sonde4, 10);
sensors.setResolution(Sonde5, 10);
sensors.setResolution(Sonde6, 10);
sensors.setResolution(Sonde7, 10);
sensors.setResolution(Sonde8, 10);
sensors.setResolution(Sonde9, 10);
Serial.println("Fin du set up.");
}
// Programme principale
void loop()
{
Serial.println();
Serial.println("Lecture des temperatures en cours...");
sensors.requestTemperatures();
temp[0] = printTemperature(Sonde0, 0);
temp[1] = printTemperature(Sonde1, 1);
temp[2] = printTemperature(Sonde2, 2);
temp[3] = printTemperature(Sonde3, 3);
temp[4] = printTemperature(Sonde4, 4);
temp[5] = printTemperature(Sonde5, 5);
temp[6] = printTemperature(Sonde6, 6);
temp[7] = printTemperature(Sonde7, 7);
temp[8] = printTemperature(Sonde8, 8);
temp[9] = printTemperature(Sonde9, 9);
delay(5000);
}
// Affichage des Températures
float printTemperature(DeviceAddress deviceAddress, byte cptSondes)
{
float tempC = sensors.getTempC(deviceAddress);//lecture des sondes
if (tempC == -127.00) //Vérifications si erreurs
{
if (cptSondes < nbrSondes)
{
Serial.print("Problème de sonde numéro : ");
Serial.println(cptSondes);
}
tempC = 0;
}
else //affichage temperature
{
Serial.print("Sonde numéro : ");
Serial.print(cptSondes);
Serial.print(" mésuré à : ");
Serial.print(tempC);
Serial.println(" °C.");
}
return tempC;
}
@+