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
