Exemplo n.º 1
0
def test():
    """Test pulse and sin API"""
    step = devices.pulse(v1=0, v2=1, td=500e-9, tr=1e-12, pw=1, tf=1e-12, per=2)
    damped_sin = devices.sin(vo=0, va=1, td=500e-9, freq=15e3, theta=5e3, phi=90.)
    exp = devices.exp(v1=.5, v2=-.05, td1=0, tau1=20e-6, td2=400e-6, tau2=20e-6)

    mycircuit = circuit.Circuit(title="Butterworth Example circuit", filename=None)

    gnd = mycircuit.get_ground_node()

    mycircuit.add_resistor(part_id="R1", n1="n1", n2="n2", value=600)
    mycircuit.add_inductor(part_id="L1", n1="n2", n2="n3", value=15.24e-3)
    mycircuit.add_capacitor(part_id="C1", n1="n3", n2=gnd, value=119.37e-9)
    mycircuit.add_inductor(part_id="L2", n1="n3", n2="n4", value=61.86e-3)
    mycircuit.add_capacitor(part_id="C2", n1="n4", n2=gnd, value=155.12e-9)
    mycircuit.add_resistor(part_id="R2", n1="n4", n2=gnd, value=1.2e3)

    mycircuit.add_vsource("V1", n1="n1", n2='n5', dc_value=3.3333, ac_value=.33333, function=step)
    mycircuit.add_vsource("V2", n1="n5", n2='n6', dc_value=3.3333, ac_value=.33333, function=damped_sin)
    mycircuit.add_vsource("V3", n1="n6", n2=gnd, dc_value=3.3333, ac_value=.33333, function=exp)

    op_analysis = ahkab.new_op(outfile='time_functions')
    ac_analysis = ahkab.new_ac(start=1e3, stop=1e5, points=100, outfile='time_functions')
    tran_analysis = ahkab.new_tran(tstart=0, tstop=1.2e-3, tstep=1e-6, x0=None, outfile='time_functions')

    testbench = testing.APITest('time_functions', mycircuit, 
                                [op_analysis, ac_analysis, tran_analysis],
                                skip_on_travis=True, er=1e-3, ea=1e-5)
    testbench.setUp()
    testbench.test()

    if cli:
        r = ahkab.run(mycircuit, an_list=[op_analysis, ac_analysis, tran_analysis])
        fig = plt.figure()
        plt.title(mycircuit.title + " - TRAN Simulation")
        plt.plot(r['tran']['T'], r['tran']['VN1'], label="Input voltage")
        plt.hold(True)
        plt.plot(r['tran']['T'], r['tran']['VN4'], label="output voltage")
        plt.legend()
        plt.hold(False)
        plt.grid(True)
        #plt.ylim([0,1.2])
        plt.ylabel('Step response')
        plt.xlabel('Time [s]')
        fig.savefig('tran_plot.png')

        fig = plt.figure()
        plt.subplot(211)
        plt.semilogx(r['ac']['w'], np.abs(r['ac']['Vn4']), 'o-')
        plt.ylabel('abs(V(n4)) [V]')
        plt.title(mycircuit.title + " - AC Simulation")
        plt.subplot(212)
        plt.grid(True)
        plt.semilogx(r['ac']['w'], np.angle(r['ac']['Vn4']), 'o-')
        plt.xlabel('Angular frequency [rad/s]')
        plt.ylabel('arg(V(n4)) [rad]')
        fig.savefig('ac_plot.png')
    else:
        testbench.tearDown()
