Example #1
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])
Example #2
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])
Example #3
0
def analyse(data):
    m = filter_measurements(
        data.measurements,
        ['R'],
    )
    del m['t']
    m.insert(0, 'Rx', calculate_ohm(m.R, m.Atop, m.Amiddle, m.Abottom))
    m.insert(0, 'Rx_E12', map(format_ohmE12, nominal_values(m.Rx)))
    return m
Example #4
0
    def addcol(self,
               x=None,
               y=None,
               legend=None,
               lineformat=None,
               filter_func=None,
               sortbyx=None):
        ax = self.subplot
        if x and not callable(x):
            ax.set_xlabel(x)
        else:
            if self.x == 'time':
                x = 't'
        if not x:
            x = self.x

        if not lineformat:
            lineformat = '-o'

        if not callable(y):
            if not legend:
                legend = y

        if self.convert2voltage and self.y == 'analog_value':
            f2 = lambda e: an2v(e[y], self.data['vcc'])
        else:
            f2 = y

        xcol = self._col(x, filter_func=filter_func)
        ycol = self._col(f2, filter_func=filter_func)
        if sortbyx:
            ls = sorted(zip(xcol, ycol), key=lambda e: e[0])
            xcol = [e[0] for e in ls]
            ycol = [e[1] for e in ls]
        assert len(xcol) == len(ycol)
        assert len(xcol)
        assert len(ycol)
        ax.plot(nominal_values(xcol),
                nominal_values(ycol),
                lineformat,
                label=legend)
        self.update_legend()
    def addcol(self, x=None, y=None, legend=None, lineformat=None, filter_func=None, sortbyx=None):
        ax = self.subplot
        if x and not callable(x):
            ax.set_xlabel(x)
        else:
            if self.x == 'time':
                x = 't'
        if not x:
            x = self.x

        if not lineformat:
            lineformat = '-o'

        if not callable(y):
            if not legend:
                legend = y

        if self.convert2voltage and self.y == 'analog_value':
            f2 = lambda e: an2v(e[y], self.data['vcc'])
        else:
            f2 = y

        xcol = self._col(x, filter_func=filter_func)
        ycol = self._col(f2, filter_func=filter_func)
        if sortbyx:
            ls = sorted(zip(xcol, ycol), key=lambda e: e[0])
            xcol = [e[0] for e in ls]
            ycol = [e[1] for e in ls]
        assert len(xcol) == len(ycol)
        assert len(xcol)
        assert len(ycol)
        ax.plot(
            nominal_values(xcol),
            nominal_values(ycol),
            lineformat,
            label=legend)
        self.update_legend()