Comment calculer une température moyenne (10 mesures) ?



Matériel utilisé 

 

Capteur de température analogique avec CTN







1. Programme de départ


Connecter le capteur de température sur la broche ADC0 du GPIO du RP2040 (voir documentation du shield base)


On vous donne le programme suivant :


from machine import ADC, Pin
from time import *
import math

# Thermistance (CTN) Grove V1
R0 = 100000     # résistance nominale de la thermistance, 100 kΩ à 25 °C.
B = 4275        # coefficient caractéristique de la thermistance Ω

# Convertisseur Analogique Numérique (CAN)
can1 = ADC(0)    # broche ADC0


while True:
    a = can1.read_u16()                             # Conversion Analogique Numérique 0-65535
    R = ((65536/(a+10))-1) * R0                     # calcul résistance (10 pour corriger l'offset du CAN)          
    temp = 1/(math.log(R/R0)/B+1/298.15)-273.15     # calcul de la température
    temp = round(temp, 1)                           # arrondi au 1/10
    print("température=", temp)                     # affichage sur la console de la valeur numérique
    sleep_ms(500)



Exécuter le programme.


Q1. Que représente la variable a ?


Q2. Dans quelle unité est exprimée la grandeur temp ?


Q3. À quoi servent les constantes B et R0 ?



2. Créer une fonction qui lit une température

On va maintenant isoler la partie « lecture d’une température » dans une fonction.


from machine import ADC, Pin
from time import *
import math


# Thermistance (CTN) Grove V1
R0 = 100000     # résistance nominale de la thermistance, 100 kΩ à 25 °C.
B = 4275        # coefficient caractéristique de la thermistance Ω

# Convertisseur Analogique Numérique (CAN)
can1 = ADC(0)    # broche ADC0


# Fonction
def lire_temperature():
    a = can1.read_u16()
    R = ((65536/(a+10))-1) * R0
    temp = 1/(math.log(R/R0)/B+1/298.15)-273.15
    temp = round(temp, 1)
    return temp          # renvoie la température en °C


# Programme de test
t = lire_temperature()
print("température lue :", t, "°C")
    


Exécuter le programme.


Q4. Quelle est l’utilité de la fonction lire_temperature() ?


Q5. Avantage : si un jour on change de capteur ou de formule, quelle partie du programme faudra-t-il modifier ?



3. Observation des mesures du capteur


L’objectif de cette étape est d’observer comment les valeurs mesurées par le capteur varient dans le temps.
On effectuera 10 mesures consécutives, espacées d’environ 200 millisecondes chacune.


Q6. Modifier le programme pour qu’il affiche 10 mesures, puis s’arrête automatiquement. Pour cela utiliser une boucle for

Pour chaque mesure, afficher son numéro. Ex :  "Mesure n°2 = 21.3°C"


Q7. La température affichée reste-t-elle parfaitement constante ? Expliquer pourquoi les mesures peuvent fluctuer légèrement d’une lecture à l’autre.




4. Créer une fonction qui calcule la moyenne sur 10 mesures

On veut maintenant une fonction qui :

    • lit 10 fois la température grâce à lire_temperature(),
    • calcule la moyenne de ces 10 valeurs,
    • renvoie cette moyenne


Q8. Modifier le programme pour intégrer cette nouvelle fonction et en sorte qu’il affiche la température moyenne toutes les 2 secondes.


















Créé avec HelpNDoc Personal Edition: Créez des fichiers d'aide CHM professionnels avec l'outil facile à utiliser de HelpNDoc