Forum: Analoge Elektronik und Schaltungstechnik Integrator in LTSpice mit begrenzter Amplitude


von bla (Gast)


Lesenswert?

Hallo,

ich möchte in LTSpice Signale integrieren. Das geht ja relativ einfach 
mit einer B-Source und V=idt(V(x)). Ich möchte aber den maximalen 
Ausgangswert begrenzen, ähnlich wie es ein realer Integrator mit 
endlichen Spannungsrails macht. Das ginge auch mit einer B-Source und 
V=limit(-15,15,idt(V(x)). Dadurch hab ich aber eine Art "Integrator 
windup", weil der Integrator intern deutlich höher als das Limit gehen 
kann und dann auch erst wieder intern bis auf die Railspannung herunter 
fahren muss, bevor eine Änderung im Ausgangssignal sichtbar wird.

Ich will also einen idealen Integrator, der aufhört weiter zu 
integrieren wenn er an festgelegte Grenzen kommt. Deswegen ideal, weil 
potentiell schneller ind er Simulation, übersichtlicher im Schaltplan 
und einfacher zu parametrieren.

Möglichkeit 1: der klassische RC-Integrator mit idealem Opamp. Nachteil: 
mehr Bauteile zum platzieren und Parameter nicht so bequem einstallbar.
optional: E-Source mit table(-1m -15 1m 15) als "idealer" Opamp

Möglichkeit 2: B-Source mit V=idt( if(V(integrator)<15, V(x), 0) ), oder 
"integriere solange du unter dem Rail bist". Problem: Sobald der 
Integrator auf 15V ist, kommt er auch nicht mehr runter.

Möglichkeit 3: idt(if(V(integrator)<15,V(x),min(0,V(x)))), oder 
"integriere solange du unterm Rail bist, sonst integriere nur negative 
Werte". Problem: wird langsam unübersichtlich und behandelt erst ein 
Rail.

Möglichkeit 4:
idt(
 if(V(integrator) > 15, min(0,V(x)),
 if(V(integrator) < -15, max(0,V(x),
 V(x)
))), oder "Wenn du über dem positiven Rail bist, integriere nur negative 
werte, wenn du unter dem negativen Wert bist, integriere nur positive 
Werte, sonst integriere einfach". Problem: noch unübersichtlicher 
(Schaltplan ist aber übersichtlicher).

Hat da jemand anders eine bessere Idee? Ich bin sicherlich nicht der 
einzige oder erste mit dem Problem.

von bla (Gast)


Lesenswert?

Eine Möglichkeit für die B-Source ist mir noch gekommen:

V=idt(
   limit(
    if(V(integrator)>15,0,max(0,V(x))),
    V(in),
    if(V(integrator)<-15,0,min(0,V(x)))
   )
  )

oder "Integriere V(x), begrenzt auf maximal 0 wenn der Ausgang am oberen 
Rail ist und begrenzt auf minimal 0 wenn der Ausgang am unteren Ende 
ist". Ist aber immernoch unschön.

von bla (Gast)


Lesenswert?

Ich hab mich jetzt mit

V=idt(V(x)*((V(x)>0&V(integrator)<15)|((V(x)<0)&V(integrator)>-15)))

zufrieden gegeben. Ist zwar Kauderwelch, aber kompakter Kauderwelsch.

Würde mich trotzdme interessieren, ob es noch andere Ansätze gibt.

von Purzel H. (hacky)


Lesenswert?

Bis jetzt ist ja noch keine Loesung da. Und ich denke analog wird's 
schwierig.

Ich mach's jeweils digital, da hat man solche Freiheiten.
Falls es um eine Regelung geht, muss man den Integrator stoppen wenn
das Stellglied in die Begrenzung geht.

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.