Exemplo n.º 2
0
def PDN_circuit(args):
    logging.basicConfig(filename='PDN.log',filemode='w', level=logging.INFO)
    #args = parser.parse_args()
    if len(args.currents) == 0:
        raise ValueError("input currents should not be empty")
    
    mycircuit = circuit.Circuit(title="PDN circuit")
    gnd = mycircuit.get_ground_node()
    v_nodes = []
    c_nodes = []
    inter_nodes = []
    _NODE_COUNT = args.cores
    ROW_SIZE = args.rsize
    # declare Vdd nodes
    for i in range(_NODE_COUNT):
        v_nodes.append(mycircuit.create_node('nv'+str(i)))
        c_nodes.append(mycircuit.create_node('nc'+str(i)))
        inter_nodes.append(mycircuit.create_node('ni'+str(i)))
    # subcircuit for Metal layer parasitics (MLP) and cores
    # The values to the cores are obtained as command line inputs. 
    for i in range(_NODE_COUNT):
        mycircuit.add_resistor("Rb"+str(i), n1=v_nodes[i] , n2=inter_nodes[i] , value = 40e-3)
        mycircuit.add_inductor("Lb"+str(i), n1=inter_nodes[i] , n2=c_nodes[i] , value = 0.5e-11)
        mycircuit.add_capacitor("Cb"+str(i), n1=c_nodes[i] , n2=gnd , value = 1.6e-6)
        mycircuit.add_isource("Ib"+str(i), n1=c_nodes[i] , n2=gnd , dc_value = args.currents[i]) # 0.1e-3)

        # connection between cores 
        if (i+1)%ROW_SIZE != 0:
            if i%2 == 0:
                mycircuit.add_resistor("Rcc"+str(i), n1=c_nodes[i] ,n2=c_nodes[i+1] ,value = 50e-3)
        if (i+ROW_SIZE) < _NODE_COUNT:
            if (i/ROW_SIZE)%2 == 0:
                mycircuit.add_resistor("Rcc"+str(i+_NODE_COUNT), n1=c_nodes[i] ,n2=c_nodes[i+ROW_SIZE] ,value = 50e-3)
        
        mycircuit.add_vsource("V"+str(i), n1=v_nodes[i], n2=gnd, dc_value=args.voltages[i])
    
    # OP analysis
    op_analysis = ahkab.new_op()
    r = ahkab.run(mycircuit, an_list=[op_analysis])
    # print r['op'].results
    with open('vdd_out.log', 'w') as v_out:
        for i in range(_NODE_COUNT):
            gvdd = r['op'].results['vnv'+str(i)]
            cvdd = r['op'].results['vnc'+str(i)]
            if gvdd > 0:
                F_normal = float((gvdd-0.30)*(gvdd-0.30)/gvdd)
                F_dip = float((cvdd-0.30)*(cvdd-0.30)/cvdd)
                print ("Node %d : current: %f, Grid Vdd is %f, Core Vdd is %f, variation is %f percent" % (i, args.currents[i], gvdd , cvdd, 100*(gvdd-cvdd)/gvdd))
            v_out.write(str(cvdd)+' ')
    return r
Exemplo n.º 3
0
 def setAhkabCircuit(self):
   # Index of various components
   iCapacitor  = 1
   iInductor   = 1
   iResistor   = 1
   iDCSource   = 1
   iISource    = 1
   iTransistor = 1
   # Our ahkab circuit object
   # TODO: Meaningful circuit title
   self.circuit = circuit.Circuit(title="CIRCUIT SIMULATION")
   self.circuit.add_model('ekv', 'nmos', dict(TYPE ='n, VTO=.4, KP=10e-6'))
   gnd = self.circuit.get_ground_node()
   # Add each component to the ahkab circuit
   for i in range(0,self.ntriodes):
     currComponent = self.triodes[i].value.componentType
     if currComonent is Component.TRANSISTOR:
       pass # TODO Write This 
   for i in range(0,self.nedges):
     if self.edges[i].start == 0:
       startNode = gnd
     else:
       startNode  = 'n'+str(self.edges[i].start)
     if self.edges[i].finish == 0:
       finishNode = gnd
     else:
       finishNode  = 'n'+str(self.edges[i].finish)
     componentValue = self.edges[i].value.getValue()
     if currComponent is Component.DCSOURCE:
       componentName = 'V'+str(iDCSource)
       iDCSource += 1
       self.circuit.add_vsource(componentName, n1=startNode, n2=finishNode, dc_value=componentValue)
     elif currComponent is Component.ISOURCE:
       pass # TODO Write This
     else:
       if currComponent is Component.RESISTOR:
         addFunc = self.circuit.add_resistor
         componentName = 'R'+str(iResistor)
         iResistor += 1
       elif currComponent is Component.CAPACITOR:
         addFunc = self.circuit.add_capacitor
         componentName = 'C'+str(iCapacitor)
         iCapacitor += 1
       elif currComponent is Component.INDUCTOR:
         addFunc = self.circuit.add_inductor
         componentName = 'I'+str(iInductor)
         iInductor += 1
       addFunc(componentName, n1=startNode, n2=finishNode, value=componentValue)
   return self.circuit
