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

    关注

    5082

    文章

    19117

    浏览量

    304963
  • 滤波
    +关注

    关注

    10

    文章

    667

    浏览量

    56637
  • 控制算法
    +关注

    关注

    4

    文章

    166

    浏览量

    21718
收藏 人收藏

    评论

    相关推荐

    labview常见滤波器设计

    labview常见滤波器设计
    发表于 03-18 23:44

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

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

    几种常见滤波算法

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

    超玄线滤波设计软件

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

    经典的软件滤波方法

    经典的软件滤波方法 1、限幅滤波法(又称程序判断滤波法)     A、方法:      &n
    发表于 04-17 10:59 1126次阅读

    常见带通滤波器电路

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

    滤波器设计软件介绍

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

    常见滤波电路

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

    10种软件滤波方法

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

    常见滤波电路有哪些

    本文首先介绍了滤波电路分类及作用,其次介绍了滤波电路四种基本类型,最后介绍了电感滤波及电感滤波电路。
    的头像 发表于 07-20 17:06 5.8w次阅读

    EMI滤波常见电路解析

    EMI滤波器有多种类型,常见的有RC,RL等等,本文我们介绍一种比较实用的滤波电路。
    发表于 07-22 16:45 3.1w次阅读
    EMI<b class='flag-5'>滤波</b>器<b class='flag-5'>常见</b>电路解析

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

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

    电源滤波设计软件

    电源滤波设计软件(中远通电源威廉希尔官方网站 有限公司老板)-电子电路设计验证,滤波输出,有良好效果。
    发表于 09-29 16:25 14次下载
    电源<b class='flag-5'>滤波</b>设计<b class='flag-5'>软件</b>

    常见滤波器电路分享

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