三参数陷波器

传统陷波器特性

传统陷波器的传递函数为:
在这里插入图片描述
传统陷波器的 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》

陷波器是一种数字滤波器,用于抑制特定频率的信号。在MATLAB中,可以通过设置陷波器参数来实现这一功能。 陷波器参数主要包括中心频率、带宽和陷波器类型。 1. 中心频率是指希望滤波器抑制的信号频率。在MATLAB中,可以使用"cf"或"center frequency"命令来设置中心频率。例如,如果希望滤波器抑制100 Hz的信号,可以设置中心频率为100。 2. 带宽是指陷波器对信号的抑制范围。在MATLAB中,可以使用"bw"或"bandwidth"命令来设置带宽。带宽定义了中心频率周围的频率范围,超出此范围的信号将被保留。例如,如果希望设置带宽为10 Hz,即在中心频率的±5 Hz范围内抑制信号,可以设置带宽为10。 3. 陷波器类型是指陷波器的形状和特性。在MATLAB中,常用的陷波器类型有Butterworth陷波器、Chebyshev陷波器和Elliptic陷波器等。可以使用相应的函数来选择合适的陷波器类型,并设置相应的参数。 例如,在MATLAB中设置一个Butterworth陷波器,中心频率为100 Hz,带宽为10 Hz,可以使用以下代码: ```MATLAB f = 100; % 中心频率 bw = 10; % 带宽 fs = 1000; % 采样率 [b, a] = butter(4, [(f-bw/2)/(fs/2), (f+bw/2)/(fs/2)], 'stop'); ``` 上述代码中,'butter'函数用于创建Butterworth陷波器,'4'表示滤波器阶数,中心频率和带宽经过归一化处理后作为参数传入,'stop'表示陷波器类型为停带滤波器。函数返回的'b'和'a'是滤波器的分子和分母系数。 通过设置合适的陷波器参数,可以在MATLAB中实现对特定频率信号的抑制或滤除,从而对信号进行处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Not Dr.Wang422

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值