diff --git a/infotro/Eln/README.md b/infotro/Eln/README.md index 5069aa6..632d9d5 100644 --- a/infotro/Eln/README.md +++ b/infotro/Eln/README.md @@ -6,4 +6,5 @@ - [AD/DA](/infotro/Eln/ADDA) - [Sigma / Delta](/infotro/Eln/Sigma-Delta) - [Transformée en Z](/infotro/Eln/Ztransform) -- [Signaux et échantillonnage](/infotro/Eln/SignauxEtEchantillonnage) \ No newline at end of file +- [Signaux et échantillonnage](/infotro/Eln/SignauxEtEchantillonnage) +- [Filtres numériques](/infotro/Eln/filtres_numeriques) \ No newline at end of file diff --git a/infotro/Eln/filtres_numeriques.md b/infotro/Eln/filtres_numeriques.md new file mode 100644 index 0000000..e8cfe1e --- /dev/null +++ b/infotro/Eln/filtres_numeriques.md @@ -0,0 +1,82 @@ +

+Filtres numériques +

+ +----------- + +# Filtres numériques récursifs (IIR) + +Les filtres numériques récursifs (IIR) sont des filtres numériques qui utilisent des rétroactions. +Ils sont basés sur des équations aux différences. +Les filtres récursifs sont utilisés pour des applications où la phase du filtre n'est pas critique. +Ils sont utilisés dans les télécommunications et la régulation. + +Les intérêts des filtres récursifs : +- Leur faible coût en calcul +- Faible retard (télécommunication et la régulation) + +Les inconvénients des filtres récursifs : +- Ils possèdent une phase non-linéaire +- Ils peuvent avoir une instabilité numérique + +Fonction de transfert en $z$ : +$$F(z) = \frac{Y(z)}{U(z)} = \frac{b_{0}+b_{1}z^{-1}+\dots+b_{n}z^{-1}}{1+a_{1}z^{-1}+\dots+a_{n}z^{-n}}$$ +Numérisation par conversion DA et AD d'un filtre analogique : +$$F(z) = (1-z^{-1})Z \left\{ L^{-1}\left[ \frac{F(s)}{s} \right] \right\} $$ +La fonction de transfert en *z* permet ensuite de tirer l'équation aux différences qui servira à réaliser le filtre sous forme d'un algorithme récursif +$$y[k]= b_{n}u[k-n]+ \dots + b_{1}u[k-1]+b_{0}u[k]-a_{n}y[k-n]-\dots-a_{1}y[k-1]$$ + +Si on souhaite connaître la réponse fréquentielle d'un filtre, il suffit de remplacer l'opérateur *z* par sa transformée de Fourier : +$$a\cdot z^{n}=a\cdot \exp(n\cdot s\cdot T_{s})=a\cdot \exp(n\cdot \mathbf{j}\omega T_{s})$$ +$T_{s}$ : La période d'échantillonnage + +Comme l’exponentielle imaginaire est périodique, la réponse fréquentielle d’un filtre numérique est également périodique +de fréquence, et sa représentation se fait dans le domaine de fréquences allant de $0$ à $fs/2$.
+Le gain statique d’un filtre peut être calculé selon : +$$\text{Gain statique d'un filtre} = \lim_{ s \to 0 } F(s) = \lim_{ z \to 1 } F(z)$$ + +> [!NOTE|label:Passage pôle et zéro s ↔ z] +> $$\begin{align} +z&=\exp(s\cdot T_{s}) \\ +s&=\frac{1}{T_{s}\ln(z)} +\end{align}$$ + +![Filtre numérique passe bas ordre 2 - Réponse impulsionnel](medias/filtre_numerique_passe_bas_2-reponse.png ':size=40%') +![Filtre numérique passe bas ordre 2 - Bode](medias/filtre_numerique_passe_bas_2-bode.png ':size=40%') + +## Transformation analogique-numérique +La transformation bilinéaire : transformation de Tustin ou approximation de Padé de premier ordre +$$s = \frac{2}{T_{s}} \frac{z-1}{z+1} \qquad \qquad z = \frac{1+\frac{1}{2}sT_{s}}{1-\frac{1}{2}sT_{s}}$$ + +***Pour un filtre analogique de premier ordre :*** +$$F(s)=\frac{d_{0}+d_{1}s}{c_{0}+c_{1}s} \to F(z) = \frac{b_{1}z^{-1}+b_{0}}{a_{1}z^{-1}+1} $$ +$$ +a_{1} = \frac{c_{0}-\frac{2c_{1}}{T_{s}}}{c_{0}+\frac{2c_{1}}{T_{s}}} +\qquad \qquad +b_{0} = \frac{d_{0}+\frac{2d_{1}}{T_{s}}}{c_{0}+\frac{2c_{1}}{T_{s}}} +\qquad \qquad +b_{1} = \frac{d_{0}-\frac{2d_{1}}{T_{s}}}{c_{0}+\frac{2c_{1}}{T_{s}}} +$$ + +***Pour un filtre analogique de second ordre :*** +$$F(s)=\frac{Y(s)}{U(s)}=\frac{d_{0}+d_{1}s+d_{2}s^{2}}{c_{0}+c_{1}s+c_{2}s^{2}} +\to F(z) = \frac{Y(z)}{U(z)}=\frac{b_{2}z^{-2}+b_{1}z^{-1}+b_{0}}{a_{2}z^{-2+}a_{1}z^{-1}+1} $$ +$$\begin{gather} +C = c_{0}+\frac{2c_{1}}{T_{s}}+\frac{4c_{2}}{T_{s}^{2}} \\ +\\ +a_{1} = \frac{2\left( c_{0}-\frac{4c_{2}}{T_{s^{2}}} \right)}{C} +\qquad \qquad +a_{2} = \frac{ c_{0}-\frac{2c_{1}}{T_{s}}+\frac{4c_{2}}{T_{s^{2}}} }{C} +\qquad \qquad +b_{0} = \frac{d_{0}+\frac{2d_{1}}{T_{s}}+\frac{4d_{2}}{T_{s}^{2}}}{C} \\ +\\ +b_{1} = \frac{2\left( d_{0}-\frac{4d_{2}}{T_{s^{2}}} \right)}{C} +\qquad \qquad +b_{2} = \frac{d_{0}-\frac{2d_{1}}{T_{s}}+\frac{4d_{2}}{T_{s^{2}}}}{C} +\end{gather}$$ + + + + + + diff --git a/infotro/Eln/medias/filtre_numerique_passe_bas_2-bode.png b/infotro/Eln/medias/filtre_numerique_passe_bas_2-bode.png new file mode 100644 index 0000000..a668ee5 Binary files /dev/null and b/infotro/Eln/medias/filtre_numerique_passe_bas_2-bode.png differ diff --git a/infotro/Eln/medias/filtre_numerique_passe_bas_2-reponse.png b/infotro/Eln/medias/filtre_numerique_passe_bas_2-reponse.png new file mode 100644 index 0000000..a655748 Binary files /dev/null and b/infotro/Eln/medias/filtre_numerique_passe_bas_2-reponse.png differ diff --git a/infotro/README.md b/infotro/README.md index e9e2476..8db67e3 100644 --- a/infotro/README.md +++ b/infotro/README.md @@ -17,7 +17,7 @@ - [Sigma / Delta](/infotro/Eln/Sigma-Delta) - [Transformée en Z](/infotro/Eln/Ztransform) - [Signaux et échantillonnage](/infotro/Eln/SignauxEtEchantillonnage) - +- [Filtres numériques](/infotro/Eln/filtres_numeriques) ## [SEm - Système Embarqué](/infotro/SEm/) - [PLA - Programmation en langage assembleur](/infotro/SEm/PLA.md) diff --git a/infotro/_navbar.md b/infotro/_navbar.md index f0aad4e..aa0ae44 100644 --- a/infotro/_navbar.md +++ b/infotro/_navbar.md @@ -12,6 +12,7 @@ * [Sigma / Delta](/infotro/Eln/Sigma-Delta) * [Transformée en Z](/infotro/Eln/Ztransform) * [Signaux et échantillonnage](/infotro/Eln/SignauxEtEchantillonnage) + * [Filtres numériques](/infotro/Eln/filtres_numeriques) * [SEm - Systèmes Embarqués](/infotro/SEm/) * [PLA - Programmation en langage assembleur](/infotro/SEm/PLA.md) * [ASM - Assembleur ARM](/infotro/SEm/ASM.md) \ No newline at end of file