原创 AD转换中的"跳水"滤波算法

2007-8-14 00:14 7194 8 10 分类: MCU/ 嵌入式
hotpower 发表于 2007-8-13 21:07 PIC 单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

8楼: 这种算法的优点是点数无限~~~(附"跳水算法")


当然N>=3.而且最好N>3为好.在N很大时就见其优点了.
例如: 3中取1,4中取2,5中取3...10中取8...252中取"二百五"~~~
全部只用这4个寄存器~~~,当然要考虑累加越界类型选择的问题.
注意: N最好取4, 6, 10, 34, 66, 130等等~~~!!!!!!!!!!!!!!


/*-----------------------------------------------------------
取ADC转换电压
------------------------------------------------------------*/
AdcResult = ADC & 0x3ff;//取ADC转换电压结果
/*-----------------------------------------------------------
  求累加和
------------------------------------------------------------*/
AdcSum += AdcResult;//存累加和
/*-----------------------------------------------------------
  求最大值
------------------------------------------------------------*/
if (AdcResult > AdcMax)
{
  AdcMax = AdcResult;//最大值
}
/*-----------------------------------------------------------
  求最小值
------------------------------------------------------------*/
if (AdcResult < AdcMin)//注意:千万不敢写成else if ()...
{
  AdcMin = AdcResult;//存最小值
}
AdcCount ++;//计数1次
/*-----------------------------------------------------------
  10中取8("跳水评分算法---去掉一个最高分,去掉...最后得分...")
------------------------------------------------------------*/
if (AdcCount >= 10)//每次滤波10点
{
/*-----------------------------------------------------------
  求平均值
------------------------------------------------------------*/
  val = AdcSum - AdcMax - AdcMin;//自然做到了N-2,以下除法变移位
  val *= AdcGain;//乘增益(一定要先乘后除!!!否则精度丢失!!!)
  val >>= 13;//10中取8后除以1024.(直接得到10进制的mV值)
  AdcVal = val;//得到跳水队员分数~~~
/*-----------------------------------------------------------
  下一轮初始化(也是ADC的初始化,这里原本是调用函数的~~~)
------------------------------------------------------------*/
  AdcSum = 0;//一定清0
  AdcMax = 0;//一定取最小值
  AdcMin = 0x3ff;//10位ADC,一定取最大值
  AdcCount = 0;//重新开始
}

哈哈~~~有时间再灌灌它与排序的不同和优缺点~~~
PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户155859 2009-6-16 23:27

俺喜欢在AdcCount=1时,对max和min初始化

用户49001 2007-12-16 00:11

好东西,谢谢了!真细心啊,学了不少东西,下文(它与排序的不同和优缺点)等待中...
相关推荐阅读
雁塔菜农 2012-04-05 17:51
2012年度新唐Cortex-M0助学开发套件有约束条件赠送申报贴
2012年度新唐Cortex-M0助学套件从4月起每月有约束条件发放16套。 申报人必须是21ic或 EDNC 会员 并具备1月的会龄。 申报时必须注明“遵守约束条件,缴纳250元订金,上...
雁塔菜农 2012-04-05 17:04
2012年度Cortex-M0助学园地推广框图
...
雁塔菜农 2012-04-01 17:59
2012年度Cortex-M0助学园地奖励计划细则
抢楼请点击:菜地公告:即日起创建《菜农Cortex-M0助学园地》(盖楼入口) 每月10号和25号的下午2:50进行2次抢楼,规则同去年12月的疯狂抢楼活动。 奖品由21IC、北航、广州迪圣...
雁塔菜农 2012-02-03 08:19
菜农谋略:搞定牛人宋俊德,对女牛人孙昌旭说:“记住,俺是雁塔菜农~~~ ”
http://www.baidu.com/s?wd=%B2%CB%C5%A9%D0%A6%CC%B8%A1%B6%D0%C2%C0%CB%C3%FB%C8%CB%D0%A7%D3%A6%A1%B7...
我要评论
2
8
关闭 站长推荐上一条 /3 下一条