Verwendung von Spice/PSpice-Modellen (Vishay-Optokoppler) in LTSpice

Ich versuche, die von Vishay bereitgestellten Spice-Modelle des Hochgeschwindigkeits-Optokopplers 6N137 in LTSpice zu verwenden. (Quelle: http://www.vishay.com/optocouplers/list/product-84732/ )

Sowohl das „PSpice“-Modell als auch das „Spice“-Modell scheitern jedoch.

Beim Modell „PSpice“:

WARNING: Can't resolve .param dpwr=$g_dpwr
WARNING: Can't resolve .param dgnd=$g_dgnd
Fatal Error: Port(pin) count mismatch between the definition of subcircuit "and2" and instance: "xx1:u2"
The instance has more connection terminals than the definition.

Beim Modell „Spice“:

Too few nodes: au1.a [1] [du1.a] adc_a

Was muss ich tun, damit beides in LTSpice funktioniert?

Ist es zufällig bereits in ltwiki.org/files/LargeCollection.zip von ltwiki.org/?title=Components_Library_and_Circuits enthalten . Es ist eine sehr gute Ressource. Können Sie andernfalls Ihre Komponente von Grund auf neu erstellen, Ihre Ports definieren, ihnen Namen geben und Ihr Modell gemäß zen22142.zen.co.uk/ltspice/newsymbols.htm hinzufügen ?
kannst du den schaltplan posten
@CL Danke, dass du ein Kopfgeld für meine Frage angeboten hast! Bitte zögern Sie nicht, die Frage zu bearbeiten, wenn Sie Ideen haben, um sie besser an Ihre eigenen Anforderungen anzupassen.
@ElectronS Welcher Schaltplan? Ich versuche, die Modelldateien zu verwenden, die Sie auf der in der Frage verlinkten Seite herunterladen können.

Antworten (3)

In der Tat ist das Modell nicht für LTSpice geeignet (wie üblich ...).

Hier ist das optimierte 6N137-Modell. Was falsch war, war die Verwendung des internen UND-Gatters, das den Freigabe- und den Opto-Eingang kombiniert. Es verwendete die PSpice-Syntax. Außerdem wurde für den internen Opto-Schalter eine Td (Verzögerung) angegeben, die von LTspice auf dem ISWITCH-Modell nicht unterstützt wird.

Also habe ich im Grunde eine neue AND2-Teilschaltung neu definiert, um die vorhandene zu ersetzen (mit einer einfachen IF-Funktion und dem &-Operator), und eine DELAY20n-Teilschaltung hinzugefügt, um die fehlende Verzögerung des Schalters zu simulieren (mit einem kleinen RC-Filter). Die Hauptteilschaltung musste ich natürlich entsprechend leicht modifizieren.

Nun, ich kann nicht garantieren, dass sich das neue Modell genau wie das Original verhält (eigentlich kann ich garantieren, dass es sich nicht genau wie das Original verhält), aber ich denke, die Abweichungen sind gering. Ich habe die verschiedenen Verzögerungen mit einer Testschaltung überprüft, und sie scheinen innerhalb der Spezifikation zu liegen.

Bitte schön:

************************************************
**  enable- high, NMOS output
**  --  6N137,VO2601/2611, VO0600/0601/0611 --- 
************************************************
** test conditions:VCC=5V, RL=350, CL=15pF, IF=10mA
** characteristics: VF=1.4V, ITH=5mA, VEH=2V, VEL=0.8V
** VOL=0.6V, tpLH=TpHL=70nS, tr=22nS, tf=17nS
**
** Model Node - Symbol - Pin
** 1 (DA)       A         2
** 2 (DK)       K         3
** 3 (GND)    GND         5
** 4 (VO)      VO         6
** 5 (VE)      VE         7
** 6 (VCC)    VCC         8
**
*$
.SUBCKT 6N137  DA DK GND VO VE VCC
dD1  DA 6  DEMIT
vV1  6  DK  DC 0
wW1  VCC 7  vV1  I_SW1
rR3  GND 7  1K  
xU3  7 7delay GND DELAY20n
xU2  7delay VE 8 VCC GND AND2
rR4  8  9 5K
rR5  VCC VE 100K
MQ1 VO 9 GND GND MOST1 W=9.7M L=2U  ;NMOS OUTPUT
.MODEL    DEMIT   D 
+IS=1.69341E-12 RS=2.5 N=2.4  XTI=4
+EG=1.52436 CJO=1.80001E-11 VJ=0.75 M=0.5 FC=0.5
.MODEL MOST1 NMOS (LEVEL=3 KP=25U VTO=2 RD=45)
.MODEL I_SW1 ISWITCH (Roff=1e6 Ron=1 IT=4.9m IH=0.1m)
.ENDS
*$

***-------------------------------------------------------------------------
* 2 INPUT AND GATE
*
.SUBCKT AND2 A B Y VCC GND
ETHRS   THRS GND VALUE {1.5} ; Logic level threshold
EGATE   YINT GND VALUE {IF(V(A) > V(THRS) & V(B) > V(THRS), V(VCC), V(GND))}
RINT YINT Y 1
CINT Y 0 10p
.ENDS

***------------------------
* DELAY
*
.SUBCKT DELAY20n IN OUT GND
E IN2 GND VALUE {V(IN)}
Rdelay IN2 OUT 10k
Cdelay OUT GND 2p
.ENDS

Und als Bonus eine einfache Asy-Symboldatei, die damit verwendet werden kann:

Version 4
SymbolType BLOCK
RECTANGLE Normal 64 64 -64 -64
SYMATTR Prefix X
SYMATTR Value 6N137
PIN -64 -32 LEFT 8
PINATTR PinName A
PINATTR SpiceOrder 1
PIN -64 32 LEFT 8
PINATTR PinName K
PINATTR SpiceOrder 2
PIN 64 48 RIGHT 8
PINATTR PinName GND
PINATTR SpiceOrder 3
PIN 64 16 RIGHT 8
PINATTR PinName VO
PINATTR SpiceOrder 4
PIN 64 -16 RIGHT 8
PINATTR PinName VE
PINATTR SpiceOrder 5
PIN 64 -48 RIGHT 8
PINATTR PinName VCC
PINATTR SpiceOrder 6

Für die LTSpice-Benutzer, die nicht wissen, wie man das Ganze benutzt (weil es nicht einfach ist): Kopieren Sie den Inhalt der asy-Symboldatei in eine Datei mit dem Namen 6N137.ASY und kopieren Sie die gesamten Spice-Modelldetails von oben in a Datei namens 6N137.LIB. Platzieren Sie dann aus Ihrem Schaltplan die 6N137-Komponente (aus der ASY-Datei). Fügen Sie auch irgendwo in Ihrem Schaltplan eine .include 6N137.libDirektive hinzu. Du bist fertig. Beachten Sie nur, dass sich alle Dateien im selben Ordner befinden müssen.

Ich habe auch versucht, die gleichen Probleme mit dem Vishay-Modell für den 6N137 zu verwenden (und aufgedeckt). Ich habe dann die von Dim bereitgestellte Lösung ohne Erfolg ausprobiert (sorry, aber da ist sie.) Also musste ich entweder Zeit damit verbringen, die Fehler zu beheben (es gibt ein paar Bereiche, die meine Aufmerksamkeit und Neugier geweckt haben, aber ich war es nicht sicher) oder auf der Yahoo Groups-Website nach LTspice suchen. Ich beschloss, dort anzufangen und konnte ein schönes Symbol und ein Modell finden, das für mich funktionierte.

Ich habe dann ein paar kleine Änderungen in Bezug darauf vorgenommen, wie das Symbol die Bibliothek angibt. (Das Symbol kann es angeben, so dass man kein .include im Schaltplan verwenden muss, um es zu finden.) Ich habe es auch so eingerichtet, dass es möglich ist, mehrere Modelle (zumindest ähnliche) in derselben Modelldatei zu platzieren und LTspice stellt automatisch eine Dropdown-Auswahlliste bereit. (Dies verwendet eine nicht dokumentierte „Funktion“ von LTspice.)

Hier ist das Symbol, um zu beginnen. Kopieren Sie es und fügen Sie es in eine Datei ein, die sich im Ordner ../lib/sym befindet (oder in einem beliebigen anderen Verzeichnis). Verwenden Sie beim Speichern den Dateinamen 6N137.ASY.

Version 4
SymbolType CELL
LINE Normal -96 -48 -56 -48
LINE Normal -56 -16 -56 -48
LINE Normal -56 16 -56 48
LINE Normal -96 48 -56 48
LINE Normal -80 -16 -32 -16
LINE Normal -56 16 -32 -16
LINE Normal -56 16 -80 -16
LINE Normal -80 16 -32 16
LINE Normal 128 -32 112 -32
LINE Normal 24 0 12 -4
LINE Normal 24 0 20 -12
LINE Normal 20 -4 24 0
LINE Normal 112 49 128 49
LINE Normal 112 16 112 49
LINE Normal 96 16 112 16
LINE Normal 96 -23 96 25
LINE Normal 112 -16 96 -16
LINE Normal 112 -32 112 -16
LINE Normal 91 25 91 -23
LINE Normal 80 0 91 0
LINE Normal 55 25 55 -23
LINE Normal 44 1 55 1
LINE Normal 44 -64 44 1
LINE Normal 128 -64 44 -64
LINE Normal 64 -22 64 -96
LINE Normal 102 12 108 16
LINE Normal 102 20 108 16
RECTANGLE Normal -96 -96 128 64
ARC Normal -4 12 20 -12 16 -4 -4 0
ARC Normal -28 12 -4 -12 -28 4 -4 0
ARC Normal 34 -23 80 25 55 25 55 -23
TEXT 105 -77 Left 2 E
TEXT 28 -77 Left 2 V+
WINDOW 0 -32 -112 Left 2
WINDOW 38 -16 80 Left 2
SYMATTR SpiceModel 6N137
SYMATTR Description High Speed Photocoupler
SYMATTR Prefix X
SYMATTR ModelFile 6N137.SUB
PIN -96 -48 NONE 0
PINATTR PinName A
PINATTR SpiceOrder 1
PIN -96 48 NONE 0
PINATTR PinName K
PINATTR SpiceOrder 2
PIN 128 48 NONE 0
PINATTR PinName S
PINATTR SpiceOrder 3
PIN 128 -32 NONE 0
PINATTR PinName C
PINATTR SpiceOrder 4
PIN 64 -96 NONE 8
PINATTR PinName V
PINATTR SpiceOrder 5
PIN 128 -64 NONE 8
PINATTR PinName E
PINATTR SpiceOrder 6

Beachten Sie auch, dass ich oben CELL und nicht BLOCK verwendet habe. So sollte ein Symbol nominell aufgebaut sein. (Der BLOCK-Typ ist für Zeiten, in denen das Symbol eine andere Seite eines hierarchischen Schaltplans darstellt.)

Nun zur Modelldatei. Aber nur für einen Moment, gehen Sie zuerst nach oben und suchen Sie nach einer Zeile, die besagt, SYMATTR ModelFile 6N137.SUBund notieren Sie dort dasselbe. Das ist der Name der Datei, die Sie beim Speichern für die Modelldatei verwenden müssen. Wenn Sie einen anderen Namen verwenden möchten, müssen Sie diese Zeile in der obigen Symboldatei ändern, damit sie übereinstimmt. Das heißt, hier ist die Modelldatei:

.subckt 6N137 A K S C V E
D1 A N001 LED
C1 A K 1p
V1 N001 K 0
R2 ta S 100
C2 ta S 200p
B2 S ta I=TABLE(I(V1), 0,0,2.5m,50m,15m, 55m)
C10 A C 0.1p
C11 K S 0.1p
M1 C ga S S NMOS1
C5 C ga 10p
De1 E V Dd1
R6 V E 6k
R7 E S 100k
B4 0 en I=TABLE(V(E,S), 0,0,1.4,0,1.5, 1m)
R4 en 0 1k
R5 V S 1.5k
C6 C S 10p
C4 en 0 10p
B3 S ga I=V(ta,s)*V(en)*10m
R3 ga S 100
C3 ga S 20p
.model LED D(Is=1e-17 Rs=4 N=1.5 Eg=1.7 CJO=5p Tt=5n)
.model NMOS1 NMOS(Vt0=2 Kp=0.03 Rs=5 Rd=5 lambda=0.02)
.model Dd1 D(Is=1e-7 Rs=10 Cjo=5p Tt=5n)
.ends

Speichern Sie diese Datei im Ordner .../lib/sub (oder in einem beliebigen anderen Verzeichnis Ihrer Wahl ... obwohl Sie möglicherweise die vollständige Dateispezifikation in der Symboldatei verwenden müssen, es sei denn, LTspice wurde anderweitig über den Ordner informiert.)

Das obige sollte mit LTspice funktionieren.


Wenn Sie mehrere verwandte Modelle haben möchten (Modelle, die ohne Verwirrung dasselbe Symbol verwenden, aber möglicherweise entweder unterschiedliche Ansätze oder etwas unterschiedliche Verhaltensweisen haben), können Sie sie der obigen Modelldatei hinzufügen. Fügen Sie sie einfach über oder unter (oder zwischen) anderen .SUBCKT/.ENDS-Unterschaltungen ein. Stellen Sie natürlich sicher, dass sie anders benannt sind! Wenn Sie dies tun, stellt LTspice ein Dropdown-Menü für das Symbol bereit, mit dem der Benutzer das Gerät aus einer Liste auswählen kann. Was nett ist.

Typischerweise bedeutet dies, dass der Symbolname auf der SYMATTR SpiceModelLinie im Symbol platziert werden muss und nicht auf der SYMATTR ValueLinie. (Die SYMATTR ValueZeile muss leer sein, denke ich.) Und das bedeutet, dass das Symbol selbst wahrscheinlich bearbeitet werden muss, damit das SpiceModel und nicht der Wert angezeigt wird.

Nur ein paar Hinweise zum Erstellen von Symbolen mit Listen, die LTspice in einem Dropdown-Menü verarbeiten kann.


Ich wünschte, ich hätte Dims Sachen schnell zum Laufen bekommen. Aber es lief so schlecht, dass mich nur ein flüchtiger Blick davon überzeugte, mit etwas zu beginnen, das von LTspice-Liebhabern gründlich getestet wurde. Und es hat einfach funktioniert. Was nett ist.

Seltsam, das habe ich damals wirklich ausgiebig getestet. Wie auch immer, +1.
@dim Ich benutze es auf eine bestimmte Weise, die vielleicht zu meinen Schwierigkeiten geführt hat. Ich habe auch gesehen, dass die E-Typen in AND2 verwendet werden und diese nicht so zuverlässig simulieren wie andere Ansätze. Also beschloss ich, weiter zu suchen und ging dafür zur Yahoo-Gruppe. (Helmut erledigt dort drüben den Job eines Freiberuflers, der die Gruppe verwaltet und dazu beiträgt – die beste unbezahlte Unterstützung, die man nicht kaufen kann.) Die, die ich hier gepostet habe, „hat einfach funktioniert“. Also dachte ich, ich würde es hinzufügen.

Wie gesagt, Ihr Schaltplansymbol stimmt nicht mit der Modelldatei überein. Der einfachste und schnellste Weg, dies zu beheben, ist das automatische Generieren des Schaltplansymbols aus der Modelldatei.

Lesen Sie die häufig gestellten Fragen in der ltpsice-Hilfe für Modelle von Drittanbietern, die auf die schematische Symbolerstellung verweisen. Grundsätzlich öffnen Sie die Textdatei in ltspice und klicken mit der rechten Maustaste auf den Modellnamen. Danach finden Sie die neue Komponente im automatisch generierten Ordner, wenn Sie neue Teile hinzufügen.

Es ist möglich, das Opto-Symbol wiederzuverwenden, um ein Drittanbietermodell zu verwenden, aber es ist ein etwas komplizierterer Prozess. Sie müssen für jedes Modell ein separates Symbol haben, es sei denn, es handelt sich um etwas wirklich Einfaches wie einen Transistor oder eine Diode.

Das hatte ich schon probiert. Die Fehlermeldung ist die gleiche. Nicht das Top-Level-Modell ist das Problem, sondern ein Untermodell, das das Modell verwendet.
@ARF Okay, ich sehe das Problem hier. Pspice/orcad kann einige digitale "Sachen" sowie globale g_dpwr / g_dgnd-Knoten ausführen. Ltspice implementiert die digitale Seite von pspice nicht. Kurz gesagt, das Modell ist nicht kompatibel und Sie müssten es ändern, um die fehlende „und“-Funktion zu umgehen. Alles, was ich vorschlagen kann, ist die Yahoo-Ltspice-Gruppe, wo Sie funktionierendes 6n137-Modell und -Symbol finden können. Offensichtlich nicht ganz dasselbe wie das Vishay-Modell, aber zumindest könnten Sie die Mosfet / LED-Parameter entsprechend ändern. Anstelle von "und" verwendet er eine spannungsgesteuerte Stromquelle.