期待后续呀~~~
开发手记撰写得越完善,得奖几率越高呀~
把最近的一些进展整理一下吧,前段时间电路图基本完成,也发现有些功能比之前预想的要复杂了一些,所以原理图还没有完全定稿,在MICROCHIP寄过来的硬件上先完成部分功能的验证。
通过代码发现,寄过来的硬件是一个dsPIC33EP64GS506实现了两部分电路的功能,分别是同步的BUCK和BOOST。开关频率是350KHz,并且是峰值电流控制模式。
我这里先对BUCK部分进行描述说明。
通过上图我们可以看到,送入到dsPIC33EP64GS506的有电压和电流反馈,但实际上电流的反馈并非使用的是ADC,而是使用的是比较器CMP1的一个引脚输入。
通过ADC1采输出电压值,然后送入到补偿器做环路运算,把运算的结果送到比较器CMP1的一端,比较器的另外一端是电流检测。
我的设计不需要用上峰值电流检测,故需要去掉比较器这个环路环节,仔细分析代码,你会发现,这个代码采用了辅助工作寄存器,MICROCHIP的辅助工作寄存器专门为数字电源环路设计的。
整个环路设计的思路是:
1、 PWM触发ADC采样。
2、 ADC采样转换完成后触发ADC中断。
3、 进入ADC中断后自动切入到辅助工作寄存器。
4、 在ADC中断里面完成2P2Z的算法。
5、 2P2Z的输出送到给比较器CMP1DAC。
6、 这里CMP1DAC的输出送到CMP1的一个引脚,CMP1的另外一个引脚为电流采样的输入
7、 比较器CMP1的输出控制PWM的占空比。
8、 完成整个环路的控制。
从上面代码可以看出,环路有两个输入量,一个是ADCBUF1和CMP1DAC.在这里,我不需要用到CMP1,我的2P2Z的输出值用于控制PDC1。所以我在辅助工作寄存器初始化代码的部分,把CMP1映射到W2,更改为了PDC1映射到W2。如下。
在最初的环路调试过程中,由于是硬件和软件交叉调试的,所以很多时候在microchip寄过来的开发板上做验证。
其中把BOOST的峰值电流控制模式切换成电压单环的控制模式的时候,保留了原来的2P2Z的补偿方式,BOOST空载的输出正常,但是一但带上负载,输出就异常,电流采样电阻就会烧毁,分析波形发现,占空比几乎打到了最大,接近100%占空比,这可不得了了,因为环路参数刚开始并没有做调整,我就猜想是否我的环路参数有问题,我利用DCDT进行环路参数的调整。
首先DCDT选择的是单环模式,输入反馈的参数如下。
根据BOOST的小信号模型和传递函数,网上很多,这里就不累述,输入参数如下。
在点开补偿器部分,问题就来了,首先我们可以看到波特图如下。
我们环路的稳定性判据是,以-1的斜率穿过0dB增益线,使我们的增益裕量和相位裕量都得到满足。但是实际上我们可以看出,2P2Z的波特图的斜率关系是-1,+1,-1。而BOOST的电压单环的传递函数波形可以看出,是-2(双极点产生的-2斜率),+1(输出电容的ESR的零点产生的+1的斜率上升)。那么,要能够使-1的斜率穿过0dB线是不可能,主功率双极点之前的位置是无法完成穿越的,在双极点后面穿越的点必定不是-1斜率穿越,而在ESR零点之后完成穿越也是不可能的,这样的环路带宽得高到天上去啊。哈哈。
基于这种情况,就必须抛弃2P2Z补偿,使用3P3Z补偿。
基于这种情况,3P3Z的波特图的增益曲线关系是,-1,+1,+1,-1,-1.从这个关系上来看,我们可以用把BOOST的双极点位置用3P3Z的两个零点进行补偿,并且把这两个零点都设计在双极点的位置,这样,补偿过后的环路在通过双极点位置过后,会继续与-1的斜率往下走,直到穿过0dB线,并且把3P3Z的第二个极点补偿boost的ESR零点,这样整个补偿后的环路会以-1的斜率继续远离0dB线,并且在遇见3P3Z的第三个极点后,会以-2的斜率继续远离0dB线,使因为离散参数造成的二次穿越将不在发生。大大增加了环路的稳定性。
去microchip的官网上面扣了一个LOGO下来,哈哈,填进去了这个小显示屏。显示的功能可以通过按键进行切换,切换成四种工作状态,显示在显示屏幕上。
BUCK CC MODE.
BUCK CV MODE.
BOOST CC MODE.
BOOST CV MODE.
每个页面的内容还需要完善,但主要功能已经差不多完成了。
现在可以实现BUCK 恒流/恒压输出,BOOST恒流/恒压输出。电压为9V/12V。
但现在存在的问题就是双向的功能还得手工切换,软件自己判断切换的逻辑还没有加进去。
当然,在代码从开发板上移植到这个双向板子上的时候,还是出现了一些问题。最开始就是电流采样电阻的取值过小,造成恒流工作一直工作不正常。分析了很久,终于解决。
另外,在这个环路的应用过程中,我使用了辅助工作寄存器,但是dsPIC33EP64GS502只有2组辅助工作寄存器,而我的环路有4路。刚开始确实让我头痛了一阵子。后来仔细分析,其实这个电路在任何情况下,都只有2套环路在工作,那么我可以选择在切换的时候工作模式的时候,重新初始化辅助工作寄存器,结果发现,非常好用,完全没有问题,这样看来,辅助工作寄存器真是强大啊。
辅助工作寄存器初始化部分我定义四个,如下:
void InitAltRegContext1Setup(void);
void InitAltRegContext2Setup(void);
void InitAltRegContext1Setup_BOOST_Current(void);
void InitAltRegContext2Setup_BOOST_Voltage(void);
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |