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

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

3天内不再提示

什么是滤波 常见的软件滤波办法

麦辣鸡腿堡 来源:古月居 作者:Carry_qing 2023-11-28 15:43 次阅读

采样信号滤波

什么是滤波

滤波(Wave filtering)是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。

它可以从含有干扰的接收信号中提取有用信号,很大程度上保证了采集到的信号的真实性和稳定性。

正因如此,滤波算法也成了在智能车控制中不可或缺的一种控制算法。

常见的软件滤波办法

软件滤波在嵌入式的数据采集和处理中有着很重要的作用。

对于电磁车来说,我们需要对采集到的赛道电磁信号进行滤波处理,这里我们介绍几种常见的软件滤波处理办法。

限幅法

一般来说,每个电感在赛道上采集到的值都有一个固定的范围。

由于电感排布方案的不同(水平电感、竖直电感或斜电感等)或不同赛道电磁信号的差别,这个范围也会随之变化。

这时我们可以在程序的初始化中加入一个扫描赛道的程序,在初始化程序运行时令车左右扫描。

将每个电感的最大值和最小值分别记录入两个一维数组中,让其作为每个电感采集信号值的上下限(这样也是为了提高赛车对于不同赛道的适应性)。

在后续赛车行驶过程中,便可以过滤在这个范围之外的电感值,从而排除偶然误差,达到软件滤波的效果。

具体代码如下(此处只写一个其中电感的处理):

// 扫描赛道 //
void saomiao()
{   
     uint32 i;
     uint16 max1=0,min1=4095;
        
     for(i=0;i< 1000;i++)  
     {       
       LeftADC[0]=ADC_Ave(ADC0,ADC1_SE8,ADC_12bit,10); 
       if(LeftADC[0] >max1) 
        max1=LeftADC[0];
       if(LeftADC[0]< min1)
         min1=LeftADC[0];
     }
     
} 




// 限幅法滤波 //
void AD_value()
{    
    LeftADC[0]=ADC_Ave(ADC0,ADC1_SE8,ADC_12bit,10); 
    if(LeftADC[0] >max1) 
      LeftADC[0]=max1;
    if(LeftADC[0]< min1)
        LeftADC[0]=min1;
        
}

算术平均值滤波

算术平均值滤波,指的是将每个电感采集到的一组值用冒泡排序按从大到小或者从小到大的顺序排布,再丢弃最大值与最小值。

取剩下数据的算术平均数,作为反馈给单片机的实时数据。这也是最常见的软件滤波算法之一。

具体代码如下:

void Ad_Value()     
{  
   uint16  LeftADC[7];
   int i,j,t;
   for(i=0;i< 7;i++)
    {   
      LeftADC[i]= ADC_Ave(ADC0,ADC1_SE8 ,ADC_12bit,10); 
    }
    
    for(i=0;i< 6;i++)    
    {
      for(j=0;j< 6-i;j++)
      {
          if(LeftADC[j] >LeftADC[j+1])
          {
            t=LeftADC[j+1];
              LeftADC[j+1]=LeftADC[j];
              LeftADC[j]=t;
          }
    }
    }
    
    LeftAverage[0]=(uint16)((LeftADC[1]+LeftADC[2]+LeftADC[3]+LeftADC[4]+LeftADC[5])/5.0);   
    
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4982

    文章

    18286

    浏览量

    288479
  • 滤波
    +关注

    关注

    10

    文章

    624

    浏览量

    56247
  • 控制算法
    +关注

    关注

    4

    文章

    156

    浏览量

    21495
收藏 人收藏

    评论

    相关推荐

    常见的经典软件滤波原理,有什么优缺点?

    11种经典软件滤波的原理和实现
    发表于 04-06 07:41

    几种常见滤波算法

    **几种常见滤波算法**限幅滤波算法(程序判断滤波算法)顾名思义,就是单纯用程序来处理输入数据In_data,通过对相邻两次数据取误差的绝对值 |error|,通过经验判断两次In_
    发表于 01-11 06:37

    无源滤波器设计软件

    RC滤波器电路,LC滤波器电路,一阶,二阶以及多阶滤波器电路图生成,元件值自动计算的软件,使用非常
    发表于 05-09 15:37 4177次下载
    无源<b class='flag-5'>滤波</b>器设计<b class='flag-5'>软件</b>

    超玄线滤波设计软件

    超玄线滤波设计软件
    发表于 11-03 16:50 21次下载

    常见带通滤波器电路

    常见带通滤波器电路
    发表于 12-07 11:52 1569次阅读
    <b class='flag-5'>常见</b>带通<b class='flag-5'>滤波</b>器电路

    10种软件滤波方法及比

    10种软件滤波方法及比较1、限幅滤波法(又称程序判断滤波法)A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为A)每次检测到新值时
    发表于 12-10 20:18 748次阅读

    滤波器设计软件介绍

    本内容介绍了几款常见的数字滤波器设计软件Filter Solutions,Filter Wiz Pro,FilterCAD,FilterLab等
    发表于 12-14 15:38 1.2w次阅读

    常见滤波电路

    驱动设计常见滤波电路,包括电解电容滤波,RC滤波和π型滤波
    发表于 03-16 14:19 47次下载

    10种软件滤波方法

    10 种软件滤波方法的示例程序 种软件滤波方法的示例程序 种软件滤波方法的示例程序 种
    发表于 02-28 16:54 14次下载

    PCB设计:常见滤波电容的滤波半径

    网络的一个组成部分。在文章结束之后,网友们提出的问题以及讨论,就带出了滤波电容的位置问题。 本节:从去耦半径出发,通过去耦半径的计算,让大家直观的看到我们常见的电容的“有效范围”问题。 启后:讨论滤波电容的位置与PDN阻抗的关系
    的头像 发表于 01-19 10:09 1.3w次阅读
    PCB设计:<b class='flag-5'>常见</b><b class='flag-5'>滤波</b>电容的<b class='flag-5'>滤波</b>半径

    四种常见的图像滤波算法介绍

    作者丨一支程序媛@知乎 来源丨https://zhuanlan.zhihu.com/p/279602383 编辑丨极市平台 导读 图像滤波是一种非常重要的图像处理技术,本文详细介绍了四种常见的图像
    的头像 发表于 02-15 09:50 9391次阅读

    常见滤波器电路分享

    有许多类型的滤波器电路可用于阻抗匹配,本文讨论了最常见滤波器电路。
    发表于 07-08 15:31 4655次阅读
    最<b class='flag-5'>常见</b>的<b class='flag-5'>滤波</b>器电路分享

    介质滤波器和声表滤波器/tcc滤波器区别

    介质滤波器和声表滤波器都是常见滤波器类型,但是它们的应用领域和滤波原理有所不同。
    发表于 02-27 11:47 2635次阅读

    十种常见滤波器分享

    运算放大器可以用于设计各种类型的滤波器,以下是十种常见滤波器: 1. 低通滤波器:能够通过让低于截止频率的信号通过,而抑制高于截止频率的信号。
    的头像 发表于 04-24 10:44 5249次阅读

    三种常见滤波器类型

    贝塞尔型、巴特沃斯型和切比雪夫型是三种常见滤波器类型,它们在滤波器的设计方法、性能指标和应用领域上都有所不同(如下图所示,分别是三种滤波器的频率特性曲线,其Q值不同,造成完全不同的频
    的头像 发表于 04-24 12:36 4931次阅读
    三种<b class='flag-5'>常见</b>的<b class='flag-5'>滤波</b>器类型