欢迎来到天天文库
浏览记录
ID:51700474
大小:36.36 KB
页数:6页
时间:2020-03-15
《单片机中常用滤波算法.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、单片机中常用滤波算法限幅滤波算法:将两次相邻的采样值相减,求出其增量的绝对值,与两次采样允许的最大差值A进行比较。A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样值有效;否则取上次采样值做本次采样数据的样本。(用于处理变化缓慢的数据)#defineAchardatacharfilter_1(){chardata_new;datanew=get_data();if((datanew–data>A)
2、
3、(data–datanew>A))returndata;returndatanew;}中值滤波算法:对某一个参数
4、连续采样N次(N为奇),然后排序(从小到大)再取中间值作为本次采样值。(去掉偶然因素引起的波动和采样器不稳定而引起的脉动干扰,要求变化缓慢)#defineN11charfilter_2(){charvalue_buf[N];charcount,i,j,temp;for(count=0;countvalue_buf[j]){交换两值;}}算术平均
5、滤波算法:连续N次取样,算术平均,适用于对具有随机干扰的信号进行滤波;charfilter_3(){intSum=0;for(count=0;count6、harfilter_4(){charcount;charvalue_buf[N];intsum=0;for(count=0;count7、(采用环状队列结构可以方便地实现这种数据存放方式)charvalue_buf[N];chari=0;charfilter_5(){charcount;intsum=0;value_buf[i++]=get_data();if(i==N)i=0;for(count=0;count8、电压全部是放大10倍处理的.所以精度不是很高.但是也不是那么低,大部分的场合都够了.实在觉得精度不够,可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了.本程序包括PID计算和输出两部分.当偏差>10度全速加热,偏差在10度以内为PID计算输出.具体的参考代码参见下面:*///================================================================//pid.H//OperationaboutPIDalgorithmprocedure//C51编译器Ke9、il7.08//================================================================//作者:zhoufeng//Date:2007-08-06//Allrightsreserved.//================================================================#include#includetypedefunsignedcharuint8;typedefunsignedintuin10、t16;typedefunsignedlongintuint32;/**********函数声明************/voidPIDOutput();voidPIDOperation();/*************
6、harfilter_4(){charcount;charvalue_buf[N];intsum=0;for(count=0;count7、(采用环状队列结构可以方便地实现这种数据存放方式)charvalue_buf[N];chari=0;charfilter_5(){charcount;intsum=0;value_buf[i++]=get_data();if(i==N)i=0;for(count=0;count8、电压全部是放大10倍处理的.所以精度不是很高.但是也不是那么低,大部分的场合都够了.实在觉得精度不够,可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了.本程序包括PID计算和输出两部分.当偏差>10度全速加热,偏差在10度以内为PID计算输出.具体的参考代码参见下面:*///================================================================//pid.H//OperationaboutPIDalgorithmprocedure//C51编译器Ke9、il7.08//================================================================//作者:zhoufeng//Date:2007-08-06//Allrightsreserved.//================================================================#include#includetypedefunsignedcharuint8;typedefunsignedintuin10、t16;typedefunsignedlongintuint32;/**********函数声明************/voidPIDOutput();voidPIDOperation();/*************
7、(采用环状队列结构可以方便地实现这种数据存放方式)charvalue_buf[N];chari=0;charfilter_5(){charcount;intsum=0;value_buf[i++]=get_data();if(i==N)i=0;for(count=0;count8、电压全部是放大10倍处理的.所以精度不是很高.但是也不是那么低,大部分的场合都够了.实在觉得精度不够,可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了.本程序包括PID计算和输出两部分.当偏差>10度全速加热,偏差在10度以内为PID计算输出.具体的参考代码参见下面:*///================================================================//pid.H//OperationaboutPIDalgorithmprocedure//C51编译器Ke9、il7.08//================================================================//作者:zhoufeng//Date:2007-08-06//Allrightsreserved.//================================================================#include#includetypedefunsignedcharuint8;typedefunsignedintuin10、t16;typedefunsignedlongintuint32;/**********函数声明************/voidPIDOutput();voidPIDOperation();/*************
8、电压全部是放大10倍处理的.所以精度不是很高.但是也不是那么低,大部分的场合都够了.实在觉得精度不够,可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了.本程序包括PID计算和输出两部分.当偏差>10度全速加热,偏差在10度以内为PID计算输出.具体的参考代码参见下面:*///================================================================//pid.H//OperationaboutPIDalgorithmprocedure//C51编译器Ke
9、il7.08//================================================================//作者:zhoufeng//Date:2007-08-06//Allrightsreserved.//================================================================#include#includetypedefunsignedcharuint8;typedefunsignedintuin
10、t16;typedefunsignedlongintuint32;/**********函数声明************/voidPIDOutput();voidPIDOperation();/*************
此文档下载收益归作者所有