Wie modelliere ich eine LED mit SPICE?

Welche Diodenmodifikatoren werden in der Praxis verwendet, um LEDs mit SPICE (Berkeley v.3f5) zu modellieren? Diese stehen mir zur Verfügung:

#       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 Diodenmodell (D)
Die Gleichstromeigenschaften der Diode werden durch die Parameter IS und N bestimmt. Ein ohmscher Widerstand RS ist enthalten. Ladungsspeichereffekte werden durch eine Laufzeit TT und eine nichtlineare Sperrschichtkapazität modelliert, die durch die Parameter CJO, VJ und M bestimmt wird. Die Temperaturabhängigkeit des Sättigungsstroms wird durch die Parameter EG, die Energie und XTI definiert, der Exponent der Sättigungsstromtemperatur. Die Nenntemperatur, bei der diese Parameter gemessen wurden, ist TNOM, die standardmäßig auf den kreislaufweiten Wert gesetzt wird, der auf der Steuerleitung .OPTIONS angegeben ist. Der Rückwärtsdurchbruch wird durch einen exponentiellen Anstieg des Sperrdiodenstroms modelliert und durch die Parameter BV und IBV (beide positive Zahlen) bestimmt.

Verwenden Sie zum Beispiel dieses einfache, billige Rot:

Ich interessiere mich nicht sehr für Hochfrequenzeigenschaften - ich möchte nur in der Lage sein, die IV-Kurve innerhalb ihrer Betriebsspezifikationen anzupassen (-10 uA / -5 V Leckage bis +100 mA / +2,2 V vorwärts):Geben Sie hier die Bildbeschreibung ein

Antworten (6)

Wie Sie bereits sagten, gibt es 3 Parameter, die die DC-Antwort einer Diode bestimmen. Dies sind der Sättigungsstrom ( IS ), der Emissionskoeffizient ( N ) und der ohmsche Widerstand ( RS ). Ich konnte die Kurve mit einer ziemlich hohen Genauigkeit anpassen, daher werde ich mein Modellverfahren dokumentieren.

Das SPICE-Modell für die Diode stimmt sehr gut mit der Schokley-Diodengleichung überein:

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

wo Vt = kT/q = 26mVbei Zimmertemperatur.

  1. Holen Sie sich die tatsächlichen Werte aus den im Datenblatt bereitgestellten Diagrammen, um sie zum Vergleich zu verwenden. Je mehr Punkte desto besser und je genauer desto besser. Unten ist eine Tabelle, die ich anhand der von Ihnen angegebenen Zahl geschätzt habe:

    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. Fügen Sie die Werte in Excel ein und ändern Sie die y-Achse in eine logarithmische Skala. Sie sollten ein Diagramm erhalten, das mit dem ursprünglichen Diagramm aus dem Datenblatt identisch aussieht. Fügen Sie eine weitere Spalte für Ihr Diagramm hinzu, wobei If aus der Durchlassspannung und den Konstanten IS und N berechnet wird . Wir können diese Konfiguration verwenden, um IS und N iterativ zu finden .

  3. Löse nach IS und N auf . Wir versuchen, den linearen Teil des Diagramms abzugleichen (1,3 <= Vf <= 1,7). Das Anpassen von IS verschiebt die Kurve in der y-Achse. Bringen Sie den berechneten Graphen in die gleiche Größenordnung. Der nächste Schritt besteht darin, den Emissionskoeffizienten ( N ) zu finden. N wirkt sich sowohl auf die Amplitude als auch auf die Steigung aus, daher kann eine gewisse Anpassung von IS erforderlich sein, um die Kurve auf demselben Niveau zu halten. Sobald die Steigungen übereinstimmen (die Linien parallel sind), trimmen Sie IS , sodass die berechneten Daten mit den Datenblattwerten übereinstimmen. Ich habe IS = 1e-18, und N=1.8für die Diode, die Sie aufgelistet haben.Geben Sie hier die Bildbeschreibung ein

  4. Identifiziere RS . Das ist etwas knifflig. RS ist für die Krümmung des Stroms ab 1,7 V verantwortlich. Erwägen Sie, den ohmschen Widerstand als Widerstand in Reihe mit der Diode zu modellieren. Wenn der Strom durch die Diode ansteigt, bewirkt der Spannungsabfall über dem ohmschen Widerstand, dass die Vorwärtsdiodenspannung Vf langsamer ansteigt. Bei kleinen Strömen ist dieser Effekt vernachlässigbar.

