Filtre numérique passe-bas du 1er ordre (pour étudiants 2ème année)
Copier et coller le code ci-dessous dans l'éditeur de Pyzo.
Étudier la fonction filtrage et comprendre la façon dont elle est mise en œuvre.
## Définition de la fonction filtrage
# Trois arguments doivent être donnés pour utiliser cette fonction : signal_brut, fc et h
# Cette fonction aura pour rôle de retourner
un tableau correspondant aux valeurs de signal_brut filtrées à la fréquence de coupure fc (le gain statique du filtre est réglé à K=1 pour ne pas avoir d'amplification du signal)
def filtrage(signal_brut,fc,h):
res = np.copy(signal_brut) # duplication des valeurs
for i in range (1,len(signal_brut)-1): # toutes les valeurs sauf la première et la dernière
res[i+1]=res[i]*(1-h*2*np.pi*fc)+h*2*np.pi*fc*signal_brut[i]# Schema d'Euler implicite
return(res)
Exemple d'utilisation de cette fonction :
# X est le tableau des valeurs brutes
# X_filtre est le tableau des valeurs filtrées avec une fréquence de coupure de 6 kHz et un pas de résolution de 10-3 s
X_filtre = filtrage(X,6000,10^-3)
Exemple :
Plus on diminue la fréquence de coupure du filtre, plus on filtre les bruits de mesures. Cela permet d'obtenir un signal plus lisse et mieux exploitable.
Cependant, l'introduction d'un filtre et l'augmentation de sa constante de temps (dont l'évolution est inversement proportionnelle à celle de sa fréquence de coupure) augmente le temps de réponse de l'ensemble « capteur + filtre », ce qui peut poser des problèmes de retard au niveau de la chaîne d'acquisition et dégrader les performances d'un asservissement qui utilise les données issues de ce capteur.
C'est ce que l'on observe ici sur le signal brut et filtré en sortie d'un capteur soumis à une entrée en échelon (capteur de pesée de l'Hémomixer sur lequel est posé brusquement une masse).