Internet, je te salut et je te remercie pour l'accueil !
Bien, aujourd'hui je vais vous expliquer comment réaliser un thermomètre électronique sans trop de difficulté. Il vous faudra :
- Une carte Arduino (celle utilisée est une Uno)
- Un breadbord
- Un résistance 2,2k
- Une sonde de température deux broches
- J'utilise une KTY 10-5 (référence exacte: Q62705-K110), je vous invite à consulter la fiche technique.
Ce genre de sonde est en faite une résistance variable. Lorsque la température augmente, la résistance augmente. Pas proportionnellement malheureusement.
Etape 1 : Ohmmetre
Une Arduino ne peut mesurer directement la valeur d'une résistance sur ses ports analogiques, il faut réaliser un pont diviseur de tension. En cherchant un peu, on peut trouver facilement un montage dans le genre, par exemple celui de
wiki.t-o-f.info.
Pour trouver la valeur de la résistance R1, on utilise le calcul suivant:
Or, à 25°C, la sonde résiste à une valeur de 1950 à 1990Ω. Donc la résistance minimal doit être au alentours de 100Ω et la maximale de 50k environs... 2,2K convient.
Cependant, pour plus de précision, j'ai vérifier la valeur de R1 avec un ohmmètre du commerce pour être plus précis car une résistance n'est jamais à la valeur exacte indiquée. J'ai donc trouvé R1=2178Ω.
On branche les fils, on programme l'Arduino et c'est fini !
|
La résistance de droite corresponds à R2 (pour cette mesure, elle vaut 220Ω) |
Le programme (à copier-coller dans le logiciel) :
int Vcc = 5; //V
int R1 = 2178; //omh (résistance fixe = racine carrée(valeur minimale de la résistance variable * valeur maximale de la résistance variable) )
float U1;
float R2;
void setup() {
Serial.begin(9600);
}
void loop() {
// tension U1 en mv
U1 = analogRead(A0)*5.0/1023.0;
// valeur de la résistance R | Pont diviseur de tension
R2 = ((Vcc - U1)*R1)/U1;
// envoi de la valeur de la résistance sur le port serie
Serial.println(R2);
}
Etape 2: conversion de la résistance en température
Maintenant que l'on est capable de mesurer une résistance, c'est un jeu d'enfant. On consulte la fiche technique du composant (rappel: KTY 10-5) et on récupère la fonction qui donne la température en fonction de la résistance. Soit:
On code ça en language Arduino:
// tension U1 en mv
U1 = analogRead(A0)*5.0/1023.0;
// valeur de la résistance R | Pont diviseur de tension
R2 = ((Vcc - U1)*R1)/U1;
Kt = R2 / R25;
temperature = 25 + ( sqrt ( pow(alpha,2) - 4 * beta + 4 * beta * Kt) - alpha ) / ( 2 * beta );
Avec (définit plus haut dans le programme):
//Conversion resistance => température
int R25 = 1970;
float alpha = 7.88*pow(10,-3);
float beta = 1.937*pow(10,-5);
float Kt;
float temperature;
On peut à présent afficher la température sur le port série en remplacement
Serial.println(R2); par
Serial.println(temperature);.
Etape 3:
Un afficheur LCD c'est mieux qu'un écran d'ordinateur, n'est-ce pas ? Le but de cet article n'étant pas d'apprendre à utiliser un LCD, je ne détaillerai pas. Cependant voilà comment brancher :
// inclure la librairie pour le LCD
#include <LiquidCrystal.h>
// preparer les broches du lcd
LiquidCrystal lcd(11,10,5,4,3,2);
int Vcc = 5; //V
int R1 = 2178; //omh (résistance fixe = racine carrée(valeur minimale de la résistance variable * valeur maximale de la résistance variable) )
float U1;
float R2;
//Conversion resistance => température
int R25 = 1970;
float alpha = 7.88*pow(10,-3);
float beta = 1.937*pow(10,-5);
float Kt;
float temperature;
void setup() {
lcd.begin(16, 2);
lcd.print("Temperature :");
}
void loop() {
// tension U1 en mv
U1 = analogRead(A0)*5.0/1023.0;
// valeur de la résistance R | Pont diviseur de tension
R2 = ((Vcc - U1)*R1)/U1;
Kt = R2 / R25;
temperature = 25 + ( sqrt ( pow(alpha,2) - 4 * beta + 4 * beta * Kt) - alpha ) / ( 2 * beta );
// envoi de la valeur de la température
lcd.setCursor(0, 1);
lcd.print(temperature);
lcd.print(" ");
lcd.write(11011111);
lcd.print("C");
delay(500);
}
Petit photo preuve !