Exemplo n.º 4
0
def test():
    """Test CCCS API"""
    # The circuit is:
    #test for transresitances
    #va 1 2 type=vdc vdc=.1 vac=1
    #r1 1 0 .5k
    #r2 2 0 .5k
    #h1 3 4 va 5000
    #r3 3 0 1k
    #r4 4 5 1k
    #l1 5 0 10u
    #c1 5 0 10u
    #.op
    #.ac start=50k stop=5e5 nsteps=1000
    #.symbolic
    #.plot ac |v(5)|

    mycircuit = circuit.Circuit(title="Test CCVS API", filename=None)
    gnd = mycircuit.get_ground_node()

    mycircuit.add_resistor(part_id="R1", n1="1", n2=gnd, value=500)
    mycircuit.add_resistor(part_id="R2", n1="2", n2=gnd, value=500)
    mycircuit.add_vsource("VA", n1="1", n2='2', dc_value=0.1, ac_value=1.)
    mycircuit.add_ccvs('H1', n1='3', n2='4', source_id='VA', value=5000)
    mycircuit.add_resistor(part_id="R3", n1="3", n2=gnd, value=1e3)
    mycircuit.add_resistor(part_id="R4", n1="4", n2="5", value=1e3)
    mycircuit.add_inductor(part_id="L1", n1="5", n2=gnd, value=10e-6)
    mycircuit.add_capacitor(part_id="C1", n1="5", n2=gnd, value=10e-6)

    print(mycircuit)

    op_analysis = ahkab.new_op(outfile='hvsource_api', verbose=6)
    symb_analysis = ahkab.new_symbolic(outfile='hvsource_api', verbose=6)
    ac_analysis = ahkab.new_ac(outfile='hvsource_api', start=7957.747,
                               stop=79577.471, points=1000, verbose=6)

    testbench = testing.APITest('hvsource', mycircuit, 
                                [op_analysis, symb_analysis, ac_analysis],
                                skip_on_travis=False, er=1e-3, ea=1e-5)
    testbench.setUp()
    testbench.test()

    if not cli:
        testbench.tearDown()
 def setAhkabCircuit():
     # Index of various components
     iCapacitor = 1
     iInductor = 1
     iResistor = 1
     iDCSource = 1
     # Our ahkab circuit object
     # TODO: Meaningful circuit title
     self.circuit = circuit.Circuit(title="CIRCUIT SIMULATION")
     # Add each component to the ahkab circuit
     for i in range(0, self.nedges):
         currComponent = self.edges[i].value.componentType
         startNodeName = 'n' + str(self.edges[i].start)
         finishNodeName = 'n' + str(self.edges[i].finish)
         componentValue = self.edges[i].value.getValue()
         if currComponent is Compoent.DCSOURCE:
             componentName = 'V' + str(iDCSource)
             iDCSource += 1
             self.circuit.add_vsource(componentName,
                                      n1=startNodeName,
                                      n2=finishNodeName,
                                      dc_value=componentValue)
         else:
             if currComponent is Component.RESISTOR:
                 addFunc = self.circuit.add_resistor
                 componentName = 'R' + str(iResistor)
                 iResistor += 1
             elif currComponent is Component.CAPACITOR:
                 addFunc = self.circuit.add_capacitor
                 componentName = 'C' + str(iCapacitor)
                 iCapacitor += 1
             elif currComponent is Component.INDUCTOR:
                 addFunc = self.circuit.add_inductor
                 componentName = 'I' + str(iInductor)
                 iInductor += 1
             addFunc(componentName,
                     n1=startNodeName,
                     n2=finishNodeName,
                     value=componentValue)
     return self.circuit
Exemplo n.º 6
0
def test():
    """Test CCCS API"""
    # The circuit is:
    # test for transconductors
    # va 1 2 type=vdc vdc=.1
    # r1 1 0 .5k
    # r2 2 0 .5k
    # f1 3 4 va 5
    # r3 3 0 1k
    # r4 4 0 1k
    # .op
    # .symbolic

    mycircuit = circuit.Circuit(title="Test CCCS API", filename=None)
    gnd = mycircuit.get_ground_node()

    mycircuit.add_resistor(part_id="R1", n1="1", n2=gnd, value=500)
    mycircuit.add_resistor(part_id="R2", n1="2", n2=gnd, value=500)
    mycircuit.add_cccs('F1', n1='3', n2='4', source_id='VA', value=5)
    mycircuit.add_resistor(part_id="R3", n1="3", n2=gnd, value=1e3)
    mycircuit.add_resistor(part_id="R4", n1="4", n2=gnd, value=1e3)
    mycircuit.add_vsource("VA", n1="1", n2='2', dc_value=0.1)

    print(mycircuit)

    op_analysis = ahkab.new_op(outfile='fisource_api', verbose=6)
    symb_analysis = ahkab.new_symbolic(outfile='fisource_api', verbose=6)

    testbench = testing.APITest('fisource',
                                mycircuit, [op_analysis, symb_analysis],
                                skip_on_travis=False,
                                er=1e-3,
                                ea=1e-5)
    testbench.setUp()
    testbench.test()

    if not cli:
        testbench.tearDown()










