TMS320F280039C: 关于PMP23338项目中陷波滤波器Notch的预矫正问题

Part Number: TMS320F280039C
Other Parts Discussed in Thread: PMP23338

TI专家您好!

在PMP23338中关于预校正陷波滤波器的有如下疑问:

为什么在函数 SPLL_1PH_NOTCH_coeff_calc中的预校正双线性变换方法和正常的方法不同?就是wn2的求法不理解,按照正常的方法应该是如下所示,麻烦专家们解答下,谢谢了!

image.png

static inline void SPLL_1PH_NOTCH_coeff_calc(SPLL_1PH_NOTCH *spll_obj,
                                             float32_t c1, float32_t c2)
{
    float32_t notch_freq;
    float32_t temp1,temp2;
    float32_t wn2;
    float32_t Ts, Fs;

    notch_freq=2*3.14159265f*spll_obj->fn;
    Ts = spll_obj->delta_t;
    Fs=1/Ts;

    //
    // pre warp the notch frequency
    //
    wn2=2*Fs*tanf(notch_freq* ((float32_t)3.141592653589)*Ts);

    temp1= 4*Fs*Fs + 4* wn2 * c2 * Fs + wn2*wn2;
    temp2= 1/ ( 4*Fs*Fs + 4* wn2 * c1 * Fs + wn2*wn2);

    spll_obj->notch_coeff.b0 = temp1* temp2;
    spll_obj->notch_coeff.b1 = (-8*Fs*Fs + 2* wn2* wn2)* temp2;
    spll_obj->notch_coeff.b2 = (4*Fs*Fs-4*wn2*c2*Fs+wn2*wn2)*temp2;
    spll_obj->notch_coeff.a1 = (-8*Fs*Fs + 2* wn2* wn2)*temp2;
    spll_obj->notch_coeff.a2 = (4*Fs*Fs-4*wn2*c1*Fs+wn2*wn2)*temp2;
}

  • 您好

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待

  • 您好

    请查阅以下关于使用陷波滤波器的SPLL链接

    https://www.ti.com/lit/an/sprabt3a/sprabt3a.pdf?ts=1772767362046

    https://arachnoid.com/BiQuadDesigner/index.html

    第一个链接介绍了寻找wn2的方法。第二个链接有助于设计通用滤波器。

  • 您好!非常感谢您的回复!那个自然频率wn2的计算我之前已看过文档,知道是怎么计算的。只是对将wn2=2*Fs*tanf(notch_freq* ((float32_t)3.141592653589)*Ts);预畸变处理 这句有些不理解,我所知道的预畸变公式是 麻烦能解释下,谢谢!

  • 而且那个wn自然的频率的计算主要是针对LPF即PI控制器的B0和B1系数计算,似乎和陷波滤波器中的wn2没有关系,不知我理解得对不对?

  • 您好

    低精度要求下的PI方法:在PI控制器或简单的低通滤波器中,“截止频率”通常远低于采样频率(Fs)。在低频下,双线性变换几乎是线性的,因此无需预扭曲的“常规”方法即可正常工作。

    高精度陷波滤波器:陷波滤波器必须滤除特定频率(例如,精确的 100Hz 或 120Hz)。即使是由于数学上的“扭曲”导致的 1% 偏移也会使滤波器失效。wn2 是经过“校正”的频率,它能确保陷波落在您期望的精确位置。

    把双线性变换想象成一张橡皮图。当你把无限的模拟频率范围拉伸到数字范围(0 到 Fs/s)时,这张图会非线性地拉伸。如果你想要在 100Hz 处添加一个陷波,而你只是把“100”代入普通公式,那么“拉伸”可能会把实际的陷波点移到 98Hz。预失真会计算出你应该把陷波点放在模拟图上的位置(例如 102Hz),这样在“拉伸”之后,它就能精确地落在 100Hz 处。这个“计算目标”就是你的 wn2 值。如果你直接使用原始的陷波频率,这个方程的零点就无法以正确的角度精确地落在单位圆上。通过使用 wn2 来计算这些零点和角度值,你可以确保滤波器的“零点”与你想要跟踪的网格频率完美对齐。

  • 好的,非常感谢您的回复!