Síntesis de funciones de excitación no disipativas

../_images/logo_UTN.svg

Por Mariano Llamedo Soria

Resumen

Se presentan los métodos de Foster y Cauer para la síntesis de redes no disipativas. Ambos métodos nos permitirán implementar cualquier función de excitación, real y positiva (FRP), en una red eléctrica canónica, es decir, con la menor cantidad posible de componentes.

Introducción a las funciones de excitación no disipativas

Una función de excitación que representa una inmitancia (una impedancia ó admitancia) \(F(s)\) será no disipativa si cumple que:

  • \(F(s)=\frac{P(s)}{Q(s)}\) sea una función real positiva (FRP)

  • \(\Re \{F\}=0\)

La primer condición es necesaria para que la inmitancia sea realizable, ver Apéndice E de libro de Cogollos Borrás, S. para más detalles. La segunda restricción implica que

\[ F = \frac{m_P}{n_Q} \lor F = \frac{n_P}{m_Q} \]

siendo \(m\) la parte par y \(n\) la parte impar de sendos polinomios numerador y denominador (P y Q respect.).

[1] Cogollos Borrás, Santiago. FUNDAMENTOS DE LA TEORÍA DE FILTROS. ISBN: 978-84-9048-443-2

Un teorema de reactancias (1924): la propuesta de Foster

Queda definir la forma propuesta por Foster en A reactance theorem:

\[ F(s)=\frac{P(s)}{Q(s)} = \frac{k_0}{s} + k_\infty.s + \sum_{i=1}^N\frac{2.k_i.s}{s^2+\omega_i^2} \]

donde la inmitancia F puede representarse como una suma de términos, o fracciones simples, que individualmente están asociandas a cada elemento circuital de la red. Teniendo la función \(F(s)\) N polos finitos, la red resultante de la expansión Foster tendrá \(2.N + 2\) componentes. Es decir, los residuos \(k\) serán los valores de los componentes, como se observa que \(k_0\) y \(k_\infty\) serán sendos capacitor e inductor, mientras que cada polo finito cuyo residuo es \(k_i\), se asocian a tanques resonantes L-C. Justamente la frecuencia de resonancia de cada tanque será \(\omega_i\). En los ejemplos siguientes quedará evidenciada esta asociación.

Se comienza por cargar las librerías.

import sympy as sp

# Ahora importamos las funciones de PyTC2

from pytc2.sintesis_dipolo import foster
from pytc2.dibujar import dibujar_foster_serie, dibujar_foster_derivacion
from pytc2.general import print_latex, print_subtitle, a_equal_b_latex_s

# Importante importar símbolos de variables 
from pytc2.general import s

Ahora se definen las funciones que usaremos en los ejemplos

# Sea la siguiente función de excitación
FF = (2*s**4 + 20*s**2 + 18)/(s**3 + 4*s)

print_latex(a_equal_b_latex_s('F(s)', FF))
\[\displaystyle F(s)=\frac{2 s^{4} + 20 s^{2} + 18}{s^{3} + 4 s}\]

Expansión en fracciones simples: Método de Foster

Se procede a la expansión Foster

# Se expande FF a la Foster
k0, koo, ki_wi, _, FF_foster = foster(FF)

print_latex(a_equal_b_latex_s('k_0', k0))

print_latex(a_equal_b_latex_s(r'k_1 = \left[ \frac{1}{ \frac{1}{s. \frac{\omega_i^2}{2.k_i} } + s . \frac{1}{2.k_i} } \right]  = \
                                             \left[ \frac{1}{ \frac{k_0}{s} + s . k_\infty } \right] = \
                                             \left[ k_0, k_\infty \right] = \
                                       \left[ \
                                             \left[ \frac{\omega_1^2}{2k_1}, \frac{1}{2k_1} \right] \
                                       \right]', ki_wi ))

print_latex(a_equal_b_latex_s('k_\infty', koo))


