求解红字部分,为何要这么计算
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;//电压值
一周热门 更多>