wkhn
认证:优质创作者
所在专题目录 查看专题
通向数字电源之路——初学者入门(1)
通向数字电源之路——初学者入门(2)
通向数字电源之路——初学者入门(3)
通向数字电源之路——初学者入门(4)
通向数字电源之路——初学者入门(5)
通向数字电源之路--进阶(1)
作者动态 更多
一种采用CAN总线方式升级F28035芯片Flash的方法(三)
05-13 15:31
一种采用CAN总线方式升级F28035芯片Flash的方法(二)
05-13 15:31
一种采用CAN总线方式升级F28035芯片Flash的方法(一)
05-13 15:31
STM32G4系列MCU——数字电源入门(4)
2023-03-14 10:46
STM32G4系列MCU——数字电源入门(3)
2023-03-13 20:05

通向数字电源之路——初学者入门(1)

当今时代,电力电子数字化的浪潮正在以不可阻挡的趋势席卷以前的传统的模拟电源行业,因此,如何从模拟电源向数字电源转换,是每个模拟工程师需要认真考虑的问题。

数字电源有配置灵活,可以实现多种算法的集成,反馈不易受干扰,好加密等优点,但也正是这些数字电源的特点,成为横亘在模拟工程师前面的巨大障碍,导致许多工程师还没开始就已放弃。数字电源与模拟电源最主要的区别在于控制环路和采样环节是数字化的。因此对于数字电源的设计,我们就主要关注反馈控制环路如何设计,被控量采样ADC是如何处理数据的。本文不会堆砌数字电源的概念和公式,而是尝试用一种看得见摸得着的方法来展示数字电源倒底是如何工作的。使模拟工程师建立起对数字电源的感性认识,而不是因为面前困难被劝退。

虽然本文说是初学者入门,但是初学者是指数字电源的初学者,而不是电源的初学者,在此,笔者需要强调一下读者要具备的一些基础知识:

1)要了解buck电路原理。下面的例子中会用到这个电路,相信读者都已经具备了这样的知识。

2)明白反馈的类型,如电压型、峰值电流型、平均电流型。不明白可以网上查查相关的概念,很容易明白。例子中用到的是峰值电流型反馈。

3)知道如何判断模拟电源反馈控制环路稳定性,了解诸如“穿越频率”“幅值裕度”“相位裕度”的概念。

4)要会C语言。这是数字电源,要写程序的,不会C语言就别往下进行了。这里的“会”,其实并不要求多“深”,但最少要会“条件语句”、“循环语句”,知道数据类型”char“、“int”“数组”应该就够了。本例中,自己亲自动手写的代码不会超过30行,所以这个门槛还是很低的。至于“指针”等更深的内容,会更好,不会也无所谓,本文中还用不到这些。

下面就以dspic33系列dsp单片机为例开始讲解。对于数字电源的学习来说,需要准备一个开发板,“Digital Power Starter KIT”的开发板,就是面向初学者的。如图所示:

正面

背面

该开发板从硬件到软件设计的很不错,但是对于初学者来说还是有几方面问题:

1)数字电源的初学者应当将所有注意力聚焦在,反馈控制系统和采样环节如何实现数字化这些方面上,而不是被LCD显示和通讯等非数字电源必要功能所分散注意力。

2)该开发板软件内嵌汇编语言,需要对CPU内核指令有较深了解,对初学者尤其是对没有任何编程基础的模拟工程师并不友好。

3)该开发板软件并不是通过代码生成器自动生成的,要手动编写外设的配置文件,这对初学者来说,编程工作量较大,容易出错,而且比较分散精力,不容易抓住问题的重点。

4)比较贵。老外做的东西嘛,成本高,个人感觉不值那个价。对于一个硬件工程师来说,让别人从硬件上赚我们的钱始终是令人不舒服的一件事。最大程度上降低我们的学习成本,应该把钱花到刀刃上。

5)全英文,笔者完整看了一遍官方自带的帮助文件,挺长时间的,虽然是原汁原味,但对英文不太好的读者来说,看起来有些费劲。英文好的读者就当没看见好了。

基于上面几点的原因,笔者在这个开发板的基础上,根据手中现有的元器件,按照自己的想法重画了一个开发板。下图所示:

官方的开发板和后面笔者画的开发板原理图在本文的附件中提供。

笔者设计的开发板主要由以下几部分组成:

1)Buck电路:输入电压12V-20V,输出4V / 1A。

2)Boost电路:输入电压12V-20V,输出20V / 0.5A。

3)CAN通讯和串口通讯。

4)2路温度测量和开关。

对于初学者来说,电源的数字化最主要的是:1.被控量采样的数字化。2.反馈补偿器的数字化。3.PWM发生器的数字化。4.峰值电流比较器的数字化。而主功率变换电路和传统的模拟电源没有区别。如下图所示,就是数字控制环路的简图,采用的是峰值电流型控制方式。我们的主要工作就是设计数字补偿器的算法、设置正确触发ADC采样的时间、数字PWM工作方式、dsp内部比较器的配置等。

