Réaliser une mesure en s'affranchissant du "bruit"
Pour comprendre
Une broche analogique se comporte comme une micro-antenne et est en partie sensible au bruit électro-magnétique ambiant, de même que les capteurs analogiques, etc. Il en résulte une micro-variation aléatoire de la tension mesurée autour de la valeur effective : c'est ce que l'on appelle le bruit.
Ici, nous allons voir comment il est assez facile de s'affranchir de ce phénomène en réalisant la moyenne de n mesures.
Le montage :
Connecter la sortie d'une résistance variable linéaire sur la broche 2 (=X3 sur la pyboard). La résistance variable est connectée entre le 0V et le 3.3V.
Le code
Une mesure est réalisée toutes les 500ms par mémorisation de millis() entre 2 mesure et la mesure convertie en millivolts est affichée simplement dans le terminal. Cette technique permet de libérer le microcontrôleur entre 2 mesures.
# réaliser une mesure en réalisant une moyenne
from upyduino import *
millis0=0 # variable pour mémoriser millis
interval=1000 # intervalle voulu en ms
nbMesures=1000 # nombre de mesures
def setup():
pass
def loop():
global millis0
if millis()-millis0 > interval :
millis0=millis() # RAS millis0
#code exécuté à intervalles réguliers
sommeMesures=0
for i in range(nbMesures): # n mesures
mesure=analogRead(A2)
sommeMesures=sommeMesures+mesure
moyenneMesures=sommeMesures/nbMesures
tension=moyenneMesures*3300/4095
print("{:.2f}".format(moyenneMesures)+" soit ", "{:.2f}".format(tension), " mV. ")
# placer ici le reste du code
# noter que le principe peut être étendu en utilisant plusieurs variables millis0 et interval distinctes
# attention : millis() RAZ au bout de quelques jours
# exécution
setup()
while True:loop()
Même pas mal !
Remarquer comment on peut réaliser un grand nombre de mesure sans difficulté en un temps réduit avec une carte MicroPython. Ici, 1000 mesures sont utilisées pour réaliser la moyenne.
Résultat
Ce qui donne :