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?
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
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
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
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);
}
Alors très bonne nouvelle, ma sonde est toujours OK et j'ai des chiffres
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);
}
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?
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.
Pour ce qui est du multiplexeur analogique CD4051, voici un schéma permettant de sélectionner une sonde parmi deux
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.
Toujours très intéressant pour un débutant comme moi. C'est un peu mon premier projet
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.
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)
pour sélectionner KT20a : D3 entrée, D4 sortie LOW
pour sélectionner KT20b : D3 sortie LOW, D4 entrée