Mesure du niveau d'eau à l'aide d'un microcontrôleur et d'une mesure de constante de temps
Introduction
L'objectif est de tracer une courbe d'étalonnage représentant tau en fonction du niveau d'eau dans lequel est immergé un ensemble de deux tubes d'acier.
La capacité des tubes varie en fonction du niveau d'eau entraînant une variation de la constante de temps du circuit.
Principe de la détection
La sonde est constituée de deux tubes métalliques coaxiaux qui constituent les armatures d'un condensateur. En l’absence de liquide l'air joue le rôle de l'isolant.
Lorsque le sonde est plongée dans le liquide à une profondeur h, celui-ci n'ayant pas les propriétés isolantes que l'air, la capacité augmente.
La mesure de la constante de temps du condensateur de capacité variable en fonction de hen série avec une résistance, permet de tracer une courbe d'étalonnage du type tau = f(h)
Réalisation pratique
Méthode :
Le principe de la mesure de la constante de temps d'un circuit RC à l'aide d'un micro : bit est décrit sur cette page :
https://physique-chimie.discip.ac-caen.fr/spip.php?article986
Matériel
Resistance de 47 kOhm
Platine
fils de connexion
Microbit
Ensemble de deux tubes
Ici les tubes sont deux portions de shaft de golf.
Un shaft étant conique, on peut à partir d'un shaft "fabriquer" cet ensemble. On utilise du scotch et de la colle chaude pour les fixer et isoler.
Script
Méthode : Principe de fonctionnement
Première étape : On charge pendant 5 secondes le dipôle RC et on relève la valeur de la tension aux bornes du système capacitif.
Deuxième étape : suite à une décharge du condensateur, on mesure le temps nécessaire pour effectuer 63% de la charge.
Script à téléverser à l'aide de Mu dans le microcontroleur.
from microbit import *
# image attente charge condo
D=Image("00000:"
"00900:"
"09990:"
"00900:")
#fleche vers bouton A
A = Image("00900:"
"09000:"
"99999:"
"09000:"
"00900")
'''On charge le condensateur pour
avoir tension max à ses bornes et
on recupère la tension'''
pin0.write_analog(1023)
display.show(D) # affichage image attente
sleep(5000)
tension_max=pin2.read_analog() # tension max
display.show(A)
while True:
if button_a.was_pressed():
print("Decharge du condensateur")
display.show(D)
pin0.write_analog(0)
while pin2.read_analog()>5:
sleep(50)
t0=running_time()
pin0.write_analog(1023)
while pin2.read_analog()<0.63*tension_max:
pass
t1=running_time()
tau = str((t1 - t0))+" ms"
print("tau = ",tau)
display.scroll(tau,delay=500)
sleep(1000)
display.show(A)
Résultats expérimentaux
hauteur d'eau (cm) | 5 | 10,1 | 15 | 20 | 25 |
Tau (ms) | 57 | 129 | 281 | 555 | 918 |
53 | 142 | 264 | 544 | 904 | |
46 | 143 | 277 | 535 | 903 | |
40 | 143 | 270 | 541 | 867 | |
52 | 143 | 290 | 550 | 908 | |
44 | 138 | 275 | 549 | 951 | |
45 | 142 | 275 | 546 | 914 | |
59 | 146 | 288 | 571 | 916 | |
61 | 148 | 299 | 583 | 888 | |
49 | 141 | 299 | 581 | 924 | |
Moyenne | 51 | 142 | 282 | 556 | 951 |