SPICEでLEDをモデリングするにはどうすればよいですか?


36

SPICE(Berkeley v.3f5)でLEDをモデリングするために実際に使用されるダイオード修飾子は何ですか? これらは私に利用可能です:

#       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ダイオードモデル(D)ダイオード
のDC特性は、パラメータISおよびNによって決まります。オーム抵抗RSが含まれます。電荷蓄積効果は、通過時間、TT、およびパラメーターCJO、VJ、およびMによって決定される非線形空乏層キャパシタンスによってモデル化されます。飽和電流の温度依存性は、パラメーターEG、エネルギー、およびXTIによって定義されます。飽和電流温度指数。これらのパラメーターが測定された公称温度はTNOMであり、デフォルトは.OPTIONS制御線で指定された回路全体の値です。逆ブレークダウンは、逆ダイオード電流の指数関数的な増加によってモデル化され、パラメータBVおよびIBV(両方とも正の数)によって決定されます。

たとえば、次の基本的な安価な赤を使用します。

高周波特性についてはあまり気にしません-その動作仕様(-10uA / -5Vリークから+ 100mA / + 2.2 'ish V順方向)内でIVカーブを一致させたいだけです: ここに画像の説明を入力してください

回答:


47

述べたように、ダイオードのDC応答を決定する3つのパラメーターがあります。それらは、飽和電流(IS)、放射係数(N)、およびオーム抵抗(RS)です。かなり高い精度で曲線をフィットさせることができたので、モデル手順を文書化します。

ダイオードのSPICEモデルは、Schokleyダイオードの方程式とほぼ一致しています。

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

どこVt = kT/q = 26mV室温で。

  1. データシートで提供されるグラフから実際の値を取得して、比較に使用します。ポイントが多ければ多いほど、正確であればあるほど良いです。以下は、あなたが提供した数値から推定した表です。

    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. 値をExcelに接続し、y軸をログスケールに変更します。データシートから元のグラフと同じように見えるグラフを取得する必要があります。順電圧と定数ISおよびNから計算される場合、グラフに別の列を追加します。この構成を使用して、ISおよびNを繰り返し見つけることができます。

  3. ISNを解きます。グラフの線形部分(1.3 <= Vf <= 1.7)を一致させようとしています。ISを調整すると、曲線がy軸に移動します。計算されたグラフを同じ大きさで取得します。次のステップは、放出係数(N)を見つけることです。Nは、振幅と勾配の両方に影響するため、カーブを同じ球場に保つにはISの調整が必要になる場合があります。勾配が一致したら(線が平行になったら)、ISをトリミングして、計算されたデータがデータシートの値と一致するようにします。私が得たIS = 1e-18、とN=1.8ダイオードのためにあなたが記載されています。 ここに画像の説明を入力してください

  4. RSを特定します。これは少し注意が必要です。RSは、1.7V以上の電流のカーブを担当します。オーム抵抗をダイオードと直列の抵抗としてモデリングすることを検討してください。ダイオードを流れる電流が増加すると、オーム抵抗両端の電圧降下により、順方向ダイオード電圧Vfの増加が遅くなります。小さな電流では、この影響は無視できます。

最初にすることは、より正確なソリューションで使用するRSの概算を取得することです。測定されたIfを使用してVfを逆算することにより、データシート値からRSの実効値を計算できます。入力値と計算されたVfの電圧差を順方向電流とともに使用して、抵抗を生成できます。より高い電流では、これは適切な開始値になります。

RSを使用してダイオード電流をプロットするには、最初に抵抗とダイオードの直列結合の電圧を与えてダイオードVfを計算する必要があります。ウィキペディアには反復関数がリストされています -抵抗器の電圧降下が大きい場合は簡単に収束します。この関数は、Excelでセットアップするのに十分簡単でした。以下のためのVf反復関数が収束しなかったため、1.8以下の値、Iは入力値をハードコーディングされました。次に、このVf値を使用して、理想ダイオードのIfを計算します。これを元のデータシートグラフでプロットしました。

試行錯誤を使用すると、データシートの値とかなり良好に重複するRS値を取得できるはずです。あとは、SPICEでモデルを一緒に投げて作業を検証するだけです。

以下は、HSPICEを使用して検証したダイオードモデルです。シミュレーションデータは、データシートグラフのほぼ完璧なオーバーレイです。

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

私はこの記事を使用しましたが、これはダイオードスパイスパラメーターに大いに役立ちました。

スプレッドシートをクリーンアップしました。tybluがここからダウンロードできるようになりました。ご自身の責任で、結果が保証されていないなどを使用してください...など


2
これは素晴らしい答えです。+∞–
tyblu

8

最初に、LEDデータシートから追加のダイオードパラメーターBVIbvおよびCjoVrでの「逆電流」Irおよび「静電容量」Cとして直接読み取ることができることを指摘します。


W5VOの素晴らしい答えに加えて、次の方法でプロセスを合理化しました。

  1. Iは、グラフの種類使用XY散布図のようにラインのみ、(X、Y)=(1.4から4.0まで、0.01から50.0)例えば、OpenOfficeの(エクセル、等とYMMV)に、手動で軸の最小値と最大値を設定しますオートレンジからサンプリングされたデータの範囲外にそれを防ぐために。

  2. 標本点の最初の3列の後Vf_sampledIf_sampledならびにIf_estimate Schokleyダイオード方程式を使用して、Iを加え算出するための1つVf_estimateを。ことを覚えておいて、Rsがあり、直列抵抗(下の画像を参照)、If_estimateは 1が単に列のセルを計算することができますので、実際に、ここで使用するように私たちの現在を与える:
    Vf_estimate = Vf_sampled +(If_estimate *ルピー)

  3. X座標として新しい4番目の列(Vf_estimate)を使用し、Y座標として3番目の列(If_estimate)を使用し、最初の曲線(サンプリングされたデータ)データシートのグラフから)。私の推定では直線が非常に有用だったため、単純に2番目の曲線を置き換えたくないことに注意してください。

  4. ここでW5VOを幾分繰り返していると思いますが、曲線形状(log-linスケール)に関して定数IsRs、およびNの役割を思い起こさせることはできません。

    • あるのみ(上/下/左または右)のカーブの位置に影響を与えます。
    • Nは、曲線の傾き位置に影響します(線形係数であり、曲線は常に原点を通過するため、常に原点の外側にあります)。
    • Rsは、新しい3番目の曲線の曲率(右方向への漸進的なスイープ)を定義します(他の方向の線形項であるため)。
  5. 役に立つ可能性のあるもの:

    • Rsによる曲率は原点から始まるため、2番目の曲線(直線)は、サンプリングされたデータから見られるよりもわずかに急で上/左にある必要があります。
    • データシートを拡大し(PDFを想定)、スクリーンキャップを取得してお気に入りの描画プログラムで開くと、かなり正確なサンプリングを取得できます。次に、選択ツールまたは直線ツールを使用して、間隔線間のピクセル単位の距離と、より低い値の間隔線までのポイントの距離を測定できます。線形軸の場合、その分数は簡単なデータ値に変換されます。
    • XY散布図では、データの任意のポイントを使用できます。等距離サンプリングよりも少ないサンプルで逃げることができます。最も簡単で厳密に必要な場所でのみデータをサンプリングすることを選択できます。たとえば、片対数スケールでは、対数スケールの間隔線でサンプリングできます。必要に応じて、推定曲線のポイント(行)をさらに増やすことができます。(少なくともOpenOfficeチャートは、対応するY座標がないポイントを無視しているようです。)
      X値(Vf_sampled)は依然として昇順(または降順)である必要があることに注意してください。そうしないと、線が混乱します。
    • 推定/チャート/検索しようとするユニットの規模(たとえば、ミリアンペア)に注意し、SPICEは通常、むき出しのユニット(アンペア)を使用することに注意してください。
    • W5VOのことに注意してくださいVtがであるミリボルト。ボルトを使用している場合は、値0.026を使用します。
    • SPICEシミュレーターが受け入れるメトリックプレフィックス(m、p、uなど)を確認します。指数表記(12E-34など)を使用する方が簡単な場合があります。
    • グラフのセル範囲を編集すると、常に(新しい)3番目の曲線がリセットされるため、データ範囲をX座標に再追加し、3番目の列をY範囲として再変更する必要がありました。さらにポイントを追加したり、同じチャートで複数のLEDをモデリングするときは、そのことを考慮してください。そのような変更を一度に行ってください。(セル内のデータを変更しても、明らかにリセットはトリガーされませんでした。)
    • チャート上の曲線補間は、オーバーシュートまたはアンダーシュートによって道に迷う可能性があり、データの実際のポイントがどこにあるのかを示していない場合があります。
    • また、対応するポイントが異なる場所に配置され、線形補間が曲線の対数的性質を追跡しないため、直線セグメントも誤解を招く可能性があります。(サンプリングされた曲線と新しい3番目の曲線のデータのすべてのポイントは、他の直線セグメントの外側(上/左)にある必要があります。)

私の知る限り、LEDのモデルは基本的にRs抵抗器と直列のIs / N推定ダイオードです:(-R->-D-)

回路図

この回路のシミュレーションCircuitLabを使用して作成された回路


6

データシートIVの特性に基づいてダイオードの順バイアス特性をモデル化するPythonプログラムを作成しました。

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

気軽に試してコメントしてください。


5
コードは非常に便利に見えますが、リンクのみの回答は、リンクが切れると将来的に役に立たなくなる可能性があるため推奨されません。おそらく、あなたは答えにアルゴリズム/コードの詳細を含めて、それが起こった場合でも有用であることを保証することができます。
PeterJ 14

実際、これは非常に便利です。WebPlotDigitizerを使用すると、これが非常に簡単になりました。
andy.holmes

2

ここに私が使用するものがあります

#       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

VJ = 1.8 typの場合、BV = 5。これで、ほとんどの方法で取得できます。


1
実際には、VJは印加電圧に基づいて接合容量を計算するために使用されます。これと逆ブレークダウン電圧を変更しても、実際には総DC特性は設定されません。最終結果は、デフォルトのダイオードモデルとほぼ同じになるはずです。
W5VO

1

単一ページのデータシートにIf / Vf曲線がない理由がわからない場合は、おそらく完全なデータシートがないためです。たとえば、OptosupplyはWebサイトで最初のページの概要のみを公開していますが、リクエストに応じてすべての仕様(すべてのIf / Vf、相対強度、スペクトル曲線など)を送信します。

また、同じ化学物質(同じメーカー)の同じ色の別のLEDのデータシートを使用することで、すべての値に対して使用可能な数値を取得できる可能性があります。基本的な特性(電流、電圧、波長など)が一致することを確認してください。


0

すばらしい答えですが、Shockleyダイオードの方程式を代数的に簡単に解くことができます。式の「マイナス1」は、1E-12 Aなどの非常に小さいIsよりも1桁大きい順方向電流には非常に無関係であることに注意してください。 IとVの値、およびこれらを式にプラグインします。両方の式を分割するとIsが削除されるため、Nの計算は簡単です。次に、式にNを入力してIsを見つけます。

以下は、BasicのLibreOffice Calcマクロです。

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

数式を見ると、傾きがq / NkTの直線の記述だけでなく、デルタLog(Id)/デルタVdの記述も認識できます。

Isの値はいくぶん似ています:5.94E-18 = 5.94 at-ampere(W5VOは1 aAを発見)、N = 0.19(W5VOは1.8を発見、typo?)、それでもデータは同じグラフに戻ります:

LibreOffice Calcのスクリーンショット

列Vdは電圧、Idは実際の式によるダイオード電流、Id0は「マイナス1」が「マイナスゼロ」に変更された簡易式の電流です。Id0は真の指数曲線なので、列Id0_logで対数を取ることができます。(Idのようにゼロで負になる曲線のログを取ることはできません)プロットはId0_Log対Vdからのものです。このプロットでは、実際のダイオード電流ではなく、Y軸との交点でIsの値を示しているため、最下部に点線を付けました。

左側の指数曲線に従うと、漸近的にゼロになります。しかし、「マイナス1」はIsの量を減算するため、実際のダイオード曲線は原点を通過し、負の電圧では、Isの量の逆リーク電流を示します。

元のメーカーの曲線が非常に大きなログプロット上にあった場合、Vd = 0でIsを簡単に見つけて最初にNを計算し、次にIs上記のマクロ。定規の方法は、Andrei Vladimirescu(1994)の「The Spice Book」に記載されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.