版主 
 
主题
回帖0
积分39546
阅读权限200
注册时间2011-5-6
最后登录1970-1-1
在线时间 小时
 
 
 
 
 | 
 
已经使用以下代码进行AD的滤波了……可是现实还是乱跳……,偏差好大…… 
float GetResult(uchar ch)  //滤波段 
{ 
unsigned long AD_result=0,AD_result1=0; 
unsigned long AD_max,AD_min,AD_temp; 
char AD_i,AD_o; 
for(AD_i=0;AD_i<4;AD_i++) 
{ 
AD_min=AD_max=GetADCResult(ch); 
AD_result=0; 
for(AD_o=0;AD_o<8;AD_o++) 
{ 
AD_temp=GetADCResult(ch); 
if(AD_temp<AD_min){AD_result =(unsigned long)(AD_result + (unsigned long)AD_min); AD_min=AD_temp;} 
  else 
   if(AD_temp>AD_max){AD_result =(unsigned long)(AD_result + (unsigned long)AD_max); AD_max=AD_temp;} 
      else  
    AD_result =(unsigned long)(AD_result + (unsigned long)AD_temp); 
  } 
AD_result=(unsigned long)(AD_result/8); 
AD_result1=AD_result1+ (unsigned long)(AD_result);  
} 
AD_result1=(unsigned long)(AD_result1/4); 
return   AD_result;             //Return ADC result 10bit 
} 
 
 
 
 
实际图片,应该是0.49A,0.75V,可是实际运行中不停地跳,又是0.65A,有时候0.22A………… 
 
 
 
 |   
 
 
 
 |