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.

[参考译文] INA220:INA220 -电流计算

Guru**** 2540720 points
Other Parts Discussed in Thread: INA220, INA190

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

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/689525/ina220-ina220---current-calculation

器件型号:INA220
主题中讨论的其他器件: INA190

您好!

我有 INA220。 我需要读取电流。

因此我的分流电阻器为:02R

读取并联寄存器为:1766十进制

我的测量电流为:0、022mA

INA220处于默认设置:

配置= 0x399F

我的问题是:如何将1766dec 转换为 mA? 我尝试了所有操作、但我不知道我的计算失败的原因。

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

    您能否为我们提供一个代码片段、展示您如何配置 INA220? 原理图会有所帮助...

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

    我修改了我的代码。 现在、我在这里:

    包含信息的计算:

    // VBUS_MAX = 16V (假设32V、也可以设置为16V)
    // VSHUNT_MAX = 0.04 (假设增益为1、40mV、也可以是0.32 0.16、0.08、0.04)
    // RSHUNT = 0.2 (电阻值、单位为欧姆)
    
    // 1. 确定可能的最大电流
    // MaxPosible_I = VSHUNT_MAX / RSHUNT
    // MaxPosible_I = 0、2A
    
    // 2。 确定最大预期电流
    // MaxExpected_i = 0.2A
    
    // 3. 计算 LSB 的可能范围(最小值= 15位、最大值= 12位)
    // MinimumLSB = MaxExpected_I/32767
    // MinimumLSB = 0.0000061 (每位6.1uA)
    // MaximumLSB = MaxExpected_I/4096
    // MaximumLSB = 0.000048(每位48uA)
    
    // 4. 在最小值和最大值之间选择一个 LSB
    //(最好是接近 MinLSB 的圆形数字)
    // CurrentLSB = 0.00005 (每位50uA)
    
    // 5。 计算校准寄存
    
    
    
    
    
    器// Cal = trunc (0.04096/(Current_LSB * RSHUNT))// Cal = 2048 (0x1000) INA220_calValue = 4096;//十六进制:0x1000 // 6。 计算功率 LSB
    // PowerLSB = 20 * CurrentLSB
    // PowerLSB = 0.001 (每位2mW)
    
    // 7。 计算溢出前的最大电流和分流电压值
    //
    // Max_current = Current_LSB * 32767
    // Max_current = 1.63835A before overflow
    //
    // If Max_current > Max_Possible_I then
    // Max_Current_Overflow = MaxPosible_I
    // else
    // Max_Current_Overflow = 0.2
    // Max_Current_Overflow
    
    = 0.2/RST_Voltage/IF Overflow = Max_Overshunt_Overflow / Max_Overshum_Overflow = 0.2 //
    // Max_ShuntVoltage = 0.04V
    //
    If Max_ShuntVoltage >= VSHUNT_MAX
    // Max_ShuntVoltage_Bee_Overflow = VSHUNT_MAX
    // else
    // Max_ShuntVoltage_Before_Overflow = Max_ShuntVoltage
    // End If
    // Max_ShuntVoltage_Bee_Overflow = 0.04V
    
    // 计算最大功率
    //最大功率= Max_Current_Before_Overflow * VBUS_MAX
    //最大功率= 0.2 * 16V
    //最大功率= 3.2W
    
    //设置用于转换原始电流/功率值的乘法
    器// INA220_currentDivider_mA = 20;//电流 LSB = 50uA 每位(1000/50 = 20mW/
    INA220_mW/分频器) //功率 LSB = 1mW/位 

    这里是我的调用函数:

    if (INA220_SetCalibrateRegister (I2Cbus_INA220、INA220_address、0x1000)< 0)
    {
    //失败写入
    } 
    //范围16V;范围40mV;12位;12位,连续模式 IF (0!= INA220__init (I2Cbus_INA220、INA220_address、AUBOARD_BSP_invert_INA220_beler, 0x19F)) { //失败写入 }

    每个人都能验证我的计算结果吗?

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

    Rob、您好!

    感谢您使用 TI 论坛。

    查看您提供给我们的数字、您似乎正在尝试为 INA220测量过小的电流。 该器件的 Vshunt LSB 为10uV、对于您的分流器和电流、我们得到0.2欧姆 x 22uA = 4.4uV、这少于 LSB 的一半。 因此、对于您的特定设置、您可能需要考虑使用 INA190和 ADC 来测量电流。

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

    我在计算中出错了:

    我重复了以下内容:

    我使用 INA220测量最大 I:1、6A

    使用万用表进行实际测量:

    I REAL 测量:88mA

    测量 Vshunt 上的电压:17、66mV

    和我的计算:

    // VBUS_MAX = 32V (假设为32V。 也可以设置为16V)
    // VSHUNT_MAX = 0.32 (假设增益为1。 40mV。 也可以是0.32 0.16。 0.08)
    // RSHUNT = 0.2 (电阻值、单位为欧姆)
    
    // 1. 确定可能的最大电流
    // MaxPosible_I = VSHUNT_MAX / RSHUNT
    // MaxPosible_I = 1.6A
    
    // 2. 确定最大预期电流
    // MaxExpected_i = 0.15A
    
    // 3. 计算可能的 LSB 范围(最小值= 15位。 MAX = 12位)
    // MinimumLSB = MaxExpected_I/32767
    // MinimumLSB = 0.0000046 (每位4.6uA)
    // MaximumLSB = MaxExpected_I/4096
    // MaximumLSB = 0.000036 (36uA /位)
    
    // 4. 在最小值和最大值之间选择一个 LSB
    //(最好是接近 MinLSB 的圆形数字)
    // CurrentLSB = 0.00005 (每位50uA)
    
    // 5。 计算校准寄存
    
    
    
    
    
    器// Cal = trunc (0.04096 /(Current_LSB * RSHUNT))// Cal = 4096 (0x1000) INA220_calValue = 4096;//十六进制:0x1000 // 6。 计算功率 LSB
    // PowerLSB = 20 * CurrentLSB
    // PowerLSB = 0.001 (1mW/位)
    
    // 7。 计算溢出前的最大电流和分流电压值
    //
    // Max_current = Current_LSB * 32767
    // Max_current = 1.63835A before overflow
    //
    // If Max_current > Max_Possible_I then
    // Max_Current_Overflow = MaxPosible_I
    // else
    // Max_Current_Overflow = 0.2
    // Max_Current_Overflow
    
    = 0.2/RST_Voltage/IF Overflow = Max_Overshunt_Overflow / Max_Overshum_Overflow = 0.2 //
    // Max_ShuntVoltage = 0.32767V
    //
    如果 Max_ShuntVoltage >= VSHUNT_MAX
    // Max_ShuntVoltage_Before_Overflow = VSHUNT_MAX
    // else
    // Max_ShuntVoltage_Before_Overflow = Max_ShuntVoltage
    // End If
    // Max_ShuntVoltage_Before_Overflow = 0.04V
    
    // 计算最大功率
    //最大功率= Max_Current_Before_Overflow * VBUS_MAX
    //最大功率= 1.6 * 32V
    //最大功率= 51W
    
    //设置用于转换原始电流/功率值的乘法
    器// INA220_currentDivider_mA = 0.2;//电流 LSB = 50uA 每位(1000/50 = 20mW/
    INA220_mW/分频器) //功率 LSB = 1mW/位 

    现在、当我设置时:

    INA220 -配置寄存器:0x399f (默认值)

    INA220 - 校准寄存器:0x1000

    电流寄存器中的值为88mA。 但我计算得出的电流分压器= 20

    // INA220_currentDivider_mA = 0.2;//电流 LSB =每位50uA (1000/50 = 20 

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

    我很高兴您能找到它。 如果您有任何疑问、请告知我们。