最近,有一个项目,要求仿照Intersil公司的isl6753的功能,用dsp芯片做一个数字电源,为此笔者选用了TI的TMS320F28035这颗芯片做了一台初始样机。
在笔者以前的文章中,介绍过用28035这颗芯片做的数字电源,所以这里就不再过多的阐述28035的技术细节。isl6753是一颗固定频率的谐振软开关功能的PWM调制芯片。在做DC-DC电源时,驱动一个全桥DC变换器。左右桥臂的上桥臂都是固定50%占空比,且互补输出。左右下桥臂为PWM推挽模式输出,通过调节脉冲宽度(即占空比)来调节输出电压或电流。再具体的内容请自行搜索isl6753相关的资料。下面是原理图的局部,主要是全桥变换器部分和dsp芯片的控制部分。
电源参数:
输入电压:270VDC(±10%)
输出电压:324V(电压0V至324V可调)
输出电流:0-5A(可稳流输出)
稳流精度:±2%
稳压精度:±1%
开关频率:80KHz
控制模式:峰值电流控制
负载类型:超级电容5F。
28035片内资源分配:
输出电压采样:ADCINA0
输出电流采样:ADCINB0
左桥臂峰值电流比较器:COMP1A
右桥臂峰值电流比较器:COMP2A
左上桥臂驱动(UL):PWM1A
左下桥臂驱动(LL):PWM1B
右上桥臂驱动(UR):PWM2A
右下桥臂驱动(LR):PWM2B
LED指示灯:GPIO24
比较器1的输出指示:GPIO20
比较器2的输出指示:GPIO21
系统示意图如下:
本数字电源程序设计中最主要的工作就是设计四路PWM的发波逻辑。因为28035的PWM配置非常灵活,所以要实现与isl6753相同的功能可能就会有许多种不同的PWM配置方案。下面介绍一下笔者的配置方案。
左边的上下桥臂用PWM1驱动,右边上下桥臂用PWM2驱动。
PWM的时基的计数模式采用上下方式。
在向上计数过程中,用PWM1的CMPA事件来做为下桥臂开通的起点,通过调节CMPA的位置,可以调节上下桥臂的死区时间。
CMPB用来控制下桥臂的占空比,以达到控制输出电压和输出电流的目的。CMPB的值不能超过PRD,所以最大占空比不超过50%。
PRD事件做为上桥臂的开通起点,ZERO事件做为上桥臂导通的终点。上桥臂刚好为50%占空比,且不需要调节占空比。
PWM2的配置与PWM1相同,只是PWM2要做为PWM1的从属,与PWM1同步,且做180°的相移。
下面开始程序的编写:
首先打开CCS,笔者用的是CCS7.4.0。导入TI的数字电源程序模板。
导入成功后,先进行28035引脚的分配和外设时钟的使能。
将GPIO引脚相应的PWM功能开启
为了便于观察比较器的输出是否正确,将比较器的输出使能。
该电源需要急停开关功能,用于手动控制电源的启动与停止。将该功能分配到GPIO29,当该引脚为高电平时,电源停止工作,低电平时,正常输出。
在ProjectName-CLA_Shared.h文件中包含程序中用到的外设头文件。
1)修改外设配置文件
因为并没有一个适合ISL6753的PWM输出逻辑的配置文件,所以首先拿一个比较相近的PWM配置文件进行修改。原程序框架中的PWM_2ch_UpDwnCnt_Cnf.c比较适合拿来修改。
同时要修改函数名。
PWM配置文件改完后,用宏语句的形式更新占空比,在工程文件夹中新建一个头文件:PWM_update.h。
因为是电流峰值控制,所以此处的下桥臂的占空比其实是下桥臂的最大占空比,下桥臂的实际占空比是由模拟比较器的输出通过控制PWM的TZ模块来确定的。
因为CLA的两个任务分别由两个不同ADC的中断来触发,在原来TI的程序框架中ADC_SOC_CNF.c配置文件只触发了ADCInterrupt1,而没有触发ADCInterrupt2,也就无法启动CLA的任务2。所以需要修改ADC的配置文件,将ADCInterrupt2添加进去。
其它地方不需要改,改过的文件和函数名都要重新命名,防止冲突。
将一些常用的常量预定义集中在一个文件中:Define.h
2)PWM的配置:
在原来的程序中PWM2是通过触发C28内核中断来完成PWM占空比更新的,现在需要在CLA中进行,先把相关代码注释掉。
PWM1和PWM2触发ADC的SOCA设定。
最后,通过调用配置函数,正确启动PWM1和PWM2。
此时PWM已经能正常输出,因为存在死区时间,所以每一路PWM最大占空比要小于0.47。
3)ADC的配置
因为在修改后的ADC的配置函数中增加了一个数组形参,用来设置ADC的中断源,所以先声明一个数组:
分别用到ADC的SOC0和SOC1,并分配它们的采样通道。
PWM1的SOCA触发ADC的SOC0,PWM2的SOCA触发ADC的SOC1
ADC的采样完成后,产生EOC0和EOC1,做为进入CLA任务的先决条件。
前面的配置工作完成后,调用ADC的配置函数
为了进入CLA的任务,CLA也要进行相关的配置。
4)模拟比较器配置
将配置文件DAC_Cnf.c导入工程文件夹中,直接调用配置函数。
到此,外设的配置完成。在下一篇文章中,将介绍如何实现输出的恒压恒流输出。