Forum: Analoge Elektronik und Schaltungstechnik Look up Table in LTspice


von Robert M. (andro86)


Lesenswert?

Hallo zusammen.

Ich möchte in LTspice eine spannungsabhängige Kapazität modellieren. 
Dazu habe ich mir überlegt, diese mittels look up table zu realisieren 
in der Form U1,C1; U2,C2;...; Un,Cn usw. Mein Problem ist nur, dass ich 
nicht ganz genau weis, wie eine look up table in LTspice erstellt wird.
Ich hoffe hier findet sich Jemand, der mir das anhand von einem Beispiel 
erklären kann.

von Stefan S. (chiefeinherjar)


Lesenswert?

Mir ist dazu nichts bekannt. Allerdings macht man soetwas auch für 
gewöhnlich über sog. Varactor-Dioden. LT-Spice liefert solch ein Modell 
mit und im Internet gibt es auch Formeln zur Berechnung der Kapazitäten. 
Mittels dieser Formel und einem Taschenrechner und ein paar Minuten Zeit 
sowie den Datenblättern der gewünschten Varaktor-Diode kann man so 
ziehmlich jede Diode gut nach-modellieren, in dem man eine bestehende 
Diode kopiert und an ein paar Parametern schraubt, bis es einigermaßen 
passt.

EDIT: Ja, es gibt auch eine Möglichkeit, dass man eine Funktion 
definiert und diese dann entsprechend die Kapazität berechnen lässt, 
aber die Varaktor-Diode ist in 99% der Fälle für solch eine Anwendung 
der bessere Fall.

Wofür brauchst du das eigentlich? Dann können wir dir auch besser 
helfen... FM-Modulation bzw. Demodulation kommt mir so spontan 
beispielsweise in den Sinn...

: Bearbeitet durch User
von Robert M. (andro86)


Lesenswert?

Ich brauche das für ein Simulationsmodell eines Kleinsignal ESB eines 
MOSFETs. Dort sind ja die Eingangs,- die Ausgangs- und die 
Rückkoppelkapazität (Ciss, Coss, Crss) von der Drain-Source-Spannung 
abhängig. In den Datenblättern gibt es dazu auch immer entsprechende 
Abbildungen, wo die 3 Kapazitäten über Uds aufgetragen sind. Die dort 
abgebildeten Kurven sind selten linear, wodurch es schwer wird eine 
allgemeine Formel anzugeben. Aus diesem Grund wollte ich die 
Kapazitätswerte mit ihren entsprechenden Spannungswerten in einer look 
up table hinterlegen.

LTspice bietet als Funktion : <table(x,a,b,c,d,...)> <Interpolate a 
value for x based on a look up table given as a set of pairs of points.>

Hat schon Jemand Erfahrung damit?

: Bearbeitet durch User
von Stefan S. (chiefeinherjar)


Lesenswert?

Hmm... ganz doof: Ließe sich das nicht auch mittels Varaktor-Dioden 
nachbilden? - Wenn man die Kennlinien und die ungefähren Kapazitäten hat 
sollte sich das eigentlich einigermaßen nachbilden lassen. Man muss eben 
mit den Parametern etwas spielen, aber grundsätzlich sollte es 
eigentlich gehen. Die Varaktor-Dioden verhalten sich auch nicht linear, 
was das Verhältnis von Sperrspannung zu Kapazität angeht.

von Stefan S. (chiefeinherjar)


Lesenswert?

Ansonsten vielleicht hilft dir folgender Link:
http://k6jca.blogspot.de/2012/07/monte-carlo-and-worst-case-circuit.html

Dort geht es zwar um eine Monte-Carlo-Analyse aber auch hier werden 
Bauteilwerte quasi zur Laufzeit mittels einer definierten Funktion 
errechnet.

von Robert M. (andro86)


Lesenswert?

Dann eine grundsätzliche Frage. Wie lassen sich Funktionen in LTspice 
einbinden?

von Stefan S. (chiefeinherjar)


Lesenswert?

Das hat er dort in dem Link ein wenig angerissen bzw. ein wenig erklärt. 
Aber über das Einbinden von Funktionen wird sich Google sicherlich gut 
auskennen. Ich muss da leider passen, aber vielleicht können die anderen 
Foren-Teilnehmer dort ansetzen...

von Robert M. (andro86)


Lesenswert?

Du hast den Link gepostet, während ich noch dabei war mein Post zu 
schreiben. Trotzdem Danke für deine Hilfe soweit.

von Helmut S. (helmuts)


Lesenswert?

Hallo,
Je nach Analyse stehen verschiedene Methoden zur Verfügung.

.AC
1. Parameter Ersetzung mit .param xyz=table() statt 10p dann {xyz}
2. Diodenmodell mt entsprechenden Paramtern
3. Ladungsgleichung direkt für die Kapazität Q=... statt 10p


.TRAN
1. Diodenmodell mt entsprechenden Paramtern
2. Ladungsgleichung direkt für die Kapazität Q=... statt 10p
(Um die Formel für Q zu bekommen musst du das Integral von C(u)du 
berechnen.)


In der LTspice Yahoo group gibt es im Bereich Files viele Beispiele.

https://groups.yahoo.com/neo/groups/LTspice/files/%20Tut/Nonlinear%20Capacitance%20of%20Capacitors/

https://groups.yahoo.com/neo/groups/LTspice/info


Gruß
Helmut

: Bearbeitet durch User
von Robert M. (andro86)


Lesenswert?

Helmut S. schrieb:

> 1. Parameter Ersetzung mit .param xyz=table() statt 10p dann {xyz}

wie stelle ich denn da den Bezug zu der Spannungsquelle, mit der ich die 
Kapazität des Kondensators steuern will?

von Helmut S. (helmuts)


Lesenswert?

Hallo,

.param wird nur einmal am Beginn der Simulation berechnet und bleibt 
dann konstant. Deshalb hilft .param nur bei .AC .

Wenn das in allen Simulationsarten benötigt wird, dann kommt nur das 
Diodenmodell oder die Ladungsgleich Q=... in Frage.

Deshalb nochmals meine Frgae.
Willst du eine .TRAN Analyse machen oder "nur" eine .AC Analyse?

von Robert M. (andro86)


Lesenswert?

Helmut S. schrieb:

> Willst du eine .TRAN Analyse machen oder "nur" eine .AC Analyse?

Ich will eine .Tran Analyse machen Helmut.

Ich habe jetzt zum probieren eine einfache Schaltung aufgebaut mit einer 
normalen Spannungsquelle V1 und daran angeschlossen einen Widerstand 
{Rvar}. Über .param Rvar = table(V(V1),4,1,8,2) habe ich versucht die 
table-Funktion einzubinden, doch ich kriege als Fehlermeldung "WARNING: 
Can't resolve .param Rvar = table(V(V1),4,1,8,2).

Liegt es wirklich nur daran, dass ich eine .tran Analayse mache?

Edit2: Nun habe ich das ganze um eine Liste erweitert. Die Directive 
dazu sieht nun so aus:

.step param Vstemp list 4 8 12 16
.param Rvar = table(Vstemp,4,1,8,2).

Das brachte aber auch nicht das erwünschte Resultat.
Ich will nachher eine Spannung linear hochlaufen lassen und an vorher 
festgelegten Spannungswerten, soll sich der entsprechende Widerstands- 
bzw. Kapazitätswert einstellen. Kriegt LTspice so etwas hin?

: Bearbeitet durch User
von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

Hier mal die Möglichkeiten für Spannung oder Strom abhängigen 
Widerstand.

Man kann bei R=... auch die Zeit "time" verwenden.

R=1k+100*sin(2*pi*50*time)


.param wird vor der Zeitsimulation berechnet. Deshalb könnend da nur 
"Konstanten" verwendet werden.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.