Diseño de Filtros Analogicos Con Matlab
Short Description
Diseño de filtros analógicos con Matlab por Susana Canel y Jorge Sinderman...
Description
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
1
Diseño de filtros analógicos con Matlab Ing. Susana Canel (*) e Ing. Jorge Sinderman (**)(*) * Universidad Tecnológica Nacional, Facultad Regional Buenos Aires * * Universidad Nacional de San Martín, Escuela de Ciencia y Tecnología Diseño de filtros analógicos con Matlab by Susana Canel y Jorge Sinderman is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0) License
http://creativecommons.org/licenses/by-nc/3.0/
1. Introducción 1.1 Conceptos básicos Un filtro eléctrico es un cuadripolo, es decir, un circuito con un par de terminales de entrada y otro par de salida, tal que a la salida aparecen selectivamente ciertas frecuencias presentes a la entrada, excluyendo otras. La gama de frecuencias que el filtro deja pasar con poca (idealmente, ninguna) atenuación se conoce con el nombre de banda pasante. La gama de frecuencias que el filtro deja pasar con elevada (idealmente, total) atenuación se denomina banda de rechazo o de supresión. Siendo que la transición entre la banda pasante y la de supresión suele ser gradual, a la zona intermedia se la conoce como banda de transición. Existen diferentes clases de filtros, que corresponde consignar: • Los filtros pasa‐bajos, en los cuales la banda pasante es la gama de frecuencias bajas. • Los filtros pasa‐altos, en los cuales la banda pasante es la gama de frecuencias altas. • Los filtros pasa‐banda, en los cuales la banda pasante es una gama intermedia de frecuencias • Los filtros suprime‐banda, en los cuales la banda de supresión es una gama intermedia de frecuencias. En muchos casos esta gama intermedia rechazada es muy estrecha y el filtro recibe el nombre de muesca (en inglés, notch) Un filtro ideal debería cumplir con las siguientes condiciones. Respecto a la atenuación: 1) La atenuación en la banda pasante debería ser nula. 2) La atenuación en la banda de supresión debería ser total. 3) La banda de transición no debería existir Respecto al desfasaje. 4) En la banda pasante el desfase introducido debería ser proporcional a la frecuencia, de manera que el mismo se presente como un atraso de tiempo igualitario para todas las frecuencias de la banda pasante. Este retraso de tiempo se denomina retardo de grupo. Puede demostrarse que un filtro ideal es irrealizable, no sólo por no poderse satisfacerse simultáneamente las cuatro condiciones antedichas, sino que tampoco son realizables por separado. Es por ello que en la práctica se realizan distintos tipos de filtros que buscan aproximarse al ideal, al menos en una de las condiciones mencionadas. Así encontramos los siguientes tipos de filtros según la “aproximación” buscada: a) filtros Butterworth, si deseamos una banda pasante de máxima planicidad
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
2
b) filtros Chebyshev del tipo 1 si deseamos una máxima atenuación en la banda de supresión (tolerando una ondulación en la banda de paso) c) filtros Bessel (o de Thomson) si deseamos que en la banda pasante la fase sea aproximadamente lineal para tener un retardo de grupo prácticamente constante en esa banda. d) filtros Chebyshev del tipo 2 (o Chebyshev inverso) si deseamos una banda de transición estrecha, tolerando ondulaciones en la banda de supresión e) filtros elípticos (o de Cauer), si deseamos una banda de transición aún más estrecha, tolerando ondulaciones tanto en la banda de paso como en la de supresión Todas estas aproximaciones de denominan racionales pues consisten en sistemas cuya función de transferencia es un cociente entre dos polinomios en s. Se define como orden de un filtro al grado del polinomio denominador. 1.2 Diseño de filtros La presente publicación trata sobre el diseño de filtros, de las diversas clases y de los distintos tipos que se mencionaron en el apartado anterior, para los que determinaremos su función transferencia. Sin perder generalidad, nos limitaremos a los filtros que tengan ganancia unitaria, ya que en el caso de desear otra ganancia, bastará multiplicar la función transferencia que aquí hallemos por el factor deseado de ganancia. Definida la clase de filtro que se ha de diseñar y adoptado el tipo de filtro que mejor se aproxima a nuestro ideal, el diseño del filtro puede continuar de dos maneras distintas. A. Adoptando un orden para el filtro, lo que se hace sobre la base de que la aproximación al ideal es tanto mejor cuanto mayor sea el orden adoptado. B. Adoptando una plantilla con los limitaciones a las atenuaciones que podrá tener el filtro en sus bandas pasante y de supresión (como consecuencia de la cual, surgirá del cálculo el orden a utilizar). A) Caso en el que se fija el orden del filtro. El procedimiento de diseño es el siguiente: • Habiendo ya elegido el orden y el tipo de filtro a diseñar (a lo largo de este apartado usaremos como ejemplo un filtro Chebyshev del tipo 1 con una ondulación de 1 dB en la banda pasante, de orden 3), y cualquiera sea la clase del filtro a realizar (por ejemplo un pasa‐altos), se parte de la función transferencia del llamado prototipo normalizado (un filtro pasa‐bajos de ganancia unitaria, del mismo tipo y orden que el que queremos realizar, y de frecuencia de corte unitaria). Las funciones transferencia de estos prototipos normalizados se encuentran tabuladas en la literatura sobre el tema. En nuestro ejemplo, la función transferencia de un filtro prototipo normalizado Chebyshev de orden 3 con una ondulación de 1 dB en la banda pasante (ejemplo que continuaremos desarrollando en este apartado) es la siguiente:
H (S ) =
•
0,4913 S + 0,9883S 2 + 1,238S + 0,4913 3
Es buena costumbre escribir la variable s de los filtros prototipos normalizados con S mayúscula, para evitar errores al efectuar el próximo paso. definida la o las frecuencias de corte del filtro a realizar (un pasa‐bajos y un pasa‐altos tienen una única frecuencia de corte, pero un pasa‐banda y un suprime banda tienen dos), se parte de la función transferencia del prototipo normalizado y se utilizan ciertas fórmulas de transformación que más abajo se dan ‐ y que toman en cuenta la(s) frecuencia(s) de corte buscada(s) ‐ para determinar la función transferencia del filtro deseado.
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
Para el filtro pasa‐bajos: hágase la sustitución S ⇒ Para el filtro pasa‐altos: hágase la sustitución S ⇒
3
s
ωC ωC
s s 2 + ω C 2ω C 1 Para el filtro pasa‐banda: hágase la sustitución S ⇒ s (ω C 2 − ω C1 ) Para el filtro suprime banda: hágase la sustitución S ⇒
s (ω C 2 − ω C1 ) s 2 + ω C 2ω C 1
Siguiendo con nuestro ejemplo, para el caso de un pasa‐altos con una frecuencia angular de corte de 1000 radianes por segundo, la transformación a utilizar es:
S=
10 3 s
Y resulta:
0,4913
H (S ) =
3
2
⎛ 10 3 ⎞ ⎛ 10 3 ⎞ ⎛ 10 3 ⎞ ⎜⎜ ⎟⎟ + 0,9883⎜⎜ ⎟⎟ + 1,238⎜⎜ ⎟⎟ + 0,4913 s s s ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ 3 s = = 0,9883 3 2 1 3 2 1, 238 3 3 3 s +s 10 + s 10 + 10 0,4913 0,4913 0,4913
( )
=
=
( )
s3 s 3 + 2519,8s 2 + 2,0116 × 10 6 s + 2,0354 × 10 9
Cuyo diagrama de Bode (de magnitudes) es el que sigue, comprobándose que satisface lo requerido: Bode Diagram 0
-10
Magnitude (dB)
-20
-30
-40
-50
-60 2 10
3
4
10
10 Frequency (rad/sec)
Figura 1 – Diagrama de Bode del ejemplo
5
10
4
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
Este método de diseño fue el preferido cuando la no disponibilidad de herramental matemático hacía deseable partir de un prediseño establecido (el prototipo normalizado) que ya incorpora la realización de un cierto cálculo para establecerlo y minimiza el esfuerzo de cálculo (posterior) del diseñador. Pero modernamente la disponibilidad de Matlab vuelve innecesario partir de este filtro intermediario. Pero este método mantiene aún cierta vigencia porque las tablas con los valores de los filtros prototipos normalizados para diferentes tipos de filtros están ampliamente disponibles en la literatura sobre el tema. De todos modos, para apoyar el empleo de este método, Matlab dispone de instrucciones específicas para: a) Funciones para obtener ceros, polos y ganancia de los distintos filtros prototipo normalizados, y a partir de ellas su función transferencia. Ver el apartado 2.1 b) Funciones para transformar filtros prototipo normalizados a pasa‐bajos, pasa‐altos, pasa‐bando y suprime‐banda Ver el apartado 2.3 c) La función besself (ver el apartado 2.5) que permite obtener los ceros, polos y ganancia de de un filtro Bessel pasa‐bajos a partir del número de orden deseado para el filtro y su frecuencia de corte. La última función descripta se justifica porque da soporte al diseño de filtros Bessel que son siempre pasa‐bajos y como los mismos están focalizados en el comportamiento de la fase de la función transferencia, y no tanto en su módulo, no es aplicable para los mismos el método de la plantilla que se describe a continuación. Volveremos en el siguiente apartado para ampliar este tema y considerar al llamado retardo de grupo. B) Caso en el que se fija la platilla del filtro. La plantilla es el gráfico (o el conjunto de valores) que muestra la atenuación máxima tolerada en la banda pasante, la atenuación mínima exigida en la banda de supresión, y las frecuencias límites de cada una de dichas bandas. Así, la figura 2 muestra una plantilla genérica (en el habitual gráfico semilogarítmico con que se representa la respuesta en frecuencia) para el caso de un filtro pasa‐bajos, donde se destacan sus 4 parámetros definitorios: Rp = atenuación máxima permitida en la banda de paso (en decibeles) Rs = atenuación mínima requerida en la banda de atenuación (en decibeles) ωp = frecuencia angular límite de la banda pasante (en radianes por segundo) ωs = frecuencia angular límite de la banda de supresión (en radianes por segundo) |H(jω)| en dB 0 Rp
Rs ω ωp
ωs
Figura 2 – Plantilla de un filtro pasa‐bajos A su vez, la figura 3 muestra la plantilla de un pasa‐altos
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
5
|H(jω)| en dB 0 Rp
Rs ω ωs
ωp
Figura 3 – Plantilla de un filtro pasa‐altos
Las plantillas se pueden realizar también para los filtros pasa‐banda y suprime‐banda, siendo la figura 4 el caso correspondiente a un filtro pasa‐banda (el trazado de la plantilla de un suprime‐ banda es dejado al lector) Nótese la existencia de dos frecuencias (y no una) que fijan los límites de la banda pasante, e idéntica cantidad para la banda de supresión.
|H(jω)| en dB 0 Rp
Rs ωs1
ωp1
ω ωp2
ωs2
Figura 4 – Plantilla de un filtro pasa‐banda
Cuando se parte de la plantilla, el método de diseño reconoce tres pasos: 1) Cálculo del orden necesario para el filtro 2) Cálculo de la(s) frecuencia(s) de corte (en singular para el caso de los filtros pasa‐bajos y pasa‐altos, pero que son dos en el caso de los pasa‐banda y suprime‐banda) 3) Obtención de los polos, ceros y constante (p, z y k) para el filtro deseado. 4) Obtención de la función transferencia zpk del filtro buscado. Matlab tiene funciones para: a) realizar los pasos 1 y 2 simultáneamente. Ver el apartado 2.4 b) realizar el paso 3. Ver el apartado 2.5 c) realizar el paso 4. El lector ya debe estar familiarizado con el uso de Matlab para este propósito, pero igualmente la información sobre cómo realizar este paso se encuentra en el apartado 2.2. Sin embargo, merece un comentario aclaratorio el cálculo que hace de la frecuencia de corte, a la que denomina wn (por ser la frecuencia que emplea en la desnormalización del prototipo normalizado). Para esta aclaración conviene destacar que la definición de “frecuencia de corte” de un filtro se define en forma diferente según la aproximación de que se trate. A saber: a) En los filtros Butterworth, la frecuencia de corte es aquella para la cual la respuesta cae 3
6
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
dB respecto a las frecuencias bajas. b) En los filtros Chebyshev 1, la frecuencia de corte es wp. c) En los filtros Chebyshev 2, la frecuencia de corte es ws d) En filtros elípticos, la frecuencia de corte es wp Adviértase una dificultad en el caso de los filtros con aproximación Butterworth: la plantilla no nos da información sobre la frecuencia de corte (como ocurre en el caso de las aproximaciones Chebyshev y elípticas). La frecuencia de corte puede deducirse de los valores de plantilla sólo después de saber el orden del filtro. Además, hay todo un rango de valores aceptables para la frecuencia de corte. Por ejemplo, para el caso de un filtro pasa‐bajos esos valores límites están dados por la siguiente fórmula.
(10
ωp
Rp / 10
)
−1
0,5 / n
≤ ωC ≤
(10
ωs Rs / 10
)
−1
0 ,5 / n
La existencia de toda una gama de valores posibles para la frecuencia de corte se debe a que el cálculo del número de orden necesario para el filtro suele arrojar un resultado fraccionario, y la adopción del orden es por el entero inmediato superior. Esto hace que la zona de transición resulte más estrecha en la realidad que lo que exige la plantilla. Es así que la adopción para la frecuencia de corte de un valor igual al límite inferior que fija la fórmula anterior hace que el filtro pasa‐bajos resultante cumpla con justeza lo que exige la platilla en el límite superior de la banda de paso, y con holgura los requerimientos en el límite inferior de la banda de supresión. Por el contrario, la adopción como valor de la frecuencia de corte del límite superior de la fórmula anterior hace que el filtro cumpla con justeza lo que exige la platilla en el límite inferior de la banda de supresión, y con holgura los requerimientos en el límite superior de la banda de paso. Algo similar ocurre para las otras aproximaciones. Ya hemos señalado que • En los filtros Chebyshev 1 la frecuencia de corte es wp. • En los filtros Chebyshev 2 la frecuencia de corte es ws • En filtros elípticos, la frecuencia de corte es wp Si bien la propia plantilla nos proporciona directamente en estos casos la frecuencia de corte, Matlab igualmente calcula la frecuencia wn que fija un valor alternativo (y límite) para esa frecuencia. En los ejemplos con que se cierra esta publicación aceptaremos la propuesta de Matlab, pero el lector podrá fácilmente cambiar el listado para optar por otra alternativa. 1.3 Retardo de grupo y filtros Bessel Si se desea que un filtro pasa‐bajos suprima las componentes de frecuencia elevada de una señal, pero tratando de introducir la mínima distorsión en la forma de onda, se requiere que idealmente la transferencia en la banda pasante sea uniforme en magnitud, y que el desfasaje temporal que sufren las distintas componentes de interés sea el mismo para todas. Este desfasaje temporal se denomina retardo de grupo. Si se aplica una onda senoidal de amplitud unitaria a la entrada de un filtro cuya función transferencia a esa frecuencia tiene una magnitud unitaria pero un desfasaje ϕ, la expresión de la salida admite ser escrita : sen (ωt + ϕ ) = sen[ω (t + ϕ / ω )] = sen[ω (t + τ )] Se observa que para que el retardo τ sea una constante independiente de la frecuencia, el desfasaje debe ser proporcional a la frecuencia. Esto exige que la función transferencia de este filtro en la banda pasante deba ser est, una expresión trascendente que es irrealizable porque no se trata de una expresión racional. En los filtros prácticos, sólo puede alcanzarse una aproximación al comportamiento ideal. El retardo de grupo se define como la derivada de la fase con relación a la frecuencia angular,
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
7
cambiada de signo. El mismo puede fácilmente determinarse a partir de los polos y los ceros de la transferencia, como se muestra a continuación. Se notará que siempre es una función racional de la frecuencia
∏ (s − z ) H ( s) = k ∏ (s − p ) m
1 n
i
1
i
con zi = α zi + jβ zi y pi = α pi + jβ pi
Hallando la fase de H ( jω ) : ⎛ ω − β pi ⎞ ⎛ ω − β zi ⎞ n m ⎟ ⎟ + ∑ atan⎜ ϕ (ω ) = −∑1 atan⎜⎜ 1 ⎟ ⎜ ⎟ α α pi zi ⎝ ⎠ ⎝ ⎠ Tg = −
α pi α zi dϕ (ω ) n m = ∑1 2 − ∑ 1 dω α z i + (ω − β z i )2 α 2p + ω − β p i i
(
)
2
De realizar con Matlab el cálculo y la graficación de este retardo, los valores de m y n pueden determinarse simplemente haciendo m=length(z) y n=length(p) Existen varios tipos de filtro diseñados para que su función transferencia racional se aproxime a la ideal trascendente. Por ejemplo, los filtros Bessel, gaussianos, de fase lineal, etc. Por todo lo visto hasta acá, estos filtros sólo se justifican si se usan como pasa‐bajos. Una forma de evaluar el desempeño de un filtro en lo relativo a su retardo de grupo, que no requiere calcular éste, es observar la respuesta del filtro a un escalón. Debido al recorte de las frecuencias altas, la respuesta será también un escalón pero los bruscos cambios de pendiente del escalón de entrada serán reemplazados por suaves codos. Y si el retardo de grupo es satisfactorio, la respuesta será monótona o con un pequeño sobre impulso. Nos limitaremos acá a considerar los filtros Bessel. En ellos el retardo de grupo es bastante constante en la banda pasante, y la planicidad de su graficación en función de la frecuencia se extiende tanto más cuanto más elevado sea el orden del filtro. Su diseño no se hace a partir de la plantilla sino del orden deseado para el filtro según la extensión de la planicidad deseada en el retardo de grupo. Para estos filtros también cabe definir una frecuencia de corte. La misma es aquella en la que se interceptan las asíntotas horizontal y oblicua de su gráfica de Bode de magnitudes en decibeles. Y sólo se corresponde con una atenuación de 3dB cuando el orden del filtro es n=1. La atenuación a esa frecuencia crece a medida que n aumenta. Por ejemplo, ya es de 4,77 dB para n=2 y asciende a 10,12 dB para n=6. Esto se ilustra en las dos figuras que siguen, que muestran la respuesta en frecuencia de filtros Bessel prototipos normalizados de diferente orden y su retardo de grupo.
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
8
Diagrama de Bode de filtros Bessel prototipos normalizados de orden n 10 n=2 n=3 n=4 n=5 n=6
0 -10 -20
Magnitud (dB)
-30 -40 -50 -60 -70 -80 -90 -100 -1 10
0
1
10
2
10
10
Frecuencia (rad/sec)
Figura 5 – Bode de filtros Bessel prototipo normalizados
5 n=2 n=3 n=4 n=5 n=6
4.5 4
t en segundos
3.5 3 2.5 2 1.5 1 0.5 0 -2 10
-1
10
0
10 w en rad/s
1
10
2
10
Figura 6 – Retardo de grupo de filtros Bessel prototipo normalizados 1.4 Ubicación de los polos y ceros en la función transferencia de los filtros que utilizaremos Ye hemos mencionado que las funciones transferencia de los filtros, dada las aproximaciones racionales que empleamos, están dadas como cociente entre dos polinomios en s, la que sabemos que puede ser llevada a la forma zpk que pone en evidencia sus ceros y polos. Claro está que los filtros no escapan a las restricciones que existen, en general, para las funciones transferencia racionales. A saber:
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
9
1) Para que el sistema sea estable, el polinomio denominador solo puede tener raíces (polos) reales negativas y/o raíces complejas conjugadas con parte real negativa. Los polinomios que cumplen esta propiedad se denominan de “Horowitz estricto” y se caracterizan porque todos los coeficientes del polinomio existen (no hay ninguno nulo, decimos que es un polinomio completo) y son todos del mismo signo. Nótese que un polinomio cualquiera que cumpla estas condiciones no necesariamente es un polinomio Horowitz estricto, pero el no cumplimiento de las mismas lo descarta como tal. 2) Para que el sistema sea de fase mínima, el polinomio numerador debe carecer de raíces (ceros) complejas conjugadas con parte real positiva. Pero puede tener raíces en el eje imaginario, incluyendo el origen. Los polinomios que cumplen esta propiedad se denominan de “Horowitz” y se caracterizan porque están completos todos sus coeficientes, o están sólo los de orden par (y completos) o sólo los de orden impar (y completos) y además son todos del mismo signo. Nótese que un polinomio cualquiera que cumpla estas condiciones no necesariamente es un polinomio Horowitz, pero el no cumplimiento de las mismas lo descarta como tal. Pero en el caso de los filtros, encontramos restricciones adicionales. Vale lo siguiente: 1) los ceros (raíces del numerador), si existen, sólo pueden estar en el origen o ser pares imaginarios conjugados. 2) los polos (raíces del numerador) son siempre pares de complejos conjugados salvo en el caso de filtros pasa‐bajos y pasa‐altos de orden impar que poseen un único polo real. La demostración, que no veremos, parte de observar que los filtros Butterworth, Bessel y Chebyshev del tipo 1 son denominados filtros sin ceros porque en su versión pasa‐bajos el numerador de la función transferencia es una constante. Además, si el polinomio denominador es de orden par todos sus polos son complejos conjugados. Y si es de orden impar hay un único polo real. Por su parte, los filtros Chebyshev del tipo 2 y elípticos, tienen una estructura similar pero, aún en su versión pasa‐bajos, tienen pares de ceros imaginarios conjugados. Si se aplican las transformaciones que permiten pasar de un filtro pasa‐bajos a un filtro de otro tipo, se llega, laboriosamente, a demostrar las dos restricciones adicionales mencionadas. 1.4 Implementación del diseño de un filtro En realidad, el proceso de diseño de un filtro no termina con la determinación de su función transferencia. Porque falta la implementación práctica del mismo. Nos interesa particularmente la realización de filtros activos empleando amplificadores operacionales, resistencias y capacitores (pero no inductores). Podemos pensar que, aún sin pasar a la parte material, quedan varios pasos de diseño por realizar. A saber: a) procesar la función transferencia de forma que quede como un producto de formas bicuadráticas, con la posible inclusión de un único factor bilineal pero sólo si se trata de un filtro pasa‐bajos o pasa‐altos de orden impar. b) diseñar un filtro apropiado para cada uno de los factores recién determinados, los que se colocarán en cascada para alcanzar la función transferencia global deseada. No son muy variadas las posibilidades circuitales para implementar una expresión bilineal, pero son muchas las formas de implementar una bicuadrática. entre ellas las llamadas Sallen‐Key y Rauch (que emplean un único amplificador operacional), Fliege (que emplea 2), Ackerberg‐ Mossberg (usa 3 amplificadores operacionales), filtros universales (requieren 4 o más), etc. Esta diversidad, y el hecho que cada una de estas topologías presenta ventajas y desventajas, justifican una publicación separada para presentarlas por lo que no se dará acá mayor detalle. c) simular la operación del circuito antes de su construcción con el fin de determinar si satisface efectivamente los requerimientos, y si se usa apropiadamente el rango de salida de cada amplificador evitando que el mismo entre en saturación o, por el contrario, trabaje con un nivel tan bajo de señal que cobren importancia los ruidos. Si no resulta
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
10
apropiado el uso del rango de salida de los amplificadores, quedan aún posibilidades de mejora porque en los dos pasos anteriores hubo que adoptar varias decisiones que pueden reverse. A saber: cómo realizar el agrupamiento de los ceros con los polos para lograr las expresiones bicuadráticas (o la eventual bilineal), alterar el orden de las mismas al ponerlas en cascada, y reasignar con otro criterio el factor k entre los términos bicuadráticos. Téngase en cuenta que los términos bilineal y bicuadráticos que pueden aparecer, según lo visto en el apartado anterior, tendrán siempre el polinomio numerador incompleto. Efectivamente, un listado completo de los términos factibles son los siguientes: Factores bilineales:
ωC s + ωC
que corresponde a un filtro pasa‐bajos de orden 1, de ganancia unitaria (a frecuencias bajas) y frecuencia de corte (3dB) ωC
s s + ωC
que corresponde a un filtro pasa‐altos de orden 1, de ganancia unitaria (a frecuencias
altas) y frecuencia de corte (3dB) ωC Factores bicuadráticos:
s2 +
ω 02 ω0 Q
+ ω 02
que corresponde a un filtro pasa‐bajos de orden 2, de ganancia unitaria (a
frecuencias bajas), frecuencia natural ω0 y factor de mérito Q
ω0 Q
s2 +
ω0 Q
+ ω 02
que corresponde a un filtro pasa‐banda de orden 2, de ganancia unitaria (a la
frecuencia natural), frecuencia natural ω0 y factor de mérito Q
s2 s2 +
ω0 Q
+ ω 02
que corresponde a un filtro pasa‐altos de orden 2, de ganancia unitaria (a
frecuencias altas), frecuencia natural ω0 y factor de mérito Q
s 2 + ω 02 s2 +
ω0 Q
+ ω 02
que corresponde a un filtro muesca rechaza‐banda de orden 2, de ganancia
unitaria (a frecuencias bajas y altas), frecuencia natural ω0 y factor de mérito Q Todas las expresiones anteriores se suponen conocidas por el lector, pero falta aún mencionar
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
11
otras dos, que merecen algunos comentarios:
s 2 + ω Z2 s + 2
ω0 Q
con
+ω
2 0
ω Z < ω0
Esta función transferencia corresponde a un filtro con una muesca a la frecuencia angular ωZ, pero que a frecuencias altas tiene una transferencia unitaria, mientras que a frecuencias bajas tiene una transferencia menor que 1. Y tanto menor cuanto más baja sea ωZ con respecto a ω0. Este tipo de filtro se denomina muesca pasa‐altos.
s 2 + ω Z2 s + 2
ω0 Q
con
+ω
2 0
ω Z > ω0
Esta función transferencia corresponde a un filtro con una muesca a la frecuencia angular ωZ, pero que a frecuencias altas tiene una transferencia unitaria, mientras que a frecuencias bajas tiene una transferencia mayor que 1. Y tanto mayor cuanto más alta sea ωZ con respecto a ω0. Este tipo de filtro se denomina muesca pasa‐bajos. Y si se necesita su empleo, suele preferirse sacar factor común (ωZ / ω0)2 (que pasa a integrar el factor k) y dejar como expresión bicuadrática la siguiente, que es un filtro muesca pasa‐bajos de ganancia unitaria a frecuencias bajas:
(ω 0 / ω Z ) 2 s 2 + ω 02 s + 2
ω0 Q
+ω
2 0
con
ωZ > ω0
1.5 Filtros pasa‐todo Cuando vimos las diferentes clases de filtro, omitimos intencionalmente la existencia de filtros pasa‐todo, a los que no dedicaremos en esta publicación más detalle que los que presentaremos en este apartado. Son filtros cuya transferencia es unitaria para todas las frecuencias (de allí su denominación) y el cambio de frecuencia sólo afecta a la fase de la transferencia, y no a su magnitud. No son sistemas de fase mínima, y se caracterizan por tener ceros en el semiplano derecho del plano s que son simétricos de los polos que posee en el semiplano izquierdo. Su expresión general es:
A( − s ) A( s ) por ejemplo : s−k s+k H (s) = ±
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
12
2. Funciones Matlab para filtros analógicos
Las funciones de Matlab que se presentan en esta publicación no son todas las funciones para filtros que el programa posee ni están cada una de ellas explicada acá con todas las alternativas sintácticas que Matlab acepta. Por ello, es recomendable consultar la herramienta Filter Design Tool Box del Matlab y para cada una de las funciones explicadas consultar los argumentos y posibilidades usando el comando help. En particular, no se han incluido las funciones aplicables a los filtros digitales, sino sólo a los analógicos.
2.1 Funciones para obtener ceros, polos y ganancia de los distintos filtros prototipo normalizados
Matlab tiene funciones para calcular los ceros, polos y ganancia de filtros prototipos normalizados tanto Butterworth como Chebyshev (tipos 1 y 2), Bessel y Elípticos. Los polos son pares de complejos conjugados, que están acompañados de un polo real si el orden del filtro es impar. Los filtros prototipo normalizados Butterworth, Bessel y Chebyshev tipo 1 carecen de ceros. Y los Chevyshev tipo 2 y los elípticos tienen ceros imaginarios que se presentan como pares conjugados. Matlab suministra los ceros y los polos como vectores, en un orden que no puede asegurarse. Muchas veces es deseable que, por ejemplo, los polos estén ordenados en orden decreciente de parte real. Para ello, al vector con los polos se lo puede procesar con la siguiente sentencia para lograr el orden deseado: p=esort(p) Butterworth [z,p,k] = buttap (n) n: orden del filtro Tratándose de un filtro Butterworth prototipo normalizado, k=1 y no tendrá ceros Chebyshev 1 [z,p,k] = cheb1ap (n,Rp) n: orden del filtro Rp [dB]: atenuación máxima permitida en la banda de paso, en este caso coincide con la ondulación. Tratándose de un filtro Chebyshev 1 prototipo normalizado k es un número real y positivo, igual al producto de todos los polos (cambiado de signo) si n es impar, e igual a dicho producto dividido por 10Rp/20 si n es par. No habrá ceros. Chebyshev 2 [z,p,k] = cheb2ap (n,Rs)
n: orden del filtro Rs [dB]: atenuación mínima permitida en la banda de atenuación, en este caso coincide con la ondulación.
Tratándose de un filtro Chebyshev 2 prototipo normalizado, k es un número real y positivo,
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
13
igual al producto de todos los polos, aunque cambiado de signo si n es impar. Los ceros serán pares imaginarios conjugados Elíptico [z,p,k] = ellipap (n,Rp,Rs) Rp [dB]: atenuación máxima permitida en la banda de paso, en este caso coincide con el valor pico de la ondulación. Rs [dB]: atenuación mínima admisible en la banda de atenuación.
Tratándose de un filtro Elíptico prototipo normalizado k es un número real y positivo, igual al cociente entre el producto de todos los polos dividido por el producto de todos los ceros (cambiado de signo) si n es impar, e igual a dicho cociente dividido por 10Rp/20 si n es par. Los ceros serán pares imaginarios conjugados Bessel [z,p,k] = besselap (n) Tratándose de un filtro Bessel prototipo normalizado, k=1. No tendrá ceros.
2.2 Función para obtener la función transferencia a partir de los ceros, polos y constante de un filtro
H= zpk (z, p, k)
2.3 Transformaciones de filtros prototipo normalizados a pasa‐bajos, pasa‐altos, pasa‐bando y suprime‐banda
Prototipo normalizado a pasa bajo (lowpass to lowpass) [num2, den2] = lp2lp (num1, den1, wc) Transforma el prototipo del filtro pasa bajos num1(S)/den1(S) con frecuencia de corte unitaria a un filtro pasa bajos con frecuencia angular de corte wc. Realiza la transformación:
S⇒
s
ωC
Prototipo normalizado a pasa alto (lowpass to highpass) [num2, den2] = lp2hp (num1, den1, wc) Transforma el prototipo del filtro pasa bajos num1(S)/den1(S) con frecuencia de corte unitaria a un filtro pasa altos con frecuencia angular de corte wc. Realiza la transformación:
S⇒
ωC s
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
14
Prototipo normalizado a pasa banda (lowpass to bandpass) [num2, den2] = lp2bp(num1, den1, wo, B) Transforma el prototipo del filtro pasa bajos num1(S)/den1(S) con frecuencia de corte unitaria a un filtro pasa banda con frecuencia central ω 0 = ω c1 .ω c 2 y ancho de banda B = ω c 2 − ω c1 . Realiza la transformación:
S⇒
sB s + ω 02 2
Prototipo normalizado a suprime‐banda (lowpass to bandstop) [num2, den2] = lp2bs(num1, den1, wo, B) Transforma el prototipo del filtro pasa bajos num1(S)/den1(S) con frecuencia de corte unitaria a un filtro elimina banda con frecuencia central ω 0 = ω c1 .ω c 2 y ancho de banda
B = ω c 2 − ω c1 . Realiza la transformación:
S⇒
s 2 + ω 02 sB
2.4 Funciones que permiten obtener el orden de los filtros para las distintas aproximaciones y tomando en consideración la plantilla adoptada
Butterworth [n, wn] = buttord (wp, ws, Rp, Rs, 's') Devuelve el mínimo orden n y una posible frecuencia normalizadora (el valor extremo que puede tomar la frecuencia de corte para caída de 3dB) para obtener las especificaciones que necesita la función butter(), que se ve más adelante. Es importante reconocer 4 casos diferenciados: Si wp y ws son escalares, y wpws se trata de un filtro pasa‐altos. wn es también un escalar Si wp=[wp1 wp2] y ws=[ws1 ws2] y ws1 R ⇒ω < = ω C2 s C Rs / 10 ⎟ (10 − 1) ( 0,5 / n ) ⎠
∴ ω C1 < ω C < ω C2
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
Listado Matlab % Diseña un filtro pasa bajos Butterworth, con un atenuación máxima de 2db % para las pulsaciones de hasta 2000 r/s y una atenuación mínima de 60dB % para las pulsaciones superiores a 30000 r/s %-------------------------------------------------------------------------% 2.06.12 Susana Canel y Jorge Sinderman ejemplo_0.m %-------------------------------------------------------------------------clc %borra la ventana de comandos clear %borra variables de la memoria clf %borra las figuras wp ws Rp Rs
= = = =
2000; 30000; 2; 60;
%límite de la banda pasante [r/s] %límite de la banda de atenuación [r/s] %atenuación máxima en la banda de paso [dB] %atenuación mínima en la banda de supr.[dB]
%Determinación del orden n nmin=.5*(log10(10^(Rs/10)-1)-log10(10^(Rp/10)-1))/log10(ws/wp); n=ceil(nmin) % redondeamos al entero superior
%Determinación de la gama en que se debe encontrar la frecuencia de corte wc1=wp/(10^(Rp/10)-1)^(.5/n) wc2=ws/(10^(Rs/10)-1)^(.5/n) %Determinación de la ubicación de los polos % en caso de frecuencia de corte unitaria. k=1:n; fi=pi*(2*k-1)/(2*n); p=-sin(fi) + j*cos(fi); p=esort(p).'; % los ordena en orden decreciente de parte real y los encolumna if mod(n,2)==1; % si n es impar p(n)=real(p(n)); % el último polo es real end % Determinación de la función transferencia en los dos casos extremos. % la constante k es el producto de todos los polos, si su número es par % y el producto cambiado de signo si es impar. z=[]; p1= wc1*p; k1=abs(prod(p1)); p2= wc2*p; k2=abs(prod(p2)); disp('transferencia en el caso de usar wc1 como frecuencia de corte'); H1 = zpk(z,p1,k1) disp('transferencia en el caso de usar wc2 como frecuencia de corte'); H2 = zpk(z,p2,k2) %graficación de la magnitud [dB] de las transferencias % comprobando que ambas satisfacen la plantilla Href1=tf(1,10^(Rp/20)); Href2=tf(1,10^(Rs/20)); bodemag(H1,H2,Href1,Href2); legend('min. frec. de corte','max. frec. de corte','Rp max a 2000 rad/s', 'Rs min a 30000 rad/s') grid on;
21
22
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
Resultados que aparecen en la ventana de comandos del Matlab
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
23
Resultado de la figura Bode Diagram 0 -10
Magnitude (dB)
min. frec. de corte -20
max. frec. de corte Rp max a 2000 rad/s
-30
Rs min a 30000 rad/s
-40 -50 -60 -70 -80 -90 -100 1 10
2
10
3
10
4
10
Frequency (rad/sec)
Observación: Se nota que ambas soluciones (y cualquiera intermedia) satisfacen la plantilla.
5
10
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
24
3.2 Ejemplo 1 Se desea diseñar un filtro según las especificaciones que se encuentran en los primeros comentarios del listado que sigue., y que corresponde a un archivo denominado butterworth_lp.m
Listado Matlab % Diseña un filtro pasa bajos Butterworth, con un atenuación máxima de 2db % para las pulsaciones de hasta 2000 r/s y una atenuación mínima de 60dB % para las pulsaciones superiores a 30000 r/s %-------------------------------------------------------------------------% 2.06.12 Susana Canel y Jorge Sinderman butterworth_lp.m %-------------------------------------------------------------------------clc %borra la ventana de comandos clear %borra variables de la memoria clf %borra las figuras wp ws Rp Rs
= = = =
2000; 30000; 2; 60;
%límite de la banda pasante [r/s] %límite de la banda de atenuación [r/s] %atenuación máxima en la banda de paso [dB] %atenuación mínima en la banda de supr.[dB]
%Determinación del orden n y de la frecuencia normalizadora wn [n, wn] = buttord (wp, ws, Rp, Rs, 's') % determinación de polos y ceros [z,p,k] = butter (n, wn, 'low','s'); % transferencia H = zpk(z,p,k) figure(1) pzmap(H,'r') %singularidades en rojo title('Polos y ceros del filtro pasa-bajos Butterworth [r/s]'); sgrid; figure(2) bodemag(H) %grafica la magnitud [dB] de la transferencia title('Respuesta en frecuencia del filtro pasabajos Butterworth'); grid on W=xlim; % valores extremos del eje de frecuencias, que en seguida usaremos % calcula y grafica (con 400 puntos y la misma escala horizontal que bode) % el retardo de grupo y la respuesta al escalón w=logspace(log10(W(1)), log10(W(2)), 400); Tg=zeros(1,400); for i=1:1:n; % cubrimos los n polos; no hay ceros Tg=Tg - real(p(i))./(real(p(i))^2+(w-imag(p(i))).^2); end figure (3) subplot(2,1,1) semilogx(w,Tg) grid on xlabel ('Frecuencia [r/s]'); ylabel ('Retardo de grupo [s]'); title('Retardo de grupo del filtro pasa-bajos Butterworth [s]'); subplot(2,1,2) step (H) grid on
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
25
Resultados que aparecen en la ventana de comandos del Matlab
Resultados que aparecen en las diversas figuras Figura 1
Polos y ceros del filtro pasa-bajos Butterw orth [r/s] 3000 0.7
0.56
0.44
0.32
0.2
0.1
0.84 2000
Imaginary Axis
1000
0.95
3e+003
0
-1000
2.5e+003
2e+003
1.5e+003
1e+003
500
0.95
-2000 0.84 0.7 -3000 -3500
-3000
0.56 -2500
-2000
0.44 -1500
0.32 -1000
0.2 -500
0.1 0
Real Axis
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
26
Figura 2 Respuesta en frecuencia del filtro pasabajos Butterw orth 0 -10 -20 -30 Magnitude (dB)
-40 -50 -60 -70 -80 -90 -100 2 10
3
4
10
5
10
10
Frequency (rad/sec)
Figure 3 -3
Retardo de grupo [s]
1
x 10
Retardo de grupo del filtro pasa-bajos Butterworth [s]
0.5
0 2 10
3
4
10
5
10
10
Frecuencia [r/s] Step Response
Amplitude
1.5
1
0.5
0
0
0.5
1
1.5 Time (sec)
2
2.5
3
3.5 -3
x 10
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
27
Comentarios y Observaciones 1) Se observa que Matlab adopta como valor de la frecuencia de corte (o normalizadora) el valor de wc2 del ejemplo 0 (3000 radianes/s).
2) El mapeo de los polos y ceros muestra que los polos están ubicados en una “circunferencia” cuyo radio es el valor absoluto de los polos (los 3000 radianes/s de wn)
3) La graficación del retardo de grupo muestra que los filtros Butterworth son deficientes en mantener un retardo de grupo constante en la banda de paso, circunstancia que queda evidenciada en la respuesta a un escalón unitario, donde se observa la presencia de un sobreimpulso. Los filtros Chebyshev tienen un comportamiento en este sentido aún más deficiente. Son los filtros Bessel los recomendados cuando se requiere un retardo de grupo constante a lo largo de la banda pasante y una respuesta al escalón sin (o con mínimo) sobreimpulso, como se verá en el ejemplo 2.
4) Por lo visto en el apartado 1.4 conviene procesar la función transferencia que brinda el Matlab. En este caso, y luego de algún redondeo para suprimir cifras no significativas derivadas de la imprecisión de las operaciones se llega a:
H (s) ≅
27000000000 3000 9000000 = × 2 2 (s + 3000) (s + 3000s + 9000000) s + 3000 s + 3000s + 9000000
Se concluye que se requiere un filtro pasa‐bajos de orden 1, ganancia unitaria y frecuencia de corte 3000 rad/s y un filtro pasa‐bajos de orden 2, ganancia unitaria, frecuencia natural 3000 rad/s y Q= 1.
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
28
3.3 Ejemplo 2 Se desea diseñar un filtro según las especificaciones que se encuentran en los primeros comentarios del listado que sigue, y que corresponde a un archivo denominado bessel_lp.m
Listado Matlab % Diseña un filtro pasa bajos Bessel, con wo=3000 [r/s] y de orden 3. % Grafica la respuesta en frecuencia, el retardo de grupo y la respuesta al % escalon unitario %-------------------------------------------------------------------------% 2.06.12 Susana Canel y Jorge Sinderman bessel_lp.m %-------------------------------------------------------------------------clc clear clf wo = 3000; n = 3;
% borra la pantalla de comandos %borra variables en la memoria %borra gráficos %frecuencia de corte en [r/s] %orden
%Transferencia usando la función besself [num,den] = besself(n, wo); disp('Función transferencia hallada usando la función besself') [z,p,k] = tf2zp(num,den); H = zpk(z,p,k) %expresión en forma factorizada figure(1) pzmap(H,'r') %singularidades en rojo title('Polos y ceros del filtro pasa-bajos Bessel'); grid on; figure(2) bodemag(H) %grafica módulo en [dB] title('Respuesta en frecuencia del filtro pasa-bajos Bessel'); grid on W=xlim; % valores extremos del eje de frecuencias, que en seguida usaremos % calcula y grafica (con 400 puntos y la misma escala horizontal que bode) % el retardo de grupo y la respuesta al escalón w=logspace(log10(W(1)), log10(W(2)), 400); Tg=zeros(1,400); for i=1:1:n; % cubrimos los n polos; no hay ceros Tg=Tg - real(p(i))./(real(p(i))^2+(w-imag(p(i))).^2); end figure (3) subplot(2,1,1) semilogx(w,Tg) grid on xlabel ('Frecuencia [r/s]'); ylabel ('Retardo de grupo [s]'); title('Retardo de grupo del filtro pasa-bajos Bessel de orden 3'); subplot(2,1,2) step (H) axis([0 .003 0 1.2]) grid on
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
29
Resultados que aparecen en la ventana de comandos del Matlab
Resultados que aparecen en la diversas figuras Figure 1 Polos y ceros del filtro pasa-bajos Bessel 2500 0.72
0.58
0.44
0.32
1.5e+003
1e+003
0.58
0.44
0.22
0.1
2000 0.86 1500
Imaginary Axis
1000
0.96
500 2.5e+003
0
2e+003
500
-500 -1000
0.96
-1500 0.86 -2000 0.72 -2500 -3000
-2500
-2000
-1500 Real Axis
0.32 -1000
0.22 -500
0.1 0
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
30
Figure 2 Respuesta en frecuencia del filtro pasa-bajos Bessel 0 -10 -20 -30 Magnitude (dB)
-40 -50 -60 -70 -80 -90 -100 2 10
3
4
10
5
10
10
Frequency (rad/sec)
Figure 3 -3
Retardo de grupo [s]
1
x 10
Retardo de grupo del filtro pasa-bajos Bessel de orden 3
0.5
0 2 10
3
4
10 Frecuencia [r/s]
10
Step Response
Amplitude
1
0.5
0
0
0.5
1
1.5 Time (sec)
Comentarios y Observaciones
2
2.5
3 -3
x 10
1) Se observa el muy buen comportamiento de este filtro en lo que al retardo de grupo se refiere. Ello se evidencia tanto en la planicidad del gráfico que lo representa como en el escasamente advertible sobreimpulso que tiene la respuesta al escalón, prácticamente monótona. 2) Procesando la función transferencia dada por Matlab como se recomienda en el apartado 1.4 se llega a:
H (s) =
2825 9558000 × 2 s + 2825 s + 4474s + 9558000
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
31
Compruebe el lector que la implementación de este filtro requiere de una etapa pasa‐bajos de orden 1 con frecuencia de corte 2825 radianes/s y una etapa pasa‐bajos de orden 2 con frecuencia natural de 3092 radianes/s con un Q=0,691
32
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
3.4 Ejemplo 3 Se desea diseñar un filtro según las especificaciones que se encuentran en los primeros comentarios del listado que sigue, y que corresponde a un archivo denominado chevyshev1_hp.m
Listado Matlab % Halla y grafica la función transferencia % de un filtro Chebyshev tipo 1, pasa-altos, % con una ondulación máxima de 1 db desde 10 kHz, % y con una atenuación mayor que 80 dB a frecuencias hasta 2000 Hz. % %-------------------------------------------------------------------------% 2.06.12 Susana Canel y Jorge Sinderman chebyshev1_hp.m %-------------------------------------------------------------------------clc clear clf
%borra la ventana de comandos %borra variables en la memoria %borra gráficos
fs =2e3; fp =1e4; %frecuencias limite en Hz ws = 2*pi*fs ; wp = 2*pi*fp ; %pulsaciones limite en radianes Rp = 1; %ondulación máxima en la banda de paso [dB] Rs = 80; %atenuación mínima en la banda de supresión [dB] % Hallazgo de la función transferencia [n, wn] = cheb1ord(wp, ws, Rp, Rs, 's'); [z, p, k] = cheby1(n, Rp, wn, 'high', 's'); H = zpk(z,p,k) figure(1) pzmap(H,'r') %singularidades en rojo title('Polos y ceros del filtro pasa-banda Chebyshev tipo 1'); grid on; figure(2) bodemag(H) h=gcr; h.AxesGrid.XUnits='Hz'; grid on axis([1e3 1e5 -100 0]) title('Respuesta en frecuencia del filtro pasa-alto Chebyshev tipo 1');
Resultado que aparecen en la ventana de comandos del Matlab
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
33
Figura 1 5
1
Polos y ceros del filtro pasa-banda Chebyshev tipo 1
x 10
0.91
0.83
0.72
0.58
0.4
0.2
0.4
0.2
0.8 0.96 0.6
Imaginary Axis
0.4
0.99
0.2 2e+005
0
1.5e+005
1e+005
5e+004
-0.2 -0.4
0.99
-0.6 0.96 -0.8 0.91 -1 -2.5
0.83 -2
0.72
-1.5
-1
0.58
-0.5
Real Axis
0 5
x 10
Figura 2 Respuesta en frecuencia del filtro pasa-alto Chebyshev tipo 1 0 -10 -20
Magnitude (dB)
-30 -40 -50 -60 -70 -80 -90 -100 3 10
4
10
Frequency (Hz)
5
10
34
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
Comentarios y observaciones 1) En el mapa de polos y ceros no queda claro (porque se produce una superposición) que en el origen de coordenadas hay un cero quíntuple. 2) Procesando la función transferencia
H (s) =
s s2 s2 × 2 × s + 217000 s + 11370s + 3995 × 10 6 s 2 + 68560s + 9196 × 10 6
La función transferencia se puede implementar con un filtro pasa‐altos de orden 1, y dos filtros pasa‐altos de orden 2. Todos de ganancia unitaria a frecuencias altas. Se deja a cargo del lector la determinación de los otros parámetros de cada una de estas etapas
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
35
3.5 Ejemplo 4 Sea que se desea diseñar un filtro según las especificaciones que se encuentran en los primeros comentarios del listado que sigue, y que corresponde a un archivo denominado ellip_lp.m
% Diseña un filtro pasa bajos Butterworth, con un atenuación máxima de 1 db % para las pulsaciones de hasta 2000 r/s y una atenuación mínima de 80dB % para las pulsaciones superiores a 9000 r/s %-------------------------------------------------------------------------% 2.06.12 Susana Canel y Jorge Sinderman ellip_lp.m %-------------------------------------------------------------------------clc %borra la ventana de comandos clear %borra variables de la memoria clf %borra las figuras wp ws Rp Rs
= = = =
2000; 9000; 1; 80;
%límite de la banda pasante [r/s] %límite de la banda de atenuación [r/s] %atenuación máxima en la banda de paso [dB] %atenuación mínima en la banda de supr.[dB]
%Determinación del orden n y de la frecuencia normalizadora wn [n, wn] = ellipord (wp, ws, Rp, Rs, 's') % determinación de polos y ceros [z,p,k] = ellip (n, Rp, Rs, wn, 'low','s') z=j*imag(z); % suprimimos todo vestigio real en los ceros, que son imaginarios % transferencia H = zpk(z,p,k) figure(1) pzmap(H,'r') %singularidades en rojo title('Polos y ceros del filtro pasa-bajos elíptico [r/s]'); sgrid; figure(2) bodemag(H) %grafica la magnitud [dB] de la transferencia title('Respuesta en frecuencia del filtro pasa-bajos elíptico'); grid on axis([100 100000 -120 0]);
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
36
Resultados que aparecen en la ventana de comandos del Matlab
Figuras 4
2.5
Polos y ceros del filtro pasa-bajos elíptico [r/s]
x 10
0.024
0.017
0.0115
0.008
2
0.005 0.0025 2e+004
0.038 1.5e+004
1.5
Imaginary Axis
1
1e+004 0.08 5e+003
0.5 0 -0.5 -1
5e+003 0.08 1e+004
-1.5
1.5e+004 0.038
-2 0.024 -2.5 -700
-600
0.017 -500
0.0115
-400
-300
Real Axis
0.008 -200
2e+004 0.005 0.0025 -1002
004 0
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
37
Respuesta en frecuencia del filtro pasa-bajos elíptico 0
-20
Magnitude (dB)
-40
-60
-80
-100
-120 2 10
3
4
10
10 Frequency (rad/sec)
5
10
Comentarios y Observaciones 1) Se observará que este filtro tiene una banda de transición mucho más estrecha que la del ejemplo 1. Esto es en parte porque es filtro es de mayor orden (4 en vez de 3) pero fundamentalmente a la presencia de una muesca en la banda de rechazo, próxima a la banda pasante, característica del filtro elíptico pasa‐bajos. 2) Procesando la función transferencia, queda:
H ( s ) = 0,8913 ×
0,01364s 2 + 1,148 × 10 6 8223,5 × 10 -3 s 2 + 3,952 × 10 6 × 2 s 2 + 1359s + 1,148 × 10 6 s + 543,3s + 3,952 × 10 6
Esta función transferencia se puede implementar con dos filtros muesca pasa‐bajos, uno de ganancia unitaria a frecuencias bajas y el otro con una ganancia de 0,8913 a dichas frecuencias. Se deja a cargo del lector la determinación de los otros parámetros de cada una de estas etapas. El factor constante que presenta la función transferencia (y que hemos optado por asignarlo como ganancia de una de las etapas) toma en cuenta que, debido a la ondulación a frecuencias bajas, la magnitud de la transferencia a frecuencias cero no es unitaria sino 0,8913 (equivalente a ‐1dB, el valor de Rp)
38
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
3.6 Ejemplo 5 Se desea diseñar un filtro según las especificaciones que se encuentran en los primeros comentarios del listado que sigue, y que corresponde a un archivo denominado chevyshev1_bp.m
Listado Matlab % Diseña un filtro Chebyshev, tipo 1, pasa-banda, % con una ondulación máxima de 1 db entre 5000 y 20000 Hz, % y que presente una atenuación de 80 dB a frecuencias de 500 Hz y 1 MHz. % Grafica la respuesta en frecuencia, y el mapa de polos y ceros %-------------------------------------------------------------------------% 2.05.12 Susana Canel y Jorge Sinderman chebyshev1_bp.m %-------------------------------------------------------------------------clc clear clf
%borra la ventana de comandos %borra variables en la memoria %borra gráficos
fs =[5e2 1e6]; fp =[5e3 2e4]; %frecuencias ws = 2*pi*fs ; wp = 2*pi*fp ; %pulsaciones Rp = 1; %ondulación máxima en la banda de Rs = 80; %atenuación mínima en la banda de
limite en Hz limite en radianes paso [dB] supresión [dB]
[n, wn] = cheb1ord(wp, ws, Rp, Rs, 's'); [z,p,k,] = cheby1(n, Rp, wn, 'bandpass', 's'); H = zpk(z,p,k) %expresión en forma factorizada figure(1) pzmap(H,'r') %singularidades en rojo title('Polos y ceros del filtro pasa-banda Chebyshev tipo 1'); grid on; figure(2) bodemag(H) h=gcr; h.AxesGrid.XUnits='Hz'; grid on axis([1e2 1e6 -120 0]) title('Respuesta en frecuencia del filtro pasa-banda Chebyshev tipo 1');
Resultados que aparecen en la ventana de comandos del Matlab
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
39
Resultados que aparecen en la diversas figuras Figure 1 5
1.5
x 10
Polos y ceros del filtro pasa-banda Chebyshev tipo 1 0.14
1
0.1
0.068
0.048
0.03
0.22
1.4e+005 0.014 1.2e+005 1e+005 8e+004 6e+004
Imaginary Axis
0.5
0.4 4e+004 2e+004
0 2e+004 -0.5
4e+004 0.4 6e+004 8e+004
-1
1e+005
0.22 0.14
-1.5 -2.5
0.1
-2
0.068
-1.5
0.048
0.03
-1
1.2e+005 0.014 1.4e+005
-0.5
0 4
Real Axis
x 10
Figure 2 Respuesta en frecuencia del filtro pasa-banda Chebyshev tipo 1 0
-20
Magnitude (dB)
-40
-60
-80
-100
-120 2 10
3
10
4
10
Frequency (Hz)
5
10
6
10
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
40
Comentarios y Observaciones 1) En el mapa de polos y ceros no queda claro (porque se produce una superposición) que en el origen de coordenadas hay un cero cuádruple. 2) La función transferencia de este filtro se puede implementar de distintas formas. Dos de las varias posibles son: a) transformando la función transferencia en otra del tipo:
ω 01 Q1
H (s) = k s +s 2
ω 02
s
ω 01 Q1
Q2
× +ω
s +s
2 01
2
ω 02 Q2
ω 03
s
Q3
× +ω
s +s
2 02
2
ω 03 Q3
ω 04
s
Q4
× +ω
s +s
2 03
2
ω 04 Q4
s
+ω
2 04
Esta transferencia se corresponde con la conexión serie de 4 filtros de ganancia unitaria pasa‐banda de sintonía escalonada, con el agregado de una constante k para lograr que el filtro total alcance la función transferencia deseada, con ganancia unitaria. b) transformando la función transferencia en otra del tipo:
ω 02
ω ω 01 2 01
H (s) = k s +s 2
Q1
Q2
× +ω
2 01
s +s 2
ω 02 Q2
ω 03
s
Q3
× +ω
2 02
s +s 2
ω 03 Q3
s
s2
× +ω
2 03
s +s 2
ω 04 Q4
+ω
2 04
Esta transferencia se corresponde con la conexión serie de 4 filtros de ganancia unitaria (un pasa‐bajos, 2 pasa‐banda y un pasa‐altos), con el agregado de una constante k (distinta que la del caso anterior) para lograr que el filtro total alcance la función transferencia deseada, con ganancia unitaria.
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
41
3.7 Ejemplo 6 Sea que se desea diseñar un filtro según las especificaciones que se encuentran en los primeros comentarios del listado que sigue., y que corresponde a un archivo denominado elip_sb.m
Listado Matlab % Obtiene y grafica la funcion transferencia de un filtro elíptico suprimebanda, % con una ondulación máxima de 1 db hasta 500 Hz y desde 200 kHz, % y que presenta una atenuación >100dB a frecuencias entre 5 kHz y 20 kHz. %-------------------------------------------------------------------------% 2.06.12 Susana Canel y Jorge Sinderman elip_sb.m %-------------------------------------------------------------------------clc clear clf
%borra la ventana de comandos %borra variables en la memoria %borra gráficos
fp = [5e2 2e5]; fs = [5e3 2e4] ; % frecuencias límite [Hz] wp = 2*pi*fp ; ws = 2*pi*fs ; %pulsaciones límite [r/s] Rp = 1; %ondulación máxima admisible en la banda de paso [dB] Rs = 100; %atenuación mínima admisible en la banda de atenuación [dB] [n, wn] = ellipord(wp, ws, Rp, Rs, 's'); [z,p,k] = ellip(n, Rp, Rs, wn, 'stop', 's'); z=j*imag(z); % suprime la eventual parte real residual H = zpk(z,p,k) %transferencia factorizada figure(1) pzmap(H,'r') %singularidades en rojo title('Polos y ceros del filtro suprime-banda elíptico [r/s]'); sgrid; figure(2) bodemag(H) h=gcr; h.AxesGrid.XUnits='Hz'; grid on axis([1e2 1e6 -140 0]) title('Respuesta en frecuencia del filtro suprime-banda elíptico');
Resultados que aparecen en la ventana de comandos del Matlab
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
42
Figuras 6
2
Polos y ceros del filtro suprime-banda elíptico [r/s]
x 10
0.56
0.42
0.32
0.22
0.14 1.75e+006 0.07 1.5e+006
1.5 0.74
1.25e+006 1e+006
1
7.5e+005
0.9
5e+005
Imaginary Axis
0.5
2.5e+005 0 2.5e+005 -0.5
5e+005 0.9
7.5e+005
-1
1e+006 1.25e+006
-1.5 0.74
1.5e+006 0.56
-2 -16
-14
0.42 -12
-10
0.32 -8
-6
0.14 1.75e+006 0.07
0.22
-2 2
-4
006 0 5
Real Axis
x 10
Respuesta en frecuencia del filtro suprime-banda elíptico 0
-20
Magnitude (dB)
-40
-60
-80
-100
-120
-140 2 10
3
10
4
10
Frequency (Hz)
Comentarios y Observaciones
5
10
6
10
1) Cuatro de los polos están muy cerca del origen, y no se alcanzan a distinguir en el mapa de polos y ceros.
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
43
2) Este filtro se caracteriza por tener ceros imaginarios, causantes de las muescas. Como el proceso de cálculo puede hacer que resulte algún cero con una componente real mínima, fruto de imprecisiones en las operaciones, se ha optado (ver listado del archivo m) por tomar de los ceros sólo su parte imaginaria. 3) La implementación de esta función transferencia, como el lector podrá comprobar, requiere de la conexión en cascada de 4 etapas, dos de ellas muesca pasa‐bajos y las otras dos muescas pasa‐altos. El factor constante que presenta la función transferencia toma en cuenta que debido a la ondulación en la banda pasante, la magnitud de la transferencia a frecuencias cero e infinita no es unitaria sino ‐1dB o, en valores absolutos, 0,8913
44
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
3.8 Ejemplo 7 Sea que se desea diseñar un filtro según las especificaciones que se encuentran en los primeros comentarios del listado que sigue, y que corresponde a un archivo denominado cheby2_sb.m
% Obtiene y grafica la funcion transferencia % de un filtro chebyshev inverso suprime-banda, % con una atenuación máxima de 1 db hasta 500 Hz y desde 200 kHz, % y que presenta una atenuación >80dB a frecuencias entre 5 kHz y 20 kHz. %-------------------------------------------------------------------------% 2.06.12 Susana Canel y Jorge Sinderman cheby2_sb.m %-------------------------------------------------------------------------clc clear clf
%borra la ventana de comandos %borra las variables en la memoria %borra las figuras
fp = [5e2 2e5]; fs = [5e3 2e4] wp = 2*pi*fp ; ws = 2*pi*fs Rp = 1; %atenuación máxima Rs = 80; %atenuación mínima
; % frecuencias límite [Hz] ; %pulsaciones límite [r/s] admisible en la banda de paso [dB] admisible en la banda de atenuación [dB]
[n, wn] = cheb2ord(wp, ws, Rp, Rs, 's'); [z,p,k] = cheby2(n, Rs, wn, 'stop', 's'); z=j*imag(z); % suprimimos todo vestigio real en los ceros, que son imaginarios % transferencia H = zpk(z,p,k) figure(1) pzmap(H,'r') %singularidades en rojo title('Polos y ceros del filtro Chebyshev inverso suprime-banda [r/s]'); sgrid; figure(2) bodemag(H) h=gcr; h.AxesGrid.XUnits='Hz'; grid on axis([1e2 1e6 -120 0]) title('Respuesta en frecuencia del filtro Chebyshev inverso suprime-banda');
Resultados que aparecen en la ventana de comandos del Matlab
Diseño de filtros analógicos con Matlab - Susana Canel y Jorge Sinderman – junio 2012
45
Figuras 6
1
Polos y ceros del filtro pasa-bajos elíptico [r/s]
x 10
0.64 0.8
0.5
0.38
0.28
0.17
0.8 6e+005
0.6
Imaginary Axis
0.4
0.08 8e+005
4e+005 0.94 2e+005
0.2 0 -0.2 -0.4
2e+005 0.94 4e+005
-0.6 -0.8
6e+005 0.8 0.64
-1 -10
-9
0.5
-8
-7
-6
0.38 -5
-4
0.28 -3
0.17 -2
8e+005 0.08 -1
0 5
Real Axis
x 10
Respuesta en frecuencia del filtro Chebyshev inverso suprime-banda 0
-20
Magnitude (dB)
-40
-60
-80
-100
-120 2 10
3
10
4
10
Frequency (Hz)
5
10
6
10
Comentarios y Observaciones La implementación de esta función transferencia, como el lector podrá comprobar, requiere de la conexión en cascada de 4 etapas, dos de ellas muesca pasa‐bajos y las otras dos muescas pasa‐altos.
View more...
Comments