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

【龙腾原创】(完) 基于STM8的 数字电源 设计全过程

  [复制链接]
查看: 65530 |回复: 346
1
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-20 12:16:57
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-20 12:20:36
 


一、数字电源的优缺点:

数字电是以MCUDSP为核心控制器的电源,本方案是采用STM8S003F3P6为核心,输入10~14V,输出恒流0.7A限压37Vboost拓扑车载30LED驱动电源,效率达到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布线,加入屏蔽等方式来解决。
凡尘
  • 凡尘
  • 离线
  • LV6
  • 高级工程师
  • 积分:1755
  • |
  • 主题:13
  • |
  • 帖子:362
积分:1755
LV6
高级工程师
  • 2014-7-23 15:58:13
 
楼主好屌啊
六道之鼬
  • 积分:210
  • |
  • 主题:12
  • |
  • 帖子:37
积分:210
LV3
助理工程师
  • 2014-8-11 10:05:45
 
我想用STM89S51设计一款数字电源,先收藏了
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-11 15:30:19
 
STM89S51是什么单片机??你说的是51单片机吧?那应该是AT89S51,或者STC89C51。两家不同的公司(Atmel、宏晶)。本文用的是STM8 (ST公司)。
要做数字电源,单片机应该至少具有两个功能:
1:片内具有ADC。(外置ADC也可以,不过价格太高)
2:片内集成PWM输出。(片内定时器要可以输出PWM)
STC89C51是没有这两个功能,你可以参考一下宏晶的一些增强型的51单片机,如果PWM和AD是支持的,那么就可以方便的做数字电源。
楚潇
  • 楚潇
  • 离线
  • LV6
  • 高级工程师
  • 积分:540
  • |
  • 主题:25
  • |
  • 帖子:50
积分:540
LV6
高级工程师
  • 2015-2-6 09:14:34
 
你好 我也在做一个BOOST数字电源 请教一个PID思路问题 请帮忙指点一下 1.首先调KP参数 是否采集输出电压与预先设定电压比较 然后调整占空比 转化成代码就是 Dmax=KP(U采集-U设定)
2.判断KP参数是否合适 就是判断输出电压是否在进行周期振荡
3.能否解释下 PWM软启动 是什么意思 有什么作用
liukanglai
  • 积分:119
  • |
  • 主题:0
  • |
  • 帖子:7
积分:119
LV2
本网技师
  • 2015-10-24 07:05:34
 
楼主有没有试过TI 的数字电源芯片
suyuanda
  • 积分:230
  • |
  • 主题:2
  • |
  • 帖子:12
积分:230
LV3
助理工程师
  • 2017-4-3 00:16:57
 
楼主 你这个PWM精度 是不是就是采样频率????
wwf_8023
  • 积分:1165
  • |
  • 主题:23
  • |
  • 帖子:289
积分:1165
LV6
高级工程师
  • 2017-12-28 13:45:12
 
目前,我海没有搞过数字电源呢,有没有实际用应的方案,呈现一下,分享一下呗,

雅人深致
  • 积分:935
  • |
  • 主题:0
  • |
  • 帖子:197
积分:935
LV6
高级工程师
  • 2014-7-20 12:28:45
 
占座
aoqzsc
  • 积分:145
  • |
  • 主题:3
  • |
  • 帖子:15
积分:145
LV2
本网技师
  • 2014-8-22 22:52:47
 
提示: 该帖被管理员或版主屏蔽
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-20 15:35:20
 


二、参数计算

输入电压: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电解电容。

其他参数计算:

letfly
  • letfly
  • 离线
  • LV3
  • 助理工程师
  • 积分:286
  • |
  • 主题:13
  • |
  • 帖子:45
积分:286
LV3
助理工程师
  • 2014-8-19 19:33:52
 
根据ESRC的一般关系,C1670uF
请问楼主,这个是怎么的出来的?

forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-20 17:20:14
 
《开关电源设计 第三版》书本中,第17页指出,对于很大范围内的铝电解电容,ESR*C=50~80E-6左右。
-----------


司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-8-20 17:42:08
 
其实这段话是错的。用这段话算输出电解电容,值小的一塌糊涂,巨省钱,老板都笑了
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-20 18:59:58
 
前面不是说了嘛,这个计算方法是忽略掉Irms影响和容量的影响,通过ESR计算的。
这个公式只是计算ESR对纹波的影响。实际的话,还要计算容量对纹波的影响、以及最大能够承受的RMS电流。
书上面的那段话没有错,只是在特定的条件下(假设Irms和容量不是主要因素)计算得到的取值。
在3楼,分别计算出来了有电荷量守恒得到的容量值、有ESR得到的容量值、以及最大RMS电流。通过综合比对,然后再选择电容。
JamesHacker
  • 积分:1425
  • |
  • 主题:5
  • |
  • 帖子:233
积分:1425
LV6
高级工程师
  • 2014-12-5 11:12:52
 
这本书的这个理论我以前也用过
后来看过一些别人的方法,有些是直接把算出来的理想值放大10倍-30倍


我自己用电桥测过一些直插的电解电容,这个值有比较接近书上提的数的,也有差的较远的
其实这本书写的还是离现在有一些年头了,半导体技术总有改进吧,ESR*C值应该多少降了一些下来了


所以我还是想看看实际搞工程的人是怎么处理的
roc171
  • roc171
  • 离线
  • LV6
  • 高级工程师
  • 积分:1549
  • |
  • 主题:66
  • |
  • 帖子:605
积分:1549
LV6
高级工程师
  • 2014-9-18 15:36:45
 
有可能,我曾做过一个实验如果按书上的电容容量的话,输出纹波根本达不到要求,除非用无感电容或者更好的
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-22 11:27:27
 
书上的计算方法,都是假定某个参数为理想情况下计算的。实际要考虑到各种非理想的问题。
楚潇
  • 楚潇
  • 离线
  • LV6
  • 高级工程师
  • 积分:540
  • |
  • 主题:25
  • |
  • 帖子:50
积分:540
LV6
高级工程师
  • 2014-9-12 11:28:17
 
你好 请教下2个问题
1. 你的电感 是环型电感吧 是加工订做的 还是直接买现成的?有没有联系方式给我 我也找功率电感
2.电感线径与电流有没有对应的计算资料
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-12 22:55:11
 
电感的线径的选择,主要是看a:电流的有效值。b:电流密度。c:功耗。
a:电流连续模式CCM情况下的电感电流的有效值=Io*sqrt(1+r^2/12)/(1-D)参见《精通开关电源设计》第331页。
b:环形电感散热比较方便,电流密度一般可以取得稍微大一些。
c:至于功耗就是铜损了,铜损=电流有效值的平方,乘以ESR。 只要在功耗允许的范围内就可以。
小小瀑布
  • 积分:570
  • |
  • 主题:7
  • |
  • 帖子:102
积分:570
LV6
高级工程师
  • 2014-9-15 17:07:05
 




小小瀑布
  • 积分:570
  • |
  • 主题:7
  • |
  • 帖子:102
积分:570
LV6
高级工程师
  • 2014-9-15 17:12:17
 
请问楼主,在这个公式中Esr=△u/△i,分子是纹波电压变化量,分母是纹波电流变化量吧。而在此处的分母是峰值电流吧,不知道我哪理解有问题,求指点?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-17 11:51:04
 
boost拓扑这里使用电流的峰峰值,不是电感电流纹波。如果buck电路,那△i就是纹波电流了。其实也是峰峰值。
小小瀑布
  • 积分:570
  • |
  • 主题:7
  • |
  • 帖子:102
积分:570
LV6
高级工程师
  • 2014-9-17 15:20:57
 
IL*(1+r/2)这算出来的是上峰值吧,下峰值呢?然道为零么?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-17 15:44:05
 
对于boost下峰值就是0了。就是流入二极管的电流波形一样。
我是谁
  • 积分:2027
  • |
  • 主题:104
  • |
  • 帖子:756
积分:2027
LV8
副总工程师
  • 2014-11-3 14:35:40
 
楼主你电感电流的有效值计算公式错误了!
我是谁
  • 积分:2027
  • |
  • 主题:104
  • |
  • 帖子:756
积分:2027
LV8
副总工程师
  • 2014-11-3 14:39:47
 
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-20 15:38:59
 


三、原理图、PCB、实物图



原理图:




PCB:












实物图:


hlp330
  • 积分:21758
  • |
  • 主题:88
  • |
  • 帖子:8158
积分:21758
版主
  • 2014-7-20 15:41:43
 
输出是否有过压保护?成本大概多少?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-20 15:51:23
 
这个是试验测试阶段,暂未加入过压保护。如果要加入过压保护或者欠压保护,仅需两个分压电阻到一个IO口,程序稍微改动即可。
ahtang
  • 积分:156
  • |
  • 主题:4
  • |
  • 帖子:21
积分:156
LV2
本网技师
  • 2014-9-17 17:15:59
 
请教一下MBR2045 D1的作用是什么啊
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-22 11:28:30
 
就是boost拓扑里面的肖特基二极管啊。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-20 15:44:17
 


四、基本软件代码

基本流程图:





ADC采样:
初始化ADC





采集电压平均值:






采集电流平均值:






定时器初始化:







设置占空比:







串口初始化:







串口调试发送:

roc171
  • roc171
  • 离线
  • LV6
  • 高级工程师
  • 积分:1549
  • |
  • 主题:66
  • |
  • 帖子:605
积分:1549
LV6
高级工程师
  • 2014-7-21 12:39:04
 
正在学习中,先占个座
roc171
  • roc171
  • 离线
  • LV6
  • 高级工程师
  • 积分:1549
  • |
  • 主题:66
  • |
  • 帖子:605
积分:1549
LV6
高级工程师
  • 2014-7-21 12:39:36
 
楼主画流程图用的是什么软件???
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 13:35:58
 
使用的Microsoft Office Visio 2007
bei_jxing
  • 积分:872
  • |
  • 主题:5
  • |
  • 帖子:346
积分:872
LV6
高级工程师
  • 2014-9-16 16:19:31
 
看着楼主的代码亲切,我也做个这个小东东;PID控制效果如何?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-17 11:49:29
 
总体的效果还是不错的。就是PID算法还需要进一步优化。
vurtne
  • vurtne
  • 离线
  • LV6
  • 高级工程师
  • 积分:519
  • |
  • 主题:23
  • |
  • 帖子:89
积分:519
LV6
高级工程师
  • 2015-1-17 13:14:12
 
stm8 不能pintf 重定向到USART么 ,用的着这么麻烦么?
eric.wentx
  • 积分:45635
  • |
  • 主题:485
  • |
  • 帖子:16978
积分:45635
版主
  • 2014-7-20 16:20:58
 
喜欢这个,能送一台不?
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-20 17:05:22
 
你在欧洲住那么就,别人怎么送你
你可以自己搞一个
luyun5436
  • 积分:104
  • |
  • 主题:0
  • |
  • 帖子:18
积分:104
LV2
本网技师
  • 2019-1-25 14:59:08
 
限压 恒流可以否?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-20 17:27:45
 
