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,
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()
#################################################################################################### 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
# 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 #