打印
[电池电源管理]

求SH79F329A模拟前端AFE的电压转换公式

[复制链接]
3353|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
badbud|  楼主 | 2015-8-15 16:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看了资料总是计算不正确
C:\Documents and Settings\Squall\桌面\2.JPG
沙发
badbud|  楼主 | 2015-8-15 16:56 | 只看该作者
V0        0X003
V3        0X51AB  内建立基准电源
V2        0X469F  通过转换电路测内建立基准电源
TEMP      0X2AB1  温度
VPACK/25  0X2317
V01       0X256A  VC5输出零飘
V11       0X2514  VC4输出零飘
V21       0X24E5  VC3输出零飘
V31       0X526C  VC2输出零飘
V00       0X52DE  Vref-0.15(VC4-VC5)
V10       0X52BA  Vref-0.15(VC3-VC4)
V20       0X5290  Vref-0.15(VC2-VC3)
V30       0X526B  Vref-0.15(VC1-VC2)
资料公式 VC4-VC5=(V01-V00)/(V01-V2) X V3
计算结果始终是5.4V  实际只有3.58V

使用特权

评论回复
板凳
badbud|  楼主 | 2015-8-18 11:53 | 只看该作者
没有人吗~~
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;


中间的代码是 代理商提供的,但是运行结果不对

使用特权

评论回复
地板
pang7| | 2015-8-18 22:42 | 只看该作者
代理商是哪个?

使用特权

评论回复
5
badbud|  楼主 | 2015-8-20 09:33 | 只看该作者
深圳市尚亿芯科技有限公司
这几天他们FAE忙没空帮我处理,但我觉得是他们自己也没搞定,不然DEMO程序不应该这个样子,不光给我的DEMO程序运行得不到正常结果, 买来他们的开发板,他们工程师自己调试的板子跑起来读出来的电压也是5000多mV也是不对的。是不是资料公式有问题哦。本人只调试过MEGA406 没见过这么复杂的电压转换电路~  这么多参数,结果还不正确~

使用特权

评论回复
6
badbud|  楼主 | 2015-9-2 10:55 | 只看该作者
自己来结贴,已经搞定,资料太简单不够专业,没理解V2的意义,照搬公式就可以了.
因为公式没有反映出0.15这个系数,自己弄出来反尔出错。第一次接触AFE,还行


unsigned char index;
  signed int current;
  signed long temp1,tempV2,tempV3;

  tempV3 = (signed long)(ADCbuffer[V3] - ADCbuffer[Vzero]);
  tempV2 = (signed long)(ADCbuffer[Cell1_Vo0] - ADCbuffer[V2]);  //tempV3/tempV2 is 0.15 Amplification factor

  //temp1=(ADCbuffer[VPACK25] - ADCbuffer[Vzero])*scalevadc;                   //calculate vpack
  temp1=(long int)(ADCbuffer[VPACK25] - ADCbuffer[Vzero])*Vref;                   //calculate vpack
  temp1= (temp1*25)/tempV3;         //(Vpack/25)/Vref975 = (Vpackadc-Vzeroadc)/(V3adc-Vzeroadc)
  VPACK = (unsigned int)temp1;                                            //   vpack   is   *  25
  if(VPACK<1000)
    VPACK=0;
  //Calculate new cell voltages
  for(index = 0; index < SMBvariables[SMBV_PackStackWidth ][hibyte]; index++)
  {
    temp1 = (long int)(ADCbuffer[Cell1_Vo0+index] - ADCbuffer[Cell1_Vo1+index]);
    //temp1 = temp1*tempV3;
    //temp1 = temp1/tempV2;
    //temp1 = temp1*Vref;
    //temp1 = temp1/tempV3;
    temp1 = temp1*Vref;
    temp1 = temp1/tempV2;       
    CellV[index] = (signed int)temp1;
    //CellV[index] = (signed int)(OPref*((float)(ADCbuffer[Cell1_Vo1+index]-ADCbuffer[Cell1_Vo0+index])*Kact));
    //if((unsigned int)calc < CELL_TOOLITTLEV)
    //  DoShutdown(SHUTDOWN_REASON_UNDERVOLTAGE);                //go to Shutdown Mode if cell is drained!
    //if((unsigned int)calc > CELL_TOOMUCHV)
    //  DoShutdown(SHUTDOWN_REASON_OVERVOLTAGE);                //go to Shutdown Mode if cell is too full!
  }

使用特权

评论回复
7
_五湖四海_| | 2016-7-19 19:23 | 只看该作者
大侠,想知道AAN0怎么测出来的

使用特权

评论回复
8
eanry| | 2020-3-20 23:42 | 只看该作者
把数据代入你程序计算出来好像也对不上哦.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

26

帖子

1

粉丝