运放电路的matlab分析介绍

[复制链接]
1328|6
 楼主| 叶春勇 发表于 2019-12-13 13:33 | 显示全部楼层 |阅读模式
本帖最后由 叶春勇 于 2019-12-13 13:35 编辑


这是ti文档上一个带偏置的正向放大器,我以此为例,使用matlab计算电路输入与输出的关系:
首先,列方程:

用matlab计算如下:

syms r1 r2 rg rf vi vout vp vn vref
eq1='(vi-vp)/R1=(vp-vref)/R2'
eq2='(vn-vout)/Rf=(0-vn)/Rg'
根据eq1得到vp,同相端的表达式:solve(eq,x)第一的参数是方程,如果不是,就默认等于0,第二个参数就是求哪个参数。
eq3=solve(eq1,vp)
根据eq2得到vn,反相端的表达式:
eq4=solve(eq2,vn)
根据运放负反馈,虚短。vp=vn,即vp-vn=0,输入vp-vn,不加=0,默认加0
U=solve(vp-vn,vout)
matlab输出:((Rf + Rg)*(R2*vi + R1*vref))/(Rg*(R1 + R2))
由于我们需要的是关心vi
U=collect(U,vi)
matlab输出:((R2*(Rf + Rg))/(Rg*(R1 + R2)))*vi + (R1*vref*(Rf + Rg))/(Rg*(R1 + R2))
由于我们需要看一下表达式
pretty(U)
matlab输出:









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 叶春勇 发表于 2019-12-13 13:45 | 显示全部楼层
求出代数表达式后,可以进行数值运算,实际是用数值替换代数变量:
假设电阻全部为1000欧姆,vref为5v
Y=U     这一句就是新建一个变量,等于上贴的代数表达式。

Y=subs(U,r1,1000)
matlab输出:(1000*vref*(Rf + Rg))/(Rg*(R2 + 1000)) + (R2*vi*(Rf + Rg))/(Rg*(R2 + 1000))
Y=subs(U,r2,1000)
matlab输出:(vi*(Rf + Rg))/(2*Rg) + (vref*(Rf + Rg))/(2*Rg)
Y=subs(U,r3,1000)
matlab输出:(vi*(Rf + 1000))/2000 + (vref*(Rf + 1000))/2000

Y=subs(U,r4,1000)
matlab输出:vi + vref
Y=subs(U,vref,5)
matlab输出:vi + 5
当电阻全部为1000欧姆,vref为5v

y=vi+5


 楼主| 叶春勇 发表于 2019-12-13 13:46 | 显示全部楼层
用到了:
syms 定义符号
solve 解方程
collect 化简
pretty 美化公式输出
subs 替换
FTwei 发表于 2019-12-13 16:22 | 显示全部楼层
airwill 发表于 2019-12-15 08:57 | 显示全部楼层
Matlab 擅长计算, 但不会化简
 楼主| 叶春勇 发表于 2019-12-15 13:44 来自手机 | 显示全部楼层
matlab可以化简,因式分解
 楼主| 叶春勇 发表于 2019-12-15 14:05 来自手机 | 显示全部楼层
不过我用matlab的目的,主要还是在e6,e24电阻中找到合乎要求的设计,不过还是改成c语言了,搜6个以上变量,matlab效率还是低
您需要登录后才可以回帖 登录 | 注册

本版积分规则

151

主题

4810

帖子

50

粉丝
快速回复 在线客服 返回列表 返回顶部