传统陷波器特性
传统陷波器的传递函数为:
传统陷波器的 Bode 图如图所示,根据图中曲线表明,当ξ = 0.1、ξ = 1、
ξ = 10 时,随着ξ 值的增加,陷波宽度增大,陷波幅值也增大,此时,陷波器陷波深度和陷波宽度两个特性均由ξ 一个值控制,无法做到单独控制两个指标。显然,这种陷波器在很多时候无法得到一个满意的参数,导致陷波失败。wn =2pi100 =628rad/s
针对传统陷波器的不足,为了能对陷波深度和陷波宽度进行单独控制,目前大多数时候均采用如下形式的三参数陷波器,其传递函数形式为:
常用三参数陷波器 Bode 图如下图所示,由图 1可知,当 p = 0.05时,改变d 的值,使d 分别等于 0.5、5、20,随着d 值的增大,陷波深度不变,陷波宽度增加,因此通常称d 为陷波宽度参数;由图 2可知,当d = 0.5时,改变p 的值,使 p 分别等于 0.05、0.005、0.0005,随着 p 值的减小,陷波宽度不变,陷波深度增大,因此通常称 p 为陷波深度参数; wn = 2 f π 代表陷波器陷波中心点角频率。
数字化陷波器
双线性变化法将 S 平面与 Z 平面的值一一对应,因此不存在频率混迭现象,但是此离散化转化会存在频率畸变的现象,此现象则需要做畸变预处理。
预畸变处理
Wd为中心频率,T为采样周期,wa是经过预畸变后的中心频率。后文中的离散变化参数和代码中的预畸变处理就是根据此公式而来。
现在采用三参数陷波器设计100hz的陷波器;
深度p = 0.00004 宽度 d=0.5,wn=628rad/s
连续域传递函数为:
经过双线性变化后的传递函数为:
经过预畸变处理后的传递函数为:
可以看出处理和未处理之间的系数相差不太大,但是效果却比较明显。看下面的仿真对比分析。
时域仿真对比
连续域仿真:
输入纹波为20的工频纹波,经过陷波器后,基本将工频纹波滤掉,切滤波器输出的中心值在400.
离散仿真模型如图所示:
按照如上滤波结构,将离散传递函数的参数调入,观察scope中的波形如下。
未做与畸变处理:
输入纹波为20的工频纹波,经过双线性变化后的离散陷波器后,基本将工频纹波滤掉,切滤波器输出的中心值在399,与连续与的有些差别。
畸变处理后:
输入纹波为20的工频纹波,经过双线性变化后的离散陷波器后,基本将工频纹波滤掉,切滤波器输出的中心值在400.1,与连续域更加接近。
从上面的对比分析可以知道,经过预畸变处理过后的双线性变化更加接近理论。
代码参考
void omputeNotchFltrCoeff(DCL_DF22 *coeff, float32_t Fs,
float32_t notch_freq,
float32_t c1, float32_t c2)
{
float32_t temp1;
float32_t temp2;
float32_t wn2;
float32_t Ts;
Ts = 1 / Fs;
//
// 预畸变处理
//
wn2 = 2 * Fs * tanf(notch_freq * TTPLPFC_PI_VALUE * Ts);
//离散化处理
temp1 = 4 * Fs * Fs + 4 * wn2 * c2 * Fs + wn2 * wn2;
temp2 = 1 / ( 4 * Fs * Fs + 4 * wn2 * c1 * Fs + wn2 * wn2);
coeff->b0 = temp1 * temp2;
coeff->b1 = (-8 * Fs * Fs + 2 * wn2 * wn2) * temp2;
coeff->b2 = (4 * Fs * Fs - 4 * wn2 * c2 * Fs + wn2 * wn2) * temp2;
coeff->a1 = (-8 * Fs * Fs + 2 * wn2 * wn2) * temp2;
coeff->a2 = (4 * Fs * Fs - 4 * wn2 * c1 * Fs + wn2 * wn2) * temp2;
}
参考文献
《Research_on_Harmonic_Suppression_of_OW_PMSM_with_Common_DC_Bus_for_Three_parameter_Digital_Notch_Filter_Based_on_Voltage_Compensation》