Sonde temperature chaudière kvt20/2/6 sur WEMOS D1 Mini

Bonsoir Forum,

Je commence dans le monde Arduino et je cherche à moderniser mon régulateur de température de ma chaudière, j'ai déjà pas mal joué avec une sonde DHT11 mais maintenant j'aimerai attaquer le branchement de la vrai sonde.

Pouvez-vous m'aider sur comment brancher une sonde de temperature chaudière type kvt20/2/6 sur mon module WEMOS D1 Mini. Et si vous avez exemple de code cela m'aiderai beaucoup !

La sonde est composé de 2 fils, j'ai aussi un tableau °C => kΩ ou je retrouve des valeurs du style:

...
30°C = 2.078 kΩ
35°C = 2.155 kΩ
...

Maintenant je sèche un peu, je dois envoyer du 3,3V voir 5V dans ma sonde et récupérer une valeur pour ensuite faire un calcul?

Merci beaucoup pour votre aide précieuse.

Bonne nuit.

Chris

Bonjour

Il me semble que la sonde en question contienne un capteur de type KTY-10 ou KTY81 , à peu près linéaire
le montage pourrait être le suivant, simple pont diviseur
KTY.png

KTY.png

Merci beaucoup pour votre réponse rapide. Le nombre de kΩ des capteurs que vous indiquez est effectivement presque identique.

J'avais déjà fait pas mal de recherche et trouvé le montage que vous proposé. J'ai juste pas osé tester de peur d'endommager ma sonde et de me retrouver temporairement sans eau chaude :wink:

J'avais lu aussi que pour améliorer la précision j'allais peut être devoir passer par une carte supplémentaire 16bit à la place de 10bit par défaut sur le Wemos D1 Mini.

Je vais déjà tenter votre montage et voir le résultat, j'espère épargner ma sonde surtout :wink:

Si vous avez un exemple de code, je suis preneur, je suppose que mon code va devoir ressembler au code suivant:

#define TMPPin A0
String temperatureString = "";

void setup() {
  Serial.begin(115200);
}


void loop() {
  int tmpValue = analogRead(TMPPin);
  float voltage = tmpValue * 3.3;// converting that reading to voltage
  voltage /= 1024.0;
  float temperatureC = (voltage - 0.5) * 100 ;  //converting from 10 mv per degree wit 500 mV offset
  //to degrees ((voltage - 500mV) times 100)
  temperatureString = " " + String(temperatureC) + " C  ";

  Serial.println(temperatureString);
  delay(1000);
}

Bonne journée et merci beaucoup
Chris

Re,

Je viens de voir que je n'ai pas de résistance 1K, pensez-vous qu'une 10K en attendant pour tester fera l'affaire?

Merci d'avance,

Chris

inconvénient : avec 10K la plage de variation de la tension envoyée sur A0 sera faible mais ça devrait quand même permettre de faire un test.

Re,

Alors très bonne nouvelle, ma sonde est toujours OK et j'ai des chiffres :wink:

Le résultat:

193
636.90
0.62
12.20 C

194
640.20
0.63
12.52 C

199
656.70
0.64
14.13 C

200
660.00
0.64
14.45 C

201
663.30
0.65
14.78 C

204
673.20
0.66
15.74 C

205
676.50
0.66
16.06 C

