LTspice modelando un LED

Estoy tratando de crear un modelo de especias para un LED IR Vishay VSLY5940 ( hoja de datos ) y después de seguir algunos ejemplos que encontré en línea, no puedo completar mis cálculos.

Creé un gráfico en Excel que se parece a la hoja de datos I F ,   V s ,   V F pero no soy capaz de resolver para R s ,   norte , o I s . Traté de resolverlos usando las siguientes ecuaciones:

Valores asumidos: R s = .01 ,   norte = 1 ,   I s = 10 norte ,   V t h = .0259

ingrese la descripción de la imagen aquí

V 1 = R s I D 1 + norte × V t h en ( I D 1 I S )

V 2 = R s I D 2 + norte × V t h en ( I D 2 I S )

V 3 = R s I D 3 + norte × V t h en ( I D 3 I S )

V 4 = R s I D 4 + norte × V t h en ( I D 4 I S )

ingrese la descripción de la imagen aquí

Cualquier sugerencia sobre cómo resolver para R s ,   norte , o I s ?


Actualización: intenté agregar el modelo usando los números de Jonk en su respuesta a continuación , pero mi gráfico I (f) vs V (f) no coincide con lo que está en la hoja de datos:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

¿ Has probado a usar la ecuación de Shockley ?
Intente agregar una pequeña cantidad de resistencia en serie para que el cambio sea más fluido y menos agudo.

Respuestas (1)

Aquí está el gráfico relevante de su hoja de datos:

ingrese la descripción de la imagen aquí

Para tres variables necesitarás tres puntos. He seleccionado los de 1 mamá , 30 mamá y 1 A . Los valores de voltaje que elegí son 1.25 V , 1.5 V , y 2.85 V , respectivamente.

El código que usé es:

def diode():
    print( "This program uses 3 diode measurements to extract parameters." )
    print( "You will need to have taken these measurements beforehand." )
    print( "Enter each point as [ <diode current>, <diode voltage> ]." )
    print( "" )
    TA= int( input( "Enter the ambient temperature in Celsius (default is 27 C): " ) or "27" )
    print( "" )
    VT= 8.61733034e-5 * ( 273.15 + TA )
    POINTS= []
    vd, id, N, ISAT, RS= symbols( "vd id N ISAT RS" )
    for i in range(3):
        pid, pvd= input( "Enter point " + str(i) + ": " ).split()
        POINTS.append( { vd: float( pvd ), id: float( pid ) } )
    EQS= []
    for i in range(3):
        EQS.append( Eq( POINTS[i][vd], RS*POINTS[i][id] + N*VT*ln(POINTS[i][id]) - N*VT*ISAT ) )
    print( POINTS )
    print( EQS )
    ANS= solve( EQS, [ RS, N, ISAT ] )[0]
    print( "RS   = " + str(ANS[0]) )
    print( "N    = " + str(ANS[1]) )
    print( "ISAT = " + str(exp(ANS[2])) )

Conectándolos al código de Python que se ejecuta en Sage, obtengo: R 1.16185 Ω , I SE SENTÓ 2.96406 Pensilvania , y norte 2.475312 .

El código anterior es en realidad algo más robusto en norte de lo que es en los otros parámetros. Pero creo que esos parámetros reproducirán razonablemente de cerca esa curva. (No he comprobado.)

Usted es libre de elaborar su propio método. Especialmente si necesita una respuesta de Excel. No estoy interesado en proporcionar eso. Pero lo anterior debería, al menos, proporcionarle un enfoque para implementar en Excel, si desea hacerlo.

Esto es lo que obtengo de LTspice usando los valores de parámetro que mi programa calculó a partir de solo tres puntos (más sería mejor, por supuesto).

ingrese la descripción de la imagen aquí

Luego usé "cursores" en LTspice para seleccionar los valores relevantes:

ingrese la descripción de la imagen aquí

Puede usar LTspice usted mismo, si desea verificar otros valores en la curva y ver cómo coinciden con el gráfico. Mi algoritmo no tiene la intención de coincidir exactamente con LTspice, ya que LTspice maneja un modelo mucho más sofisticado (lo que obviamente requeriría más puntos), pero por lo general se acerca bastante.

Un poco confundido por estos números, vuelto a publicar con imágenes a continuación
@Pete Déjame usar LTspice para trazarlo usando los números completos que generó mi programa.
¡Gracias lo aprecio!
lo has clavado, muchas gracias! Estuve luchando con esto durante 5 horas hoy. ¡Muchas gracias por su ayuda, me alegraron el día!
@Pete ¡Me alegro de que haya ayudado! Puedes mirar aquí si te importa la ecuación cerrada. Sin embargo, es un poco molesto.
@Pete Las ecuaciones no lineales, especialmente cuando se combinan con ecuaciones lineales que dependen de ellas, pueden ser un dolor sincero en el que cada pequeño paso debe examinarse cuidadosamente para detectar errores. Este es uno de esos lugares donde un solucionador simbólico puede ayudar, aunque resulta que un ser humano (al menos hasta ahora) aún puede superar al software existente. Puedo resolver fácilmente este tipo de problemas en los que SymPy y Wolfram Alpha simplemente se desmoronan y fallan miserablemente. Así que la creatividad y la imaginación todavía tienen su lugar.
Por cierto, ¿por qué usaste mayúsculas para un muteable (PUNTOS)?
@2e0byo Ninguna razón en particular, excepto que estaba escribiendo esto para mí y no tenía la intención de exhibirlo en ninguna parte, y estaba de ese humor en ese momento.
Feria @jonk! Solo soy un pedante. Es una buena respuesta (+1) y estoy completamente de acuerdo. resolver problemas como este a mano: a menudo se puede ver la respuesta más rápido que especificando todas las restricciones para hacer que un solucionador simbólico se comporte como tal.
@2e0byo Me gustaría ver cómo lo escribes. Empecé a aprender Python y Sympy hace aproximadamente un año y solo lo he usado ocasionalmente desde entonces. Todavía tengo mucho por aprender.
He reescrito esto (manteniendo la lógica exactamente igual) y lo puse en esencia . Los estilos de codificación varían enormemente y su código está completamente bien, pero usted preguntó ... tenga en cuenta que no obtengo exactamente los mismos resultados a menos que esté ingresando mal los puntos, pero obtengo los mismos resultados con su código y el mío.
@2e0byo Muchas gracias. Me voy a la cama, ahora mismo. (Otra vez.) Pero lo leeré detenidamente mañana. ¡¡Gracias!!