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:如何针对0 - 20mA 调整 INA219

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

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1222341/ina219-how-to-tune-the-ina219-for-0---20-ma

器件型号:INA219

我有一个压力传感器、它通过电流发出信号、电流消耗在4到20mA 之间: https://www.amazon.com/gp/product/B093ZNL53C 

使用 Arduino 库(https://github.com/adafruit/Adafruit_INA219/blob/master/Adafruit_INA219.h#L169)、大多数配置在400mA 至2A 的范围内、我正在尝试获得更高的保真度。

我看到数据表和库引导您完成了一个包含8个步骤的过程: https://github.com/adafruit/Adafruit_INA219/blob/master/Adafruit_INA219.cpp#L300、 但我无法找到与我要查找的内容完全匹配的设置。

这是我的尝试、如果有任何指导、我将不胜感激:

void Adafruit_INA219::setCalibration_32V_20mA (){
//默认情况下,我们对输入电压使用非常大的范围,
//哪个可能不是最适合系统的选择
//它不会消耗很多功率。 都具有挑战性
//如果要更改设置,如下所示。 你会的
//还需要更改任何相关的寄存器设置,例如
//将 VBUS_MAX 设置为16V 而不是32V 等等

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

// 1. 确定最大可能电流
// MaxPosible_I = VSHUNT_MAX / RSHUNT
// MaxPosible_I =.4A          // kevin saye 修改

// 2. 确定最大预期电流
// MaxExpected_I = 0.012A          // kevin saye 修改

// 3. 计算 LSB 的可能范围(最小值= 15位、最大值= 12位)
// MinimumLSB = MaxExpected_I/32767  
// MinimumLSB = 0.000000366          // kevin saye 修改
// MaximumLSB = MaxExpected_i/4096
// MaximumLSB = 0.000002629          // kevin saye 修改

// 4. 在最小值和最大值之间选择 LSB
//(最好是一个接近 MinLSB 的圆数)
// CurrentLSB = 0.0000004          // kevin saye 修改

// 5. 计算校准寄存器
// Cal = TRUNC (0.04096/(Current_LSB * RSHUNT))
// Cal = 4096 (0x1000)

INA219_calValue = 1240000;          // kevin saye 修改

// 6. 计算功率 LSB
// PowerLSB = 20 * CurrentLSB
// PowerLSB = 0.000008 (.008mW/位)          // kevin saye 修改

// 7. 计算溢出前的最大电流和分流电压值
//
// Max_Current = Current_LSB * 32767
// Max_current =.032767A          // kevin saye 修改
//
//如果 Max_current > Max_possible_I、则
// Max_Current_Previe_Overflow = MaxPosvable_I
//否则
// Max_Current_Before_Overflow = Max_Current .032767A          // kevin saye 修改
//结束 If
//
// Max_ShuntVoltage = Max_Current_Before_Overflow * RSHUNT
// Max_ShuntVoltage =.0032767V
//
//如果 Max_ShuntVoltage >= VSHUNT_MAX
// Max_ShuntVoltage_Previe_Overflow = VSHUNT_MAX
//否则
// Max_ShuntVoltage_Before_Overflow = Max_ShuntVoltage .0032767V          // kevin saye 修改
//结束 If

// 8. 计算最大功率
// MaximumPower = Max_Current_Before_Overflow * VBUS_MAX
//最大功率= 0.0032767 * 32V
//最大功率= 0.1048544W          // kevin saye 修改

//设置乘法器以转换原始电流/功率值
// INA219_currentDivider_mA = 10;// Current LSB = 100uA/位(1000/100 = 10)
INA219_currentDivider_mA = 2500;// Current LSB = 400pA/位(1、000、0/400 = 10)//0.0000004             // kevin saye 修改
// INA219_powerMultiplier_mW = 2;//功率 LSB = 1mW/位(2/1)
INA219_powerMultiplier_mW = 250;//功率 LSB =每位0.008mW (2/.008)            // kevin saye 修改

//将校准寄存器设置为上面计算的'Cal'
Adafruit_BusIO_Register CALIBRATION_reg =
Adafruit_BusIO_Register (i2c_dev、INA219_REG_CALIBRATION、2、MSBFIRST);
calibration_reg.write (INA219_calValue、2);

//设置 Config 寄存器以考虑上述设置
uint16_t CONFIG = INA219_CONFIG_BVOLTAGERANGE_32V |
INA219_CONFIG_GAIN_1_40mV | INA219_CONFIG_BADCRES_12BIT_128S_69MS |
INA219_CONFIG_SADCRES_12bit_128S_69MS |
INA219_CONFIG_MODE_SANDBVOLT_CONTINUE;
Adafruit_BusIO_Register CONFIG_reg =
Adafruit_BusIO_Register (i2c_dev、INA219_REG_CONFIG、2、MSBFIRST);
成功= CONFIG_REG.WRITE (CONFIG、2);
}

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

    您好!

    我们有一个出色的工具、可帮助您完成上述步骤、并在下面重点介绍:

    这些内容可在 INA219产品页面的"设计和开发"选项卡下找到。

    Unknown 说:
    我无法获得针对我需要的设置进行优化。

    这是否意味着 INA219的输出不能满足您的误差要求?

    对于 INA219、使用100mR 的分流电阻器并尝试测量4mA-20mA 应该是可行的。

    我将仔细检查您的代码、看看是否有任何错误。 期望尽快回复。

    此致、

    CAS

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

    CAS、
    感谢您提出电源监控工具建议。  INA219或电流 I INPUT 看起来不起作用、如下所示。

    非常感谢您对代码或计算方法进行任何审查。

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

    您好!

    如果您的电源电压为32V、则我们的所有电流传感器都无法正常工作。 我想您犯的错误应该是大约5V。 此外、INA219将不能进行32V 共模。

    我还没有机会查看我将在一天结束时回复的代码。

    此致、

    CAS

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

    您好!

    我看到您选择了4mV 输入 PGA 设置、这将把您的电流限制为可以使用的最大分流电阻。 我建议您使用完整的 PGA 设置、即320mV 和更高的分流电阻。 然后确保分流器的功率损耗没问题。 如果您尝试测量接近0mA 的 电流、则使用以下方法会更好、因为 INA219的失调电压在较低的 PGA 范围内较低。

    您还可以只使用较大的分流电阻器来增加 INA219 PGA 的使用。 现在、您可以测量高达400mA 的电流、但放置了最大值为12mA 的电流、与可以使用的电流相比、这是一个非常低的范围。  

    此外、您还没有提及与此设置有关的具体内容? 是误差过大还是存在其他问题。  

    可以通过原理图查看是否有其他问题。

    此致、

    CAS