pi=np.pi
file=input("Enter the name of the file + .txt :")
cir=open(file,'r')  #opening the netlist file
out_put=open('out_put.txt','w')
ac_circuit=circuit.Circuit("Ac Circuit")
freq=int(input("Enter the frequency : "))
sympols=[]
impedence=[]
sn=[]
en=[]

for line in cir:
    words=line.split()
    if (words[0][0]=='V'):
        e_ip=words[0]

        n1=words[1]
        n2=words[2]
        ac_value=float(words[3])
        phase=float(words[4])*(pi/180)
Exemplo n.º 8
0
import numpy as np
import ahkab
from ahkab import ahkab, circuit, time_functions

mycircuit = circuit.Circuit(title="Butterworth Example circuit", filename=None)

gnd = mycircuit.get_ground_node()

mycircuit.add_resistor("R1", n1="n1", n2="n2", value=600)
mycircuit.add_inductor("L1", n1="n2", n2="n3", value=15.24e-3)
mycircuit.add_capacitor("C1", n1="n3", n2=gnd, value=119.37e-9)
mycircuit.add_inductor("L2", n1="n3", n2="n4", value=61.86e-3)
mycircuit.add_capacitor("C2", n1="n4", n2=gnd, value=155.12e-9)
mycircuit.add_resistor("R2", n1="n4", n2=gnd, value=1.2e3)

voltage_step = time_functions.pulse(v1=0,
                                    v2=1,
                                    td=500e-9,
                                    tr=1e-12,
                                    pw=1,
                                    tf=1e-12,
                                    per=2)
mycircuit.add_vsource("V1",
                      n1="n1",
                      n2=gnd,
                      dc_value=5,
                      ac_value=1,
                      function=voltage_step)

print mycircuit
Exemplo n.º 9
0
    imag = value * math.sin(angle)
    return complex(real, imag)


def magnsqr(cmplx):
    return pow(cmplx.real, 2) + pow(cmplx.imag, 2)


def con(cmplx):
    return complex(cmplx.real, -cmplx.imag)


cho = 'y'
while cho == 'y':

    mycircuit = circuit.Circuit(title="Circuits Project", filename=None)

    gnd = mycircuit.get_ground_node()

    fileName = ""

    fileName = input("\nPlease Enter File Name(Without .txt) : ")
    outputFile = ""
    outputFile = input("\nPlease Enter Output File Name(Without .txt) : ")
    outputFile = outputFile + ".txt"

    fileName = fileName + ".txt"

    file = open(fileName, "r")

    f = open(outputFile, "w")
Exemplo n.º 10
0
import numpy as np
import math
import ahkab
from ahkab import ahkab, circuit, time_functions

mycircuit = circuit.Circuit(title="TWMZM equivalent circuit", filename=None)

gnd = mycircuit.get_ground_node()

n = 6
for i in range(1, n + 1):

    #Transmission line (Passive segment)
    mycircuit.add_resistor("Rl%s" % (i),
                           n1="n%s" % (3 * i - 2),
                           n2="n%s" % (3 * i),
                           value=1.65)
    mycircuit.add_inductor("Ll%s" % (i),
                           n1="n%s" % (3 * i),
                           n2="n%s" % (3 * i + 1),
                           value=1.27e-10)
    mycircuit.add_capacitor("Cl%s" % (i),
                            n1="n%s" % (3 * i + 1),
                            n2=gnd,
                            value=2.24e-14)
    mycircuit.add_resistor("Gl%s" % (i),
                           n1="n%s" % (3 * i + 1),
                           n2=gnd,
                           value=8e3)

    #Phase shifter (Active segment)
Exemplo n.º 11
0
# -*- coding: UTF-8 -*-

import re
import numpy as np
import math
import matplotlib.pyplot as plt
import pylab
from ahkab import ahkab, circuit, time_functions

file = open("example_3.txt", "r")
mycircuit = circuit.Circuit(title="Example circuit", filename=None)
gnd = mycircuit.get_ground_node()
line_number = 0
Unit_dict = {'f': 1e-15, 'p': 1e-12, 'n': 1e-9, 'u': 1e-6, 'm': 1e-3, 'k': 1e+3, 'meg': 1e+6, 'g': 1e+9, 't': 1e+12}


def unit_transform(value):
    value = value.lower()
    if value[-1] in 'fpnumkgt':
        return float(float(value[:-1]) * Unit_dict[value[-1]])
    else:
        return float(value)


def get_complex_magnitude(complex):
    magnitude = (np.real(complex) ** 2) + (np.imag(complex) ** 2)
    return magnitude


def dc_simulation(MNA, RHS):
    i = MNA.shape[0]
Exemplo n.º 12
0
import ahkab
from ahkab import circuit, printing, time_functions
import matplotlib.pyplot as plt
import pylab as plt
import numpy as np

mycircuit = circuit.Circuit(title="Butterworth Example circuit")

gnd = mycircuit.get_ground_node()

mycircuit.add_resistor("R1", n1="n1", n2="n2", value=600)
mycircuit.add_inductor("L1", n1="n2", n2="n3", value=15.24e-3)
mycircuit.add_capacitor("C1", n1="n3", n2=gnd, value=119.37e-9)
mycircuit.add_inductor("L2", n1="n3", n2="n4", value=61.86e-3)
mycircuit.add_capacitor("C2", n1="n4", n2=gnd, value=155.12e-9)
mycircuit.add_resistor("R2", n1="n4", n2=gnd, value=1.2e3)

voltage_step = time_functions.pulse(v1=0,
                                    v2=1,
                                    td=500e-9,
                                    tr=1e-12,
                                    pw=1,
                                    tf=1e-12,
                                    per=2)
mycircuit.add_vsource("V1",
                      n1="n1",
                      n2=gnd,
                      dc_value=5,
                      ac_value=1,
                      function=voltage_step)
Exemplo n.º 13
0
list_values_E = []

list_names_H = []
list_nodes_H = []
list_values_H = []

list_names_F = []
list_nodes_F = []
list_values_F = []

list_names_G = []
list_nodes_G = []
list_values_G = []

x = input("Enter Your File 📂 Name 😀:")
circ = circuit.Circuit(title="Mostafa's  circuit")
File = open(x + '.txt')
freq = sconverti(File.readline())

for i in File:
    row = File.readline()
    L = row.split()
    # Independent Current Source
    if L[0][0] == "I":
        list_names_I.append(L[0])
        list_nodes_I.append((L[1], L[2]))
        #list_values_I.append(phase(L[4], L[3]))
        if L[1] == "0":
            circ.add_isource(L[0], circ.gnd, concat(L[2]), 0,
                             phase(sconverti(L[3]), sconverti(L[4])))
            continue
Exemplo n.º 14
0
import numpy as np
import sympy
import pickle
import sympy
import pylab
import ahkab
from ahkab import printing, circuit, symbolic, new_ac
import ahkabHelpers

mycircuit = circuit.Circuit(title="Tow-Thomas biquad")

gnd = mycircuit.get_ground_node()

def buildsvf(svf):
	ar = svf.add_resistor
	ac = svf.add_capacitor
	ao = lambda name, p, n: svf.add_vcvs(name, "U"+name[1:]+"o", gnd, p, n, 1e6)
	ar("R1", "in", "U1n", 10e3)
	ar("R3", "U1n", "U1o", 10e3)
	ar("R2", "U3o", "U1n", 10e3)
	ar("R4", "U1o", "U2n", 10e3)
	ar("R5", "U2o", "U3n", 10e3)
	ar("R6", "U3n", "U3o", 10e3)
	ac("C1", "U1n", "U1o", 15e-9)
	ac("C2", "U2n", "U2o", 15e-9)
	ao("E1", gnd, "U1n")
	ao("E2", gnd, "U2n")
	ao("E3", gnd, "U3n")

buildsvf(mycircuit)
mycircuit.add_vsource("V1", n1="in", n2=gnd, dc_value=5, ac_value=1)
Exemplo n.º 15
0
import numpy as np
import ahkab
from ahkab import circuit
import sympy
import pickle
import ahkabHelpers
mycircuit = circuit.Circuit(title="sepic", filename=None)

# https://en.wikipedia.org/wiki/File:SEPIC_Schematic.gif

#.MODEL 2N7000 NMOS (LEVEL=3 RS=0.205 NSUB=1.0E15 DELTA=0.1 KAPPA=0.0506 TPG=1 CGDO=3.1716E-9 RD=0.239 VTO=1.000 VMAX=1.0E7 ETA=0.0223089 NFS=6.6E10 TOX=1.0E-7 LD=1.698E-9 UO=862.425 XJ=6.4666E-7 THETA=1.0E-5 CGSO=9.09E-9 L=2.5E-6 W=0.8E-2)


def buildsepic(circuit):
    gnd = circuit.get_ground_node()
    ar = circuit.add_resistor
    ac = circuit.add_capacitor
    al = circuit.add_inductor
    av = circuit.add_vsource
    #	circuit.add_model("diode", "aDiodeModel", {"name": "aDiodeElement"})
    #	circuit.add_diode("D1", "da", "dc", "aDiodeModel")
    av("Vin", "in", gnd, 2.5, 1.0)
    ac("Cin", "in", gnd, 100e-3)
    al("L1", "in", "s1", 47e-6)
    ac("C1", "s1", "da", 10e-6)
    al("L2", "da", gnd, 47e-6)
    ac("C2", "dc", gnd, 100e-3)
    #circuit.add_inductor_coupling("K1", "L1", "L2", 0.99)


buildsepic(mycircuit)
import numpy as np
import ahkab
from ahkab import ahkab, circuit, time_functions
import pylab as plt

mycircuit = circuit.Circuit(title= "LRC Time Dependent Circuit")

gnd = mycircuit.get_ground_node()

# Writing net list for the circuit
mycircuit.add_resistor("R1", n1="n1", n2="n2", value=600)
mycircuit.add_inductor("L1", n1="n2", n2="n3", value=15.24e-3)
mycircuit.add_capacitor("C1", n1="n3", n2=gnd, value=119.37e-9)
mycircuit.add_inductor("L2", n1="n3", n2="n4", value=61.86e-3)
mycircuit.add_capacitor("C2", n1="n4", n2=gnd, value=155.12e-9)
mycircuit.add_resistor("R2", n1="n4", n2=gnd, value=1.2e3)

# Defining the voltage square wave function ( all times are in seconds)
# v1 = square wave low value
# v2 = square wave high value
# td = delay time to the first ramp
# tr = rise time from v1 to v2
# pw = pulse width
# tf = fall time from v2 to v1
# per = periodicity interval
voltage_step = time_functions.pulse(v1=0, v2=1, td=500e-9, tr=1e-12, pw=1, tf=1e-12, per=2)
mycircuit.add_vsource("V1", n1="n1", n2=gnd, dc_value=5, ac_value=1, function=voltage_step)

print(mycircuit)

ac_analysis = ahkab.new_ac(start=1e3, stop=1e5, points=100)
Exemplo n.º 17
0
import os
os.environ["LANG"] = "en_US.UTF-8"
from ahkab import circuit
from ahkab import new_ac
from ahkab import run
import cmath as m


def Rad(angle):
    return angle * 3.14159265358979 / 180


mycircuit = circuit.Circuit(title="AC circuit")
print('\n')
filename = input("Enter the file name of the circuit: ")
w = float(input("Enter frequency: "))
cirfile = open(filename, "r")
for line in cirfile:
    values = line.split()
    if line == '\n':
        continue
    if values[0][0] == 'V':
        acvalue = m.rect(float(values[3]), Rad(float(values[4])))
        mycircuit.add_vsource(values[0],
                              values[1],
                              values[2],
                              dc_value=0,
                              ac_value=acvalue)  #dc should not be zero?
    if values[0][0] == 'I':
        acvalue = m.rect(float(values[3]), Rad(float(values[4])))
        mycircuit.add_isource(values[0],
Exemplo n.º 18
0
import numpy as np
import ahkab
from ahkab import circuit, printing
import sympy
import pickle
import ahkabHelpers

mycircuit = circuit.Circuit(title="sallen-key 2pole lpf", filename=None)

# https://upload.wikimedia.org/wikipedia/commons/5/5c/Sallen-Key_Lowpass_Example.svg


def buildsk(svf):
    gnd = svf.get_ground_node()
    ar = svf.add_resistor
    ac = svf.add_capacitor
    al = svf.add_inductor
    av = svf.add_vsource
    ao = lambda name, p, n: svf.add_vcvs("E" + name[1:], name + "o", gnd, p, n,
                                         1e6)
    ao("u1", "u1p", "u1o")
    ar("R1", "in", "nR2", 10e3)
    ar("R2", "nR2", "u1p", 10e3)
    ac("C1", "u1o", "nR2", 1e-9)
    ac("C2", "u1p", gnd, 1e-9)
    av("V1", "in", gnd, 2.5, 1.0)


buildsk(mycircuit)

print(mycircuit)