Bonjour tout le monde,
J'ai récupéré il y a un moment une sonde de température à deux fils (noir et blanc) sans savoir quel est le modèle ni ses spécifications. Je ne sais donc rien du tout de ce capteur.
Ne sachant pas trop comment m'y prendre et après m'être un peu documenté je me suis dit que j'allais l'étalonner moi-même à l'aide de la sortie 5V de mon arduino nano, d'une résistance 10KOhm et d'un thermomètre trouvé dans la cuisine !
1. Le branchement de la sonde sur l'Arduino Nano :
En branchant la sonde sur le 5V de l'arduino et en comparant la tension de sortie avec la valeur du thermomètre, je me suis dit que j'allais trouver une formule qui allait calibrer la température en fonction de la tension de sortie du capteur, séparée de GND par une résistance 10KOhm:
Le fil blanc est celui de l'entrée de la sonde, le noir sa sortie. Le jaune connecte le pin A0 à la sortie du capteur et avant la résistance 10kOhm
Je ne sais pas du tout si ma méthode est bonne, je débute, tâtonne et je recherche la critique
2. Script d'acquisition
Pour pouvoir faire un graphique qui va corréler la tension enregistré par le pin A0 et la température que j'enregistre manuellement avec mon thermomètre, j'ai fait un petit script qui ressort les valeurs désirées et permet de construire son tableur.
J'ai laissé mes essais de formule de transformation de la tension en température pour mieux décrire mes péripéties
//On se branche sur le pin analogique 0
int mesure = A0;
void setup () {
Serial.begin (9600);
Serial.println("LABEL,Temps,Tension sortie (V), Valeur sortie (CAN), Temperature");
}
void loop () {
const int valeur = analogRead(mesure);
// Calcul de la tension, division par 1024 car le pin renvoie un signal 0<1024
const float tension = (valeur * 5.0) / 1024;
//Test température
const float TempTEST = 2.6961*sq(tension) + (9.4328*tension) - 16.68; // Le polynôme de l'impossible !!
//Test température2
const float TempTEST2 = (23.768*tension)-33.247; // La non SOLUTION (eq linéaire) ??!!
// Suivi des données
Serial.print(" Tension : ");
Serial.print(tension);
Serial.print(" V , Valeur A0 : ");
Serial.print(valeur);
Serial.print(" CAN , Température 1 : ");
Serial.print(TempTEST);
Serial.print("°C , Température 2 : ");
Serial.print(TempTEST2);
Serial.println("°C ,");
// On attend 5 secondes entre chaque mesure
delay(5000);
}
3. L'étalonnage !
Après ça c'est parti ! Pour me lancer j'ai réaliser deux séries de mesure avec de l'eau chaude (de 60°C à 25°C) et froide avec un montage ultra sophistiqué comprenant un thermos et des pinces à linge
Je les immerges dans l'eau car je me dis que c'est ma seule solution pour pouvoir mesurer une température à peu près constante et uniforme.
L'idée à partir de la est de réaliser un graphique dans Excel est de lui faire calculer la courbe de tendance qui me permettra de déduire la température de la tension. Car en effet on peut demander à excel de nous donner l'équation qui permet le calcul de cette courbe de tendance, pratique !
Au début je pensais que cette équation serait linéaire de type f(x)=155y+12, c'est ce que j'avais lu dans la plupart des autres tutos mais non ! La courbe n'est pas linéaire du tout. La solution est donc un polynôme de second degré, de type y = ax 2 + bx + c. ou Y est la température et X la tension.
Pour pouvoir déduire la température de la tension enregistré par le pin A0 je dois donc faire les opérations successives :
Calcul de la tension (je ne suis même pas vraiment sûr du pourquoi du comment de la division par 1024), puis résolution de l'équation donnée par Excel :
const int valeur = analogRead(mesure);
// Calcul de la tension, division par 1024 car le pin renvoie un signal 0<1024
const float tension = (valeur * 5.0) / 1024;
//Test température
const float TempTEST = 2.6961*sq(tension) + (9.4328*tension) - 16.68;
Je n'ai pas encore pris les mesures du froid, le chaud met un moment avant d'aller à 25°C dans mon petit thermos mais jusque la je crois que j'avance bien !