 |  | | | |
一、数字电源的优缺点:
数字电是以MCU或DSP为核心控制器的电源,本方案是采用STM8S003F3P6为核心,输入10~14V,输出恒流0.7A限压37V的boost拓扑车载30瓦LED驱动电源,效率达到90%。
数字电源的优点:成本低,可移植性强,可扩展性强。
成本低:本方案采用的是STM8S003F3P6为控制器,STM8S003F3P6是ST公司生产的8位单片机,具有10位5路ADC,3个定时器,集成UART,I2C,SPI协议,最高频率16MHz。价格在1.2元左右,比一般的模拟控制器还要便宜。
可移植性强:编写的功能代码可以以函数库的形式封装,方便自己和别人调用。一次编写,终生调用。
可扩展性强:由于MCU有很多IO口,可以方便的接入保护、通信、显示、特殊要求等功能。
扩展保护功能:假如想加入一个风扇控制器,模拟电源需要使用NTC热敏电阻,外加运放滞回比较器。而数字电源仅仅需要外加一个热敏电阻即可,通过ADC采样,用查表法来判断温度,滞回合一通过程序代码来实现,而且具有精度高的特点
扩展通信功能:由于单片机内置有UART,I2C,SPI协议,可以通过引出IO口,来实现数控功能。例如电压电流信号输出、上位机控制等等。
扩展显示功能:可以方便的外置数码管、LED、LCD等显示设备。
扩展特殊要求功能:有些电源需要特殊的要求,例如铅蓄电池的充电,要有恒流、恒压、涓流三个阶段。如果采用运放进行控制,硬件电路会很麻烦。如果采用数字电源,再添加入几行代码即可完成特殊的要求。
数字电源的缺点:精度低、抗干扰能力弱。
精度低:输出电压、电流的精度主要取决于ADC采样精度和PWM步进的精度。ADC采样精度一般都不是问题,10bit的ADC就可以达到3.3mV的精度。PWM的精度主要受到时钟频率和开关频率的影响。PWM精度=1/(时钟频率/开关频率)。比如本方案采用的失踪好难过频率=16MHz,开关频率=100kHz。那么PWM精度=1/(16M/100k)=1/160。也就是PWM只能在0~160之间的整数调节。这个PWM精度问题可以通过抖频来解决,但是抖频会产生较大的电压纹波。
抗干扰能力弱:开关电源产生的电磁干扰较强,可能会影响MCU,导致死机。这个问题可以通过优化PCB布线,加入屏蔽等方式来解决。
|
|
|
|
|
| |  |  | | | | | | STM89S51是什么单片机??你说的是51单片机吧?那应该是 AT89 S51,或者 STC89 C51。两家不同的公司(Atmel、宏晶)。本文用的是STM8 (ST公司)。
要做数字电源,单片机应该至少具有两个功能:
1: 片内具有ADC。(外置ADC也可以,不过价格太高)
2: 片内集成PWM输出。(片内定时器要可以输出PWM)
STC89C51是没有这两个功能,你可以参考一下宏晶的一些 增强型的51单片机,如果PWM和AD是支持的,那么就可以方便的做数字电源。 |
|
|
| | |  |  | | | | | | | PWM功能速度要足够高才可以,要不做3P3Z时不够。
|
|
|
|  |  | | | | | 你好 我也在做一个BOOST数字电源 请教一个PID思路问题 请帮忙指点一下 1.首先调KP参数 是否采集输出电压与预先设定电压比较 然后调整占空比 转化成代码就是 Dmax=KP(U采集-U设定)
2.判断KP参数是否合适 就是判断输出电压是否在进行周期振荡
3.能否解释下 PWM软启动 是什么意思 有什么作用
|
|
|
|
|  |  | | | | | 楼主 你这个PWM精度 是不是就是采样频率????
|
|
|
|  |  | | | | | 目前,我海没有搞过数字电源呢,有没有实际用应的方案,呈现一下,分享一下呗,
|
|
|
|
|
 |  | | | |
二、参数计算
输入电压:10~14V
恒流电流:0.7A (留余量,保证适应大多数LED,取1A)
限压电压:38V (留余量,保证适应大多数LED,取40V)
其余已知参数如下图:
电感计算:
电感选取37uH,5.2A;线径使用RMS=4.14A计算。
输出电容计算:
忽略ESR,电容量需要38uF。
忽略电容量,ESR需要39mR,根据ESR与C的一般关系,C取1670uF。
电容允许RMS电流要大于1.8A。
实际综合上述情况采用50V,1000uF电解电容。
其他参数计算:
 |
|
|
|  |  | | | | | “根据ESR与C的一般关系,C取1670uF。”
请问楼主,这个是怎么的出来的?
|
|
|
|
| | |  |  | | | | | | | 其实这段话是错的。用这段话算输出电解电容,值小的一塌糊涂,巨省钱,老板都笑了 |
|
|
| | | |  |  | | | | | | | | 前面不是说了嘛,这个计算方法是忽略掉Irms影响和容量的影响,通过ESR计算的。
这个公式只是计算ESR对纹波的影响。实际的话,还要计算容量对纹波的影响、以及最大能够承受的RMS电流。
书上面的那段话没有错,只是在特定的条件下(假设Irms和容量不是主要因素)计算得到的取值。
在3楼,分别计算出来了有电荷量守恒得到的容量值、有ESR得到的容量值、以及最大RMS电流。通过综合比对,然后再选择电容。 |
|
|
| | | | |  |  | | | | | | | | | 这本书的这个理论我以前也用过
后来看过一些别人的方法,有些是直接把算出来的理想值放大10倍-30倍
我自己用电桥测过一些直插的电解电容,这个值有比较接近书上提的数的,也有差的较远的
其实这本书写的还是离现在有一些年头了,半导体技术总有改进吧,ESR*C值应该多少降了一些下来了
所以我还是想看看实际搞工程的人是怎么处理的 |
|
|
| | | |  |  | | | | | | | | 有可能,我曾做过一个实验如果按书上的电容容量的话,输出纹波根本达不到要求,除非用无感电容或者更好的 |
|
|
| | | | |  |  | | | | | | | | | 书上的计算方法,都是假定某个参数为理想情况下计算的。实际要考虑到各种非理想的问题。 |
|
|
|  |  | | | | | 你好 请教下2个问题
1. 你的电感 是环型电感吧 是加工订做的 还是直接买现成的?有没有联系方式给我 我也找功率电感
2.电感线径与电流有没有对应的计算资料 |
|
|
| |  |  | | | | | | 电感的线径的选择,主要是看a:电流的有效值。b:电流密度。c:功耗。
a:电流连续模式CCM情况下的电感电流的有效值=Io*sqrt(1+r^2/12)/(1-D)参见《精通开关电源设计》第331页。
b:环形电感散热比较方便,电流密度一般可以取得稍微大一些。
c:至于功耗就是铜损了,铜损=电流有效值的平方,乘以ESR。 只要在功耗允许的范围内就可以。
|
|
|
|
| |  |  | | | | | | 请问楼主,在这个公式中Esr=△u/△i,分子是纹波电压变化量,分母是纹波电流变化量吧。而在此处的分母是峰值电流吧,不知道我哪理解有问题,求指点? |
|
|
| | |  |  | | | | | | | boost拓扑这里使用电流的峰峰值,不是电感电流纹波。如果buck电路,那△i就是纹波电流了。其实也是峰峰值。 |
|
|
| | | |  |  | | | | | | | | IL*(1+r/2)这算出来的是上峰值吧,下峰值呢?然道为零么? |
|
|
| | | | |  |  | | | | | | | | | 对于boost下峰值就是0了。就是流入二极管的电流波形一样。 |
|
|
|
|
|
|
| |  |  | | | | | | 这个是试验测试阶段,暂未加入过压保护。如果要加入过压保护或者欠压保护,仅需两个分压电阻到一个IO口,程序稍微改动即可。 |
|
|
|
|
|
|
|
| |  |  | | | | | | 使用的Microsoft Office Visio 2007 |
|
|
|  |  | | | | | 看着楼主的代码亲切,我也做个这个小东东;PID控制效果如何? |
|
|
| |  |  | | | | | | 总体的效果还是不错的。就是PID算法还需要进一步优化。 |
|
|
|  |  | | | | | stm8 不能pintf 重定向到USART么 ,用的着这么麻烦么? |
|
|
|
|
|
|
|
|
|
| |  |  | | | | | | 我始终怀疑从比较器触发中断,再关断驱动时间太长了,对于次级短路(不是这个应用,是指反激,这个短路就直接挂了)反应时间不够。 |
|
|
|
| | | |  |  | | | | | | | | 8位单片机确实慢了, 我的DSP就用内部比较器实现短路保护的 |
|
|
|
| | | | |  |  | | | | | | | | | 看他的CPU执行频率了。。我短路都是直接用中断的。。然后中断为了快速就直接把其他变量保存都移除,剩下的就3 4 条语句就关了。。用8M的速率 短路保护的处理时间1uS都不用即使加上硬件延时估计也不会超2uS 如果这个时间也大了的话那就没有办法做了。。。 |
|
|
| | | |  |  | | | | | | | | 肯定设为最高,但从相应到执行还是有几个周期的,频率不高几个周期可能就几微秒了,结果可想而知。 |
|
|
| | | | |  |  | | | | | | | | | 像楼主用的STM8S 16Mhz, 每个指令周期0.0625us,STM8S进入中断花4个指令周期,关闭PWM用2个指令,满打满算10个指令周期就能完成,所花时间不超过1us,一般是够的! |
|
|
| | | | | |  |  | | | | | | | | | | 这个MCU没有了解,指令周期如果和工作频率相等的话还好一些,一般IC从过流到关断的时间大约在200ns,1uS的话变压器磁密设计余量留大点是可以的。 |
|
|
| | | | | | |  |  | | | | | | | | | | | 为什么要将短路时间做的这么短呢?我看数据手册给的,短路电流是4倍额定电流时,短路时间是10us。 |
|
|
| | | | | | | |  |  | nc965- 积分:103587
- |
- 主题:115
- |
- 帖子:29740
积分:103587 版主 | | | | | | | | | | | 郭工说的应该是开关的OCP保护,0.2us是必须的,对于输出短路,应该可以放宽一个数量级。 |
|
|
| | |  |  | | | | | | | 唐总说的有道理,把中断优先级设为最高,当次级短路时候,直接完全关断PWM输出,这个过程也就几个微秒。几个微秒的短路反应时间应该还是可以的。 |
|
|
|
| | | | |  |  | | | | | | | | | 请问为什么反激非常危险呢?是反激拓扑本身危险,还是接入电网了比较危险呢? |
|
|
| | | | | |  |  | | | | | | | | | | BOOST输出短路直接就挂了。
反激危险是指从检测到过流触发中断,压栈,执行关断指令,需要几个周期,在这几个周期内电流会继续上升,变压器有可能饱和。 |
|
|
| | | | | | |  |  | | | | | | | | | | | 现在BOOST输出都会加一个开关管做短路保护的!! |
|
|
| | | | | | | |  |  | | | | | | | | | | | | 那个开关管能不能和二极管合并,然后用一对互补的PWM去驱动MOS和他! |
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 互补的PWM用TIM1-CH1和TIM1-CH1N就可以实现,就是如果把二极管用MOS代替进行同步整流的话,那个管子的驱动有点麻烦。 |
|
|
| | | | | | | | | |  |  | | | | | | | | | | | | | | 同步的话,单片机的驱动电压是个问题 那还得加不少电路去驱动高压下的P管。再说了 单片机做的同步的话 轻载效率很差的。。所以得视情况而定。。 |
|
|
| | | | | | | | | | |  |  | | | | | | | | | | | | | | | boost电路的二极管损耗比较小,boost电路的二极管只有导通损耗,没有反向恢复损耗。用同步整流的话,有点大材小用。 |
|
|
| | | | | | |  |  | | | | | | | | | | | 这个短路根本无需软件参与,现在的PWM外设模块都带有硬件封锁功能。逐个脉冲限流
STM8里面是叫刹车功能。开启了这个,和比较器模块配置一下,到了限流点,PWM占空比自动封锁,根本无需软件参与控制,如果用软件参与控制,是一个非常低级的作法。 |
|
|
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 具体好久没有去看了,数据手册有关于这个部分的详细描述。 |
|
|
|
|
|
| | |  |  | | | | | | | 看顶楼(鼠标放着不动看状态栏的URL,hyperlink)
来编辑楼主的主帖 PS不是管理员或者版主,我就不得色了 XDD |
|
|
|
|
|
 |  | | | |
5.1 PID基本思路:
PID算法有模拟型和数字型:
模拟型主要是有RC网络构成的PID调节器,就是环路补偿在VFB和COMP接入的RC网络。
数字型就是模拟型的离散化形式,积分用加法代替,微分用减法代替而成的。
数字型PID分为有位置型和增量型:
位置型:
增量型:
书上说位置型要比增量型运算量大,但是实际上位置型和增量型的复杂程度是一样的。增量型也不比位置型运算简便很多。
本方案中的采用增量型PID算法。
由于PID算法存在一些问题,例如积分会饱和,微分作用时间短,输出会溢出等缺点,本PID采用的改进型的PID算法,主要有变速积分、积分分离、PWM死区、PWM限幅。
变速积分:变速积分指的是在积分项比较小的时候积分快一些,积分项比较大的时候积分慢一些。有助于防止饱和。
积分分离:其实也是变速积分的一种,在积分项大于一定值时候,停止积分的作用
PWM死区:设定一个不灵敏区域,就是输出的精度。死区越大,精度越低,但是系统越稳定。死区越小,精度越高,但系统月容易震荡。
PWM限幅:即限制PWM输出的极大值,防止占空比达到过高。
另外,PID的参数采用浮点型,主要是为了减小误差,如果采用整型的话,小数点约去误差较大,尤其是积分环节。
【具体的PID程序代码不方便贴出来,请理解。】
|
|
|
|
|
|
|
|
|
|
| | | |  |  | | | | | | | | 哈,开篇第一句话就是“输出恒流0.7A限压37V”,当然有恒流环节啊,恒流环节用的0.1欧姆的采样电阻进行取样,送往ADC。限压限流双环控制的。 |
|
|
| | | | |  |  | | | | | | | | | 上面那个应该是我表达的不准确,我的意思是有没有电流内环。这种数字控制的boost变换器使用峰值电流控制的是不容易搞的,就想问问楼主有没有做过这个 |
|
|
| | | | | |  |  | | | | | | | | | | 啊,这个没有,如果采用峰值电流控制的话,估计ADC的速度和单片机的速度跟不上。而且STM8S好像不能够ADC达到门限值来中断。 |
|
|
| | | | | | |  |  | | | | | | | | | | | 嗯,数字峰值电流控制不太好做。结合模拟比较器和DAC实现好一些,或者使用电流预测的方法,用到单片机的资源比较多 |
|
|
| | | | | | | |  |  | | | | | | | | | | | | 用运放或者比较器,配合外部中断,理论上应该可以实现。不过这样的话,电路要复杂了一些。 |
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | [size=14.44444465637207px]TI有实用模拟比较器做峰值电流控制的应用,比较器的输出可以直接触发PWM,不需要CPU的干预,有点像模拟电路。
[size=14.44444465637207px]数字控制部分只作电压环的计算,给比较器提高一个命令电流的阈值参考电压。这个方法比较耗单片机资源,不过增加斜
[size=14.44444465637207px]率补偿什么的就不用外加额外的电路,程序上修改一下就好 |
|
|
| | | | | | | | | |  |  | | | | | | | | | | | | | | 比较器的输出直接触发PWM,这个功能是不是那个特定的MCU自带的功能呢?我不太了解TI的CPU。STM8S有刹车功能,就是直接完全关闭锁死PWM。不知道TI的那个是不是这种刹车功能。
另外,能不能把TI的那个应用给个链接呢? |
|
|
|
| | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | 很好的资料,先下载下来慢慢看,看的晕晕乎乎的,有空好好研究一下啊,。不过这个上面的例程是DSP的吧?不知道普通MCU能不能跑得动。 |
|
|
|
|
| | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | 实际上2p2Z,与普通的PID是可以转换的。从理论上讲,PID可以写成一个1p2z的控制函数也就是单极点双零点,这样将文档中的2p2Z降一阶就相当于PID。具体的变化可以参考一个转换。
控制参数调整
Pgain = 200; // Q10
Igain = 1; // Q10
Dgain = 5; // Q10
use_2P2Z = 0; //使用PID调节,2P2Z控制参数无效
update_coeffs = 0;
b2_coeff = _IQ26(0.35);
b1_coeff = _IQ26(-1.45);
b0_coeff = _IQ26(1.33);
a2_coeff = _IQ26(-0.23);
a1_coeff = _IQ26(1.23);
Vset = _IQ12(880);//参考电压设置
Duty1 = _IQ24(0.5);
Duty2 = _IQ24(0.5);
Duty3 = _IQ24(0.5);
Period = _IQ14(500);
Min_Period = _IQ14(MIN_PERIOD);
Max_Period = _IQ14(MAX_PERIOD);
RED = RisingEdgeDelay;
FED = FallingEdgeDelay;
REM1 = RisingEdgeMargin1;
FEM1 = FallingEdgeMargin1;
REM2 = RisingEdgeMargin2;
FEM2 = FallingEdgeMargin2;
COMP1 = CompTripLevel1;
COMP2 = CompTripLevel2;
LLC_Enable = DEMO_MODE;
SR_Enable = DEMO_MODE;
Comp_Enable = 0;
//2P2Z与PID参数的转换,所调整上面 Dgain,Igain和Pgain就可以了
CNTL_2P2Z_CoefStruct1.b2 = _IQ16(Dgain);
CNTL_2P2Z_CoefStruct1.b1 = _IQ16(Igain - Pgain - Dgain - Dgain);
CNTL_2P2Z_CoefStruct1.b0 = _IQ16(Pgain + Igain + Dgain);
CNTL_2P2Z_CoefStruct1.a2 = _IQ26(0.0);
CNTL_2P2Z_CoefStruct1.a1 = _IQ26(1.0);
CNTL_2P2Z_CoefStruct1.max = Max_Period;
CNTL_2P2Z_CoefStruct1.min = Min_Period;
|
|
|
| | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | 这段代码开的不太懂,请问代码中CNTL_2P2Z_CoefStruct1结构体的b2、b1、b0、a2、a1成员是什么意思呢? |
|
|
| | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | 那个是双零点双极点补偿经过Z变化后的参数。就是将Gc1(s)经过Z变换后得到Gc1(Z)的Z前面的系数。将Gc1(Z)改写成成差分方程的形式,就是图中的
U(n)=1.605*U(n-1)-0.605*U(n-2)+12.34*E(n) -22.53*E(n -1)+10.28*E(n - 2)
这里ai 是[size=14.44444465637207px]U(n-i)的系数,
bi就是u(n-i)的系数
这里具体的定义就参考上面的文档。
这部分的内容应该是自控原理离散控制那方面的内容,或者计算机控制那里的内容。不过那些讲得太理论,最后还是用串口慢慢调整参数。
|
|
|
|
| | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | 学生而已,绝非大师。只希望能找个工作,呵呵
[size=14.44444465637207px]U(n)就是控制量输出,不一定是PWM控制,也可以是频率或者相位 |
|
|
| | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | U(n)=1.605*U(n-1)-0.605*U(n-2)+12.34*E(n) -22.53*E(n -1)+10.28*E(n - 2)
这个式子跟增量式PID公式非常的相似,只不过多了一个U(n-2)。这个U(n-2)的意义是什么呢?能不能整合到E(n)、E(n-1)、E(n-2)中,变成一个标准的PID式子呢?或者是说,PID只是控制系统的一种特殊情况? |
|
|
| | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | U(n)是当前输出的结果,那u(n-1)就是上一次的输出结果,如此类推,E实际上是表示误差,通常这个值的是 (参考值减去采样值) |
|
|
| | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | 那就跟增量式PID的公式非常像了,增量式PID的公式U(n)=U(n-1)+A*E(n)+B*E(n-1)+C*E(n-2) |
|
|
| | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | 是的,原理是一样的。PID的物理意义比较清楚,而2p2Z控制适更合用波特图设计。 |
|
|
| | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | 哦哦,这个之间的关系有点头绪了。
不过有一个问题,如果采用双环控制,比如恒压限流,这样的话反馈量就不止一个,还能用2p2z来设计么? |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 楼主所说的双环控制是一个电路里面同时又电压环和恒流环,还是指一个电流内环和一个电压外环呢。
如果是前者,电压环和电路环应该不是同时起作用的。如果是这样其实分别对他们进行设计就可以,结合一定的判断条件,有软件自动切换控制参数。
[size=14.44444465637207px]如果是第二种情况的,也是可以用2p2Z来设计的,比如是一个平均电流控制的PFC变换器。电压外环(使用2p2Z,实际上这个应该就一个低通滤波器)生成一个输出信号,然后利用乘法器和输入电压的波形信号相乘,得到一个电流的参考信号。电流的采样值,和电流参考信号相减的结果再经过2P2Z,再给PWM模块,这个过程是与UC3854类似的(当然也有基于单周期控制的,哈哈,那个我就不懂了)。当然了这个过程对于DSP来说不是一步到位(与模拟控制的区别),这里的两个环路的计算分别执行。电流环路的带宽比电压环的高,电压环采样频率和执行频率也可以低一些。一般优先执行电流环。所以,应该可以说2p2Z应该是可以用在双环控制上面的。 |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 哦哦,讲的这么详细啊,我说的是第一种,同时恒压又恒流。不过如果是普通的恒压限流电源的话,分时切换是没问题的。
可是如果是LED驱动电源的话,电压环和电流环基本上是同时起作用的,因为LED属于二极管,有二极管的伏安特性可以看出,很小的电流变化会导致电压很大范围内变化,一般LED驱动都是恒压环和恒流环同时作用的。这样采用判断分时切换估计应该不是很好吧? |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 恒压恒流应该不能同时实现的吧。之前做的一些LED驱动,运放+TL431的反馈方案,当时设计是电流环和并不是是同时起作用的。或者我的那个设计有缺陷吧,电压环只起到限压作用,并不会和恒流环一起工作。
用数字器件做LED驱动还真没有做过。如要切换,只要输出的电压值大于某个阈值,将电压环的激活,电流环休眠。反之,电流环激活,电压环休眠。
还有一个,楼主应该是笔误了,应该是很小的电压变化会引起LED很大的电流变化。 |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 哦哦,那句话确实是笔误。
以前我做过试验,LED的额定工作条件是33V 0.75A。1:如果设置限压33V 限流0.75A的话,测量LED就是33V0.75A。2:如果设置限压34V 0.75A的话,测量LED就是34V0.75A。 3:如果设置限压32V 0.75A的话,那么测量LED就是32V 0.75A。
我在用模拟器件做LED驱动的时候,要是恒压和恒流的补偿电容都是104的话,就会震荡,把恒压的补偿用103,恒流的补偿用104就不会震荡了。感觉还是恒压与恒流同时进行作用了。当然如果负载是电阻的话,就不会同时作用了。
我现在用的方法是,把电流的反馈值,转化为相同量纲的电压反馈值,然后取其最大值,进行反馈。不知道这样做有没有什么缺陷的地方。 |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 确实,在输出同时接近电压限制点和电流限制点上时候,两个环路可能会同时起作用。如果同时起作用可能就会引起窜扰。所以觉得LED电压限制应该设计在所串最大LED数的导通电压(V_through)大3V左右的位置,来避免出现这种串扰。
[size=14.44444465637207px] 觉得楼主的方法应该是将流过LED电流经过一个运放放大后,在输入给TL431之类的基准,再进行反馈吧。
我对电压环和电流环起作用的条件是这样理解的:如果电路同有电压环和电流环,那么最大输出功率(Pmax=V_lim*I_lim)就限制了。假设输出是电阻,一旦输出功率大于Pmax,起作用的就只有电流环。这样如果继续减少电阻阻值,输出电流不变,但功率变小(这个应该就是LED恒流时的状态了,那就是恒流状态时输出电压没有很接近电压的限制值)。还有另一个情况,就是输出负载电阻阻值太大,l_lim*R>V_lim时应该就只有电压环起作用,电压是被限制住。 |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 理解你的意思了,估计是我设置的限压值有些偏小。如果限压值是恒流时候的LED电压+3V,那就应该不会同时恒压恒流了。 |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 楼上所说的那种情况绝无可能。
LED的伏安特性是又LED本身确定的,不可能你设定多少就是多少。 |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 那请问楼主,现在是限压恒流。那如果负载变大或者变小呢,如果保持恒流,输出电压很快大于你的限压值37V。 |
|
|
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 是的,控制策略采样类似UC3854的方式,我们是先做完UC3854模拟控制后,又进行数字控制的。谢谢你的建议! |
|
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 您好,不知道您还看论坛吗?我最近也在做类似的数字控制PFC,可否加个qq交流一下,谢谢
|
|
|
| | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | 大师 我想学编程数字电源的 不知道有啥demo板 介绍点书也可以 谢谢
|
|
|
| | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | Ts=4e-6;
Gc1_s=tf([14.3 6.514e005 7.2e009],[1 1.256e005 0]);
Gc1_z=c2d(Gc1_s,Ts,'matched');
Gc1_z =
12.3 z^2 - 22.47 z + 10.25
--------------------------
z^2 - 1.605 z + 0.6051
这是matlab中得到的 那么
U(n)=1.605*U(n-1)-0.6051*U(n-2)+12.3*E(n)-22.47*E(n-1)+10.25*E(n-2)其中你的系数是对应
a1 a2 b0 b1 b2
这种关系吗 ???
这个是书中的实例 |
|
|
|
| | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | 你好,我想请教一个问题,我看了你上传的DesigningaTMS320F280xBasedDigitallyControlledDC-DCSwitchingPowerSupply.pdf资料,有一个疑惑:G
C1(s) 是通过MATLAB得到的吗?是怎么得到的呀
|
|
|
| | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | 用SOSI 工具,设计完环路之后得出的结果
这个工具只要在输入sosi就可以调出来
|
|
|
|
| |  |  | | | | | | 嗯嗯 第四期文原创也可以关注一下哦 分享资料拿大奖 |
|
|
 |  | | | |
5.4 限流精度:
由于LED的伏安特性不是线性的,所以有PWM引起的恒流精度vs PWM的图像不好画出。这里只计算由于ADC造成的恒流精度:
ADC最小输入电压=3.3/1024=3.3mV;3.3mV在采样电阻上的电流=33mA。也就是说恒流精度最多为33mA。由于PWM分辨率原因,实际的恒流精度达不到这个值,稍微比0.033A大一些。
但是因为PID中具有积分作用,当PWM抖动时候,就可以达到这个精度了。本方案实际上恒流精度是可以达到33mA的。
恒流采用限流方式,把过流转换为过压,送往PID进行处理。当检测到电流超过0.7A时候,把测量的电压值赋值超过设定值,转换为电压超标。进而实现限流。
|
|
|
|  |  | YTDFWANGWEI- 积分:111305
- |
- 主题:142
- |
- 帖子:46185
积分:111305 版主 | | | | |
|
|
|
| | |  |  | YTDFWANGWEI- 积分:111305
- |
- 主题:142
- |
- 帖子:46185
积分:111305 版主 | | | | | |  ,我算糊涂了,你也看糊涂了,我算成33mA在0.1mΩ上产生的压降是3.3mV了。你看成0.1欧姆了。。。。 |
|
|
|  |  | | | | | 这儿设计有问题。
按楼主的设计,最大电流为1A;AD最大输入电压为3.3V。
电流取样电阻0.1Ω,那么电流取样得到的最大电压只有0.1V。直接拿这个0.1V的电压给AD,相对AD 0~3.3V的采样范围,完全,没能充分利用AD的精度。
除非AD的分辨率、和精度远超实际需要,否则充分利用AD的精度是很有必要的。
所以,这儿应该考虑在采样电阻和AD之间插入一个同相放大器,放大器的放大倍数可以设为33倍,把采样电阻的得到的电压放大到3.3V(每安培),这样你的电流采样分辨率就变成了约1mA。
需要特别注意的是,AD的分辨率和精度是两码事儿,特别是单片机内部集成的AD,精度往往比分辨率低很多。 |
|
|
| |  |  | | | | | | 1:最大0.1V送给AD,确实没有充分利用AD。一般要在ADC最大电压的2/3处,也就是恒流情况下,需要放大到2~2.5V。这里出于成本和体积的考虑,没有加入运放进行放大。
2:10bit,3.3V,最小电压分辨率是3.3mV,恒流的分辨率就是3.3mV/0.1R=33mA。精度大概在50~66mA左右。精度不高。
3:在STM8S103手册的88页,有详细的ADC误差表。总的最大误差典型值是1.6LSB。 |
|
|
|  |  | | | | | 楼主可以具体讲下如何把电流超标转换成电压超标?多谢!
|
|
|
|
|  |  | | | | | 在这里我推荐一个软件,串口猎人 ,当你用熟悉了你再也不用手工画图了,收到的数据直接可以转化为波形,可以同时显示8个通道的数据波形,串口设置简单,还有高级发码和高级收码功能,我用这个软件调试过很多PID,很方便! |
|
|
|
| | |  |  | | | | | | | http://pan.baidu.com/share/link?shareid=352247151&uk=3827013492
这个是百度网盘的共享资源2.93M |
|
|
| | | |  |  | | | | | | | | 多谢,已经下载了,功能确实好强大。不过还没有搞懂怎么显示波形,请问软件里面有demo代码吗? |
|
|
|
|
| | | | | |  |  | | | | | | | | | | 多谢你的详细的说明,如果没有说明,还真不知道串口应该如何发送不同通道的数据。 |
|
|
|  |  | | | | | 想问下楼主,采样是标准的PID模型么?而不是2p2z模型,看到楼主的调试方法,应该是纯数字的PID整定,没有结合频域模型,去看它的bode图 |
|
|
| |  |  | | | | | | 这个例子里面用的是纯数字PID整定的,比较方便快捷,没有结合传递函数进行调试。
关于2p2z模型,shiyongxie讲解的非常清楚。下次设计会结合传递函数进行调试。 |
|
|
|
|
|  |  | | | | | PID输出如何转化为对应的PWM?PID输出应该是和PWM一一对应的
|
|
|
|
|
|
|
|
| |  |  | | | | | | 说白了就是,如果采用PID算法,只要Kp、Ki、Kd参数设置的合理,输出基本上都可以达到ADC采样所得到的精度,即使PWM的精度比较低。缺点就是输出会叠加一个小于开关频率的低频纹波。 |
|
|
|
|
|
|
|
|
|
|
|
|  |  | | | | | 请问这个单片机计算你这个浮点PID一次需要多少个指令周期? |
|
|
|
| | |  |  | | | | | | | 我在主循环里计算一次PID,然后执行GPIO_WriteReverse(GPIOA, GPIO_PIN_3);端口取反命令。主频为16MHz。
测得PA3输出频率为2.4kHz,执行速度就是4.8kHz,执行一次需要3000指令周期;
去掉变速积分和微分之后,频率变为5.1kHz,执行速度就是10.2kHz,执行一次需要1600指令周期。
8位机计算浮点比较慢。而且我的PID算法也还没有进行优化。总的速度还是太慢了。
|
|
|
| | | |  |  | | | | | | | | STM8S不适合算浮动的,楼主为什么不把浮点转化为整数来算?
你可以把浮点数先放大64,128倍什么的,把小数包含进去,这样也不会损失精度的!
楼主画的PCB是四层板吗?上面的用珊型就是你说的优化PCB处理吗?为什么不直接整块呢?
电流采样电阻0.1欧是不是太大了,0.1x0.7=0.07W损耗,不过你可以直接送ADC采样!
总的来说楼主的工作非常帮! |
|
|
|
|
| | | | | | |  |  | | | | | | | | | | | 1:你说的“PCB上那个珊条”指的是什么?没理解你指的哪个地方,能不能截屏指一下?
2:所说的优化PCB走线,是缩小高频脉冲环路,减小对外的辐射。输入电容单点接地。还有缩短高阻抗走线,防止收到干扰等等这些的内容。主要还是怕干扰到单片机,不过测试看来,STM8S还是很不容易收到干扰的。最起码目前为止还从没死机一次。 |
|
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 这个珊条是阻焊层。就是PCB涂绿油时候,不把这些地方涂上去,直接露出铜箔,就比如贴片元件的管脚都有这种阻焊层的。
画珊条这些地方的走线都是大电流的走线,这些阻焊的地方可以直接涂上焊锡,用来增加耐流能力。 |
|
|
|
| | | | | | | |  |  | | | | | | | | | | | | STM8我们公司用了很多,抗干扰能力不行,我在做一块高压板的时候,如果出现放电打火的时候stm8就死机了!抗干扰能力强的是瑞萨的,被电击干扰也不死机 |
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 干扰不是很强的话还能接受吧,做过一个放电的试验,老远的鼠标都已经失灵了,STM8还在正常工作。
你做的是高压板吗?高压对单片机要求比较高。你所说的瑞萨MCU被电击也不死机? |
|
|
| | | | | | | | | |  |  | | | | | | | | | | | | | | 我做过一个燃气式热水器的控制板,之前用STM8做主控,在电子打火的非常容易复位,后来换成瑞萨的,打火放电针直接打穿瑞萨的芯片也要打好几次才打坏,正常工作没有死机的情况。 |
|
|
| | | | | | | | | | |  |  | | | | | | | | | | | | | | | 其他的MCU受到干扰之后一般都是通过复位来进行保护的。。瑞萨的MCU被放电击穿竟然都能够正常运行?看来瑞萨的MCU抗干扰能力确实很不错的。有空可以好好学习学习。能不能推荐几个 适合做数字电源的 瑞萨MCU型号呢? |
|
|
| | | | |  |  | | | | | | | | | TI那些没有浮点乘法器的CPU也是这么做的(先放大成整数,再计算),TI将这种方法做成IQmath库 |
|
|
| | | | | |  |  | | | | | | | | | | 请问这个IQmath库,能不能用到其他MCU上面呢?比如STM8S能不能使用IQmath库呢? |
|
|
| | | | | | |  |  | | | | | | | | | | | [size=14.44444465637207px]应该挺难移植的,这个库有.lib文件,其他CPU的编译器不知道能不能识别。如果用汇编来写运算部分,其实是没有用到那个库的。小数的表示需要通过自己定义,类似于一些定点的计算,在计算过程中需要通过移位来对齐相应的小数位和整数位
[size=14.44444465637207px]例如:两个浮点数相乘,要需要得到一个I16Q16的数(32位数据,后16位表示小数)
[size=14.44444465637207px]MOVL XT, @_EPwm2Regs.TBPRD
QMPYL ACC, XT, *XAR0 ; ACC = (I16Q16) * (I8Q24) = (I24Q40): upper 32-bits -> ACC = (I24Q8)
SFR ACC, #8 ; ACC>>8: AL = Duty*Period (Q16)
[size=14.44444465637207px]其中[size=14.44444465637207px]I16Q16指的是一个32位的数,前16位是表示整数和正负,后16位表示的是小数,其他的表示对号入座
[size=14.44444465637207px]这是C2000的汇编,其他的CPU应该也是可以支持类似操作
|
|
|
| | | | | | | |  |  | | | | | | | | | | | | 哦,好像挺麻烦了,TI的那个库只有.lib文件,没有.c和.h文件吗?汇编我不是很熟悉,请问C语言可以使用这些库吗? |
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 是有一个.h 的文件的文件的,这里有一个TI的IQmath的完整文件,可以看看 IQmath.rar
|
|
|
| | | | | | | | | |  |  | | | | | | | | | | | | | | 看样子里面好像没有.c的源文件,STM8好像不能够直接调用。估计应该是专门针对TI的MCU设计的把吧。 |
|
|
| | | | | | | | | | |  |  | | | | | | | | | | | | | | | 应该是的,现在我也不知道具体的实现过程。使用这个库还要在.CMD文件里面添加,这个文件应该就是TI的CPU特有的 |
|
|
| | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | 既然无法调用TI的库函数,那还是用老方法,直接把Kp、Ki、Kd增大1000倍,最终结果再缩小1000倍吧。用整数确实要比浮点快不少。 |
|
|
| | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | 是的的实际上送到PWM模块的数据也一个整数,不是小数 |
|
|
| | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | 嗯哪是啊,PWM一般都是由片内定时器产生的,装填的数据都是整数。
|
|
|
|
|
|
| |  |  | | | | | | 楼主在请教一个问题,在算PID算法的时候,电压误差和电流误差是简单累加一起吗? |
|
|
| | |  |  | | | | | | | 没有这样。如果是简单的累加在一起,那就是即恒压又恒流。那么永远达不到稳态。而且非满载时候会出问题。
我用的驱动方法是恒流限压,可以恒流是主环,其次加上限压。或者恒压是主环,其次加上限流。
我是采用的第二者,把电流超标的量转化为电压超标的量,如果电流小于标准值,则忽略。这样就实现了恒压限流。 |
|
|
| | | |  |  | | | | | | | | 谢楼主,我刚开始接触这一块很多东西不懂,有些问题可能比较低级!
如果不考虑响应速度,那每次对PWM调整步长为1(加一或者减一),这样是不是会达到最高稳定度,而且PID也变成最简单,这要算出调整方向就行。
一般响应速度的确定,你主要基于那些因素? |
|
|
| | | | |  |  | | | | | | | | | 1:如果每次加1或者减1,那么最终会达到稳态的。但是环路反应会非常的慢。如果死区和精度设置的合适的话,那最终也会达到稳定的。
2:响应速度一般都是不同负载切换时候的过冲欠冲和恢复稳态的时间来大致反应的。假如一个电源为40V恒压,比如100欧姆负载和10欧姆的负载之间高速切换,用示波器观察输出的波形,当100欧姆负载切换到10欧姆负载的时候,肯定会有一个向下的欠冲,可能会跌落到39V或者更低,然后慢慢地又上升并稳定到40V。其间可能会有一些小的震荡,但是最终结果是稳定在40V的输出。这些参数当然是过冲和欠冲越小越好,恢复时间也是越小越好。 |
|
|
|
|
|
| | | | | |  |  | | | | | | | | | | 楼主不代有才,还很勤奋呀!
我提出这个问题,是基于这样的考虑。
如果你选择PWM的步长为+-1, 那么PID的计算就大为简化。第一I项可以不需要了,因为反正已经是最小了,没什么精差需要调;第二P项不需要复杂的计算,这要算个趋势是增加还是减少就行。
从前面结合来看,你的这个响应速度是有两部分决定的,第一就是PID计算出来的PWM调整量,第二就是计算PID本身MCU所花时间。前面你提到计算PID要1600~3000条指令。如果PID极大简化,也许只要几十条。所以第二部分速度也许会提高10陪,弥补+-1的缺点。
我刚刚开始接触这样,实际经验和理论多不足!可能我的理解是错的。 |
|
|
| | | | | | |  |  | | | | | | | | | | | 我最开始调试硬件的时候,还没有加入PID,那时候我用的反馈跟你说的差不多,我是用PWM步长+=(目标量-采样量)>>3±1,也就是比如目标是500,实测是400,PWM就加上去(500-400)/8+1=13,如果实测是495,那么PWM就加上去(500-495)/8+1=1。实测这个方法也是很不错的,也能很快的达到稳态。这个还可以实现误差越大调节量越大,也算是一个精简的PI调节器。
这个精简的调节器有反馈极性判断(判断是PWM增加还是减小)、数据计算(加减和移位)、死区忽略(如果采样值和目标值差别不是很大时候,就认为已经稳态了。)、输出限幅(PWM有最大和最小占空比)。这一些个计算都是必不可少。PID比这个精简调节器,只是数据计算方面复杂了些,另外三个方面也还是要计算的。所以运算速度其实没有你说的高出10倍那么多。实测两者相差并不是很大。
另外速度也不是越快越好。电源和其他系统一样,有一个滞后效应,输入量不是直接反应到输出,而是要经过一段时间才会反应到输出。PWM增大之后,由于后面有电感和电容,需要经过几个周期之后,才能够反应到输出电压上。当输出开路,或者轻载时候,这个延迟会导致过冲或者欠冲。 |
|
|
| | | | | | | |  |  | | | | | | | | | | | | 谢楼主,让我学不少东西,那你后来的PID比最初的PI主要改进了那些方面? |
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 变速积分,积分分离。还有通过不断调试得到比例项速度上的提升。还有一个就是精度。最的精简的PI调节,PWM的精度始终是整数。加入PID调节器中的浮点积分项之后,可以把多次忽略掉的小误差累加之后再进行作用。这样最终的平均值将可以达到很接近ADC采样分辨率的水平。从而抵消由于PWM精度不高产生的精度问题。 |
|
|
|
| | | | | | | |  |  | | | | | | | | | | | | 楼主,能不能说得更详细一点,为什么是>>3 ?到底是采样量-目标量,还是目标量-采样量?采样量和目标量的值是怎么算出来的, AD采样结果寄存器里的值吗?什么时候>>3+1?什么时候>>3-1? |
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 不好意思,这里笔误,应该是目标量-采样量。>>3就是右移三位,相当于除以8,就是比例环节。如果目标量>采样量的话,就+1,否则-1。这个是实现积分效果。当然这个算法只是调试硬件时候,图方便省事使用的。最后还是要进一步的调试PID参数的。
采样量就是AD的读取数值。目标量就是设置的值。可以换算成最终电压来计算,也可以直接采用读取的数值来计算。我这个例子中,AD是10bit,就是0~1023.PWM是0~160. |
|
|
|
| | | | | | | | | | |  |  | | | | | | | | | | | | | | | 这样调试精度肯定不好。这种方法主要是调试硬件部分时候,为了方便快捷采用的。如果调试硬件时候就采用PID,那么如果出问题的话,不容易分析是硬件的问题还是软件的问题。
硬件调试完毕,再采用PID算法调试软件。 |
|
|
| |  |  | | | | | | 谢谢楼主答复,必须的用ID号加密,看来我也要学下STM8了,PIC软件保护太头疼。 |
|
|
| | |  |  | | | | | | | 唯一ID加密如同虚设,在程序里你总有个判断吧,判断新芯片ID=版权ID就运行
下去,别人破出文件来就可以去找这个判断,很容易被破解。
现在加密都没什么万无一失的方法,只是增加其破解难度而已 |
|
|
| | | |  |  | | | | | | | | 唐总所言极是,在汇编中,把比较位置的JE改为JNE就实现破解了。道高一尺,魔高一丈。再牛B的加密都有人能够破解。否则也不会那么多人用免费的盗版软件了。
在设计中,能够多加一层加密,被破解的几率就降低一点。硬件限制读取,软件再做一层限制,破解难度就提高了点。但是对于破解高手还是很没有防御力的。
|
|
|
| | | | |  |  | | | | | | | | | 破解唯一ID我也考虑过怎么破解,就是找出eeprom地址位置然后删程序函数,这样就不会发生和EEPROM比较。到时候写程序再想办法把问题搞复杂点。
没有万能的加密,只有与产品价值相当的加密手法,提高破解成本,加大破解者的金钱付出,时间付出,技术专业度。 |
|
|
| | | | | |  |  | | | | | | | | | | 可是这个破解的前提是要能够把程序读取出来啊。如果程序读取不出来,那么就无法进行汇编程序分析了。 |
|
|
| | | |  |  | | | | | | | | 感觉加密的话,仅仅使用STM8S的 读取保护就足够了。把read out protection 设置为on,就无法读取出来MCU里面的程序了。程序都读取不出来,肯定就不易被破解了。 |
|
|
 |  | | | | 如果设计一个输入输出隔离的数字电源,还需要注意哪些方面?
比如变压器等 |
|
|
|  |  | | | | | 如果输入输出隔离的话,主要就是反馈不同了。因为隔离,所以一般需要使用光耦+TL431,而光耦的输出就已经是与基准电压比较之后的误差了。程序上有些不同,ADC采样得到的结果直接就是误差量(非隔离ADC采样的是 输出量,和设定值相减之后才是误差量)。
至于硬件电路还和模拟电源差不多。主要就是MOSFET的驱动电路,单片机的输出是0~3.3V,MOSFET开关应该是0~10V,不能直接加入图腾柱,需要有电平转换驱动电路。这个驱动电路在楼上的原理图中有,是一个比较成熟的单片机驱动MOSFET的电路。 |
|
|
|
|
|
|
|
 |  | | | | 楼主我搞硬件多,想学习这种数字电源应该看啥书,基础点的,我只会点C语言,希望楼主帮下忙,最后我想自己做个小东西出来,谢谢! |
|
|
|  |  | | | | | C语言千万别看谭浩强的书,据说。楼主能给点推荐吗,我也是门外汉 |
|
|
| |  |  | | | | | | C语言二级指令用书,什么高校都是这本啊,难道你还有什么,,,,求介绍 |
|
|
| | |  |  | | | | | | | 这本书不行,别人告诉我的,介绍我也不懂啊,我知道这件事就是了 |
|
|
|
| | | | |  |  | | | | | | | | | 我想看懂你的程序 但是有太多指令 我不晓得 啥意思 看什么书可以 知道这些东西了 谢谢了 |
|
|
| | | | | |  |  | | | | | | | | | | 那些指令什么的都是寄存器和库函数。在《STM8S微控制器参考手册》中,所有寄存器的功能与作用都写得很清楚。或者可以直接采用库函数来写,更加方便。 |
|
|
|
|
|  |  | | | | | 控制汇编写会比较快,或者可以先选一个CPU研究一下。TI的C2000和PIC的dsPIC33F系列的CPU也可以(这些芯片做数字电源的资料也多)。当然ARM或者其他的也可以。环路设计可以看看z变换那些东西吧。 |
|
|
| |  |  | | | | | | 我压根现在是看不懂程序 主要是看啥资料和书 我想看懂程序 搞个demo板就好了 |
|
|
| | |  |  | | | | | | | STM8的使用手册,楼主很多指令是对CPU的寄存器进行操作的。楼主提到的PID算法可以看看 《先进PID控制MATLAB仿真》(刘金琨)
|
|
|
|
|
| | | | | |  |  | | | | | | | | | | 这本书的第三版电子版找不到,上面的是第二版的电子版,不过第二版就是比第三版少了一些内容。这本书还是非常经典的。 |
|
|
| | | | | | |  |  | | | | | | | | | | | 楼主我又来看的一下你的帖子,每次多能学到点什么,蛮营养的!我突然发现一个问题,你说你的PID采用的(本方案中的采用增量型PID算法)。但是从公式里看,增量型里已经没有积分了呀!也许我理解有误! |
|
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 我知道系数是一样的,但是我说“积分项”没有了,就是那个累加项没有了,当然也许我理解有误 |
|
|
| | | | | | | | | |  |  | | | | | | | | | | | | | | 增量式就是取消了这个一直累加的过程,你看一下增量式的公式,是u(k)-u(k-1),取消了这个一直不停累加的量。
你说的那个“积分项”就是累加项哈,在位置式PID里面就是一个把所有误差进行求和,结果直接就是最终PWM得到的结果。增量式取得是本次误差与上次以及上上次之间的关系,得到的结果并不是最总的累加结果。
增量式得到的本次结果,加上上一次PWM的输出量之和,才相当于位置式PID本次计算的结果。 |
|
|
| | | | | | | | | | |  |  | | | | | | | | | | | | | | | 我说的就是这个问题呀!我说现在积分项或者累加项没了,就不需要 变速积分什么的!不知道对不对! |
|
|
|
|
| |  |  | | | | | | TI的C2000和PIC的dsPIC33F是DSP吧?DSP的速度那可是飕飕的、不过一般都用在大项目里面。像小功率的玩意,单片机就足够了,便宜、 |
|
|
|
|
| | |  |  | | | | | | | 以前还会51的话,那么上手STM8还是很快的。STM8可以使用库函数操作,也可以使用寄存器操作。库函数操作比较简单,但是速度慢。寄存器操作比较麻烦,但是速度快效率高。 |
|
|
| | | |  |  | | | | | | | | 我想自己搞个有源嵌位的电路做做 到时还得请教你 先画图
|
|
|
| | | | |  |  | | | | | | | | | 不知道你说的是有源钳位正激吗?这个我还没做过。不过STM8S可以生成两路互补的PWM的(两路正好相反,一路高电平时候,另一路低电平,反之亦然)。 |
|
|
| | | | | |  |  | | | | | | | | | | 我现在要调试 一个NCP1282的 搞完 就搞数字的看看  |
|
|
| | | | | | |  |  | | | | | | | | | | | NCP1282啊,这个做有源钳位效率应该不错的吧。请问搞数字的有源钳位你打算使用什么做控制器呢?也用单片机吗?
|
|
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 我不太了解有源钳位,请问钳位MOS的时序和驱动应该怎么整呢?钳位的那个MOS不用悬浮驱动吧? |
|
|
| | | | | | | | | |  |  | | | | | | | | | | | | | | 嵌位管 上嵌位 同驱动 然后来个向下平移 我搞的下嵌位硬件电路就是串联电容后并个二极管到地,二极管cathode驱动FET |
|
|
|
|
| | | | | | | |  |  | | | | | | | | | | | | 不知道 你能不能推荐啥demo板的 我先搞块试试 然后就搞这个 |
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 数字电源的DEMO板子貌似不多,TI额官网上好像有一些数字电源的EVM板子,TI的EVM板子大多数都是DSP为控制器的。 |
|
|
| | | | | | | | |  |  | | | | | | | | | | | | | 可以试试PIC16HV785,本人的定义它是一个可编程的模拟器件。用它设计电源的方法和模拟电源类似。
那个是数模结合,但是PIC自家的开发环境觉得不好用。
之前也买个dsPIC的数字电源开发板,后来因为开发环境难用就放在一旁了。如果有那个开发板,一般的几个控制方法都可以实现(峰值电流控制,电压环路控制,平均电流控制),可惜他给的例程只有电压单环控制。大部分代码是用C语言,控制环路还是使用PID算法(使用汇编编写)。另外PIC的那个官网上支持支付宝
PIC的资料相对于TI或者ST的来说比较少。不过PIC的DSP比TI的便宜一些。 |
|
|
|
| | | | | | | | | | |  |  | | | | | | | | | | | | | | | pic的好买,型号DM330017,这个板调试还是比较方面,上面已经有仿真器,只是资料较少,公开的数字电源控制代码不多。
这个板只有buck和boost的控制,其中buck是同步降压的结构,也就是续流二极管使用开关管代替。
实在不行可以自己做一个玩玩,我自己也DIY一些,有些还是洞洞板的了。 |
|
|
| | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | PIC单片机据说抗干扰性能很强大,更适合EMI比较严重的电源电路。我见好多人也都用PIC做数字电源。 |
|
|
| | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | 传说中是的,但没有用过PIC的IC做过项目。玩过他们的开发板,感觉设计的不错,没有出现过死机之类的问题,但开发环境比较难用(C30开发)。听说他们最近出了个新的编译器,或者比现在的好用。 |
|
|
| | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | 一般来说,只要不做高压电源,在PCB布线时候注意一下,单片机一般都不会死机的。看门狗也有点用处。 |
|
|
|
| | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | 哈哈,有多高呢?高压的电源应该是用在一些特种设备上的吧 |
|
|
| | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | 几万伏到几十万伏,各种特殊设备啊,真空管啊,高压电容充电啊 |
|
|
|
|
| | | | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | | | 据说瑞萨的MCU抗干扰能力特别强,在被击穿之后,仍然可以正常工作 |
|
|
|
| | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | 大师,能否给个链接,想买个数字电源开发板。有详细的讲解最好。 |
|
|
| | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=DM330017
这有一个比较相对便宜的。不过那个资料比较少。链接网址有相应的资料,可以先下载看看。里面几个源代码(buck和boost的控制),PID的算法电压环路控制,中断用汇编编写。
其他的控制算法官方没有提供。这个板可以用加入电流控制环路,但算法要自己设计。
那个板我买过一块,给了钱之后要一个月才到(可以用支付宝给钱)。 |
|
|
|
|
|
|
|
|
|  |  | | | | | ***广告已经删除*** [email=aoqzsc@163.com][/email]
|
|
|
 |  | | | | 楼主这个boost电路是采用平均电流模式控制吗?如果单纯用电压模式做boost电路能稳定不? |