Je vais devoir tester à nouveau avec une résistance de 1K et comprendre les chiffres afin de convertir vers la bonne température. (tableau de ma sonde T °C = R (kΩ)

Mais si je comprends bien ma valeur analogRead(TMPPin) est maintenant = 205 parce que j'utilise une résistance 10K, avec une résistance 1K je devrais avoir qq chose de plus précis et proche de 2050? Ce qui va dans la direction des valeurs de mon tableau en pièce jointe !

Sur ma sonde il y a un petit anneau flottant qui dit 12K, pas certain que c'est en rapport avec la résistance!

Voici mon code:

#define TMPPin A0
String temperatureString = "";

void setup() {
  Serial.begin(115200);
}


void loop() {
  int tmpValue = analogRead(TMPPin);
  Serial.println(tmpValue);
  
  float voltage = tmpValue * 3.3;// converting that reading to voltage
  Serial.println(voltage);
  
  voltage /= 1024.0;
  Serial.println(voltage);
  
  float temperatureC = (voltage - 0.5) * 100 ;  //converting from 10 mv per degree wit 500 mV offset
  //to degrees ((voltage - 500mV) times 100)
  temperatureString = " " + String(temperatureC) + " C  ";

  Serial.println(temperatureString);
    Serial.println("");
  delay(1000);
}

Un grand merci pour votre aide précieuse !
Chris

avec une résistance 1K je devrais avoir qq chose de plus précis et proche de 2050?

Bonjour,
exact, utilises la formule d'un diviseur de tension pour t'en convaincre

avec une résistance 1K je devrais avoir qq chose de plus précis

oui, car les sources d'imprécisions seront divisées par 10

Sur ma sonde il y a un petit anneau flottant qui dit 12K

c'est quoi ?

Bonjour Forum,

Excellente nouvelle ! Avec Résistance 1K j'ai des mesures parfaites ;-p

Un grand merci à vous deux pour votre aide précieuse.

P.S. Si je peux abuser, avec analogRead * 3,3V j'ai bien ma valeur Ω qui correspond à mon tableau de température et qui va me permettre d'arrêter le bruleur en fonction de la température du bruleur lui même et/ou de la température de mon eau. Par contre quelle formule utiliser dans mon code pour afficher analogRead * 3,3V en temp °C sur un petit écran?

Merci ;-p

Bonne soirée

Chris

Prendre le tableau joint au message#5 ,le recopier dand un tableur a qui sera demandée une relation temp -> resistance.

En deduire une relation resistance -> temp a exploiter dans le programme

OK, parfait, j'ajoute le tableau dans mon project et je converti en fonction, c'est très clair.

Bonne journée,
Chris

Bonsoir Forum,

Je reviens sur mon problème, j'ai deux sondes KVT20 à brancher sur A0, du coup j'ai cru comprends que je vais devoir ajouter un 74HC4051 MULTIPLEXER.

Pouvez-vous me confirmer que mon sketch en pièce jointe est OK selon ma compréhension?

Merci d'avance,

Bon dimanche
Chris

christophe_home:
J'avais lu aussi que pour améliorer la précision j'allais peut être devoir passer par une carte supplémentaire 16bit à la place de 10bit par défaut sur le Wemos D1 Mini.

Avec 10 bits, tu as une résolution de 0,1 % de la pleine échelle.
J'ai passé une partie de ma vie à faire des mesures, crois-moi les problèmes ne viennent pas de la résolution.
La résolution n'est qu'une partie de la précision. Il faut compter avec le bruit électrique, le bruit physique (la grandeur mesurée fluctue), la linéarité du capteur...
Alors 16 bits -> résolution = 0,0015% p. e. ça me semble vraiment superflu.
A moins que tu ne sois obligé de travailler dans une tout petit partie de la pleine echelle, par ex entre 0 et 0,2 V.

Même avis que biggil

Pour ce qui est du multiplexeur analogique CD4051, voici un schéma permettant de sélectionner une sonde parmi deux
mux2x1.jpg

NB : je laisse à d'autres le soin de répondre sur la base des plans de câblage Fritzing ou équivalent.
Le schéma ( composants représentés par des symboles, pas par leur 'look') est le seul procédé que je pratique pour décrire un montage dans le but de faciliter la compréhension de son fonctionnement.

mux2x1.jpg

Un grand merci pour vos réponses.

Toujours très intéressant pour un débutant comme moi. C'est un peu mon premier projet :wink:

Top le schéma, c'est ce que j'avais compris avec les infos du net.
Me demandais justement si je devais bloquer 3 GPIO Digital sur ABC pour obtenir dans mon cas uniquement 000 ou 001, mais la je vois pour la première fois que je peux aller à la masse avec BC et uniquement garder A qui va me permettre de faire ma sélection et d'avoir 000 ou 001.

J'avais donc bien compris le fonctionnement de multiplexeur pour mon OUTIN A0. Pour mes sondes KT20 cela ne change donc rien, je garde le même câblage avec résistance 1K et je duplique vu que j'ai deux sondes. Mon code me permettra de basculer d'une sonde à l'autre.

Top

Merci
Bon weekend
Chris

Bonsoir,
pourquoi ne pas multiplexer sans composant supplémentaire ?

Bonsoir
en effet ça pourrait passer en reliant à la masse une des sondes KT par une sortie GPIO pendant que l'autre sonde est reliée à une entrée GPIO (haute impédance)
double KT20.jpg

pour sélectionner KT20a : D3 entrée, D4 sortie LOW
pour sélectionner KT20b : D3 sortie LOW, D4 entrée

double KT20.jpg

karma, quand-même :wink: