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])
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])
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
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()