Modérateurs: Modération Forum DIY, Modération Forum Installations, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 7 invités

Pour discuter de tout ce qui sert dans un projet DIY, de la défonceuse au logiciel de mesure

LTSPICE

Message » 01 Juil 2014 11:35

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
UltimateX86
 
Messages: 3888
Inscription Forum: 27 Oct 2002 21:13
  • offline

Message » 02 Juil 2014 0:05

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
UltimateX86
 
Messages: 3888
Inscription Forum: 27 Oct 2002 21:13
  • offline

Message » 07 Juil 2014 10:19

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 :

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
  • offline

Message » 08 Juil 2014 20:57

UltimateX86
 
Messages: 3888
Inscription Forum: 27 Oct 2002 21:13
  • offline

Message » 08 Juil 2014 21:19

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.
thierry38efd
 
Messages: 1735
Inscription Forum: 18 Sep 2013 7:36
  • offline

Message » 08 Juil 2014 21:33

Ben là c'est une boucle ouverte
UltimateX86
 
Messages: 3888
Inscription Forum: 27 Oct 2002 21:13
  • offline

Message » 08 Juil 2014 21:51

:D Oups oups...

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
  • offline

Message » 08 Juil 2014 22:04

Oups Oups :cry:
UltimateX86
 
Messages: 3888
Inscription Forum: 27 Oct 2002 21:13
  • offline

Message » 10 Juil 2014 23:52

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
  • offline

Message » 11 Juil 2014 7:59

Qu'est ce qui permet de lire un ***.py ?
J-C.B
 
Messages: 6871
Inscription Forum: 19 Juil 2009 12:18
Localisation: Haute Normandie
  • offline

Message » 11 Juil 2014 16:45

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 :(
UltimateX86
 
Messages: 3888
Inscription Forum: 27 Oct 2002 21:13
  • offline

Message » 11 Juil 2014 18:09

Merci,

En attendant que je charge tout ce tintoin, ne peux tu pas communiquer une saisie d'écran.

théoriquement je serrais PAPA demain
:bravo: Félicitations aux parents
J-C.B
 
Messages: 6871
Inscription Forum: 19 Juil 2009 12:18
Localisation: Haute Normandie
  • offline

Message » 11 Juil 2014 19:27

Merci

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
  • offline

Message » 11 Juil 2014 21:14

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;
UltimateX86
 
Messages: 3888
Inscription Forum: 27 Oct 2002 21:13
  • offline

Message » 11 Juil 2014 21:38

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
UltimateX86
 
Messages: 3888
Inscription Forum: 27 Oct 2002 21:13
  • offline


Retourner vers Outils & Logiciels