Esempio n. 1
0
libraries_path = os.path.join(os.environ['PySpice_examples_path'], 'libraries')
spice_library = SpiceLibrary(libraries_path)

####################################################################################################

from HP54501A import HP54501A

####################################################################################################

circuit = Circuit('HP54501A CEM')
circuit.include(spice_library['1N4148'])
diode_model = '1N4148'
ac_line = circuit.AcLine('input',
                         'input',
                         circuit.gnd,
                         rms_voltage=230 @ u_V,
                         frequency=50 @ u_Hz)
# circuit.subcircuit(HP54501A(diode_model='1N4148'))
# circuit.X('hp54501a', 'HP54501A', 'input', circuit.gnd)
circuit.C(1, 'input', circuit.gnd, 1 @ u_uF)
circuit.X('D1', diode_model, 'line_plus', 'top')
circuit.X('D2', diode_model, 'scope_ground', 'input')
circuit.X('D3', diode_model, circuit.gnd, 'top')
circuit.X('D4', diode_model, 'scope_ground', circuit.gnd)
circuit.R(1, 'top', 'output', 10 @ u_Ω)
circuit.C(2, 'output', 'scope_ground', 50 @ u_uF)
circuit.R(2, 'output', 'scope_ground', 900 @ u_Ω)

simulator = circuit.simulator(temperature=25, nominal_temperature=25)
analysis = simulator.transient(step_time=ac_line.period / 100,
Esempio n. 2
0
import PySpice
import os
#the purpose of the following code is to clean all
clear = lambda: os.system('cls')
clear()

libraries_path = "~/ngspice/PySpice/examples/libraries"
spice_library = SpiceLibrary(libraries_path)
circuit = Circuit('Memristor Characteristic Curve')
circuit.include(spice_library['MEM_VTEAMN1'])

circuit.X('M1', 'MEM_VTEAMN1', 'out', circuit.gnd, 'state')
ac_line = circuit.AcLine('input',
                         'out',
                         circuit.gnd,
                         rms_voltage=0.0707 @ u_V,
                         frequency=0.0125 @ u_Hz)

simulator = circuit.simulator(temperature=25, nominal_temperature=25)
analysis = simulator.transient(step_time=ac_line.period / 80000,
                               end_time=ac_line.period * 3)
##step time has to be equaled to the real timeo of 1 second
print(circuit)

##figure 1 plot voltage
figure, ax = plt.subplots(figsize=(20, 10))
ax.plot(analysis['out'])
#ax.plot(analysis['out_minus'])
ax.legend(('Vin [V]', 'Vout [V]'), loc=(.8, .8), fontsize=30)
ax.grid()
Esempio n. 3
0
####################################################################################################

libraries_path = os.path.join(os.path.dirname(os.path.dirname(__file__)),
                              'libraries')
spice_library = SpiceLibrary(libraries_path)

####################################################################################################

circuit = Circuit('STM AN1476: Low-Cost Power Supply For Home Appliances')

circuit.include(spice_library['1N4148'])
# 1N5919B: 5.6 V, 3.0 W Zener Diode Voltage Regulator
circuit.include(spice_library['d1n5919brl'])

ac_line = circuit.AcLine('input', 'out', 'in', rms_voltage=230, frequency=50)
circuit.R('load', 'out', circuit.gnd, kilo(1))
circuit.C('load', 'out', circuit.gnd, micro(220))
circuit.X('D1', '1N4148', circuit.gnd, 1)
circuit.D(1, circuit.gnd, 1, model='DIODE1', off=True)
circuit.X('Dz1', 'd1n5919brl', 1, 'out')
circuit.C('ac', 1, 2, nano(470))
circuit.R('ac', 2, 'in', 470, m=1, temperature='{25}')

source = str(circuit)
print(source)

####################################################################################################

parser = SpiceParser(source=source)
bootstrap_circuit = parser.build_circuit()
                              'libraries')
spice_library = SpiceLibrary(libraries_path)

####################################################################################################

#cm# capacitive-half-wave-rectification-pre-zener-circuit.m4

circuit = Circuit('Capacitive Half-Wave Rectification (Pre Zener)')

circuit.include(spice_library['1N4148'])
# 1N5919B: 5.6 V, 3.0 W Zener Diode Voltage Regulator
circuit.include(spice_library['d1n5919brl'])

ac_line = circuit.AcLine('input',
                         circuit.gnd,
                         'L',
                         rms_voltage=230,
                         frequency=50)
circuit.C('in', 'L', 1, nano(330))
circuit.R('emi', 'L', 1, kilo(165))
circuit.R('in', 1, 2, 2 * 47)
circuit.X('D1', '1N4148', 2, 'out')
circuit.C('2', 'out', 3, micro(250))
circuit.R('2', 3, circuit.gnd, kilo(1))
circuit.X('D2', '1N4148', 3, 2)
circuit.X('Dz', 'd1n5919brl', circuit.gnd, 'out')
circuit.C('', circuit.gnd, 'out', micro(250))
circuit.R('load', circuit.gnd, 'out', kilo(1))

# # Fixme: circuit.nodes[2].v, circuit.branch.current
# print circuit.nodes
Esempio n. 5
0
# In[54]:

reset()
net_1 = Net('N1')
net_2 = Net('N2')
# Skidle does not impliment an AcLine equivlent at this time
skidl_circ = generate_netlist()
print(skidl_circ)

# In[55]:

pyspice_circ = Circuit('')
pyspice_circ.AcLine(
    '1',
    'N1',
    'N2',
    #transit sim statments
    rms_voltage=8,
    frequency=5)
print(pyspice_circ)

# In[56]:

netlist_comp_check(skidl_circ, pyspice_circ)

# # Highlevel Elements `PulseMixin` Based

# # Highlevel Elements `ExponentialMixin` Based
#
# ExponentialMixin is the base translation class for exponential shped sources used for transisint simulations. Typicly used for simulating responce to charing and discharing events from capcitor/inductor networks. Pyspice does not include ac arguements that are technicly allowed by ngspice
#