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.

INA238: 电流测量在满量程时会跳动,超过量程后读取的数据变为0

Part Number: INA238

比如电流满量程为500A。以此进行寄存器设置,当测试时,给定500A(接近500A),结果频繁出现跳动,结果会出现半量程,四分之三量程,当测试大于500A的电流时,结果就变为0 了。

  • 有技术支持吗?

  •  您好,测试电流实际是测试的Vshunt电压,您的寄存器是怎么配置的?shunt电压的欠压和过压阈值为多少?

    另外,您的应用是要测试多大范围的电流?超过满量程,我没太明白这里的意思,是否意味着超出总线电压范围?

  • 寄存器配置:

    CONFIG:0     ;ADC_CONFIG:F001h;  SHUNT_CAL:0753h;没设置欠压和过压的阈值,

    Maximum Expected Current 是500A,据此计算出的配置参数,但是在测500A的时候反馈结果会跳动,超过500A会读到的结果为0,

  • 您好,Maximum Expected Current 为500A的话 ,

    Current _LSB=Imax/2^15 =500A/2^15=15.3mA

    而ADCRANGE = 0时,1 LSB step size Rshunt=5uV;

    ADCRANGE = 1时,1 LSB step size Rshunt=1.25uV

    因此Rshunt=5uV/15.3mA=0.327mohm.(ADCRANGE = 0)

    Rshunt=1.25uV/15.3mA=0.082mohm   (ADCRANGE =1)

    ADCRANGE = 0时,最大Vshunt电压为+-164.84mV,所以最大电流满量程范围+-164.84mV/0.327mohm=+-502.6A 

    同样ADCRANGE = 1时,最大Vshunt电压为+-40.96mV,所以最大电流满量程范围+-40.96mV/0.082mohm=+-499.5A

    所以计算下来,能测量的电流满量程在500A左右,不确定是否因为靠近临界值的原因,您有尝试降低电流,比如400A左右,是否正常? 

  • 而ADCRANGE = 0时,1 LSB step size Rshunt=5uV;

    ADCRANGE = 1时,1 LSB step size Rshunt=1.25uV

    因此Rshunt=5uV/15.3mA=0.327mohm.(ADCRANGE = 0)

    Rshunt=1.25uV/15.3mA=0.082mohm   (ADCRANGE =1)

    工程中设置的ADCRANGE = 1,但是这个Rshunt不是按这个计算的,而是选定0.015mohm,那么500A*0.015 = 75mv 是远小于164.84mv的。只在500A时跳动,主要是超过500A结果就变成0了

  • 您好,,超过500A时结果变0 ,您可以读取下寄存器Bh的MATHOF bit,如果为1则表明因为计算导致溢出。

    您的意思应该是,按照我们通常的理解,溢出或者超过最大值时应该显示最大 ,而不是0对吗?这里溢出显示为0可能是因为内部计算在某种情况下可能由于内部溢出却不显示最大,反过来说,不是所有超过最大期望电流的情况都会显示为0. 所以在使用这款芯片时,我们可以监控Alert系统,读取MATHOF bit,或者设置过压标志,以便在电流过高时发出警报。 

    所以如果想要在超过500A时不发生这种情况,只能将Maximum Expected current调大,而不是设置500A。

    另外,按照您给的Rshunt的阻值,以及SHUNT_CAL的计算公式,我看您SHUNT_CAL:0753h;。 我计算下来10进制的值为753,而SHUNT_CAL需要改成16进制为2F1.