-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSimulacionesFiltersHPLP.py
88 lines (75 loc) · 3.08 KB
/
SimulacionesFiltersHPLP.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import numpy as np
import matplotlib.pyplot as plt
#import PySpice.Logging.Logging as Logging
#logger = Logging.setup_logging()
from PySpice.Spice.Netlist import Circuit
from PySpice.Unit import *
from PySpice.Spice.BasicElement import *
from PySpice.Spice.HighLevelElement import *
from PySpice.Spice.Simulation import *
from PySpice.Plot.BodeDiagram import bode_diagram
#from PySpiceDvTools.LTSpiceServer import enableLtSpice
from PySpiceDvTools.Filters import *
from AppliancesDetector.Filters import *
circuit = circuit = Circuit('Filter')
circuit.include('Models/BasicOpamp.cir')
circuit.include('Models/AD8619.cir')
circuit.include('Models/TL084.cir')
filter50 = HighPassFilterInverted(opAmpModel='AD8619',Fc=50)
circuit.subcircuit(filter50)
filter2 = LowPassFilterInverted(opAmpModel='AD8619', Fc=350)
circuit.subcircuit(filter2)
filter3 = WideBandPassFilterInverted(opAmpModel='AD8619')
filter3.attach(circuit)
circuit.V('1','5V',circuit.gnd,'5')
circuit.V('2','VRef',circuit.gnd,'2.5')
circuit.SinusoidalVoltageSource('In', 'In', circuit.gnd, amplitude=1)
circuit.X('1',filter50.name,'In','out50','VRef','5V',circuit.gnd)
circuit.X('2',filter2.name,'In','out350','VRef','5V',circuit.gnd)
circuit.X('3',filter2.name,'out50','out','VRef','5V',circuit.gnd)
circuit.X('4',filter3.name,'In','out2','VRef','5V',circuit.gnd)
print(circuit)
simulator = circuit.simulator()
#enableLtSpice(simulator, spice_command='/Applications/LTspice.app/Contents/MacOS/LTspice')
analysis = simulator.ac(start_frequency=10@u_Hz, stop_frequency=5@u_kHz, number_of_points=500, variation='dec')
print('Simulated, Bode plotting...')
figure1 = plt.figure(1, (20, 10))
plt.title("Bode Diagram of a Low-Pass RC Filter")
bode_diagram(axes=(plt.subplot(211), plt.subplot(212)),
frequency=analysis.frequency,
gain=20*np.log10(np.absolute(analysis.out50)),
#gain=np.absolute(analysis.out50),
phase=np.angle(analysis.out50, deg=False),
marker='',
color='blue',
linestyle='-',
)
bode_diagram(axes=(plt.subplot(211), plt.subplot(212)),
frequency=analysis.frequency,
gain=20*np.log10(np.absolute(analysis.out350)),
#gain=np.absolute(analysis.out2),
phase=np.angle(analysis.out350, deg=False),
marker='',
color='red',
linestyle='-',
)
bode_diagram(axes=(plt.subplot(211), plt.subplot(212)),
frequency=analysis.frequency,
gain=20*np.log10(np.absolute(analysis.out)),
#gain=np.absolute(analysis.out2),
phase=np.angle(analysis.out, deg=False),
marker='',
color='magenta',
linestyle='-',
)
bode_diagram(axes=(plt.subplot(211), plt.subplot(212)),
frequency=analysis.frequency,
gain=20*np.log10(np.absolute(analysis.out2)),
#gain=np.absolute(analysis.out2),
phase=np.angle(analysis.out2, deg=False),
marker='',
color='green',
linestyle='-',
)
plt.tight_layout()
plt.show()