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.

[参考译文] INA260:功率寄存器值是否确实是根据电流和电压寄存器值计算得出的?

Guru**** 1623435 points
Other Parts Discussed in Thread: INA260
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1288423/ina260-is-the-power-register-value-really-calculated-from-the-current-and-voltage-register-values

器件型号:INA260

你好。

INA260的功耗计算中存在一个有趣的现象、我对此不理解:

在简单的测试设置中、我使用4个 INA260同时测量通过功率电阻器的电流、
串联、其中电压约为5V、电阻约为22 Ω。

我在论坛的其他地方读到、INA260不太适合测量此电流/电压范围内的电流。
因此,我知道这一点,与要解决的问题无关。
之后,要在>35V 和>10A 的范围内进行测量。 当前设置仅用于简单测试。

与4个 INA260的通信运行无错误。

该模式为连续测量、每5s 读取一次
[ AVG=111, VBUS=101=2.116 ms, ISHCT=101=2.116 ms(1024*2*2.116ms=4.3s)]
并提供合理的电流和电压值、
因此、电流值肯定会与实际电流有很大的偏差、
但有趣的是、它在所有 IC 中都是相同的。

INA260#1:
RAW I:0x00 0xa3 |实数 I:0xffffffa3 ->-116.25 mA

RAW u:0x0E 0x73 |实数 u:0x0e73    -> 4623.75 mV
RAW p:0x00 0x5f | Real p:0x005f    ->  950.00 mW  != 0.11625*4.62375=0.537W
INA260#2:
RAW I:0x00 0xa3 |实数 I:0xffffffa3 ->-116.25 mA
RAW u:0x0E 0x6a |实数 u:0x0e6a    -> 4612.50 mV
RAW p:0x00 0x5d | Real p:0x005d    ->  930.00 mW  != 0.11625*4.61250=0.536W!!
INA260#3:
RAW I:0x00 0xa3 |实数 I:0xffffffa3 ->-116.25 mA
RAW u:0x0E 0x63 |实数 u:0x0e63    -> 4603.75 mV
RAW p:0x00 0x5d | Real p:0x005d    ->  930.00 mW  != 0.11625*4.60375=0.535W
INA260#4:
RAW I:0x00 0xa3 |实数 I:0xffffffa3 ->-116.25 mA
RAW u:0x0E 0x5e |实数 u:0x0e5e    -> 4597.50mV
RAW p:0x00 0x5d | Real p:0x005d    ->  930.00 mW  != 0.11625*4.59750=0.534W!!

功率值正是其有趣之处:

根据数据表、该值是通过将电流和电压寄存器中的值相乘来计算的。


在数据表的示例中也可以看到这一点:

14975*10/1000=149.75和
 12.5*11.98=149.75     

它在测量值中看起来有所不同。

功率值是否确实是根据电流和电压寄存器值计算得出的?
我错了吗?

此致

汉内斯



  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好。

    错误发生在数据转换中。
    INA260*i 当然适用于 P=:-)

    数据转换的第一次实施是使用 v=(v>8)|(v<<8)的单位就地完成的。
    在 b[1]中的位8被置位时、这会导致负值、这是不正确的。

    新实现需要为变量增加2字节的存储器空间、但结果是正确的!

    //不这样做:
    联合体{uint8_t b[2];int16_t value;}u;
    I2C_READ_BLOCKING (p->i2cbus_port、ina260_addr、U.b、2、false);
    U.value=(U.value>>8)|(U.value<<8);fp=(float) U.value * LSB;

    //这样做:
    uint8_t b;int16_t 值;
    I2C_READ_BLOCKING (p->i2cbus_port、ina260_addr、U.b、2、false);
    Value=(b[0]<<8)|b[1];fp=(float) value * LSB;