Températures – Activité 1

Mesure de températures avec un capteur TMP 36 ou LM 35

 

. Objectif

Dans cette activité, nous allons mesurer une température à l’aide du capteur TMP 36 ou LM 35 de notre circuit d’étude.

 

Le principe de fonctionnement d’un tel capteur repose sur la dépendance à la température de la caractéristique courant-tension des diodes à jonction au silicium qui sont un des composants du capteur.

Pour un courant fixe, la tension aux bornes d’une diode au silicium varie en fonction de la température.
En amplifiant le changement de tension, ces capteurs génèrent un signal analogique linéairement proportionnel à la température.

 

. Capteur de température TMP 36

Le capteur dispose de 3 broches :


Caractéristiques
:

. tension de fonctionnement : + 2,7 V à + 5,5 V
. sortie calibrée en °C (10 mV / °C)
. plage de mesure : −40 ° C à + 125 ° C (fonctionne jusqu’à 150 °C)
. précision : ±1 ° C à + 25 ° C ( ± 2 ° C pour des températures en dehors de la plage −40 ° C à + 125 ° C)
. Tension de sortie: 0.1V (-40°C) à 2.0V (150°C)
. Courant de charge: 0.05 mA


Le TMP36 permet de mesurer des températures négatives.
Le 0°C est placé à un offset de 500 mV :

Ainsi, toute mesure inférieure à 500 mv correspondra à une température négative.

La conversion de la tension de sortie du capteur en température en °C est alors :

 

. Capteur de température LM 35

Le capteur LM 35, fabriqué par Texas Instrument, dispose également de 3 broches :


Caractéristiques
:

. Tension de fonctionnement : + 4 V à + 30 V
. Sortie calibrée en °C (10 mV / °C)
. Plage de mesure : −55 ° C à + 150 ° C
. Précision :  +/-0.5°C à 25°C et +/-1°C à -55°C ou +150°C
. Tension de sortie : -0.55V (-55°C) à 1,5V (150°C)
. Courant de charge : 0.06 mA


Avec le capteur LM35, dans le cas de températures en dessous de 0°C, la tension de sortie est négative (-10°C équivaut à -0,1 V).

De ce fait, avec un Arduino, il n’est possible de mesurer que des températures positives car la tension appliquée sur une entrée analogique du microcontrôleur doit absolument être entre 0 et 5V.

La conversion de la tension de sortie du capteur en température en °C est alors :

 

. Le programme

Le code de l’activité lit la valeur de la broche A0 (nombre entier entre 0 et 1023), convertit cette valeur en tension en V (nombre décimal entre 0 et 5 V) et affiche la température correspondante dans le moniteur série.

Par défaut, le code est prévu pour un capteur TMP 36, mais le calcul de la température avec un LM 35 étant en commentaire, il suffit de modifier le code pour mesurer une température avec ce capteur.

Déroulement du programme :

– Déclaration des constantes et variables :

. int sensorVal = 0  (variable pour stocker la valeur de la broche A0)

. float tension = 0.0  (variable pour stocker la valeur en V de la tension correspondante à la valeur de la broche A0)

. float temperature = 0.0  (variable pour stocker le résultat du calcul de la température)

– Initialisation des entrées et sorties :

. La liaison série est établie à un débit de 9600 bauds,

. L’entête des mesures effectuées est affiché dans le moniteur série.

– Fonction principale en boucle :

. Lecture de la valeur de la broche A0 : sensorVal = analogRead(A0)

. Calcul de la tension en V correspondante :
tension = (sensorVal/1023.0)*5.0

. Calcul de la température en °C correspondante :

– Pour un TMP 36 : temperature = (tension – 0.5) * 100
– Pour un LM 35 : temperature = tension * 100

. Affichage des variables sensorVal, tension et température dans le moniteur série.

 

Résultats dans le moniteur série :

 

Remarques :

  • En plus du premier paramètre correspondant à la variable à afficher dans le moniteur série, la fonction « Serial.print() » admet un 2ème paramètre optionnel pour les nombres décimaux qui précise le nombre de décimales après la virgule :

. Serial.print(1.23456, 0) donne « 1 »
. Serial.print(1.23456, 2) donne « 1.23 »
. Serial.print(1.23456, 4) donne « 1.2346 »

  • La lecture d’une entrée analogique revoie une valeur entre 0 et 1023 pour une tension variant entre 0 et 5v.
    La précision de la mesure est donc de 5 / 1024, soit 0.0048 V (soit environ 5 mV).
    Donc, le signal de sortie du capteur TMP36 étant de 10 mv par degré, la mesure via l’entré analogique de l’Arduino est donc précise à +/- 0,5 °c.

 

  • Il est possible d’augmenter la précision de l’entrée analogique :

– En alimentant le TMP36 en 3,3 volts (disponible sur l’Arduino).

– Et en utilisant cette tension de 3,3v comme référence (sur la broche ARef) pour les lectures analogiques.

En effet, dans ce cas, la valeur lue sur l’entrée analogique évoluera de 0 à 1023 pour une tension entre 0 et ARef (3.3 V).
Soit une précision de 3.3 / 1024 = 0,0032 V (3,2 mV).
L’erreur est ici réduite à +/- 0.32°C.

 

  • Pour utiliser une tension de référence externe sur la broche ARef, pour la conversion analogique numérique des entrées analogiques, il faut l’initialiser dans la fonction setup() à l’aide de l’instruction :

 analogReference(EXTERNAL)