Skip to content

Thermomètre à Micro:bit

But : étudier la réponse en température de plusieurs capteurs de température, et réaliser un thermomètre électronique.

I./ Réalisation du montage :

Résistance R = 1 kΩ

Sondes de température : nous allons utiliser une CTN, une diode au silicium, une LED rouge et une LED verte.

Afin de pouvoir réaliser notre thermomètre, il faut déterminer la relation entre la valeur lue sur l’entrée analogique 1 de la carte micro:bit (et donc la tension existant entre les bornes de la sonde de température) et la température de la sonde. Pour cela le protocole sera le suivant :

  • Réaliser le montage avec la sonde de température voulue.
  • Mettre de l’eau glacée dans un bécher avec la sonde de température et un thermomètre électronique.
  • Faire chauffer le bécher sous agitation et relever des couples température, lecture Micro:bit.
  • Modéliser la courbe « Température = fn(lecture Micro:bit) » à l’aide de Regressi ou d’Excel.
  • A partir de la formule du modèle, réaliser le programme Python permettant d’afficher la température en continue dans la console série de la Micro:bit.

 

II./ Thermistance CTN :

La sonde de température est donc une thermistance CTN :

La résistance de la CTN à température ambiante est d’environ 1 kΩ, nous utiliserons donc une résistance de 1 kWΩ pour compléter le pont diviseur de tension, afin d’avoir une lecture à mi-échelle à température ambiante.

Afin d’assurer l’étanchéité, on utilise de la gaine thermorétractable, ainsi qu’un point de colle :

La sonde est alors placée dans un bécher plein d’eau glacée, avec un agitateur magnétique et la sonde d’un thermomètre :

On utilise le programme Python suivant pour faire les mesures : (on mesure 100 fois très rapidement la valeur de l’entrée analogique 1, puis on fait une moyenne de la valeur lue. Cela permet d’éviter les fluctuations, assez fréquentes).

from microbit import *

print()
print("Appuyez sur le bouton A pour faire une mesure")
print()

while True:
    display.clear()
    if button_a.is_pressed():
        display.show("M")
        print()
        mesure = 0
        N = 100
        for i in range(N):
            lecture = pin1.read_analog()
            mesure += lecture
        resultat = int(mesure / N)
        print("Mesure =", resultat)
        print()
        while button_a.is_pressed():
            pass

On lance l’agitation et on effectue une mesure (en appuyant sur le bouton A de la micro:bit) pour des valeurs particulières de la température (ici tous les 5 °C).

On obtient le tableau de valeurs suivant :

Lecture

Température Θ (en °C) Lecture

Température Θ (en °C)

847

10 801 15
760 20 717

25

672

30 623 35
573 40 522

45

474

50 425 55
381 60 339

65

299

70 264 75

233

80 204

85

180 90 157

95

139

100

On obtient la courbe suivante, qui montre une non-linéarité importante :

La modélisation ne donne rien d’utilisable avec des élèves de seconde. Les mesures ont été réalisées plusieurs fois, avec plusieurs CTN différentes sans amélioration visible.

III./ Utilisation d’une diode :

Après recherche bibliographique, j’ai trouvé un article intéressant de Bruno Mombelli dans le Bulletin de l’Union des Physiciens (BUP n°808 de novembre 1998) : je renvoie le lecteur à cet article pour toute considération théorique.

Dans le montage, on monte comme sonde de température une diode dans le sens passant. La tension mesurée à ses bornes varie en fonction de la température selon une loi simple si on peut considérer que l’intensité qui la traverse est constante (ce qui est le cas dans notre expérience).

1./ Utilisation de la LED rouge :

On réalise le montage en utilisant la LED rouge et on effectue les mesures comme précédemment :

On obtient les valeurs suivantes :

Lecture

Température Θ (en °C) Lecture

Température Θ (en °C)

584

10 580 15
578 20 576

25

572

30 571 35
568 40 565

45

562

50 559 55
557 60 553

65

552

70 548 75
546 80 542

85

539

90 536 95
533 100

Ce qui nous donne la courbe suivante :

La modélisation nous donne l’équation suivante : Θ = –1,792 × lecture + 1057

(avec un coefficient de corrélation très satisfaisant de –0,99893)

Le fait que nous ayons une relation affine entre la valeur lue et la température nous montre qu’il est théoriquement possible de réaliser très simplement notre thermomètre. Cela dit, on relève une difficulté : la tension varie peu aux bornes de la LED sur l’intervalle 10°C – 100°C (dans notre expérience la tension aux bornes de la LED était comprise entre 1,70 V et 1,90 V). Ce qui nous fait donc une variation de 0,20 V pour une différence de température de 90 K, soit 2,2 × 10–3 V·K–1 (valeur cohérente avec les résultats de l’article). Or le CAN de la micro:bit fonctionne sur 10 bits, pour une tension maximum de 3,3 V. On a donc une résolution de 3,3 / 210 = 3,2 × 10–3 V, valeur supérieure à la valeur calculée précédemment. La précision du thermomètre sera donc plus grande que le °C : on affichera donc la température comme un entier, tout chiffre après la virgule n’ayant alors aucune signification.

Cette problématique fait que nous n’utiliserons pas la diode au silicium, car le problème sera encore plus marqué, la pente étant encore plus faible que dans le cas de la LED.