|
|
|  |  | | | | | 这个电路不是使用的电流模式,使用的电压模式控制的。加入了恒流和限压环节。boost电路单纯用电压模式控制可以稳定运行的。 |
|
|
| |  |  | | | | | | BOOST电路不是有右半平面零点吗?这个要如何解决啊? |
|
|
| | |  |  | | | | | | | 反馈环路用的PID进行调节的,没有使用传递函数进行调节。
PID调节的物理意义比较清楚,调试比较方便。传递函数调节的话更加准确,但计算麻烦。 |
|
|
| | |  |  | | | | | | | 用PID确实不好定量地处理右边平面的零点,或者可以减小积分系数使PID构成的零点频率高一些,环路带宽降低一点躲开右边平面零点,当然这会牺牲一些动态性能。如果占空比D不是太大,那个右边平面的零点也不容易出来捣乱 |
|
|
|
|
| | | |  |  | | | | | | | | r=0.5应该是临界电流模式,能否把主函数的传递函数和补偿的传函贴出来? |
|
|
| | | | |  |  | | | | | | | | | r=0.5是CCM,r=1才是临界模式。r=ΔI/Iav。我在设计时候没有考虑和计算传递函数,直接用PID进行调试PID参数的。 |
|
|
 |  | | | | 敢问楼主的单片机电压采样,工作过程中单片机会不会发热严重,我这边单片机发热严重,应该怎么解决 |
