升压(Boost)变换电路是一种输出电压大于等于输入电压的单管非隔离直流变换电路。它由直流电压源、电感、开关管、二极管、滤波电容、负载电阻组成,升压电路图如图1所示。
在上一篇降压(Buck)变换电路中,它的拓扑结构由电压源、串联开关、和电流源负载组成。而升压变换电路是降压变换电路对偶拓扑结构,升压变换器由电流源(电压源串联较大电阻组成)、并联开关、电压源负载(并联电容)组成。通过控制开关管的占空比,进而控制输出电压的大小,升压变换电路的两个工况如图2、图3所示,分别代表开关管导通状态和开关管截止状态。
升压变换电路根据电感电流是否连续,依然分成三种状态:连续导通、不连续导通、临界状态三种工作模式。为了方便分析升压电路的稳态特性,简化推导公式过程,作出如下假设:
1)当开关管T导通时,如图2所示。二极管D接Us负极,承受反向电压截止,电容C向负载R供电,极性上正下负,电压源全部加载到电感L两端,即uL=Us。在该电压下,电感电流线性增加,储存的磁场能量也线性增加。在一个开关管T的周期内,开关管T导通时间为ton。
开关管T导通后,电感电流增加量为

其中,D为占空比,且D=ton/Ts。
2)当开关管T截止,如图3所示。二极管承受正向电压导通,电感电流经二极管流向输出侧,电感L中的磁场将改变电感两端的电压极性,以保证电感电流不变。因此电压源Us串联电感电压uL给电容和电阻供电,负载R两端的极性仍是上正下负。电感电压uL=Us-Uo<0,电感电流线性减小。在一个周期内,开关管T截止的时间为Ts-ton。
在开关管T截止期间,电感电流的减少量为

当稳态时,开关管导通期间电感电流的增加量等于截止期间电感电流的减少量,即

即Uo=Us/(1-D),因为D<0,所以1-D<1,所以输出Uo始终大于输入Us,因此该电路为升压电路。
升压变换器处于电感电流临界状态有,电感电流等于两倍的电源电流,即iL=2Is。变换电路的输入功率和输出功率分别为

假设忽略损耗,输入功率等于输出功率,可以得到

联立等式
,可得电感临界值

需说明的是,在实际应用中,电感的实际值一般取电感临界值的1.2-1.3倍。
在电感连续模式下,考虑二极管电流会全部流进电容器,在每一个开关管周期内,电容充电或放电的能量Q为

由Q产生的纹波电压可表示为

根据纹波电压的取值,可计算电容值C为

下面做两个实验验证电路设计是否准确,开关管T分别选取20KHz的MOSFET和10KHz的IGBT。
技术指标:输入电压5V,输出电压15V,纹波电压要求0.2%Uo,负载电阻10欧,开关器件20kHz的MOSFET。
①确定占空比

②确定电感值
实际电感值为临界电感值的1.3倍,即
③根据纹波电压确定电容值
④搭建仿真模型

⑤仿真结果验证


技术指标:输入电压12V、输出电压36V、电阻20欧,纹波电压0.2%Uo,开关器件10kHz的IGBT
①利用MATLAB计算仿真模型所用到的参数

②搭建仿真模型
③仿真结果验证
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"
我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option
我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano
我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use