可以自己搞一个嘛,我在这只是抛砖引玉哈、
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-20 17:04:05
 
请教一下第1楼的点击跳楼是怎么搞的
後會絠萋
  • 积分:8599
  • |
  • 主题:194
  • |
  • 帖子:2529
积分:8599
版主
  • 2014-7-20 17:29:53
 
过流和过压保护可以用内部比较器实现
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-20 17:33:18
 
我始终怀疑从比较器触发中断,再关断驱动时间太长了,对于次级短路(不是这个应用,是指反激,这个短路就直接挂了)反应时间不够。
後會絠萋
  • 积分:8599
  • |
  • 主题:194
  • |
  • 帖子:2529
积分:8599
版主
  • 2014-7-20 17:41:56
 
郭总,如果把中断优先级设置最高呢?
後會絠萋
  • 积分:8599
  • |
  • 主题:194
  • |
  • 帖子:2529
积分:8599
版主
  • 2014-7-20 17:46:38
 
8位单片机确实慢了, 我的DSP就用内部比较器实现短路保护的
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-20 18:06:44
 
DSP指令周期纳秒级当然可以
richy36
  • 积分:143
  • |
  • 主题:1
  • |
  • 帖子:9
积分:143
LV2
本网技师
  • 2014-7-24 11:30:41
 
看他的CPU执行频率了。。我短路都是直接用中断的。。然后中断为了快速就直接把其他变量保存都移除,剩下的就3 4 条语句就关了。。用8M的速率 短路保护的处理时间1uS都不用即使加上硬件延时估计也不会超2uS 如果这个时间也大了的话那就没有办法做了。。。
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-20 18:06:06
 
肯定设为最高,但从相应到执行还是有几个周期的,频率不高几个周期可能就几微秒了,结果可想而知。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-23 20:35:40
 
像楼主用的STM8S 16Mhz, 每个指令周期0.0625us,STM8S进入中断花4个指令周期,关闭PWM用2个指令,满打满算10个指令周期就能完成,所花时间不超过1us,一般是够的!
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-24 11:56:51
 
这个MCU没有了解,指令周期如果和工作频率相等的话还好一些,一般IC从过流到关断的时间大约在200ns,1uS的话变压器磁密设计余量留大点是可以的。
wangjinlongd
  • 积分:1026
  • |
  • 主题:59
  • |
  • 帖子:288
积分:1026
LV6
高级工程师
  • 2014-11-6 14:32:45
 
为什么要将短路时间做的这么短呢?我看数据手册给的,短路电流是4倍额定电流时,短路时间是10us。
nc965
  • 积分:54095
  • |
  • 主题:113
  • |
  • 帖子:17460
积分:54095
版主
  • 2015-2-6 09:41:44
 
郭工说的应该是开关的OCP保护,0.2us是必须的,对于输出短路,应该可以放宽一个数量级。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-20 18:07:01
 
唐总说的有道理,把中断优先级设为最高,当次级短路时候,直接完全关断PWM输出,这个过程也就几个微秒。几个微秒的短路反应时间应该还是可以的。
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-20 18:16:59
 
看拓扑,反激非常危险
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 08:26:27
 
请问为什么反激非常危险呢?是反激拓扑本身危险,还是接入电网了比较危险呢?
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-21 15:39:28
 
BOOST输出短路直接就挂了。
反激危险是指从检测到过流触发中断,压栈,执行关断指令,需要几个周期,在这几个周期内电流会继续上升,变压器有可能饱和。
richy36
  • 积分:143
  • |
  • 主题:1
  • |
  • 帖子:9
积分:143
LV2
本网技师
  • 2014-7-24 11:34:45
 
现在BOOST输出都会加一个开关管做短路保护的!!
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-24 23:03:56
 
那个开关管能不能和二极管合并,然后用一对互补的PWM去驱动MOS和他!
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-25 08:57:29
 
互补的PWM用TIM1-CH1和TIM1-CH1N就可以实现,就是如果把二极管用MOS代替进行同步整流的话,那个管子的驱动有点麻烦。
richy36
  • 积分:143
  • |
  • 主题:1
  • |
  • 帖子:9
积分:143
LV2
本网技师
  • 2014-7-26 11:07:49
 
同步的话,单片机的驱动电压是个问题 那还得加不少电路去驱动高压下的P管。再说了 单片机做的同步的话 轻载效率很差的。。所以得视情况而定。。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-17 23:11:56
 
boost电路的二极管损耗比较小,boost电路的二极管只有导通损耗,没有反向恢复损耗。用同步整流的话,有点大材小用。
lizlk
  • 积分:3227
  • |
  • 主题:12
  • |
  • 帖子:849
积分:3227
版主
  • 2014-7-24 14:16:38
 
这个短路根本无需软件参与,现在的PWM外设模块都带有硬件封锁功能。逐个脉冲限流
STM8里面是叫刹车功能。开启了这个,和比较器模块配置一下,到了限流点,PWM占空比自动封锁,根本无需软件参与控制,如果用软件参与控制,是一个非常低级的作法。
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-24 14:46:11
 
没用过STM8,如果有这个功能是好事啊。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-24 14:50:50
 
请问刹车功能是TIM1_BKR这个寄存器把?
是不是通过一个比较器接到TIM1_BKIN管脚就可以实现了呢?
lizlk
  • 积分:3227
  • |
  • 主题:12
  • |
  • 帖子:849
积分:3227
版主
  • 2014-7-25 01:16:20
 
具体好久没有去看了,数据手册有关于这个部分的详细描述。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-24 22:58:22
 
这个功能能否详细说一下,我好想没看到过
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-20 17:29:56
 
哈哈,这个还挺好玩挺方便的吧、
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-20 17:31:13
 
告诉我啊
雅人深致
  • 积分:935
  • |
  • 主题:0
  • |
  • 帖子:197
积分:935
LV6
高级工程师
  • 2014-7-20 18:57:55
 
看顶楼(鼠标放着不动看状态栏的URL,hyperlink)

来编辑楼主的主帖 PS不是管理员或者版主,我就不得色了 XDD
zhaohua2764
  • 积分:10123
  • |
  • 主题:37
  • |
  • 帖子:3752
积分:10123
LV10
总工程师
  • 2014-7-20 19:14:56
 
看样子,漏洞不小,这都被你发现了。
雅人深致
  • 积分:935
  • |
  • 主题:0
  • |
  • 帖子:197
积分:935
LV6
高级工程师
  • 2014-7-20 19:55:17
 
放心,上面那样是没有权限修改的。
咱们还是回到楼主帖子的主题吧。。。不水了= =
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 08:30:22
 
网站使用的DIV+CSS架构,每一个楼层都是一个DIV,每一个DIV都有自己的id。在URL后面加#id就可以实现跳楼。
参见http://www.w3school.com.cn/html/html_links.asp中,锚点(anchor)的使用。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 08:37:54
 


51 PID基本思路:


PID算法有模拟型数字型
模拟型主要是有RC网络构成的PID调节器,就是环路补偿在VFBCOMP接入的RC网络。
数字型就是模拟型的离散化形式,积分用加法代替,微分用减法代替而成的。
数字型PID分为有位置型增量型
位置型:




增量型:




书上说位置型要比增量型运算量大,但是实际上位置型和增量型的复杂程度是一样的。增量型也不比位置型运算简便很多。
本方案中的采用增量型PID算法
由于PID算法存在一些问题,例如积分会饱和,微分作用时间短,输出会溢出等缺点,PID采用的改进型的PID算法,主要有变速积分、积分分离、PWM死区、PWM限幅
变速积分:变速积分指的是在积分项比较小的时候积分快一些,积分项比较大的时候积分慢一些。有助于防止饱和。
积分分离:其实也是变速积分的一种,在积分项大于一定值时候,停止积分的作用
PWM死区:设定一个不灵敏区域,就是输出的精度。死区越大,精度越低,但是系统越稳定。死区越小,精度越高,但系统月容易震荡。
PWM限幅即限制PWM输出的极大值,防止占空比达到过高。
另外,PID的参数采用浮点型,主要是为了减小误差,如果采用整型的话,小数点约去误差较大,尤其是积分环节。
【具体的PID程序代码不方便贴出来,请理解。】

bei_jxing
  • 积分:872
  • |
  • 主题:5
  • |
  • 帖子:346
积分:872
LV6
高级工程师
  • 2014-9-16 16:21:59
 
核心的东西没有贴出来,小失望,也可以理解;
aninstone
  • 积分:491
  • |
  • 主题:2
  • |
  • 帖子:92
积分:491
LV6
高级工程师
  • 2015-1-26 15:26:41
 
楼主强悍
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 08:49:51
 


52 变速积分:



传统的积分容易发生饱和,进而产生震荡,尤其是当积分量比较大的时候。变速积分法的基本思想是在偏差较大时积分慢一些,而在偏差较小时积分快一些,以尽快消除静差。
下图书使用matlab显示变速积分的函数。图中直线是y=x,没有使用变速积分。图中曲线是使用变速积分之后输出与输入的关系








forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 09:01:38
 


53 恒压精度


由于数字电路中,PWM是由定时器产生的,系统有一个时钟频率16MHz,当开关频率为100kHz的时候,PWM就一共有160格,也就是PWM的步进为1/160
模拟电路中就不存在这个问题,模拟电路中的PWM可以任意的步进。
pwm数值+1,输出电压就会增加一定的量。占空比越大,增加一格占空比导致输出电压的增加就越大。这个主要用来设定精度,也就是PID死区。
下图是采用matlab计算恒压精度的代码:










Vin=10V,图如下:






Vin=13V,图如下:








可见这个PWM恒压精度比较低,尤其是占空比较大的时候。不过本方案是恒流驱动,对限压要求不高。
已知ADC电压采样精度=3.3/1024*21=0.068V(3.3为基准电压,102410ADC210次方,21为分压电阻的比例)
可见PWM造成的输出电压精度远大于电压采样造成的输出电压精度。设定PID死区时候,不能设置的过小,否则会一直不停的震荡。
增加这个精度有几种方法:
一是改变拓扑,例如BUCK拓扑,PWM0-100%内,精度都是相同的,而boostbuck-boost在占空比较小时候,精度高,占空比较大时候,精度低。
二是增PWM的分辨率,也就是增加MCU的主频,或者减小开关频率。
三是PWM占空比抖动PWM在一个非常非常小的范围内增加或减小进行小幅震荡,有利于增加输出电压精度,但是缺点是引起输出纹波略微增大。(

举一个简单的例子,0.01精度的PWM,实现0.001精度的输出:假如要实现0.567的占空比,就可以第(1~7)*n周期输出0.57,第(8~10)*n周期输出0.56。这样总的来说就是0.567的占空比了。可是输出会叠加开关频率*10的低频纹波。

司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-8-8 09:31:41
 
看到了,谢谢楼主,请问第三点抖动如何实现呢?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-8 15:10:37
 
只要PID中有积分作用,就会自动有这个效果的。体现在PWM输出上面就是PWM在一个小范围内上下波动。
这个是链接:http://bbs.21dianyuan.com/188786.html#tips_content_729695
下图是调节到理想状态下的PWM输出数值在一个很小的很小的范围内(104-105)之间跳动。等效的PWM在104~105之间。



shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-9 15:05:14
 
想问问楼主,这个boost变换器有没有电流环呢?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-9 16:08:03
 
哈,开篇第一句话就是“输出恒流0.7A限压37V”,当然有恒流环节啊,恒流环节用的0.1欧姆的采样电阻进行取样,送往ADC。限压限流双环控制的。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-9 16:22:48
 
上面那个应该是我表达的不准确,我的意思是有没有电流内环。这种数字控制的boost变换器使用峰值电流控制的是不容易搞的,就想问问楼主有没有做过这个
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-9 17:13:56
 
啊,这个没有,如果采用峰值电流控制的话,估计ADC的速度和单片机的速度跟不上。而且STM8S好像不能够ADC达到门限值来中断。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-9 19:19:40
 
嗯,数字峰值电流控制不太好做。结合模拟比较器和DAC实现好一些,或者使用电流预测的方法,用到单片机的资源比较多
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-9 19:58:15
 
用运放或者比较器,配合外部中断,理论上应该可以实现。不过这样的话,电路要复杂了一些。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-9 20:12:50
 
[size=14.44444465637207px]TI有实用模拟比较器做峰值电流控制的应用,比较器的输出可以直接触发PWM,不需要CPU的干预,有点像模拟电路。
[size=14.44444465637207px]数字控制部分只作电压环的计算,给比较器提高一个命令电流的阈值参考电压。这个方法比较耗单片机资源,不过增加斜
[size=14.44444465637207px]率补偿什么的就不用外加额外的电路,程序上修改一下就好
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-10 16:57:52
 
比较器的输出直接触发PWM,这个功能是不是那个特定的MCU自带的功能呢?我不太了解TI的CPU。STM8S有刹车功能,就是直接完全关闭锁死PWM。不知道TI的那个是不是这种刹车功能。
另外,能不能把TI的那个应用给个链接呢?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-11 09:12:43
 
这里有一个控制框图,他们DAC可以输入到模拟比较器的一个引脚中,而比较器的输出是可以输出到PWM模块中。 Digital Peak Current Mode Control With Slope.pdf


forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-11 15:24:30
 
很好的资料,先下载下来慢慢看,看的晕晕乎乎的,有空好好研究一下啊,。不过这个上面的例程是DSP的吧?不知道普通MCU能不能跑得动。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-14 10:56:19
 
可以用在DSP上。数字环路就是一个PID算法,其他部分CPU是不用管的。TI写的有点悬乎,他们用的是双极点双零点的补偿器来代替PID,实质上是一样的。简单一点应该就是用模拟控制的思想设计,得到控制函数,然后将补偿器的传递函数离散化。
这里有另外一个电压环控制的文档,曾经试过用它的方法设计,结果发现不太行,输出没有很稳定。结果好来将控制函数降了阶反而稳定了 Designing a TMS320F280x Based Digitally Controlled DC-DC Switching Power Supply.pdf


forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-14 21:35:44
 
你提到的:简单一点应该就是用模拟控制的思想设计,得到控制函数,然后将补偿器的传递函数离散化。” 文档中给出了环路控制的传递函数、伯德图以及阶跃响应波形;可是我们在调试电源时候,都是通过调节Kp、Ki、Kd这三个参数来进行环路的调整的;这个传递函数应该怎样转化为PID参数呢?或者这种方法应该采用怎样的控制方式呢?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-15 11:48:17
 
实际上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;

forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-15 14:41:22
 
这段代码开的不太懂,请问代码中CNTL_2P2Z_CoefStruct1结构体的b2、b1、b0、a2、a1成员是什么意思呢?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-15 15:20:43
 
那个是双零点双极点补偿经过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)的系数
这里具体的定义就参考上面的文档。
这部分的内容应该是自控原理离散控制那方面的内容,或者计算机控制那里的内容。不过那些讲得太理论,最后还是用串口慢慢调整参数。






forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-15 17:00:48
 
多谢大师,受教了。原来传递函数和PID是这样联系在一起的。以前一直没有搞懂硬件控制和软件控制之间的联系。看来以后要多看看自动控制原理了。
另外这个U(n)的输出应该就是PWM输出的控制量吧。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-15 17:31:13
 
学生而已,绝非大师。只希望能找个工作,呵呵
[size=14.44444465637207px]U(n)就是控制量输出,不一定是PWM控制,也可以是频率或者相位
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-15 19:55:31
 
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只是控制系统的一种特殊情况?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-15 21:01:07
 
U(n)是当前输出的结果,那u(n-1)就是上一次的输出结果,如此类推,E实际上是表示误差,通常这个值的是 (参考值减去采样值)
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-16 19:46:51
 
那就跟增量式PID的公式非常像了,增量式PID的公式U(n)=U(n-1)+A*E(n)+B*E(n-1)+C*E(n-2)
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-16 22:00:13
 
是的,原理是一样的。PID的物理意义比较清楚,而2p2Z控制适更合用波特图设计。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-17 23:09:21
 
哦哦,这个之间的关系有点头绪了。
不过有一个问题,如果采用双环控制,比如恒压限流,这样的话反馈量就不止一个,还能用2p2z来设计么?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-17 23:32:34
 
楼主所说的双环控制是一个电路里面同时又电压环和恒流环,还是指一个电流内环和一个电压外环呢。
如果是前者,电压环和电路环应该不是同时起作用的。如果是这样其实分别对他们进行设计就可以,结合一定的判断条件,有软件自动切换控制参数。
[size=14.44444465637207px]如果是第二种情况的,也是可以用2p2Z来设计的,比如是一个平均电流控制的PFC变换器。电压外环(使用2p2Z,实际上这个应该就一个低通滤波器)生成一个输出信号,然后利用乘法器和输入电压的波形信号相乘,得到一个电流的参考信号。电流的采样值,和电流参考信号相减的结果再经过2P2Z,再给PWM模块,这个过程是与UC3854类似的(当然也有基于单周期控制的,哈哈,那个我就不懂了)。当然了这个过程对于DSP来说不是一步到位(与模拟控制的区别),这里的两个环路的计算分别执行。电流环路的带宽比电压环的高,电压环采样频率和执行频率也可以低一些。一般优先执行电流环。所以,应该可以说2p2Z应该是可以用在双环控制上面的。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-18 11:21:00
 
哦哦,讲的这么详细啊,我说的是第一种,同时恒压又恒流。不过如果是普通的恒压限流电源的话,分时切换是没问题的。
可是如果是LED驱动电源的话,电压环和电流环基本上是同时起作用的,因为LED属于二极管,有二极管的伏安特性可以看出,很小的电流变化会导致电压很大范围内变化,一般LED驱动都是恒压环和恒流环同时作用的。这样采用判断分时切换估计应该不是很好吧?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-18 13:12:49
 
恒压恒流应该不能同时实现的吧。之前做的一些LED驱动,运放+TL431的反馈方案,当时设计是电流环和并不是是同时起作用的。或者我的那个设计有缺陷吧,电压环只起到限压作用,并不会和恒流环一起工作。
用数字器件做LED驱动还真没有做过。如要切换,只要输出的电压值大于某个阈值,将电压环的激活,电流环休眠。反之,电流环激活,电压环休眠。
还有一个,楼主应该是笔误了,应该是很小的电压变化会引起LED很大的电流变化。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-18 13:48:28
 
哦哦,那句话确实是笔误。
以前我做过试验,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就不会震荡了。感觉还是恒压与恒流同时进行作用了。当然如果负载是电阻的话,就不会同时作用了。
我现在用的方法是,把电流的反馈值,转化为相同量纲的电压反馈值,然后取其最大值,进行反馈。不知道这样做有没有什么缺陷的地方。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-18 14:42:41
 
确实,在输出同时接近电压限制点和电流限制点上时候,两个环路可能会同时起作用。如果同时起作用可能就会引起窜扰。所以觉得LED电压限制应该设计在所串最大LED数的导通电压(V_through)大3V左右的位置,来避免出现这种串扰。
[size=14.44444465637207px] 觉得楼主的方法应该是将流过LED电流经过一个运放放大后,在输入给TL431之类的基准,再进行反馈吧。
我对电压环和电流环起作用的条件是这样理解的:如果电路同有电压环和电流环,那么最大输出功率(Pmax=V_lim*I_lim)就限制了。假设输出是电阻,一旦输出功率大于Pmax,起作用的就只有电流环。这样如果继续减少电阻阻值,输出电流不变,但功率变小(这个应该就是LED恒流时的状态了,那就是恒流状态时输出电压没有很接近电压的限制值)。还有另一个情况,就是输出负载电阻阻值太大,l_lim*R>V_lim时应该就只有电压环起作用,电压是被限制住。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-18 17:35:03
 
理解你的意思了,估计是我设置的限压值有些偏小。如果限压值是恒流时候的LED电压+3V,那就应该不会同时恒压恒流了。
cdzx11
  • 积分:10095
  • |
  • 主题:37
  • |
  • 帖子:3966
积分:10095
LV10
总工程师
  • 2014-9-26 13:41:24
 
楼上所说的那种情况绝无可能。
LED的伏安特性是又LED本身确定的,不可能你设定多少就是多少。
楚潇
  • 楚潇
  • 离线
  • LV6
  • 高级工程师
  • 积分:540
  • |
  • 主题:25
  • |
  • 帖子:50
积分:540
LV6
高级工程师
  • 2014-11-19 11:06:00
 
那请问楼主,现在是限压恒流。那如果负载变大或者变小呢,如果保持恒流,输出电压很快大于你的限压值37V。
peipei243627
  • 积分:116
  • |
  • 主题:1
  • |
  • 帖子:4
积分:116
LV2
本网技师
  • 2014-9-26 11:31:29
 
你好,我们最近一直在调试基于DSP的平均电流模式控制电路,用的是最基本的PI,离散化用双线性变化,观察的电流波形包络还好,再调剂出现问题。请问大师,能不能详细介绍一下这部分的PID的参数如何计算,我试了好几种方法,效果都不好。另外,乘法器部分还有个电压的前馈量,实验观察到,前馈量是随输入电压增大而减小的,对于其系数的确定也是有疑问的,你能不能详细介绍一下乘法器部分的Km、C的确定。下面是我们的电流波形。


shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-9-26 13:08:03
 
控制策略是采样类似UC3854的方式吗?看到图上的电流包络已经挺好的,看来内环是比较稳定了。电流内环的控制到输出传递函数,是可以找到的。如果是使用计算的方法可以现针对这个电流内环功率级传递函数来进行。如果是用PI调节器设计,那PI调节器的传递函数可以改写成Gc(s)=K(s+z1)/s,使用MATLAB的sisotool工具进行设计(可以参考一下TI的那个文档)。注意一下电流环的剪切频率,不能太低了。得到的传递函数再继续Z变换就可以了

截图来源——Digital Control For Power Factor Correction

这是我的一些建议,希望有用。
peipei243627
  • 积分:116
  • |
  • 主题:1
  • |
  • 帖子:4
积分:116
LV2
本网技师
  • 2014-10-8 16:02:27
 
是的,控制策略采样类似UC3854的方式,我们是先做完UC3854模拟控制后,又进行数字控制的。谢谢你的建议!
剑指天涯88
  • 积分:214
  • |
  • 主题:4
  • |
  • 帖子:13
积分:214
LV3
助理工程师
  • 2016-6-16 14:51:34
 
您好,不知道您还看论坛吗?我最近也在做类似的数字控制PFC,可否加个qq交流一下,谢谢
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-15 18:31:44
 
大师 我想学编程数字电源的 不知道有啥demo板 介绍点书也可以 谢谢
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-15 18:28:40
 
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

这种关系吗 ???


这个是书中的实例
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-15 20:56:18
 
是的
圣地亚哥
  • 积分:269
  • |
  • 主题:0
  • |
  • 帖子:22
积分:269
LV3
助理工程师
  • 2019-1-25 17:38:46
  • 倒数9
 
你好,我想请教一个问题,我看了你上传的DesigningaTMS320F280xBasedDigitallyControlledDC-DCSwitchingPowerSupply.pdf资料,有一个疑惑:G
C1(s) 是通过MATLAB得到的吗?是怎么得到的呀

shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2019-3-28 11:34:39
  • 倒数8
 
用SOSI 工具,设计完环路之后得出的结果
这个工具只要在输入sosi就可以调出来
oldfang
  • 积分:6887
  • |
  • 主题:241
  • |
  • 帖子:2125
积分:6887
LV8
副总工程师
  • 2015-8-10 12:49:09
 
好东西 要学习下
世纪电源网-小王
  • 积分:7370
  • |
  • 主题:145
  • |
  • 帖子:1359
积分:7370
管理员
  • 2015-8-10 13:12:41
 
嗯嗯 第四期文原创也可以关注一下哦 分享资料拿大奖
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 09:05:40
 


54 限流精度:


由于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
  • 积分:99504
  • |
  • 主题:139
  • |
  • 帖子:43953
积分:99504
版主
  • 2014-7-21 10:36:44
 
你采用的0.1m欧的取样电阻?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 10:40:07
 
是的,用的0.1欧姆的2512贴片电阻。
YTDFWANGWEI
  • 积分:99504
  • |
  • 主题:139
  • |
  • 帖子:43953
积分:99504
版主
  • 2014-7-21 10:53:28
 
,我算糊涂了,你也看糊涂了,我算成33mA在0.1mΩ上产生的压降是3.3mV了。你看成0.1欧姆了。。。。
cdzx11
  • 积分:10095
  • |
  • 主题:37
  • |
  • 帖子:3966
积分:10095
LV10
总工程师
  • 2014-8-25 18:45:05
 
这儿设计有问题。
按楼主的设计,最大电流为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,精度往往比分辨率低很多。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-26 16:44:00
 
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。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 09:06:56
 


55 PID整定:
网上的整定方法如下图:







参数的影响:


PID整定之前的准备:
首先调节恒压37V,限流0.7A。允许误差0.4V,接入LED:
输出电压和PWM数值通过串口发送出来,接收到之后,通过Excel表格画图,画出近似的波形。
PWM=160时候为占空比100%,设定PWM最大值为128,即80%
xinglucao
  • 积分:125
  • |
  • 主题:1
  • |
  • 帖子:8
积分:125
LV2
本网技师
  • 2014-8-19 10:32:34
 
在这里我推荐一个软件,串口猎人 ,当你用熟悉了你再也不用手工画图了,收到的数据直接可以转化为波形,可以同时显示8个通道的数据波形,串口设置简单,还有高级发码和高级收码功能,我用这个软件调试过很多PID,很方便!
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-19 14:57:50
 
串口复制,再粘贴、画图就是挺麻烦的。可是我好像没有搜索到这个软件的下载地址,麻烦能不能发上来一个呢?多谢!
xinglucao
  • 积分:125
  • |
  • 主题:1
  • |
  • 帖子:8
积分:125
LV2
本网技师
  • 2014-8-20 15:01:33
 
http://pan.baidu.com/share/link?shareid=352247151&uk=3827013492
这个是百度网盘的共享资源2.93M
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-20 17:12:46
 
多谢,已经下载了,功能确实好强大。不过还没有搞懂怎么显示波形,请问软件里面有demo代码吗?
xinglucao
  • 积分:125
  • |
  • 主题:1
  • |
  • 帖子:8
积分:125
LV2
本网技师
  • 2014-8-20 20:10:55
 
先在基本功能中设置好波特率串口号,在高级收码选项卡中可以参考如图配置,
串口发送数据可以这样发:
通道一数据:0xA5(功能码) + 数据高8 位 + 数据低8位 + 0xAA
通道二数据:0xA6(功能码) + 数据高8 位 + 数据低8位 + 0xAA
。。。。
功能码你自己拟定,帧头的勾可以不用勾选,帧尾如果勾选择发送的最后一包数据和帧尾相同。最后开启高级收码功能,此时可以看到收到的数据,你可以先发送一个int型的1234试一试,在接收框内看书否收到数值1234,之后在 “波形显示”选项卡中点击启动波形即可显示波形。


q823164950
  • 积分:3521
  • |
  • 主题:6
  • |
  • 帖子:61
积分:3521
LV8
副总工程师
  • 2014-8-22 16:52:41
 
这个软件不错,还能画图。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-3 16:12:20
 
多谢你的详细的说明,如果没有说明,还真不知道串口应该如何发送不同通道的数据。
顾彦雨
  • 积分:121
  • |
  • 主题:2
  • |
  • 帖子:6
积分:121
LV2
本网技师
  • 2014-8-22 23:11:59
 
想问下楼主,采样是标准的PID模型么?而不是2p2z模型,看到楼主的调试方法,应该是纯数字的PID整定,没有结合频域模型,去看它的bode图
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-23 10:04:16
 
这个例子里面用的是纯数字PID整定的,比较方便快捷,没有结合传递函数进行调试。
关于2p2z模型,shiyongxie讲解的非常清楚。下次设计会结合传递函数进行调试。
顾彦雨
  • 积分:121
  • |
  • 主题:2
  • |
  • 帖子:6
积分:121
LV2
本网技师
  • 2014-8-23 10:31:44
 
可以发下这个2p2z的链接么??
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-23 19:21:28
 
http://bbs.21dianyuan.com/188786.html#r_741103
第150、161、163楼,shiyongxie的回复。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 09:08:59
 


56 调节Kp
首先采样周期设置为最小。增大Kp,是环路震荡,再逐步减小Kp,直到不震荡为止。
环路震荡测试方法:
方法1:观察示波器的GS波形是否发抖。发抖则为震荡。
方法2:观察定时器PWM设置数值是否发生周期性的大幅变化。如果出现大幅变换,则震荡。如果小幅变化或者不变化,则基本稳定

由于调节Kp时候,存在稳态误差,输出电压可能达不到LED的开启电压,所以调节Kp时候,采用200欧姆电阻进行代替测试。

Kp=5Ki=Kd=0
输出电压为15V且存在稳态误差,环路震荡严重(GS波形有严重抖动),输出占空比在10~15之间跳变。
GS波形图:


PWM数值图:


经过不断调整,当Kp=0.5时候,震荡最小。这时候加入积分环节。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 09:10:43
 


5.7 调节Ki
Ki的调节是在Kp的基础上,从小往大慢慢加,当达到正常输出,就OK 了。Ki不能太大,太大容易引起震荡。
经测试,Kp=0.5,Ki=0.01为最理想阶段。


PID参数:Kp=0.5,Ki=0.01,Kd=0;接入LED恒流阶段测试:
GS波形和恒流电流



输出PWM占空比数据:


输出PWM在103~105之间变动,这个是由于PID的积分作用,把误差进行累加产生的。


forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 09:13:05
 


5.8 积分系数对PWM的影响:


如果增大积分系数,当积分系数过大,系统变得不稳定,震荡次数增多。
减小积分系数,启动速度会变慢。

以下是测试积分系数对PWM的影响。

积分系数过大效果:Kp=0.5,Ki=0.05,Kd=0;不稳定





积分系数过大效果:Kp=0.5,Ki=0.2,Kd=0;不稳定


积分系数过大效果:Kp=0.5,Ki=1,Kd=0;此时,由于积分作用过大,环路严重震荡。






积分系数过小效果:Kp=0.5,Ki=0.001,Kd=0,从开机到稳定的PWM数值。启动速度慢




forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 09:15:13
 


5.9 比例系数进一步整定:
由于原先的Kp是在没有积分作用下整定的,驱动不了LED,在加入LED之后,需要重新整定Kp。
以下是接入LED之后,Kp测试数据,与不接入LED有所不同:
Kp=0.5;Ki=0.01;Kd=0;输出波动非常大。





Kp=0.1;Ki=0.01;Kd=0;输出波动5格。



Kp=0.05;Ki=0.01;Kd=0;输出波动2格。


Kp=0.01;Ki=0.01;Kd=0;输出波动1格。




由以上数据可见,减小Kp,可以增加系统的稳定性,输出波动变小,但是缺点是响应时间变慢。

Kd主要用来改善环路相应速度,但是缺点太多,暂且设置为0。

综合考虑,采用Kp=0.05;Ki=0.01;Kd=0;PWM输出波动2格。虽然这个波动会引起输出电压纹波的略微增大,但是它是积分作用的结果,有利于提恒流高精度至ADC采样精度。
司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-8-8 15:25:17
 
再次感谢楼主,看到了,不过我是纯硬件的,看不懂,以后给我们软件看看。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-8 20:48:27
 
说白了就是,如果采用PID算法,只要Kp、Ki、Kd参数设置的合理,输出基本上都可以达到ADC采样所得到的精度,即使PWM的精度比较低。缺点就是输出会叠加一个小于开关频率的低频纹波。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-21 09:17:41
 


六、波形与效率


效率:



GS波形:




DS波形:




电感两端波形:




二极管两端波形:




huhushuai
  • 积分:1890
  • |
  • 主题:31
  • |
  • 帖子:535
积分:1890
LV6
高级工程师
  • 2014-7-21 17:31:21
 
做的很好啊。
zhojianjin
  • 积分:1336
  • |
  • 主题:3
  • |
  • 帖子:526
积分:1336
LV6
高级工程师
  • 2014-7-21 19:11:03
 
该上传成品了楼主
cxm3141
  • 积分:1183
  • |
  • 主题:41
  • |
  • 帖子:518
积分:1183
LV6
高级工程师
  • 2014-7-21 20:23:13
 
数字电源入门必看!
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-22 22:33:39
 
内容比较简单,主要是针对数字电源入门而写的。
zuohuijuan11
  • 积分:954
  • |
  • 主题:16
  • |
  • 帖子:369
积分:954
LV6
高级工程师
  • 2014-7-22 22:47:58
 
已经很不错了,改天向楼主讨教经验
大工
  • 大工
  • 离线
  • LV4
  • 初级工程师
  • 积分:370
  • |
  • 主题:8
  • |
  • 帖子:131
