Výpočet LQLF filtra: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
(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> #…“)
 
Riadok 9: Riadok 9:
  
 
def lqlf(f,q,c2,c4, k=1, r11=0, r12=0, r3=0):
 
def lqlf(f,q,c2,c4, k=1, r11=0, r12=0, r3=0):
'''
 
Vypocet dolnofrekvencneho filtra LQ-LF
 
 
Funkcia pracuje v dvoch modoch
 
- vypocet komponentov filtra
 
- kontrola vlastnosti filtra
 
 
1. Vypocet komponentov filtra
 
  Vstupne parametre
 
    f,Q,C2,C4,K
 
  Vystupne parametre
 
    R11, R12, R3
 
 
2. Kontrola parametrov filtra
 
  Vstupne parametre
 
    f,Q,C2,C4,K,R11, R12, R3
 
  Vystupne parametre
 
    f (vstupna hodnota f je ignorovana)
 
   
 
'''
 
 
 
 
print '>>><<< Filter LQ-LF'
 
print '>>><<< Filter LQ-LF'

Verzia zo dňa a času 17:34, 4. január 2010


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 	
64 	print sys.argv[1:]
65 
66 	if len(sys.argv)<5:
67 		print ">>><<< LQLF Filter Calculation "
68 		print "       For parameter calculation use "
69 		print "           python lqlf.py f Q C2 C4 K"
70 		print "       or for parameter test"
71 		print "           python lqlf.py f Q C2 C4 K R11 R12 R3"
72 		print ""
73 		exit(2)
74 	else:
75 		p=[0,0,0,0,0,0,0,0]
76 		i=0
77 		for x in sys.argv[1:]:
78 			p[i]=float(x)
79 			i=i+1
80 		if p[4]==0 : p[4]=1
81 		lqlf(p[0],p[1],p[2],p[3],p[4],p[5],p[6],p[7])