Monte Carlo Analysis in English
Monte Carlo Analysis in English

Monte Carlo Analyse

Was sie hier le­sen, steht ei­gent­lich in der Hil­fe von LT­Spice (nur nicht so schön 😀), aber vie­le trau­en sich da nicht dran, wohl we­gen der vie­len Klam­mern...

Ich möch­te Ihnen hier mit­tels ei­nes Bei­spiels die Angst da­vor neh­men.

Was macht eine Monte Carlo Analyse?

Nun, in ein­fa­chen Schal­tun­gen kön­nen Sie To­le­ran­zen von Bau­tei­len meist recht ein­fach be­rück­sich­ti­gen.

Mit stei­gen­der Kom­ple­xi­tät ist das häu­fig nicht mehr so ein­fach mach­bar.

Ei­ne Mon­te-Car­lo-Ana­ly­se si­mu­liert Ih­re Schal­tung vie­le Ma­le und setzt je­des Mal die ak­tu­el­len Wer­te für je­des ein­zel­ne Bau­teil auf ei­nen zu­fäl­li­gen Wert in­ner­halb der an­ge­ge­be­nen To­le­ranz. Die­se Zu­fäl­lig­keit, wie in ei­nem Rou­lette-Spiel in dem be­rühm­ten Ca­si­no, gab der Me­tho­de ih­ren Na­men.

Faites vos jeux!
Les jeux sont faits, rien ne va plus.

Sie be­kom­men al­so nicht nur ei­ne Kur­ve für z.B. Vout, son­dern ei­ne Kur­ven­schar und kön­nen aus den Ex­trem­wer­ten die Aus­wir­kun­gen der To­le­ran­zen se­hen.

Beispiel: Instrumentenverstärker

Schaltung des InstrumentenverstärkersIch ha­be für das Bei­spiel die Schal­tung ei­nes In­stru­men­ten­ver­stär­kers ge­wählt. Die­ser re­agiert sehr emp­find­lich auf To­le­ran­zen von Bau­tei­len und scheint mir des­halb prä­de­s­ti­niert für die­se De­mons­tra­tion.

La­den Sie die Schal­tung he­r­un­ter und spie­len Sie mit ihr.

V3 ist das Ein­gangs­si­gnal. Die Ver­stär­kung ist durch R1 auf 10 ein­ge­stellt. Die 100 mV Ein­gangs­si­gnal soll­ten al­so 1 V am Aus­gang er­ge­ben. Mit V4 kön­nen Sie ein Common-Mo­de-Si­gnal hin­zu­fü­gen. Dieses ver­schlech­tert ins­be­son­de­re auch die Off­set-Span­nung.

Da in mei­nem Bei­spiel nur Wi­der­stän­de das Ver­hal­ten be­stim­men, ha­be ich auch nur ei­nen Pa­ra­me­ter tol, der die To­le­ranz der Wi­der­stän­de be­schreibt. In an­de­ren Schal­tun­gen mö­gen Sie viel­leicht ein Rtol, ein Ctol und ein Ltol ha­ben, viel­leicht auch noch an­de­re.

Wie setzt man nun die Mon­te-Car­lo-For­mel ein?

Nor­ma­ler­wei­se ge­ben Sie bei ei­nem Wi­der­stand ein­fach den Wert von z.B. 10k an.

Wollen wir nun ei­ne Mon­te-Car­lo-Ana­ly­se durch­füh­ren, set­zen wir statt­des­sen die Mon­te-Car­lo-Funk­tion ein: {MC(10k,0.05)}. LT­Spice setzt nun für je­den Durch­lauf der Si­mu­la­tion ei­nen zu­fäl­li­gen Wert zwi­schen 10k-(10k*0.05) und 10k+(10k*0.05) ein. Die ge­schweif­ten Klam­mern sa­gen LT­Spice, dass der Aus­druck kein fes­ter Zah­len­wert ist, son­dern be­rech­net wer­den muss.

Na­tür­lich kön­nen so­wohl Wert als auch To­le­ranz auch ein Pa­ra­me­ter sein, so wie wir es auch im Bei­spiel se­hen, da wir hier vie­le Wi­der­stän­de ha­ben, die gleich groß sind, und auch die To­le­ranz kann man so sehr schnell für al­le Wi­der­stän­de an­pas­sen.

Um die ge­wünsch­te An­zahl an Durch­läu­fen zu er­rei­chen, be­nö­ti­gen wir ei­nen Dum­my-Pa­ra­me­ter: .step param x 1 100 1. Der Wert x, der hier von 1 bis 100 in Ei­ner­schrit­ten durch­läuft, wird nir­gends be­nö­tigt, aber das Kom­man­do sorgt für 100 Durch­läu­fe mit je­weils neu ge­wähl­ten To­le­ranz-Wer­ten.