|
|
|  |  | | | | | 肯定不会发热啊,STM8S的工作时候的电流也就十几毫安的。
不知道你用的是什么型号的单片机,你测量一下单片机Vdd的电流是多少,符合不符合datasheet里面的值。我感觉多半是你电路设计的有问题。 |
|
|
| |  |  | | | | | | 后面仔细查了下,发现确实是电路设计的问题,我们整的是BUCK电路,MOS放的是下端,后面的单片机采样电压估计没对地,而且波纹很大。但后面MOS换上端单片机还是烧了一块,且采样电压有做过压保护,这个问题搞得我们头大 |
|
|
| | |  |  | | | | | | | BUCK电路MOS在下端,你用的是浮地BUCK吧。浮地BUCK不能直接进行输出采样反馈。浮地BUCK有两种方法采样。
1:两路AD采样(输出正极分压采样,输出负极分压采样),最后相减即为最终输出值。
2:采用镜像恒流源进行反馈,输出电压转为电流,然后再转为电压。
3:采用光耦进行反馈。 |
|
|
|
|
|
 |  | | | | 采用STM8S003F3P6为核心,利用单片机实现pfc,非隔离直接用单片机pwm控制做led路灯恒流电源可行吗 |
|
|
|  |  | | | | | 非隔离PFC,是单级的吗?采用什么拓扑呢?
浮地BUCK应该比较可行,可以用一路AD采集整流后的馒头波,一路AD采集反馈。PWM的输出可以实时跟随AD采样电压,也可以内置正弦表,各有千秋。 |
|
|
|  |  | | | | | 可以看看PFC的单周期控制算法,那个算法相对简单一些 |
|
|
| |  |  | | | | | | PFC单周期控制算法也有不少种类,网上的算法大多是针对DSP设计的,不知道STM8做PFC会不会吃不消。 |
|
|
| | |  |  | | | | | | | 这个就不好说了,要看用多少的开关频率和采样频率。用汇编来搞,或者也能应付。单周期控制,大运算量的应该就一个PI调节器,也不用做除法,相对于过去的PFC控制应该是简化了一些了 |
|
|
|
| | | | |  |  | | | | | | | | | 单周期控制技术,检测电流可以是电感峰值电流、电感平均电流、开关峰值电流或
开关平均电流,还可以是最小电感电流或最小开关电流。单周期控制应该是可以省
掉一个乘法,和输入电压的采样,当然单周期控制还要一个积分器,那个积分器
或者可以用一个计数器代替吧。单周期控制那个具体我就没有用做过数字器件做
过。模拟的芯片就用过,芯片外围的确简单一些。用数字芯片也应该一样,可以
省掉一次采样和计算一次乘法。
|
|
|
| | | | | |  |  | | | | | | | | | | 检测电感、开关峰值电流应该不好检测吧?一直不停采样比较?还是…… |
|
|
| | | | | | |  |  | | | | | | | | | | | 峰值电流控制有两个方法:第一个在之前上传过一个TI的应用文件提到,那个就是使用模拟比较器的。另外一个方法是预测电流的方法。这个方法在《开关变换器数字控制技术》(周国华,许建平)这个书上有比较详细的论述。这个方法简单来讲就是计算出电流的斜率,然后预测经过T时间达到峰值。这个时间T通常就是占空比D与开关周期Ts的乘积。
那本书讲到的方法基本都是关于数字电流环路的控制和电路纹波控制,用的方法是大同小异,可以说都是用预测法。这本资料讲也有不全面,值有CCM模式的控制,DCM部分没有深入。由于讲到CCM自然也详细讲述各种出现次谐波震荡的条件。有些推导也有趣,数字的平均电流控制也有可能出现次谐波震荡。 |
|
|
| | | | | | | |  |  | | | | | | | | | | | | 非常感谢你的耐心讲解,我还是有一些疑问。使用模拟比较器怎么检测峰值电流呢?如果采用预测电流法的话,应该还要先采样很多电流值,计算出斜率才能够计算出峰值电流的吧? |
|
|
|
| | | | | | | | | |  |  | | | | | | | | | | | | | | 如果占空比非常小的时候,Ton也非常小,如果此时还要在Ton时间内采样两个点,有点不太可行吧?
每个周期在Ton时间内采样2个点,并精确计算出时间间隔,并进行减法除法乘法运算,估计这个STM8无法完成。STM32也有难度。DSP应该可以。 |
|
|
| | | | | | | | | | |  |  | | | | | | | | | | | | | | | 那个的确是个问题,轻载时候也可以只用电压环路控制(当然会损失一下响应速度),还有一点,如果输入和输出电压变化不快可以间隔几个开关周期才计算斜率。当然也可以像那本资料上讲的方法。最近ST也有一个新的单片机也做电源,STM8的内核。不过现在还不能买等到。PFC的评估板已经有了。不过他的控制是基于有限状态机的,而并不在于STM8的内核计算。 |
|
|
| | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | 如果间隔几个开关周期计算斜率的话,也会损失响应速度吧。如果使用电压模式来控制的话,应该会更简便一些。电流采样通过一个比较器进行峰值过流保护。 |
|
|
| | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | MCU或者DSP使用峰值电流控制是不太好实现。目前觉得TI的方案会可行一点。其他的需要多次采样,而且要计算除法,而且在隔离场合,有时候采用也是比较困难。 |
|
|
| | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | 你说的是TI的DSP还是TI的专用数字电源芯片嗯?相对于其他的控制器有哪些优势吗?能不能推荐几个型号呢。以前没有接触过TI的这些IC。 |
|
|
| | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | UCD系列那些是专用,28027 或者28035,这两做电源个还不错。如果说有什么优势,PWM模块做得很细致,目前为止见过的比较先进的PWM模块之一。 |
|
|
| | | | | | | | | | | | | | | |  |  | | | | | | | | | | | | | | | | | | | | 以前见过别人用28000系列做过,据说是有HRPWM。就是价格挺贵的,一个片子要30+元。 |
|
|
|
|
|
| | | | | |  |  | | | | | | | | | | 你说的是电压外环电流内环吗?这个难度比较大,还没有做过。用单片机不太好实现。 |
|
|
|
|
|
|
|
 |  | | | | nice!之前一直有关注数字电源方面的东西,向楼主学习! |
