Automatisation LTSpice

15

J'ai un convertisseur boost alimenté par batterie et j'essaie de mesurer le statisme de tension d'entrée maximale (batterie) dans diverses conditions de charge de tirages de courant élevés (différents cycles de service / périodicités) en plus de plusieurs types de batterie (différentes tensions / résistances internes). Étant donné que je simule un temps de fonctionnement (relativement) important, les fichiers de simulation deviennent assez importants, sans compter qu'ils prennent un certain temps. Je voudrais automatiser LTSpice pour pouvoir changer les valeurs des composants par programme et relancer les simulations et capturer des données (valeurs de choses comme la tension ou le courant). Je le sais:

  • Les fichiers WAV peuvent être utilisés pour entrer / sortir des données du programme
  • Le programme peut être exécuté à partir de la ligne de commande

Jusqu'à présent, ma meilleure option semble utiliser une combinaison de ces deux options avec mon propre code / script d'une manière qui atteint mes objectifs, mais je me demande simplement s'il existe déjà une meilleure solution.

Quelqu'un a-t-il automatisé LTSpice ou sait-il si une sorte d'API d'automatisation a été écrite pour lui (que ce soit par le fabricant ou par des tiers)?

Idéalement, j'aimerais avoir un solveur, tel que je lui ai donné les paramètres souhaités et qu'il ait essayé différentes valeurs de composants jusqu'à ce qu'il trouve la solution "optimale" à mes contraintes.

Joel B
la source
Qu'a dit votre FAE linéaire? Je leur demanderais d'abord.
Brian Carlton
1
Connaissez-vous les commandes .STEP et .PARAM? Je ne sais pas si cela permettrait d'atteindre exactement ce que vous voulez, mais je posterai une réponse avec quelques exemples si vous êtes intéressé.
Oli Glaser
1
Cette question semble être hors sujet car elle ne concerne pas la conception électronique.
Leon Heller
12
@LeonHeller sur QUELLE planète SPICE ne fait-il pas partie du design?
espace réservé
1
Vous constaterez que les options de Monte Carlo sont parfaitement adaptées à cela. Vous pouvez Schmoo différents paramètres et il peut également afficher les variations. LT-Spice PEUT avoir désactivé cela par SPICE le supporte nativement. Commencez par là
espace réservé

Réponses:

15

Exécuter une simulation plusieurs fois et changer plusieurs valeurs de composants est un peu plus compliqué que d'en changer une seule (ce qui n'est pas si mal)

Voici le concept pour changer une valeur:

  • Ajoutez une instruction .param en utilisant l'icône de directive SPICE à l'extrême droite, par exemple pour une valeur de résistance .param X=R
  • Pour l'utiliser, vous devez entrer {x} dans la valeur de la résistance, puis inclure par exemple .step param X 100 500 50pour augmenter la valeur entre 100 et 500 par incréments de 50.

Exemple:

Exemple d'étape

Résultat:

Graphique