print_latex(a_equal_b_latex_s(a_equal_b_latex_s('F(s)', FF)[1:-1], FF_foster ))
\[\displaystyle k_0=\frac{9}{2}\]
\[\displaystyle k_1 = \left[ \frac{1}{ \frac{1}{s. \frac{\omega_i^2}{2.k_i} } + s . \frac{1}{2.k_i} } \right] = \ \left[ \frac{1}{ \frac{k_0}{s} + s . k_\infty } \right] = \ \left[ k_0, k_\infty \right] = \ \left[ \ \left[ \frac{\omega_1^2}{2k_1}, \frac{1}{2k_1} \right] \ \right]=\left[ \left[ \frac{8}{15}, \ \frac{2}{15}\right]\right]\]
\[\displaystyle k_\infty=2\]
\[\displaystyle F(s)=\frac{2 s^{4} + 20 s^{2} + 18}{s^{3} + 4 s}=2 s + \frac{15 s}{2 \left(s^{2} + 4\right)} + \frac{9}{2 s}\]

Luego queda solo implementar la inmitancia como impedancia o admitancia. Para ello se dispone de funciones de dibujo de redes:

print_subtitle('Foster serie')

print_latex(a_equal_b_latex_s(a_equal_b_latex_s('Z(s)=F(s)', FF)[1:-1], FF_foster ))

# Tratamos a nuestra función imitancia como una Z
dibujar_foster_serie(k0, koo, ki_wi, z_exc = FF)

Foster serie

\[\displaystyle Z(s)=F(s)=\frac{2 s^{4} + 20 s^{2} + 18}{s^{3} + 4 s}=2 s + \frac{15 s}{2 \left(s^{2} + 4\right)} + \frac{9}{2 s}\]
../_images/ab942494983fa75835eb9fbeea0147ac89ecee59cc352933d6d7ce17205340b3.svg

Como se puede ver, la suma de términos simples, resulta en que cada término será una impedancia asociada en serie. Luego si se asume F(s) como admitancia Y(s), la red resultante estará asociada en paralelo.

print_subtitle('Foster derivación')

print_latex(a_equal_b_latex_s(a_equal_b_latex_s('Y(s)=F(s)', FF)[1:-1], FF_foster ))

# Tratamos a nuestra función imitancia como una Y
dibujar_foster_derivacion(k0, koo, ki_wi, y_exc = FF)

Foster derivación

\[\displaystyle Y(s)=F(s)=\frac{2 s^{4} + 20 s^{2} + 18}{s^{3} + 4 s}=2 s + \frac{15 s}{2 \left(s^{2} + 4\right)} + \frac{9}{2 s}\]
../_images/466c482cb0dd8cd6bde8b502943876d5c92708ee81a977d2fa5ed6733a9a0cb5.svg

Como puede verse, el método de Foster da lugar a redes con \(2.1 + 2 = 4\) componentes reactivos en ambos casos. Se dice que es un método canónico dado que 4 es la menor cantidad de componentes con la que la función F(s) puede ser implementada con elementos pasivos.

Expansión en fracciones continuas: Método de Cauer

Del mismo modo que el método de Foster se sutenta en la expansión en fracciones simples, el de Cauer consiste en la expansión en fracciones continuas. Con la salvedad que puede representarse la expansión mediante residuos \(k_0\) y \(k_\infty\).

\[ F(s)= \frac{k_0}{s} + \frac{1}{ \frac{k_1}{s} + \frac{1}{ \frac{k_2}{s} + \cdots } } = k_{\infty,1}.s + \frac{1}{ k_{\infty,2}.s + \frac{1}{ k_{\infty,3}.s + \cdots } } \]

en este caso cualquiera de ambas expansiones da lugar a redes escalera, por ejemplo si se tratara de una impedancia:

\[ Z(s)= \frac{1}{s.C_1} + \frac{1}{ \frac{1}{s.L_1} + \frac{1}{ \frac{1}{s.C_2} + \cdots } } = s.L_1 + \frac{1}{ s.C_1 + \frac{1}{ s.L_2 + \cdots } } \]

o de una admitancia:

\[ Y(s)= \frac{1}{s.L_1} + \frac{1}{ \frac{1}{s.C_1} + \frac{1}{ \frac{1}{s.L_2} + \cdots } } = s.C_1 + \frac{1}{ s.L_1 + \frac{1}{ s.C_2 + \cdots } } \]

se ve claramente como una función de inmitancia da lugar a 4 redes diferentes. Analizaremos la siguiente función de inmitancia

from pytc2.sintesis_dipolo import cauer_LC
from pytc2.dibujar import dibujar_cauer_LC


