世纪电源网社区logo
社区
Datasheet
标题
返回顶部
讨论

【龙腾原创】教您使用matlab画伯德图(看了你就学会了,比mathcad好用多了。谁用谁知道!)

[复制链接]
查看: 38046 |回复: 22
1
qiuseqian
  • 积分:399
  • |
  • 主题:19
  • |
  • 帖子:96
积分:399
LV4
初级工程师
  • 2014-3-19 08:44:37
matlab是个很强大的计算软件,它涉及的领域非常广。只要你所涉足学科和数学有关,基本都能用到matlab。在开关电源闭环设计中,我们经常需要画开关电源的小信号模型的伯德图。这时,matlab的优势就体现出来了。在matlab中支持三种操作方式,一是直接在命令窗口编写脚本代码,然后运行。另外一种是编写m文件,然后编译运行。
楼主下面用使用实例来说明如何使用matlab来画传递函数对应的伯德图。使用以前出的一个教程做例子。假设有一buck变换器,它的电路参数为:
Vin=20,L=50uH,C=500uF,R=1ohm,Rc=0.01ohm,Rl=0.25ohm







上图是我在我之前发的一个buck的pid调节教程帖子里截的(传送门https://bbs.21dianyuan.com/165617.html)。下面介绍一下matlab里面的画传递函数需要使用的函数。
首先我们需要了解tf函数,tf函数的作用使用来是构建传递函数的,与它作用相同的还有函数zpk,下面一个一个介绍他们的使用方法。
tf函数使用的使用只需要知道传递函数的分子分母系数就可以了。例如上面给出的buck的传递函数,他分子的系数为Vin,Vin/wz;分母的系数为1,1/q/w0,1/w0^2。我们把这些系数都计算出来(可以直接使用matlab计算)后,调用这个tf函数,我们就可以构建出上面的那个传递函数。构建方法如下:

G1=tf([Vin/wz Vin],[1/w0^2 1/q/w0 1]);
运行上面一行代码,我们就可以构建出上面给出的那个传递函数了。构建出传递函数后我们就可以调用margin函数或者是bode函数画出它对应的伯德图了。但是,大家有没有觉得,调用tf函数的时候我们给出的系数为什么和我们列出的系数不一样呢?这是因为,在tf函数的帮助文档里,是这样要求的:在调用tf函数时,传递函数的分子分母的系数应该按照降幂的顺序(什么是降幂顺序?降幂顺序指的就是按照w的高次方到低次方的顺序排列)排列,而且第一个参数矩阵对应的是传递函数分子的系数,第二个参数矩阵对应的是传递函数分母的系数。所以应该按照上面的系数顺序来调用tf函数。
我们现在命令窗口运行下面的脚本代码,把一些基本的值都算出来,代码如下:
Vin=20;l=50e-6;c=500e-6;r=1;rl=0.25;rc=0.01;
w0=1/(l*c)^0.5;
wz=1/rc/c;
wzl=rl/l;
q=r/(l/c)^0.5;
运行界面如下图所示:







然后我们调用tf函数,如下图所示:





在调用margin函数,就可以把bode图画出来,如下图所示:



看到了吗?伯德图出来了,而且穿越频率和相位裕度什么的都有了,不用自己解方程,good job!我们把伯德图关掉在调用一下bode函数试试。





看到了margin函数和bode函数的区别吗?楼主一般喜欢使用margin函数==。有些同学想把横坐标换成频率,怎么办呢?在bode函数和margin函数中,其实还有一个结构体参数。我们加一下这几行代码就可以了。
p=bodeoptions;
p.FreqUnits='Hz';
p.Grid='on';
加了这几行代码再调用bode函数,会发生什么呢?







看到了吗?就是这么神奇!但是唯一的缺陷就是margin函数没有这个结构体的参数==,真是忧伤啊!世间之事就是难以十全十美==,处女座们怎么办啊!有兴趣的工们--自己捣鼓捣鼓吧,楼主愚钝,不想钻研了。或许还有其他办法能十全十美。


楼主开一贴,不为征服世界!只为方便大家,我亲爱的工程师们!新的一天,加油吧!
最爱matlab!
景若寒0515
  • 积分:609
  • |
  • 主题:11
  • |
  • 帖子:169
积分:609
LV6
高级工程师
  • 2014-3-19 11:48:59
 
支持下你。。
绍兴大力
  • 积分:1987
  • |
  • 主题:40
  • |
  • 帖子:372
积分:1987
版主
  • 2014-3-19 12:14:37
 
不错,加油!
qiuseqian
  • 积分:399
  • |
  • 主题:19
  • |
  • 帖子:96
积分:399
LV4
初级工程师
  • 2014-3-19 20:05:21
 
谢谢景师妹!
面包
  • 面包
  • 离线
  • LV3
  • 助理工程师
  • 积分:265
  • |
  • 主题:7
  • |
  • 帖子:68
积分:265
LV3
助理工程师
  • 2014-3-19 20:33:33
 
tlc0927
  • 积分:487
  • |
  • 主题:13
  • |
  • 帖子:130
积分:487
LV6
高级工程师
  • 2014-3-19 20:04:28
 
你好,我在学习你的方法是遇到最后一步不能实现频率的转换,请指点,我用是matlab2011b
qiuseqian
  • 积分:399
  • |
  • 主题:19
  • |
  • 帖子:96
积分:399
LV4
初级工程师
  • 2014-3-19 20:05:08
 
要使用bode函数 margin函数不支持
tlc0927
  • 积分:487
  • |
  • 主题:13
  • |
  • 帖子:130
积分:487
LV6
高级工程师
  • 2014-3-19 20:11:35
 
请你帮我看看哪里不对?


tlc0927
  • 积分:487
  • |
  • 主题:13
  • |
  • 帖子:130
积分:487
LV6
高级工程师
  • 2014-3-19 20:12:42
 
好像我的网格也没有出现
qiuseqian
  • 积分:399
  • |
  • 主题:19
  • |
  • 帖子:96
积分:399
LV4
初级工程师
  • 2014-3-19 20:21:29
 
bode(G1,p)
qiuseqian
  • 积分:399
  • |
  • 主题:19
  • |
  • 帖子:96
积分:399
LV4
初级工程师
  • 2014-3-19 20:22:28
 
自动计算穿越频率、相位裕度和幅值裕度请使用 margin(G1)
tlc0927
  • 积分:487
  • |
  • 主题:13
  • |
  • 帖子:130
积分:487
LV6
高级工程师
  • 2014-3-19 20:33:49
 
好了,谢谢,我查了一下matlab的help文件,可以了。
qiuseqian
  • 积分:399
  • |
  • 主题:19
  • |
  • 帖子:96
积分:399
LV4
初级工程师
  • 2014-3-19 23:40:50
  • 倒数10
 
多看help 万能的help
huhushuai
  • 积分:1902
  • |
  • 主题:31
  • |
  • 帖子:535
积分:1902
LV6
高级工程师
  • 2014-4-1 09:33:14
  • 倒数6
 
好久没用matlab有点生疏了。
huhushuai
  • 积分:1902
  • |
  • 主题:31
  • |
  • 帖子:535
积分:1902
LV6
高级工程师
  • 2014-3-26 20:10:39
  • 倒数7
 
和楼主学习下matlab怎么用。
zhijie240
  • 积分:1192
  • |
  • 主题:21
  • |
  • 帖子:433
积分:1192
LV6
高级工程师
  • 2014-3-19 20:35:10
 
进来学习一下~~
qiuseqian
  • 积分:399
  • |
  • 主题:19
  • |
  • 帖子:96
积分:399
LV4
初级工程师
  • 2014-3-19 23:41:02
  • 倒数9
 
感谢来踩
一花一天堂
  • 积分:4066
  • |
  • 主题:34
  • |
  • 帖子:1892
积分:4066
LV8
副总工程师
  • 2014-3-20 08:12:33
  • 倒数8
 
admiration123
  • 积分:219
  • |
  • 主题:2
  • |
  • 帖子:17
积分:219
LV3
助理工程师
  • 2014-12-21 10:13:25
  • 倒数5
 
先谢谢,在看内容,就在找这个



kfhzy
  • kfhzy
  • 离线
  • LV6
  • 高级工程师
  • 积分:714
  • |
  • 主题:15
  • |
  • 帖子:75
积分:714
LV6
高级工程师
  • 2015-2-22 12:28:00
  • 倒数4
 
makaaa
jacobson
  • 积分:1121
  • |
  • 主题:1
  • |
  • 帖子:117
积分:1121
LV6
高级工程师
  • 2015-2-24 20:48:28
  • 倒数3
 
确实不错,有空试试,
wszdxp2004
  • 积分:7407
  • |
  • 主题:64
  • |
  • 帖子:1068
积分:7407
LV8
副总工程师
  • 2015-7-2 21:32:41
  • 倒数2
 
Cascaded
  • 积分:836
  • |
  • 主题:20
  • |
  • 帖子:126
积分:836
LV6
高级工程师
最新回复
  • 2017-4-25 18:06:53
  • 倒数1
 
楼主请问两个bode图如何合在一起?就是幅值、相角合在一起
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦5层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)28285637 /(13823562357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2021 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348