Diseño del filtro de paso alto Butterworth

Estoy tratando de diseñar, y luego implementar, un filtro de paso alto Butterworth con una frecuencia de corte de 8kHz y una tasa de caída de 60dB/década.

Para este filtro ω C = 50265.4824 r a d / s (convirtiendo de Hz)

Hasta ahora he determinado el orden del filtro requerido como:

o r d mi r = despegue deseado 20 d B / d mi C a d mi
= 60 d B / d mi C a d mi 20 d B / d mi C a d mi = 3 r d  filtro de orden

Usaré esta ecuación para un filtro de tercer orden de paso bajo normalizado:

H L norte ( s L norte ) = a 0 b 0 + b 1 S L norte + b 2 S L norte 2 + S L norte 3

y he obtenido b norte términos de la siguiente tabla que proviene del análisis de señales y sistemas lineales de GE Carlson:

Coeficientes de filtro

entonces tenemos b 0 = 1 , b 1 = 2 , b 2 = 2

A continuación, quiero transformar la frecuencia de esta función de transferencia en la de un filtro de paso alto, por lo que reemplazaré

S L norte
por
ω C S

con a 0 = b 0 × GRAMO D C = 1 × 1 = 1

Resultando en

H L norte ( ω C S ) = 1 1 + 2 ω C S + 2 ω C 2 S 2 + ω C 3 S 3

Estoy un poco perdido aquí como ahora tenemos S norte términos como 1 sobre en el denominador. Para que la forma de la función de transferencia vuelva a la normalidad, obtuve el mínimo común denominador que luego da:

H L norte ( ω C S ) = S 3 S 3 + 2 ω C S 2 + 2 ω C 2 S + ω C 3

Usando la función de diagrama de Bode en Matlab:

wc = 50265.4824;
num = [1]
den = [1 2*wc 2*wc^2 wc^3]
opts = bodeoptions('cstprefs');
opts.FreqUnits='Hz';
G = tf(num, den)
bode(G,opts), grid;

Diagrama de Bode de la función de transferencia

Claramente, esto no es correcto, ya que lo que se muestra en el gráfico de magnitud es un paso bajo y no un paso alto, por lo que me equivoqué en alguna parte. ¡Cualquier ayuda sería muy apreciada!

quisiste decir filtro de paso bajo y cómo es GDC = 1
Claramente estoy muy confundido. GDC es la ganancia en ω = 0 ? Entonces, para un filtro de paso alto, ¿no queremos ninguna ganancia en 0?
cierto pero muestra la respuesta de un LPF
Estoy seguro de que otros pueden ayudarlo con su ejercicio académico, pero para soluciones prácticas hay mejores formas.
h = tf([1 0 0 0],[1 2 2 1]);

Respuestas (2)

Vale la pena consultar la referencia de MATLAB para funciones de transferencia.

Si desea tener s ^ 3 en el numerador, debe configurar

num = [ 1 0 0 0 ];

Eso te dará 3 ceros en el origen.

h = tf([1 0 0 0],[1 2 2 1]); (MATLAB)

Una mejor manera es usar la herramienta FilterPRO de TI (gratuita) y considerar el orden 8 de Bessel con un amplificador operacional cuádruple. Elija Tolerancias de componente.

Para suministro único, cambie gnd a Vcc/2.

Elija OA de entrada y salida de riel a riel, escale los valores a un rango de 100K y equilibre la entrada R para las corrientes de compensación, si las hay.

ingrese la descripción de la imagen aquí