Computing Pi-Filters and Pi-Couplers

Contributions to this software library are always welcome. Please ensure that you post program listings rather than .raw files. They give a reasonable idea of what your program does without having to load them into a DM42 and you can also include comments in your code. Check out the following link for a decoder/encoder: https://technical.swissmicros.com/decoders/dm42/

You can then copy/paste the listing and post it in "code" tags.
Post Reply
Kibabalu
Posts: 15
Joined: Sat Apr 03, 2021 2:36 pm

Computing Pi-Filters and Pi-Couplers

Post by Kibabalu »

Pi filters and Pi couplers are well-known and common basic circuits in electrical engineering. They are used for passive filtering up to impedance matching between HF components. This is all feasible with just one basic structure. The name of the structure is derived from this, since the components are arranged in the form of a greek Pi.

In this contribution calculation programs for the calculation and dimensioning of Pi filters and Pi couplers are presented.

The first calculation program is used to dimension a Pi filter. It uses an equation solver and solves for the component values ​​or the cutoff frequency:

pi_filter_struc-2.png
pi_filter_struc-2.png (7.91 KiB) Viewed 1699 times

\(f_{\text{c}}= \frac{1}{2\cdot\pi\sqrt{L\cdot C}}\)


The second program calculates the component values ​​for a Pi coupler doing the impedance matching for a given source and load impedance:

pi_coupler_3.png
pi_coupler_3.png (11.16 KiB) Viewed 1699 times

\(C_1=\frac{2\cdot Q}{2\cdot \pi\cdot f_0\left(R_1+\sqrt{R_1\cdot R_2}\right)}\\

C_2=\frac{2\cdot Q}{2\cdot \pi\cdot f_0\left(R_2+\sqrt{R_2\cdot R_2}\right)}\\

L=\frac{R_1+R_2+2\cdot\sqrt{R_1\cdot R_2}}{4\cdot \pi \cdot f_0 \cdot Q}\\

Q=\pi\cdot f_0\cdot C_1\left(R_1+\sqrt{R_1\cdot R_2}\right)=\pi\cdot f_0\cdot C_2\left(R_2+\sqrt{R_1\cdot R_2}\right)
\)


The results are stored in the X, Y and Z registers and additionally inside the memory variables C1, C2 and L for further computations


Example for a impedance matching:

Consider a high-impedance antenna that has to be matched to a low-impedance receiver. The impedance of the antenna is Z1= 2.5kOhm and that of the receiver is Z2 = 50Ohm. This is a typical scenario when operating an end-fed antenna on a shortwave receiver. The carrier frequency is 50MHz and the Q of the coupling resonator should be 15.

After typing in the values for carrier frequency f, impedances Z1, impedance Z2, and Q the capacitor value C1, capacitor value C2, and inductor value L is computed to

\(C_1=33,46\textrm{pF}\,\,\,\longrightarrow\,\,\,\text{Z register}\,\,\,\longrightarrow\,\,\,\text{MVAR C1 }\\

C_2=236,63\textrm{pF}\,\,\,\longrightarrow\,\,\,\text{Y register}\,\,\,\longrightarrow\,\,\,\text{MVAR C2 }\\

L=345,59\textrm{nH}\,\,\,\longrightarrow\,\,\,\text{X register}\,\,\,\longrightarrow\,\,\,\text{MVAR L }\)


pi_cpl_iq_freq.png
pi_cpl_iq_freq.png (116.1 KiB) Viewed 1699 times

The LTSPICE simulation shows that the coupler seems to work, at least the resonant frequency matches the carrier frequency (see picture with the frequency response: solid line -> gain, dotted line -> phase). The resulting impedance matching is quite good, but not perfect, even in simulation. During the derivation of the above equations you have to introduce some approximations. That's the reason for the non-perfect impedance matching. But for practical use cases the matching result is more than sufficient:

\(P_1=6,33328\,\text{mW}\\P_2=5,59267\,\text{mW}\)

resp.

\(P_1=8,01629\,\text{dBm}\\P_2=7,47619\,\text{dBm}\)

Code: Select all

@ LC: LC resonator resp. Pi filter
@
@ computing a LC resonator resp. a Pi filter
@
@ f0 resonant frequency in [Hz]
@ L inductivity in [H]
@ C capacity in [F]
@
@ Frank Kirschbaum, frank.kirschbaumr@gmail.com
@ 2021-03-30: Initial version
@
00 { 84-Byte Prgm }
01 LBL "LC"
02 MVAR "L"
03 MVAR "C"
04 MVAR "f0"
05 VARMENU "LC"

06 CF 21 @ continue program execution after a VIEW instruction
07 STOP
08 ASTO "CONTROL"       @ store the name of the unknown variable in CONTROL
09 PGMSLV ".LC"         @ specify solver routine
10 SOLVE IND "CONTROL"  @ Indirectly specify the variable to be solved
11 VIEW IND "CONTROL"   @ View the solution
12 GTO "LC"             @ return to start

13 LBL ".LC"            @ function to be solved
14 2
15 PI
16 ×
17 RCL "L"
18 RCL "C"
19 ×
20 SQRT
21 ×
22 1/X
23 RCL- "f0"

24 END

Code: Select all

@ computation of a Pi Coupler resp. Collins Filter
@
@ Input:
@ resonant frequency f0
@ source impedance Z1
@ load impedance Z2
@ resonator Q factor (if set to 0 a default value of 15 is used 15)
@
@ Output:
@ capacitance C1
@ capacitance C2
@ inductance L
@
@ 01.03.2022 Frank Kirschbaum, frank.kirschbaumr@gmail.com
@
00 { 150-Byte Prgm }
01 LBL "PiCplr"

02 INPUT "f0"
03 INPUT "Z1"
04 INPUT "Z2"
05 MVAR "Q"
06 15
07 STO "Q"
08 INPUT "Q"

09 RCL "Z1"
10 RCL× "Z2"
11 SQRT
12 RCL+ "Z1"
13 RCL× "f0"
14 2
15 ×
16 PI
17 ×
18 1/X
19 RCL× "Q"
20 2
21 ×
22 STO "C1"
23 VIEW "C1"
24 STOP

25 RCL "Z1"
26 RCL× "Z2"
27 SQRT
28 RCL+ "Z2"
29 RCL× "f0"
30 2
31 ×
32 PI
33 ×
34 1/X
35 RCL× "Q"
36 2
37 ×
38 STO "C2"
39 VIEW "C2"
40 STOP

41 RCL "Z1"
42 RCL× "Z2"
43 SQRT
44 2
45 ×
46 RCL+ "Z2"
47 RCL+ "Z1"
48 RCL÷ "Q"
49 RCL÷ "f0"
50 PI
51 ÷
52 4
53 ÷
54 STO "L"
55 VIEW "L"
56 STOP
57 RTN
Post Reply