现在先以BUCK电路为例,介绍如何一步一步搭建数字电源的控制系统。

本文中用到的dsp单片机的型号是dspic33ep128gs806。用到的开发环境是MPLAB X IDE v5.35,其中包含mcc插件是MCC v4.0.2,这里的mcc插件是用来自动生成外设配置代码的,能大幅减少了程序员的工作量,另外需准备一个PIC烧录器,笔者用的是PICkit3。

1)打开MPLAB X IDE软件,先新建一个工程文件,然后一步一步配置

按“Finish”后,在主界面中,打开MCC插件,单击红圈位置。

2)配置系统时钟

MCC启动后的界面如下:

在“1”中,将dsp中可以用到的外设通过绿色的“+”号添加到“2”中,可以看到已经添加了一些外设了。在“2”中的System下,点击“System Module"会出现"3"窗口。

首先配置dsp的系统时钟

我们用的外部振荡器是12MHz的晶振,将dsp的系统时钟配置为60MHz,PWM和ADC需要用“Auxiliary Clock",配置为240MHz的时钟频率。

3)配置数字PWM

首先要将”Enable PWM"勾选上。因为在硬件上,我们是用PWM1来控制BUCK电路的mos管的,所以有关buck电路的PWM参数要在这里配置。选择了“独立时基模式,独立占空比,边沿对齐”PWM时基工作模式,至于这是什么意思,那就需要读者自己查看器件手册了。通过配置相关的寄存器,就把PWM的周期设置为10us(即100KHz工作频率),最大占空比设为45%。

接下来继续配置PWM1中剩下的功能。

“1”PWM的I/O输入输出脚要配置成“互补模式”。“2”配置PWM的限流源为CMP2,即dsp内部比较器2。因为在BUCK电路中用CMP2做为限流比较器。“3”需要配置当比较器2产生限流状况时,同步降压电路中两个MOS管的工作状态。从配置位中可以看出,当电流互感器的电流超过设定后,buck电路主MOS管处于低,续流管处于高。“4”最后设置互补驱动前后沿的死区时间,前后沿都设为530ns。因为本例中用到的驱动芯片IR2181延时较大,为了避免主开关管与同步续流管直通,所以死区设置较大。

令外还有一项非常重要的配置需要讲一下,就是主MOS管电流采样时的“前沿消隐”。因为在主MOS管开通的瞬间,主MOS管电流会出现较大的尖峰,如果不进行“消隐”会干扰电路的正常工作。如下图,点击“Registers”,相应的“CLLENEN”和“PHR”设置成“enabled”。这两项是告诉PWM发生器,在限流输入情况下且PWM输出高电平的上升沿时,PWM要进行“消隐”

至于要消隐多长时间,要由下面的寄存器来设置,先设一个较大的值,实际工作中再进行调整。

至此数字PWM的所有相关的设置工作全部完成。

4)配置ADC

ADC采样比较简单,如图:

“1”使能ADC,“2”选择ADC采样时间,越短越好。这个值极大影响数字控制环路的稳定性,这里选20ns。“3”输出电压采样是连接到DSP的AN5通道,所以选“AN5”。“4”要设定ADC的“触发源”。这里用“PWM1 Primary Trigger"

"5"告诉dsp在ADC采样完成后,要进入中断处理。

5)限流比较器

“1”使能比较器,“2”选择采样电流是通过比较器哪个引脚进入比较器的,在硬件中是通过CMP2A进入比较器的,所以选CMP2A。“3”使能比较器的数字滤波功能,抗干扰。

6)代码的自动生成

      所有用到的外设都设置完成后,没有提到的部分就都用默认值。然后自动生成代码。

如图,单击“Generate”,生成的代码的结构如下:

我们就不必关心其它的问题了,专注于控制环路算法的编写。

7)控制环路算法

      其实数字电源的控制环路的算法有很多,在本例中,就以最经典的PID算法来讲讲。本例中只是用到了PI补偿器,就能使电路稳定,并没有加入微分的部分。数字电源的环路算法都是在ADC中断中进行计算的,所以双击“adc1.c”文件。如图

在“ADC1_channel_AN5_CallBack”函数中写PI算法。该函数是一个回调函数,即ADC完成采样后,会自动执行该函数里的指令。在写算法前,需要定义几个用到的变量。

u_N为补偿器输出的当前值,u_P为上一次补偿器输出值,e_N为误差的当前值,e_P为上一次的误差值,setpoint_buckV为输出电压的设定值。ADCBUF5就是ADC采样的输出电压的值,是数字量。所以:

                     

根据AN5通道的ADC采样是12位的采样率,且ADC的参考电压为3.3V。所以根据setpoint_buckV的值可以算出buck电路的输出电压为:

PI算法的公式如下:

按照上面的公式,写程序。

有一点要说明的是,Kp和Ki一般为小数,而我们的dsp程序为快速完成算法的计算,变量都定义的是整型数,而不是用浮点型数据类型。所以为了能用整数来计算小数,我们就先将Kp、Ki和u_P都左移13位,计算完成后再右移13位,这样就能即保持一定的精度,又能以较短的时间完成环路的计算。

通过反复调整Kp和Ki的参数(具体方法后续文章中再阐述),就能使环路达到稳定,最终Kp=3.72  Ki=0.0977。

当算出了当前的u_N,并做最大最小值限定后,直接更新CMP2DAC这个寄存器即可,这样就能将u_N这个数字量通过数-模(DAC)转换变成模拟量,这样才能与MOS管电流的采样模拟值做比较,完成控制环路的闭环。

至此,数字电源控制环路设计工作全部完成。可以看到我们手动写的代码只是在ADC中断中写的PID算法的公式,就完成了整体的数字控制环路。非常简捷直观的展示了数字控制环路的工作流程。

用网络分析仪测量该电源的控制稳定性。额定输入电压15V,输出电压4.1V

输出电流1A(穿越频率1.2KHz,相位裕度83.5°。)

输出电流0.5A(穿越频率3.1KHz,相位裕度81°。)

输出0.1A(穿越频率3.1KHz,相位裕度73°。)

输出0A(穿越频率2.3KHz,相位裕度82°。)

同步降压电路的驱动波形(因为所选驱动芯片的原因,驱动速度较慢,不得不将死区设得的比较大。)

1A负载条件下输出纹波(峰峰值215mv)

负载阶跃响应

输出电流1A减到0A(向上过冲90mv,恢复时间945us)

输出电流从0A加到1A,几乎测不出变化。

总结:

通过上面讲述的过程,向读者大致展示了数字电源控制环路的设计方法,使读者对数字电源有了一个具体的认识,激发初学者的兴趣。当然,其中的一些具体的技术细节并没有详细说明,有时间会在后续文章中阐述。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
本篇所含全部资料,点击此处留下邮箱我会发给你
资料明细:MPLAB Starter Kit for Digital Power Design Package-v2015-12-15.zip为官方开发板的原理图,不包含PCB板图。内含软件 1.rar为笔者设计的开发板原理图 DigitalPower_kit_buck.X.rar为与笔者的开发板配套的软件
觉得内容不错的朋友,别忘了一键三连哦!
赞 32
收藏 45
关注 518
成为作者 赚取收益
全部留言
0/200
  • dy-qGYtE6Wn 11-20 10:52
    老师,能不能发我一下资料,谢谢! 16****@****.com
    回复 1条回复
  • dy-aaDYlngR 11-12 14:47
    老师,能不能发我一下资料,谢谢! 10****@****.com
    回复 1条回复
  • dy-vP8ehbSN 10-29 16:11
    老师,能不能发我一下资料,谢谢! 32****@****.com
    回复 1条回复
  • dy-mZnQxSh5 10-27 16:35
    老师,能不能发我一下资料,谢谢! 15****@****.com
    回复 1条回复
  • dy-zzvsD8He 10-25 20:36
    老师,能不能发我一下资料谢谢1727829849@qq.com
    回复
  • Jzz 10-17 21:48
    内容已删除 96****@****.com
    回复 1条回复
  • Jzz 10-17 21:48
    老师,能不能发我一下资料,谢谢! 96****@****.com
    回复 1条回复
  • dy-7F7wGPMm 09-13 00:45
    老师,能不能发我一下资料,谢谢! 13****@****.com
    回复 9条回复
  • 耀眼的黑夜 09-03 06:06
    老师,能不能发我一下资料,谢谢! 28****@****.com
    回复 1条回复
  • 无双叶子 07-21 22:38
    老师,能不能发我一下资料,谢谢! 84****@****.com
    回复 1条回复
  • dy-AhSQjzKp 07-01 15:14
    老师,能不能发我一下资料,谢谢! 77****@****.com
    回复 1条回复
  • lxWAQ 06-17 15:57
    老师,能不能发我一下资料,谢谢! 84****@****.com
    回复
  • refale 05-27 06:44
    老师,能不能发我一下资料,谢谢! 03****@****.com
    回复 1条回复
  • refale 05-27 06:44
    老师,能不能发我一下资料,谢谢! 03****@****.com
    回复 7条回复
  • dy-QxMknple 05-07 21:33
    老师,能不能发我一下资料,谢谢! 22****@****.com
    回复 1条回复
  • 执白 03-13 16:13
    老师,能不能发我一下资料,谢谢! 16****@****.com
    回复 1条回复
  • dy-1EXKtkmY 03-12 08:41
    老师,能不能发我一下资料,谢谢! as****@****.com
    回复 1条回复
  • 炎热的夏天 03-01 11:04
    老师,能不能发我一下资料,谢谢! 25****@****.com
    回复 3条回复
  • 老师,能不能发我一下资料,谢谢! 10****@****.com
    回复 1条回复
  • dy-BS35FJJF 02-02 19:30
    老师,能不能发我一下资料,谢谢! 12****@****.com
    回复 1条回复