资讯详情

“一阶数字低通滤波器”原理推导(含仿真和代码实现)

我们前面基本都有感觉FOC介绍差不多了。接下来,我打算进入无感。FOC深入学习控制,但是导师项目太多太杂…先总结分享一下这段时间学到的东西。查阅了很多无感FOC控制相关数据,逐步了解基本原理和过程(有时间详细介绍),发现许多链接将使用一级低通数字过滤器(相电流过滤器、反电势过滤器、角度、速度过滤器、校正因子过滤器),虽然代码只是一个简单的公式,但为了控制系统的参数设计,我仍然浅探索其基本原理,如果有错误,也要纠正。

文章目录

  • 一、推导原理和公式
  • 二、计算截止频率和参数
  • 三、频率选择
    • 1.采样频率的选择
    • 2.选择截止频率
  • 4、频率选择对输出的影响(附仿真分析)
    • matlab分析代码和仿真结果:
    • 代码源程序:
      • 交流信号部分:
      • 直流信号部分:


开始时直接给出公式: y ( k ) = ( 1 ? a ) ? y ( k ? 1 ) a ? x ( k ) y(k) = (1 - a) \cdot y(k - 1) a \cdot x(k) y(k)=(1?a)?y(k?1) a?x(k)

式中: x ( k ) x(k) x(k)为当前输入, y ( k ? 1 ) y(k - 1) y(k?1)上次输出, y ( k ) y(k) y(k)为当前计算的输出;a为滤波系数,取值范围0~1,a取值越小,当前输入权重就越小,输出波形越平滑,但响应灵敏度降低;

如果只是套用公式写代码的话,看到这里就可以结束了,想要理解其中的原理,以及采样频率、截止频率和参数的计算,那么请接着往下看。


一、原理及公式推导

”一阶低通数字滤波器“对应的物理电路模型是”一阶RC低通滤波电路“,电路如下图所示。

在这里插入图片描述 电容的阻抗表示为1/jωC,对于上面电路,有输入输出电压关系:

U o u t = 1 j ω C R + 1 j ω C U i n = 1 1 + j ω R C U i n {U_{out}} = \frac{ {\frac{1}{ {j\omega C}}}}{ {R + \frac{1}{ {j\omega C}}}}{U_{in}} = \frac{1}{ {1 + j\omega RC}}{U_{in}} Uout​=R+jωC1​jωC1​​Uin​=1+jωRC1​Uin​

上式写成传递函数形式: G ( s ) = 1 1 + τ s , G(s) = \frac{1}{ {1 + \tau s}}, G(s)=1+τs1​,其中 j ω = s {j\omega = s} jω=s为复频域变量, R C = τ {RC = \tau } RC=τ为时间常数。 在《自动控制原理》中称为一阶惯性环节。

由Y(s)=G(s).F(s)得到时域的微分方程:

y = 1 1 + τ s f ( x ) ⇒ τ ⋅ y ′ + y = x y = \frac{1}{ {1 + \tau s}}f(x) \Rightarrow \tau \cdot y' + y = x y=1+τs1​f(x)⇒τ⋅y′+y=x

使用一阶后向差分法,对上面微分方程进行离散化,有:

τ ⋅ y ( k ) − y ( k − 1 ) T + y ( k ) = x ( k ) \tau \cdot \frac{ {y(k) - y(k - 1)}}{T} + y(k) = x(k) τ⋅Ty(k)−y(k−1)​+y(k)=x(k)

其中T为采样周期,对上式进行整理化简可写成:

y ( k ) = ( 1 − T T + τ ) ⋅ y ( k − 1 ) + T T + τ ⋅ x ( k ) y(k) = (1 - \frac{T}{ {T + \tau }}) \cdot y(k - 1) + \frac{T}{ {T + \tau }} \cdot x(k) y(k)=(1−T+τT​)⋅y(k−1)+T+τT​⋅x(k)

令 a = T T + τ a = \frac{T}{ {T + \tau }} a=T+τT​得到一般表达式: y ( k ) = ( 1 − a ) ⋅ y ( k − 1 ) + a ⋅ x ( k ) y(k) = (1 - a) \cdot y(k - 1) + a \cdot x(k) y(k)=(1−a)⋅y(k−1)+a⋅x(k),a称为滤波系数。

二、截止频率和参数计算

对于电路模型,有截止频率 f H = 1 2 π R C = 1 2 π ⋅ τ {f_H} = \frac{1}{ {2\pi RC}} = \frac{1}{ {2\pi \cdot \tau }} fH​=2πRC1​=2π⋅τ1​截止频率定义为幅频响应曲线衰减 -3db,即为原来的 1 2 \frac{1}{ {\sqrt 2 }} 2 ​1​时的频率,模电里面的基础知识这里不细讲)

可得是将常数 τ = 1 2 π ⋅ f H \tau = \frac{1}{ {2\pi \cdot {f_H}}} τ=2π⋅fH​1​代入滤波系数a的表达式得:

a = T T + τ = 1 1 + τ T = 1 1 + 1 T ⋅ 1 2 π f H = 1 1 + f 2 π f H a = \frac{T}{ {T + \tau }} = \frac{1}{ {1 + \frac{\tau }{T}}} = \frac{1}{ {1 + \frac{1}{T} \cdot \frac{1}{ {2\pi {f_H}}}}} = \frac{1}{ {1 + \frac{f}{ {2\pi {f_H}}}}} a=T+τT​=1+Tτ​1​=1+T1​⋅2πfH​1​1​=1+2πfH​f​1​

式中 f = 1 T f = \frac{1}{T} f=T1​为采样频率。

在实际的应用中,一般有采样频率远大于截止频率,即有 f > > f H f > > {f_H} f>>fH​,故近似有 a ≈ 2 π ⋅ f H f a \approx 2\pi \cdot \frac{ { {f_H}}}{f} a≈2π⋅ffH​​,所以已知截止频率和采样频率,我么就能够计算滤波系数a的值了。

又会问:截止频率和采样频率怎么确定呢?选取不同的值会对计算输出有什么影响呢?下面为你简单介绍一下。

三、频率的选择

1.采样频率的选择

一般人为主观选择,在不影响其他功能性能的条件下,尽量越大越好。

先以我之前做的电机控制为例。在程序中,PWM定时器开启中断,在中断服务函数中用ADC采集相电流,故采样频率就等于PWM定时器频率,我在控制代码中用的是20kHz,即采样频率f=20kHz。

2.截止频率的选择

根据采样对象信号的频率选择,一般稍大于被采样信号的最大基波频率就好。

还是以我做的电机控制为例。我用的永磁同步电机额定转速为3000rpm,极对数为4,采样对象为相电流。则在额定条件下,相电流的频率为 f c u r r e n t = 3000 ⋅ 4 ÷ 60 = 200 H z {f_{current}} = 3000 \cdot 4 \div 60 = 200Hz fcurrent​=3000⋅ 标签: rpm电容

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台