Výpočet LQLF filtra
Skočit na navigaci
Skočit na vyhledávání
Program je napísany v jazyky Python, je možné ho spustiť v dávkovom alebo v interaktívnom móde.
1 #!/usr/bin/env python
2 from scipy import *
3 import sys
4
5 def lqlf(f,q,c2,c4, k=1, r11=0, r12=0, r3=0):
6
7 print '>>><<< Filter LQ-LF'
8 print ' Input data '
9
10 # priamy vypocet filra
11 if r11==0:
12 print ' f = ', f, ' [Hz]'
13 print ' Q = ', q
14 print ' K = ', k
15 print ' C2 = ', c2, ' [nF]'
16 print ' C4 = ', c4, ' [nF]'
17
18 c2=c2*1e-9
19 c4=c4*1e-9
20 s=1.0/(2.0*q*q)*c2/c4
21
22 if s>=2.0:
23 print '>>><<< Error:'
24 print ' Value C2 > ',4*q*q*c4 *1e-9, ' [nf]'
25 return
26
27 P=(s-1)+sqrt((s-1)*(s-1)-1)
28 r1=1.0/(2*pi*f*sqrt(P*c2*c4))
29 r3=P*r1
30
31 if k==1:
32 r11=r1
33 r12=1e90
34 else:
35 r11=r1/k
36 r12=r1/(1-k)
37
38 print ' Output data'
39 print ' R11 = ', r11, ' [Ohm]'
40 print ' R12 = ', r12, ' [Ohm]'
41 print ' R3 = ', r3, ' [Ohm]'
42 return
43
44 else: # kontrola parametrov
45 print ' Q = ', q
46 print ' K = ', r12/(r11+r12)
47 print ' C2 = ', c2, ' [nF]'
48 print ' C4 = ', c4, ' [nF]'
49 print ' R11 = ', r11, ' [Ohm]'
50 print ' R12 = ', r12, ' [Ohm]'
51 print ' R3 = ', r3, ' [Ohm]'
52 print ' Output data'
53
54 r1=r11*r12/(r11+r12)
55 c2=c2*1e-9
56 c4=c4*1e-9
57 f=1.0/(2*pi)*1/sqrt(r1*r3*c2*c4)
58 print ' f = ', f, ' [Hz]'
59 return
60
61 #=======================================================================
62 if __name__ == '__main__':
63 if len(sys.argv)<5:
64 print ">>><<< LQLF Filter Calculation "
65 print " For parameter calculation use "
66 print " python lqlf.py f Q C2 C4 K"
67 print " or for parameter test"
68 print " python lqlf.py f Q C2 C4 K R11 R12 R3"
69 print ""
70 exit(2)
71 else:
72 p=[0,0,0,0,0,0,0,0]
73 i=0
74 for x in sys.argv[1:]:
75 p[i]=float(x)
76 i=i+1
77 if p[4]==0 : p[4]=1
78 lqlf(p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7])