让我们进一步分析电流波形的采样。
当电流原始波形不是对称三角波(即占空比不为0.5)的时候,经过运放放大的波形也不是对称的。这样即便每个周期等间隔采样两次,获得的平均电流仍然与实际值有误差。
从信号频谱和采样理论的角度来分析:
经过运放放大的电流波形,是原来电流波形经过一阶低通滤波器之后的样子(运放GBP=1MHz)。原波形为接近锯齿波的三角波,包含直流偏置、基频(50k)二倍频(100k)以及三倍频(150k)等整数倍频分量。
通过运放后,直流偏置不变。
基频50k虽然有一点点相移,但是由于我们用100k频率等间隔采样,因此对50k基频采样结果的平均值将保持为0(不管相移有多少)。也就是我们消除了50k基频分量,消除了50k纹波对平均电流采样的影响。
但是对整数倍频来说,事情就没那么简单了。
先看奇数倍频,用100k采样率对三倍频和五倍频(150k、250k)频率的信号进行采样,得到的平均结果仍然为0:
图中绿色线为三倍频(150k)信号,灰色线表示相位为0度时的两个采样点,橙色线表示相位为90度时的两个采样点,显然这两组采样的平均值总是为0,与相位无关。
这就是为什么占空比接近0.5时的对称三角波可以使用两次采样平均的方法消除纹波误差:因为对称三角波只有奇数次倍频分量。
再看偶数倍频,以100k为例:
显然,两次电流采样的平均值与相位相关,只有在相移为0的时候,平均值才是0,当相移为90度的时候,平均值为正。因为例子中使用了低速运放,从信号的产生到采集相移较大,导致这个误差很难消除。
因此可以得到结论:如果要消除偶次谐波对平均电流采样精度的影响,有两个办法,一个是将偶次谐波的相移减小到接近0,也就是使用高速的运放:
缺点也是明显的,TL072(或者NE5532)需要一个负的电源以产生接近地的输出(以利用ADC全部精度),而能够实现轨到轨输出的高速运放通常较贵;从图上来看,对于比较低的占空比(接近锯齿波的电流波形),只有在较平缓的一侧采样才能降低误差的,在较陡峭的一侧采样会产生较大误差(因为再快的运放,也无法把延迟降到0,而陡峭侧的上升时间非常短,很难准确采集到中点)。通过设计程序,实现在较平缓一侧采样的数字电源设计方面的论文有很多。
第二个办法是,利用滤波电路滤除偶次谐波。最简单的方法是用低通滤波器滤除高于50k的所有频率分量。
于是我设计了一个三阶低通:
从bode图上来看,我在100kHz附近实现了-21dB的衰减(直流信号是26dB放大)。换言之,设纹波形状接近锯齿波,电流峰峰值为1安,对检测到的平均电流的影响大概为1/pi*0.5*(-47dB)安左右。总之这是一个非常小的数值,懒得算,1毫安左右吧。
计算公式可以参考
XXXXXXXXXXXXXXXXXXXXXXX/dlll/Dianlu/ZhangJieXueXi/xxnr/XXXXXm
下图显示,这个滤波器将会使得电流信号滞后大约1.2个周期,也就是在电流反馈环稳定后,增益为0(相位为180度)的频率大概在10k(4.8周期)附近。
因此,如果需要较快的电流环响应,可以将滤波器的截止频率设高一些,代价是采集到的电流值受纹波干扰较大,也就是电流精度不高。当然对于开关电源来说,这是可以接受的,取决于用户的需求。面对较低的电流环响应速度,可以通过增加输出电容的容量实现更好的电压瞬态响应,或者增加电感的感量实现更好的电流瞬态响应。
当然聪明的人已经想到了第三个办法:把采样率提高到200k,每4次采样求平均,不就可以滤除100k干扰了?而且这样环路带宽也可以增加很多。主要的困难是实现上的问题,等待4次采样到来之后只剩下5us时间计算反馈环路(64M主频下大概300指令周期),除非用DMA托管采集工作,而这又需要操作DMA,增加了代码的复杂度。
另外其实还有第四个办法:将电流信号的两个版本,未经过滤波直接放大的低延迟/大误差版本和经过滤波再放大的高延迟/小误差版本,分别接到单片机的两个AD端口,以100kHz频率采样(每次连续采集两个通道)。PID反馈环路中,低延迟版本负责控制P,低误差版本负责控制I,这样既兼顾了瞬态响应,又解决了稳态误差问题。
200字以内,仅用于支线交流,主线讨论请采用回复功能。