Comment modéliser une LED avec SPICE?

36

Quels modificateurs de diode sont utilisés dans la pratique pour modéliser des LED avec SPICE (Berkeley v.3f5)? Ceux - ci sont à ma disposition:

#       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 Modèle de diode (D)
Les caractéristiques cc de la diode sont déterminées par les paramètres IS et N. Une résistance ohmique, RS, est incluse. Les effets de stockage de charge sont modélisés par un temps de transit, TT, et une capacité de couche à épuisement non linéaire qui est déterminée par les paramètres CJO, VJ et M. La dépendance en température du courant de saturation est définie par les paramètres EG, l'énergie et XTI, l'exposant de la température actuelle de saturation. La température nominale à laquelle ces paramètres ont été mesurés est TNOM, la valeur par défaut étant celle définie pour l'ensemble du circuit sur la ligne de commande .OPTIONS. La décomposition inverse est modélisée par une augmentation exponentielle du courant de diode inverse et est déterminée par les paramètres BV et IBV (les deux étant des nombres positifs).

Par exemple, en utilisant ce rouge bon marché de base:

Je me moque bien des caractéristiques haute fréquence - je voudrais juste pouvoir faire correspondre sa courbe IV à ses spécifications de fonctionnement (-10uA / -5V fuite à + 100mA / + 2,2 ' V en avant): entrez la description de l'image ici

tyblu
la source

Réponses:

47

Comme vous l'avez dit, 3 paramètres déterminent la réponse CC d'une diode. Ce sont le courant de saturation ( IS ), le coefficient d’émission ( N ) et la résistance ohmique ( RS ). J'ai été capable d'ajuster la courbe avec une assez grande précision, je vais donc documenter ma procédure de modèle.

Le modèle SPICE de la diode correspond étroitement à l'équation de la diode Schokley:

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

Vt = kT/q = 26mVà la température ambiante.

  1. Obtenez les valeurs réelles des graphiques fournis dans la fiche technique à utiliser pour la comparaison. Plus le nombre de points est élevé, meilleur est le résultat. Voici un tableau que j’ai estimé à partir du chiffre que vous avez fourni:

    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. Branchez les valeurs dans Excel et modifiez l'axe des ordonnées en une échelle de journal. Vous devriez obtenir un graphique qui semble identique au graphique original de la fiche technique. Ajouter une autre colonne pour votre graphique, avec Si calculées à partir de la tension vers l' avant et les constantes IS et N . Nous pouvons utiliser cette configuration pour trouver itérativement IS et N .

  3. Résoudre pour IS et N . Nous essayons de faire correspondre la partie linéaire du graphique (1.3 <= Vf <= 1.7). Le réglage de IS déplacera la courbe sur l’axe des y. Obtenez le graphique calculé dans le même ordre de grandeur. L'étape suivante consiste à trouver le coefficient d'émission ( N ). N affecte à la fois l’amplitude et la pente, un ajustement de IS peut donc être nécessaire pour maintenir la courbe dans le même stade. Une fois les pentes appariées (les lignes sont parallèles), coupez IS pour que les données calculées correspondent aux valeurs de la feuille de données. Je l'ai IS = 1e-18et N=1.8pour la diode que vous avez énumérée. entrez la description de l'image ici

  4. Identifiez RS . C'est un peu délicat. RS est responsable de la courbe du courant à partir de 1,7 V et plus. Envisagez de modéliser la résistance ohmique en tant que résistance en série avec la diode. Lorsque le courant dans la diode augmente, la chute de tension dans la résistance ohmique ralentit l'augmentation de la tension de diode directe Vf . Aux faibles courants, cet effet est négligeable.

La première chose à faire est d’obtenir une estimation approximative de RS à utiliser dans les solutions les plus précises. Vous pouvez calculer la valeur effective de RS à partir des valeurs de la feuille de données en calculant à l’ avance pour Vf à l’aide du If mesuré . La différence de tension entre la valeur d'entrée et le Vf calculé peut être utilisée avec le courant direct pour générer une résistance. Aux courants plus élevés, ce sera une bonne valeur de départ.

Pour tracer le courant de diode à l’aide de RS , vous devez d’abord calculer la diode Vf à partir d’ une tension donnée pour la combinaison série résistance-diode. Wikipedia répertorie une fonction itérative - elle converge facilement si la chute de tension de la résistance est importante. Cette fonction était assez facile à configurer dans Excel. Pour les valeurs de Vf inférieures à 1,8, j'ai codé en dur la valeur d'entrée car la fonction itérative ne convergeait pas. Ensuite, prenez cette valeur Vf pour calculer le Si de la diode idéale. J'ai tracé cela avec le graphique de la feuille de données d'origine.

Par essais et erreurs, vous devriez pouvoir obtenir une valeur RS qui se chevauche assez bien avec les valeurs de la feuille de données. Il ne reste plus qu’à jeter le modèle dans SPICE pour vérifier votre travail.

Vous trouverez ci-dessous le modèle de diode que j'ai vérifié avec HSPICE. Les données de simulation constituent presque un calque parfait pour le graphique de la fiche technique.

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

J'ai utilisé cet article , qui a beaucoup aidé avec les paramètres d'épices de diodes.

J'ai nettoyé ma feuille de calcul et Tyblu l'a mise à disposition pour téléchargement ici . Utilisation à vos risques et périls, résultats non garantis, etc ... etc ...

W5VO
la source
2
C'est une réponse géniale. + ∞
mardi
8

Tout d' abord, je tiens à signaler que vous pouvez lire les paramètres de diodes supplémentaires BV , IBV et CJO directement à partir de la fiche LED comme « Courant inverse » Ir à Vr et comme « capacitance » C .


Ajoutant à l'excellente réponse de W5VO, j'ai quelque peu rationalisé le processus pour moi-même de la manière suivante:

  1. J'ai utilisé le type de graphique du nuage de points XY sous forme de lignes uniquement sous OpenOffice (YMMV avec Excel, etc.) et défini manuellement les minima et maxima des axes, par exemple (X, Y) = (1.4-4.0, 0.01-50.0), pour éviter que le mode automatique soit en dehors de la portée de mes données échantillonnées.

  2. Après les trois premières colonnes de points échantillonnés Vf_sampled , If_sampled ainsi que If_estimate en utilisant l’équation de diode Schokley, j’en ai ajouté une quatrième pour un Vf_estimate calculé . Rappelez-vous que Rs est une résistance en série (voir l’image en bas) et que If_estimate nous donne le courant à utiliser ici. Vous pouvez donc calculer les cellules de la colonne simplement comme
    suit : Vf_estimate = Vf_sampled + (If_estimate * Rs) .

  3. Je pourrais maintenant ajouter une troisième courbe, dans laquelle j'ai utilisé la nouvelle quatrième colonne ( Vf_estimate ) en tant que coordonnée X et la troisième colonne ( If_estimate ) en tant que coordonnée Y, et que je pouvais maintenant facilement faire correspondre à la première courbe (les données échantillonnées). du graphique sur la fiche technique). Notez que je ne voulais pas simplement remplacer la deuxième courbe car la droite était très utile dans mes estimations.

  4. Je suis sûr que je répète un peu W5VO ici, mais cela rappelle le rôle des constantes Is , Rs et N en ce qui concerne la forme de la courbe (dans notre échelle log-lin ):

    • Cela n'affecte que la position des courbes (haut / gauche ou bas / droite).
    • N affecte les pentes des courbes ainsi que les positions (puisqu'il s'agit d'un coefficient linéaire et que les courbes passent toujours par l'origine, qui est toujours en dehors de l'échelle).
    • Rs définit la courbure (le balayage progressif à droite) de la nouvelle troisième courbe (puisqu'il s'agit d'un terme linéaire dans l'autre sens).
  5. Choses que j'ai trouvées qui pourraient être utiles:

    • Vous constaterez peut-être que la deuxième courbe (la ligne droite) doit être très légèrement plus raide et vers le haut / la gauche qu'il semblerait d'après les données échantillonnées, car la courbure due à Rs commence à l'origine.
    • Vous pouvez obtenir un échantillonnage assez précis en zoomant sur la fiche technique (en supposant que PDF), en effectuant une capture d'écran et en l'ouvrant dans votre programme de dessin préféré. Vous pouvez ensuite utiliser, par exemple, l'outil de sélection ou l'outil de ligne droite pour mesurer la distance en pixels entre les lignes d'intervalle et la distance du point à la ligne d'intervalle de valeur inférieure. Pour les axes linéaires, cette fraction se traduit par des valeurs de données simples.
    • Le diagramme de dispersion XY vous permet d'utiliser des points de données arbitraires. Vous pouvez vous en tirer avec moins d'échantillons qu'avec un échantillonnage équidistant. Vous pouvez choisir d’échantillonner les données uniquement aux points les plus simples et les plus nécessaires. Par exemple, sur une échelle semilog, vous pouvez échantillonner à des lignes d'intervalle de l'échelle logarithmique. Si vous en avez besoin, vous pouvez toujours avoir plus de points (lignes) pour les courbes estimées. (Au moins les graphiques OpenOffice semblent ignorer les points pour lesquels il n'y a pas de coordonnée Y correspondante.)
      Notez que les valeurs X ( Vf_sampled ) doivent toujours être dans l'ordre croissant (ou décroissant). Sinon, les lignes deviennent désordonnées.
    • Notez l’échelle des unités que vous estimez / tracez / essayez de trouver (par exemple, des milliampères) et rappelez-vous que SPICE utilise généralement les unités nues (ampères).
    • Notez que le Vt de W5VO est en milli- volts. Si vous utilisez des volts, utilisez la valeur 0.026 .
    • Vérifiez les préfixes métriques (m, p, u, etc.) acceptés par votre simulateur SPICE. L'utilisation de la notation de l'exposant (par exemple, 12E-34) peut être plus simple.
    • La modification de la plage de cellules du graphique semblait toujours réinitialiser la troisième (nouvelle) courbe, de sorte que je devais rajouter la plage de données aux coordonnées X et modifier la troisième colonne en tant que plage Y. Tenez-en compte lorsque vous ajoutez plus de points ou modélisez plusieurs DEL sur le même graphique - effectuez ces modifications en une fois. (La modification des données dans les cellules n'a évidemment pas déclenché la réinitialisation.)
    • Une interpolation courbée sur la carte peut vous induire en erreur si vous dépassez ou dépassez le niveau et ne vous expliquez pas pourquoi, c.-à-d. Où se trouvent les points de données réels.
    • Les segments de droite peuvent également induire en erreur, car les points correspondants se retrouvent à des endroits différents et l'interpolation linéaire ne suit pas la nature logarithmique de la courbe. (Tous les points de données de la courbe échantillonnée et de la nouvelle troisième courbe doivent se trouver en dehors (haut / gauche) des segments de droite de l'autre.)

Autant que je sache, notre modèle de LED est essentiellement une résistance Rs et une diode d'estimation Is / N en série: (-R -> - D-)

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

ppiper
la source
6

J'ai mis au point un programme Python qui modélisera les caractéristiques de polarisation directe d'une diode en fonction des caractéristiques de la feuille de données IV.

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

N'hésitez pas à essayer et commenter.

Martyn Wheeler
la source
5
Bien que votre code semble très utile, les réponses par lien uniquement sont découragées car elles peuvent devenir inutiles à l'avenir si le lien meurt. Vous pourriez peut-être inclure plus de détails sur l'algorithme / le code dans votre réponse pour vous assurer qu'il continue d'être utile si cela se produit jamais.
PeterJ
C'est très utile, en fait. L'utilisation de WebPlotDigitizer a rendu cela très facile.
andy.holmes
2

Voici ceux que j'utiliserais

#       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

Pour votre type VJ = 1.8, BV = 5. Cela vous amène la plupart du chemin là-bas.

Brian Carlton
la source
1
En réalité, VJ est utilisé pour calculer la capacité de jonction en fonction de la tension appliquée. La modification de cette tension et de la tension de claquage inverse ne permet pas de définir réellement les caractéristiques CC brutes. Le résultat final devrait être presque identique au modèle de diode par défaut.
W5VO
1

Si quelqu'un se demande pourquoi sa feuille de données d'une page n'a pas de courbe If / Vf, c'est probablement parce qu'il / elle n'a pas la feuille de données complète. Je sais que, par exemple, Optosupply ne publie que les résumés de première page sur son site Web, mais il vous enverra les spécifications complètes (avec toutes les courbes If / Vf, d'intensité relative et de spectre, etc.) sur demande.

Vous pouvez aussi probablement obtenir des chiffres utilisables pour toutes les valeurs en utilisant une fiche technique d'une autre LED de la même couleur avec la même chimie (du même fabricant). Il suffit de vérifier que les caractéristiques de base (comme les courants, les tensions et les longueurs d’onde) correspondent.

ppiper
la source
0

Excellentes réponses, mais il est facile de résoudre algébriquement l'équation de la diode de Shockley. Notez simplement que le "moins 1" dans la formule est très dépourvu de pertinence pour les courants directs d'un ordre de grandeur supérieur à Is, ce qui est très petit, par exemple, 1E-12 A. Trouvez seulement deux points dans le graphique faciles à lire Valeurs I et V, et connectez-les à la formule. En divisant les deux formules, on élimine Is, ainsi N est facile à calculer. Puis remplissez N dans une formule pour trouver Is.

Voici ma macro 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 vous regardez la formule, vous pourriez reconnaître simplement la description d'une ligne droite avec une pente de q / NkT mais également de delta Log (Id) / delta Vd.

J'obtiens une valeur quelque peu similaire pour Is: 5.94E-18 = 5.94 atto-ampère (W5VO a trouvé 1 aA), mais très différent N = 0,19 (W5VO a trouvé 1,8, typo?), Mais les données sont également calculées sur le même graphique :

capture d'écran de mon LibreOffice Calc

La colonne Vd sont les tensions, Id est le courant de diode selon la formule réelle, Id0 est le courant avec la formule simplifiée où "moins 1" est remplacé par "moins zéro". Comme Id0 est une véritable courbe exponentielle, vous pouvez utiliser le logarithm de la colonne Id0_log. (Vous ne pouvez pas prendre le journal d'une courbe qui devient nulle et négative comme Id) Le tracé est de Id0_Log par rapport à Vd. Dans ce graphique, j'ai fait la partie la plus basse en pointillé, car il ne s'agit plus du courant de diode réel, mais montre la valeur de Is à l'intersection avec l'axe des Y.

Suivre la courbe exponentielle à gauche vous amène asymptotalement à zéro. Mais le "moins 1" soustrait une quantité de Is, de sorte que la courbe de diode réelle traverse l'origine et, avec des tensions négatives, indique un courant de fuite inverse de la quantité Is.

Si la courbe d'origine du fabricant avait été sur un très grand graphique, nous aurions pu simplement utiliser une règle pour prolonger la ligne droite vers le bas pour trouver facilement Is à Vd = 0, puis calculer N, au lieu de calculer d'abord N puis Is avec le au-dessus de la macro. La méthode de la règle a été décrite dans "The Spice Book" par Andrei Vladimirescu (1994).

Roland
la source