|
|
|  |  | | | | | 数字电源应用比较广泛,也有很大的前景,使用起来非常灵活。本篇只是介绍了冰山一角,适合入门学习。旨在抛砖引玉。 |
|
|
|
|
|
|
|
|
|
|
 |  | | | | 大虾 我想请教一下关于pid算法的东西 方便留下QQ或是什么的吗 最近我也在弄这个数字电源 但是遇到很多问题不知怎么解决  |
|
|
|
 |  | | | | 你好楼主,我想请教下,是不是负载不同了,PID的参数也不同。
|
|
|
 |  | | | | 楼主,我很崇拜你,也是小白一个,问你一个简单的问题。你的PID输出怎么和PWM控制量对应上的,是不是先做PWM占空比和电源输出电压的标定,目标电压值和采样电压值之差做PID算法得到的电压值,然后根据对应关系(也就是标定的关系),转化为PWM占空比输出。希望楼主不吝赐教!谢谢!
|
|
|
|
|
|
|
 |  | | | | 楼主实在是太牛x了,看了楼主的帖子受益匪浅,可能是回帖太多了,没有看到楼主说明以下:开关频率和采样频率分别是多少?电压电流信号是否能进行数字滤波处理。
|
|
|
 |  | | | | 楼主用STM32F030试试看,比STM8贵不多,但是运算速度快很多了
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |  | | | | 楼主,你这个能测一个输出突加负载和突减负载的波形图吗?看看突加负载过冲和下冲,稳定时间是多少,突减负载过冲和下冲,稳定时间又是多少?
|
|
|
|
|
|
 |  | | | | 用STM8做数字电源,电压模式可能可以,但电流模式哦,是一定不行了; |
|
|
|
|
 |  | | | | 苏州东微MOS目前在国内各类电源厂商中大批使用,性能在充电桩模块、通讯电源、白/黑家电、医疗电源、PD快充、LED等多行业中得到一致好评,具体请联系深圳市鑫驰创科技有限公司,0755-82791456。谢谢!
东微的竞品是英飞凌、ST等国际一线MOS品牌厂商,CooL MOS,目前在PD快充行业,很多客户使用东微超级硅产品,性价比非常好。刚在华为、O\V、小米等知名客户通过认证,进入代工厂商的MOS品牌供应序列。
如有苏州东微MOS需求、咨询,请联系深圳市鑫驰创科技有限公司,0755-82791456。谢谢!
|
|
|
|
|
 |  | | | | PCB打样+SMT贴片加工,加vx18681567167注册新客户送价值50元的SMT优惠券 |
|
|
|
|
|
|
| |  |  | | | | | | 基于STM32的PID可调数字电源
网上搜索下载这个文件里面有具体得程序,,
|
|
|
 |  | | | | 楼主说的“失踪好难过频率=16MHz,开关频率=100kHz……”指的时钟频率??? |
|
|
|
|