0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一阶数字低通滤波器原理及公式推导

硬件攻城狮 来源:Spring嵌入式工作室 作者:Spring嵌入式工作室 2022-08-26 14:22 次阅读

前面我们基本把有感FOC介绍得差不多了,接下来我本打算进入无感FOC控制的深入学习,奈何导师项目项目太多太杂........................先把自己这段时间学的东西总结分享一下再说吧。查阅了很多无感FOC控制的相关资料,把基本原理和流程渐渐的了解了一下(以后有时间再详细介绍了),发现很多环节都会用到”一阶低通数字滤波器“(相电流滤波,反电势滤波,角度、转速滤波,校正因子滤波),虽然代码里面只是一个简单的公式,但为了控制系统参数设计,我还是浅浅的去探究了一下其基本原理,如有错误还望提出指正。

开局先直接给出公式:

49f2f140-2505-11ed-ba43-dac502259ad0.png

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

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

01. 原理及公式推导

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

49fde01e-2505-11ed-ba43-dac502259ad0.png

电容的阻抗表示为1/jωC,对于上面电路,有输入输出电压关系:

4a0989b4-2505-11ed-ba43-dac502259ad0.png

上式写成传递函数形式:

4a157152-2505-11ed-ba43-dac502259ad0.png

在《自动控制原理》中称为一阶惯性环节。

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

4a21c8ee-2505-11ed-ba43-dac502259ad0.png

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

4a30e126-2505-11ed-ba43-dac502259ad0.png

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

4a413abc-2505-11ed-ba43-dac502259ad0.png

4a4acf64-2505-11ed-ba43-dac502259ad0.png得到一般表达式:4a55d5d0-2505-11ed-ba43-dac502259ad0.png,a称为滤波系数。

02. 截止频率和参数计算

对于电路模型,有截止频率4a6e9606-2505-11ed-ba43-dac502259ad0.png(截止频率定义为幅频响应曲线衰减 -3db,即为原来的1/sqrt(2)时的频率,模电里面的基础知识这里不细讲)

可得是将常数4a7beebe-2505-11ed-ba43-dac502259ad0.png

代入滤波系数a的表达式得:

4a88b7b6-2505-11ed-ba43-dac502259ad0.png

式中f=1/T为采样频率。

在实际的应用中,一般有采样频率远大于截止频率,即有4a9baeb6-2505-11ed-ba43-dac502259ad0.png,故近似有4aa86002-2505-11ed-ba43-dac502259ad0.png,所以已知截止频率和采样频率,我么就能够计算滤波系数a的值了。

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

03. 频率的选择

3.1采样频率的选择

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

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

3.2截止频率的选择

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

还是以我做的电机控制为例。我用的永磁同步电机额定转速为3000rpm,极对数为4,采样对象为相电流。则在额定条件下,相电流的频率为f_current=3000*4/60=200Hz,考虑到电机超负荷运行,瞬时转速可以大于3000,保留一定余量,我取截止频率f_H=500Hz。如此计算得滤波系数4ab504c4-2505-11ed-ba43-dac502259ad0.png

在电机运行前,对放大器进行校准时,只考虑直流偏置输入,即被采样的信号频率趋近于0Hz,主要滤掉电路中的高频干扰和噪声,故可把截止频率取得很小,我这里取f_H=5Hz,计算得滤波系数a=0.00157。

04频率选择对输出的影响(附仿真分析)

在采样频率固定的情况下,截止频率越大,滤波系数a的值越大,当前输入的权重就越大,计算的输出和实际的输出跟踪效果更好,即动态响应更好,幅值衰减的影响更小。

减小截止频率,滤波系数a的值越小,当前输入的权重越小,故计算的输出信号更平滑,对噪声干扰和谐波的滤除效果更好,但是动态响应变差,而且会产生一定程度的幅值衰减。

下面是matlab代码和仿真结果分析:

仿真结果:

4ad25236-2505-11ed-ba43-dac502259ad0.png

图中,绿色为含有噪声的采样信号,蓝色为标准的正弦信号,红色为采样信号经过一阶低通滤波器的计算输出。

可以发现,当截止频率较小时,输出信号幅值衰减明显,且存在一定滞后;随着截止频率的增大,对标准正弦信号的跟踪效果越好;当截止频率过大时,几乎能完全复现采样信号,但是对噪声的滤波效果变差。

下面再看一下对直流信号的测试

4b10a96e-2505-11ed-ba43-dac502259ad0.png

可以看出,随着截止频率的减小,计算输出的信号越来越平滑,接近直流信号,但同时调节时间也增大,对应我前面电机控制中,对放大器的校准时间需要延长。在实际应用中,对于直流信号的滤波,截止频率一般取1~50Hz我觉得就好了(当然也有可能其它情况我没想到)。

最后附上matlab的仿真源代码

代码源程序:

交流信号部分:

f_basic=200;%原信号频率为200Hzw_basic=2*pi*f_basic;f_H=1;%截止频率500Hzf_simple=20000;%采样频率20kHzPointNumber = 100000;%坐标点数量
x=0PointNumber-1;Standard =2+sin(w_basic*x*0.0000005);%原始标准信号noise = 0+0.1*randn(1,PointNumber);AddNoise=Standard+noise;
a=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1    x_now=AddNoise(i+1);    y_now=(1-a)*y_last+a*x_now;    output(i+1)=y_now;    y_last=y_now;endfigure(1);X=0PointNumber-1;plot(X,AddNoise,'-.g');hold on;plot(X,Standard,'-..b');hold on;plot(X,output,'-..r');hold on;legend('With noise','Standard','Output') xlabel('time');ylabel('value');title('一阶低通滤波器(fH=1Hz)');


f_basic=200;%原信号频率为200Hzw_basic=2*pi*f_basic;f_H=5;%截止频率500Hzf_simple=20000;%采样频率20kHzPointNumber = 100000;%坐标点数量
x=0PointNumber-1;Standard =2+sin(w_basic*x*0.0000005);%原始标准信号noise = 0+0.1*randn(1,PointNumber);AddNoise=Standard+noise;
a=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1    x_now=AddNoise(i+1);    y_now=(1-a)*y_last+a*x_now;    output(i+1)=y_now;    y_last=y_now;endfigure(2);X=0PointNumber-1;plot(X,AddNoise,'-.g');hold on;plot(X,Standard,'-..b');hold on;plot(X,output,'-..r');hold on;legend('With noise','Standard','Output') xlabel('time');ylabel('value');title('一阶低通滤波器(fH=5Hz)');

f_basic=200;%原信号频率为200Hzw_basic=2*pi*f_basic;f_H=50;%截止频率500Hzf_simple=20000;%采样频率20kHzPointNumber = 100000;%坐标点数量
x=0PointNumber-1;Standard =2+sin(w_basic*x*0.0000005);%原始标准信号noise = 0+0.1*randn(1,PointNumber);AddNoise=Standard+noise;


a=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1    x_now=AddNoise(i+1);    y_now=(1-a)*y_last+a*x_now;    output(i+1)=y_now;    y_last=y_now;endfigure(3);X=0PointNumber-1;plot(X,AddNoise,'-.g');hold on;plot(X,Standard,'-..b');hold on;plot(X,output,'-..r');hold on;legend('With noise','Standard','Output') xlabel('time');ylabel('value');title('一阶低通滤波器(fH=50Hz)');

f_basic=200;%原信号频率为200Hzw_basic=2*pi*f_basic;f_H=500;%截止频率500Hzf_simple=20000;%采样频率20kHzPointNumber = 100000;%坐标点数量
x=0PointNumber-1;Standard =2+sin(w_basic*x*0.0000005);%原始标准信号noise = 0+0.1*randn(1,PointNumber);AddNoise=Standard+noise;


a=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1    x_now=AddNoise(i+1);    y_now=(1-a)*y_last+a*x_now;    output(i+1)=y_now;    y_last=y_now;endfigure(4);X=0PointNumber-1;plot(X,AddNoise,'-.g');hold on;plot(X,Standard,'-..b');hold on;plot(X,output,'-..r');hold on;legend('With noise','Standard','Output') xlabel('time');ylabel('value');title('一阶低通滤波器(fH=500Hz)');

直流信号部分

f_basic=1;%原信号频率为200Hzw_basic=2*pi*f_basic;f_H=500;%截止频率500Hzf_simple=20000;%采样频率20kHzPointNumber = 100000;%坐标点数量
x=0PointNumber-1;Standard =2+0.05*sin(w_basic*x*0.00005);%原始标准信号noise = 0+0.05*randn(1,PointNumber);AddNoise=Standard+noise;
a=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1    x_now=AddNoise(i+1);    y_now=(1-a)*y_last+a*x_now;    output(i+1)=y_now;    y_last=y_now;endfigure(1);X=0PointNumber-1;plot(X,AddNoise,'-.g');hold on;plot(X,output,'-..r');hold on;
xlabel('time');ylabel('value');title('一阶低通滤波器(直流信号测试)');
f_H=1;%截止频率500Hza=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1    x_now=AddNoise(i+1);    y_now=(1-a)*y_last+a*x_now;    output(i+1)=y_now;    y_last=y_now;endplot(X,output,'-..c');hold on;
f_H=0.5;%截止频率500Hza=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1    x_now=AddNoise(i+1);    y_now=(1-a)*y_last+a*x_now;    output(i+1)=y_now;    y_last=y_now;endplot(X,output,'-..m');hold on;
f_H=0.2;%截止频率500Hza=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1    x_now=AddNoise(i+1);    y_now=(1-a)*y_last+a*x_now;    output(i+1)=y_now;    y_last=y_now;endplot(X,output,'-..k');hold on;


