Forum: Analoge Elektronik und Schaltungstechnik LT Spice BV Quelle


von Andi (Gast)


Lesenswert?

In LTSpice gibt es ja die programmierbare Spannungsquelle "arbitrary 
voltage source" bzw. BV-Quelle. Diese Quelle kann ja sehr viele 
verschiedenen Dinge. Allerdings ist die Hilfe in LTSpice zu dieser 
Quelle eher dürftig. Darum wollte ich fragen, ob mir jemand einen Link 
empfehlen kann, in dem besonders auf die Syntax bei der Programmierung 
dieser Quelle eingegangen wird.

Mir ist bisher hauptsächlich der Aufbau der IF-Abfrage bekannt. 
Allerdings würde ich gern wissen, ob es möglich ist, meherere 
Anweisungen auszuführen, wenn die IF-Anweisung true ist? Bei mir kommt 
nämlich da bisher immer ne Fehlermeldung, wenn ich in den True-Zweig 
probiere mehrere Anweisungen zu schreiben.

Weiter würde mich interessieren, ob man in der IF-Anweisung einer 
BV-Quelle auch eine Variable inkrementieren kann, ähnlich wie es in der 
Programmiersprache C möglich ist?

Andi

von Helmut S. (helmuts)


Lesenswert?

Hallo Andi,

hast du Help-Seiten in LTspice schon gelesen?
Da stehen zumindest die möglichen Funktionen drin.

Es gibt eine Bv und eine Bi Quelle entsprechend V=... oder I=...

.param M=5

V = 5*IF(M<=5,3,IF(M==7,2*V(5),10))

I = .....

Prinzip:
IF(condition, true, false)

Die Funktion die für true oder false steht kann natürlich wieder ein 
IF() sein, beliebig tief geschachtelt.

Gruß
Helmut

: Bearbeitet durch User
von Andi (Gast)


Angehängte Dateien:

Lesenswert?

Helmut S. schrieb:
> hast du Help-Seiten in LTspice schon gelesen?

Hallo Helmut, ja habe ich. Aber auf diesen Seiten werden hauptsächlich 
die verschiedenen mathematischen und logischen Funktionen in Kurzform 
erklärt.

Helmut S. schrieb:
> Prinzip:
> IF(condition, true, false)
>
> Die Funktion die für true oder false steht kann natürlich wieder ein
> IF() sein, beliebig tief geschachtelt.

Das weiß ich bereits und habe auch schon Beispiele damit gemacht. Aber 
was ich gern wissen würde ist, ob man ähnlich C auch mehrere Anweisungen 
in einer IF ausführen kann.

D.h. etwas, was man in C folgendermaßen programmieren würde:

IF(statement < wert)
{
 zustand=10*wert; //erste Anweisung wenn true
 wert=5;         //zweite Anweisung wenn true
}

Genau genommen habe ich folgendes Problem in LTSpice: Ich möchte eine 
Stromsenke mit einem MOSFET simulieren, welche konstant 2 A Strom ziehen 
soll. Die Simulation habe ich im Anhang an diesen Beitrag mitangehängt.

Zuerst habe ich dabei versucht die BV-Quelle so zu programmieren:

V=IF(Id(M1)<2, V(G)= delay(V(G),1u)+0.1, V(G)= delay(V(G),1u)-0.1)

Da LTSpice aber offensichtlich ein Problem mit Zuweisungen hat, habe ich 
das Ganze dann so programmiert:

V=IF(Id(M1)<2, delay(V(G),1u)+0.1, delay(V(G),1u)-0.1)

Dieser Code funktioniert jetzt im Prinzip, allerdings ist es nun so, 
dass die Simulation extrem langsam wird, da LTSpice die ganze Zeit den 
Wert für die BV-Quelle neu berechnet.

Aus diesem Grund habe ich nun probiert, die Berechnung nur alle 100 µs 
neu auszuführen. Mein Versuch dazu ist dieser:

V=IF((time*10^6)/100=int((time*10^6)/100)),Id(M1)<2, delay(V(G),1u)+0.1, 
delay(V(G),1u)-0.1)

Aber wenn ich das probiere kommt nur die Fehlermeldung "Unexpected equal 
sign in expression".

Eine andere Variante dies zu realisieren wäre, das Ganze mit einer 
lauf-Variablen zu realisieren, welche bei jeder Aktualisierung der 
BV-Quelle um 1 inkrementiert wird.

V=IF((lauf=lauf+1)>=100, IF(Id(M1)<2, delay(V(G),1u)+0.1, 
delay(V(G),1u)-0.1) lauf=0, )

Hier habe ich allerdings wieder das Problem, dass ich die lauf-Variable 
im selben Anweisungsschritt zurücksetzten will, in dem ich die 
Neuberechnung der BV-Quelle durchführen möchte. Da auch das zu einem 
Kompilierungsfehler führt, wäre ich sehr dankbar, wenn mich jemand über 
folgendes aufklären könnte:
-wie macht man eine einfache Variablenzuweisung in LTSpice?
-warum geht das ganz normale Gleichheitszeichen (=) nicht?
-wie schafft man es mehrere Anweisungen in einem Zweig (=true) der 
IF-Schleife auszuführen?

Vielen Dank schon mal im Voraus für eure Hilfe.

Andi

von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

Ich weiß nicht genau ob du wirklich eine digitale Regelung nachbilden 
willst. Analog geht das viel einfacher.

von Andi (Gast)


Angehängte Dateien:

Lesenswert?

Helmut S. schrieb:
> Ich weiß nicht genau ob du wirklich eine digitale Regelung
> nachbilden
> willst. Analog geht das viel einfacher.

Vielen Dank für deine Hilfe. Ein analoger Regler reicht in meinem Fall 
natürlich aus. Drum habe ich es jetzt in Anlehnung an deinen Vorschlag 
realisiert. Zur besseren Anwendung an meine Schaltung habe ich es 
allerdings mit einem P-Kanal MOSFET und einer sich ändernden 
Eingangsspannung realisiert (Anhang).

Andi

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.