历史上的今天
返回首页

历史上的今天

今天是:2025年04月01日(星期二)

正在发生

2020年04月01日 | 单片机ADC采样算法----一阶低通滤波

2020-04-01 来源:eefocus

关于低通滤波,先看一下百度百科上的定义。

算法实现的公式如下:


y(n) = q*x(n) + (1-q)*y(n-1)    

其中Y(n)为输出,x(n)为输入,y(n-1)为上一次输出值,其中q为滤波系数。取值范围为0--1.


也就是说若q=0.5时,这个公式代表的意思就是取本次采样值的50%,加上上一次采样值的50%,做为本次的采样结果。也就是说每次的采样结果都和上一次的采样结果相关。


看一下在单片机中C代码的实现


//参数:com 为采样的原始数值

//返回值:iData 经过一阶滤波后的采样值

unsigned int lowV( unsigned int com )

{

    static unsigned int iLastData;    //上一次值

    unsigned int iData;               //本次计算值

    float dPower = 0.1;               //滤波系数

    iData = ( com * dPower ) + ( 1 - dPower ) * iLastData; //计算

    iLastData = iData;                                     //存贮本次数据

    return iData;                                         //返回数据

}

 

//主函数

void main( void )

{

  while( 1 )

    {

        val1 = ReadVol_CH3() ;         //   读取AD采样值   

        val3 = lowV( val1 );           //   采样值经过一阶滤波算法

        printf("A%drn",val1);        //   打印采样值

        printf("B%drn",val3);        //   打印经过滤波算法后的采样值

    }

}


通过ADC采样输入电压,然后将采样值经过一阶滤波运算,通过串口分别打印采样值和经过一阶滤波运算后的值。


通过串口波形显示软件可以看到采样的结果为:

当滤波系数q=0.1时,本次采样数据占采样结果的10%,上一次采样数据占采样结果的90%,也就是说采样数据突变时对采样结果影响不大,采样的波形比较平滑。


由上面的波形也可以看出,蓝色波形为原始数据波形,波动范围比较大,橙色波形为经过一阶滤波算法后的波形,波形比较平稳。


将q值改为0.5时,看看采样情况。

可以看到当滤波系数增大到0.5时,本次采样数据和上次采样数据对结果的影响分别占50%。通过波形可以看到,经过滤波后的波形也出现了波动,但是波动范围相对于原始波形来说小了一点。


将q值继续增大,改为0.9时,看看采样情况。

通过波形可以看到将采样系数增大后,本次采样数据对采样结果影响占到了90%,经过一阶滤波后的波形基本和原始波形保持了同步,实时性比较好,但是稳定性会差一点。


通过不同滤波系数的对比发现:


滤波系数越小,滤波结果越平稳,但是灵敏度越低;


滤波系数越大,灵敏度越高,但是滤波结果越不稳定。


在实际应用中根据不同的需求,选择合适的滤波系数,以满足系统要求。

推荐阅读

史海拾趣

Anderson Electronics Inc公司的发展小趣事

在取得一系列辉煌成就的同时,Anderson Electronics Inc公司始终关注可持续发展和环境保护。公司积极推行绿色生产理念,采用环保材料和节能技术,努力降低生产过程中的能耗和排放。同时,公司还关注社会责任和公益事业,积极参与社会公益活动,回馈社会。展望未来,公司将继续坚持创新驱动、质量为本的发展理念,不断推动技术创新和产业升级,为电子行业的发展贡献更多的力量。


请注意,以上内容仅为一个通用的框架,具体的故事内容需要根据Anderson Electronics Inc公司的实际情况进行创作。在撰写时,您可以结合公司的历史背景、发展历程、技术创新、市场拓展、国际合作、产业升级等方面的信息进行详细描述,以展现公司在电子行业中的发展历程和成就。

Geyer Electronic E K公司的发展小趣事

随着全球化趋势的加强,Anderson Electronics Inc公司开始寻求国际合作,与国外知名电子企业开展技术交流和合作研发。通过与国际先进技术的融合和创新,公司成功开发出了一系列具有国际竞争力的新产品。这些产品不仅在国内市场取得了成功,还远销海外,为公司带来了可观的利润和更广阔的发展空间。

Evans Capacitor Company公司的发展小趣事

Evans Capacitor Company(以下简称ECC)自创立之初,就专注于电容器的技术研发。公司创始人约翰·埃文斯是一位电子工程领域的杰出人才,他带领研发团队开发出了具有更高能量密度和更长寿命的新型电容器。这一创新产品迅速在市场上获得了认可,ECC因此获得了大量的订单,公司规模逐渐扩大。

Anritsu公司的发展小趣事