Das erste, was Sie tun müssen, ist, eine ungefähre Schätzung von RS zu erhalten, die in den genaueren Lösungen verwendet werden kann. Sie können den Effektivwert von RS aus den Datenblattwerten berechnen, indem Sie für Vf unter Verwendung des gemessenen If zurückrechnen . Die Spannungsdifferenz zwischen dem Eingangswert und dem berechneten Vf kann mit dem Durchlassstrom verwendet werden, um einen Widerstand zu erzeugen. Bei den höheren Strömen ist dies ein guter Startwert.

Um den Diodenstrom mit RS darzustellen , müssen Sie zuerst die Diode Vf bei einer gegebenen Spannung für die Widerstands-Dioden-Reihenkombination berechnen. Wikipedia listet eine iterative Funktion auf - sie konvergiert leicht, wenn der Spannungsabfall des Widerstands signifikant ist. Diese Funktion war einfach genug, um in Excel einzurichten. Für Vf -Werte unter 1,8 habe ich den Eingabewert hartcodiert, da die iterative Funktion nicht konvergierte. Nehmen Sie dann diesen Vf- Wert, um das If der idealen Diode zu berechnen. Ich habe dies mit dem ursprünglichen Datenblattdiagramm gezeichnet.

Mit Versuch und Irrtum sollten Sie in der Lage sein, einen RS- Wert zu erhalten, der sich ziemlich gut mit den Datenblattwerten überschneidet. Alles, was übrig bleibt, ist, das Modell in SPICE zusammenzuwerfen, um Ihre Arbeit zu überprüfen.

Unten ist mein Diodenmodell, das ich mit HSPICE verifiziert habe. Die Simulationsdaten sind fast eine perfekte Überlagerung für das Datenblattdiagramm.

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

Ich habe diesen Artikel verwendet , der bei den Diodengewürzparametern sehr geholfen hat.

Ich habe meine Tabelle aufgeräumt und tyblu hat sie hier zum Download bereitgestellt . Nutzung auf eigene Gefahr, Ergebnisse ohne Gewähr, etc... etc...

Dies ist eine großartige Antwort. +∞

Ich habe ein Python-Programm zusammengestellt, das die Vorwärtsvorspannungseigenschaften einer Diode basierend auf den Datenblatt-IV-Eigenschaften modelliert.

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

Probieren Sie es gerne aus und kommentieren Sie es.

Obwohl Ihr Code sehr nützlich aussieht, wird von Nur-Link-Antworten abgeraten, da sie in Zukunft nutzlos werden können, wenn der Link stirbt. Vielleicht könnten Sie Ihrer Antwort weitere Details zum Algorithmus / Code hinzufügen, um sicherzustellen, dass er weiterhin nützlich ist, falls dies jemals passiert.
Das ist in der Tat ziemlich nützlich. Die Verwendung von WebPlotDigitizer machte dies ziemlich einfach.
scheint auf LEDs nicht stabil zu sein. Vielleicht sollten Sie Grenzen für curve_fit angeben?

Zunächst möchte ich darauf hinweisen, dass Sie die zusätzlichen Diodenparameter BV , Ibv und Cjo direkt aus dem LED-Datenblatt als „Reverse Current“ Ir bei Vr und als „Capacitance“ C ablesen können .


