草庐IT

【开关电源五】电源拓扑之全桥、半桥、推挽

highman110 2023-04-13 原文
👉个人主页: highman110
👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容

   

目录

1 半桥变换器

1.1 半桥电路工作原理

1.1.1 连续电流模式

1.1.2 断续电流模式

2 全桥变换器

2.1 全桥电路工作原理

3 推挽变换器

3.1 推挽电路工作原理


    

        开关电源系列第二篇和第三篇分享了反激和正激两种隔离DCDC拓扑的工作原理,今天再分享另外三款隔离DCDC拓扑:半桥、全桥、推挽。

1 半桥变换器

        半桥变换器变压器原边由两只电容和两只高压晶体管对角线连接组成,两个电容将输入电压一分为二,在双管断开时,减小了原边开关管的电压应力,所以被很多高压开关电源所采用。开关S1和S2交替导通,使变压器原边形成幅值为Ui/2的交流电压,而变压器副边相当于连接了一个buck电路,所以改变开关占空比就可以改变输出电压Uo。基本拓扑如下图所示:

1.1 半桥电路工作原理

1.1.1 连续电流模式

        半桥电路处于连续工作模式时,在一个开关周期内经历四种开关状态,其中状态2和状态4是相同的。如下图所示:

    下图所示为半桥电路连续电流模式波形:

        状态一:t0~t1,S1导通,S2断开,这时电容C1给变压器充能,形成从变压器原边同名端流入的电流,依据楞次定律,变压器副边会产生从同名端流出的电流来阻碍磁通增加,此时上绕组的二极管VD1导通,形成回路:上绕组N2→二极管VD1→电感L→负载R,电感电流线性上升,电感进行充能。而下绕组同名端输出的电流被二极管VD2截止,不能形成回路,相当于在理想情况下,电容C1的能量传递给变压器,变压器再通过磁耦合将能量从原边传递到副边,副边再通过产生的感应电动势将能量传递给电感。

        状态二:t1~t2,S1、S2均断开,此时变压器原边线圈电流为0,而电感L中的电流不能突变,为保持变压器的磁势平衡,变压器下绕组将分担一半电感电流,方向与上绕组电流方向相反,此时二极管VD1、VD2均导通,电感L放能。

        状态三:t2~t3,S1断开,S2导通,这个状态和状态一类似,只是能量传递由C2开始传,副边形成的电流回路为:下绕组N2’→二极管VD2→电感L→负载R,电感电流线性上升,电感进行充能。

        状态四:t3~t4,S1、S2均断开,此状态和状态二相同。

        在通过开关将直流逆变为交流时,应避免开关S1、S2同时导通造成短路,每个开关的导通时间不能超过50%*TS,并要留有余量,如波形图中ton标示所示。

        输入输出关系根据电感的伏秒积平衡可以推出:

        其中:

1.1.2 断续电流模式

        此时电路在一个周期内经历六个状态,如下图所示:

           下图所示为半桥电路断续电流模式波形:

        状态一:t0~t1,与连续电流模式状态一一致。

        状态二:t1~t2,与连续电流模式状态二一致。

        状态三:t2~t3,电感电流保持为0,依靠电容维持输出,和buck电路断续模式一样。

        状态四:t3~t4,与连续电流模式状态三一致。

        状态五:t4~t5,与连续电流模式状态四一致。

        状态六:t5~t6,电感电流保持为0,依靠电容维持输出,和buck电路断续模式一样。

        断续模式输入输出关系和之前分享过的推导过程类似:

        其中:

2 全桥变换器

        全桥变换器的逆变电路由四个开关组成,互为对角的两个开关同时导通,而同一侧开关交替导通,将直流电逆变为幅值为Ui的交流电,加在变压器原边上。改变开关的占空比就可以改变输出电压。基本拓扑如下图所示:

