打印

运放电路的matlab分析介绍

[复制链接]
1077|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 | 只看该作者
666!

使用特权

评论回复
5
airwill| | 2019-12-15 08:57 | 只看该作者
Matlab 擅长计算, 但不会化简

使用特权

评论回复
6
叶春勇|  楼主 | 2019-12-15 13:44 | 只看该作者
matlab可以化简,因式分解

使用特权

评论回复
7
叶春勇|  楼主 | 2019-12-15 14:05 | 只看该作者
不过我用matlab的目的,主要还是在e6,e24电阻中找到合乎要求的设计,不过还是改成c语言了,搜6个以上变量,matlab效率还是低

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

151

主题

4809

帖子

50

粉丝