没有人吗~~
ID ADC V(mV)
V0 0X003
V3 0X51AB 975 内建立基准电源
V2 0X469F 843 通过转换电路测内建立基准电源
TEMP 0X2AB1 509.7 温度
VPACK/25 0X2317 419 419*25=10473 实际10875
V01 0X256A 446.7 VC5输出零飘
V11 0X2514 442.7 VC4输出零飘
V21 0X24E5 440.5 VC3输出零飘
V31 0X526C 984 VC2输出零飘 VC1与VC2短接
V00 0X52DE 989 Vref-0.15(VC4-VC5)
V10 0X52BA 987.6 Vref-0.15(VC3-VC4)
V20 0X5290 985.7 Vref-0.15(VC2-VC3)
V30 0X526B 984 Vref-0.15(VC1-VC2) VC1与VC2短接
资料公式 VC4-VC5=(V01-V00)/(V01-V2) X V3
计算结果始终是5.4V 实际只有3.58V
void Vol_cali()
{
float temp1,temp2;
temp1=(float)(cell1_Vo1-cell1_Vo0)*Kact+(float)(cell2_Vo1-cell2_Vo0)*Kact;
temp2=(float)(cell3_Vo1-cell3_Vo0)*Kact+(float)(cell4_Vo1-cell4_Vo0)*Kact;
temp1=temp1+temp2;
OPref=(float)VolExt/temp1; //16240
Kact=(float)(cell1_Vo3-vzero1)/(cell1_Vo1-cell1_Vo2);
scalevadc=(float)975/(cell1_Vo3-vzero1);
}
int afegain_calcu(int temp,char temp1)
{
if(temp1==1)
temp=OPref*(cell1_Vo1-temp)*Kact;
else if(temp1==2)
temp=OPref*(cell2_Vo1-temp)*Kact;
else if(temp1==3)
temp=OPref*(cell3_Vo1-temp)*Kact;
else
temp=OPref*(cell4_Vo1-temp)*Kact;
if(temp<0)
temp=0;
return(temp);
}
-------------------------------------
已知 V3=Vref=975mV
初始化 Kact=6.6433;
scalevadc=0.0464;
VolExt=16240;
vzero1=0x0011;
OPref=0.0472;
中间的代码是 代理商提供的,但是运行结果不对
|