2.1 全桥电路工作原理

        这里只描述电流连续模式,断续模式的分析和前面的类似,不再赘述。

        电流连续模式同样有四个状态,如下图所示。

        下图所示为全桥电路连续电流模式波形:

        状态一:t0~t1,S1、S4导通,S2、S3断开,这时电源给变压器充能,形成从变压器原边同名端流入的电流,依据楞次定律,变压器副边会产生从同名端流出的电流来阻碍磁通增加,此时副边的二极管VD1、VD4导通,形成回路:变压器副边→二极管VD1→电感L→负载R→二极管VD4,电感电流线性上升,电感进行充能。

        状态二:t1~t2,S1、S2、S3、S4均断开,此时二极管VD1、VD2、VD3、VD4均导通,每个二极管流过电感电流的一半,电感L放能。

        状态三:t2~t3,S1、S4断开,S2、S3导通,这个状态和状态一类似,副边形成的电流回路为:变压器副边→二极管VD3→电感L→负载R→二极管VD2,电感电流线性上升,电感进行充能。

        状态四:t3~t4,S1、S2、S3、S4均断开,此状态和状态二相同。

        在通过开关将直流逆变为交流时,应避免上下两开关同时导通造成短路,每个开关的导通时间不能超过50%*TS,并要留有余量,如波形图中ton标示所示。

        另外,若S1、S4与S2、S3的导通时间不对称,则交流电压Ur中将有直流分量,此直流分量会造成变压器磁饱和,可以在变压器一次侧串联一个电容,隔断直流分量。

        输入输出关系根据电感的伏秒积平衡可以推出:

        其中:

3 推挽变换器

        推挽变换器的开关S1、S2交替导通,将直流电逆变为幅值为Ui的交流电,在绕组N1和N1’两端形成形成相位相反的交流电压。S1和S2在开关断开时承受的瞬态电压峰值均为2Ui。改变开关的占空比就可以改变输出电压。基本拓扑如下图所示:

3.1 推挽电路工作原理

        这里只描述电流连续模式,断续模式的分析和前面的类似,不再赘述。

        电流连续模式同样有四个状态,如下图所示。

                下图所示为推挽电路连续电流模式波形:

        状态一:t0~t1,S1导通,S2断开,副边的二极管VD1导通、VD2截止,形成回路:变压器副边→二极管VD1→电感L→负载R,电感电流线性上升,电感进行充能。

        状态二:t1~t2,S1、S2均断开,此时二极管VD1、VD2均导通,每个二极管流过电感电流的一半,电感L放能。

        状态三:t2~t3,S1断开,S2导通,这个状态和状态一类似,副边形成的电流回路为:变压器副边→二极管VD2→电感L→负载R,电感电流线性上升,电感进行充能。

        状态四:t3~t4,S1、S2均断开,此状态和状态二相同。

        在通过开关将直流逆变为交流时,应避免上下两开关同时导通造成变压器短路,每个开关的导通时间不能超过50%*TS,并要留有余量,如波形图中ton标示所示。

        另外,若S1与S2的导通时间不对称,则交流电压Ur中将有直流分量,此直流分量会造成变压器磁饱和,与全桥电路不同的是,推挽电路无法在变压器一次侧串联电容,只能靠精确控制信号和电路元件参数匹配来避免直流分量的产生。

        输入输出关系根据电感的伏秒积平衡可以推出:

        其中:

