单片机ADC采样算法----一阶低通滤波

发布者:Lihua521最新更新时间:2020-04-01 来源: eefocus关键字:单片机  ADC  采样算法  一阶低通滤波 手机看文章 扫描二维码
随时随地手机看文章

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

算法实现的公式如下:


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%,经过一阶滤波后的波形基本和原始波形保持了同步,实时性比较好,但是稳定性会差一点。


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


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


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


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

关键字:单片机  ADC  采样算法  一阶低通滤波 引用地址:单片机ADC采样算法----一阶低通滤波

上一篇:单片机ADC采样算法----卡尔曼滤波
下一篇:单片机ADC采样算法----有效值采样法

推荐阅读最新更新时间:2024-11-17 02:16

基于单片机PIC18F1320的信号采集系统设计方案
信号采集设备广泛使用于机器健康诊断系统中用来记录、监视和诊断。机器情况数据经常由非便携式或者带导线的设备收集。对于一些重要的应用,比如危险或者遥远的地点,尤其是在航空上,提供可以方便地携带或者读取的设备是必要的。另外,机器健康诊断尤其是机床振动信号诊断经常处理低频信号,这值得关注。 本文研究一种微控制器为基础的信号采集系统,以满足信号采集的低成本和灵活模式。开发系统的主要硬件包括一台微型计算机、一个以PIC18F1320为基础的微控制器电路板以及串行通讯链接设备。EEPROM 24LC32A被用来进行存储器扩展。微型计算机运行控制程序。一旦用户在微型计算机界面上决定采样输入,信息便通过RS-232端口送往微控制器。微型计算机和微
[单片机]
基于<font color='red'>单片机</font>PIC18F1320的信号采集系统设计方案
高速模数转换器AD9057的原理与应用
    摘要: AD9057是美国ADI公司生产的高速模数转换器。它速度高,功耗低,尺寸小,价格低廉,使用方便。文中介绍了它的工作原理、使用方法和在医学影象仪器中典型应用,并结合实际应用给出了设计要点及注意事项面,最后讨论了高速模数转换器在设计过程中应遵循的一般原则。     关键词: 高速模数转换器 医用设备 数据采集 AD9057 模数转换器是现代数字化仪器仪表中的核心器件。在种类繁多的模数转换器中,美国ADI(Analog Device International)公司设计生产的模数转换器一直备受推崇,而AD9057更是其的佼佼者。它以高速度、低功耗、小尺寸、价廉易用等诸多优点在医学影象设备、
