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 :