Ich habe dieses Tutorial (und verschiedene andere Orte, die eine ähnliche Technik erwähnen) erst kürzlich gefunden , als ich versuchte zu bewerten, wie sich eine meiner Schaltungen verhält, wenn reale Komponenten mit realen Toleranzen verwendet werden.
Normalerweise entwerfe ich es jedoch mit idealen Werten, spiele mit .step
Anweisungen usw. herum. Um nur diese Bewertung durchzuführen, müsste ich alle Wertanweisungen ändern, um die erwähnten Funktionen zu verwenden, und wenn ich nicht zufrieden bin, ändere sie zurück und spiele damit Werte wieder und so weiter. Das scheint eine Menge Arbeit zu sein. Ich könnte wahrscheinlich ein Skript schreiben, das es für mich mit den .asc-Dateien macht, aber ich habe mich gefragt, ob es wirklich keinen anderen Weg gibt.
Für die meisten Komponenten haben Sie ein "Tolerance[%]"-Feld, also habe ich mich gefragt, ob dies global verwendet werden kann? Genauso wie einige Komponenten auf die .step temp
Variable zu reagieren scheinen. Leider finde ich in der Dokumentation die erwähnte Temperatur, aber nicht die Toleranz (die sich in der .asc-Datei ergibt SpiceLine tol=xxx
, falls das jemandem hilft).
Gibt es also eine einfache Möglichkeit, LTSpice (zufällig) Komponententoleranzen über mehrere Durchläufe hinweg variieren zu lassen, ohne Formeln für jeden einzelnen verwenden zu müssen? (Ich interessiere mich heute hauptsächlich für Widerstände und Kondensatoren, falls das hilft, eine 90%ige Lösung zu finden)
Monte-Carlo-Analyse und Worst-Case ist normalerweise die Art und Weise, wie dies gemacht wird, genau wie der verlinkte Artikel beschreibt. Für Monte-Carlo müssen Sie Ihre Komponenten nicht von Hand ändern, sondern führen Sie einfach die Monte-Carlo-Simulationen aus und der Simulator ändert die Komponenten automatisch basierend auf Ihrem Toleranzfeld. Sie müssen genügend Fälle ausführen, um ein statistisch signifikantes Ergebnis zu erhalten, und Sie können berechnen, wie viele Läufe Sie für eine bestimmte Konfidenz benötigen. Der schlimmste Fall erfordert etwas mehr Arbeit und Kenntnisse über die Funktionsweise der Schaltung, aber der verlinkte Artikel erklärt das auch.
Ich verwende folgendes für den Wert von Komponenten: Beispiel für einen Widerstand ist {if(nom,R1,mc(R1,tolr))}. Dann definiere ich einen Parameter 'nom' so, dass, wenn er auf 1 gesetzt ist, der Widerstand den Nennwert erhält (R1-Parameter in diesem Fall, könnte aber ein 'harter' Wert wie '10k' sein), andernfalls, wenn er dann 0 ist es erhält den Monte-Carlo-Wert.
Dieser Beitrag ist alt ... aber ab März 2021 unterstützt LTspice immer noch nicht die Verwendung des integrierten Toleranzparameters für Komponenten. Siehe Seite 102 des kürzlich veröffentlichten (November 2020) „ Passive Circuit Analysis with LTspice®: An Interactive Approach “. In Bezug auf Widerstandstoleranzfelder heißt es: "Dies wird akzeptiert, aber, wie wir bereits gesehen haben, nicht darauf reagiert. ... Also sind Toleranz und Nennleistung wirklich als Erinnerung da, wenn Widerstände für die Produktion spezifiziert werden."
Die kürzlich kostenlose Micro-Cap- Software unterstützt MC möglicherweise intuitiver.
Fizz