[应用]
单片机(AT89C51)定时/计数器实验案例
案例分析 总结了经常遇到的三种类型: 已知8051单片机的fosc=12MHz用T1定时,试编程由P1.0引脚分别输出周期为2ms的方波。 已知8051单片机的fosc=12MHz用T1定时。试编程由P1.0引脚分别输出周期为2s的方波。 使用定时器1, 以定时方法在P1.0输出周期为20ms,占空比为20%的矩形脉冲,设单片机晶振频率fosc为12MHz,编程实现。 为了方便分析我们先把实验图给出来(示波器是为了让我们的实验结果更加的明显): 实验一(已知8051单片机的fosc=12MHz用T1定时,试编程由P1.0引脚分别输出周期为2ms的方波) 先计算我们的初值(结果可以不用详细的计算,直接在代码中表示
[单片机]
<font color='red'>单片机</font>(AT89C51)定时/计数器实验案例
单片机同一IO口输出两组数组
单片机同一IO口输出两组数组 基于80C51,因为没有多余的口可用,只能用同一IO口输出两组数组,高4位一组输出0~9,低4位一组输出0~15! 试试看: MOV R0, #s1 ;数组一的指针 MOV R1, #s2 ;数组二的指针 LCALL _HEBY_OUT ;调用子程序,合并输出 ...... ;--------------------- _HEBY_OUT: MOV A, @R0 ;取数组一的元素 ANL A, #0FH SWAP A ;放到高四位 MOV R0, A MOV A, @R1 ;取数组二的元素 ANL A, #0FH AD
[单片机]
单片机选型看哪些参数?单片机选型原则
对于资深工程师来说,做一款产品不仅仅需要考虑实现功能而已, 大公司做产品远比小公司考虑的因素要多 。 下面将全面给大家介绍下,做产品需要考虑的因素: 1.功能需求 功能需求肯定是排在最前面的,这将直接决定单片机需要具备哪些外设资源。 比如控制性的产品通常需要集成各种传感器、驱动器、通讯模块等,而嵌入书系统就是需要集成各种协议、网络接口等。 2.性能需求 单片机性能取决于项目功能的复杂程度,需要考虑处理器性能、内存容量、外设数量和速率等。 这个直接影响系统的运行稳定性、效率、可靠性等。 3.电源管理 电源方面主要考虑到供电电压、产品的功耗要求、电源模式和保护等,对于低功耗的产品,还需要考虑休眠模式下的电流、唤醒方式、
[单片机]
51单片机播放音乐(一):蜂鸣器
蜂鸣器 蜂鸣器分为有(震动)源的和无源的,有源的无法控制频率,所以用无源的才能播放音乐。无源蜂鸣器需要自己控制输入变化的信号才能发声,最简单的就是输入方波信号了,通过单片机控制方波的频率就能发出不同音调的声音 这是发出50%占空比方波的代码: int i; while (1) { for (i = 0; i 10; ++i); // 改变循环次数可以改变方波频率 P1_0 = 1; for (i = 0; i 10; ++i); P1_0 = 0; } 乐谱转成循环次数 首先要有蜂鸣器乐谱,就是用频率和持续时间表示一个音符的乐谱,至于如何获取蜂鸣器乐谱可以看我上一篇文章。由于单片机的运行速度很慢,如果在单片
[单片机]
51<font color='red'>单片机</font>播放音乐(一):蜂鸣器
STM8单片机GPIO口的驱动深度解析
上一节给大家介绍了STM8标准库的移植,本节课开始学习我们单片机的外设的驱动,单片机基本的外设资料包括GPIO、外部中断、定时器、串口等,本节先给大家介绍一下STM8单片机的GPIO口。 我们先不介绍STM8单片机GPIO口的内部资源,我们先从程序代码着手,再根据代码进一步分析GPIO对应的寄存器,这样才能更容易去理解GPIO的驱动原理。 这篇内容是无际单片机编程lora模块项目其中一节课内容,会配套有视频教程。 STM8单片机的标准库中,不仅包括了我们单片机库文件,还提供了外设的例程代码,供单片机软件程序开发参考. 如上图所示,标准库中包括了STM8单片机所有的外设历程,我们今天要学习的GPIO的驱动,所以我
[单片机]
STM8<font color='red'>单片机</font>GPIO口的驱动深度解析
单片机嵌入式系统在电网监测系统中的应用
介绍应用UBICOM公司的SX52BD单片机构建用于远程电网监测的嵌入式系统的具体方案,使基于单片机的测控设备可以方便地连接到以太网,实行电网参数的远程网络监控。   为了保证电网的安全运行,了解电网运行状况,需要对电网的各种运行参数(如三相电压、电流、有功功率、无功功率等)进行实时监测。嵌入式远程电网监测系统将现代计算机、通信、网络及自动化技术融为一体,对配电网进行远程监测、协调和控制,从而优化配电网络。利用以太网的丰富资源及UBICOM公司高速单片机SX52BD构建分布式以太网嵌入测控系统是一种低成本、高可靠且快捷的技术方案。   1 系统结构   系统结构如图1所示。监控中心工作人员可通过以太网直接访问分布在各监控现
[单片机]
<font color='red'>单片机</font>嵌入式系统在电网监测系统中的应用
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved