Je suis sur un projet permettant de récupérer des températures grâce au couple MAX31850K et Thermocouple type K. J'en ai 4 en série, lorsqu'il y en a que 2 ou 3 les valeurs semblent normale. Mais dès qu'il y a en a 4, les valeurs ont une différence de 1 voir 2 degré de la première sonde à la 4ème. Je pense qu'utiliser un MOSFET IRF540 pourrait être utile pour lisser les valeurs... Or, je n'arrive pas à l'implémenter dans le circuit. Voici mon code concernant la partie température:
Cela ne s'appelle pas résoudre un problème mais cacher la poussière sous le tapis
et en plus cela ne marchera pas.
Revenons à l'origine du pb : mauvais fonctionnement quand trop de MAX31850K sont connectés.
Le MAX31850K utilise le bus ONEWIRE de la société Dallas (rachetée avec son bus par Maxim).
Je pense a un problème de gestion du bus qui est connu pour être un bus lent.
Je n'en dirai pas plus parce que je n'en sais pas plus sur ce bus.
Néanmoins tu peux commencer à chercher de la documentation sur les bonnes pratiques pour utiliser ce bus et peut-être que notre grand spécialiste de ce bus se connectera au forum
Merci pour cette analyse. En effet, j'ai effectué des tests : chaque MAX31850K et chaque Thermocouple fonctionne très bien seul, peu importe dans quel ordre et avec quel composant. Donc le problème ne vient pas du Hardware il s'agit de la transmission de donnée...
Je n'y connais absolument rien en bus de transmission,
Quel genre de solution pensez-vous qu'il existe ?
Je suis en alimentation directe, mais j'ai également testé en parasitic power et cela ne change pas grand chose. Que me conseillez-vous ? J'ai lu que l'external power pouvait être plus précis et sûr
keaume:
Je suis en alimentation directe, mais j'ai également testé en parasitic power et cela ne change pas grand chose. Que me conseillez-vous ? J'ai lu que l'external power pouvait être plus précis et sûr
OK , alim prise où ?
les adresses des max sont en decouverte à chaque boucle ou elles sont enregistrées ?
poste ton programme
IL n'y a bien qu'une seule R 4.7K entre VCC et les DQ ?
MAX31850K.begin();
NbCapT = MAX31850K.getDeviceCount(); // Récupérer le nombre des capteurs fonctionnels sur le bus
for(cpt = 0; cpt < NbCapT; cpt++) // Récupérer et stocker les IDs des capteurs par index
{
if(MAX31850K.getAddress(IDsTemp[cpt], cpt) == true)
{
Serial.print("OK pour l'adresse du capteur Temp-"); // Affichage Ordinateur
Serial.println(cpt); // Affichage Ordinateur
}
else
{
Serial.print("NOK pour l'adresse du capteur Temp-"); // Affichage Ordinateur
Serial.println(cpt);
}
}
MAX31850K.setWaitForConversion(false); // Ne pas bloquer le programme pendant la conversion de la température en nombre par MAX31850K
delay(200);
MAX31850K.requestTemperatures(); // Ordonner aux MAX31850K de procéder à la conversion des températures
delay(200);
Voici mon code concernant les MAX :
void lireMesTemp()
{
byte cpt;
String affichOrdi;
for (cpt = 0; cpt < NbCapT ; cpt++) // Parcourir un à un les capteurs
{
if(MAX31850K.isConnected(IDsTemp[cpt]) == true)
{
MesTemp[cpt] = MAX31850K.getTempC(IDsTemp[cpt]);
/* Affichage Ordinateur */
affichOrdi = "Capteur Temp-" + cpt;
affichOrdi = " " + affichOrdi + " : " + MesTemp[cpt];
Serial.print(affichOrdi);
Serial.println(" °C");
}
else
{
MesTemp[cpt] = 0.0;
/* Affichage Ordinateur */
affichOrdi = "Capteur Temp-" + cpt;
affichOrdi = affichOrdi + " déconnecté !";
Serial.println(affichOrdi); // Affichage Ordinateur
}
}
MAX31850K.requestTemperatures(); // Ordonner aux MAX31850K de procéder à la conversion des températures
delay(200);
}
keaume:
Voilà ! Je vais test mais je ne sais pas si cela va changer quelque chose.
Perso , j'ai plutot tendance à penser que si c'est une préconisation impérative du constructeur , c'est que ça doit quand même être quelque part ...un peu... important
Okay pour l'instant les 4 mesures tiennent dans des valeurs à peu près égal (à 1degré près)
Est-ce que tu pourrais expliquer le changement ?
J'ai aussi des soucis de virgules, cela ne m'affiche pas valeurs avec arrondissement on va dire. Par exemple :
28,61 ou bien 21,28 tu vois, j'aimerais qu'il y ait que des 21,1 ; 21,2 ; 21,3 ; 21,4 ect...
Comment pourrais-je faire ça ?
Pour te répondre j'aimerais récupérer les données de ma machine géothermique à mon domicile et l'envoyer un serveur Thingspeak via un ESP8266. Pour les mesures j'ai 4 MAX31850K-Thermocouple K, deux SCT-013-000 pour le courant (dont j'ai également un problème lol), un débitmètre Digiten G1, et un un capteur de pression. Dans mon circuit j'ai également un Logic level converter pour gérer plus facilement l'ESP8266, voilà !