我们前面基本都有感觉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)
如果只是套用公式写代码的话,看到这里就可以结束了,想要理解其中的原理,以及采样频率、截止频率和参数的计算,那么请接着往下看。
一、原理及公式推导
”一阶低通数字滤波器“对应的物理电路模型是”一阶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ωC1jωC1Uin=1+jωRC1Uin
上式写成传递函数形式: 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+τs1f(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π⋅fH1代入滤波系数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πfH11=1+2πfHf1
式中 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电容