版主
主题
帖子
积分39114
阅读权限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…………
|
|