add IIR filters

This commit is contained in:
Klagarge committed 2024-02-03 12:20:32 +01:00
1 parent 85cf4d28da
commit f436b9de25
6 files changed
+86 -2

No files matched your search

+2 -1
View File
@@ -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)
- [Signaux et échantillonnage](/infotro/Eln/SignauxEtEchantillonnage)
- [Filtres numériques](/infotro/Eln/filtres_numeriques)
+82
View File
@@ -0,0 +1,82 @@
<header><h1>
Filtres numériques
</h1></header>
-----------
# 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$. <br>
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}$$
Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

+1 -1
View File
@@ -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)
+1
View File
@@ -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)