Le LM335Z est un simple capteur de température qui s’utilise très facilement.
Nous avions déjà étudié un capteur de température numérique, le LM75 décrit dans cet article, qui nécessitait d’utiliser un protocole de communication, I2C.
Le LM335Z est plus simple, il est analogique, c’est-à-dire qu’il présente une tension variable en fonction de la température. La variation de tension est linéaire : 10 mV par degré Kelvin (K). Avec un microcontrôleur (carte Arduino par exemple), on utilisera un convertisseur analogique/numérique pour connaitre la température en fonction de la valeur analogique lue sur l’entrée connectée.
Electroniquement, ce capteur est équivalent à une diode zéner à 2 sorties, mais dispose dans son boitier standard TO92 d’une troisième sortie d’ajustement, permettant avec un potentiomètre d’obtenir une plus grande précision.
Montage
Avec une carte Arduino pour faire la lecture analogique et la conversion pour envoyer sur l’ordinateur et visualiser la valeur pour simuler ce que ferait une installation domotique ou un robot, et avec une plaque d’essai (breadboard), on peut réaliser rapidement le montage "simple" consistant à relier la diode zéner représentant le capteur de température en pont diviseur de tension.
Schéma
Voici le schéma de connexion : comme vous le remarquez, la première patte n’est pas utilisée car dans le mode simple, nous n’en avons pas besoin.
Si vous lisez la datasheet, notez bien le "bottom view" sur le schéma du boitier TO-92 qui indique que le composant est décrit vu de dessous, la partie bombée étant alors vers l’arrière et non vers le devant.
Calculs
Voici les correspondances, pour un convertisseur analogique numérique de 10 bits et une tension d’alimentation de 5 volts :
– à valeur 0 = 0 volts, la température est de 0 K (degré Kelvin)
– à valeur 2 = 10 millivolts, la température est de 1 K
– à valeur 610 = 2,99 volts, la température est de 298 K
– à valeur 1024 = 5 volts, la température est de 500 K
Pour obtenir des degrés courants (Celsius dans cette partie du globe), il faut se souvenir que 0 degré Kelvin = -273,15 degrés Celsius (°C). Donc 298 K = 25 degrés Celsius.
Lecture de valeur
Voici un code très simple :
void setup()
{
Serial.begin(38400);
}
void loop()
{
int val = analogRead(0);
double kelvin = ((double) val * 500.0) / 1024.0;
double degres = kelvin - 273.15;
Serial.println(degres);
delay(500);
}
C’est très simple, mais il ne faut pas oublier d’utiliser des "double" (nombres réels ou "à virgule") et de faire une conversion de type (ou "cast" en anglais) de la valeur numérique entière lue sur le convertisseur en une valeur réelle compatible avec la multiplication et la division.