有关【开关电源五】电源拓扑之全桥、半桥、推挽的更多相关文章

  1. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  2. ruby - ruby 命令行开关 -rubygems & -r 不兼容吗? - 2

    我最近将一个ruby​​库转换为一个gem,这似乎破坏了命令行的可用性作为图书馆工作得很好$ruby-rfoobar-e'pFooBar.question'#=>"answer"作为一个gem,irb知道如何从命令行开关中请求一个gem$irb-rubygems-rfoobarirb(main):001:0>FooBar.question#=>"answer"但对于ruby​​本身来说同样失败了:$ruby-rubygems-rfoobar-e'pFooBar.question'ruby:nosuchfiletoload--foobar(LoadError)我现在必须这样做吗,这看起来

  3. 第1部分 实验拓扑、终端服务器 - 2

    目录1.1访问Cisco路由器的方法1.1.1通过Console口访问路由器1.1.2通过Telnet访问路由器1.1.3终端访问服务器1.2终端访问服务器配置命令汇总1.1访问Cisco路由器的方法    路由器没有键盘和鼠标,要初始化路由器需要把计算机的串口和路由器的Console口进行连接。访问Cisco路由器的方法还有Telnet、WebBrowser和网络管理软件(如CiscoWorks)等,本节讨论前2种。1.1.1通过Console口访问路由器    计算机的串口和路由器的Console口是通过反转线(Rollover)进行连接的,反转线的一端接在路由器的Console口上,另一

  4. ruby - bundle exec rspec spec/=> RUBYOPT : -F (RuntimeError) 中的无效开关 - 2

    当我在Windows764位系统上运行bundleexecrspecspec/时,我收到以下错误:invalidswitchinRUBYOPT:-F(RuntimeError)我正在运行ruby​​1.9.2p136(2010-12-25)[i386-mingw32](安装在c:\ProgramFiles(x86)\Ruby192)和bundler1.0.15(作为ruby​​gem安装).关于如何解决这个问题的任何线索?谢谢,本 最佳答案 Bundler不喜欢Ruby的路径包含空格这一事实。为了解决这个问题,我编辑了runtime

  5. ruby-on-rails - Ruby on Rails 案例/开关。如何匹配对象? - 2

    我正在开发ruby​​onrails应用程序。对于sessionController,我想用一个案例来检查用户的帐户是否被锁定或禁止。我正在尝试使用类的对象作为案例,并使用when来检查属性。例如,user=Profile.find(1)caseuserwhenuser.banredirect_to()whenuser.lockredirect_to()elseredirect_to()end唯一的问题是它不起作用。这是什么工作:caseuser.banwhentrueredirect_to()elseredirect_to()end关于如何使用开关检查用户对象是否被禁止或锁定,有什么

  6. ruby-on-rails - Ruby 功能开关/功能脚蹼 - 2

    Flickr都给我带来了启发和Disqus使用功能开关。他们都在博客上介绍了他们以及他们在两个开发博客上的工作方式。我只是想知道是否有我缺少的Rubygem,或者是否有人知道在Ruby中执行此操作的方法?如果没有任何东西,我希望自己制作并在野外释放它。但我只是想先在这里问一下,因为我还没有找到任何与Flickr和Disqus所达到的远程相似的东西。 最佳答案 检查rollout如果您已经在使用Redis。 关于ruby-on-rails-Ruby功能开关/功能脚蹼,我们在StackOve

  7. ruby - 如何使用 Ruby OptionParser 指定所需的开关(不是参数)? - 2

    我正在编写一个脚本,我想要一个带有值的--host开关,但是如果没有指定--host开关,我想要选项解析失败。我似乎不知道该怎么做。文档似乎只指定如何使参数值成为强制性的,而不是开关本身。 最佳答案 一种使用optparse的方法,可以在缺少开关时提供友好的输出:#!/usr/bin/envrubyrequire'optparse'options={}optparse=OptionParser.newdo|opts|opts.on('-f','--fromSENDER','usernameofsender')do|sender|op

  8. Ruby on Rails 开关 - 2

    这个问题在这里已经有了答案:HowtowriteaswitchstatementinRuby(28个答案)关闭9年前。谁能提供一个关于如何在Ruby中为变量使用switchcase的例子?

  9. javascript - Bootstrap 开关 setState 给出 js 错误 - 2

    我正在尝试使用来自Ajax的条件返回值来更改Bootstrap开关的状态,HTML,if(objData.limit==='Yes'){$('#limit').bootstrapSwitch('setState',true);$("#limit_amount").prop("readonly",false);}else{$('#limit').bootstrapSwitch('setState',false);$("#limit_amount").prop("readonly",true);}但它抛出如下错误..UncaughtTypeError:Cannotreadproperty'

  10. javascript fizzbuzz 开关语句 - 2

    我目前正在学习关于Javascript的代码学院类(class),并且我被困在FizzBu​​zz任务上。我需要从1到20数,如果这个数字可以被3printfizz整除,被5printbuzz整除,被两个printfizzbuzz整除,否则只打印数字。我能够用if/elseif语句来完成它,但我想用switch语句来尝试它,但无法得到它。我的控制台只记录默认值并打印1-20。有什么建议么?for(varx=0;x 最佳答案 Switch将switch(x){中的x与case表达式的求值结果相匹配。由于您所有的情况都会导致true/f

随机推荐