如下图是一个典型的同步Buck数字控制电压单环闭环系统示意图。整个数字控制系统对外部元件的延迟环节会造成PWM信号和反馈纹波之间的相移,也就是整个从采样到发波阶段有RC滤波延迟、ADC采样延迟、环路计算、PWM发波等各个环节的延迟,这些延迟环节的组合就是造成反馈与发波之间的相移的最大影响环节。由于大部分延迟环节一般由硬件造成,比如PWM模块/Driver/RC滤波器等,无法通过软件去修改,虽然可以修改控制器代码和参数去优化,但是过于复杂,不方便调试和演示,所以我们从最简单方便的ADC触发位置对相位影响开始。
ADC模块虽然也会产生固定的延迟时间,一般就是采样-保持-转换环节,如果时钟源选定,那么这个时间也相对固定。主要是ADC的触发位置影响整个从采样到更新的延迟时间,而ADC的触发时刻是可以在软件中进行灵活配置的,所以ADC的触发位置是我们这次分析的相位损失的重点。在之前,我们先看一下ADC模块的固定延迟时间。
这个是模拟信号转化为数字信号的过程,主要是通过ADC模块进行。ADC什么时候开始转化它需要一个触发信号,这个触发信号至关重要。可以明显的看到连续模拟信号经过ADC模块,变为数字离散的值,在这个过程中就引入了一个采样-保持和转换的延迟时间,对离散的采样点进行重构,就得到了时移后的曲线(红色延迟曲线)。
这个是驱动延时对采样信号影响的示意图。
控制器的PWM信号发生器在产生的信号边沿和实际开关边沿之间存在一定的传输延迟。如果被采样值是一个很大的斜坡,那么就会产生非常明显的相位滞后(如图中红色全表示的地方)
这是一个典型的控制环路示意图,蓝色波形是上管驱动信号,绿色波形是控制环路示意图。现在我们假设ADC的触发值从PWM时基开始计数的时候进行触发,也就是触发寄存器的值为0。在ADC模块被触发后,它就开始对输出电压进行采样,然后进行转换,所以这个时间为采样-保持-转换的时间。ADC转换完成之后可以设置为自动进中断去执行3p3z的控制环路代码,计算完毕之后将输出结果对数据寄存器进行回写。所以时间t1是整个环路执行的时间。然后就退出中断处理,在这个过程中数据寄存器的值是没有被更新的,需要一直等到下个周期的SOC信号来才会被刷新到Duty的数据寄存器。所以,从采样到计算到数据寄存器的更新,延迟了一个整个周期,所以它的相位损失为如图表达式。这里的时间t1是环路执行时间,t2是数据回写窗口时间。
ADC的采样转换时间基本固定,如果控制器不变,那么它的执行时间也基本保持不变,现在我们可以改变的时间t2,那么我们可以通过调节ADC的触发位置,向后移动,那么t2的时间就会缩短,这样就可以减少从采样到寄存器更新的延迟时间。
这个是将ADC触发位置设置为环路执行完毕,数据回写后立马就对寄存器进行更新,也就是将t2的时间可以缩到最短,如果是SOC更新模式,那么这个触发点是最小相位损失。如果知道中断执行的时间,那么我们可以通过设置TRIG寄存器的值进行最佳的触发点设置。大家要知道,这个只是针对相位损失减少的设置,其实触发点的设置还有很多其他的考量因素,如果我必须采样沿的位置,当设置的TRIG寄存器的值大于计算的占空比值,那么它就采到PWM关断时期的位置,会对控制产生一定的影响。还有比如平均电流控制的PFC,需要采电感电流的中点位置,为了保持时刻保持中点位置的采样,TRIG寄存器的值每个Duty都在被更新,这样也无法保证上图中的效果。所以,这篇文章主要是方便大家理解延迟环节对相位损失的影响,大家在做实际项目的时候,还需要综合考量。
如果我们继续将ADC触发的采样点往时间轴后移,等环路计算完毕下一个周期已经开始了,如果继续采用SOC更新模式,那么它会在隔一个周期后进行更新,也就是说在当前周期进行采样后需要在第三个周期进行更新,这样就会造成更大的相位损失余量。那么我们就需要设置为立即更新模式。针对占空比的立即更新模式,举个例子,当前占空比为75%,如果计算得出的占空比为55%,那么PWM脉冲就会被立即关闭,但是有个前提,后面会提到。如果计算得出的占空比大于55%,比如85%,那么当前周期的占空比会更新到85%,但是,如果PWM脉冲已经完成,则占空比的立即更新将延迟到下一个周期。如果通过写入较小的占空比以此来缩短PWM脉冲,且时基的计数已超过新的占空比值(但尚未达到原始占空比的计数值),则将忽略下降沿比较时间。当前PWM周期内将得到100%占空比。
最后附一张不同触发点的实测Bode图
大家如果有兴趣观察ADC触发位置对不同相位的影响,可以观看本人视频“手把手系列”ADC触发优化的实验视频。谢谢!