由于春节假期,帖子审批以及工程师回复将会有所延迟,敬请谅解.

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请TI工程师帮忙确认ads8345nb数据转换公式

代码如下:

__idata float ad_conv_voltage(__idata uint16_t twosCCode)

{

   twosCCode=twosCCode<<1;  //加上1个最低有效位

   if (twosCCode&0x8000) //如果是负数的话,取该数的二补码

   {

       return 0;  //忽略处理

   }

   return (float)(twosCCode*(2*2.5)/0x10000);

}

__idata float ad_conv_ampere(__idata float voltage)

{

   //参考电压2.5V时代表电流值93.75A(也就是最大输入电流值)

   return ((voltage/2.5)*93.75);

}

经我们硬件工程师验证测试结果,发现转换后的电流值偏小,误差较大,请有经验的工程师帮忙看下是否公式有问题?

这款模数转换器精度为16位8通道,我们用它来检测电流数据,用spi进行通讯,设参考电压为2.5v,单端模式,内部时钟。

  • 也请使用过这款芯片的朋友帮帮忙;

    测试电压值与万用表差不多,但转换成电流误差较大;

  • 93.75A 是怎么来的?串电阻用0.27ohm? 5V才代表最大电流,0V代表反向电流最大。

  • 哦,对不起,是我没有弄清楚情况,我们没有验证电流值,而是一直用万用表和功率计测电压值,请帮忙看一下电压计算公式是否正确:

    __idata float ad_conv_voltage(__idata uint16_t twosCCode)

    {

      twosCCode=twosCCode<<1;  //加上1个最低有效位

      if (twosCCode&0x8000) //如果是负数的话,取该数的二补码

      {

          return 0;  //忽略处理

      }

      return (float)(twosCCode*(2*2.5)/0x10000);

    }