Hacks-MenüEs sei an­ge­merkt, das LT­Spice hier mit pseudo-zu­fäl­li­gen Wer­ten ar­bei­tet. Die 100 Wer­te sind bei je­dem Start der Si­mu­la­tion wie­der gleich. Das hat wohl et­was mit Re­pro­du­zier­bar­keit zu tun, be­wirkt aber auch, das oh­ne die­sem Dum­my-Pa­ra­me­ter je­de Si­mu­la­tion wie­der das glei­che Er­geb­nis er­gibt (und kein neu­es, zu­fäl­li­ges).

In den Ein­stel­lun­gen un­ter Hacks kön­nen Sie ein­stel­len, das die Uhr­zeit be­nutzt wird um den PRNG neu zu in­i­tia­li­sie­ren. Dann be­kom­men Sie auch für ein­zel­ne Si­mu­la­tio­nen un­ter­schied­li­che Er­geb­nis­se.

Simulationsergebnis im Zeitbereich Hier se­hen Sie das Er­geb­nis für die mit 5 % To­le­ranz be­wusst schlecht di­men­sio­nier­te Schal­tung, bei ei­ner Common-Mo­de-Volt­age (V4) von 5 V und 100 Durch­läu­fen. Vout lässt zwar die Kur­ven­form er­ah­nen, der ab­so­lu­te Wert schwankt je­doch um mehr als 0,6 V, al­so fast ±40 %! Selbst für ein­fa­che Mes­sun­gen wä­re dies ab­so­lut un­brauch­bar.

Zur Ver­an­schau­li­chung ha­be ich das ide­a­le Aus­gangs­si­gnal in rot ein­ge­zeich­net.

Jetzt wis­sen Sie auch, wa­r­um man In­stru­men­ten­ver­stär­ker als fer­tig ab­ge­glich­enes Bau­teil kauft, und nicht ver­sucht, ihn selbst auf­zu­bau­en. Selbst mit 0,1 %-igen Wi­der­stän­den kä­men Sie kaum über 0,5 % Ge­nau­ig­keit hi­n­aus. Dabei sind die Feh­ler­bei­trä­ge der OpAmps noch nicht­mal be­rück­sich­tigt!

Und die Fehlergrenzen?

Dazu muss man ein biss­chen tie­fer ein­tau­chen. Zu­min­dest ha­be ich kei­ne Me­tho­de ge­fun­den, sie di­rekt zu er­mit­teln.

Ich ha­be ei­ni­ge .measure-An­wei­sun­gen in die­ser Si­mu­la­tion plat­ziert. In­te­res­sant ist ins­be­son­de­re die An­wei­sung:
.measure tran Voffs FIND V(Out) AT=0, die den Off­set­feh­ler er­mit­telt (bei t=0, wo wir auch 0 V Aus­gangs­span­nung er­war­ten wür­den) und:
.measure tran GerrPercent param (1/(Vmax-Voffs)-1)*100, die den Gain-Error in Pro­zent er­mit­telt.

Beide tun dies für je­den ein­zel­nen Durch­lauf und es ist mir nicht ge­lun­gen, di­rekt den ma­xi­ma­len Feh­ler da­r­aus zu er­mit­teln.

Verstärkungsfehler bei 100 Durchläufen Im Spice-Error-Log (Strg+L oder View-Spice_Error_Log) se­hen Sie für je­den Durch­lauf den er­mit­tel­ten Wert.

Drü­cken Sie dort die rech­te Maus­tas­te und wäh­len Sie Plot .step'ed .meas data. Dann öff­net sich ein neu­es Fens­ter und Sie kön­nen, wie­der mit der rech­ten Maus­tas­te, die ge­wünsch­ten Kur­ven hin­zu fü­gen. Im Dia­gramm se­hen Sie bei­spiel­haft den Gain-Error.

Man kann hier sehr schön se­hen, das der ma­xi­ma­le Feh­ler knapp ±10 % be­trägt. Die ge­rin­ge Zahl der ex­tre­men Aus­schlä­ge legt na­he, dass 100 Durch­läu­fe zu knapp be­mes­sen ist. Sie zeigt zwar die Rich­tung, aber wenn wir es ge­nau­er ha­ben wol­len, soll­ten wir bes­ser 1000 Durch­läu­fe wäh­len. Die Si­mu­la­tions­zei­ten stei­gen da­bei na­tür­lich ent­spre­chend an. Für ei­nen ers­ten Über­blick rei­chen die 100 si­cher­lich, wenn wir wirk­lich die Gren­zen se­hen wol­len, müs­sen wir deut­lich mehr Durch­läu­fe wäh­len, je mehr, des­to bes­ser. So vie­le, dass zu­min­dest meh­re­re Ex­trem­wer­te im ähn­li­chen Be­reich lie­gen.