Zusätzlich zu der großartigen Antwort von W5VO habe ich den Prozess für mich auf folgende Weise etwas rationalisiert:

  1. Ich habe den Diagrammtyp XY-Streudiagramm als Linien nur unter OpenOffice (YMMV mit Excel usw.) verwendet und die Minima und Maxima der Achsen manuell festgelegt, z. um zu verhindern, dass es automatisch außerhalb des Bereichs meiner abgetasteten Daten liegt.

  2. Nach den ersten drei Spalten der abgetasteten Punkte Vf_sampled , If_sampled sowie der If_estimate unter Verwendung der Schokley-Diodengleichung habe ich eine vierte für eine berechnete Vf_estimate hinzugefügt . Denken Sie daran, dass Rs ein Serienwiderstand ist ( siehe Bild unten) und die If_estimate uns tatsächlich den hier zu verwendenden Strom angibt, sodass Sie die Spaltenzellen einfach wie folgt berechnen können:
    Vf_estimate = Vf_sampled + (If_estimate * Rs) .

  3. Ich könnte jetzt eine dritte Kurve hinzufügen, in der ich die neue vierte Spalte ( Vf_estimate ) als X-Koordinate und die dritte Spalte ( If_estimate ) als Y-Koordinate verwendet habe und die ich jetzt leicht mit der ersten Kurve (den abgetasteten Daten) abgleichen könnte aus der Grafik im Datenblatt). Beachten Sie, dass ich die zweite Kurve nicht einfach ersetzen wollte, da die gerade Linie bei meinen Schätzungen sehr hilfreich war.

  4. Ich bin mir sicher, dass ich W5VO hier etwas wiederhole, aber es erinnert nur an die Rolle der Konstanten Is , Rs und N in Bezug auf die Kurvenform (in unserer Log-Lin- Skala):

    • Er beeinflusst nur die Position der Kurven (oben/links oder unten/rechts).
    • N wirkt sich sowohl auf die Kurvensteigungen als auch auf die Positionen aus (da es sich um einen linearen Koeffizienten handelt und die Kurven immer durch den Ursprung gehen, der immer außerhalb der Skala liegt).
    • Rs definiert die Krümmung (die fortschreitende Bewegung nach rechts) der neuen dritten Kurve (da es sich um einen linearen Term in der anderen Richtung handelt).
  5. Dinge, die ich gefunden habe, die nützlich sein könnten:

    • Möglicherweise stellen Sie fest, dass die zweite Kurve (die gerade Linie) etwas steiler und nach oben/links verlaufen muss, als es aus den Stichprobendaten hervorgeht, da die Krümmung aufgrund von Rs am Ursprung beginnt.
    • Sie können ziemlich genaue Stichproben erhalten, indem Sie in das Datenblatt hineinzoomen (unter der Annahme von PDF), eine Bildschirmabdeckung erstellen und sie in Ihrem bevorzugten Zeichenprogramm öffnen. Sie können dann zB mit dem Auswahl- oder Geraden-Werkzeug den Abstand in Pixeln zwischen den Intervalllinien und den Abstand des Punktes zur niederwertigen Intervalllinie messen. Bei Linearachsen lässt sich dieser Bruchteil in einfache Datenwerte umwandeln.
    • Mit dem XY-Streudiagramm können Sie beliebige Datenpunkte verwenden. Sie können mit weniger Abtastungen auskommen als mit äquidistanter Abtastung. Sie können die Daten nur an den Stellen abtasten, an denen es am einfachsten ist und wo es unbedingt erforderlich ist. Auf einer halblogarithmischen Skala können Sie beispielsweise an den Intervalllinien der logarithmischen Skala abtasten. Bei Bedarf können Sie noch mehr Punkte (Zeilen) für die geschätzten Kurven haben. (Zumindest scheinen OpenOffice-Diagramme die Punkte zu ignorieren, für die es keine entsprechende Y-Koordinate gibt.)
      Beachten Sie, dass die X-Werte ( Vf_sampled ) immer noch in aufsteigender (oder absteigender) Reihenfolge sein müssen. Sonst werden die Linien durcheinander.
    • Beachten Sie die Skala der Einheiten, die Sie schätzen/aufzeichnen/zu finden versuchen (z. B. Milliampere), und denken Sie daran, dass SPICE im Allgemeinen die reinen Einheiten (Ampere) verwendet.
    • Beachten Sie, dass Vt von W5VO in Millivolt angegeben ist . Wenn Sie Volt verwenden, verwenden Sie den Wert 0,026 .
    • Überprüfen Sie, welche metrischen Präfixe (m, p, u usw.) Ihr SPICE-Simulator akzeptiert. Die Verwendung der Exponentenschreibweise (z. B. 12E-34) kann einfacher sein.
    • Das Bearbeiten des Zellbereichs für das Diagramm schien die (neue) dritte Kurve immer zurückzusetzen, sodass ich den Datenbereich erneut zu den X-Koordinaten hinzufügen und die dritte Spalte erneut als Y-Bereich ändern musste. Berücksichtigen Sie dies, wenn Sie weitere Punkte hinzufügen oder mehrere LEDs auf demselben Diagramm modellieren - nehmen Sie solche Änderungen auf einmal vor. (Das Ändern der Daten innerhalb der Zellen hat den Reset offensichtlich nicht ausgelöst.)
    • Eine gekrümmte Interpolation auf dem Diagramm kann Sie durch Über- oder Unterschwingen in die Irre führen und Ihnen nicht zeigen, warum, dh wo sich die tatsächlichen Datenpunkte befinden.
    • Gerade Liniensegmente können auch irreführend sein, da die entsprechenden Punkte an unterschiedlichen Stellen enden und die lineare Interpolation die logarithmische Natur der Kurve nicht verfolgt. (Alle Datenpunkte der abgetasteten Kurve und der neuen dritten Kurve sollten sich außerhalb (oben/links) der geraden Liniensegmente der anderen befinden.)