Pour plusieurs valeurs, la seule façon dont j'ai trouvé de travailler était d'utiliser une liste de valeurs pour X et d'utiliser l'instruction table. Ceci est probablement mieux expliqué avec un exemple (lire l'aide des commandes utilisées sera probablement utile ici). Mais notez que la syntaxe de la commande table est dans la table de formulaire (index, x1, y1, x2, y2, .... xn, yn), prend index en entrée et retourne une valeur interpolée pour x = index basé sur le x fourni , paires y.

Dans l'une de mes simulations, j'avais besoin d'effectuer 12 simulations tout en modifiant 3 valeurs de composants différentes, voici les commandes:

.step param X list 1 2 3 4 5 6 7 8 9 10 11 12
.param Rin1 = table(X, 1, 1,1p, 2, 1p, 3, 1p, 4, 4478, 5, 4080, 6, 3400, 7, 2200, 8, 1p, 9, 1p, 10, 1p, 11, 1p, 12, 1p)
.param Rin2 = table(X, 1, 4997, 2, 4997, 3, 4997, 4, 499, 5, 897, 6, 1577, 7, 2777,  8, 4997, 9, 4997, 10, 4997, 11, 4997, 12, 4997)
.param Tval = table(X, 1, 56, 2, 56, 3, 27, 4, 1G, 5, 1G, 6, 1G, 7, 1G, 8, 1G, 9, 330, 10, 330, 11, 120, 12, 120)
.param Kval = table(X, 1, 316, 2, 147, 3, 147, 4, 6340, 5, 6340, 6, 6340, 7, 6340, 8, 6340, 9, 6340, 10, 825, 11, 825, 12, 316)

Résultat:

Exemple de gain

Si tout va bien vous avez l'idée, vous pourriez peut-être produire un manuscrit qui produirait les commandes SPICE nécessaires quand vous remplissez vos valeurs désirées. Ou créez simplement un modèle (par exemple, je viens de copier et coller ce qui précède dans quelques simulations différentes et de changer les valeurs)

Si ce qui précède ne fait pas ce que vous voulez, alors regardez peut-être quelque chose comme le multisim de NI (je pense qu'il a des options de simulation par lots, bien que je ne sois pas sûr de leur utilité) Il peut également être utile de demander sur le LTSPice forum et voir si quelqu'un connaît une meilleure façon de faire les choses.

Oli Glaser
la source
3
Ce n'est pas aussi propre que je le souhaiterais, mais pour les logiciels libres, je ne peux qu'être reconnaissant de m'avoir jeté un os. Merci d'avoir démontré cette technique. Cela me rapprochera certainement de ce que je recherche.
Joel B
1
Merci, cela m'a aidé à comprendre ma simulation. Maintenant, je dois trouver un moyen de mettre une légende sur l'intrigue pour savoir quelle simulation est laquelle.
8

Je pense qu'il est en fait possible d'exécuter LTSpice à partir de la ligne de commande et de lui faire exécuter une simulation transitoire:

Sur windoze:

cd <wherever LTSpice is installed on your computer>
scad3.exe -Run -b MyCircuit.asc

Sous Linux:

cd ~/.wine/drive_c/Program Files (x86)/LTC/LTspiceIV
wine ./scad3.exe -Run -b MyCircuit.asc
blondiepassesby
la source
1
C'est une excellente trouvaille! Je réfléchis maintenant à la façon dont je peux l'utiliser pour la conception automatisée.
Joel B
1
@JoelB: oui, c'est aussi pour ça que je l'utilise. Il y a malheureusement quelques lacunes: 1) Contrairement à l'interface graphique, le solveur fonctionne en un seul thread, il est donc plus lent 2) Vous n'avez pas de "rapport de progression" comme dans l'interface graphique
blondiepassesby
3

LTSpice peut être exécuté en mode batch avec le -bcommutateur de ligne de commande.

À partir du fichier d'aide LTSpice:

-b: exécuté en mode batch. Par exemple, "scad3.exe -b deck.cir" laissera les données dans le fichier deck.raw

Comment lire et interpréter la sortie .raw est laissé comme exercice pour le lecteur.

Notez également, parmi les commutateurs de ligne de commande:

-ascii: utilise des fichiers ASCII .raw. Dégrade gravement les performances du programme.

Le photon
la source
Comment puis-je l'exécuter exactement? En mode ligne de commande, c'est. Je ne suis généralement pas un utilisateur Windows et je ne sais pas comment faire cela sur une machine Windows.
Tropical_Peach
1
Je ne l'ai jamais fait de cette façon. Vous devrez l'essayer par vous-même. Vous pouvez soit ouvrir une fenêtre de commande («cmd.exe» dans le menu Démarrer), soit l'exécuter à partir de la langue que vous utilisez pour séquencer vos tests.
The Photon
Si vous utilisez matlab, ils ont un script pour convertir les fichiers .raw mathworks.com/matlabcentral/fileexchange/…
Voltage Spike
3

Avez-vous déjà vérifié dans " LTSpice Queue Manager "? ( Le lien redirige vers mon propre site Web où vous pouvez télécharger le logiciel, mais je ne suis pas son auteur, qui a initialement partagé le programme sur un forum qui est fermé aujourd'hui. Le partager via mon site Web est un moyen de le faire revivre ).

Cet outil m'a beaucoup aidé par le passé. Vous pouvez préparer de nombreux fichiers de simulation et les exécuter en file d'attente.

Gestionnaire de files d'attente LTSpice

justinmassiot
la source
La mise en file d'attente n'est pas une automatisation.
Harry Svensson
1
Si l'automatisation dont vous avez besoin est la file d'attente, c'est certainement le cas! Cela résout directement le problème d'OP.
Daniel
1
S'il s'agit d'un logiciel de source fermée que vous n'avez pas écrit, je m'attendrais à ce que les utilisateurs se méfient naturellement de l'exécuter.
Dave Tweed
1

Si ce n'est que LT Spice et que vous ne pouvez pas dépasser l'interface graphique, je recommanderais le programme de script AutoIt. Je l'ai utilisé pour automatiser certaines applications Windows critiques qui manquaient de active-x-DDE-COM.dll-quoi que ce soit. Vous pouvez le configurer pour attendre des fichiers, des boutons-poussoirs Windows, des menus, des programmes d'appel avec des arguments, etc.

Jettes un coup d'oeil à:

http://www.autoitscript.com/site/

http://www.autoitscript.com/forum/

J'irais pour Winbatch si vous voulez payer pour un programme de script.

Dejvid_no1
la source