峰值电流模式CCM BUCK的传递函数推导

开关电源环路学习笔记(6)-开关变换器传递函数Gvd(s)推导过程 终于到了最关键的环节,也是最难的环节,如何求出开关级的传递函数? 也就是下图这一级。 哎,不得不说,太难了。。。 不过没办法,先前夸下海口,跟兄弟们说我要把环路搞清楚,现在搞不动也得搞啊。 这一级之所以这么难,主要是有开关元器件,本身是非线性的。当然了,前面第2小节我们已经阐明了,在满足低频,小信号等条件下,也可以看成是线性的,这里就不再说了。 那么如何求解传递函数呢? 求解方法 求的方法有很多种,常见的有下面这几种: 1、小信号模型的建模思路——基本建模法. 阅读详情

原理图:CCM BUCK原理图

对应控制方框图

CCM BUCK方框图

各部分传递函数

  1. 输出阻抗:
    Z o ( s ) = v ^ o l ^ L = R o 1 + s R E S R C o 1 + s ( R E S R + R o ) C o Z_{o(s)} =\frac{\hat v_o}{\hat l_L} = R_o\frac{1+sR_{ESR}C_o}{1+s(R_{ESR}+R_o)C_o} Zo(s)​=l^L​v^o​​=Ro​1+s(RESR​+Ro​)Co​1+sRESR​Co​​
  2. 反馈电阻网络增益:
    G d i v ( s ) = V R E F V o G_{div}(s) = \frac{V_{REF}}{V_o} Gdiv​(s)=Vo​VREF​​
  3. 误差放大器传递函数:
    G E A ( s ) = v c o m p ( s ) ^ v F B ( s ) ^ = G m C c o m p 1 + s R c o m p C c o m p s ( 1 + s R c o m p C o e a ) G_{EA}(s)= \frac {\hat {v_{comp}(s)}}{\hat{v_{FB}(s)}}=\frac{G_m}{C_{comp}}\frac{1+sR_{comp}C_{comp}}{s(1+sR_{comp}C_{oea})} GEA​(s)=vFB​(s)^​vcomp​(s)^​​=Ccomp​Gm​​s(1+sRcomp​Coea​)1+sRcomp​Ccomp​​
  4. 比较器增益:
    F m = f s L R i ( ( V i n − V o u t ) + m c L ) F_m=\frac{f_sL}{R_i((V_{in}-V{out})+m_cL)} Fm​=Ri​((Vin​−Vout)+mc​
峰值电流模式CCM BUCK的占空比D到电感电流的传递函数是怎么推导出来的 在峰值电流模式控制的连续导通模式(CCM)Buck变换器中,占空比D到电感电流i_L的传递函数推导基于小信号分析和状态空间平均法。​分子:包含一个右半平面零点(由电容和负载电阻决定),反映输出电压变化对电感电流的耦合效应。​分母:二阶极点,由电感和电容的惯性特性形成。 阅读详情

相关推荐

buck电路数字控制

原理图: 交流小信号建模:进而可以推得占空比d与电感电流i的传递函数:采用PI控制器,计算代码如下: 三、电压环 电感电流i到输出电压的传递函数为:用Matlab计算电压环控制对象:(Kip*R*Vg*s + Kii*R*Vg)/(C*L*R*Vm*s^3 + (L*Vm + C*Kip*R*Vg)*s^2 + (Kip*Vg + R*Vm + C*Kii*R*Vg)*s + Kii*Vg) 用Matlab计算电压环的控制参数:

strongl001的博客 1882

峰值电流模式CCM BUCK中占空比D到输出电压的传递函数推导解析

本文详细解析了峰值电流模式CCM BUCK变换器中,占空比到输出电压的小信号传递函数推导过程。通过状态空间平均法建立模型,并进行小信号线性化与拉普拉斯变换,最终得到简化的二阶传递函数Gvd(s)=Vin/(s²LC+(L/R)s+1)。文章深入探讨了该函数中LC滤波器极点与阻尼系数的物理意义,并解释了峰值电流模式如何消除输出电容零点,为电源环路设计与稳定性分析提供了关键理论依据。

c7d8e9的博客 200

峰值电流模式CCM BUCK变换器传递函数推导与环路补偿设计

在开关电源设计中,BUCK变换器的控制策略直接影响系统稳定性与动态响应。峰值电流模式通过内环采样电感电流峰值,将功率级从二阶降为近似一阶,简化了补偿网络设计,并天然具备逐周期限流能力。其核心原理在于内环受控源等效与斜坡补偿,以抑制占空比大于0.5时的次谐波振荡。技术价值体现在更优的输入前馈、更易实现的多相均流以及更快的负载瞬态响应。该模式广泛应用于服务器电源、通信电源及工业控制等领域。本文深入拆解CCM模式下峰值电流模式BUCK的传递函数推导全过程,涵盖内环建模、采样保持效应、斜坡补偿计算及补偿网络设计,为

weixin_33991418的博客 421

峰值电流模式CCM BUCK变换器中占空比到电感电流传递函数的物理意义与推导过程

本文深入解析了峰值电流模式CCM BUCK变换器中占空比到电感电流传递函数的物理意义与推导过程。通过状态空间平均法和小信号建模,详细阐述了传递函数在动态响应速度、稳定性边界和补偿设计中的关键作用,并结合实际工程案例说明其在开关电源设计中的重要性。

weixin_33719619的博客 641

峰值电流模式CCM BUCK转换器的环路稳定性分析与设计

本文深入剖析了峰值电流模式CCM BUCK转换器的环路稳定性设计。文章从系统建模出发,详细推导了电流内环与电压外环的传递函数,并重点阐述了斜率补偿对防止次谐波振荡的关键作用。通过一个完整的设计实例,手把手演示了从参数计算、补偿网络设计到仿真验证的全过程,为工程师提供了从理论到实践的清晰设计指南。

alpha的博客 251

Buck电路设计必看:峰值电流模式下传递函数推导的5个关键陷阱

本文深入探讨峰值电流模式Buck电路设计中传递函数推导的五大技术陷阱,包括右半平面零点误解、占空比与电感电流动态耦合、负载阶跃模型失效等关键问题。通过详细公式分析和实测案例,帮助工程师避开常见设计雷区,提升CCM模式下Buck变换器的控制环路稳定性。

weixin_29227585的博客 107

峰值电流模式控制原理与BUCK变换器设计

开关电源控制技术中,峰值电流模式控制通过实时监测电感电流实现精确能量调节,相比传统电压模式具有更快的动态响应。其核心在于双环控制结构:外环电压环调节输出电压,内环电流环控制开关管导通时间。该技术的关键在于小信号建模和斜坡补偿设计,前者用于分析系统稳定性,后者能有效抑制占空比超过50%时的次谐波振荡。在实际BUCK变换器设计中,需综合考虑电流采样方式、补偿网络拓扑和PCB布局等因素。随着数字控制技术的发展,峰值电流模式正与数字信号处理、人工智能等前沿技术融合,推动电源控制技术向智能化方向发展。

weixin_31887307的博客 324

BUCK电路CCM/BCM/DCM三种工作模式详解及电感选型指南

开关电源设计中,电感电流的连续性决定了BUCK电路的基本工作状态,即CCM(连续导通)、BCM(临界导通)与DCM(断续导通)。理解这三种模式的区别,是进行电感选型、效率优化和环路补偿的前提。在工程实践中,负载电流变化会自然导致模式切换,而模式切换往往带来效率、纹波和动态响应的显著差异。针对轻载效率优化、电感啸叫以及模式切换时的输出抖动问题,掌握临界电感计算公式和示波器实测判断方法,能够帮助硬件工程师快速定位故障根源。本文从物理原理出发,结合实际调试案例,系统梳理了不同工作模式下元件选型与控制策略的差异,为

weixin_33968104的博客 350

BUCK电路工作模式全解析:从CCM到DCM的换流、效率与选型

开关电源是硬件设计中的核心基础,而BUCK降压变换器更是其中应用最广泛的拓扑之一。理解其工作模式,是掌握电源设计的关键。BUCK电路依靠开关管、电感和续流器件构成高效的能量搬运系统,通过占空比控制实现电压转换。在连续导通模式(CCM)下,电感电流始终连续,伏秒平衡决定了输出电压与占空比的关系;而当负载变轻,电路进入断续导通模式(DCM),电感电流出现断续,系统行为与环路特性随之改变。不同模式下,电源的效率曲线、输出纹波以及补偿网络设计都存在显著差异。电感选型、饱和电流冗余、AGND与PGND的布局处理,以及

weixin_33885676的博客 593

什么是深度展开网络?如何将迭代算法的每一次迭代展开成深度网络对应的一层?深度展开网络进行端对端训练,其中端对端是什么意思?

在深度学习和机器学习的背景下,“端到端”(End-to-end)训练指的是将输入数据直接映射到最终输出的过程,而不需要任何中间的手动数据预处理或特征工程。- **自然语言处理**:端到端自然语言处理系统可以将自然语言输入直接转化为计算机可理解的语言输出,而不需要对语言进行分解和转化。- **推荐系统**:通过使用深度神经网络,端到端推荐系统可以直接根据用户历史行为预测其未来的兴趣爱好,并推荐相应的产品或服务。4. **直接映射**:从输入到输出的直接映射,中间没有任何拆分或分解的过程。

m0_67897882的博客 5391

PC网站实现微信扫码登录功能(二)

上篇我们介绍了怎么申请账号以及最后拿到appId和appSecret,如果有不清楚的可以看一下 PC网站实现微信扫码登录功能(一) 下面我就来说一下怎样在PC端怎么实现扫码登录功能。 一、进入官方文档网站 https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html 其实官网对过程描述的已经非常细致了。并且提供了两种扫码方式。一种是跳转二维码扫描页面,另一种是内嵌式二维码。大家可以

qq_35771266的博客 3万+

Matlab:常见涡旋光束仿真

代码: clc clear all close all %% 环形涡旋光束 N = 200; lambda = 632e-9; %波长为632nm k = 2*pi/lambda; %波数 w0 = 3; %束腰半径 x = linspace(-10,10,N); y = linspace(-10,10,N); [X,Y] = meshgrid(x,y); [t...

zzz997的博客 3万+

BERTopic安装指南:hdbscan依赖问题全解析(附解决方案)

本文详细解析了安装BERTopic时常见的hdbscan依赖报错问题,深入剖析了C++编译环境缺失、Python版本兼容性以及包管理渠道混用三大核心原因。针对Windows、macOS和Linux不同系统,提供了创建虚拟环境、使用conda安装预编译包、安装C++编译工具等具体解决方案,帮助用户顺利安装BERTopic并开始文本主题建模实践。

weixin_29061041的博客 209

大模型时代必备技能:3种向量量化技术对比(PQ/AQ/RVQ)与选型指南

本文深入解析了大模型时代处理海量向量数据的关键技术——向量量化。通过对比Product Quantization (PQ)、Additive Quantization (AQ)和Residual Vector Quantization (RVQ)三种主流技术的核心原理、性能表现与适用场景,为工程师提供了从理论到实践的选型指南,旨在解决向量存储与检索的效率瓶颈,助力RAG等大模型应用高效落地。

silver的专栏 786

Open3D (C++)球旋转算法(BPA)三维建模

球旋转算法用于点云三维建模的C++代码实现。

点云侠的博客 1765

AI自动化流程在金融风控中的3个典型案例

AI自动化风控流程全流程自动化:最小化人工干预,实现从数据输入到决策输出的闭环自适应学习:通过持续数据反馈实现模型自动迭代优化实时决策能力:满足毫秒级(支付风控)至分钟级(信贷审批)的响应需求多模态数据融合:整合结构化、非结构化和实时流数据智能决策解释:自动生成符合监管要求的决策解释人机协同机制:在高风险场景下实现AI与人类专家的协同决策实施后关键绩效指标(KPI)变化指标实施前实施后改进幅度平均审批时间3.2天4.7分钟-99.7%自动审批率15%85%+467%

架构师的AI之路,分享AI应用开发架构的学习与实践。 1531

如何设置反馈点

前面的POWER DC仿真都是忽略反馈线进行的仿真,如果单板压降不过,电源会自动调整输出电压,来满足负载的得到额定的电压.可以看到因为设置了反馈点,源端电压就被抬高到满足压降的值了。仿真上也可以自己添加反馈点,以得到抬高后的电源输出电压值。同样以下图的CPU的Core电源为例。按照流程正常设置好参数。

weixin_54787054的博客 1142

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 峰值电流模式CCM BUCK的比较器增益Fm是怎么推导出来的
OneMillet
博客等级 码龄14年 112粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值