2./ Utilisation de la LED verte :

On réalise le montage en utilisant la LED verte et on effectue les mesures comme précédemment. Il est à noter que comme la LED est branchée dans le sens passant, elle accomplit son rôle de diode électroluminescente en plus de celui de capteur de température :

Valeurs obtenues :

Lecture Température Θ (en °C) Lecture

Température Θ (en °C)

590

10 587 15

586

20 583

25

578 30 575

35

572

40 569 45
567 50 564

55

562

60 560 65
555 70 552

75

549

80 545 85
543 90 540

95

537

100

Courbe correspondante :

La modélisation nous donne l’équation suivante : Θ = –1,695 × lecture + 1011

(avec un coefficient de corrélation de –0,99887)

IV./ Réalisation du thermomètre :

On ne modifie pas le montage, mais on remplace le contenu de la micro:bit par le programme suivant, en modifiant la ligne soulignée, en se servant de la formule donnée par la modélisation (ici on est dans le cas de la LED verte) :

from microbit import *
while True:
    mesure = 0
    N = 100
    for i in range(N):
        lecture = pin1.read_analog()
        mesure += lecture
    resultat = int(mesure / N)
    resultat = int(resultat / 1.2)
    temperature = int(-1.695 * resultat + 1011)
    message = "Température : " + str(temperature) + "°C"
    print(message)
    sleep(5000)

La micro:bit va alors mesurer la valeur de l’entrée analogique 1, et calculer la valeur de la température correspondante en utilisant le modèle, puis l’afficher dans la console série, et ceci toutes les cinq secondes.

La correspondance avec un thermomètre électronique déjà étalonné est très satisfaisante, au vu de la précision du dispositif (légèrement supérieure à 1°C).

V./ Prolongements et améliorations possibles :

  • Il y a plusieurs améliorations possibles, certaines étant déjà évoquées dans l’article de M. Mombelli, comme l’utilisation de montages à amplificateurs opérationnels afin d’obtenir une tension directement proportionnelle à la température. L’amplificateur opérationnel n’étant plus au programme, je pense que ce type de montage n’est pas utilisable avec les élèves de seconde.
  • Le principal problème étant celui de la précision, et celle-ci étant directement reliée à la résolution du CAN, une solution pourrait d’être d’utiliser un CAN plus précis, avec plus de 10 bits. Cela peut être une solution intéressante pour un usage pratique mais cela me semble peu utilisable avec les élèves, du fait de la complexification du montage.
  • Un prolongement possible, et facilement exploitable avec les élèves est la mesure de température à distance, en s’aidant des capacités de communication radio de la micro:bit : ce point sera discuté dans le paragraphe suivant.

VI./ Réalisation d’une station météo avec capteur sans fil :

On trouve dans le commerce un certain nombre de stations météo comportant un (ou plusieurs) capteur(s) extérieur(s), comme ce modèle par exemple :

L’idée est de réaliser un dispositif de ce type à l’aide de deux micro:bits : l’une sera reliée à un ordinateur via la liaison série et jouera le rôle de récepteur. L’autre sera alimentée par piles et comportera notre capteur de température : elle jouera le rôle du capteur – émetteur.

La première micro:bit contiendra le programme suivant :

from microbit import *
import radio

radio.on()
print()
print("Thermomètre à micro:bit")
print("-----------------------")
print()

while True:
    message = radio.receive()
    if message != None:
        print(message)

Ce programme écoute la liaison radio en permanence et affiche tout message reçu dans la console série.

En ce qui concerne la deuxième micro:bit, notre capteur, elle contiendra le deuxième programme :

from microbit import *
import radio

radio.on()

while True:
    mesure = 0
    N = 100
    for i in range(N):
        lecture = pin1.read_analog()
        mesure += lecture
    resultat = int(mesure / N)
    temperature = int(A * resultat + B)
    message = "Température : " + str(temperature) + "°C"
    print(message)
    radio.send(message)
    display.show(Image.HAPPY)
    sleep(100)
    display.clear()
    sleep(4900)

Ce programme lit la valeur de l’entrée analogique 1, la convertit en température en utilisant le modèle voulu (valeurs de A et de B à modifier dans la ligne soulignée), et envoie le résultat par la radio, et ceci toutes les cinq secondes. Les instructions « display » sont uniquement là pour qu’on puisse voir à quel moment la sonde envoie les données : c’est très utile lors de la phase de mise au point, mais en cas d’utilisation pratique, il faudrait les enlever pour augmenter l’autonomie des piles.

ATTENTION : un point important quand on utilise la micro:bit avec des piles : dans le montage « thermomètre », le pont diviseur de tension est alimenté par la broche « 3 V » de la micro-bit. Lorsque la micro:bit est alimentée par le port USB de l’ordinateur, la valeur de cette tension est de 3,3 V, mais elle n’est plus que de 3 V quand on utilise les piles. La valeur lue sur l’entrée analogique sera donc différente pour la même valeur de la température avec les deux modes d’alimentation différents : il faut en tenir compte lors du calibrage du capteur.

Vidéo montrant la procédure d'étalonnage du thermomètre :

Vidéo montrant la mesure de température à distance :

Lien vers le github contenant les ressources du projet : https://github.com/monsieur-peyrot/Themometre-Micro-Bit

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert