Forum: Mikrocontroller und Digitale Elektronik gibt in LTSpice sowas wie #define ?


von Margon (Gast)


Lesenswert?

Hallo,

gibts in LTSpice so etwas wie das #define bei C?

Ich habe einen nichtlinearen Widerstand der über folgende Formel 
beschrieben wird:
1
R = 0.55 - 0.25*( (abs(((V(Vsa)-V(Vsb))*1000)-5.9)-(abs(((V(Vsa)-V(Vsb))*1000)-6.1)-0.2))/(2*0.2) )

Wie man sieht ist das nicht wiklich sehr übersichtlich und ich würde 
jetzt gerne einzelne Terme "auslagern".

In C würde ich jetzt
1
#define ISH ((V(Vsa)-V(Vsb))*1000)
schreiben und die Formel von oben wäre schon wesentlich übersichtlicher:
1
R = 0.55 - 0.25*( (abs(ISH-5.9)-(abs(ISH-6.1)-0.2))/(2*0.2) )

Kann man sowas auch in LTSpice machen? Ist ja quasi nur eine simple 
Text-Ersetzung vor dem Parsen...

(habe schon .param probiert aber das kommt anscheinend nur mit Zahlen 
klar)

von Achim M. (minifloat)


Lesenswert?

Margon schrieb:
> (habe schon .param probiert aber das kommt anscheinend nur mit Zahlen
> klar)

Lass die Formel eben ausgeschrieben da stehen. Dann kannst du die festen 
Zahlenwerte durch .param definierte Werte ersetzen. So ergeben sich auch 
Möglichkeiten, etwas schnell zu verändern.

Zur besseren Übersichtlichkeit kannst du die Formel nochmals mit den 
Linientools und den Text-Kommentaren nachbasteln. Oder du erstellst ein 
Bauteil, das nichts anderes tut, als die Formel in "schön" darzustellen.

mfg mf

von Markus W. (dl8mby)


Lesenswert?


von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

Hallo Margon,

Mit .param geht das nicht, da simulationsabhängige Variablen (Spannungen 
oder Ströme) in der Formel sind. Man muss dann "functions" nehmen.

.func ISH() {((V(Vsa)-V(Vsb))*1000)}

R = 0.55 - 0.25*( (abs(ISH()-5.9)-(abs(ISH()-6.1)-0.2))/(2*0.2) )

Gruß
Helmut

von Margon (Gast)


Lesenswert?

Danke Helmut!

Genau sowas habe ich gesucht und man kann den Funktionen sogar Parameter 
übergeben, perfekt!

von Yalu X. (yalu) (Moderator)


Lesenswert?

Warum schreibst du statt diesem Formelmonster
1
  R = 0.55 - 0.25*( (abs(((V(Vsa)-V(Vsb))*1000)-5.9)-(abs(((V(Vsa)-V(Vsb))*1000)-6.1)-0.2))/(2*0.2) )

nicht einfach
1
  R = table(V(Vsa,Vsb), 5.9m, 0.55, 6.1m, 0.3)

?

von Margon (Gast)


Lesenswert?

vermutlich weil mir die table-Funktion bis jetzt noch völlig unbekannt 
war..

Danke!

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.