Comment faire une analyse de circuit avec Matlab?

14

J'entends souvent des gens utiliser Matlab pour l'analyse de circuits, mais je n'ai jamais vraiment compris comment cela se faisait. Je suppose qu'il y a quelque chose de plus que simplement mettre en place des équations à la main et les résoudre dans Matlab.

Je cherche un bon point de départ.

AndrejaKo
la source
Êtes-vous en train de poser des questions sur l'utilisation de Matlab comme "remplacement SPICE" pour simuler des composants RLC discrets, ou plus le long de la simulation de système?
W5VO
@ W5VO Les deux, mais avec plus de concentration sur SPICE. Je sais que la simulation système peut être effectuée avec Simulink et que ce n'est pas trop difficile.
AndrejaKo
5
Résoudre des circuits consiste simplement à résoudre des équations différentielles non linéaires, ce qui est donc possible dans Matlab. OTOH I depuis SPICE n'est vraiment rien de plus qu'un solveur d'équation différentielle non linéaire, alors je n'utiliserais Matlab que si j'avais un problème vraiment étrange ou spécial.
jpc

Réponses:

6

Vous pouvez utiliser la boîte à outils Matlab Simulink Simpowersystem pour effectuer une analyse de circuit. Il comprend des composants RLC, des commutateurs, des machines électriques, etc. Vous pouvez créer votre propre composant et modifier tous les paramètres des composants de la bibliothèque. Comme vous pouvez combiner vos circuits avec n'importe quel bloc Simulink, n'importe quel solveur Simulink ou n'importe quelle fonction Matlab, cet outil est très puissant. Il n'est pas nécessaire de résoudre d'abord les équations du circuit car vous travaillez dans l'environnement Simulink. Il est à l'origine orienté pour les systèmes d'alimentation, mais je pense que vous pouvez l'utiliser pour n'importe quel circuit électronique.

ths1104
la source
3
Nos réponses arrivent peut-être un peu tard mais il y a aussi SimElectronics qui est plus spécifique que Simpowersystem (mais partage avec le problème d'une licence de boîte à outils coûteuse)
Clement J.
Le truc, c'est que j'ai trouvé Simulink même avec toutes les boîtes à outils ajoutées plutôt encombrantes. Regardez simplement ce qu'il faut pour simuler un circuit RLC . Beaucoup plus compliqué que dans SPICE. IMO valable uniquement dans des cas très spécifiques où vous avez des blocs de code comportemental liés au contrôleur qui ne peuvent pas être effectués dans SPICE de manière raisonnable.
Fizz
En outre, pour obtenir simplement une fonction de transfert symbolique, qsapecng est gratuit et vous dessinez simplement le circuit et cliquez sur un bouton et c'est fait.
Fizz
14

J'utilise beaucoup MATLAB pour l'analyse de circuits. Parfois, je le préfère aux épices, d'autres fois je préfère les épices, cela dépend de mon humeur et de mes besoins.

Ce sont les étapes suivantes:

  • 1: prenez la transformée de Laplace du circuit
  • 2: obtenir la fonction de transfert
  • 3: tracer / analyser en utilisant les fonctions MATLAB. augurer, impulsion, freqresp et ainsi de suite.

La partie la plus délicate que je trouve est de prendre la transformée de Laplace et de dériver votre équation de fonction de transfert.

Il existe de nombreux exemples et manuels sur la prise d'un Laplace sur Internet. En bref, le but ici est d'obtenir l'équation sous la forme de

H(s)=unes2+bs+cs2+es+F

à c est le numérateur et d à funecF le dénominateur dans l'exemple présenté ci-dessous.

Pour ce faire, convertissez tous vos éléments passifs en impédances complexes. C'est

  • C = 1 / sC
  • R = R
  • L = sL

Dérivez ensuite une équation pour votre circuit sous la forme de Vout / Vin.

Pour un simple filtre passe-bas sous la forme de:

Vin -------R-------------- Vout
               |
               C
               |
------------------------------

cela donnerait:

VoutVjen=sCR+sC

Écrivez l'équation ci-dessus sous la forme de num et den pour MATLAB:

num = [C 0];
den = [C R];

Ensuite, continuez à utiliser n'importe quelle fonction matlab que vous aimez pour analyser la fonction de transfert (bode), le diagramme de pôle zéro, etc.

Voici un exemple de filtre avec lequel je jouais récemment et essayais de régler les valeurs:

R1 = 20e3;
C1 = 235e-9;
R2 = 2e3;
C2 = 22e-9;
num = [2*R2*C1 0];
den = [C1*R1*C2*R2*2 (2*C1*R1 + C2*2*R2) 2];
g = tf(num,den);
P = bodeoptions; % Set phase visiblity to off and frequency units to Hz in options
P.FreqUnits = 'Hz'; % Create plot with the options specified by P
bode(g,P);
%[num,den] = eqtflength(num,den);      % Make lengths equal
%[z,p,k] = tf2zp(num,den)          % Obtain zero-pole-gain form
smashtastic
la source
Une chance d'un exemple avec une belle explication de chaque étape?
AndrejaKo
bien sûr - je vais essayer de vous détailler un exemple au cours du week-end!
smashtastic
C'est parfaitement correct, mais totalement inutile. Ne me jugez pas, j'adore Laplace et les transformées en Z ...:) .... Essayez simplement d'utiliser cette approche pour simuler un transistor et des amplificateurs d'ampli op ... :)
Brethlosze
Je pense que vous avez fait une erreur lors de l'écriture de la fonction de transfert pour le filtre passe-bas. Je pense que vous vouliez dire Vout / Vin = (1 / sC) / (R + (1 / sC))
Scott Lawson
6