AFAIK, unser Modell für die LED ist im Wesentlichen ein Rs - Widerstand und eine Is / N - Schätzdiode in Reihe: (-R->-D-)

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Hier sind die, die ich verwenden würde

#       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

Für Ihren VJ=1.8 Typ, BV=5. Das bringt Sie am meisten dorthin.

Tatsächlich wird VJ verwendet, um die Sperrschichtkapazität basierend auf der angelegten Spannung zu berechnen. Durch Ändern dieser und der Rückwärtsdurchbruchspannung werden die groben DC-Eigenschaften nicht wirklich eingestellt. Das Endergebnis sollte fast identisch mit dem Standard-Diodenmodell sein.

Wenn sich jemand fragt, warum sein/ihr einseitiges Datenblatt keine If/Vf-Kurve hat, liegt es wahrscheinlich daran, dass er/sie nicht das vollständige Datenblatt hat. Ich weiß, dass z. B. Optosupply nur die Zusammenfassungen der ersten Seite auf ihrer Website veröffentlicht, aber sie senden Ihnen auf Anfrage die vollständigen Spezifikationen (mit allen If / Vf-, relativen Intensitäts- und Spektrumskurven usw.).

Sie können wahrscheinlich auch brauchbare Zahlen für alle Werte erhalten, indem Sie ein Datenblatt einer anderen LED derselben Farbe mit derselben Chemie (vom selben Hersteller) verwenden. Überprüfen Sie einfach, ob die grundlegenden Eigenschaften (wie Ströme, Spannungen und Wellenlängen) übereinstimmen.

Tolle Antworten, aber es ist einfach, die Shockley-Diodengleichung algebraisch zu lösen. Beachten Sie nur, dass das "minus 1" in der Formel für Durchlassströme, die eine Größenordnung größer als Is sind, was sehr klein ist, z. B. 1E-12 A, sehr irrelevant ist. Finden Sie nur zwei Punkte in der Grafik mit leicht zu lesen I- und V-Werte und setze diese in die Formel ein. Durch Dividieren beider Formeln wird Is eliminiert, sodass N einfach zu berechnen ist. Geben Sie dann N in eine Formel ein, um Is zu finden.

Hier sind meine LibreOffice Calc-Makros in 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

Wenn Sie sich die Formeln ansehen, erkennen Sie vielleicht einfach die Beschreibung einer Geraden mit der Steigung von q/NkT, aber auch von Delta Log(Id) / Delta Vd.

Ich erhalte einen etwas ähnlichen Wert für Is: 5,94E-18 = 5,94 Atto-Ampere (W5VO fand 1 aA), aber ein viel anderes N = 0,19 (W5VO fand 1,8, Tippfehler?), dennoch werden die Daten auch auf das gleiche Diagramm zurückgerechnet :

Screenshot meines LibreOffice Calc

Die Spalte Vd sind die Spannungen, Id ist der Diodenstrom gemäß der reellen Formel, Id0 ist der Strom mit der vereinfachten Formel, bei der das "minus 1" in "minus null" geändert wird. Da Id0 eine echte Exponentialkurve ist, können Sie den Logarithmus in Spalte Id0_log nehmen. (Sie können nicht den Log einer Kurve nehmen, die Null und negativ wird, wie Id) Der Plot ist von Id0_Log gegen Vd. In diesem Diagramm habe ich den untersten Teil gepunktet gemacht, weil es dort NICHT mehr der tatsächliche Diodenstrom ist, sondern den Wert von Is am Schnittpunkt mit der Y-Achse zeigt.

Wenn Sie der Exponentialkurve nach links folgen, gelangen Sie asymptotisch auf Null. Aber das "minus 1" subtrahiert einen Betrag von Is, so dass die echte Diodenkurve durch den Ursprung geht und bei negativen Spannungen einen Rückwärtsleckstrom von Betrag Is zeigt.

Wenn die ursprüngliche Herstellerkurve auf einem wirklich großen Log-Plot gewesen wäre, hätten wir einfach ein Lineal verwenden können, um die gerade Linie nach unten zu verlängern, um Is bei Vd = 0 leicht zu finden und dann N zu berechnen, anstatt zuerst N und dann Is mit zu berechnen über Makros. Die Linealmethode wurde in "The Spice Book" von Andrei Vladimirescu (1994) beschrieben.