Výpočet LQLF filtra
Verzia z 17:33, 4. január 2010, ktorú vytvoril Pf (diskusia | príspevky) (Vytvorená stránka „Category:Simulácie a modelovanie Program je napísany v jazyky Python, je možné ho spustiť v dávkovom alebo v interaktívnom móde. <source lang="python" line> #…“)
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 Vypocet dolnofrekvencneho filtra LQ-LF
8
9 Funkcia pracuje v dvoch modoch
10 - vypocet komponentov filtra
11 - kontrola vlastnosti filtra
12
13 1. Vypocet komponentov filtra
14 Vstupne parametre
15 f,Q,C2,C4,K
16 Vystupne parametre
17 R11, R12, R3
18
19 2. Kontrola parametrov filtra
20 Vstupne parametre
21 f,Q,C2,C4,K,R11, R12, R3
22 Vystupne parametre
23 f (vstupna hodnota f je ignorovana)
24
25 '''
26
27 print '>>><<< Filter LQ-LF'
28 print ' Input data '
29
30 # priamy vypocet filra
31 if r11==0:
32 print ' f = ', f, ' [Hz]'
33 print ' Q = ', q
34 print ' K = ', k
35 print ' C2 = ', c2, ' [nF]'
36 print ' C4 = ', c4, ' [nF]'
37
38 c2=c2*1e-9
39 c4=c4*1e-9
40 s=1.0/(2.0*q*q)*c2/c4
41
42 if s==2.0:
43 print '>>><<< Error:'
44 print ' Value C2 > ',4*q*q*c4 *1e-9, ' [nf]'
45 return
46
47 P=(s-1)+sqrt((s-1)*(s-1)-1)
48 r1=1.0/(2*pi*f*sqrt(P*c2*c4))
49 r3=P*r1
50
51 if k==1:
52 r11=r1
53 r12=1e90
54 else:
55 r11=r1/k
56 r12=r1/(1-k)
57
58 print ' Output data'
59 print ' R11 = ', r11, ' [Ohm]'
60 print ' R12 = ', r12, ' [Ohm]'
61 print ' R3 = ', r3, ' [Ohm]'
62 return
63
64 else: # kontrola parametrov
65 print ' Q = ', q
66 print ' K = ', r12/(r11+r12)
67 print ' C2 = ', c2, ' [nF]'
68 print ' C4 = ', c4, ' [nF]'
69 print ' R11 = ', r11, ' [Ohm]'
70 print ' R12 = ', r12, ' [Ohm]'
71 print ' R3 = ', r3, ' [Ohm]'
72 print ' Output data'
73
74 r1=r11*r12/(r11+r12)
75 c2=c2*1e-9
76 c4=c4*1e-9
77 f=1.0/(2*pi)*1/sqrt(r1*r3*c2*c4)
78 print ' f = ', f, ' [Hz]'
79 return
80
81 #=======================================================================
82 if __name__ == '__main__':
83
84 print sys.argv[1:]
85
86 if len(sys.argv)<5:
87 print ">>><<< LQLF Filter Calculation "
88 print " For parameter calculation use "
89 print " python lqlf.py f Q C2 C4 K"
90 print " or for parameter test"
91 print " python lqlf.py f Q C2 C4 K R11 R12 R3"
92 print ""
93 exit(2)
94 else:
95 p=[0,0,0,0,0,0,0,0]
96 i=0
97 for x in sys.argv[1:]:
98 p[i]=float(x)
99 i=i+1
100 if p[4]==0 : p[4]=1
101 lqlf(p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7])