# Sea la siguiente función de excitación
FF = (2*s**4 + 20*s**2 + 18)/(s**3 + 4*s)

print_latex(a_equal_b_latex_s('F(s)', FF))
\[\displaystyle F(s)=\frac{2 s^{4} + 20 s^{2} + 18}{s^{3} + 4 s}\]

Cauer 1: remociones en \(\infty\)

Se comienza con la primera forma del método, es decir cuando se realizan remociones de los residuos en infinito.

# Implementaremos FF mediante Cauer 1 o remociones continuas en infinito
koo, F_cauer_oo, rem = cauer_LC(FF, remover_en_inf=True)

print_latex(a_equal_b_latex_s(a_equal_b_latex_s('F(s)', FF)[1:-1], F_cauer_oo ))

# Tratamos a nuestra función inmitancia como una Z
dibujar_cauer_LC(koo, z_exc = F_cauer_oo)

# Tratamos a nuestra función inmitancia como una Y
dibujar_cauer_LC(koo, y_exc = F_cauer_oo)
\[\displaystyle F(s)=\frac{2 s^{4} + 20 s^{2} + 18}{s^{3} + 4 s}=2 s + \frac{1}{\frac{s}{12} + \frac{1}{\frac{24 s}{5} + \frac{36}{5 s}}}\]
../_images/6753f58e805b6a00b47f1fc4be07eee07249dc4c4e71948fe7834b8103e34c91.svg../_images/7ca719533575bd012c8d4249337135158368cfd225a1f634dc5f805924cb5b4e.svg

Se observa, como es de esperarse, que interpretar la inmitancia como impedancia o admitancia utilizando el mismo método, Cauer 1 en este caso, da lugar a redes duales.

Cauer 2: remociones en 0 o DC

Repetimos ahora para remociones de los residuos en 0 Hz, obtendremos dos redes también duales.

# Implementaremos F mediante Cauer 2 o remociones continuas en cero
k0, F_cauer_0, rem = cauer_LC(FF, remover_en_inf=False)

print_latex(a_equal_b_latex_s(a_equal_b_latex_s('F(s)', FF)[1:-1], F_cauer_0 ))

# Tratamos a nuestra función inmitancia como una Z
dibujar_cauer_LC(k0, z_exc = F_cauer_0)

# Tratamos a nuestra función inmitancia como una Y
dibujar_cauer_LC(k0, y_exc = F_cauer_0)
\[\displaystyle F(s)=\frac{2 s^{4} + 20 s^{2} + 18}{s^{3} + 4 s}=\frac{1}{\frac{1}{\frac{62 s}{15} + \frac{961}{30 s}} + \frac{8}{31 s}} + \frac{9}{2 s}\]
../_images/b0771684f00674010459354c27b9dd13652c798b281f21c3e51d8e321b199522.svg../_images/d1050b7f3ddb932a2f1ab5a4babaf33fe62062f1e0fe7d149f533c232579e509.svg

Ambas redes duales, tienen características en común como ser que ambas tienen capacitores en serie e inductores en derivación. Esto contrasta con las redes halladas mediante Cauer 1, donde observamos lo contrario: inductores en serie y capacitores en derivación. Está claro que Cauer 1 da lugar a redes que, en caso que imaginemos un puerto de salida en el extremo derecho de la red, serían filtros pasabajo, mientras que sintetizar una red mediante Cauer 2 da lugar a una red escalera pasa-altos.

Finalmente, decir que habrá redes que al tener la misma función de exitación, cargarán de forma idéntica al puerto de entrada, pero en caso de asumir una eventual transferencia respecto a un puerto en el otro extremo de la red, la transferencia será complementaria (pasabajo-pasaalto):

# Tratamos a nuestra función inmitancia como una Z
dibujar_cauer_LC(koo, z_exc = F_cauer_oo)

# Tratamos a nuestra función inmitancia como una Z
dibujar_cauer_LC(k0, z_exc = F_cauer_0)
../_images/7d4966f0cab41f5e3a870332d597efba195e590f9463675094ec4b3d2f3b3af4.svg../_images/69782a7d82fe34bf3eeadc659d5796eff87a5986dbbcd307cf0ae88748d01162.svg