Výpočet LQLF filtra

Z Kiwiki
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> #…“)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
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 	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])