积分:370
LV4
初级工程师
  • 2014-7-29 18:49:42
 
楼主也能能不能讲讲PID控制,这个是核心。。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-2 21:04:43
 
帖子里面有PID参数的详细调试过程。
大工
  • 大工
  • 离线
  • LV4
  • 初级工程师
  • 积分:370
  • |
  • 主题:8
  • |
  • 帖子:131
积分:370
LV4
初级工程师
  • 2014-7-22 14:11:58
 
跳楼做的真好。接下来估计有很多了。
後會絠萋
  • 积分:8599
  • |
  • 主题:194
  • |
  • 帖子:2529
积分:8599
版主
  • 2014-7-23 08:11:42
 
请问这个单片机计算你这个浮点PID一次需要多少个指令周期?
cmg
  • cmg
  • 在线
  • LV7
  • 版主
  • 积分:13224
  • |
  • 主题:117
  • |
  • 帖子:4748
积分:13224
版主
  • 2014-7-23 16:21:43
 
我也很关心这个问题
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-23 16:42:26
 
我在主循环里计算一次PID,然后执行GPIO_WriteReverse(GPIOA, GPIO_PIN_3);端口取反命令。主频为16MHz。
测得PA3输出频率为2.4kHz,执行速度就是4.8kHz,执行一次需要3000指令周期;
去掉变速积分和微分之后,频率变为5.1kHz,执行速度就是10.2kHz,执行一次需要1600指令周期。
8位机计算浮点比较慢。而且我的PID算法也还没有进行优化。总的速度还是太慢了。


hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-23 18:23:54
 
STM8S不适合算浮动的,楼主为什么不把浮点转化为整数来算?
你可以把浮点数先放大64,128倍什么的,把小数包含进去,这样也不会损失精度的!
楼主画的PCB是四层板吗?上面的用珊型就是你说的优化PCB处理吗?为什么不直接整块呢?
电流采样电阻0.1欧是不是太大了,0.1x0.7=0.07W损耗,不过你可以直接送ADC采样!
总的来说楼主的工作非常帮!
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-23 18:48:03
 
非常感谢大师的提醒,瞬间脑洞大开!
1:如果采用long长整型来计算,把计算中的数值全都放大1000倍,这样就相当于浮点的精度0.001了,而且速度会大幅提升的。这个稍后我要试一下。非常感谢你的提醒。
2:PCB是单层版。你说的优化PCB是?
3:ADC是10bit的,Vref=Vcc=3.3V,最小分度值为3.3mV。如果用0.1欧姆电阻,电流精度就是33mA。如果电阻太小的话,损耗会减小,但是精度会变低。折衷考虑选择了0.1欧姆。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-23 20:14:20
 
,大师?这个帽子太高了!
PCB优化的问题,我主要看到你开始有下面这句话!所以我看到PCB上那个珊条很好奇,是不是就是你说的优化PCB布线!我没什么画PCB的经验!


“抗干扰能力弱开关电源产生的电磁干扰较强,可能会影响MCU,导致死机。这个问题可以通过优化PCB布线,加入屏蔽等方式来解决。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-23 22:14:41
 
1:你说的PCB上那个珊条指的是什么?没理解你指的哪个地方,能不能截屏指一下?
2:所说的优化PCB走线,是缩小高频脉冲环路,减小对外的辐射。输入电容单点接地。还有缩短高阻抗走线,防止收到干扰等等这些的内容主要还是怕干扰到单片机,不过测试看来,STM8S还是很不容易收到干扰的。最起码目前为止还从没死机一次。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-24 10:38:30
 
感谢楼主分享,楼主的理论和实践多很丰富,珊条是下面红圈的地方。你也可以在软件里加入看门狗!死机和跑飞多可以reset MCU。当然你可能已经加了。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-24 10:43:54
 
这个珊条是阻焊层。就是PCB涂绿油时候,不把这些地方涂上去,直接露出铜箔,就比如贴片元件的管脚都有这种阻焊层的。
画珊条这些地方的走线都是大电流的走线,这些阻焊的地方可以直接涂上焊锡,用来增加耐流能力。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-24 10:48:45
 
理解,谢谢楼主耐心讲解!
xinglucao
  • 积分:125
  • |
  • 主题:1
  • |
  • 帖子:8
积分:125
LV2
本网技师
  • 2014-8-19 10:47:16
 
STM8我们公司用了很多,抗干扰能力不行,我在做一块高压板的时候,如果出现放电打火的时候stm8就死机了!抗干扰能力强的是瑞萨的,被电击干扰也不死机
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-19 15:02:13
 
干扰不是很强的话还能接受吧,做过一个放电的试验,老远的鼠标都已经失灵了,STM8还在正常工作。
你做的是高压板吗?高压对单片机要求比较高。你所说的瑞萨MCU被电击也不死机?
xinglucao
  • 积分:125
  • |
  • 主题:1
  • |
  • 帖子:8
积分:125
LV2
本网技师
  • 2014-8-20 15:06:59
 
我做过一个燃气式热水器的控制板,之前用STM8做主控,在电子打火的非常容易复位,后来换成瑞萨的,打火放电针直接打穿瑞萨的芯片也要打好几次才打坏,正常工作没有死机的情况。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-20 17:08:09
 
其他的MCU受到干扰之后一般都是通过复位来进行保护的。。瑞萨的MCU被放电击穿竟然都能够正常运行?看来瑞萨的MCU抗干扰能力确实很不错的。有空可以好好学习学习。能不能推荐几个 适合做数字电源的 瑞萨MCU型号呢?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-9 14:16:30
 
TI那些没有浮点乘法器的CPU也是这么做的(先放大成整数,再计算),TI将这种方法做成IQmath库
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-10 17:00:53
 
请问这个IQmath库,能不能用到其他MCU上面呢?比如STM8S能不能使用IQmath库呢?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-11 11:40:26
 
