请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);
}