f_H=0.1;%截止频率500Hza=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1    x_now=AddNoise(i+1);    y_now=(1-a)*y_last+a*x_now;    output(i+1)=y_now;    y_last=y_now;endplot(X,output,'-..r');hold on;
plot(X,Standard,'-..b');hold on;
 legend('With noise','Output-500Hz','Output-1Hz','Output-0.5Hz','Output-0.2Hz','Output-0.1Hz','Standard')
审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    158

    文章

    7315

    浏览量

    174724
  • 数字滤波器
    +关注

    关注

    4

    文章

    249

    浏览量

    46741
  • FOC
    FOC
    +关注

    关注

    20

    文章

    303

    浏览量

    42163

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

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    压控电压源低通滤波器设计

    得很好。【关键词】:压控电压源;;低通滤波器;;二;;巴特沃斯;;Multisim-;;仿真【DOI】:CNKI:SUN:DZJS.0.2010-03-031【正文快照】:0引言滤波器
    发表于 05-28 13:38

    低通滤波器

    低通滤波器
    发表于 08-18 16:00

    求解答 低通滤波器的仿真问题

    求解答 一阶低通滤波器的电路没问题 可是交流分析图就是不对
    发表于 06-07 14:05

    请问SIGMASTUDIO一阶滤波器系数如何计算

    你好使用SIGMASTUDIO 中一阶滤波器低通和全通生成的数据和手册给出的公式样的,但高通的数据和手册给出的不样,具体哪个是正确的呢
    发表于 02-15 15:01

    关于一阶RC低通滤波器的基础知识

    关于一阶滤波器的种种有很多资料可查,像截止频率啊,相移啊什么的,这些在这里就不再重复了。本文主要阐述下阿呆在学习过程中曾被困扰的地方,及本人的简要分析。本文从无源RC低通滤波器说起,
    发表于 05-21 06:07

    labview如何编程实现一阶惯性滤波算法的滤波器

    labview小白,看了点书,也搜过很多,但是都没有这方面的。很多电子滤波器都是以巴特沃夫滤波器为主体滤波。但是如果不能用现成的滤波器而是
    发表于 12-30 23:12

    一阶全通滤波器正负序检测法的原理和仿真

    (二广义积分)进行简单分析以及仿真了,所以下面将对一阶全通滤波器正负序检测法进行简单的分析及仿真。  、原理  采用一阶全通
    发表于 01-11 16:25

    如何实现一阶惯性滤波器和二滤波器的算法?

    MATLAB怎么进行软件滤波仿真一阶电路滤波器的软件方式实现
    发表于 04-06 08:11

    四种低通滤波器的电路分析

    1 、二压控低通滤波器压控低通滤波器电路如图所示,由R1、C1 及R2、C2 分别构成两个一阶低通
    发表于 06-30 06:00

    如何用C语言单片机实现一阶滤波器及高阶滤波器

    低通、高通数字滤波器——C语言单片机实现一阶滤波器高阶滤波器博主刚好进入研二,研究的方向刚好涉及到数字滤波
    发表于 02-28 06:41

    一阶低通滤波器_一阶低通滤波器公式_一阶低通滤波器原理

    滤波电路又称为滤波器,是一种选频电路,能够使特定频率范围的信号通过,而使其它频率的信号大大衰减即阻止其通过。按其工作频率范围的不同,滤波电路可分为低通滤波器、高通
    发表于 08-16 17:28 8.9w次阅读
    <b class='flag-5'>一阶</b><b class='flag-5'>低通滤波器</b>_<b class='flag-5'>一阶</b><b class='flag-5'>低通滤波器</b><b class='flag-5'>公式</b>_<b class='flag-5'>一阶</b><b class='flag-5'>低通滤波器</b>原理

    带通滤波器低通滤波器的转换公式推导资料合集

    以一种易于理解的方式介绍了归一化带通滤波器指标转换为低通滤波器指标的公式
    发表于 02-15 13:56 38次下载

    一阶低通滤波器中该如何选值R和C

      问题:一阶低通滤波器中,当RC乘积确定,该如何选值R和C?
    的头像 发表于 04-08 11:26 6581次阅读
    <b class='flag-5'>一阶</b><b class='flag-5'>低通滤波器</b>中该如何选值R和C

    Mahony滤波器的原理和公式推导

      1. 概述 在进行代码分析之前,了解Mahony滤波器的原理和公式推导是必要的。Mahony滤波器是一种基于四元数的姿态估计滤波器,其主
    的头像 发表于 06-17 11:18 1701次阅读
    Mahony<b class='flag-5'>滤波器</b>的原理和<b class='flag-5'>公式</b><b class='flag-5'>推导</b>

    一阶低通滤波器的截止频率

    一阶低通滤波器是一种常见的电子滤波器,它可以有效地滤除高频信号,只保留低频信号。截止频率是指滤波器开始对信号进行衰减的频率。 在这篇文章中,将讨论
    的头像 发表于 12-01 16:24 1349次阅读