在学习完电路的动态电路知识后,作为物联网专业的大二萌新(嗯嗯嗯,对对对),思考如何将电路知识与专业相结合,更加直观的分析电路呢?这里选择利用MATLAB的GUI界面,来设计程序对一阶/二阶动态电路进行分析。
预期目标:
1、实现一个良好交互界面的应用程序;
2、输入一阶电容电路参数,分析零状态、零输入响应过程;
3、输入一阶电感电路参数,分析零状态、零输入响应过程;
4、输入二阶动态电路参数,进行全响应分析;
5、生动的展现各种分析结果。
6、实现对电路元件、电路结构的建模;
7、对建模电路进行自动暂态过程分析。
开发环境:
开发环境:windows 10,64位
使用工具:MATLAB Rb
设计思路
第一步
分析要求(产品经理nb~),理清具体要求,由于电路类型多,情况复杂,在同一界面下完成比较困难,可把不同电路分成几幅图,设计一个首页,调用不同的图;
通过下拉选择框,进行选择不同电路类型,即在popupmenu1_Callback
下,构造一个全局变量JM
(自己随便定义的),用来记录选择的内容值,并把值传给pushbutton_Callback
,在按下“确认”键之后,根据不同的JM
值,来选择需要打开的动态电路分析模型
第二步
子菜单设计,根据要求分为了七个模块,即一阶RL/RC零输入,零输入,全响应,二阶全响应;对于每一个菜单栏进行设计,根据动态电路,设计需要的模块,例如,对于一阶RL电路,用静态文本框,显示了初始电压,电感,电阻,时间常数等名称,在用可输入文本框作给赋值,或者值得传递;再设计坐标轴,画出电感两端电流值随时间的变化情况;
在button_Callback
str2=get(handles.edit2,'string');%获取输入框的值str3=get(handles.edit3,'string');str4=get(handles.edit4,'string');global U to %定义全局变量R=str2double(str2);U=str2double(str3);C=str2double(str4);to=R*C;str1=num2str(to);set(handles.edit1,'string',str1);t=0:0.01:5;Uc=U*exp(-t/to);plot(handles.axis1,Uc);title('一阶RC零输入');ylabel('电容两端电压U/V');xlabel('时间T/s');%hold on %如果希望保持上次作图界面,注释去掉grid on
第三步
获取某一时刻的电压/电流值,调用矩形拖动框,在slider1_Callback
下,调用刚才全局变量参数,用get(handles.slider1,'value');
获取拖动框对应的值,在根据比例,转化为对应的时间t(用edit框显示出来),根据时间t,算出该时刻的电压/电流值,set(handles.edit8,'string',str8);
传输到界面显示;
global U tot0=get(handles.slider1,'value');set(handles.edit9,'string',t0);u=U*exp(-t0/to);str8=num2str(u);set(handles.edit8,'string',str8);
第四步
其他,一阶电路设计基本思路类似,只是参数和微分方程变化。
对于二阶而言,需要解微分方程组(虽然有解的公式,但是,这更简单粗暴,更具普适性)
syms uc(t) il(t);conduc = uc(0) == Us;condil = il(0) == I;ode1=diff(uc)==il/C;ode2=diff(il)==-uc/L -R*il/L +Us/L;odes=[ode1;ode2];conds=[conduc;condil];[ua(t),ia(t)]=dsolve(odes,conds);ui(t)=Us-R*ia-ua; %计算电感两端电压fplot(handles.axis1,t,ua);hold onfplot(handles.axis1,t,ui);title('二阶全响应');ylabel('电压U/V');xlabel('时间T/s');grid onlegend('电容电压','电感电压','Location','best')
🆗,大概基本完成可以进行调试了;
结果图如下:
如果觉得《利用 MATLAB GUI进行动态电路可视化分析》对你有帮助,请点赞、收藏,并留下你的观点哦!