Forum: Analoge Elektronik und Schaltungstechnik ltspice .meas trig und targ / messung Tastverhältnis


von sweep (Gast)


Lesenswert?

Hallo,
ich bin schon etwas am herumprobieren aber ich kann das problem einfach 
nicht lösen.

Tastverhätlnis ist ton zu T

Also messe ich die Periodendauer T mit
.meas T trig V(gp)
 + val=2.5  td=100u rise=1
 + targ  V(gp) val=2.5 td=100u rise=2
also an stelle 100u messe ich die Zeit zwischen zwei steigenden flanken

nun zu ton
.meas ton1
 + trig  V(gp) val=2.5 td=100u rise=1
 + targ V(gp)  val=2.5 td=100u fall=1
ich messe bei 100u zwischen einer steigenden und fallenden flanke. das 
probier hierbei ist nur, dass es sein kann, das als nächsten eben keine 
stiegende flanke sondern eine fallende kommt. somit messe ich toff 
(auserdem ist dann das ergebnis noch negativ, weil anscheinend targ 
zuerst ausgelöst hat befor trig auslöst)

wie kann ich verhindern, das immer targ nach trig gemessen wird?

von Helmut S. (helmuts)


Lesenswert?

Vielelicht zuerst rise1, rise, fall1 und fall2 messen.
Dann entscheiden welche zwei Werte die richtigen sind um ton zu 
berechnen. Das Ganze könnte mit if() gehen.

: Bearbeitet durch User
von sweep (Gast)


Lesenswert?

Hallo Helmut,

Ich probiere es nun so:
1
.meas pg trig v(p) val=2.5 td=5u rise=1 targ v(p) val=2.5 td=5u rise=2
2
 
3
.measure tran vol1 find v(outp) at=u
4
.if (vol1>2)
5
.meas ton trig v(p) val=2.5 td=5u rise=1 targ v(p) val=2.5 td=5u fall=1
6
.else
7
.meas ton trig v(p) val=2.5 td=5u rise=1 targ v(p) val=2.5 td=5u+pg/2 fall=1
8
.endif
1
Error on line 17 : .if (vol1>2)
2
   Unknown control card
3
Error on line 19 : .else
4
   Unknown control card
5
Error on line 21 : .endif
6
   Unknown control card

Es mag mich einfach nicht :)

von Helmut S. (helmuts)


Lesenswert?

Alle MEASURE Befehle beginnen mit .meas . Groß- und Kleinschreibung, 
auch gemaischt, ist erlaubt.

So geht es:

.meas tr1 find time when V(out)=1 td=40u rise=1
.meas tf1 find time when V(out)=1 td=40u fall=1
.meas tf2 find time when V(out)=1 td=40u fall=2
.meas Ton param if(tf1-tr1>=0, tf1-tr1, tf2-tr1)

: Bearbeitet durch User
von sweep (Gast)


Lesenswert?

Danke sehr Helmut. Manchmal da sucht man an der falschen Stelle :)

von sweep (Gast)


Lesenswert?

So jetzt habe ich es :)

.meas pg trig v(out) val=2.5 td=40u rise=1 targ v(out) val=2.5 td=40u 
rise=2
.meas tr1 find time when V(out)=1 td=40u
.meas tf1 trig v(out) val=2.5 td=40u rise=1 targ V(out)=2.5 td=40u 
fall=1
.meas tf2 trig v(out) val=2.5 td=40u rise=1 targ V(out)=2.5 td=40u 
fall=2
.meas Ton param if(tf1>=0, tf1, tf2)
.meas duty param Ton/pg

von Helmut S. (helmuts)


Lesenswert?

Danke für die Rückmeldung. Ich bin überrascht, dass VAL= auch bei FIND 
geht obwohl es in der Help da nicht erwähnt wird.


Aus der HELP:

The first version, those that point to one point on the abscissa, are 
used to print a data value or expression thereof at a specific point or 
when a condition is met. The following syntax is used:

Syntax: .MEAS[SURE] [AC|DC|OP|TRAN|TF|NOISE] <name>
+ [<FIND|DERIV|PARAM> <expr>]
+ [WHEN <expr> | AT=<expr>]]
+ [TD=<val1>] [<RISE|FALL|CROSS>=[<count1>|LAST]]




The other type of .MEAS statement refers to a range over the abscissa. 
The following syntax is used:

Syntax: .MEAS [AC|DC|OP|TRAN|TF|NOISE] <name>
+ [<AVG|MAX|MIN|PP|RMS|INTEG> <expr>]
+ [TRIG <lhs1> [[VAL]=]<rhs1>] [TD=<val1>]
+ [<RISE|FALL|CROSS>=<count1>]
+ [TARG <lhs2> [[VAL]=]<rhs2>] [TD=<val2>]
+ [<RISE|FALL|CROSS>=<count2>]

: Bearbeitet durch User
von sweep (Gast)


Lesenswert?

Ja ich muss gestehen, das ich zwar am Anfang versucht habe nach spice 
referenz zu entwickeln aber nach fehlschlägen und dem dürftigen 
fehlerausgaben habe ich angefangen nur noch zu probieren bzw von 
beispielen anderer zu leben.

Mal ne andere Frage :)
Mal angenommen ich verändere durch .step param irgendwelche Bauteiler 
derschaltung, was dazu führt das sich das tastverhältnis ändert. In 
meiner log erhalte ich nun mehrere tabellen:
eine tabelle für die Steps z.b.
1
.step deltac=-1e-012 v1=-5 v2=-5
2
.step deltac=0 v1=-5 v2=-5
3
.step deltac=1e-012 v1=-5 v2=-5
4
.step deltac=-1e-012 v1=-2.5 v2=-5
5
.step deltac=0 v1=-2.5 v2=-5
6
.step deltac=1e-012 v1=-2.5 v2=-5
7
.step deltac=-1e-012 v1=0 v2=-5
8
.step deltac=0 v1=0 v2=-5
9
.step deltac=1e-012 v1=0 v2=-5
10
.step deltac=-1e-012 v1=2.5 v2=-5
11
.step deltac=0 v1=2.5 v2=-5
12
.step deltac=1e-012 v1=2.5 v2=-5
13
.step deltac=-1e-012 v1=5 v2=-5
dann gibt es noch eine jeweils andere für pg, tr,tf1,tf2, ton und duty

Kann man auch die ausgaben der step varianten mit dem endergebnis von 
duty in eine tabelle zusammenführen?

von Helmut S. (helmuts)


Lesenswert?

Zumindest für einen Parameter auf der x-Achse kannst du einen Plot 
bekommen.
Dazu im SPICE-Error-Log File mit der rechten Maustaste klicken und dann 
Plot wählen.

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.