[其它] 合泰单片机AD采集滤波程序

[复制链接]
 楼主| hudi008 发表于 2022-11-16 13:28 | 显示全部楼层 |阅读模式
本帖最后由 eltonchang2001 于 2022-11-24 12:00 编辑
  1. /**************************************************************
  2. 函数名称:NtcAD_Testing()
  3. 函数功能:温度传感器采样函数
  4. 入口参数:
  5. 出口参数:Flag_Ntc_OneAd,AdResult
  6. 备    注:采样NTC的AD值,采样6次,去掉最大及最小求算术平均值
  7. **************************************************************/
  8. void NtcAD_Testing(unsigned char i)
  9. {
  10.         //static volatile unsigned char        admin,admax,adtimes;        
  11.         //static volatile unsigned int        adsum;
  12.         //static volatile bit Flag_ADFrist;
  13.     if(Flag_AD&&ADIF)
  14.         {  
  15.                 Flag_AD=0;
  16.                 if(!Flag_ADFrist)
  17.                 {
  18.                         admax = ADRESH;
  19.                         admin = ADRESH;
  20.                         Flag_ADFrist=1;
  21.                 }
  22.                 else if(ADRESH > admax)
  23.                         admax = ADRESH;                                //AD采样最大值
  24.                 else if(ADRESH < admin)
  25.                         admin = ADRESH;                                //AD采样最小值
  26.                
  27.                 adsum += ADRESH;
  28.                 if(++adtimes >= 6)
  29.                 {
  30.                         adsum -= admax;
  31.                         adsum -= admin;        
  32.                         AdResult = adsum >> 2;                //8次平均值作为最终结果
  33.                         Flag_ADFrist=0;
  34.                         if(admax>(admin+20))      
  35.                         {   //最大值及最小值差20个8BITAD则当前采样数据作废
  36.                                 
  37.                             adsum = 0;
  38.                             admin = 0;
  39.                             admax = 0;
  40.                             adtimes = 0;
  41.                     }
  42.                     else
  43.                     {
  44.                              adsum = 0;
  45.                             admin = 0;
  46.                             admax = 0;
  47.                             adtimes = 0;
  48.                                 ADnex++;
  49.                                 Flag_Ntc_OneAd=1;
  50.                               
  51.                     }        
  52.                 }
  53.         }
  54.         
  55. }


adolphcocker 发表于 2022-12-1 17:15 | 显示全部楼层
单片机的计算速度怎么样?              
sheflynn 发表于 2022-12-1 17:51 | 显示全部楼层
这个使用均值滤波或者滑动滤波就行。
albertaabbot 发表于 2022-12-1 19:55 | 显示全部楼层
这个滤波太简单了吧。              
jackcat 发表于 2022-12-1 20:26 | 显示全部楼层
可以运行巴特斯沃滤波算法吗              
sdCAD 发表于 2022-12-1 21:48 | 显示全部楼层
温度采集的时候,只是有波动而已,不会出现错误。
saservice 发表于 2022-12-2 20:20 | 显示全部楼层
均值滤波是最简单的算法了。              
Stahan 发表于 2023-1-3 15:06 | 显示全部楼层
这个滤波太简单
mollylawrence 发表于 2023-1-5 16:36 | 显示全部楼层
推荐使用几个滑动窗口呢?              
mattlincoln 发表于 2023-1-5 17:06 | 显示全部楼层
滤波算法的吗?              
chenjun89 发表于 2023-1-6 07:50 来自手机 | 显示全部楼层
就是一个平均值滤波嘛
i1mcu 发表于 2023-1-6 20:38 | 显示全部楼层
自带的ADC稳定吗?              
tifmill 发表于 2023-1-6 21:59 | 显示全部楼层
这个的计算量怎么样              
kkzz 发表于 2023-1-9 10:49 | 显示全部楼层
做滤波算法,需要考虑到单片机的计算能力。
芯路例程 发表于 2023-1-9 17:47 | 显示全部楼层
滤波要考虑的参数挺多的,均值滤波其实也适合很多传感器。
V853 发表于 2023-1-9 17:48 | 显示全部楼层
像ADC这一类的数据,采用这种滤波算法还是不错的。
LLGTR 发表于 2023-1-9 17:48 | 显示全部楼层
i1mcu 发表于 2023-1-6 20:38
自带的ADC稳定吗?

基本是不稳定的,所以需要软件滤波。
LLGTR 发表于 2023-1-9 17:49 | 显示全部楼层
tifmill 发表于 2023-1-6 21:59
这个的计算量怎么样

不大,都没涉及到浮点型。就除法费点计算量。
updownq 发表于 2023-1-10 19:18 | 显示全部楼层
这个均值滤波,太简单 。              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

253

主题

9864

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部