In [54]:
import numpy as np
import matplotlib.pyplot as plt
import uncertainties as unt
import uncertainties.unumpy as unp
#constantes e temperatura
k = 1.38e-23
e = 1.6e-19
t = 298
#caracteristicas do led
led_cov = [[0.137718, -0.000218895, 52367800000000],
[-0.000218895, 9.65134E-7, -261883000000],
[52367800000000, -261883000000, 7.22381E+28]]
(p0, p1, p2) = unt.correlated_values([13.0666, 0.0991019, 1.01277e15], led_cov)
rl = p0
n = p1 * e / (k * t)
n = unt.ufloat(n.n, np.sqrt(9.65134E-7) * e / (k * t))
i0 = 1 / p2
#resistencias do circuito
r1 = unt.ufloat(99.8, 0.29288)
r2 = unt.ufloat(46.7, 0.14270)
#resistencia interna da pilha
pil_cov = [[7.89941E-7, 7.16902E-6], [7.16902E-6, 0.000135634]]
(up, rp) = unt.correlated_values([1.37634, 0.866158], pil_cov)
In [55]:
p0
Out[55]:
In [56]:
def bisection(a,b,tol,f,*args):
c = (a+b)/2.0
while (b-a)/2.0 > tol:
if f(c,*args) == 0:
return c11
elif f(a,*args)*f(c,*args) < 0:
b = c
else :
a = c
c = (a+b)/2.0
return unt.ufloat(c, tol / unp.sqrt(24))
In [57]:
def Uled1(i):
return rl * i + (n*k*t/e) * unp.log(i / i0 + 1)
def Uled1root(i, u):
return (rl) * i + (n*k*t/e) * unp.log(i / i0 + 1) - u
def Iled1(u):
return bisection(0, 3, 1e-15, Uled2root, u)
def Uled2(i):
return (rl+r2) * i + (n*k*t/e) * unp.log(i / i0 + 1)
def Uled2root(i, u):
return (rl+r2) * i + (n*k*t/e) * unp.log(i / i0 + 1) - u
def Iled2(u):
return bisection(0, 3, 1e-15, Uled1root, u)
def func(u):
return (r1+2*rp)*(Iled1(u)+Iled2(u))-2*up+u
In [58]:
res = bisection(2.3, 2.7, 1e-10, func)
In [59]:
i1 = Iled1(res)
i2 = Iled2(res)
i = i1+i2
vr = r1 * i
vl = res
vp = 2 * rp * i
v = vl + vr + vp
print("V: %s" % v)
print("Vp: %s" % (v-vp))
print("Vr: %s" % vr)
print("Vl: %s" % vl)
print("i: %s" % i)
print("i1: %s" % i1)
print("i2: %s" % i2)
In [42]:
um1 = unt.ufloat(2.761, 0.007)
um2 = unt.ufloat(2.58, 0.021)
(up, rp) = unt.correlated_values([1.37634, 0.866158], pil_cov)
(up, rp) = unt.correlated_values([um2.n/2, 0.866158], pil_cov)
In [60]:
up*2
Out[60]:
In [53]:
Uled2(i2)
Out[53]:
In [ ]: