Esto podría ser de su interés . Demuestra cómo encontrar empíricamente los 3 parámetros de diodo más útiles: corriente de saturación (IS), resistencia en serie (RS) y el coeficiente de emisión (N).
Hay un poco de antecedentes matemáticos al principio, pero en su mayor parte puede omitir esto (a menos que esté interesado en las matemáticas).
Al final, incluyo un código Python que se puede usar para calcular estos tres parámetros a partir de un gráfico I-V de la hoja de datos o mediciones experimentales.
También deberá conocer la temperatura de referencia (a qué temperatura se encuentran sus mediciones, o para qué temperatura se usa la gráfica IV), así como aproximadamente a qué temperatura desea ejecutar el dispositivo (normalmente, 298K
es un buena opción predeterminada, aunque muchas hojas de datos especifican en 293K
).
Para obtener fácilmente datos precisos de un gráfico I-V, intente usar un plot digitizer .
Para casi todo lo demás, puede usar los valores "estándar" a menos que tenga algunos requisitos específicos (especialmente los efectos dependientes del tiempo y más precisos de la temperatura).
Para referencias futuras, aquí hay una versión simplificada (es decir, comentarios eliminados) del código:
from numpy import *
from scipy.optimize import leastsq
def diode_res(args, T, V, I):
n, Rs, Is = args
kb = 8.617332478e-5
return I*Rs+log(I/Is+1)*n*kb*T-V
def jac_diode(args, T, V, I):
n,Rs,Is = args
kb = 8.617332478e-5
res = zeros([3,len(V)])
res[0,:] = log(I/Is+1)*kb*T
res[1,:] = I
res[2,:] = -I/(I*Is+Is**2)*n*kb*T
return res
def diode_coeffs(V, I, T):
return leastsq(diode_res, array([1,0,1e-14]),args=(T,V,I), Dfun=jac_diode, col_deriv=True,xtol=1e-15)[0]
Funciona realizando un ajuste de mínimos cuadrados no lineal. Aquí hay un ejemplo de uso (Tomé datos del gráfico I-V en su enlace):
I = array([0.00139106, 0.00186955, 0.00258687, 0.00210901, 0.00324447, 0.00282632, 0.00372254, 0.0063513 , 0.00724731, 0.00676945, 0.00820303, 0.00772517, 0.0086809 , 0.01178709, 0.01278269, 0.01226495, 0.0134595 , 0.0168444 , 0.01632666, 0.01799907, 0.01752121, 0.01847693, 0.02134388, 0.02086602, 0.02235931])])
V = array([ 3.04213083, 3.10179528, 3.16154354, 3.14650173, 3.22127085, 3.20624999, 3.25118688, 3.37110238, 3.40116506, 3.38612324, 3.43124868, 3.41620687, 3.44629049, 3.55149938, 3.58655504, 3.56654119, 3.59670861, 3.70697334, 3.68695949, 3.73216872, 3.71712691, 3.74721053, 3.82258719, 3.80754538, 3.85269177])
# assume data is at 20C
n, Rs, Is = diode_coeffs(V, I, 273+20)
Resultados:
- n = 5.5287
- Rs = 18.983 \ $ \ Omega \ $
- Es = 0.506623 pA
Aquí hay un gráfico con los parámetros de ajuste:
AquíestálacurvaI-VresultantedeLtSpice,queutilizasoloestostresparámetrosytodoslosdemásvaloresdediodopredeterminados.Comopuedever,existeunaligerafaltadecoincidencia,peroengeneralestogeneralmenteocurredentrodelruidodelapartereal(esdecir,nodebeconfiarenobtenerexactamente30mAa4V,27mAnoesirrazonable).