示例#1
0
def analyse(data):
    config = data.config
    vcc = data.vcc
    m = data.measurements
    grouped = segmented_measurements(m, ["charge", "R"], as_index=1)

    def voltage(measurement):
        return u_an2v(measurement.Amiddle, vcc)

    def first(ls):
        return ls.values[0]

    def last(ls):
        return ls.values[-1]

    t = grouped["t"].agg(dict(t1=first, t2=last))
    A = grouped["Amiddle"].agg(dict(A1=first, A2=last))
    mreg = DataFrame([(charge, R, regc(g, R)) for (charge, R), g in grouped], columns=["charge", "R", "Creg"])

    df = A.join(t)
    df = df.reset_index()

    df = df[df["charge"] == 0]
    del df["charge"]

    col = ColsProxy(df)

    col.Creg = mreg["Creg"]
    col.dt = col.t2 - col.t1
    col.C = calculate_c(col.A1, col.A2, col.R, col.t1, col.t2)

    movecol(df, "Creg", 0)
    movecol(df, "C", 0)

    return df
示例#2
0
def analyse(data):
    config = data.config
    vcc = data.vcc
    m = data.measurements
    grouped = segmented_measurements(m, ['charge', 'R'], as_index=1)

    def voltage(measurement):
        return u_an2v(measurement.Amiddle, vcc)

    def first(ls):
        return ls.values[0]

    def last(ls):
        return ls.values[-1]

    t = grouped['t'].agg(dict(t1=first, t2=last))
    A = grouped['Amiddle'].agg(dict(A1=first, A2=last))
    mreg = DataFrame([(charge, R, regc(g, R)) for (charge, R), g in grouped],
                     columns=['charge', 'R', 'Creg'])

    df = A.join(t)
    df = df.reset_index()

    df = df[df['charge'] == 0]
    del df['charge']

    col = ColsProxy(df)

    col.Creg = mreg['Creg']
    col.dt = col.t2 - col.t1
    col.C = calculate_c(col.A1, col.A2, col.R, col.t1, col.t2)

    movecol(df, 'Creg', 0)
    movecol(df, 'C', 0)

    return df
示例#3
0
def extend(data):
    m = filter_measurements(
        data.measurements,
        ['pwm_value', 'rail'],
        ['Aout', 'Ain', 'Aamp'])

    R = data.config.R
    vcc = data.vcc

    data.Vmax = data.vcc
    data.Imax = data.vcc / R

    col = ColsProxy(m)
    col.Vin = an2v(col.Ain, vcc)
    col.Vout = an2v(col.Aout, vcc)
    col.Vamp = an2v(col.Aamp, vcc)
    col.Vx = col.Vout - col.Vin
    col.I = (col.Vin - col.Vamp) / R
    m = m.sort_index(by='Vx')

    col.I = pandas.rolling_median(col.I, window=5)

    data.measurements = m
示例#4
0
def calculate_beta(m, vcc):
        col = ColsProxy(m)
        
        col.Ab=uarray((col.Ab,1))
        col.Ac=uarray((col.Ac,1))
        
        
        col.Ub = an2v(col.Ab, vcc)
        col.Uc = an2v(col.Ac, vcc)

        Rout = 20

        pnp = col.polarity == 'PNP'
        npn = col.polarity == 'NPN'

        col.Urb[pnp] = col.Ub[pnp]
        col.Urb[npn] = vcc - col.Ub[npn]

        col.Urc[pnp] = col.Uc[pnp]
        col.Urc[npn] = vcc - col.Uc[npn]

        col.Ib = col.Urb / (col.Rb + Rout)
        col.Ic = col.Urc / (col.Rc + Rout)
        col.Ie = col.Ib + col.Ic
        col.beta = col.Ic / col.Ib[nominal_values(col.Ib) != 0]

        col.Ue[pnp] = vcc - (Rout * col.Ie[pnp])
        col.Ue[npn] = Rout * col.Ie[npn]

        col.Ube[pnp] = -(col.Ub[pnp] - col.Ue[pnp])
        col.Ube[npn] = (col.Ub[npn] - col.Ue[npn])
示例#5
0
def calculate_beta(m, vcc):
    col = ColsProxy(m)

    col.Ab = uarray((col.Ab, 1))
    col.Ac = uarray((col.Ac, 1))

    col.Ub = an2v(col.Ab, vcc)
    col.Uc = an2v(col.Ac, vcc)

    Rout = 20

    pnp = col.polarity == 'PNP'
    npn = col.polarity == 'NPN'

    col.Urb[pnp] = col.Ub[pnp]
    col.Urb[npn] = vcc - col.Ub[npn]

    col.Urc[pnp] = col.Uc[pnp]
    col.Urc[npn] = vcc - col.Uc[npn]

    col.Ib = col.Urb / (col.Rb + Rout)
    col.Ic = col.Urc / (col.Rc + Rout)
    col.Ie = col.Ib + col.Ic
    col.beta = col.Ic / col.Ib[nominal_values(col.Ib) != 0]

    col.Ue[pnp] = vcc - (Rout * col.Ie[pnp])
    col.Ue[npn] = Rout * col.Ie[npn]

    col.Ube[pnp] = -(col.Ub[pnp] - col.Ue[pnp])
    col.Ube[npn] = (col.Ub[npn] - col.Ue[npn])