¿Cómo modelo un LED con SPICE?

¿Qué modificadores de diodo se usan en la práctica para modelar LED con SPICE (Berkeley v.3f5)? Estos están disponibles para mí:

#       Name    Parameter                    Units      Default Example  Area
1       IS      Saturation current             A         1e-14   1e-14    *
2       RS      Ohmic resistance               Ω         0       10       *
3       N       Emission coefficient           -         1       1.0
4       TT      Transit-time                   s         0       0.1ns
5       CJO     Zero-bias junction capacitance F         0       2pF      *
6       VJ      Junction potential             V         1       0.6
7       M       Grading coefficient            -         0.5     0.5
8       EG      Activation energy              eV        1.11    1.11 Si
                                                                 0.69 Sbd
                                                                 0.67 Ge
9       XTI     Saturation-current temperature exponent  3.0     3.0 jn
                                                                 2.0 Sbd
10      KF      Flicker noise coefficient      -         0
11    AF      Flicker noise exponent         -         1
12    FC      Coeff. for for.-bias dep. cap. formula   0.5
13    BV      Reverse breakdown voltage      V         ∞       40.0
14    IBV     Current at breakdown voltage   A         1.0e-3
15    TNOM    Parameter measurement temp.    °C        27      50

3.4.2 Modelo de diodo (D)
Las características de cd del diodo están determinadas por los parámetros IS y N. Se incluye una resistencia óhmica, RS. Los efectos de almacenamiento de carga se modelan mediante un tiempo de tránsito, TT, y una capacitancia de capa de agotamiento no lineal que se determina mediante los parámetros CJO, VJ y M. La dependencia de la temperatura de la corriente de saturación se define mediante los parámetros EG, la energía y XTI, el exponente de temperatura de la corriente de saturación. La temperatura nominal a la que se midieron estos parámetros es TNOM, que por defecto es el valor de todo el circuito especificado en la línea de control .OPTIONS. La ruptura inversa se modela mediante un aumento exponencial en la corriente del diodo inverso y está determinada por los parámetros BV e IBV (ambos son números positivos).

Por ejemplo, usando este rojo básico y barato:

No me importan mucho las características de alta frecuencia, solo me gustaría poder igualar su curva IV dentro de sus especificaciones operativas (-10uA/-5V de fuga a +100mA/+2.2 'ish V adelante):ingrese la descripción de la imagen aquí

Respuestas (6)

Como dijiste, hay 3 parámetros que dictan la respuesta de CC de un diodo. Esos son la corriente de saturación ( IS ), el coeficiente de emisión ( N ) y la resistencia óhmica ( RS ). Pude ajustar la curva con una precisión bastante alta, así que documentaré el procedimiento de mi modelo.

El modelo SPICE para el diodo coincide estrechamente con la ecuación del diodo de Schokley:

If = IS(e^(Vf/(N*Vt)) - 1)

donde Vt = kT/q = 26mVa temperatura ambiente.

  1. Obtenga valores reales de los gráficos proporcionados en la hoja de datos para usarlos como comparación. Cuantos más puntos, mejor, y cuanto más preciso, mejor. A continuación se muestra una tabla que calculé a partir de la cifra que proporcionó:

    Vf  If (mA)
    1.3 0.001
    1.4 0.010
    1.5 0.080
    1.6 0.700
    1.7 5.000
    1.8 20.000
    1.9 40.000
    2.0 65.000
    2.1 80.000
    
  2. Introduzca los valores en Excel y cambie el eje y a una escala logarítmica. Debería obtener un gráfico que se vea idéntico al gráfico original de la hoja de datos. Agregue otra columna para su gráfico, con If calculado a partir del voltaje directo y las constantes IS y N. Podemos usar esta configuración para encontrar iterativamente IS y N .

  3. Resuelva para IS y N . Estamos tratando de igualar la parte lineal del gráfico (1.3 <= Vf <= 1.7). Ajustar IS moverá la curva en el eje y. Obtenga el gráfico calculado en el mismo orden de magnitud. El siguiente paso es encontrar el coeficiente de emisión ( N ). N afecta tanto a la amplitud como a la pendiente, por lo que puede ser necesario algún ajuste de IS para mantener la curva en el mismo estadio. Una vez que las pendientes coincidan (las líneas sean paralelas), recorte IS para que los datos calculados coincidan con los valores de la hoja de datos. Lo obtuve IS = 1e-18, y N=1.8para el diodo que enumeró.ingrese la descripción de la imagen aquí

  4. Identifica RS . Esto es un poco complicado. RS es responsable de la curvatura de la corriente de 1,7 V y superior. Considere modelar la resistencia óhmica como una resistencia en serie con el diodo. A medida que aumenta la corriente a través del diodo, la caída de voltaje en la resistencia óhmica hace que el voltaje directo Vf del diodo aumente más lentamente. A corrientes pequeñas, este efecto es insignificante.

Lo primero que debe hacer es obtener una estimación aproximada de RS para usar en las soluciones más precisas. Puede calcular el valor efectivo de RS a partir de los valores de la hoja de datos retrocalculando para Vf usando el If medido . La diferencia de voltaje entre el valor de entrada y el Vf calculado se puede usar con la corriente directa para generar una resistencia. En las corrientes más altas, este será un buen valor inicial.

Para trazar la corriente del diodo usando RS , primero debe calcular el diodo Vf dado un voltaje para la combinación de la serie de resistencia-diodo. Wikipedia enumera una función iterativa : converge fácilmente si la caída de voltaje de la resistencia es significativa. Esta función fue bastante fácil de configurar en Excel. Para valores de Vf por debajo de 1.8, codifiqué el valor de entrada porque la función iterativa no convergió. Luego tome este valor de Vf para calcular el If del diodo ideal. Tracé esto con el gráfico original de la hoja de datos.

Usando prueba y error, debería poder obtener un valor de RS que se superponga bastante bien con los valores de la hoja de datos. Todo lo que queda es juntar el modelo en SPICE para verificar su trabajo.

A continuación se muestra mi modelo de diodo que verifiqué usando HSPICE. Los datos de simulación son casi una superposición perfecta para el gráfico de la hoja de datos.

.model Dled_test D (IS=1a RS=3.3 N=1.8)

Utilicé este artículo , que me ayudó mucho con los parámetros de especias del diodo.

Limpié mi hoja de cálculo y tyblu la puso a disposición para descargarla aquí . Úselo bajo su propio riesgo, resultados no garantizados, etc... etc...

Esta es una respuesta increíble. +∞

He creado un programa de Python que modelará las características de polarización directa de un diodo en función de las características de la hoja de datos IV.

http://leicesterraspberrypi.wordpress.com/projects/modeling-a-diode-for-use-in-spice-simulations/

Siéntete libre de probarlo y comentar.

Si bien su código parece muy útil, se desaconsejan las respuestas de solo enlace porque pueden volverse inútiles en el futuro si el enlace muere. Quizás podría incluir más detalles sobre el algoritmo/código en su respuesta para asegurarse de que siga siendo útil si eso sucede alguna vez.
Esto es bastante útil, de hecho. El uso de WebPlotDigitizer lo hizo bastante fácil.
no parece estable en los LED. ¿Quizás debería especificar límites para curve_fit?

Primero, señalaría que puede leer parámetros de diodo adicionales BV , Ibv y Cjo directamente desde la hoja de datos del LED como "Corriente inversa" Ir en Vr y como "Capacitancia" C.


Agregando a la gran respuesta de W5VO, simplifiqué un poco el proceso para mí de la siguiente manera:

  1. Usé el tipo de gráfico de diagrama de dispersión XY como líneas solo en OpenOffice (YMMV con Excel, etc.) y establecí los mínimos y máximos de los ejes manualmente, por ejemplo, (X,Y)=(1.4-4.0, 0.01-50.0), para evitar que el rango automático quede fuera del alcance de mis datos muestreados.

  2. Después de las tres primeras columnas de puntos muestreados Vf_sampled , If_sampled y If_estimate usando la ecuación de diodo de Schokley, agregué una cuarta para un Vf_estimate calculado . Recuerde, que Rs es una resistencia en serie (vea la imagen en la parte inferior) y If_estimate en realidad nos da la corriente para usar aquí, por lo que uno puede simplemente calcular las celdas de la columna como:
    Vf_estimate = Vf_sampled + (If_estimate * Rs) .

  3. Ahora podría agregar una tercera curva, en la que usé la nueva cuarta columna ( Vf_estimate ) como la coordenada X y la tercera columna ( If_estimate ) como la coordenada Y, y que ahora podría comparar fácilmente con la primera curva (los datos muestreados del gráfico en la hoja de datos). Tenga en cuenta que no quería simplemente reemplazar la segunda curva ya que la línea recta fue muy útil en mis estimaciones.

  4. Estoy seguro de que estoy repitiendo un poco W5VO aquí, pero recuerda el papel de las constantes Is , Rs y N en términos de la forma de la curva (en nuestra escala log-lin ):

    • Solo afecta la posición de las curvas (arriba/izquierda o abajo/derecha).
    • N afecta tanto a las pendientes de las curvas como a las posiciones (ya que es un coeficiente lineal y las curvas siempre pasan por el origen, que siempre está fuera de la escala).
    • Rs define la curvatura (el barrido progresivo hacia la derecha) de la nueva tercera curva (dado que es un término lineal en la otra dirección).
  5. Cosas que encontré que pueden ser de utilidad:

    • Es posible que descubra que la segunda curva (la línea recta) debe ser ligeramente más pronunciada y hacia arriba/a la izquierda de lo que parecería a partir de los datos muestreados, porque la curvatura debida a Rs comienza en el origen.
    • Puede obtener un muestreo bastante preciso haciendo zoom en la hoja de datos (suponiendo que sea PDF), tomando una captura de pantalla y abriéndola en su programa de dibujo favorito. A continuación, puede utilizar, por ejemplo, la herramienta de selección o línea recta para medir la distancia en píxeles entre las líneas de intervalo y la distancia del punto a la línea de intervalo de valor inferior. Para ejes lineales, esa fracción se traduce en valores de datos fáciles.
    • El diagrama de dispersión XY le permite usar puntos de datos arbitrarios. Puede salirse con la suya con menos muestras que con el muestreo equidistante. Puede optar por muestrear los datos solo en los puntos donde sea más fácil y donde sea estrictamente necesario. Por ejemplo, en una escala semilogarítmica puede muestrear en las líneas de intervalo de la escala logarítmica. Si lo necesita, aún puede tener más puntos (filas) para las curvas estimadas. (Al menos, los gráficos de OpenOffice parecen ignorar los puntos para los que no hay una coordenada Y correspondiente).
      Tenga en cuenta que los valores X ( Vf_sampled ) aún deben estar en orden ascendente (o descendente). De lo contrario, las líneas se vuelven un desastre.
    • Tenga en cuenta la escala de las unidades que está estimando/graficando/tratando de encontrar (por ejemplo, miliamperios) y recuerde que SPICE generalmente usa las unidades básicas (amperios).
    • Tenga en cuenta que el Vt de W5VO está en milivoltios . Si usa voltios, use el valor 0.026 .
    • Compruebe qué prefijos métricos (m, p, u, etc.) acepta su simulador SPICE. Usar la notación exponencial (por ejemplo, 12E-34) puede ser más simple.
    • La edición del rango de celdas para el gráfico parecía restablecer siempre la (nueva) tercera curva, por lo que tuve que volver a agregar el rango de datos a las coordenadas X y volver a cambiar la tercera columna como su rango Y. Tenga esto en cuenta cuando agregue más puntos o modele varios LED en el mismo gráfico; realice todos esos cambios a la vez. (Cambiar los datos dentro de las celdas obviamente no provocó el reinicio).
    • La interpolación curva en el gráfico puede desviarlo por exceso o por defecto y no mostrarle por qué, es decir, dónde están los puntos de datos reales.
    • Los segmentos de línea recta también pueden inducir a error, ya que los puntos correspondientes terminan en diferentes ubicaciones y la interpolación lineal no sigue la naturaleza logarítmica de la curva. (Todos los puntos de datos de la curva muestreada y la nueva tercera curva deben estar fuera (arriba/izquierda) de los segmentos de línea recta de la otra).

AFAIK, nuestro modelo para el LED es esencialmente una resistencia Rs y un diodo de estimación Is / N en serie: (-R->-D-)

esquemático

simular este circuito : esquema creado con CircuitLab

Aquí están los que yo usaría

#       Name    Parameter                    Units      Default Example  Area
2       RS      Ohmic resistance               Ω         0       10       *
6       VJ      Junction potential             V         1       0.6
13    BV      Reverse breakdown voltage      V         ∞       40.0
14    IBV     Current at breakdown voltage   A         1.0e-3

Para su tipo VJ=1.8, BV=5. Eso te lleva la mayor parte del camino allí.

En realidad, VJ se usa para calcular la capacitancia de la unión en función del voltaje aplicado. Modificar esto y el voltaje de ruptura inversa realmente no establecerá las características brutas de CC. El resultado final debería ser casi idéntico al modelo de diodo predeterminado.

Si alguien se pregunta por qué su hoja de datos de una sola página no tiene una curva If/Vf, probablemente sea porque no tiene la hoja de datos completa. Sé que, por ejemplo, Optosupply solo publica los resúmenes de la primera página en su sitio web, pero le enviarán las especificaciones completas (con todas las curvas de If/Vf, intensidad relativa y espectro, etc.) si las solicita.

Probablemente también pueda obtener cifras utilizables para todos los valores utilizando una hoja de datos de otro LED del mismo color con la misma química (del mismo fabricante). Solo verifique que las características básicas (como corrientes, voltajes y longitudes de onda) coincidan.

Excelentes respuestas, pero es fácil resolver algebraicamente la ecuación del diodo de Shockley. Solo tenga en cuenta que el "menos 1" en la fórmula es muy irrelevante para las corrientes directas que son un orden de magnitud mayor que Is, que es muy pequeño, digamos, 1E-12 A. Encuentre solo dos puntos en el gráfico con fácil lectura. valores I y V, e inclúyalos en la fórmula. Dividir ambas fórmulas elimina Is, por lo que N es fácil de calcular. Luego complete N en una fórmula para encontrar Is.

Aquí están mis macros de LibreOffice Calc en Basic:

Const Q as double = 1.6E-19
Const K as double = 1.38E-22
Const T as double = 300

rem The Shockley diode equation, to build the graph Id(Vd) for hardcoded values of Is and N
Function shockley(Vd as double) as double
    Const Is1 as double = 5.94463E-18
    rem Note that 'Is' is a reserved word and cannot be the name of a variable
    Const N as double = 0.191367
    shockley = Is1 * (exp(Vd * Q / (N * K * T )) - 1)
End Function

rem Step 1 in solving the diode equation for N using values from a graph
Function ComputeN(V1 as double, V2 as double, I1 as double, I2 as double) as double
    ComputeN = (Q / (K * T)) * (V1 - V2) / (log(I1) - log(I2))
End Function

rem Step 2 in solving the diode equation for Is
Function ComputeIS(V as double, I as double, N as double) as double
    ComputeIS = I / (exp(Q * V / (N * K * T)))  
End Function

rem for debugging
sub Test
    dim N as double
    N = ComputeN(1.85, 1.3, 0.1, 1.5E-6)
    dim Is1 as double
    Is1 = ComputeIs(1.85, 0.1, N)
end sub

Si observa las fórmulas, es posible que reconozca simplemente la descripción de una línea recta con una pendiente de q/NkT pero también delta Log(Id) / delta Vd.

Obtengo un valor algo similar para Is: 5.94E-18 = 5.94 atto-ampere (W5VO encontró 1 aA), pero muy diferente N = 0.19 (W5VO encontró 1.8, error tipográfico?), Aún así, los datos también se calculan en el mismo gráfico :

captura de pantalla de mi LibreOffice Calc

La columna Vd son los voltajes, Id es la corriente del diodo según la fórmula real, Id0 es la corriente con la fórmula simplificada donde el "menos 1" se cambia por "menos cero". Como Id0 es una verdadera curva exponencial, puede tomar el logaritmo en la columna Id0_log. (No puede tomar el logaritmo de una curva que se vuelve cero y negativa como Id) La gráfica es de Id0_Log versus Vd. En este gráfico, hice la parte más baja con puntos, porque ya NO está la corriente real del diodo, pero muestra el valor de Is en la intersección con el eje Y.

Seguir la curva exponencial hacia la izquierda te lleva asintóticamente a cero. Pero el "menos 1" resta una cantidad de Is, de modo que la curva real del diodo pasa por el origen y, con voltajes negativos, muestra una corriente de fuga inversa de cantidad Is.

Si la curva del fabricante original hubiera estado en un diagrama logarítmico realmente grande, simplemente podríamos haber usado una regla para extender la línea recta hacia abajo para encontrar fácilmente Is en Vd=0 y luego calcular N, en lugar de calcular primero N y luego Is con el encima de las macros. El método de la regla ha sido descrito en "The Spice Book" por Andrei Vladimirescu (1994).