Est ce qu'il est possible de lancer une simulation SPICE compatible avec les fichier ASC LTSPICE en ligne de commande dans un batch ?
Le but est de générer directement des fichiers sans aucune interface graphique lors de la simulation.
Il y a une DLL, une API qui serrait utilisable ?
Merci
EDIT : j'ai trouvé un truc sympa : ngspice il va faloir que je creuse dans cette direction, désolé pour le HS
|
Modérateurs: Modération Forum Installations, Modération Forum DIY, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités
Pour discuter de tout ce qui sert dans un projet DIY, de la défonceuse au logiciel de mesure
Voilà ce que ça donne la méthode brute :
A améliorer, j'ai du le faire en plusieurs fois vu que LTSPICE n'accepte pas plus de 3 step param et que la simulation devient plus lente pour chaque combinaison lorsqu'on dépasse les 1000 combinaisons total (RAW de plusieurs GIGA)
0,005641% THD 20K 100W 4ohm @50mA coutant total repos
https://sites.google.com/site/opampbasedamp/brute.csv
Merci CATSIANO pour le schéma de départ
![Image](https://sites.google.com/site/opampbasedamp/Brute.png)
A améliorer, j'ai du le faire en plusieurs fois vu que LTSPICE n'accepte pas plus de 3 step param et que la simulation devient plus lente pour chaque combinaison lorsqu'on dépasse les 1000 combinaisons total (RAW de plusieurs GIGA)
0,005641% THD 20K 100W 4ohm @50mA coutant total repos
https://sites.google.com/site/opampbasedamp/brute.csv
Merci CATSIANO pour le schéma de départ
![Image](https://sites.google.com/site/opampbasedamp/Brute.png)
- UltimateX86
- Messages: 3888
- Inscription Forum: 27 Oct 2002 21:13
Découverte du Week end : LTSPICE peut se lancer en mode BATCH
J'ai donc fais un script python permettant :
- de le lancer en batch
- de remplacer des variables dans la NETLIST pour ne plus être limité par les 3 commandes step maximum
- de récupérer les données dans un CSV
Pour le moment, une seul variable {RA} mais je partagerais bientôt une version avec N variable :
J'ai donc fais un script python permettant :
- de le lancer en batch
- de remplacer des variables dans la NETLIST pour ne plus être limité par les 3 commandes step maximum
- de récupérer les données dans un CSV
Pour le moment, une seul variable {RA} mais je partagerais bientôt une version avec N variable :
- Code: Tout sélectionner
import os
import subprocess
SPICEEXE='C:\LTC\LTspiceIV\scad3.exe '
INFILE='C:\PERSO\SIMULATION\LTSPICE\ZERO\MODBATCH.cir'
TMPFILE='C:\PERSO\SIMULATION\LTSPICE\ZERO\MOD_OUT.cir'
OUTFILE = open('C:\PERSO\SIMULATION\LTSPICE\ZERO\MOD_OUT.csv','w+')
RA = 1
RA_MAX = 10
RA_INC =1
while RA <= RA_MAX:
fin = open(INFILE,'r+')
fout = open(TMPFILE, 'w+')
for line in fin:
line = line.replace("{RA}", str(RA))
fout.write(line)
fin.close()
fout.close()
subprocess.call(SPICEEXE + TMPFILE+ " -b")
LOGFILE = open('C:\PERSO\SIMULATION\LTSPICE\ZERO\MOD_OUT.log', 'r+')
for log in LOGFILE:
if log.find('Distortion:') > 0:
OUTFILE.write(str(RA) + ';')
OUTFILE.write((log.split('Distortion: ')[1][:-2] + '\n').replace(".",","))
RA = RA + RA_INC
OUTFILE.close()
- UltimateX86
- Messages: 3888
- Inscription Forum: 27 Oct 2002 21:13
- UltimateX86
- Messages: 3888
- Inscription Forum: 27 Oct 2002 21:13
Hello,
les pérégrinations suivies,ayant + de temps dans qq jours,je ne manquerais pas de participer.
pour ajouter,que le triple Darlington(not) est dangereux,réellement....ne pas donner un gain ultra énorme pour obtenir des chiffres théoriques impossibles à quantifier (écouter-sentir).les boucles fermées sont délicates.
![:)](https://www.homecinema-fr.com/forum/images/smilies/icon_smile.gif)
les pérégrinations suivies,ayant + de temps dans qq jours,je ne manquerais pas de participer.
pour ajouter,que le triple Darlington(not) est dangereux,réellement....ne pas donner un gain ultra énorme pour obtenir des chiffres théoriques impossibles à quantifier (écouter-sentir).les boucles fermées sont délicates.
- thierry38efd
- Messages: 1735
- Inscription Forum: 18 Sep 2013 7:36
![:D](https://www.homecinema-fr.com/forum/images/smilies/icon_biggrin.gif)
c'est une charge statique de 4 Ohms sans CR
c'est un ampli de courant,chaque consigne tension est un résultat courant.
à simuler avec une capa de 470-680nF en // sur la charge.
la stabilité thermique reste à étudier et à mettre en pratique.
le gain est énorme,la moindre variation des Vbe,courant de polar ,c'est destructeur.(même CR locale).
Dernière édition par thierry38efd le 08 Juil 2014 22:05, édité 1 fois.
- thierry38efd
- Messages: 1735
- Inscription Forum: 18 Sep 2013 7:36
thierry38efd a écrit:Hello,![]()
les pérégrinations suivies,ayant + de temps dans qq jours,je ne manquerais pas de participer.
pour ajouter,que le triple Darlington(not) est dangereux,réellement....ne pas donner un gain ultra énorme pour obtenir des chiffres théoriques impossibles à quantifier (écouter-sentir).les boucles fermées sont délicates.
Qu'est ce que tu propose d'autre ?
- UltimateX86
- Messages: 3888
- Inscription Forum: 27 Oct 2002 21:13
Qu'est ce qui permet de lire un ***.py ?
- J-C.B
- Messages: 6873
- Inscription Forum: 19 Juil 2009 12:18
- Localisation: Haute Normandie
bonjour JCB,
un .py peut se lire correctement avec notePad++
Pour executer un .py il faut installer PYTHON : https://www.python.org/download/
Tu veux faire des simulations de combinaisons ?
Le schéma que j'ai posté plus haut je l'ai fais simuler 70000 fois (10H de CPU) j'ai trouvé une THD minimal de 0,003463% 20Khz 100W 4ohm
La prochaine étape est d’apprendre à utiliser NGSPICE dont les sources sont disponible pour faire un solteur de THD beaucoup plus rapide.
Mais bon ... théoriquement je serrais PAPA demain
donc le temps manquera ![:(](https://www.homecinema-fr.com/forum/images/smilies/icon_frown.gif)
un .py peut se lire correctement avec notePad++
Pour executer un .py il faut installer PYTHON : https://www.python.org/download/
Tu veux faire des simulations de combinaisons ?
Le schéma que j'ai posté plus haut je l'ai fais simuler 70000 fois (10H de CPU) j'ai trouvé une THD minimal de 0,003463% 20Khz 100W 4ohm
La prochaine étape est d’apprendre à utiliser NGSPICE dont les sources sont disponible pour faire un solteur de THD beaucoup plus rapide.
Mais bon ... théoriquement je serrais PAPA demain
![:)](https://www.homecinema-fr.com/forum/images/smilies/icon_smile.gif)
![:(](https://www.homecinema-fr.com/forum/images/smilies/icon_frown.gif)
- UltimateX86
- Messages: 3888
- Inscription Forum: 27 Oct 2002 21:13
Merci,
En attendant que je charge tout ce tintoin, ne peux tu pas communiquer une saisie d'écran.
Félicitations aux parents
En attendant que je charge tout ce tintoin, ne peux tu pas communiquer une saisie d'écran.
théoriquement je serrais PAPA demain
![:bravo: :bravo:](https://www.homecinema-fr.com/forum/images/smilies/thumbs_up.gif)
- J-C.B
- Messages: 6873
- Inscription Forum: 19 Juil 2009 12:18
- Localisation: Haute Normandie
Merci
Sisi j'ai encore le temps de faire une petite archive avec tout dedans une petite doc, je fais ça tout de suite
Sisi j'ai encore le temps de faire une petite archive avec tout dedans une petite doc, je fais ça tout de suite
- UltimateX86
- Messages: 3888
- Inscription Forum: 27 Oct 2002 21:13
Voilà, avec le dossier complet ça sera plus simple.
https://sites.google.com/site/opampbase ... naison.zip
Il suffis de le dézipper à l'endroit désiré.
Avant d’exécuter le fichier combinaison.py il convient de l'éditer avec un éditeur de text:
CHEMIN DE L'EXECUTABLE LTSPICE
SPICEEXE = 'C:\LTC\LTspiceIV\scad3.exe'
REPERTOIRE CONTENANT TOUS LES FICHIERS
DIR = 'C:\combinaison\\'
NOM DU FICHIER LTSPICE SANS L'EXTENSION sans le .asc
LTFILE = 'schematic'
Tous les fichiers auront ensuite le même nom.
Le fichier schematic.net est la netlist généré par LTSPICE lors du lancement de la simulation via l'interface, le script python va ouvrir ce fichier et le copier dans schematic.cir en remplaçant les clées par celles définies dans la liste des paramètres :
listeParamFinal=[Param("{RA}",0,20,5),Param("{RB}",20,100,20),Param("{RC}",40,500,40),Param("{RD}",20,300,40)]
Cette liste est à configurer suivant le nombre de paramètre défini dans le schéma.
Un paramètre est défini comme ceci : Param("{NOM}",MIN,MAX,INCREMENT)
Le fichier schematic.csv s'ouvre avec EXCEL ou l'équivalent OPENOFFICE
Pour reprendre la simulation à partir d'une combinaison données, il suffis de supprimer les dièses devant ce bloc et en remplacent les valeurs:
#listeParamFinal[0].value=0.017;
#listeParamFinal[1].value=10;
#listeParamFinal[2].value=0;
#listeParamFinal[3].value=400;
#listeParamFinal[4].value=260;
https://sites.google.com/site/opampbase ... naison.zip
Il suffis de le dézipper à l'endroit désiré.
Avant d’exécuter le fichier combinaison.py il convient de l'éditer avec un éditeur de text:
CHEMIN DE L'EXECUTABLE LTSPICE
SPICEEXE = 'C:\LTC\LTspiceIV\scad3.exe'
REPERTOIRE CONTENANT TOUS LES FICHIERS
DIR = 'C:\combinaison\\'
NOM DU FICHIER LTSPICE SANS L'EXTENSION sans le .asc
LTFILE = 'schematic'
Tous les fichiers auront ensuite le même nom.
Le fichier schematic.net est la netlist généré par LTSPICE lors du lancement de la simulation via l'interface, le script python va ouvrir ce fichier et le copier dans schematic.cir en remplaçant les clées par celles définies dans la liste des paramètres :
listeParamFinal=[Param("{RA}",0,20,5),Param("{RB}",20,100,20),Param("{RC}",40,500,40),Param("{RD}",20,300,40)]
Cette liste est à configurer suivant le nombre de paramètre défini dans le schéma.
Un paramètre est défini comme ceci : Param("{NOM}",MIN,MAX,INCREMENT)
Le fichier schematic.csv s'ouvre avec EXCEL ou l'équivalent OPENOFFICE
Pour reprendre la simulation à partir d'une combinaison données, il suffis de supprimer les dièses devant ce bloc et en remplacent les valeurs:
#listeParamFinal[0].value=0.017;
#listeParamFinal[1].value=10;
#listeParamFinal[2].value=0;
#listeParamFinal[3].value=400;
#listeParamFinal[4].value=260;
- UltimateX86
- Messages: 3888
- Inscription Forum: 27 Oct 2002 21:13
LTSPICE n'accepte pas une NETLIST avec une valeur à 0, lorsque l'on place une résistance à 0 dans un schéma elle est supprimé de la netlist.
Pour faire varier une valeur à partir de 0 il faut donc utiliser une valeur proche comme 0.0001, c'est ce qui est fait dans le code à la ligne : paramVal=0.0001
Pour faire varier une valeur à partir de 0 il faut donc utiliser une valeur proche comme 0.0001, c'est ce qui est fait dans le code à la ligne : paramVal=0.0001
- UltimateX86
- Messages: 3888
- Inscription Forum: 27 Oct 2002 21:13
|
Retourner vers Outils & Logiciels |