赞
踩
在上一篇文章单片机ADC采样算法---平均值采样法中分析了平均值采样法的使用,上篇文章中的平均值采样法是连续采样100个数据,然后求平均值,这种方法存在一个问题,就是采集100个值之后,下一次又重新采集100个新的值,这两次采集的值是不连续的,相当于每次都是独立的采集来100个值,然后求平均值。这样计算出来的值有可能看不出来数据的变化趋势。希望在求平均值的时候每次读取到一个新的值,就将最早读取的旧值丢弃一个,相当于水管中的流水一样,有新的水流进来,就让最早进来的水流出去。这样采集到的数据就是连续变化的。这样通过采样值就能看出来采样数据是否发生了波动。
算法如下:
#define N 100
unsigned int filter4( void )
{
static unsigned int value_buf[N];
static unsigned int i = 0;
unsigned int count;
int sum = 0;
value_buf[i++] = ReadVol_CH3();
if( i == N )
{
i = 0;
}
for( count = 0; count < N; count++ )
{
sum += value_buf[count];
}
return ( unsigned int )( sum / N );
}
通过数组将采样的数据存储起来,若数组存满之后&
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。