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:INA238电流检测

Guru**** 2526300 points
Other Parts Discussed in Thread: INA238

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

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1303159/ina238-ina238-current-sensing

器件型号:INA238

我们使用 INA238进行电流检测、我们使用带有 ST 微控制器的评估板 INA238。 我们使用的 R SHUNT = 50m Ω、计算方法见数据表  

对于分流器计算、参考以下公式 SHUNT_CAL = 819.2 x 10^6 x CURRENT_LSB x RSHUNT

考虑最大电流2.4A 时推导出的电流 LSB

电流 LSB =(2.4)/(2^15)  

我们将保留 所有默认配置。

但在通过直流电阻器进行读数后、仍然无法获得精确或最接近的电流值。   

如果我们遗漏了任何内容、能否向您介绍一下?  

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

    您好!

    您似乎在关注第8.1.2节。 测量值与真实值之间的距离有多远? 如果器件设置正确、这可能会导致精度问题。

    为了避免沿着错误的路径走下去、我需要后退一步 、 确保正确测量分流电压。 将测量的 Vshunt 与 在输入引脚处获取的 DVM 读数进行比较是一个良好的开始。 Vshunt 正确对齐后、 如果电流测量仍然是问题、我们可以返回进行电流测量。

    此致、Guang  

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

    您好 Gaung:  

    感谢您的快速支持。  

    我们捕获了一些具有电流和电压的分流电压。  

    Rshunt (Ω)  设定电流(mA)  在硬件级测得的分流电压 (mV)    固件级别测量的分流电压 (mV)   差值(mV)
    0.05 130 6.3 6.05 0.25
    0.05 256 12.9 11.14 1.76
    0.05 430 21.9 24.2 -2.3

    实际值显示了硬件级别和固件级别的差异。    

    我们还尝试了测量总线电压、测试效果太好了、我们得到的总线电压与稳定电压相同。  

    请告诉我、在分流电压和电流检测方面缺少了什么。  

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

    您好!

    您能否在430mA 处多次循环测量并观察结果是否稳定? 同时、DVM 读数是否稳定? 您可以打印出分流寄存器值。

    另一种方法是移除分流电阻器并向输入端施加电压源。 通常、调试更容易。

    当前数据中没有模式、很难推测造成差异的原因。

    此致、Guang  

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

    您好!

    可以。 结果是稳定的、DVM 读数也是稳定的。

    我们移除了分流电阻器并应用了电压源、并尝试读取这些值、但我们将不断获得相同的值。

    下面是 适用于 Vshunt、电流检测和 Vbus 的代码

    int i2c__ina_238_read_raw_data (uint32_t dev_add、uint8_t reg、uint16_t *读_data)
    {
    HAL_StatusTypeDef ret_status;
    uint8_t read_buff[2]={0};

    RET_STATUS = HAL_I2C_REACH Mem_Read (&hi2c1、(DEV_add << 1)、(uint16_t) reg、1、READ_BUCK、2、 (100);
    if (ret_status!= HAL_OK){
    // uart_write ("error:::I2C__ina_238_read_raw_data failed\n\n");
    返回0;

    * read_data =(uint16_t)(read_buff[0]<< 8)|(uint16_t)(read_buff[1]);
    返回1;

    int i2c__ina_238_write_data (uint32_t dev_add、uint8_t reg、uint16_t write_data)
    {
    HAL_StatusTypeDef ret_status;
    uint8_t write_buff[2]={0};
    WRITE_buff[0]=(WRITE_DATA >> 8);
    WRITE_buff[0]= WRITE_DATA;
    RET_STATUS = HAL_I2C_REACH Mem_Write (&hi2c1、(DEV_add << 1)、(uint16_t) reg、1、write_buff、2、 (100);
    if (ret_status!= HAL_OK){
    // uart_write ("error:::I2C__ina_238_write_data failed\n\r");
    返回0;

    返回1;

    浮点货币;
    I2C__INA_238_READ_RAW_DATA (0x40、INA_238_CURRENT、&RAW_vltg);

    if (raw_vltg > 0x7FFF){
    RAW_vltg =(float) RAW_vltg - 0x10000;

    CURR = RAW_vltg * 0.0000006;

    HAL_DELAY (100);


    I2C__INA_238_READ_RAW_DATA (0x40、INA_238_CURRENT、&RAW_vltg);
    if (raw_vltg > 0x7FFF){
    RAW_vltg =(float) RAW_vltg - 0x10000;

    CURR = RAW_vltg * 0.000305;
    HAL_DELAY (100);

    I2C__INA_238_READ_RAW_DATA (0x40、INA_238_VBUS、&RAW_vltg);
    if (raw_vltg > 0x7FFF){
    RAW_vltg =(float) RAW_vltg - 0x10000;

    浮点 vBus =(float)(0.003125)* RAW_vltg;
    HAL_DELAY (100);

    I2C__INA_238_READ_RAW_DATA (0x40、INA_238_V_SHUNT、&RAW_vltg);
    if (raw_vltg > 0x7FFF){
    RAW_vltg =(float) RAW_vltg - 0x10000;

    float vshunt =(float) 0.000005 * raw_vltg;
    HAL_DELAY (100);

    我们可以读取 Vbus 值、仅电流检测部件有问题。

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

    您好!
    所谓"持续获得相同的价值"、是指这种现象与之前相同吗?
    您能否通过值列表逐步调节输入分流电压、并在列表中并排列出实际 Vshunt 和 INA238测量值?
    由于电流仅根据 Vshunt 计算得出、因此我们现在可以重点关注 Vshunt、电流将自然跟随。
    此致、Guang

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

    Guang、您好!  

    持续获得相同的值意味着 任何电流都获得相同的值0。  

    现在我已经更改了负载并尝试读取 Vshunt ,我们通过固件收到了相同的 Vshunt 值。

    Sr.no 电流(mA)   Vshunt (mV)硬件 Vshunt (mV)软件
    1 530 26.45 26.41
    2 605 30.4 30.235
    3 725 36.64 36.54
    4 890 45.513 45.4

     我们仍然无法读取电流。

    对于电流检测、是否确实有必要计算 SHUNT_CAL 来进行电流测量?

    我们正在尝试设置 SHUNT_CAL 寄存器、但我们得到了一些垃圾值。

    你有什么想法吗、什么是 SHUNT_CAL、WRITE 和 READ 过程。   

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

    您好、Soal、

    正如我们在本次调用中讨论的、您已按照数据表的 I2C 读取/读取命令部分解决了此问题、现在可以读取电压和电流。

    我们将关闭该主题。

    此致、Guang