INA226 精度问题?
请问各位,有没用过INA226的。 我用INA226的并联电压来反馈数据,比如,我输入1A 电流,我得到INA226的并联电压的十六进制数是25FF,可是,我输入1.001A或者1.01A时,照理来说是比25FF大一点的数据,比如26XX什么的,可是只有我设定值达到1.02A是才能得到26FF。换句话说,INA226并联电压反馈的十六进驻数据后两位FF不会变化吗?小弟表述的不是太好,请各位大侠见谅。
您好,能否贴上您的电路图,然后说明各个参数。另外请注意226的差模输入范围和共模输入范围。
整个16bit的所有位应该都是会变的。输入电流变化时,最后8bit一直是FF 吗? 你可以尝试去读下电压看看。
我读的就是电阻两端的并联电压,然后除以电阻值,算出来的电流。我还特别试了下,当我DA输出一点点变化时,INA226读回来的数据,可是跳变时是直接25FF调到26FF这样子的。附件是我的电路图,能帮我分析下原因吗?谢谢。
我看您的数据中后两位一直不变,这应该是不正常的,是不是您的程序不对啊,您可以看看您的时序图。
你有没有用万用表测过取样电阻两端的电压,这个值对比INA226采出来的值差异大不大?
另外你能描述下你读取电压值的流程吗?
比如说我设定1A的电流,由于电阻阻值为25毫欧,找实际值应该是25mV才是,我用万用表测量的值为25.4mV,而INA226我使用读取并联电压的方式反馈给我,得到十六进制数为25FF,根据其LSB=2.5uV,也就是说其两端电压为24.317mV。 读取值和实测值大概相差1.1mV,这个差异有点大了。
我读取电压值的流程是按照INA226的芯片资料的时序图来的,首先主控制器发送从机地址0x80,然后发送分流电压寄存器地址0x01,接着就是读取数据,首先发送读从机地址0x81,然后读取高八位数据,接着低八位。代码如下:
void shunt(void)
{
Start();
ATWriteByte(0x80);
TestAck();
ATWriteByte(0x01);
TestAck();
Stop();
}
void READ_INA226(void)
{
Start();
ATWriteByte(0x81);
TestAck();
H_AD=ATReadByte();
TestAck();
L_AD=ATReadByte();
NoAck();
Stop();
ES=0;
SBUF=H_AD;
while(!TI);
TI=0;
SBUF=L_AD;
while(!TI);
TI=0;
ES=1;
}
问题已解决,谢谢。
你好!
能把问题的原因和解决方案描述下吗?给大家共享下,对后来者或许有用。
我就检查了下时序,调整了下读取数据的函数。
请问楼主能详细的说下吗?我也遇到同样的问题,没找到原因。。。