版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、随机误差是有随机干搅引起的,其特点是在相同条件下测量同一个量时,其大小和符号做无规则变化而无法预测,但多次测量结果符合统计规律。为克服随机干搅引入的误差,硬件上可采用滤波技术,软件上可以采用软件算法实现数字滤波,其算 法往往是系统测控算法的一个重要组成部分,实时性很强,采用汇编语言来编写。 采用数字滤波算法克服随机干搅引入的误差具有以下几个优点:(1)数字滤波无须硬件,只用一个计算过程,可靠性高,不存在阻抗匹配问题, 尤其是数字滤波可以对 频率很高或很低的信号进行滤波,这是模拟滤波器做不到的。?(2)数字滤波是用软件算法实现的,多输入通道可用一个软件“滤波器”从而 降低系统开支。(3)只要适当
2、改变软件滤波器的滤波程序或运行参数,就能方便地改变其滤波 特性,这个对于低频、脉冲 干搅、随机噪声等特别有效。?常用的数字滤波器算法有程序判断法、中值判断法、算术平均值法、加权滤波 法、滑动滤波法、低通滤波法和复合滤波法。 程序判断法:?1程序判断法又称限副滤波法,其方法是把两次相邻的采样值相减,求出其增量的大小由被进行比较,Y(以绝对值表示)。然后与两次采样允许的最大差值Y测对象的具体情况而定,若小于或等于Y,则取本次采样的值;若大于Y,则取 上次采样值作为本次采样值,即 有效,ynyn?-yn-1|Y,则 有效。yn-1yn?-yn-1|Y,则 次采样的值;第n式中?yn? )次采样的值;
3、第(n-1Yn-1 Y相邻两次采样值允许的最大偏差。设R1和R2为内部RAM单元,分别存放yn-1和yn,滤波值也存放在R2单元, 单片机指令编写的程序判断法子程序如下:付表MCS-51采用2?中值滤波法即对某一参数连续采样N次(一般N为奇数),然后把N次采 样值按从小到大排队,再取中间值作为本次采样值。设DATA为存放采样值的内存单元首地址,SAMP为存放滤波值的内存单元地址, 指令编写的中值滤波子程序如下:副表为采样值个数,用MCS-51N 算术平均值滤波算法3 次采样值进行算术平均,其数学表达式是:算术平均滤波法就是连续取N Y=yi y=1/Nyi i=1N 个采样值的算术平均值;N式
4、中?y 个采样值;第iYi设8次采样值依次存放在地址DATA开始的连续单元中,滤波结果保留在累加器 中,程序如下:副表A 加权平均滤波法4.算术平均滤波法存在前面所说的平滑和灵敏度之间的矛盾。采样次数太少,平滑效果差,次数太多,灵敏度下降,对参数的变化趋势不敏感。协调两者关系,可采用加权平均滤波,对连续N次采样值,分别乘上不同的加权系数之后再求累加和,加权系数一般先小后大,以突出后面若干采样的效果,加强系统对参数的变化趋势的辩识,各个加权系数均为小于1的小数,且满足总和等于1的约束条件,这样,加权运算之后的累加和即为有效采样值。为方便计算,可取各个加权系数均为整数, (即舍去低字节)后便是有效
5、采样值。256且总和为256,加权运算后的累加和除以设每批采样8个数据,依次存放在地址DATA开始的单元中,各加权系数是用一 指令编写的算术平均滤波程序如下:副表MCS-51ROM个表格存放在中, 滑动平均滤波法:5.以上介绍的各种平均滤波算法有一个共同点,即每取得一个有效采样值必须连续进行若干次采样,当采样速度较慢(如双积分型A/D转换)或目标参数变化较快时,系统的实时性不能保证,滑动平均滤波算法只采样一次,将这一次采样值和过去的若干次采样值一起求平均,得到的有效采样值即可投入使用,如果取N个采样值求平均,RAM中必须开辟N个数据的暂存区。每新采样一个数据便存入暂存区,同时去掉一个最老的数据
6、,保持这N个数据始终是最近的数据,这种数据存放方式可以用环行队列结构方便的实现。设环行队列为40H-4FH连续16个单元,RO作为 队尾指针,滤波程序如下:副表 低通滤波法:6.将普通硬件RC低通滤波器的微分方程用差分方程来表求,变可以采用软件算法 来模拟硬件滤波的功能,经推导,低通滤波算法如下: *Yn-11-a)Yn=a*Xn+( 本次采样值?Xn式中 上次的滤波输出值;Yn-1 ;滤波系数,其值通常远小于1a 本次滤波的输出值。Yn由上式可以看出,本次滤波的输出值主要取决于上次滤波的输出值(注意不是上次的采样值,这和加权平均滤波是有本质区别的),本次采样值对滤波输出的贡献是比较小的,但多
7、少有些修正作用,这种算法便模拟了具体有教大惯性的低通滤 波器功能。滤波算法的截止频率可用以下式计算: 3.14为圆周率fL=a/2Pit?pi 滤波系数;?a式中 采样间隔时间;t 时;a=1/322次),例如:当t=0.5s(即每秒 =0.01Hz2*3.14*0.5)1/32)/(fL=(当目标参数为变化很慢的物理量时,这是很有效的。另外一方面,它不能滤除高于1/2采样频率的干搅信号,本例中采样频率为2Hz,故对1Hz以上的干搅信号 应采用其他方式滤除,低通滤波算法程序于加权平均滤波相似,但加权系数只有两个:a和1-a。为计算方便,a取一整数,1-a用256-a,来代替,计算结果舍去最低字
8、节即可,因为只有两项,a和1-a,均以立即数的形式编入程序中,不另外设表格。虽然采样值为单元字节(8位A/D)。为保证运算精度,滤波输出值用双字节表示,其中一个字节整 数,一字节小数,否则有可能因为每次舍去尾数而使输出不会变化。设Yn-1存放在30H(整数)和31H(小数)两单元中,Yn存放在32H(整数) (小数)中。滤波程序如下:副表和33H 结束语:微型计算机在仪器仪表系统中的成功应用,使传统的电子仪器以及复杂的跟踪测量装置发生了许多革命性变化。其中一个突出表现就是一个系统中包含了智能性运作。微机具有很强的分析和运算能力,智能系统可完成复杂的数据处理,智能系统采用软件硬件想结合的方法进行
9、随机误差的数字滤波和系统误差的修正,可以实 现实时修正,较准测量数据,这些都是传统仪器难以比拟的。 #include<stdio.h> #include<absacc.h> #include<intrins.h> #include<./Atmel/at89x52.h> 椣据畬敤獜畯捲?屨 main() filter_1(); filter_2(); filter_3(); filter_4(); filter_5(); filter_6(); filter_7(); filter_8(); filter_9(); filter_10(); uns
10、ignedcharget_ad(void) staticunsignedchari; returni+; voiddelay(void) unsignedchari=0; while(1) i+; if(i>20)return; 设置两次采样允许的最大偏差值#defineA10/ 上次采用后的有效值变量charvalue;?/ charfilter_1(void) 本次采样值变量char?new_value;?/ 读入本次采样值new_value=get_ad();?/ 比较是否超出最大偏差值if(new_value-value>A)|(value-new_value>A)/
11、 如果超出,返回上次的有效值作为本次的有效值return?value;/ 如果没有超出,返回本次的采样值作为本次的有效值return?new_value;/ 设置连续采样的次数#defineN11/ charfilter_2(void) 次采样值的存储变量Nchar?value_bufN;/缓存char?count,i,j,temp;/i,j是冒泡排序的下标变量,count是采样数据读入 的下标变量 是临时变量/temp 个采样值Nfor(count=0;count<N;count+)/连续读入 value_bufcount=get_ad(); delay(); 气泡排序,由小到大for
12、(j=0;j<N;j+)/ for(i=0;i<N-j;i+) if(value_bufi>value_bufi+1) temp=value_bufi; value_bufi=value_bufi+1; value_bufi+1=temp; 个采样值的中间值作为最后结果返回N将排序后returnvalue_buf(N-1)/2;/ #undefN 设置每组参与平均运算的采样值个数#defineN12/ charfilter_3() 求和变量,用于存储采样值的累加值int?sum=0;/ 采样数据读入的下标变量charcount;/ 个采样值,并累加连续读入Nfor(count
13、=0;count<N;count+)/ sum+=get_ad(); delay(); 讲累加值进行平均计算作为返回值return(char)(sum/N);/ #undefN 队列的长度FIFO设置#defineN12/ 队列变量char?value_bufN;/FIFO 队列的下标变量char?i=0;/ charfilter_4() charcount; int?sum=0; value_bufi+=get_ad(); if(i=N)?i=0; for(count=0;count<N;count+) sum+=value_bufcount; return(char)(sum/
14、N); #undefN 设置每组采样值的数量#defineN12/ charfilter_5() charcount,i,j,temp;/i,j是冒泡排序的下标变量,count是采样数据读入的 下标变量 个采样值的存储变量Ncharvalue_bufN;/缓冲 求和变量,用于存储采样值的累加值int?sum=0;/ 个采样值连续读入Nfor?(count=0;count<N;count+)/ value_bufcount=get_ad(); delay(); 气泡排序,由小到大for(j=0;j<N-1;j+)/ for(i=0;i<N-j;i+) if(value_bufi
15、>value_bufi+1) temp=value_bufi; value_bufi=value_bufi+1; value_bufi+1=temp; for(count=1;count<N-1;count+)sum+=value_bufcount;/去掉两端的最小和最大采样值,对中间的N-2个采 样值求和 个采样值的平均值返回中间N-2return(char)(sum/(N-2);/ #undefA #undefN 设置两次采样允许的最大偏差值#defineA10/ 设置每组参与平均运算的采样值个数#defineN12/ 上次采用后的有效值变量charvalue;?/ charf
16、ilter_6() 本次采样值变量char?new_value;?/ 求和变量,用于存储采样值的累加值int?sum=0;/ 采样数据读入的下标变量charcount;/ for(count=0;count<N;count+) 读入本次采样值new_value=get_ad();?/ 比较是否超出最大偏差值if(new_value-value>A)|(value-new_value>A)/ 如果超出,返回上次的有效值作为本次的有效值new_value=value;/ 累加采样的有效值sum+=new_value;/ value=new_value; delay(); 将累加值
17、进行平均计算作为返回值return(char)(sum/N);/ 定义加权系数#defineCOE50/ 上一个采样值变量charvalue;/ charfilter_7() 本次采样值变量char?new_value;/ new_value=get_ad(); 返回的本次滤波结果return(100-COE)*value+COE*new_value;/ #undefN 队列的长度设置FIFO#defineN12?/ 加权系数charcodecoeN=1,2,3,4,5,6,7,8,9,10,11,12;/ charcodesum_coe=1+2+3+4+5+6+7+8+9+10+11+12;
18、 charfilter_8() 采样数据读入的下标变量charcount;/ 个采样值的存储变量Ncharvalue_bufN;/缓存 求和变量,用于存储采样值的累加值int?sum=0;/ for(count=0;count<N;count+) 读入采样值value_bufcount=get_ad();/ delay(); for(count=0;count<N;count+) 累加采样值和系数的乘积sum+=value_bufcount*coecount;/ 累加值与系数和相除作为返回结果return(char)(sum/sum_coe);/ #undefN 设置计数器溢出值#defineN12/ charfilter_9() 计数变量charcount=0;/ 本次采样值变量charnew_value;/ 读入本次采样值new_value=get_ad();/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电厂安全防范知识培训课件
- 铁路安全管理培训策划课件
- 2025年德清县事业单位编外考试及答案
- 2025年环保局事业编考试真题及答案
- 高铁静态验收培训课件教学
- 电厂安全培训教学课件
- 2025 小学六年级数学上册分数除法珊瑚礁数据计算课件
- 电厂安全培训动漫课件
- 电厂季度安全培训总结课件
- 2025装维服务规范试题及答案
- 水平定向钻施工技术应用与管理
- 风险金管理办法
- 烟花爆竹安全生产会议
- 绿化养护中病虫害重点难点及防治措施
- 学堂在线 雨课堂 学堂云 工程伦理2.0 章节测试答案
- 生态旅游区建设场地地质灾害危险性评估报告
- 网络传播法规(自考14339)复习题库(含答案)
- 民办学校退费管理制度
- T/CIE 115-2021电子元器件失效机理、模式及影响分析(FMMEA)通用方法和程序
- KubeBlocks把所有数据库运行到K8s上
- 广东省江门市蓬江区2025年七年级上学期语文期末考试试卷及答案
评论
0/150
提交评论