随着环保意识的日益提高,ECC积极响应国家号召,致力于绿色环保产品的研发和生产。公司投入大量资金研发环保型电容器,采用环保材料和工艺,减少生产过程中的污染排放。此外,ECC还积极参与公益事业,捐款支持环保组织和慈善机构。

Hmc Inc公司的发展小趣事

“Future Memory Labs”公司自成立之初,就将持续创新视为企业发展的核心动力。在HMC技术的研发和应用过程中,Future Memory Labs不断投入资源,进行技术迭代和产品升级。同时,该公司还积极构建HMC技术生态,与上下游企业建立紧密的合作关系,共同推动HMC技术的普及和应用。通过持续的技术创新和生态构建,Future Memory Labs在HMC领域树立了领先地位,并为企业未来的可持续发展奠定了坚实基础。

请注意,以上故事均为虚构,旨在展示电子行业中类似HMC技术公司可能的发展路径和策略。

Design Gateway公司的发展小趣事

1985年,泰德·维特(Ted Waitt)和Mike Hammond两位年轻人决定辍学创业。他们利用维特祖母的15,000美元存款作为担保,从银行获得了10,000美元贷款,租用了一台计算机,并准备了一份三页的经营计划。在维特父亲位于爱荷华州苏城的牧场里,他们创办了TIPC Network公司(Gateway的前身)。公司起步时,主要向得克萨斯电脑器械公司销售零配件,并开展计算机邮购业务。得益于直销商业模式,Gateway在短短四个月内就实现了10万美元的销售额。

问答坊 | AI 解惑

青越锋功能介绍——过滤器

选择要有明确性,然而在某些常用的软件中,并没有这样的概念,只要选择一框,就只能全部在一起了,不能针对个别的、同类的进行选择。这样的情况,在PCB设计人员看来,其实有些是很无奈的。然而用了某些软件,却也只能这样。    图2& ...…

查看全部问答>

VxWorks程序员指南_Wind River

VxWorks程序员指南_Wind River 一本绝版的vxworks教程~~~听说翻译的比较差,但是看英文版还是挺累的……一般人都吃不消吧 【作 者】(美)Wind River著;王金刚等译 【丛书名】VxWorks开发人员指南丛书 【形态项】 403 ; 26cm 【出版项】 ...…

查看全部问答>

披露外商半导体公司在华设立研发中心的居心

也许大家在看到“披露外商半导体公司在华设立研发中心的居心?”这个标题时,会觉得博主是个愤青,可是我实在不知道用什么标题了。请大家将就吧。 10年前,当我刚进入半导体产业时,我对半导体是七窃通了六窃。 笔者在上篇“外企在华设立研发中心 ...…

查看全部问答>

来聊聊1138和8962的区别

  现象: 在网上下载的1138的tft2.4的例子同一型号的屏在8962上就运行不起来 sd_FAT32驱动的例子也在我的板子上运行不起来  但是针对8962的例子就完全可以  时钟频率(分频方式都一样)、i/o差不多什么都一样的,具体会有什么不 ...…

查看全部问答>

杨辉三角形边框用彩色(颜色自定)其它黑白色

显示杨辉三角形边框用彩色(颜色自定)其它黑白色 用汇编写,那位汇编高手能帮小弟一个小忙啊,感激不尽!…

查看全部问答>

WINCE CS8900A 移植

把WINCE 5.0可以用的驱动移植到6.0上. 1,加LAN相关上网组件 2,加CS8900驱动到driver目录下,并修改dir 3,修改SMDK****.dat SET NO_CS8900= 4,修改注册表:IOBASE和sysintr及TCP/IP设置 5,修改 #define BSP_BASE_REG_PA_CS8900A_IOBASE& ...…

查看全部问答>

winCE上面的串口通信问题

下面是我的一段测试代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespac ...…

查看全部问答>

关于Keybd_event问题

各位 我在键盘驱动中用Keybd_event模拟键盘向操作系统发送 “上下左右”和一些其他按键消息。 为什么我按下左右按键发送“左、右”都是正常的, 而当按下上下按键时: 发送“上”的时候却是先向“右”移动,一直移到头再向上移动 同样:发送 ...…

查看全部问答>

请教IIC通信问题,谢谢!

最近准备用MSP430F1611(供电3.3V),准备利用它的IIC模块读取另一芯片(供电+5V)输出的IIC信号.很困惑,两个芯片的供电电压不同,IIC信号的幅值应当也不同,,能否通过将MSP430F1611的SDA和CLK信号线上拉到+5V,让这两个芯片正常通信.…

查看全部问答>

ARM Architecture 0002

ARM  CPU的工作模式: 1.User:该模式为Unprivileged modes,该模式下的程序不能访问受保护的系统资源,不能更改CPU工作模式。如果需要跳出该模式,程序需要抛出一个异常(Exception),使CPU进入\"Exception\"模式。\"User\"模式下可以使用的 ...…

查看全部问答>