J'utilise parfois scipy (un ensemble d'outils numériques pour python) pour faire des analyses de circuits. Et oui, cela implique généralement de résoudre les équations du circuit à la main en premier. Cela est surtout utile lors de l'analyse de la tolérance et de la sensibilité sur le circuit.

Il existe un livre sur le sujet "Analyse de la tolérance des circuits électroniques utilisant MATLAB" qui fournit quelques exemples de la façon d'effectuer l'analyse typique sur certains circuits courants. Ce n'est pas vraiment un remplacement pour quelque chose comme SPICE, mais il est utile lorsque vous essayez de concevoir un bon rendement de production sur toutes les tolérances des composants, ou pour tenir compte de la dérive des composants dans le temps et la température.

Clint Lawrence
la source
3
SciPy est gratuit, contrairement à Matlab, et fait la même chose. scipy.org/NumPy_for_Matlab_Users Je pense que c'est plutôt bien moi-même.
endolith
Certains SPICE ont également une simulation Monte Carlo et une analyse de sensibilité. SIMetrix en particulier a le premier gratuitement même dans la version démo / intro non expirante, mais la dernière fonction n'est pas gratuite. Intersil (iSim: PE) et Analog Devices (ADIsimPE) expédient désormais SIMetrix en tant que société SPICE, mais il s'agit essentiellement de la version d'introduction avec leurs bibliothèques de puces supplémentaires.
Fizz
De plus, cette couverture de manuel mal orthographiée MATLAB comme MAT H LAB ... assez amusant et n'inspire pas beaucoup de confiance.
Fizz
1

pour un circuit RLC simple avec n'importe quelle topologie (série et parallèle), nous pouvons utiliser "rlcdemo". C'est bon pour les filtres d'analyse (LPF-HPF-BPF-BSF)

 rlcdemo
 Analyzing the Response of an RLC Circuit
 This demo shows how to use the Control System Toolbox(TM) functions
 to analyze the time and frequency responses of common RLC circuits
 as a function of their physical parameters.
Amir Alizadeh
la source
0

Vous pouvez utiliser un programme créé dans Matlab appelé SCAM (analyse de circuit symbolique dans Matlab), et est ici: https://www.swarthmore.edu/NatSci/echeeve1/Ref/mna/MNA6.html

ARTURO CORONA NIEVA
la source
Pourquoi? utilisez simplement SimScape + SimElectronics car il peut utiliser des modèles SPICE ...
JonRB
SimElectronics ne vous donne pas d'équations analytiques qui sont parfois très utiles
JLo
0

Outre SCAM dans Matlab, il existe également un outil d'analyse de circuit symbolique en ligne élégant à CircuitNAV , qui utilise les fichiers de netlist (de LTspice, Micro-Cap, TINA-TI, PSpice, etc.) comme entrée et génère la solution algébrique pour chaque paramètre de circuit .

CircuitNAV fournit également une démo et un tutoriel .

XJ
la source