求大神帮我解释一下我对这个A/D滤波程序的疑惑。

2019-07-18 12:02发布

求大神解释一下ad_buf=(float)((ad_dat1-1)/3.0)这句程序;为何取了五个数据平均值了之后,又减去1在除以3,这是为何呢?
while(1)
        {
                if(i<5)                                 // 滤
                {
                        i++;
                        AD_DAT+=A_D();                // 波
                }
                else                                        // 算
                {
                        i=0;                                // 法
                        ad_dat1=AD_DAT/5;
                        if(ad_dat1>1)
                        {
                                ad_buf=(float)((ad_dat1-1)/3.0);
                                Water_dat=(uchar)(ad_buf);        
                        }
                        else
                        Water_dat=0;               
                        AD_DAT=0;
                        
                }


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
武力戡乱
2019-07-18 23:55
honglincolin 发表于 2015-6-5 22:04
A-D()读取的就是ADC0832转换过来的值

那我就乱猜猜啊!
ad_buf=(float)((ad_dat1-1)/3.0);
减1真不好说,看不出道理。
除以3吗,如果没说错的话,就是信号被放大。这里不仅仅是个倍数的关系啊。
比如正常采样是0-5V,对应0-255。这里除以3大概是255/3值约为84,也就是说,你测量范围为0-84。在具体就要看设计要求了。

一周热门 更多>