关于ADC转换值的计算

2019-07-15 09:17发布

求解红字部分,为何要这么计算
void GetAdResult()
{
        unsigned long VolSum=0,CurrSum=0,TemSum=0,VrefSum=0;
        //AIN2:Vs AIN3:Tempature,AIN5:Vref,Ain6:IS2
        uint Vol1,Curr1,Tem1,Vref1;
        uint Vol2,Tem2;
        uchar i,j=0;
        for(i=0;i<4;i++)//可用switch分支结构替代
        {//Vol1,Curr1,Tem1,Vref1均是电压,电流,温度,参考431电压的AD获取值
//Vol2,Curr2,Tem2,Vref2均是电压,电流,温度,参考431电压的128次取平均值后的准确值
                if(i==0)
                {
                        for(j==0;j<128;j++)
                        {
                                Vol1=AdcConvert(2);
                                VolSum+=Vol1;
                        }
                        Vol2=VolSum/128;//读取平均值
                        VolSum=0;//清空AD缓存值
                }
                else if(i==1)
                {
                        for(j=0;j<128;j++)
                        {
                                Curr1=AdcConvert(6);
                                CurrSum+=Curr1;
                        }
                        Curr2=CurrSum/128;
                        CurrSum=0;
                }
                else if(i==2)
                {
                        for(j=0;j<128;j++)
                        {
                                Tem1=AdcConvert(3);
                                TemSum+=Tem1;
                        }
                        Tem2=TemSum/128;
                        TemSum=0;
                }
                else if(i==3)
                {
                        for(j=0;j<128;j++)
                        {
                                Vref1=AdcConvert(5);
                                VrefSum+=Vref1;
                        }
                        Vref2=VrefSum/128;
                        VrefSum=0;
                }       
        }
        if(Vref2>0)
        {
                Vol2=Vol2*512.0/Vref2;//实际采到的基准电压和2.5V理想电压的差值
                Voltage1=Vol2/5;
                vt=Curr2*512.0/Vref2;
                Debugc=vt;//电压值

0条回答

一周热门 更多>