[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应该也是可以支持类似操作
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-11 15:16:39
 
哦,好像挺麻烦了,TI的那个库只有.lib文件,没有.c和.h文件吗?汇编我不是很熟悉,请问C语言可以使用这些库吗?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-12 12:48:32
 
是有一个.h 的文件的文件的,这里有一个TI的IQmath的完整文件,可以看看 IQmath.rar
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-13 09:41:57
 
看样子里面好像没有.c的源文件,STM8好像不能够直接调用。估计应该是专门针对TI的MCU设计的把吧。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-13 10:50:03
 
应该是的,现在我也不知道具体的实现过程。使用这个库还要在.CMD文件里面添加,这个文件应该就是TI的CPU特有的
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-13 21:57:44
 
既然无法调用TI的库函数,那还是用老方法,直接把Kp、Ki、Kd增大1000倍,最终结果再缩小1000倍吧。用整数确实要比浮点快不少。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-14 23:37:18
 
是的的实际上送到PWM模块的数据也一个整数,不是小数
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-14 23:58:41
 
嗯哪是啊,PWM一般都是由片内定时器产生的,装填的数据都是整数。
hwang9
  • hwang9
  • 离线
  • LV4
  • 初级工程师
  • 积分:388
  • |
  • 主题:2
  • |
  • 帖子:134
积分:388
LV4
初级工程师
  • 2014-7-24 17:35:07
 
楼主,STM8的加密能力你觉得怎么样?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-24 18:41:48
 
STM8中有一个OptionByte,叫做ROP(Read Out Protection)就是读取保护位,把这个设置为ON之后,就无法读取出来数据了。可以使用STVP来进行设置。



下面是官方对STM8S加密性能的介绍,下图是英文版和中文译文版的内容:



forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-24 18:47:03
 
我如果把ROP设置为ON,下载时候会有这个提示:




之后如果再读取的话,就无法独取出来程序了。如下图:






STM8S的加密性能还是很不错的。
以上都是硬件加密。还有一个方法是用96bit ID号软件加密。把ID通过一定算法加密写入Flash或者EEPROM,在程序中读取ID用同样算法计算后和密文进行对比,正确的话再开始运行主程序,这样即使别人把你的程序读走了,在别人的MCU上面也是无法运行的。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-24 23:29:34
 
楼主在请教一个问题,在算PID算法的时候,电压误差和电流误差是简单累加一起吗?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-25 09:02:10
 
没有这样。如果是简单的累加在一起,那就是即恒压又恒流。那么永远达不到稳态。而且非满载时候会出问题。
我用的驱动方法是恒流限压,可以恒流是主环,其次加上限压。或者恒压是主环,其次加上限流。
我是采用的第二者,把电流超标的量转化为电压超标的量,如果电流小于标准值,则忽略。这样就实现了恒压限流。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-25 13:14:31
 
谢楼主,我刚开始接触这一块很多东西不懂,有些问题可能比较低级!
如果不考虑响应速度,那每次对PWM调整步长为1(加一或者减一),这样是不是会达到最高稳定度,而且PID也变成最简单,这要算出调整方向就行。
一般响应速度的确定,你主要基于那些因素?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-25 15:28:16
 
1:如果每次加1或者减1,那么最终会达到稳态的。但是环路反应会非常的慢。如果死区和精度设置的合适的话,那最终也会达到稳定的。
2:响应速度一般都是不同负载切换时候的过冲欠冲和恢复稳态的时间来大致反应的。假如一个电源为40V恒压,比如100欧姆负载和10欧姆的负载之间高速切换,用示波器观察输出的波形,当100欧姆负载切换到10欧姆负载的时候,肯定会有一个向下的欠冲,可能会跌落到39V或者更低,然后慢慢地又上升并稳定到40V。其间可能会有一些小的震荡,但是最终结果是稳定在40V的输出。这些参数当然是过冲和欠冲越小越好,恢复时间也是越小越好。
idd006032
  • 积分:395
  • |
  • 主题:15
  • |
  • 帖子:81
积分:395
LV4
初级工程师
  • 2014-7-25 21:31:36
 
楼主,能不能公开下源代码,给我们学下。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-25 22:21:51
 
除了PID算法之外的核心代码,基本都贴上去了。PID算法不太方便公开,不过你可以参考附件中的教程,都是经典的PID讲解. PID.docx
第五章 PID控制算法控制算法.doc

osc110592
  • 积分:147
  • |
  • 主题:2
  • |
  • 帖子:23
积分:147
LV2
本网技师
  • 2014-8-26 13:14:25
 
谢谢楼主分享
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-25 22:44:18
 
楼主不代有才,还很勤奋呀!
我提出这个问题,是基于这样的考虑。
如果你选择PWM的步长为+-1, 那么PID的计算就大为简化。第一I项可以不需要了,因为反正已经是最小了,没什么精差需要调;第二P项不需要复杂的计算,这要算个趋势是增加还是减少就行。
从前面结合来看,你的这个响应速度是有两部分决定的,第一就是PID计算出来的PWM调整量,第二就是计算PID本身MCU所花时间。前面你提到计算PID要1600~3000条指令。如果PID极大简化,也许只要几十条。所以第二部分速度也许会提高10陪,弥补+-1的缺点。
我刚刚开始接触这样,实际经验和理论多不足!可能我的理解是错的。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-25 23:11:42
 
我最开始调试硬件的时候,还没有加入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增大之后,由于后面有电感和电容,需要经过几个周期之后,才能够反应到输出电压上。当输出开路,或者轻载时候,这个延迟会导致过冲或者欠冲。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-26 12:43:33
 
谢楼主,让我学不少东西,那你后来的PID比最初的PI主要改进了那些方面?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-26 15:12:53
 
变速积分,积分分离。还有通过不断调试得到比例项速度上的提升。还有一个就是精度。最的精简的PI调节,PWM的精度始终是整数。加入PID调节器中的浮点积分项之后,可以把多次忽略掉的小误差累加之后再进行作用。这样最终的平均值将可以达到很接近ADC采样分辨率的水平。从而抵消由于PWM精度不高产生的精度问题。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-7-26 21:13:58
 
谢楼主,真的非常感谢,比我自己看书有用多了!
lczhangw
  • 积分:104
  • |
  • 主题:0
  • |
  • 帖子:2
积分:104
LV2
本网技师
  • 2014-8-22 16:52:23
 
楼主,能不能说得更详细一点,为什么是>>3 ?到底是采样量-目标量,还是目标量-采样量?采样量和目标量的值是怎么算出来的, AD采样结果寄存器里的值吗?什么时候>>3+1?什么时候>>3-1?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-22 22:16:48
 
不好意思,这里笔误,应该是目标量-采样量。>>3就是右移三位,相当于除以8,就是比例环节。如果目标量>采样量的话,就+1,否则-1。这个是实现积分效果。当然这个算法只是调试硬件时候,图方便省事使用的。最后还是要进一步的调试PID参数的。
采样量就是AD的读取数值。目标量就是设置的值。可以换算成最终电压来计算,也可以直接采用读取的数值来计算。我这个例子中,AD是10bit,就是0~1023.PWM是0~160.
lczhangw
  • 积分:104
  • |
  • 主题:0
  • |
  • 帖子:2
积分:104
LV2
本网技师
  • 2014-8-24 13:30:07
 
这样调试的精度怎么样呢?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-24 15:12:57
 
这样调试精度肯定不好。这种方法主要是调试硬件部分时候,为了方便快捷采用的。如果调试硬件时候就采用PID,那么如果出问题的话,不容易分析是硬件的问题还是软件的问题。
硬件调试完毕,再采用PID算法调试软件。
hwang9
  • hwang9
  • 离线
  • LV4
  • 初级工程师
  • 积分:388
  • |
  • 主题:2
  • |
  • 帖子:134
积分:388
LV4
初级工程师
  • 2014-7-25 14:56:10
 
谢谢楼主答复,必须的用ID号加密,看来我也要学下STM8了,PIC软件保护太头疼。
後會絠萋
  • 积分:8599
  • |
  • 主题:194
  • |
  • 帖子:2529
积分:8599
版主
  • 2014-7-25 21:04:44
 
唯一ID加密如同虚设,在程序里你总有个判断吧,判断新芯片ID=版权ID就运行
下去,别人破出文件来就可以去找这个判断,很容易被破解。
现在加密都没什么万无一失的方法,只是增加其破解难度而已
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-7-25 22:19:11
 
唐总所言极是,在汇编中,把比较位置的JE改为JNE就实现破解了。道高一尺,魔高一丈。再牛B的加密都有人能够破解。否则也不会那么多人用免费的盗版软件了。
在设计中,能够多加一层加密,被破解的几率就降低一点。硬件限制读取,软件再做一层限制,破解难度就提高了点。但是对于破解高手还是很没有防御力的。
hwang9
  • hwang9
  • 离线
  • LV4
  • 初级工程师
  • 积分:388
  • |
  • 主题:2
  • |
  • 帖子:134
积分:388
LV4
初级工程师
  • 2014-7-27 13:45:58
 
破解唯一ID我也考虑过怎么破解,就是找出eeprom地址位置然后删程序函数,这样就不会发生和EEPROM比较。到时候写程序再想办法把问题搞复杂点。
没有万能的加密,只有与产品价值相当的加密手法,提高破解成本,加大破解者的金钱付出,时间付出,技术专业度。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-3 16:09:54
 
可是这个破解的前提是要能够把程序读取出来啊。如果程序读取不出来,那么就无法进行汇编程序分析了。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-5 23:02:50
 
感觉加密的话,仅仅使用STM8S的 读取保护就足够了。把read out protection 设置为on,就无法读取出来MCU里面的程序了。程序都读取不出来,肯定就不易被破解了。
一川
  • 一川
  • 离线
  • LV6
  • 高级工程师
  • 积分:1071
  • |
  • 主题:31
  • |
  • 帖子:308
积分:1071
LV6
高级工程师
  • 2014-8-2 23:35:42
 
如果设计一个输入输出隔离的数字电源,还需要注意哪些方面?
比如变压器等
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-8 20:57:22
 
如果输入输出隔离的话,主要就是反馈不同了。因为隔离,所以一般需要使用光耦+TL431,而光耦的输出就已经是与基准电压比较之后的误差了。程序上有些不同,ADC采样得到的结果直接就是误差量(非隔离ADC采样的是 输出量,和设定值相减之后才是误差量)。
至于硬件电路还和模拟电源差不多。主要就是MOSFET的驱动电路,单片机的输出是0~3.3V,MOSFET开关应该是0~10V,不能直接加入图腾柱,需要有电平转换驱动电路。这个驱动电路在楼上的原理图中有,是一个比较成熟的单片机驱动MOSFET的电路。
god_z
  • god_z
  • 离线
  • LV2
  • 本网技师
  • 积分:123
  • |
  • 主题:0
  • |
  • 帖子:14
积分:123
LV2
本网技师
  • 2014-8-8 15:56:18
 
好牛逼啊
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-8 22:09:57
 


七、特殊的MOSFET驱动电路


由于单片机输出高低电平是0-3.3V,而MOSFET的驱动电压是0-10V,所以单片机到MOSFET需要一个驱动电路。
这个驱动电路不同于传统模拟芯片的MOSFET驱动,传统的MOSFET驱动电路一般都是图腾柱,但是MCU输出就不能直接接入图腾柱电路,需要一个特殊的驱动电路。
为什么不能直接采用图腾柱:因为图腾柱实际上是一个共集电极放大电路,只有电流放大能力,没有电压放大能力,输出电压略小于输入电压。如果输入高电平是3.3V,那么即使集电极的供电电压是12V,图腾柱的输出还是3.3V。这就是共集电极放大电路的特点。可是为什么模拟电源就可以使用图腾柱驱动呢?是因为模拟电源的控制器的输出本来就是10~20V的电压,通过图腾柱输出之后,还是10~20V。MCU则不同,MCU的输出是0~3.3V,如果采用图腾柱,那么输出还是在0~3.3V。
这里列出3个不同的驱动电路解决方案,各有千秋,各有所长。

方案1:
一个最简单的思路就是:“MCU输出->电平转换->图腾柱”。电路图如下图。
R2、Q1、R1构成共射极放大电路,作用是反相器。MCU输出首先通过Q1反相,如果MCU输入 3.3V高电平,则Q1饱和导通,Q1的集电极输出0.1V饱和导通压降。如果MCU输入0V低电平, Q1截止,Q1集电极是R1上拉为12V供电电压。这样一个反相器就实现了电平转换的功能,缺 点是反相的。后级一个图腾柱跟上去就OK了。优点是电路最简单。缺点是参数不好调试。



方案2:
为了解决上个电路反相和参数不好选择的缺点,本文使用的驱动电路是下图所示的电路。
当PWM输入3.3V高电平,Q2饱和导通,Q2集电极为0V,又导致Q3饱和导通,Q3集电极为Vcc=12V,通过D2、R5驱动MOSFET。当OWN输入低电平0V,Q2截止,Q3也截止,由于R4、R6的存在,使Q4导通,对MOSFET的G极进行放电。
下图是原理图和仿真的波形,可以点开大图查看。







方案3:
这个方案最复杂,但是性能最好,采用的是共发射极放大电路,饱和压降可以做到很小,甚至比图腾柱效果还要好。缺点就是元件数目多,输入输出反相,低电平有电流流过MCU。
R1(1)接入单片机PWM, R(2)2接入单片机供电电压3.3V, Q4(E)接入MOS驱动供电电压12V。
R2、R3阻值相同,对3.3V进行分压,Q2、Q3基极电压就是3.3/2V。
当PWM是3.3V高电平,Q3导通,Q3集电极电压=3.3V,导致Q1导通,Q1集电极电压=0V,对MOSFET进行放电。
当PWM是0V低电平,Q2导通,Q2集电极电压=0V,导致Q4导通,Q4集电极电压=12V,对MOSFET进行充电。
电路图和仿真结果如下图所示。







上三个图,各有优点和缺点,各有千秋。本方案采用的就是第二个图。
原理图和GS波形如下图所示:


司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-8-8 22:14:39
 
那个……很多人自从看了这个帖子都“跳楼”了
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-9 09:04:58
 
????
司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-8-9 09:07:48
 
目录:点击跳楼
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-9 09:11:36
 
楼主我搞硬件多,想学习这种数字电源应该看啥书,基础点的,我只会点C语言,希望楼主帮下忙,最后我想自己做个小东西出来,谢谢!
司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-8-9 09:24:20
 
C语言千万别看谭浩强的书,据说。楼主能给点推荐吗,我也是门外汉
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-9 09:30:43
 
C语言二级指令用书,什么高校都是这本啊,难道你还有什么,,,,求介绍
司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-8-9 09:55:14
 
这本书不行,别人告诉我的,介绍我也不懂啊,我知道这件事就是了
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-9 16:15:55
 
话说我学C语言时候,就是看的谭浩强的书,因为市面上铺天盖地的都是这本。。。。。不过这本书确实不好,明明很容易理解的概念,讲的很乱很复杂很高深。。因为我学C语言时候就看过这一本书和一些PPT,所以也推荐不了什么
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-11 11:13:16
 
我想看懂你的程序 但是有太多指令 我不晓得 啥意思 看什么书可以 知道这些东西了 谢谢了
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-11 15:20:10
 
那些指令什么的都是寄存器和库函数。在《STM8S微控制器参考手册》中,所有寄存器的功能与作用都写得很清楚。或者可以直接采用库函数来写,更加方便。
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-11 16:02:46
 
STM8S微控制器参考手册 跟我发一份匝
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-11 16:36:37
 
下面是下载链接,STM8S微控制器参考手册,有英文原版和中文版两个版本。
链接:http://pan.baidu.com/share/link?shareid=2767667242&uk=2382456120 密码:d9wh
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-9 14:31:33
 
控制汇编写会比较快,或者可以先选一个CPU研究一下。TI的C2000和PIC的dsPIC33F系列的CPU也可以(这些芯片做数字电源的资料也多)。当然ARM或者其他的也可以。环路设计可以看看z变换那些东西吧。
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-9 15:19:28
 
我压根现在是看不懂程序 主要是看啥资料和书 我想看懂程序 搞个demo板就好了
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-9 15:27:44
 
STM8的使用手册,楼主很多指令是对CPU的寄存器进行操作的。楼主提到的PID算法可以看看 《先进PID控制MATLAB仿真》(刘金琨)


forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-9 17:25:04
 
给大家分享一下先进PID控制MATLAB仿真》这本书以及源码:






链接:http://pan.baidu.com/share/link?shareid=2934041264&uk=2382456120 密码:re7d
注:书本为第二版,源码为第三版。
zuohuijuan11
  • 积分:954
  • |
  • 主题:16
  • |
  • 帖子:369
积分:954
LV6
高级工程师
  • 2014-8-13 14:21:52
 
楼主,真给力,非常感谢
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-13 21:55:18
 
这本书的第三版电子版找不到,上面的是第二版的电子版,不过第二版就是比第三版少了一些内容。这本书还是非常经典的。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-8-13 23:07:40
 
楼主我又来看的一下你的帖子,每次多能学到点什么,蛮营养的!我突然发现一个问题,你说你的PID采用的(本方案中的采用增量型PID算法)。但是从公式里看,增量型里已经没有积分了呀!也许我理解有误!
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-14 21:26:09
 
位置型和增量型的Kp、Ki、Kd 都是一样有的啊,增量型的输出结果是增加的量,位置型的输出结果就是最终的结果。
下面这两个公式就是位置型和增量型的计算公式,可以看出,三个参数都是有的。

hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-8-15 09:54:38
 
我知道系数是一样的,但是我说“积分项”没有了,就是那个累加项没有了,当然也许我理解有误
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-15 11:06:05
 
增量式就是取消了这个一直累加的过程,你看一下增量式的公式,是u(k)-u(k-1),取消了这个一直不停累加的量。
你说的那个“积分项”就是累加项哈,在位置式PID里面就是一个把所有误差进行求和,结果直接就是最终PWM得到的结果。增量式取得是本次误差与上次以及上上次之间的关系,得到的结果并不是最总的累加结果。
增量式得到的本次结果,加上上一次PWM的输出量之和,才相当于位置式PID本次计算的结果。
hyperion008
  • 积分:142
  • |
  • 主题:2
  • |
  • 帖子:18
积分:142
LV2
本网技师
  • 2014-8-18 16:40:43
 
我说的就是这个问题呀!我说现在积分项或者累加项没了,就不需要 变速积分什么的!不知道对不对!
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-18 17:32:48
 
增量式PID中,虽然没有累加项,但还是存在有积分作用的,积分作用并没有消除,依然存在。
增量式PID也可以使用变速积分、积分分离、积分限幅。积分分离和变速积分的作用对象是e(t),积分限幅的作用对象可以是e(t),也可以使∑e(t)。所以对积分的抗饱和改进算法,在增量式PID中还是有用的。




cn2011
  • cn2011
  • 离线
  • LV6
  • 高级工程师
  • 积分:439
  • |
  • 主题:13
  • |
  • 帖子:140
积分:439
LV6
高级工程师
  • 2014-9-16 22:28:55
 
谢分享
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-9 16:26:28
 
TI的C2000和PIC的dsPIC33F是DSP吧?DSP的速度那可是飕飕的、不过一般都用在大项目里面。像小功率的玩意,单片机就足够了,便宜、
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-9 16:22:29
 
有C语言基础,那么学STM8很快的。不知道你以前有没有51单片机的基础。如果有51单片机的基础,2天就可以学会STM8的ADC、定时器、UART的基本应用。环路反馈主要就是:ADC采样->ID算法->定时器输出(PWM。UART也很必要,在调试程序时候经常用到。
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-11 11:14:29
 
以前 学过51 单片机
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-11 15:18:35
 
以前还会51的话,那么上手STM8还是很快的。STM8可以使用库函数操作,也可以使用寄存器操作。库函数操作比较简单,但是速度慢。寄存器操作比较麻烦,但是速度快效率高。
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-12 11:23:51
 
我想自己搞个有源嵌位的电路做做 到时还得请教你 先画图

forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-13 22:04:02
 
不知道你说的是有源钳位正激吗?这个我还没做过。不过STM8S可以生成两路互补的PWM的(两路正好相反,一路高电平时候,另一路低电平,反之亦然)。
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-15 10:59:40
 
我现在要调试 一个NCP1282的 搞完 就搞数字的看看
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-15 11:10:04
 
NCP1282啊,这个做有源钳位效率应该不错的吧。请问搞数字的有源钳位你打算使用什么做控制器呢?也用单片机吗?
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-15 11:14:41
 
不行嘛?你这款可以嘛?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-17 23:02:49
 
我不太了解有源钳位,请问钳位MOS的时序和驱动应该怎么整呢?钳位的那个MOS不用悬浮驱动吧?
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-18 08:33:46
 
嵌位管 上嵌位 同驱动 然后来个向下平移 我搞的下嵌位硬件电路就是串联电容后并个二极管到地,二极管cathode驱动FET
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-18 08:34:50
 
是anode极 cathode极是接地的
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-18 11:27:52
 
你说的有源钳位是不是下面的图呢?


delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-15 11:23:46
 
不知道 你能不能推荐啥demo板的 我先搞块试试 然后就搞这个
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-17 23:04:06
 
数字电源的DEMO板子貌似不多,TI额官网上好像有一些数字电源的EVM板子,TI的EVM板子大多数都是DSP为控制器的。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-17 23:46:30
 
可以试试PIC16HV785,本人的定义它是一个可编程的模拟器件。用它设计电源的方法和模拟电源类似。
那个是数模结合,但是PIC自家的开发环境觉得不好用。
之前也买个dsPIC的数字电源开发板,后来因为开发环境难用就放在一旁了。如果有那个开发板,一般的几个控制方法都可以实现(峰值电流控制,电压环路控制,平均电流控制),可惜他给的例程只有电压单环控制。大部分代码是用C语言,控制环路还是使用PID算法(使用汇编编写)。另外PIC的那个官网上支持支付宝
PIC的资料相对于TI或者ST的来说比较少。不过PIC的DSP比TI的便宜一些。
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-18 08:26:09
 
电源demo板这么难买?我想搞个学习好用的,至于价格现在不考虑,不知道这个不同的会有影响不。好调试,好开发就好了。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-18 08:43:53
 
pic的好买,型号DM330017,这个板调试还是比较方面,上面已经有仿真器,只是资料较少,公开的数字电源控制代码不多。
这个板只有buck和boost的控制,其中buck是同步降压的结构,也就是续流二极管使用开关管代替。
实在不行可以自己做一个玩玩,我自己也DIY一些,有些还是洞洞板的了。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-18 11:22:41
 
PIC单片机据说抗干扰性能很强大,更适合EMI比较严重的电源电路。我见好多人也都用PIC做数字电源。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-19 15:59:35
 
传说中是的,但没有用过PIC的IC做过项目。玩过他们的开发板,感觉设计的不错,没有出现过死机之类的问题,但开发环境比较难用(C30开发)。听说他们最近出了个新的编译器,或者比现在的好用。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-19 18:33:28
 
一般来说,只要不做高压电源,在PCB布线时候注意一下,单片机一般都不会死机的。看门狗也有点用处。
司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-8-19 22:46:09
 
我就是做高压的,哈哈哈
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-20 00:10:34
 
哈哈,有多高呢?高压的电源应该是用在一些特种设备上的吧
司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-8-20 09:17:31
 
几万伏到几十万伏,各种特殊设备啊,真空管啊,高压电容充电啊
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-20 09:37:17
 
哇,都可以做个电磁脉冲炮了
司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-8-20 16:19:42
 
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-20 17:16:14
 
据说瑞萨的MCU抗干扰能力特别强,在被击穿之后,仍然可以正常工作
tianyuandifang1980
  • 积分:256
  • |
  • 主题:0
  • |
  • 帖子:28
积分:256
LV3
助理工程师
  • 2015-4-21 17:31:41
 
?有什么依据?
powercheyne
  • 积分:1394
  • |
  • 主题:78
  • |
  • 帖子:457
积分:1394
LV6
高级工程师
  • 2014-8-23 22:34:58
 
大师,能否给个链接,想买个数字电源开发板。有详细的讲解最好。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-24 00:01:21
 
http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=DM330017
这有一个比较相对便宜的。不过那个资料比较少。链接网址有相应的资料,可以先下载看看。里面几个源代码(buck和boost的控制),PID的算法电压环路控制,中断用汇编编写。
其他的控制算法官方没有提供。这个板可以用加入电流控制环路,但算法要自己设计。
那个板我买过一块,给了钱之后要一个月才到(可以用支付宝给钱)。
delig
  • delig
  • 离线
  • LV6
  • 高级工程师
  • 积分:1081
  • |
  • 主题:19
  • |
  • 帖子:245
积分:1081
LV6
高级工程师
  • 2014-8-9 10:02:04
 
求介绍
zhangguosong4
  • 积分:539
  • |
  • 主题:34
  • |
  • 帖子:140
积分:539
LV6
高级工程师
  • 2014-8-11 08:28:05
 
不错,学习了。。。
aa20897
  • 积分:7201
  • |
  • 主题:43
  • |
  • 帖子:1613
积分:7201
LV7
实习版主
  • 2014-8-13 06:49:19
 
虽然住在2楼,兄弟我还是不大敢点击啊!
xinglucao
  • 积分:125
  • |
  • 主题:1
  • |
  • 帖子:8
积分:125
LV2
本网技师
  • 2014-8-17 14:27:08
 
学习了!受教了。。。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-17 22:58:54
 
技术含量不高,论坛里数字电源比较少,旨在抛砖引玉,共同学习~
aoqzsc
  • 积分:145
  • |
  • 主题:3
  • |
  • 帖子:15
积分:145
LV2
本网技师
  • 2014-8-19 00:10:21
 
***广告已经删除***
aoqzsc
  • 积分:145
  • |
  • 主题:3
  • |
  • 帖子:15
积分:145
LV2
本网技师
  • 2014-8-22 22:50:14
 
***广告已经删除*** [email=aoqzsc@163.com][/email]
helvqiu
  • 积分:381
  • |
  • 主题:9
  • |
  • 帖子:95
积分:381
LV4
初级工程师
  • 2014-8-19 23:06:23
 
楼主这个boost电路是采用平均电流模式控制吗?如果单纯用电压模式做boost电路能稳定不?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-20 17:22:23
 
这个电路不是使用的电流模式,使用的电压模式控制的。加入了恒流和限环节。boost电路单纯用电压模式控制可以稳定运行的。
helvqiu
  • 积分:381
  • |
  • 主题:9
  • |
  • 帖子:95
积分:381
LV4
初级工程师
  • 2014-8-20 18:44:09
 
BOOST电路不是有右半平面零点吗?这个要如何解决啊?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-20 19:03:06
 
反馈环路用的PID进行调节的,没有使用传递函数进行调节。
PID调节的物理意义比较清楚,调试比较方便。传递函数调节的话更加准确,但计算麻烦。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-20 19:40:29
 
用PID确实不好定量地处理右边平面的零点,或者可以减小积分系数使PID构成的零点频率高一些,环路带宽降低一点躲开右边平面零点,当然这会牺牲一些动态性能。如果占空比D不是太大,那个右边平面的零点也不容易出来捣乱
helvqiu
  • 积分:381
  • |
  • 主题:9
  • |
  • 帖子:95
积分:381
LV4
初级工程师
  • 2014-8-20 18:45:15
 
难道是工作在DCM模式?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-20 19:01:14
 
电流纹波率r=0.5,工作在CCM模式的。
helvqiu
  • 积分:381
  • |
  • 主题:9
  • |
  • 帖子:95
积分:381
LV4
初级工程师
  • 2014-8-20 19:53:15
 
r=0.5应该是临界电流模式,能否把主函数的传递函数和补偿的传函贴出来?
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-20 21:20:55
 
r=0.5是CCM,r=1才是临界模式。r=ΔI/Iav。我在设计时候没有考虑和计算传递函数,直接用PID进行调试PID参数的。
WNC994339268
  • 积分:104
  • |
  • 主题:0
  • |
  • 帖子:2
积分:104
LV2
本网技师
  • 2014-8-21 03:16:07
 
敢问楼主的单片机电压采样,工作过程中单片机会不会发热严重,我这边单片机发热严重,应该怎么解决
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-21 11:38:32
 
肯定不会发热啊,STM8S的工作时候的电流也就十几毫安的。
不知道你用的是什么型号的单片机,你测量一下单片机Vdd的电流是多少,符合不符合datasheet里面的值。我感觉多半是你电路设计的有问题。
WNC994339268
  • 积分:104
  • |
  • 主题:0
  • |
  • 帖子:2
积分:104
LV2
本网技师
  • 2014-8-26 17:22:37
 
后面仔细查了下,发现确实是电路设计的问题,我们整的是BUCK电路,MOS放的是下端,后面的单片机采样电压估计没对地,而且波纹很大。但后面MOS换上端单片机还是烧了一块,且采样电压有做过压保护,这个问题搞得我们头大
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-26 19:01:42
 
BUCK电路MOS在下端,你用的是浮地BUCK吧。浮地BUCK不能直接进行输出采样反馈。浮地BUCK有两种方法采样。
1:两路AD采样(输出正极分压采样,输出负极分压采样),最后相减即为最终输出值。
2:采用镜像恒流源进行反馈,输出电压转为电流,然后再转为电压。
3:采用光耦进行反馈。
weilujun85
  • 积分:223
  • |
  • 主题:2
  • |
  • 帖子:13
积分:223
LV3
助理工程师
  • 2014-8-21 12:57:00
 
蒙面女侠
  • 积分:110
  • |
  • 主题:0
  • |
  • 帖子:3
积分:110
LV2
本网技师
  • 2014-8-21 14:44:06
 
楼主厉害
zhangguosong4
  • 积分:539
  • |
  • 主题:34
  • |
  • 帖子:140
积分:539
LV6
高级工程师
  • 2014-8-25 07:58:46
 
不错,学习了。。
dengzz2005
  • 积分:102
  • |
  • 主题:0
  • |
  • 帖子:1
积分:102
LV2
本网技师
  • 2014-8-25 21:39:51
 
采用STM8S003F3P6为核心,利用单片机实现pfc,非隔离直接用单片机pwm控制做led路灯恒流电源可行吗
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-26 16:51:42
 
非隔离PFC,是单级的吗?采用什么拓扑呢?
浮地BUCK应该比较可行,可以用一路AD采集整流后的馒头波,一路AD采集反馈。PWM的输出可以实时跟随AD采样电压,也可以内置正弦表,各有千秋。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-8-26 20:07:15
 
可以看看PFC的单周期控制算法,那个算法相对简单一些
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-8-31 19:11:17
 
PFC单周期控制算法也有不少种类,网上的算法大多是针对DSP设计的,不知道STM8做PFC会不会吃不消。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-9-2 11:12:18
 
这个就不好说了,要看用多少的开关频率和采样频率。用汇编来搞,或者也能应付。单周期控制,大运算量的应该就一个PI调节器,也不用做除法,相对于过去的PFC控制应该是简化了一些了
司马仲达
  • 积分:15160
  • |
  • 主题:285
  • |
  • 帖子:5356
积分:15160
LV10
总工程师
  • 2014-9-2 11:15:47
 
单周期控制 比平均电流模式控制简单的多吧?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-9-2 14:44:10
 
单周期控制技术,检测电流可以是电感峰值电流、电感平均电流、开关峰值电流或
开关平均电流,还可以是最小电感电流或最小开关电流。单周期控制应该是可以省
掉一个乘法,和输入电压的采样,当然单周期控制还要一个积分器,那个积分器
或者可以用一个计数器代替吧。单周期控制那个具体我就没有用做过数字器件做
过。模拟的芯片就用过,芯片外围的确简单一些。用数字芯片也应该一样,可以
省掉一次采样和计算一次乘法。


forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-2 17:10:18
 
检测电感、开关峰值电流应该不好检测吧?一直不停采样比较?还是……
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-9-2 18:27:03
 
峰值电流控制有两个方法:第一个在之前上传过一个TI的应用文件提到,那个就是使用模拟比较器的。另外一个方法是预测电流的方法。这个方法在《开关变换器数字控制技术》(周国华,许建平)这个书上有比较详细的论述。这个方法简单来讲就是计算出电流的斜率,然后预测经过T时间达到峰值。这个时间T通常就是占空比D与开关周期Ts的乘积。
那本书讲到的方法基本都是关于数字电流环路的控制和电路纹波控制,用的方法是大同小异,可以说都是用预测法。这本资料讲也有不全面,值有CCM模式的控制,DCM部分没有深入。由于讲到CCM自然也详细讲述各种出现次谐波震荡的条件。有些推导也有趣,数字的平均电流控制也有可能出现次谐波震荡。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-2 20:26:46
 
非常感谢你的耐心讲解,我还是有一些疑问。使用模拟比较器怎么检测峰值电流呢?如果采用预测电流法的话,应该还要先采样很多电流值,计算出斜率才能够计算出峰值电流的吧?
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-9-2 21:21:14
 
使用模拟比较器,其实很类似于模拟的 方法,只是电压环使用PI或者2p2z的作为补偿吧。如图
至于预测电路的方法,关键有两点,第一点是求出斜率,第二点是计算到达峰值的时间。求斜率我知道的有两个方法(当然或者有其他的),知道两个电流值采样值,和采样间隔(采样点必须在开关管导通内的时间,而且是同一开关周期)。两个采样值相减除以时间间隔就知道斜率k。另外要求到达峰值所用的时间,这个通常需要配合采样点的信息。如果采样电流的采样点,通常有一个是在开关导通时间的中点(sample1),所需要下一个开关周期导通时间就是T(n+1)=2*(Ipk-sample1)/k。这里的期望电流峰值Ipk实际就是PI或者2P2Z的输出值。
至于另外求斜率的方法,可以看看那本书。这方法计算量有些大。至于电感量存在的误差会不会对控制造成影响,那个资料的推导结论是影响不大。这本书的许多内容是IEEE上面的,最重要的参考文献应该是Predictive digital current programed control。
预测法我自己没有动手做,楼主有兴趣可以试试,这个方法应该是可行。







forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-3 09:45:10
 
如果占空比非常小的时候,Ton也非常小,如果此时还要在Ton时间内采样两个点,有点不太可行吧?
每个周期在Ton时间内采样2个点,并精确计算出时间间隔,并进行减法除法乘法运算,估计这个STM8无法完成。STM32也有难度。DSP应该可以。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-9-3 10:11:16
 
那个的确是个问题,轻载时候也可以只用电压环路控制(当然会损失一下响应速度),还有一点,如果输入和输出电压变化不快可以间隔几个开关周期才计算斜率。当然也可以像那本资料上讲的方法。最近ST也有一个新的单片机也做电源,STM8的内核。不过现在还不能买等到。PFC的评估板已经有了。不过他的控制是基于有限状态机的,而并不在于STM8的内核计算。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-3 16:04:36
 
如果间隔几个开关周期计算斜率的话,也会损失响应速度吧。如果使用电压模式来控制的话,应该会更简便一些。电流采样通过一个比较器进行峰值过流保护。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-9-3 21:19:41
 
MCU或者DSP使用峰值电流控制是不太好实现。目前觉得TI的方案会可行一点。其他的需要多次采样,而且要计算除法,而且在隔离场合,有时候采用也是比较困难。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-4 09:34:38
 
你说的是TI的DSP还是TI的专用数字电源芯片嗯?相对于其他的控制器有哪些优势吗?能不能推荐几个型号呢。以前没有接触过TI的这些IC。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-9-4 09:46:45
 
UCD系列那些是专用,28027 或者28035,这两做电源个还不错。如果说有什么优势,PWM模块做得很细致,目前为止见过的比较先进的PWM模块之一。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-4 12:11:47
 
以前见过别人用28000系列做过,据说是有HRPWM。就是价格挺贵的,一个片子要30+元。
shiyongxie
  • 积分:725
  • |
  • 主题:3
  • |
  • 帖子:147
积分:725
LV6
高级工程师
  • 2014-9-4 13:02:13
 
28027买过,18块一个(淘宝价)
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-2 17:09:05
 
使用汇编应该好些,汇编比C语言执行起来会快一些。
hugelaser
  • 积分:360
  • |
  • 主题:7
  • |
  • 帖子:124
积分:360
LV4
初级工程师
  • 2014-9-3 16:12:26
 
楼主,双环控制有做过么,能否展开谈谈。
forget
  • forget
  • 离线
  • LV8
  • 副总工程师
  • 积分:2448
  • |
  • 主题:41
  • |
  • 帖子:654
积分:2448
LV8
副总工程师
  • 2014-9-4 09:35:38
 
你说的是电压外环电流内环吗?这个难度比较大,还没有做过。用单片机不太好实现。
gejianxin1106
  • 积分:121
  • |
  • 主题:1
  • |
  • 帖子:5
积分:121
LV2
本网技师
  • 2014-9-2 09:43:49
 
不错

aivioly
  • 积分:162
  • |
  • 主题:0
  • |
  • 帖子:10
积分:162
LV2
本网技师
  • 2014-9-3 21:04:28
 
mark.
zhangguosong4
  • 积分:539
  • |
  • 主题:34
  • |
  • 帖子:140
积分:539
LV6
高级工程师
  • 2014-9-8 08:55:27
 
不错,来学习了。。
jklsky
  • jklsky
  • 离线
  • LV4
  • 初级工程师
  • 积分:379
  • |
  • 主题:1
  • |
  • 帖子:86
积分:379
LV4
初级工程师
  • 2014-9-11 17:29:20
 
来学习了.有收获
jjjyangjjj
  • 积分:355
  • |
  • 主题:32
  • |
  • 帖子:77
积分:355
LV4
初级工程师
  • 2014-9-12 17:17:16
 
mark!
xiaomiking
  • 积分:530
  • |
  • 主题:6
  • |
  • 帖子:122
积分:530
LV6
高级工程师
  • 2014-9-14 11:59:14
 
nice!之前一直有关注数字电源方面的东西,向楼主学习!