Esempio n. 1
0
#f# circuit_macros('diode-characteristic-curve-circuit.m4')

#r# Since this circuit is equivalent to a voltage divider, we can write the following relation :
#r#
#r# .. math::
#r#
#r#     V_{out} = \frac{Z_d}{R_1 + Z_d} V_{in}
#r#
#r# where :math:`Z_d` is the diode impedance.

circuit = Circuit('Diode')
circuit.include(spice_library['BAV21'])
# Fixme: Xyce: Device model BAV21: Illegal parameter(s) given for level 1 diode: IKF
source = circuit.V('input', 'in', circuit.gnd, dc_offset)
circuit.R(1, 'in', 'out', 1 @ u_kΩ)
circuit.D('1', 'out', circuit.gnd, model='BAV21')

quiescent_points = []
for voltage in (dc_offset - ac_amplitude, dc_offset, dc_offset + ac_amplitude):
    source.dc_value = voltage
    simulator = circuit.simulator(temperature=25, nominal_temperature=25)
    analysis = simulator.operating_point()
    # Fixme: handle unit
    quiescent_voltage = float(analysis.out)
    quiescent_current = -float(analysis.Vinput)
    quiescent_points.append(
        dict(voltage=voltage,
             quiescent_voltage=quiescent_voltage,
             quiescent_current=quiescent_current))
    print("Quiescent Point {:.1f} mV {:.1f} mA".format(
        quiescent_voltage * 1e3, quiescent_current * 1e3))
Esempio n. 2
0
                              '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()

bootstrap_source = str(bootstrap_circuit)
print(bootstrap_source)
V1 A 0 SINE(0 220 50)
D1 0 N001 Def
D2 A N001 Def
D3 N003 A Def
D4 N003 0 Deg
R1 N001 N002 27.5
L1 N002 N003 0.5
.MODEL Def D
'''

circuit.SinusoidalVoltageSource('1',
                                'A',
                                circuit.gnd,
                                amplitude=220,
                                frequency=50)
circuit.D('1', circuit.gnd, 'N001', model='Def')
circuit.D('2', 'A', 'N001', model='Def')
circuit.D('3', 'N003', 'A', model='Def')
circuit.D('4', 'N003', circuit.gnd, model='Def')
circuit.R('1', 'N001', 'N002', 27.5)
circuit.L('1', 'N002', 'N003', 0.5)
circuit.model('Def', 'D')

print(circuit)

simulator = circuit.simulator()
analysis = simulator.transient(step_time=1 @ u_ms, end_time=1 @ u_s)

current = analysis['V1']
aimax = np.amax(current.data)
aimin = np.amin(current.data)
Esempio n. 4
0
reset()
net_1 = Net('N1')
net_2 = Net('N2')
skidl_D = D(ref='1', model=5, area=5, m=5, pj=5, off=5, temp=5, dtemp=5)
skidl_D['p', 'n'] += net_1, net_2
skidl_circ = generate_netlist()
print(skidl_circ)

# In[7]:

pyspice_circ = Circuit('')
pyspice_circ.D('1',
               'N1',
               'N2',
               model=5,
               area=5,
               m=5,
               pj=5,
               off=5,
               temp=5,
               dtemp=5)
print(pyspice_circ)

# In[8]:

netlist_comp_check(skidl_circ, pyspice_circ)

# ## E            | Voltage-controlled voltage source (VCVS)
# PySpice/PySpice/Spice/BasicElement.py; class VoltageControlledVoltageSource(TwoPortElement)
#
# skidl/skidl/libs/pyspice_sklib.py; name="E"
#