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.

[参考译文] INA219:放大器论坛

Guru**** 2534790 points
Other Parts Discussed in Thread: INA219

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

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/736712/ina219-amplifiers-forum

器件型号:INA219


我在这里工作了3天、一直在努力从包含 INA219的 Adafruit 模块获得更好的读数。 虽然默认的 Adafruit 库(基本上都取自 INA219 TI 数据表)使器 件更准确、但我很难将其与非标准的关断电阻器值搭配使用。 我有多个这些模块、因此其中一个模块经过了修改、将 R100 (0.1欧姆)替换为 R010 (0.01欧姆)。 电阻器的实际测量值为0.02欧姆、但我在计算中尝试了0.01和0.02欧姆。


 

我的目标是8安培@ 24V  

24V @ 4.5A  INA219在          较高电流 端显示为24.9V @ 3.9A/4A <<<不太好  
24V@ 4.9/5A  INA219显示为 24.89V @4.5/4.6A
24V@ 1A  INA219在     低端显示为24.89V @1.020Amps <<<非常好  

您将看到库中的所有注释、我已对照 TI 的 INA219数据表对其进行了检查、看起来不错。

这是 Adafruit 库中的一个部分,我已根据已经在工作的部分添加,但修改后使用我的电阻器....


void AdafruIT_INA219::setCalibration_32V_16A (void)
{
//默认情况下、我们对输入电压使用非常大的范围、
//这可能不是最适合系统
的选择//不使用大量功率。 但是
、如果您想更改设置、下面显示了所有的计算//。 您还
需要//更改任何相关的寄存器设置,例如
//将 VBUS_MAX 设置为16V 而不是32V 等

// VBUS_MAX = 32V (假设32V、也可以设置为16V)
// VSHUNT_MAX = 0.32 (假设增益8、320mV、也可以是0.16、0.08、0.04)
// RSHUNT = 0.02 (电阻值、单位为欧姆)


// 1。 确定可能的最大电流
// MaxPosible_I = VSHUNT_MAX / RSHUNT
// 0.32/0.02
// MaxPosible_I = 16A

// 2. 确定最大预期电流
// MaxExpected_i = 8.0a

// 3. 计算 LSB 的可能范围(最小值= 15位、最大值= 12位)
// MinimumLSB = MaxExpected_I/32767
// MinimumLSB = 0.000244 (244uA 每位)
// MaximumLSB = MaxExpected_I/4096
// MaximumLSB = 0.001953 (1953uA 每位

)//最大值4。 在最小值和最大值之间选择一个 LSB
//(最好是接近 MinLSB 的圆形数字)
// CurrentLSB = 0.000300 (每位300uA)

// 5。 计算校准寄存






器// Cal = trunc (0.04096/(Current_LSB * RSHUNT))// 0.04096/(0.000006)// trunc Cal = 6826 INA219_calValue = 6826;// 6。 计算功率 LSB
// PowerLSB = 20 * CurrentLSB
// PowerLSB = 0.006 (每位6mW)

// 7。 计算溢出前的最大电流和分流电压值
//
// Max_Current = Current_LSB * 32767
//溢出前的最大电流= 9.9301A
//
//如果 Max_current > Max_Possible_I,则
// Max_Current_Bear_Overflow = MaxPosible_I
// else
// Max_Current_Bear_Overflow = Max_Current_Current /<9.301A/

溢出前的最大电流/</<9.91A

//结束如果
//
// Max_ShuntVoltage = Max_Current_Before_Overflow * RSHUNT
// Max_ShuntVoltage = 0.198602V
//
//如果 Max_ShuntVoltage >= VSHUNT_MAX
// Max_ShuntVoltage_Before_Overflow = VSHUNT_MAX
// else
// Max_ShuntVoltage >=

0.198602V //

// Max_Overflow =最大值/</ShuntVoltage/< 0.602V 前溢

流/< 计算最大功率
//最大功率= Max_Current_Before_Overflow * VBUS_MAX
//最大功率= 9.9301 * 32V
//最大功率= 317.7632W
//
@ 24V 最大值= 9.9301 * 24V = 238.3224W


//设置乘法器以转换原始电流/功率值
INA219_currentder = 3.33mA; //电流 LSB =每位300uA (1000/300 = 3.33)
INA219_powerMultiplier_mW = 0.1666;//功率 LSB =每位6mW (1/6)

//将校准寄存器设置为
在以上线性 WriteRegister (INA219_REG_CALIBRATION、INA219_calValue)上计算得出的'CalValue;

//设置配置寄存器以考虑上述设置
uint16_t config = INA219_CONFIG_BVOLTAGERANGE_32V |
INA219_CONFIG_GAIN_8_320MV |
INA219_CONFIG_BADCRES_12位| INA219_CONFIG_SADCRES_12bit_1S_532MV | INA219 CONFIG_BADCRES_12位


| INA219寄存器| INA21_532US_CONFIG | INDB_CONFIG 寄存器| INA219 + INA219寄存器


提前感谢您为我提供的任何帮助。

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

    感谢您使用我们的论坛。 我怀疑您的问题可能与您如何处理从 INA219读取的数据有关。 我看到您的最大预期电流为8A。 然而、您选择的 Current_LSB 为300uA、其最大电流为9.8304A。如果我们将该值截断为9A 以进行校准、 然后、如果我们获取您的寄存器值并将其乘以 CURRENT_LSB 以8A 标度、我们将得到类似于您为电流测量获得的值。 但是、我不希望校准寄存器将9.8304A 截断为9A。 其他误差来源包括分流电阻器的容差。 您没有在分流器和 INA219之间放置输入滤波器、您是吗? 这可能会导致偏移和增益误差。

    制造商为您使用的分流器提供了什么容差? 您能否显示与如何转换从 INA219读取的寄存器值相对应的代码? 我看到一条对应于电流分频器的线、您能告诉我为什么要将1000除以300uA 吗? 也许您可以包含一个显示您正在执行的操作的图或原理图。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嘿 Paul、

    您是否对我们有此问题的更新?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嘿 Paul、
    我一段时间没有听到你的声音。 因此、我假设您能够解决您的问题、因此我将关闭此主题。 但是、如果您仍需要支持、请在下面回复。