天天看点

电子电路仿真(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

目录

​​💥1 概述​​

​​📚2 运行结果​​

​​🎉3 参考文献​​

​​🌈4 Matlab代码实现​​

💥1 概述

【电路仿真工具】 此工具模拟模拟电子电路。原理图编辑器是交互式的。组件库仍然很小,但包含基本组件。包括无源元件和一些半导体的元件模型。模型大多是代数模型。半导体模型经过参数化,因此如果知道适当的参数,例如Eber/Moll晶体管方程,它们可以拟合到任何“真实世界”的组件。

该工具使用隐式微分方程来模拟电子电路。它可能不是最有效和最强大的方法,但它非常优雅。方程使用 ode15i 求解。因此,所有电子元件都使用隐式方程进行建模。

   因此,以各种方式对任何类型的组件进行建模都非常简单。电容器、电感器、电阻器都可以用相同的方法f(U,dU/dt,I,dI/dt)=0进行建模。此外,我们可以使用查找表对真实世界的组件进行建模,然后我们将得到例如 f=I-g(U),其中 g 是组件的测量特征。制作自己的组件模型很容易。只需查看预定义的并创建一个具有相同结构的 mat-file。该工具只是根据电路将所有组件方程与守恒方程一起设置,并使用ode15i求解它们。

📚2 运行结果

导入不同的电路图,这里仅以下面这个为例:

电子电路仿真(Matlab代码实现)
电子电路仿真(Matlab代码实现)
电子电路仿真(Matlab代码实现)
电子电路仿真(Matlab代码实现)
电子电路仿真(Matlab代码实现)

实际用途

1.以交互方式放置组件、节点和电线。您可以通过上下文菜单编辑所有内容(右键单击原理图的任何部分)。

2. 计算一致的初始条件。对于振荡器,初始条件不完全对称通常很重要。如果你从一个平衡开始,即使它是不稳定的,你也不会看到振荡。如果求解器在开始时崩溃,则很可能是初始条件不一致。

3. 模拟完成后,您可以绘制结果。您将获得所有节点电压和所有电流的图,除了流入组件第一个端子的电流。通常你不需要看到它们,因为它们是多余的(可以表示为流入组件的其他电流的负和)。此外,您可以通过右键单击某个特定组件并选择“绘制结果”来绘制该组件的电压和电流。

请考虑以下约定

1.必须连接所有组件端子。

2. 电线连接组件端子和节点。

3.电线不能直接将组件端子相互连接。

4.电线不能将节点相互连接。

5. 节点 #1 始终用作接地参考。

6.不要构建具有电气隔离部件的电路。

局限

这是一个用于模拟仿真的工具。它不太适合显示瞬态行为的电路。它可能会起作用(如多谐振荡器示例所示)。但瞬态行为并不是这种仿真方法的特别优势。所有活动组件都必须受到带宽限制,以避免求解器崩溃。因此,晶体管需要一些阻尼。它可以低至 1e-6,但如果它是零,您将看到很多求解器警告。

function [hcomp,hnode,hwire]=plotschematic(a,x)
 % plots a schematicif nargin<2
     x=a;
     a=gca;
 enda.DataAspectRatio=[1 1 1];
 a.XAxis.Visible='off';
 a.YAxis.Visible='off';hcomp=gobjects(0);
 hnode=gobjects(0);
 hwire=gobjects(0);for i=1:numel(x.components)
     s=load(fullfile('lib',x.components(i).component));
     m=bsxfun(@plus,(x.components(i).transform*(s.geometry'))',x.components(i).position);
     hcomp(end+1)=line('XData',m(:,1),'YData',m(:,2),'Color','k','LineWidth',1,'UserData',i,'Parent',a);
     m(any(~isfinite(m),2),:)=[];
     k=convhull(m(:,1),m(:,2));
     hcomp(end+1)=patch('XData',m(k,1),'YData',m(k,2),'EdgeColor','none','FaceColor','none','Parent',a,'UserData',i,'PickableParts','all');      

🎉3 参考文献

4 Matlab代码实现

继续阅读